From 9743b3f9dc6b6d3e0c45c96ae8375149eb56743e Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 16 Mar 2024 19:59:58 +0100 Subject: [PATCH 001/347] feat: add http3 support --- Cargo.toml | 5 ++++- src/client/mod.rs | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 4fe485e..ce7b115 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,7 +15,7 @@ include = ["/src", "README.md", "LICENSE", "!snapshots"] members = [".", "codegen", "downloader", "cli"] [features] -default = ["default-tls"] +default = ["rustls-tls-native-roots"] rss = ["quick-xml"] @@ -27,6 +27,9 @@ native-tls-vendored = ["reqwest/native-tls-vendored"] rustls-tls-webpki-roots = ["reqwest/rustls-tls-webpki-roots"] rustls-tls-native-roots = ["reqwest/rustls-tls-native-roots"] +# Requires RUSTFLAGS='--cfg reqwest_unstable' +http3 = ["reqwest/http3"] + [dependencies] quick-js-dtp = { version = "0.4.1", default-features = false, features = [ "patch-dateparser", diff --git a/src/client/mod.rs b/src/client/mod.rs index 5b239c6..215132a 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -466,6 +466,11 @@ impl RustyPipeBuilder { .brotli(true) .redirect(reqwest::redirect::Policy::none()); + #[cfg(feature = "http3")] + { + client_builder = client_builder.http3_prior_knowledge(); + } + if let Some(timeout) = self.timeout.or_default(|| Duration::from_secs(20)) { client_builder = client_builder.timeout(timeout); } From f4f1f1e761a422724c536ade8799a1c7bd2a019f Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 22 Mar 2024 00:24:35 +0100 Subject: [PATCH 002/347] chore: update dependencies, use workspace deps --- Cargo.toml | 78 +++++++++++++++++++++++++++++++------------ cli/Cargo.toml | 23 +++++++------ codegen/Cargo.toml | 37 ++++++++++---------- codegen/src/main.rs | 2 +- downloader/Cargo.toml | 24 ++++++------- downloader/src/lib.rs | 2 +- 6 files changed, 99 insertions(+), 67 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 4fe485e..f7d68a4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,20 +14,7 @@ include = ["/src", "README.md", "LICENSE", "!snapshots"] [workspace] members = [".", "codegen", "downloader", "cli"] -[features] -default = ["default-tls"] - -rss = ["quick-xml"] - -# Reqwest TLS options -default-tls = ["reqwest/default-tls"] -native-tls = ["reqwest/native-tls"] -native-tls-alpn = ["reqwest/native-tls-alpn"] -native-tls-vendored = ["reqwest/native-tls-vendored"] -rustls-tls-webpki-roots = ["reqwest/rustls-tls-webpki-roots"] -rustls-tls-native-roots = ["reqwest/rustls-tls-native-roots"] - -[dependencies] +[workspace.dependencies] quick-js-dtp = { version = "0.4.1", default-features = false, features = [ "patch-dateparser", ] } @@ -36,12 +23,8 @@ regex = "1.6.0" fancy-regex = "0.13.0" thiserror = "1.0.36" url = "2.2.2" -reqwest = { version = "0.11.11", default-features = false, features = [ - "json", - "gzip", - "brotli", -] } -tokio = { version = "1.20.0", features = ["macros", "time"] } +reqwest = { version = "0.12.0", default-features = false } +tokio = "1.20.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0.82" serde_with = { version = "3.0.0", default-features = false, features = [ @@ -58,13 +41,64 @@ time = { version = "0.3.15", features = [ futures = "0.3.21" ress = "0.11.4" phf = "0.11.1" +phf_codegen = "0.11.1" base64 = "0.22.0" urlencoding = "2.1.2" -quick-xml = { version = "0.31.0", features = ["serialize"], optional = true } +quick-xml = { version = "0.31.0", features = ["serialize"] } tracing = { version = "0.1.37", features = ["log"] } -[dev-dependencies] +# CLI +indicatif = "0.17.0" +anyhow = "1.0" +clap = { version = "4.0.29", features = ["derive"] } +tracing-subscriber = "0.3.17" +serde_yaml = "0.9.19" +dirs = "5.0.0" +filenamify = "0.1.0" + +# Testing rstest = "0.18.1" tokio-test = "0.4.2" insta = { version = "1.17.1", features = ["ron", "redactions"] } path_macro = "1.0.0" + +[features] +default = ["default-tls"] + +rss = ["quick-xml"] + +# Reqwest TLS options +default-tls = ["reqwest/default-tls"] +native-tls = ["reqwest/native-tls"] +native-tls-alpn = ["reqwest/native-tls-alpn"] +native-tls-vendored = ["reqwest/native-tls-vendored"] +rustls-tls-webpki-roots = ["reqwest/rustls-tls-webpki-roots"] +rustls-tls-native-roots = ["reqwest/rustls-tls-native-roots"] + +[dependencies] +quick-js-dtp.workspace = true +once_cell.workspace = true +regex.workspace = true +fancy-regex.workspace = true +thiserror.workspace = true +url.workspace = true +reqwest = { workspace = true, features = ["json", "gzip", "brotli"] } +tokio = { workspace = true, features = ["macros", "time"] } +serde.workspace = true +serde_json.workspace = true +serde_with.workspace = true +serde_plain.workspace = true +rand.workspace = true +time.workspace = true +ress.workspace = true +phf.workspace = true +base64.workspace = true +urlencoding.workspace = true +tracing.workspace = true +quick-xml = { workspace = true, optional = true } + +[dev-dependencies] +rstest.workspace = true +tokio-test.workspace = true +insta.workspace = true +path_macro.workspace = true diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 8f2fa8c..f6d6053 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -41,14 +41,15 @@ rustls-tls-native-roots = [ [dependencies] rustypipe = { path = "../", default-features = false } rustypipe-downloader = { path = "../downloader", default-features = false } -reqwest = { version = "0.11.11", default_features = false } -tokio = { version = "1.20.0", features = ["macros", "rt-multi-thread"] } -indicatif = "0.17.0" -futures = "0.3.21" -anyhow = "1.0" -clap = { version = "4.0.29", features = ["derive"] } -tracing-subscriber = "0.3.17" -serde = "1.0" -serde_json = "1.0.82" -serde_yaml = "0.9.19" -dirs = "5.0.0" +reqwest.workspace = true +tokio = { workspace = true, features = ["macros", "rt-multi-thread"] } +futures.workspace = true +serde.workspace = true +serde_json.workspace = true + +indicatif.workspace = true +anyhow.workspace = true +clap.workspace = true +tracing-subscriber.workspace = true +serde_yaml.workspace = true +dirs.workspace = true diff --git a/codegen/Cargo.toml b/codegen/Cargo.toml index e3bfff8..4d50480 100644 --- a/codegen/Cargo.toml +++ b/codegen/Cargo.toml @@ -6,24 +6,23 @@ publish = false [dependencies] rustypipe = { path = "../" } -reqwest = "0.11.11" -tokio = { version = "1.20.0", features = ["macros", "rt-multi-thread"] } -futures = "0.3.21" -serde = { version = "1.0", features = ["derive"] } -serde_json = "1.0.82" -serde_with = { version = "3.0.0", default-features = false, features = [ - "macros", -] } -anyhow = "1.0" -log = "0.4.17" -env_logger = "0.10.0" -clap = { version = "4.0.29", features = ["derive"] } -phf_codegen = "0.11.1" -once_cell = "1.12.0" -regex = "1.7.1" -indicatif = "0.17.0" -num_enum = "0.6.1" -path_macro = "1.0.0" +reqwest.workspace = true +tokio = { workspace = true, features = ["rt-multi-thread"] } +futures.workspace = true +serde.workspace = true +serde_json.workspace = true +serde_with.workspace = true +once_cell.workspace = true +regex.workspace = true +path_macro.workspace = true +anyhow.workspace = true +tracing.workspace = true +tracing-subscriber.workspace = true +clap.workspace = true +phf_codegen.workspace = true +indicatif.workspace = true + +num_enum = "0.7.2" intl_pluralrules = "7.0.2" unic-langid = "0.9.1" -ordered_hash_map = { version = "0.2.0", features = ["serde"] } +ordered_hash_map = { version = "0.4.0", features = ["serde"] } diff --git a/codegen/src/main.rs b/codegen/src/main.rs index bbc8fa8..7c8a5f2 100644 --- a/codegen/src/main.rs +++ b/codegen/src/main.rs @@ -46,7 +46,7 @@ enum Commands { #[tokio::main] async fn main() { - env_logger::init(); + tracing_subscriber::fmt::init(); let cli = Cli::parse(); match cli.command { diff --git a/downloader/Cargo.toml b/downloader/Cargo.toml index 5e32056..58b9cae 100644 --- a/downloader/Cargo.toml +++ b/downloader/Cargo.toml @@ -29,16 +29,14 @@ rustls-tls-native-roots = [ ] [dependencies] -rustypipe = { path = "..", default-features = false } -once_cell = "1.12.0" -regex = "1.6.0" -thiserror = "1.0.36" -futures = "0.3.21" -indicatif = "0.17.0" -filenamify = "0.1.0" -log = "0.4.17" -reqwest = { version = "0.11.11", default-features = false, features = [ - "stream", -] } -rand = "0.8.5" -tokio = { version = "1.20.0", features = ["macros", "fs", "process"] } +rustypipe = { path = "../", default-features = false } +once_cell.workspace = true +regex.workspace = true +thiserror.workspace = true +futures.workspace = true +reqwest = { workspace = true, features = ["stream"] } +rand.workspace = true +tokio = { workspace = true, features = ["macros", "fs", "process"] } +indicatif.workspace = true +filenamify.workspace = true +tracing.workspace = true diff --git a/downloader/src/lib.rs b/downloader/src/lib.rs index 6377289..a706c3c 100644 --- a/downloader/src/lib.rs +++ b/downloader/src/lib.rs @@ -8,7 +8,6 @@ use std::{borrow::Cow, cmp::Ordering, ffi::OsString, ops::Range, path::PathBuf, use futures::stream::{self, StreamExt}; use indicatif::{ProgressBar, ProgressStyle}; -use log::{debug, info}; use once_cell::sync::Lazy; use rand::Rng; use regex::Regex; @@ -22,6 +21,7 @@ use tokio::{ io::AsyncWriteExt, process::Command, }; +use tracing::{debug, info}; use util::DownloadError; From 0b384cee93565587bea423cd400315bf8a19dccf Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 22 Mar 2024 00:53:48 +0100 Subject: [PATCH 003/347] tests: fix tests --- tests/youtube.rs | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/tests/youtube.rs b/tests/youtube.rs index 1cb2458..b528385 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -1578,20 +1578,12 @@ async fn music_playlist_not_found(rp: RustyPipe) { #[case::no_artist("no_artist", "MPREb_bqWA6mAZFWS")] #[tokio::test] async fn music_album(#[case] name: &str, #[case] id: &str, rp: RustyPipe, unlocalized: bool) { - // TODO: remove visitor data if A/B#13 is stabilized - let album = rp - .query() - .visitor_data_opt( - Some("Cgs1bHFWMlhmM1ZFNCi9jK6vBjIKCgJERRIEEgAgIw%3D%3D") - .filter(|_| name == "one_artist"), - ) - .music_album(id) - .await - .unwrap(); + let album = rp.query().music_album(id).await.unwrap(); assert!(!album.cover.is_empty(), "got no cover"); - if unlocalized { + // TODO: check full snapshot if A/B#13 is stabilized + if unlocalized && name != "one_artist" { insta::assert_ron_snapshot!(format!("music_album_{name}"), album, {".cover" => "[cover]", ".tracks[].view_count" => "[view_count]"} ); @@ -2177,11 +2169,6 @@ async fn music_search_playlists_community(rp: RustyPipe) { assert_eq!(channel.id, "UCs72iRpTEuwV3y6pdWYLgiw"); assert_eq!(channel.name, "Redlist - Just Hits"); assert!(!playlist.from_ytm); - - assert!( - res.items.items.iter().all(|p| !p.from_ytm), - "ytm items found" - ) } /// The YouTube Music search sometimes shows genre radio items. They should be skipped. From f0b21ed2b4243b476817f08f58c01e0964467e13 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 22 Mar 2024 01:59:29 +0100 Subject: [PATCH 004/347] chore: add git-cliff --- Justfile | 44 ++++++++++++++++++++++++++ cliff.toml | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 137 insertions(+) create mode 100644 cliff.toml diff --git a/Justfile b/Justfile index 4628423..61ad9db 100644 --- a/Justfile +++ b/Justfile @@ -43,3 +43,47 @@ testfiles: report2yaml: mkdir -p rustypipe_reports/conv for f in rustypipe_reports/*.json; do yq '.http_request.resp_body' $f | yq -o json -P > rustypipe_reports/conv/`basename $f .json`_body.json; yq e -Pi "del(.http_request.resp_body)" $f; mv $f rustypipe_reports/conv/`basename $f .json`.yaml; done; + +release crate="rustypipe": + #!/usr/bin/env bash + set -e + + CRATE="{{crate}}" + INCLUDES='--include-path README.md --include-path LICENSE --include-path Cargo.toml' + CHANGELOG="CHANGELOG.md" + CARGO_TOML="Cargo.toml" + + if [ "$CRATE" = "rustypipe" ]; then + INCLUDES="$INCLUDES --include-path src/** --include-path tests/** --include-path testfiles/**" + else + if [ ! -d "$CRATE" ]; then + echo "$CRATE does not exist."; exit 1 + fi + INCLUDES="$INCLUDES --include-path $CRATE/**" + CHANGELOG="$CRATE/$CHANGELOG" + CARGO_TOML="$CRATE/Cargo.toml" + CRATE="rustypipe-$CRATE" # Add crate name prefix + fi + + VERSION=$(git-cliff $INCLUDES --bumped-version | grep -Po '\d+\.\d+\.\d+$') + echo "Releasing $VERSION:" + + # if [ -n "$(git status --porcelain)" ]; then echo "Workdir must be clean"; exit 1; fi + if git rev-parse "${CRATE}/v${VERSION}" >/dev/null 2>&1; then echo "version tag v${VERSION} already exists"; exit 1; fi + + cargo semver -c "$CARGO_TOML" set "$VERSION" + + CLIFF_ARGS="--tag v${VERSION}" + if [ -f "$CHANGELOG" ]; then + CLIFF_ARGS="$CLIFF_ARGS --unreleased $INCLUDES" + CLIFF_OUT="--prepend $CHANGELOG" + else + CLIFF_OUT="--output $CHANGELOG" + fi + + echo "git-cliff $CLIFF_ARGS $CLIFF_OUT" + eval "git-cliff $CLIFF_ARGS $CLIFF_OUT" + git add "$CHANGELOG" "$CARGO_TOML" + git commit -m "chore(release): release $CRATE v$VERSION" + + eval "git-cliff $CLIFF_ARGS --strip all" | git tag -a -F - --cleanup whitespace "${CRATE}/v${VERSION}" diff --git a/cliff.toml b/cliff.toml new file mode 100644 index 0000000..ee730e3 --- /dev/null +++ b/cliff.toml @@ -0,0 +1,93 @@ +# git-cliff ~ default configuration file +# https://git-cliff.org/docs/configuration +# +# Lines starting with "#" are comments. +# Configuration options are organized into tables and keys. +# See documentation for more information on available options. + +[changelog] +# changelog header +header = """ +# Changelog\n +All notable changes to this project will be documented in this file.\n +""" +# template for the changelog body +# https://keats.github.io/tera/docs/#introduction +body = """ +{% if version %}\ + ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }} +{% else %}\ + ## [unreleased] +{% endif %}\ +{% if previous.version %}\ +{% for group, commits in commits | group_by(attribute="group") %} + ### {{ group | striptags | trim | upper_first }} + {% for commit in commits %} + - {% if commit.scope %}*({{ commit.scope }})* {% endif %}\ + {% if commit.breaking %}[**breaking**] {% endif %}\ + {{ commit.message | upper_first }}\ + {% endfor %} +{% endfor %}\ +{% else %} +Initial release +{% endif %}\n +""" +# template for the changelog footer +footer = """ + +""" +# remove the leading and trailing s +trim = true +# postprocessors +postprocessors = [ + # { pattern = '', replace = "https://github.com/orhun/git-cliff" }, # replace repository URL +] + +[git] +# parse the commits based on https://www.conventionalcommits.org +conventional_commits = true +# filter out the commits that are not conventional +filter_unconventional = true +# process each line of a commit as an individual commit +split_commits = false +# regex for preprocessing the commit messages +commit_preprocessors = [ + # Replace issue numbers + #{ pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](/issues/${2}))"}, + # Check spelling of the commit with https://github.com/crate-ci/typos + # If the spelling is incorrect, it will be automatically fixed. + #{ pattern = '.*', replace_command = 'typos --write-changes -' }, +] +# regex for parsing and grouping commits +commit_parsers = [ + { message = "^feat", group = "🚀 Features" }, + { message = "^fix", group = "🐛 Bug Fixes" }, + { message = "^doc", group = "📚 Documentation" }, + { message = "^perf", group = "⚡ Performance" }, + { message = "^refactor", group = "🚜 Refactor" }, + { message = "^style", group = "🎨 Styling" }, + { message = "^test", group = "🧪 Testing" }, + { message = "^chore\\(release\\): prepare for", skip = true }, + { message = "^chore\\(pr\\)", skip = true }, + { message = "^chore\\(pull\\)", skip = true }, + { message = "^chore", group = "⚙️ Miscellaneous Tasks" }, + { message = "^ci", skip = true }, + { body = ".*security", group = "🛡️ Security" }, + { message = "^revert", group = "◀️ Revert" }, +] +# protect breaking changes from being skipped due to matching a skipping commit_parser +protect_breaking_commits = false +# filter out the commits that are not matched by commit parsers +filter_commits = false +# regex for matching git tags +# tag_pattern = "v[0-9].*" +# regex for skipping tags +# skip_tags = "" +# regex for ignoring tags +# ignore_tags = "" +# sort the tags topologically +topo_order = false +# sort the commits inside sections by oldest/newest order +sort_commits = "oldest" +# limit the number of commits included in the changelog. +# limit_commits = 42 From c9f86c31f979f3bdbff6be399cd47af749e95719 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 22 Mar 2024 03:09:52 +0100 Subject: [PATCH 005/347] chore: fix git-cliff --- Justfile | 16 ++++++++-------- cliff.toml | 10 ++++++++-- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/Justfile b/Justfile index 61ad9db..c320b58 100644 --- a/Justfile +++ b/Justfile @@ -68,22 +68,22 @@ release crate="rustypipe": VERSION=$(git-cliff $INCLUDES --bumped-version | grep -Po '\d+\.\d+\.\d+$') echo "Releasing $VERSION:" - # if [ -n "$(git status --porcelain)" ]; then echo "Workdir must be clean"; exit 1; fi + if [ -n "$(git status --porcelain)" ]; then echo "Workdir must be clean"; exit 1; fi if git rev-parse "${CRATE}/v${VERSION}" >/dev/null 2>&1; then echo "version tag v${VERSION} already exists"; exit 1; fi cargo semver -c "$CARGO_TOML" set "$VERSION" - CLIFF_ARGS="--tag v${VERSION}" + CLIFF_ARGS="--tag v${VERSION} --unreleased $INCLUDES" + echo "git-cliff $CLIFF_ARGS" if [ -f "$CHANGELOG" ]; then - CLIFF_ARGS="$CLIFF_ARGS --unreleased $INCLUDES" - CLIFF_OUT="--prepend $CHANGELOG" + git-cliff $CLIFF_ARGS --prepend "$CHANGELOG" else - CLIFF_OUT="--output $CHANGELOG" + git-cliff $CLIFF_ARGS --output "$CHANGELOG" fi - echo "git-cliff $CLIFF_ARGS $CLIFF_OUT" - eval "git-cliff $CLIFF_ARGS $CLIFF_OUT" + editor "$CHANGELOG" + git add "$CHANGELOG" "$CARGO_TOML" git commit -m "chore(release): release $CRATE v$VERSION" - eval "git-cliff $CLIFF_ARGS --strip all" | git tag -a -F - --cleanup whitespace "${CRATE}/v${VERSION}" + awk 'BEGIN{RS="(^|\n)## "} NR==2 { print "##",$0 }' "$CHANGELOG" | git tag -a -F - --cleanup whitespace "${CRATE}/v${VERSION}" diff --git a/cliff.toml b/cliff.toml index ee730e3..32b679a 100644 --- a/cliff.toml +++ b/cliff.toml @@ -14,8 +14,13 @@ All notable changes to this project will be documented in this file.\n # template for the changelog body # https://keats.github.io/tera/docs/#introduction body = """ +{% set repo_url = "https://code.thetadev.de/ThetaDev/rustypipe" %}\ {% if version %}\ - ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }} + {%if previous.version %}\ + ## [{{ version }}]({{ repo_url }}/compare/{{ previous.version }}..{{ version }})\ + {% else %}\ + ## {{ version }}\ + {% endif %} - {{ timestamp | date(format="%Y-%m-%d") }} {% else %}\ ## [unreleased] {% endif %}\ @@ -25,7 +30,8 @@ body = """ {% for commit in commits %} - {% if commit.scope %}*({{ commit.scope }})* {% endif %}\ {% if commit.breaking %}[**breaking**] {% endif %}\ - {{ commit.message | upper_first }}\ + {{ commit.message | upper_first }} - \ + ([{{ commit.id | truncate(length=7, end="") }}]({{ repo_url }}/commit/{{ commit.id }}))\ {% endfor %} {% endfor %}\ {% else %} From 9b7bd4c40c7979b4beccfc2ef5d439658d95eebe Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 22 Mar 2024 14:49:12 +0100 Subject: [PATCH 006/347] ci: add release workflow --- .gitea/workflows/release.yaml | 29 +++++++++++++++++++++++++++++ Cargo.toml | 4 ++++ cli/Cargo.toml | 4 ++-- downloader/Cargo.toml | 2 +- 4 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 .gitea/workflows/release.yaml diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml new file mode 100644 index 0000000..bf79372 --- /dev/null +++ b/.gitea/workflows/release.yaml @@ -0,0 +1,29 @@ +name: Release +on: + push: + tags: + - "*/v*.*.*" + +jobs: + Release: + runs-on: cimaster-latest + steps: + - name: 📦 Checkout repository + uses: actions/checkout@v3 + + - name: Get variables + run: | + echo "CRATE=$(echo '${{ github.ref_name }}' | awk 'BEGIN{RS="/"} NR==1{print}')" >> $GITHUB_ENV + echo "CRATE_VERSION=$(echo '${{ github.ref_name }}' | awk 'BEGIN{RS="/"} NR==2{print}')" >> $GITHUB_ENV + echo "CHANGELOG=$(git show -s --format=%N "${{ github.ref_name }}" | tail -n +4)" >> $GITHUB_ENV + + - name: 📤 Publish crate + run: | + printf '[registries.thetadev]\nindex = "https://code.thetadev.de/ThetaDev/_cargo-index.git"\ntoken = "Bearer ${{ secrets.GITHUB_TOKEN }}"\n' >> ~/.cargo/config.toml + cargo publish --registry thetadev --package "${{ env.CRATE }}" + + - name: 🎉 Publish release + uses: https://gitea.com/actions/release-action@main + with: + title: "${{ env.CRATE }} ${{ env.CRATE_VERSION }}" + body: "${{ env.CHANGELOG }}" diff --git a/Cargo.toml b/Cargo.toml index f7d68a4..2778864 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -62,6 +62,10 @@ tokio-test = "0.4.2" insta = { version = "1.17.1", features = ["ron", "redactions"] } path_macro = "1.0.0" +# Included crates +rustypipe = { path = ".", default-features = false } +rustypipe-downloader = { path = "./downloader", default-features = false } + [features] default = ["default-tls"] diff --git a/cli/Cargo.toml b/cli/Cargo.toml index f6d6053..8df7047 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -39,8 +39,8 @@ rustls-tls-native-roots = [ ] [dependencies] -rustypipe = { path = "../", default-features = false } -rustypipe-downloader = { path = "../downloader", default-features = false } +rustypipe.workspace = true +rustypipe-downloader.workspace = true reqwest.workspace = true tokio = { workspace = true, features = ["macros", "rt-multi-thread"] } futures.workspace = true diff --git a/downloader/Cargo.toml b/downloader/Cargo.toml index 58b9cae..ef8028e 100644 --- a/downloader/Cargo.toml +++ b/downloader/Cargo.toml @@ -29,7 +29,7 @@ rustls-tls-native-roots = [ ] [dependencies] -rustypipe = { path = "../", default-features = false } +rustypipe.workspace = true once_cell.workspace = true regex.workspace = true thiserror.workspace = true From c3cb46b8c174d02e621d791623ca14e1c56e05fb Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 22 Mar 2024 15:02:45 +0100 Subject: [PATCH 007/347] test: fix channel_tab_not_found test --- tests/youtube.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/tests/youtube.rs b/tests/youtube.rs index b528385..a7a4391 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -1169,10 +1169,16 @@ async fn channel_tab_not_found(#[case] tab: ChannelVideoTab, rp: RustyPipe) { let channel = rp .query() .channel_videos_tab("UCGiJh0NZ52wRhYKYnuZI08Q", tab) - .await - .unwrap(); + .await; - assert!(channel.content.is_empty(), "got: {:?}", channel.content); + // YouTube removed empty tabs from the menu, so they may return no data + match channel { + Ok(channel) => assert!(channel.content.is_empty(), "got: {:?}", channel.content), + Err(err) => assert!( + matches!(err, Error::Extraction(ExtractionError::NotFound { .. })), + "got: {err}" + ), + } } #[rstest] From 926f50413613ddd0a5d220bdc102c749f79af2de Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 22 Mar 2024 15:08:22 +0100 Subject: [PATCH 008/347] ci: fix creating cargo dir --- .gitea/workflows/release.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml index bf79372..0182fc0 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release.yaml @@ -19,6 +19,7 @@ jobs: - name: 📤 Publish crate run: | + mkdir -p ~/.cargo printf '[registries.thetadev]\nindex = "https://code.thetadev.de/ThetaDev/_cargo-index.git"\ntoken = "Bearer ${{ secrets.GITHUB_TOKEN }}"\n' >> ~/.cargo/config.toml cargo publish --registry thetadev --package "${{ env.CRATE }}" From 379698c66c9da612a9c72aacb179eefe115d9915 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 22 Mar 2024 15:15:17 +0100 Subject: [PATCH 009/347] ci: use gitea token from secrets --- .gitea/workflows/release.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml index 0182fc0..98a0b51 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release.yaml @@ -20,7 +20,7 @@ jobs: - name: 📤 Publish crate run: | mkdir -p ~/.cargo - printf '[registries.thetadev]\nindex = "https://code.thetadev.de/ThetaDev/_cargo-index.git"\ntoken = "Bearer ${{ secrets.GITHUB_TOKEN }}"\n' >> ~/.cargo/config.toml + printf '[registries.thetadev]\nindex = "https://code.thetadev.de/ThetaDev/_cargo-index.git"\ntoken = "Bearer ${{ secrets.TOKEN_GITEA }}"\n' >> ~/.cargo/config.toml cargo publish --registry thetadev --package "${{ env.CRATE }}" - name: 🎉 Publish release From b8fc001ccf466034c8298f35603b6bcb66b9e90d Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 22 Mar 2024 15:15:42 +0100 Subject: [PATCH 010/347] chore(release): release rustypipe v0.1.0 --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..bab248d --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,9 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +## v0.1.0 - 2024-03-22 + +Initial release + + From 151dc34f6e3bd441b538f820823ea881591f4e31 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 22 Mar 2024 22:34:18 +0100 Subject: [PATCH 011/347] ci: fix outputting release message --- .gitea/workflows/release.yaml | 12 +++++++++--- Justfile | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml index 98a0b51..6c4dc19 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release.yaml @@ -13,9 +13,15 @@ jobs: - name: Get variables run: | - echo "CRATE=$(echo '${{ github.ref_name }}' | awk 'BEGIN{RS="/"} NR==1{print}')" >> $GITHUB_ENV - echo "CRATE_VERSION=$(echo '${{ github.ref_name }}' | awk 'BEGIN{RS="/"} NR==2{print}')" >> $GITHUB_ENV - echo "CHANGELOG=$(git show -s --format=%N "${{ github.ref_name }}" | tail -n +4)" >> $GITHUB_ENV + git fetch --tags --force #the checkout action does not load the tag message + + echo "CRATE=$(echo '${{ github.ref_name }}' | awk 'BEGIN{RS="/"} NR==1{print}')" >> "$GITHUB_ENV" + echo "CRATE_VERSION=$(echo '${{ github.ref_name }}' | awk 'BEGIN{RS="/"} NR==2{print}')" >> "$GITHUB_ENV" + { + echo 'CHANGELOG<> "$GITHUB_ENV" - name: 📤 Publish crate run: | diff --git a/Justfile b/Justfile index c320b58..c8d2dd1 100644 --- a/Justfile +++ b/Justfile @@ -86,4 +86,4 @@ release crate="rustypipe": git add "$CHANGELOG" "$CARGO_TOML" git commit -m "chore(release): release $CRATE v$VERSION" - awk 'BEGIN{RS="(^|\n)## "} NR==2 { print "##",$0 }' "$CHANGELOG" | git tag -a -F - --cleanup whitespace "${CRATE}/v${VERSION}" + awk 'BEGIN{RS="(^|\n)## [^\n]+\n*"} NR==2 { print }' "$CHANGELOG" | git tag -as -F - --cleanup whitespace "${CRATE}/v${VERSION}" From 0bcced1db377198a54c9c7d03b8d038125a2bfe4 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 22 Mar 2024 23:56:05 +0100 Subject: [PATCH 012/347] chore: changes to release command --- Justfile | 20 +++++++++----------- README.md | 2 -- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/Justfile b/Justfile index c8d2dd1..7821cce 100644 --- a/Justfile +++ b/Justfile @@ -51,7 +51,6 @@ release crate="rustypipe": CRATE="{{crate}}" INCLUDES='--include-path README.md --include-path LICENSE --include-path Cargo.toml' CHANGELOG="CHANGELOG.md" - CARGO_TOML="Cargo.toml" if [ "$CRATE" = "rustypipe" ]; then INCLUDES="$INCLUDES --include-path src/** --include-path tests/** --include-path testfiles/**" @@ -61,19 +60,16 @@ release crate="rustypipe": fi INCLUDES="$INCLUDES --include-path $CRATE/**" CHANGELOG="$CRATE/$CHANGELOG" - CARGO_TOML="$CRATE/Cargo.toml" CRATE="rustypipe-$CRATE" # Add crate name prefix fi - VERSION=$(git-cliff $INCLUDES --bumped-version | grep -Po '\d+\.\d+\.\d+$') - echo "Releasing $VERSION:" + VERSION=$(cargo pkgid --package "$CRATE" | tr '#@' '\n' | tail -n 1) + TAG="${CRATE}/v${VERSION}" + echo "Releasing $TAG:" - if [ -n "$(git status --porcelain)" ]; then echo "Workdir must be clean"; exit 1; fi - if git rev-parse "${CRATE}/v${VERSION}" >/dev/null 2>&1; then echo "version tag v${VERSION} already exists"; exit 1; fi + if git rev-parse "$TAG" >/dev/null 2>&1; then echo "version tag $TAG already exists"; exit 1; fi - cargo semver -c "$CARGO_TOML" set "$VERSION" - - CLIFF_ARGS="--tag v${VERSION} --unreleased $INCLUDES" + CLIFF_ARGS="--tag v${VERSION} --tag-pattern ${CRATE}/* --unreleased $INCLUDES" echo "git-cliff $CLIFF_ARGS" if [ -f "$CHANGELOG" ]; then git-cliff $CLIFF_ARGS --prepend "$CHANGELOG" @@ -83,7 +79,9 @@ release crate="rustypipe": editor "$CHANGELOG" - git add "$CHANGELOG" "$CARGO_TOML" + git add "$CHANGELOG" git commit -m "chore(release): release $CRATE v$VERSION" - awk 'BEGIN{RS="(^|\n)## [^\n]+\n*"} NR==2 { print }' "$CHANGELOG" | git tag -as -F - --cleanup whitespace "${CRATE}/v${VERSION}" + awk 'BEGIN{RS="(^|\n)## [^\n]+\n*"} NR==2 { print }' "$CHANGELOG" | git tag -as -F - --cleanup whitespace "$TAG" + + echo "🚀 Run 'git push origin $TAG' to publish" diff --git a/README.md b/README.md index 83bd294..a24ccfb 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,5 @@ # RustyPipe -[![CI status](https://ci.thetadev.de/api/badges/ThetaDev/rustypipe/status.svg)](https://ci.thetadev.de/ThetaDev/rustypipe) - Client for the public YouTube / YouTube Music API (Innertube), inspired by [NewPipe](https://github.com/TeamNewPipe/NewPipeExtractor). From 6598a23d0699e6fe298275a67e0146a19c422c88 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 23 Mar 2024 00:24:41 +0100 Subject: [PATCH 013/347] fix: specify internal dependency versions --- Cargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 2778864..165b667 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -63,8 +63,8 @@ insta = { version = "1.17.1", features = ["ron", "redactions"] } path_macro = "1.0.0" # Included crates -rustypipe = { path = ".", default-features = false } -rustypipe-downloader = { path = "./downloader", default-features = false } +rustypipe = { path = ".", version = "0.1.0", default-features = false } +rustypipe-downloader = { path = "./downloader", version = "0.1.0", default-features = false } [features] default = ["default-tls"] From 9afa5ff0cc976b98603482ebf6c3aa2e277087c4 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 23 Mar 2024 00:40:54 +0100 Subject: [PATCH 014/347] ci: set registry on internal deps correctly --- .gitea/workflows/release.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml index 6c4dc19..92c0fea 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release.yaml @@ -23,11 +23,13 @@ jobs: echo END_OF_FILE } >> "$GITHUB_ENV" - - name: 📤 Publish crate + - name: 📤 Publish crate on code.thetadev.de run: | mkdir -p ~/.cargo printf '[registries.thetadev]\nindex = "https://code.thetadev.de/ThetaDev/_cargo-index.git"\ntoken = "Bearer ${{ secrets.TOKEN_GITEA }}"\n' >> ~/.cargo/config.toml + sed -i "s/^rustypipe.*=\s*{/\0 registry = \"thetadev\",/g" Cargo.toml cargo publish --registry thetadev --package "${{ env.CRATE }}" + git restore Cargo.toml - name: 🎉 Publish release uses: https://gitea.com/actions/release-action@main From e4b204eae65f450471be0890b0198d2f30714b3b Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 23 Mar 2024 00:56:48 +0100 Subject: [PATCH 015/347] fix: move package attributes to workspace --- Cargo.toml | 20 ++++++++++++++------ cli/Cargo.toml | 11 ++++++----- codegen/Cargo.toml | 6 ++++-- downloader/Cargo.toml | 11 ++++++----- 4 files changed, 30 insertions(+), 18 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 165b667..b11a50d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,19 +1,27 @@ [package] name = "rustypipe" version = "0.1.0" -edition = "2021" -authors = ["ThetaDev "] -license = "GPL-3.0" +edition.workspace = true +authors.workspace = true +license.workspace = true +repository.workspace = true +keywords.workspace = true +categories.workspace = true description = "Client for the public YouTube / YouTube Music API (Innertube), inspired by NewPipe" -repository = "https://code.thetadev.de/ThetaDev/rustypipe" -keywords = ["youtube", "video", "music"] -categories = ["api-bindings", "multimedia"] include = ["/src", "README.md", "LICENSE", "!snapshots"] [workspace] members = [".", "codegen", "downloader", "cli"] +[workspace.package] +edition = "2021" +authors = ["ThetaDev "] +license = "GPL-3.0" +repository = "https://code.thetadev.de/ThetaDev/rustypipe" +keywords = ["youtube", "video", "music"] +categories = ["api-bindings", "multimedia"] + [workspace.dependencies] quick-js-dtp = { version = "0.4.1", default-features = false, features = [ "patch-dateparser", diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 8df7047..53556b8 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -1,12 +1,13 @@ [package] name = "rustypipe-cli" version = "0.1.0" -edition = "2021" -authors = ["ThetaDev "] -license = "GPL-3.0" +edition.workspace = true +authors.workspace = true +license.workspace = true +repository.workspace = true +keywords.workspace = true +categories.workspace = true description = "CLI for RustyPipe - download videos and extract data from YouTube / YouTube Music" -keywords = ["youtube", "video", "music"] -categories = ["multimedia"] [features] default = ["rustls-tls-native-roots"] diff --git a/codegen/Cargo.toml b/codegen/Cargo.toml index 4d50480..6b81189 100644 --- a/codegen/Cargo.toml +++ b/codegen/Cargo.toml @@ -1,7 +1,9 @@ [package] name = "rustypipe-codegen" -version = "0.1.0" -edition = "2021" +edition.workspace = true +authors.workspace = true +license.workspace = true +repository.workspace = true publish = false [dependencies] diff --git a/downloader/Cargo.toml b/downloader/Cargo.toml index ef8028e..1479524 100644 --- a/downloader/Cargo.toml +++ b/downloader/Cargo.toml @@ -1,12 +1,13 @@ [package] name = "rustypipe-downloader" version = "0.1.0" -edition = "2021" -authors = ["ThetaDev "] -license = "GPL-3.0" +edition.workspace = true +authors.workspace = true +license.workspace = true +repository.workspace = true +keywords.workspace = true +categories.workspace = true description = "Downloader extension for RustyPipe" -keywords = ["youtube", "video", "music"] -categories = ["multimedia"] [features] default = ["default-tls"] From 886f793406c85542b20bd91953855dc6355f93d8 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 23 Mar 2024 00:57:16 +0100 Subject: [PATCH 016/347] chore(release): release rustypipe-downloader v0.1.0 --- downloader/CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 downloader/CHANGELOG.md diff --git a/downloader/CHANGELOG.md b/downloader/CHANGELOG.md new file mode 100644 index 0000000..bab248d --- /dev/null +++ b/downloader/CHANGELOG.md @@ -0,0 +1,9 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +## v0.1.0 - 2024-03-22 + +Initial release + + From f60b4bb1cd61b9d9eff72f5fa13fb69dd595e5af Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 23 Mar 2024 00:57:24 +0100 Subject: [PATCH 017/347] chore(release): release rustypipe-cli v0.1.0 --- cli/CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 cli/CHANGELOG.md diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md new file mode 100644 index 0000000..bab248d --- /dev/null +++ b/cli/CHANGELOG.md @@ -0,0 +1,9 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +## v0.1.0 - 2024-03-22 + +Initial release + + From a81c3e83366fdf72d01dd3ee00fb2e831f7aaa26 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 24 Mar 2024 02:31:17 +0100 Subject: [PATCH 018/347] fix: parsing music details with video description tab --- cliff.toml | 2 +- src/client/response/music_details.rs | 5 ++-- .../youtube__music_details_track_details.snap | 26 +++++++++++++++++++ tests/youtube.rs | 1 + 4 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 tests/snapshots/youtube__music_details_track_details.snap diff --git a/cliff.toml b/cliff.toml index 32b679a..6fa2cc5 100644 --- a/cliff.toml +++ b/cliff.toml @@ -73,7 +73,7 @@ commit_parsers = [ { message = "^refactor", group = "🚜 Refactor" }, { message = "^style", group = "🎨 Styling" }, { message = "^test", group = "🧪 Testing" }, - { message = "^chore\\(release\\): prepare for", skip = true }, + { message = "^chore\\(release\\): release", skip = true }, { message = "^chore\\(pr\\)", skip = true }, { message = "^chore\\(pull\\)", skip = true }, { message = "^chore", group = "⚙️ Miscellaneous Tasks" }, diff --git a/src/client/response/music_details.rs b/src/client/response/music_details.rs index 0d7e6d2..387f041 100644 --- a/src/client/response/music_details.rs +++ b/src/client/response/music_details.rs @@ -1,6 +1,5 @@ use serde::Deserialize; -use serde_with::serde_as; -use serde_with::DefaultOnError; +use serde_with::{serde_as, DefaultOnError, VecSkipError}; use crate::serializer::text::Text; @@ -36,9 +35,11 @@ pub(crate) struct TabbedRenderer { pub watch_next_tabbed_results_renderer: TabbedRendererInner, } +#[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct TabbedRendererInner { + #[serde_as(as = "VecSkipError<_>")] pub tabs: Vec, } diff --git a/tests/snapshots/youtube__music_details_track_details.snap b/tests/snapshots/youtube__music_details_track_details.snap new file mode 100644 index 0000000..f3c8f30 --- /dev/null +++ b/tests/snapshots/youtube__music_details_track_details.snap @@ -0,0 +1,26 @@ +--- +source: tests/youtube.rs +expression: track +--- +TrackDetails( + track: TrackItem( + id: "1eekOcpx_iQ", + name: "NCT 127 \'Highway to Heaven\' NEO CITY Tour Film ver.", + duration: Some(202), + cover: "[cover]", + artists: [ + ArtistId( + id: Some("UCk2E0dbAyEJWnrN2bbQOcbg"), + name: "NCT 127", + ), + ], + artist_id: Some("UCk2E0dbAyEJWnrN2bbQOcbg"), + album: None, + view_count: "[view_count]", + is_video: true, + track_nr: None, + by_va: false, + ), + lyrics_id: None, + related_id: None, +) diff --git a/tests/youtube.rs b/tests/youtube.rs index a7a4391..84c6b08 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -2218,6 +2218,7 @@ async fn music_search_suggestion( #[rstest] #[case::mv("mv", "ZeerrnuLi5E")] #[case::track("track", "qIZ-vvg-wiU")] +#[case::track_details("track_details", "1eekOcpx_iQ")] #[tokio::test] async fn music_details(#[case] name: &str, #[case] id: &str, rp: RustyPipe) { let track = rp.query().music_details(id).await.unwrap(); From be314d57ea1d99bfdc80649351ee3e7845541238 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 26 Mar 2024 19:51:20 +0100 Subject: [PATCH 019/347] chore: update user agent (FF 115.0) --- 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 5b239c6..0203c3d 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -182,7 +182,7 @@ struct QContinuation<'a> { continuation: &'a str, } -const DEFAULT_UA: &str = "Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0"; +const DEFAULT_UA: &str = "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0"; const CONSENT_COOKIE: &str = "SOCS=CAISAiAD"; From 47e077e03bffd3005f7f1192d1a7fdc080da0a58 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 26 Mar 2024 19:59:40 +0100 Subject: [PATCH 020/347] chore(release): bump rustypipe to v0.1.1 --- Cargo.toml | 2 +- README.md | 2 +- cliff.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index b11a50d..6202e54 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe" -version = "0.1.0" +version = "0.1.1" edition.workspace = true authors.workspace = true license.workspace = true diff --git a/README.md b/README.md index a24ccfb..626042d 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ Client for the public YouTube / YouTube Music API (Innertube), inspired by ```toml [dependencies] -rustypipe = "0.1.0" +rustypipe = "0.1.1" tokio = { version = "1.20.0", features = ["macros", "rt-multi-thread"] } ``` diff --git a/cliff.toml b/cliff.toml index 6fa2cc5..c175f64 100644 --- a/cliff.toml +++ b/cliff.toml @@ -73,7 +73,7 @@ commit_parsers = [ { message = "^refactor", group = "🚜 Refactor" }, { message = "^style", group = "🎨 Styling" }, { message = "^test", group = "🧪 Testing" }, - { message = "^chore\\(release\\): release", skip = true }, + { message = "^chore\\(release\\)", skip = true }, { message = "^chore\\(pr\\)", skip = true }, { message = "^chore\\(pull\\)", skip = true }, { message = "^chore", group = "⚙️ Miscellaneous Tasks" }, From 78ba9cb34c6bba3aba177583b242d3f76ea9847d Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 26 Mar 2024 20:11:14 +0100 Subject: [PATCH 021/347] chore: fix release script (unquoted include paths) --- Justfile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Justfile b/Justfile index 7821cce..6a3224a 100644 --- a/Justfile +++ b/Justfile @@ -53,12 +53,12 @@ release crate="rustypipe": CHANGELOG="CHANGELOG.md" if [ "$CRATE" = "rustypipe" ]; then - INCLUDES="$INCLUDES --include-path src/** --include-path tests/** --include-path testfiles/**" + INCLUDES="$INCLUDES --include-path 'src/**' --include-path 'tests/**' --include-path 'testfiles/**'" else if [ ! -d "$CRATE" ]; then echo "$CRATE does not exist."; exit 1 fi - INCLUDES="$INCLUDES --include-path $CRATE/**" + INCLUDES="$INCLUDES --include-path '$CRATE/**'" CHANGELOG="$CRATE/$CHANGELOG" CRATE="rustypipe-$CRATE" # Add crate name prefix fi @@ -69,12 +69,12 @@ release crate="rustypipe": if git rev-parse "$TAG" >/dev/null 2>&1; then echo "version tag $TAG already exists"; exit 1; fi - CLIFF_ARGS="--tag v${VERSION} --tag-pattern ${CRATE}/* --unreleased $INCLUDES" + CLIFF_ARGS="--tag 'v${VERSION}' --tag-pattern '${CRATE}/*' --unreleased $INCLUDES" echo "git-cliff $CLIFF_ARGS" if [ -f "$CHANGELOG" ]; then - git-cliff $CLIFF_ARGS --prepend "$CHANGELOG" + eval "git-cliff $CLIFF_ARGS --prepend '$CHANGELOG'" else - git-cliff $CLIFF_ARGS --output "$CHANGELOG" + eval "git-cliff $CLIFF_ARGS --output '$CHANGELOG'" fi editor "$CHANGELOG" From 0258c009e29c10466593bcb11a08e85c0dfb0727 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 26 Mar 2024 20:21:35 +0100 Subject: [PATCH 022/347] ci: add --allow-dirty to cargo publish --- .gitea/workflows/release.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml index 92c0fea..044d36f 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release.yaml @@ -28,7 +28,7 @@ jobs: mkdir -p ~/.cargo printf '[registries.thetadev]\nindex = "https://code.thetadev.de/ThetaDev/_cargo-index.git"\ntoken = "Bearer ${{ secrets.TOKEN_GITEA }}"\n' >> ~/.cargo/config.toml sed -i "s/^rustypipe.*=\s*{/\0 registry = \"thetadev\",/g" Cargo.toml - cargo publish --registry thetadev --package "${{ env.CRATE }}" + cargo publish --registry thetadev --allow-dirty --package "${{ env.CRATE }}" git restore Cargo.toml - name: 🎉 Publish release From d765fa82f88437e3476c8094db6846132b2d2ab7 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 26 Mar 2024 20:23:59 +0100 Subject: [PATCH 023/347] chore(release): release rustypipe v0.1.1 --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bab248d..38e5256 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,16 @@ All notable changes to this project will be documented in this file. +## [v0.1.1](https://code.thetadev.de/ThetaDev/rustypipe/compare/rustypipe-cli/v0.1.0..v0.1.1) - 2024-03-26 + +### 🐛 Bug Fixes + +- Parsing music details with video description tab - ([a81c3e8](https://code.thetadev.de/ThetaDev/rustypipe/commit/a81c3e83366fdf72d01dd3ee00fb2e831f7aaa26)) + +### ⚙️ Miscellaneous Tasks + +- Update user agent (FF 115.0) - ([be314d5](https://code.thetadev.de/ThetaDev/rustypipe/commit/be314d57ea1d99bfdc80649351ee3e7845541238)) + ## v0.1.0 - 2024-03-22 Initial release From 180dd9891a14b4da9f130a73d73aecc3822fce2f Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 26 Mar 2024 21:19:51 +0100 Subject: [PATCH 024/347] fix: correctly parse subscriber count with new channel header It looks like A/B test 12 has changed the text field order for the subscriber count slightly. Support was added to correctly parse both variants --- src/client/channel.rs | 21 +- ...p_channel_videos_20240324_pageheader2.snap | 1333 ++ .../channel_videos_20240324_pageheader2.json | 14558 ++++++++++++++++ 3 files changed, 15902 insertions(+), 10 deletions(-) create mode 100644 src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_20240324_pageheader2.snap create mode 100644 testfiles/channel/channel_videos_20240324_pageheader2.json diff --git a/src/client/channel.rs b/src/client/channel.rs index aa1a928..9a4ea00 100644 --- a/src/client/channel.rs +++ b/src/client/channel.rs @@ -480,16 +480,16 @@ fn map_channel( response::channel::Header::PageHeaderRenderer(header) => { let hdata = header.content.page_header_view_model; // channel handle - subscriber count - video count - let subscriber_count = hdata - .metadata - .content_metadata_view_model - .metadata_rows - .first() - .and_then(|md| { - md.metadata_parts.get(1).and_then(|t| { - util::parse_large_numstr_or_warn::(&t.text, lang, &mut warnings) - }) - }); + let md_rows = hdata.metadata.content_metadata_view_model.metadata_rows; + let sub_part = if md_rows.len() > 1 { + md_rows.get(1).and_then(|md| md.metadata_parts.first()) + } else { + md_rows.first().and_then(|md| md.metadata_parts.get(1)) + }; + let subscriber_count = sub_part.and_then(|t| { + util::parse_large_numstr_or_warn::(&t.text, lang, &mut warnings) + }); + Channel { id: metadata.external_id, name: metadata.title, @@ -720,6 +720,7 @@ mod tests { #[case::shorts("shorts", "UCh8gHdtzO2tXd593_bjErWg")] #[case::livestreams("livestreams", "UC2DjFE7Xf11URZqWBigcVOQ")] #[case::pageheader("shorts_20240129_pageheader", "UCh8gHdtzO2tXd593_bjErWg")] + #[case::pageheader2("videos_20240324_pageheader2", "UC2DjFE7Xf11URZqWBigcVOQ")] fn map_channel_videos(#[case] name: &str, #[case] id: &str) { let json_path = path!(*TESTFILES / "channel" / format!("channel_{name}.json")); let json_file = File::open(json_path).unwrap(); 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 new file mode 100644 index 0000000..6d7d1de --- /dev/null +++ b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_videos_20240324_pageheader2.snap @@ -0,0 +1,1333 @@ +--- +source: src/client/channel.rs +expression: map_res.c +--- +Channel( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + subscriber_count: Some(933000), + avatar: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/ytc/AIdro_lagjGDfXbXlQXhznx3CDRitOBdxvebllQd_YP1ag=s72-c-k-c0x00ffffff-no-rj", + width: 72, + height: 72, + ), + Thumbnail( + url: "https://yt3.googleusercontent.com/ytc/AIdro_lagjGDfXbXlQXhznx3CDRitOBdxvebllQd_YP1ag=s120-c-k-c0x00ffffff-no-rj", + width: 120, + height: 120, + ), + Thumbnail( + url: "https://yt3.googleusercontent.com/ytc/AIdro_lagjGDfXbXlQXhznx3CDRitOBdxvebllQd_YP1ag=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", + ], + vanity_url: Some("https://www.youtube.com/@EEVblog"), + 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, + ), + ], + mobile_banner: [], + tv_banner: [], + has_shorts: true, + has_live: true, + visitor_data: None, + content: Paginator( + count: None, + items: [ + VideoItem( + id: "BpW_DxGRCRw", + name: "EEVblog 1605 - Chasing Fart Noises - JBL Charge 3 \"Repair\"", + length: Some(1676), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/BpW_DxGRCRw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBHX3HMauysp5rOpOOuhvfEsTxqHQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/BpW_DxGRCRw/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA_U5Sa2uICYXjld4CrvvATptclxg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/BpW_DxGRCRw/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCoKLkbEuYKfnF8kuplvjngEyUN1A", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/BpW_DxGRCRw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDQnQsIHhkGbo_SLJY2DFMT1_lhgQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(933000), + )), + publish_date: "[date]", + publish_date_txt: Some("12 days ago"), + view_count: Some(27799), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Dave is chasing fart noises in this JBL Charge 3 waterproof speaker.\nA teardown, and powerup on the bench to find the mysterious fart noises.\nWill it get repaired, or will the fault do a Harold..."), + ), + VideoItem( + id: "GRRvGj8OT_A", + name: "EEVblog 1604 - BEWARE! Multimeter Burden Voltage", + length: Some(383), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/GRRvGj8OT_A/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGMgYyhjMA8=&rs=AOn4CLByLXyg74bCFFJH8-ZqVMLtFqzniQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/GRRvGj8OT_A/hqdefault.jpg?sqp=-oaymwE1CMQBEG5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGMgYyhjMA8=&rs=AOn4CLAcXJZ9LF0JwB9XRc8GTmVY57pg4A", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/GRRvGj8OT_A/hqdefault.jpg?sqp=-oaymwE2CPYBEIoBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgB_gmAAtAFigIMCAAQARhjIGMoYzAP&rs=AOn4CLDOJD6P5nzkBqRGXNwNU9U0xPZkMQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/GRRvGj8OT_A/hqdefault.jpg?sqp=-oaymwE2CNACELwBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgB_gmAAtAFigIMCAAQARhjIGMoYzAP&rs=AOn4CLCZrK32i8fghUmiT89TeqxQX10Hiw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(933000), + )), + publish_date: "[date]", + publish_date_txt: Some("2 weeks ago"), + view_count: Some(34723), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Burden Voltage is a BIG trap with Multimeters, don\'t get caught out!\nA short video demonstrating the impact of Burden Voltage / Shunt Resistance on current measurement.\n\nMutlimeter Shunt Tutorial..."), + ), + VideoItem( + id: "Nl9NL1oup3Q", + name: "EEVblog 1603 - Colas Wattway Solar Roadways is DEAD", + length: Some(1055), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/Nl9NL1oup3Q/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD8mC5yQTccSI3dqhCBNgbw8D981w", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Nl9NL1oup3Q/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDoJQx200qpXQ-EzVw0jrK789egcA", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Nl9NL1oup3Q/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB-OXpAH9uy86pgfpOUyJPqoRUfhQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Nl9NL1oup3Q/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAWmsEaL8v6ii05P_hNTOqDir7-9A", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(933000), + )), + publish_date: "[date]", + publish_date_txt: Some("3 weeks ago"), + view_count: Some(60589), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("The 1km Colas Wattway Solar Roadway in Normandy in France is finally being scrapped.\nPress F in the chat.\n€5M of taxpayer money down the drain. That money could have bought a 5MW commercial..."), + ), + VideoItem( + id: "u6tuZ7plOa4", + name: "EEVblog 1602 - Sony Amplifier REPAIR ADVENTURE", + length: Some(2691), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/u6tuZ7plOa4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBa5FnB0TzCXbwoequOCmRm_VSIDw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/u6tuZ7plOa4/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCGyuxbT5RDjioJbP0MZpPjx5KGfw", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/u6tuZ7plOa4/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBkUDAy5lmD4jIwDvnZ_wouReQQiw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/u6tuZ7plOa4/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDwJw4LOQJtOp9jkqyeuDzNVTvOtQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(933000), + )), + publish_date: "[date]", + publish_date_txt: Some("3 weeks ago"), + view_count: Some(48158), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Repair of a Sony HCD-SBT20B Bluetooth Stereo. What it\'s like to nail the repair and then, well come-a-gutsa and have to go down the rabbit hole to fix the fix all whilst battling bad design..."), + ), + VideoItem( + id: "gZIRPJt69sM", + name: "EEVblog 1601 - How VFD (Vacuum Fluorescent) Displays Work", + length: Some(606), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/gZIRPJt69sM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAgHSw4ma5wo_wloJIzb_3L6-BAaQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/gZIRPJt69sM/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCRUMcrDRkPOCBHD6i1bJpPuQyj_g", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/gZIRPJt69sM/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCwXmNXxSwqFtdNawCfFwbucc3u9A", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/gZIRPJt69sM/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBUaLo7Nv3DbZva82FOIY_ChHG3fw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(933000), + )), + publish_date: "[date]", + publish_date_txt: Some("4 weeks ago"), + view_count: Some(23312), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("How VFD (Vacuum Fluorescent) Displays Work.\nExtracted from a hacking video #717: https://www.youtube.com/watch?v=clUVEyi_YNM\n\nForum: https://www.eevblog.com/forum/blog/eevblog-1601-how-vfd-(vacuum-..."), + ), + VideoItem( + id: "SGwHRImfE4E", + name: "EEVblog 1600 - Rouute: Road Based Energy BUSTED", + length: Some(1317), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/SGwHRImfE4E/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAX6ecM7rCaBFym8pyYPrWnYwbGuA", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/SGwHRImfE4E/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDXmFxtcPiAVEG7zmr1amWN3Td4Pg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/SGwHRImfE4E/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD8ZePkxoFVNGAqUrRwEWX2DRxKFg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/SGwHRImfE4E/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCJXFjDYNXUM_QSZce45bOadBgiAA", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(933000), + )), + publish_date: "[date]", + publish_date_txt: Some("1 month ago"), + view_count: Some(70912), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Rouute: Road Based Energy! Harvest kinestic energy from cars using speed bumps. Will this decarbonise and save the planet? Do the numbers add up?\n\nhttps://www.rouute.com/road-based-energy\nDiscount..."), + ), + VideoItem( + id: "XYdmX8w8xwI", + name: "EEVblog 1599 - TOP 5 Jellybean Bipolar Transistors", + length: Some(1370), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/XYdmX8w8xwI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBrEHr6sXxajy0arfVzB9rlF1APVg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/XYdmX8w8xwI/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDqz9bAHSQ72iytzM1ioyIesJo9rA", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/XYdmX8w8xwI/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCtG_u9CWg-VhHWEfF0yIWqHfmQTg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/XYdmX8w8xwI/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB-n4BcMAgWcLsi3ssO65lR7PcESQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(933000), + )), + publish_date: "[date]", + publish_date_txt: Some("1 month ago"), + view_count: Some(45396), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("The TOP 5 Jellybean Bipolar Junction Transistors (BJT)\n\n00:00 - What is a Jellybean Component?\n01:30 - Low Power BJT: 2N3904 / 3906, SMD Marking 1A\n06:49 - 2N2222\n08:52 - BC547 fanboys\n09:28..."), + ), + VideoItem( + id: "igQoD_I7Arw", + name: "EEVblog 1598 - ANENG AC11 Socket Tester TEARDOWN + SCHEMATIC Reverse Eng", + length: Some(1187), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/igQoD_I7Arw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDh-14EGoep-9LhQ2xkHz4xkUD3jA", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/igQoD_I7Arw/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAfXU9U0rc1Q5j4f7Ct-jqx_RrckQ", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/igQoD_I7Arw/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC7K7-Rh0rVBuLguj0VaZzRZ2Tm4Q", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/igQoD_I7Arw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDEqV1YRK4RBIeVI_7QLzkNU0B14w", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(933000), + )), + publish_date: "[date]", + publish_date_txt: Some("1 month ago"), + view_count: Some(54864), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Teardown and reverse engineering of the ANENG AC11 Smart Mains Socket Tester + DaveCAD schematic.\n\nForum: https://www.eevblog.com/forum/blog/eevblog-1598-aneng-ac11-socket-tester-teardown-schematic..."), + ), + VideoItem( + id: "kpzNVsSmUu0", + name: "EEVblog 1597 - Zoyi ZT-703S $80 2CH 50MHz Oscilloscope/Multimeter Review", + length: Some(1792), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/kpzNVsSmUu0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAPg-goL1Tq9bpbFq9Ni64B0n3o_A", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/kpzNVsSmUu0/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAw1Oq_Nej8ADOSEuf4kHx4RCkvIQ", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/kpzNVsSmUu0/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLByIc5t3TIxU-SnKQ18UCRVbRhFQg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/kpzNVsSmUu0/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDBCboNAHxJphNAxlsIedScp9zQTQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(933000), + )), + publish_date: "[date]", + publish_date_txt: Some("1 month ago"), + view_count: Some(145453), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Looking at the new $80 Zoyi/Zotech ZT703S Dual channel 50MHz 25,000 count 0.05% handheld oscilloscope/multimeter compared to the single channel 10MHz 10,000 count ZT702S\nhttps://s.click.aliexpress...."), + ), + VideoItem( + id: "AUsENwVjiDQ", + name: "EEVblog 1596 - NEW Digilent Analog Discovery Pro ADP2230 TEARDOWN", + length: Some(1212), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/AUsENwVjiDQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCfOMU68_jSX9nkY3L8dhS8Cv4kOQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/AUsENwVjiDQ/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCnvjM2BZHjgyIQJV1I1ZQ_RXk2Tg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/AUsENwVjiDQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCNGhrJhe7PZltk0wDJDdV5IFRpdA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/AUsENwVjiDQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDs6dRcR4txFRhzlFaSS1JSRPFM7g", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(933000), + )), + publish_date: "[date]", + publish_date_txt: Some("1 month ago"), + view_count: Some(37347), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Teardown of the UNRELEASED Digilent Analog Discovery Pro ADP2230\nIt will be released on the 29th Feb 2024 for US$695\nFeaturing the AvE Widlarizer!\nhttps://digilent.com/reference/test-and-measuremen..."), + ), + VideoItem( + id: "nEmO8DcOap4", + name: "EEVblog 1595 - 50 Year Chinese Nuclear Diamond Battery!", + length: Some(1051), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/nEmO8DcOap4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCajo6A-qIwGioGsM1c0wzSBfiing", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/nEmO8DcOap4/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB3pojZkVS4aTcVgyTCmcTPSr1vOg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/nEmO8DcOap4/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCxkPEaPujMTuU3fOw7H1I7rsZ_FQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/nEmO8DcOap4/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDGMmn8M8ZHRajlM0W-ezuuqsGPGg", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(933000), + )), + publish_date: "[date]", + publish_date_txt: Some("1 month ago"), + view_count: Some(145315), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("A Chinese startup has developed a tiny 50 year life diamond nuclear battery that\'s going to change the world! Yeah, nah. Same old betavoltaic, same old limitations, and same old startup marketing..."), + ), + VideoItem( + id: "fIEH4-P2nyQ", + name: "EEVblog 1594 - Inside a Quantum Computer! with Andrea Morello", + length: Some(5650), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/fIEH4-P2nyQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCRMUDhvpmmRPm6XLU21VstvzTzRw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/fIEH4-P2nyQ/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD8DHZzlUMtmxLLN-qA9Zd-WQtn-A", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/fIEH4-P2nyQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC5C05Q_taEr6dJ_7ZZUsNAlMnxOA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/fIEH4-P2nyQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCfV1MQkPXlSfBEI76RXVHguwrqcQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(933000), + )), + publish_date: "[date]", + publish_date_txt: Some("2 months ago"), + view_count: Some(73277), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("An in-depth look at the engineering inside a quantum computer, and also demonstrating the operational results live and how they are measured.\nWith Professor Andrea Morello who is the Scientia..."), + ), + VideoItem( + id: "cO45J-8qTZ4", + name: "EEVblog 1593 - 16kV ESD Tester REPAIR - Part 2", + length: Some(1636), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/cO45J-8qTZ4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA4xdKXs7GYV215wv6CHdGcgCSKkg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/cO45J-8qTZ4/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBIVwZLpawWUVY9fJPfKUZb109HRQ", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/cO45J-8qTZ4/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD49Mep9rt3px3yoVjxbgBwn55AVA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/cO45J-8qTZ4/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCMf82skBbiBKUlk_rjtz1w3Rtuug", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(933000), + )), + publish_date: "[date]", + publish_date_txt: Some("2 months ago"), + view_count: Some(24722), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Repairing the Haefely Trench PESD-1600 ESD Tester, plus some testing and discussion of the IEC 61000-4-2 standard.\nPart 1 teardown: https://www.youtube.com/watch?v=-xtZvSG4N9I\nRotary encoder..."), + ), + VideoItem( + id: "AFz0qmkq4LM", + name: "EEVblog 1592 - Fluke 287 Multimeter Teardown", + length: Some(1022), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/AFz0qmkq4LM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA7MqMPizOmrSHoXDsieAhELhYHCg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/AFz0qmkq4LM/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBvVNDGakUPgksdzQoVBtnuFoEhOw", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/AFz0qmkq4LM/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBBBqAmgDGBFIKlKfeeIhlSQ2q78Q", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/AFz0qmkq4LM/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDzn6AUQPf5LEwXE-iFLWsDikereg", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(933000), + )), + publish_date: "[date]", + publish_date_txt: Some("2 months ago"), + view_count: Some(51408), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Fluke 287 Multmeter Teardown.\nTesting video: https://www.youtube.com/watch?v=FgkD8K0Ssdc\nForum: https://www.eevblog.com/forum/blog/eevblog-1592-fluke-287-multimeter-teardown/\nTeardown photos:..."), + ), + VideoItem( + id: "bnQCKa6GNWo", + name: "EEVblog 1591 - MORE Colas Wattway Solar Cycleways in the Netherlands!", + length: Some(1343), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/bnQCKa6GNWo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA71_sOs1fDAGBk2WJtxxOi6R_4KA", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/bnQCKa6GNWo/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBM0aU_1BnOHPMgdOl0hCrcTSDq1Q", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/bnQCKa6GNWo/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCdBRH0B7FOEPeVDjAoLirUoqD6TA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/bnQCKa6GNWo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD2hbFGTjn9QOr3EVE-k0AAdLLcng", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(933000), + )), + publish_date: "[date]", + publish_date_txt: Some("2 months ago"), + view_count: Some(48969), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Colas Wattway is back with the two 1000sqm solar cycleway installations in the Netherlands!\nhttps://electrek.co/2023/12/18/dutch-riding-bikes-solar-cycle-paths/\n\nJust 4 months ago! https://www.yout..."), + ), + VideoItem( + id: "-g-MD69V0CU", + name: "EEVblog 1590 - Cheap $33 Boombox Teardown", + length: Some(1191), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/-g-MD69V0CU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDjLnRunCSuUYAmnxKgbuSTJHshrA", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/-g-MD69V0CU/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCnpcRQQJ6UdKU5pBPE5DoM1a29Ug", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/-g-MD69V0CU/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCBsP1C14m96X9-F53bOjynIH9a3A", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/-g-MD69V0CU/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB3TuJnDbUdOSUr-oJdRFkPKrUPSw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(933000), + )), + publish_date: "[date]", + publish_date_txt: Some("2 months ago"), + view_count: Some(49405), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Is a modern $33 boombox from Kmart any good?\n\nTHE 80\'s boombox teardown: https://www.youtube.com/watch?v=hULNdrsh6uw\nBoombox REPAIR: https://www.youtube.com/watch?v=8ToVCAhLg8A\n\nForum: https://www...."), + ), + VideoItem( + id: "KKMrT2HeRsQ", + name: "EEVblog 1589 - CCD Scanner Array", + length: Some(872), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/KKMrT2HeRsQ/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGIgZShbMA8=&rs=AOn4CLBigIAgMdNzHkMH9gB4lgiwfXy-Yg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/KKMrT2HeRsQ/hqdefault.jpg?sqp=-oaymwE1CMQBEG5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGIgZShbMA8=&rs=AOn4CLChNMPDTpMIcZK42mT4mlvYA26DNA", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/KKMrT2HeRsQ/hqdefault.jpg?sqp=-oaymwE2CPYBEIoBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgB_gmAAtAFigIMCAAQARhiIGUoWzAP&rs=AOn4CLCM5qQo9J2YdtrGVcz3WKws4i4KHw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/KKMrT2HeRsQ/hqdefault.jpg?sqp=-oaymwE2CNACELwBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgB_gmAAtAFigIMCAAQARhiIGUoWzAP&rs=AOn4CLCIInd_b6uxUyrLvjr8SLIn1aBVlw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(933000), + )), + publish_date: "[date]", + publish_date_txt: Some("2 months ago"), + view_count: Some(24160), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("A closer look at the scanner array head from the dumpster FAX machine teardown.\n\n00:00 - Linear Scanner Array\n04:40 - CCD sensor grouping\n08:24 - The optical zebra strip\n11:30 - Under the x400..."), + ), + VideoItem( + id: "W_W_BDcebao", + name: "EEVblog 1588 - Virgin Hyperloop One Goes BUST!", + length: Some(1783), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/W_W_BDcebao/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAgwPWx85cGEbBtxXot2PtP7Z12bQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/W_W_BDcebao/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAQz7mTB-mLsP9kZy6A5tEIzc-lJg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/W_W_BDcebao/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA16LtERNyYUhPNardaLA0xGa53Kg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/W_W_BDcebao/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAptKADGms1JjbIo-Nk_uwsYxFLUQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(933000), + )), + publish_date: "[date]", + publish_date_txt: Some("3 months ago"), + view_count: Some(56586), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("The Elon Musk vision of Hyperloop has come-a-gutsa. Vigin Hyperloop One has gone out of business. Who could have predicted it?\nAnd who\'s left standing in the Hyperloop world?\nPart 2: TUM Hyperloop:..."), + ), + VideoItem( + id: "FknxWtZkuUE", + name: "EEVblog 1587 - Dumpster FAX Teardown", + length: Some(1185), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/FknxWtZkuUE/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgXChUMA8=&rs=AOn4CLBGke3u13MxDYsi4cLbME7jckVKuw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/FknxWtZkuUE/hqdefault.jpg?sqp=-oaymwE1CMQBEG5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgXChUMA8=&rs=AOn4CLBik13O4ddFMDmmOFqI0E7GAHaxwA", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/FknxWtZkuUE/hqdefault.jpg?sqp=-oaymwE2CPYBEIoBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgB_gmAAtAFigIMCAAQARhlIFwoVDAP&rs=AOn4CLAhqflsQgDfCpLOuVx76xOnZMJWrw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/FknxWtZkuUE/hqdefault.jpg?sqp=-oaymwE2CNACELwBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgB_gmAAtAFigIMCAAQARhlIFwoVDAP&rs=AOn4CLAZi82kenLuT10YrEc4jR2sHigcPw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(933000), + )), + publish_date: "[date]", + publish_date_txt: Some("3 months ago"), + view_count: Some(21250), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Teardown of a Brother FAX machine found in the dumpster, just because.\nForum: https://www.eevblog.com/forum/blog/eevblog-1587-dumpster-fax-teardown/\n\n\nIf you find my videos useful you may consider..."), + ), + VideoItem( + id: "AuFSMpFzAnw", + name: "eevBLAB 117 - The Youtube Bot Comment Problem", + length: Some(299), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/AuFSMpFzAnw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCrpv-fSn1pwpshPv-QWXV6jeFCiw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/AuFSMpFzAnw/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCUMFdAy0xuIpgEQOsBy5UqKyATPw", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/AuFSMpFzAnw/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAxNwGVeljlwit2jXNRLuKw4VDXhg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/AuFSMpFzAnw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAEKVLY8uPv8V-V9xzdtX6ib8mhZw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(933000), + )), + publish_date: "[date]", + publish_date_txt: Some("3 months ago"), + view_count: Some(23126), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("The huge Youtube bot comment spam problem has to end.\nForum: https://www.eevblog.com/forum/blog/eevblab-117-the-youtube-porn-bot-comment-problem/\n\nIf you find my videos useful you may consider..."), + ), + VideoItem( + id: "WIEb1Zd1NdI", + name: "EEVblog 1586 - Stranger Things Decade Resistor Box + Repair", + length: Some(968), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/WIEb1Zd1NdI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD5ndIPZJndQkkrCcT_SbrBWdBXaA", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/WIEb1Zd1NdI/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLArJNxp3V0M_9kH7bCTUJtiB-oNJQ", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/WIEb1Zd1NdI/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA6EJKuGz-aJASBI9RzKNGBuKhmDg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/WIEb1Zd1NdI/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD1Atq4K6famlQ0WMrT6SPcQdSUmg", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(933000), + )), + publish_date: "[date]", + publish_date_txt: Some("3 months ago"), + view_count: Some(42940), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("A $12 6 decade resistor box, is it any good?\nAnd it\'s not every day you have to repair a brand new product.\nhttps://s.click.aliexpress.com/e/_Ddfe4PL\nhttps://s.click.aliexpress.com/e/_DnK2irb..."), + ), + VideoItem( + id: "PhGPacEg3zw", + name: "EEVblog 1585 - SCAM! Portable Kinetic Molecular Heater BUSTED", + length: Some(1166), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/PhGPacEg3zw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBluu7atTRGHN9p5mhKoCjtJcQCQA", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/PhGPacEg3zw/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBVyhkIIYxEY8tWrvwUDP_uPW_0GA", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/PhGPacEg3zw/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC0tvz4rEY0usPCIsx6tiCQh81eAw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/PhGPacEg3zw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLASwFdk5zIuZ2cOecCtcqkNxCBPnw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(933000), + )), + publish_date: "[date]", + publish_date_txt: Some("3 months ago"), + view_count: Some(48996), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("The Portable Kinetic Molecular Heater is an obvious SCAM.\nWe shouldn\'t have to look at why, but let\'s do it anyway.\n\nForum: https://www.eevblog.com/forum/blog/eevblog-1585-scam!-portable-kinetic-mo..."), + ), + VideoItem( + id: "sisD61ohzK0", + name: "EEVblog 1584 - Wireless Freakin\' EV Charging Roads! A $250M Boondoggle", + length: Some(1785), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/sisD61ohzK0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAX1Q1G-ek-lBZwvIlTXGO6UYPmEA", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/sisD61ohzK0/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDK5abYrCa9sCDFhbSbc5l5D9VFgg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/sisD61ohzK0/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDCdVqoCSmOa_ymbbFmwJscfA4A7Q", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/sisD61ohzK0/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBEnUHLoe1Y_oaS4XHBiF_OYBG2yw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(933000), + )), + publish_date: "[date]", + publish_date_txt: Some("3 months ago"), + view_count: Some(49899), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("The US Department of Transport have authorised a $250M grant program to fund Wireless EV charging roads. A look at the pilot program in Detroit Michigan with the startup company Electreon:..."), + ), + VideoItem( + id: "1YK_GlnUlI8", + name: "EEVblog 1583 - Advanced Oscilloscope Triggering: Glitch/Pulse/Runt/Interval", + length: Some(1339), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/1YK_GlnUlI8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA6wJK1kBMorZs7ba2ny9fNdGA8yQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/1YK_GlnUlI8/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAz1_NlQZNe-2-619L3yD86bobmQA", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/1YK_GlnUlI8/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDlw133uPnQlqJdk92hW1XNNdg_iA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/1YK_GlnUlI8/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCyFSnkXdizZScSRqxHW2UA_AWfyw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(933000), + )), + publish_date: "[date]", + publish_date_txt: Some("3 months ago"), + view_count: Some(24076), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("A practical demonstration on how to use advanced oscillocope trigger features to trigger on an unsyncronised infrequenct runt/glitch pulse.\nIncludes Pulse/Glitch, Runt, Interval, Zone triggering,..."), + ), + VideoItem( + id: "HR6_Lp7fH_c", + name: "EEVblog 1582 - FNIRSI DPOX180H 180MHz DPO for $123?", + length: Some(1650), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/HR6_Lp7fH_c/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA5ywdoHcjG1ge9V3fGZNJdrhDoxg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/HR6_Lp7fH_c/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCoJN2piQ_s5LKnnACOt4XuQUwe3g", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/HR6_Lp7fH_c/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCqn_7bTbdgh0h803Wjt0pfvkIDGw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/HR6_Lp7fH_c/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAj9fOW252TtK7YDHEOix09_Utw_w", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(933000), + )), + publish_date: "[date]", + publish_date_txt: Some("3 months ago"), + view_count: Some(149964), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("A look at the FNIRSI DPOX180H 180MHz Handheld Digital Phosphor Oscilloscope for $123.\nhttps://www.aliexpress.com/item/1005005564788266.html\nhttps://eevblog.store/products/eevblog-bm036-ac-dc-clamp-..."), + ), + VideoItem( + id: "m_8jh_MpWBE", + name: "EEVblog 1581 - Tesla Roadster now OPEN SOURCE?", + length: Some(1032), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/m_8jh_MpWBE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDHUvTCcc_XQO0MDCBTBOuXvixyuQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/m_8jh_MpWBE/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDw1oBMhbunOL68Ir0-NMHp2maDqQ", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/m_8jh_MpWBE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDeTzuK2Z6cx5UF_sR8j45-KfYVLA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/m_8jh_MpWBE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDY0xdTkroLDhjQdHqu30ll2-XBzA", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(933000), + )), + publish_date: "[date]", + publish_date_txt: Some("4 months ago"), + view_count: Some(52290), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Elon Musk just announced that the Tesla Roadster is now open source! Do we get schematics? Let\'s have a look...\nhttps://service.tesla.com/roadster\nPart 2: https://www.youtube.com/watch?v=r7Cw3GVXl4..."), + ), + VideoItem( + id: "eeNKvh2cFPQ", + name: "EEVblog 1580 - MacGruber Mailbag", + length: Some(2235), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/eeNKvh2cFPQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBy8szo9U24ueqgaeinBiQSTiNdcw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/eeNKvh2cFPQ/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCLTSBvNyxutsFXolQ3sXxb6ym0tA", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/eeNKvh2cFPQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBdedMyH0qswdu3IQuaXJl9uDfX6Q", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/eeNKvh2cFPQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCwpBjlO_Fpo1NoV9jF6HUd58tPpw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(933000), + )), + publish_date: "[date]", + publish_date_txt: Some("4 months ago"), + view_count: Some(29462), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("More Mailbag!\n\n00:00 - Mailbag Monday time\n01:42 - T-88C Analog Multimeter\nhttps://s.click.aliexpress.com/e/_DEojyDp\n07:26 - Teardown\n12:11 - PCB proto boards from Jon Newcomb\nhttp://www.jnewcomb.c..."), + ), + VideoItem( + id: "5M5MF6KE-jY", + name: "EEVblog 1579 - Nuclear Diamond Battery FRAUD Lawsuit by SEC!", + length: Some(1077), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/5M5MF6KE-jY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBq8h9yVCll1FPCLA5FdQTAWiaCAg", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/5M5MF6KE-jY/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB0NK0jYYF9EYK7qdkqd4a055dupQ", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/5M5MF6KE-jY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCGGZY7vMAQGVzoLqxrODxF7nYiMQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/5M5MF6KE-jY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAFDAgQafqowx58nWJuGHULbRkR3A", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(933000), + )), + publish_date: "[date]", + publish_date_txt: Some("4 months ago"), + view_count: Some(116169), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("The Nuclear Diamond Battery that made a huge marketing splash back in Aug 2020 and raised $1.2M in funding, NDB Inc and it\'s founder Nima Golsharifi is now being sued by the SEC for fraud...."), + ), + VideoItem( + id: "IWHS2FDyh7s", + name: "EEVblog 1578 - No one can be told what the Metrix is.", + length: Some(1794), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/IWHS2FDyh7s/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDru0L9uKllbOsCuLX_39XvlAAN5g", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/IWHS2FDyh7s/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBwhjsPYVb2BYxX9PP7bnzQxa7Y1g", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/IWHS2FDyh7s/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA5lv9wWJUiPNUUEPJET4HFuRWj-A", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/IWHS2FDyh7s/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCh0_Y1OAf-CWf_u8J_mWhXwka03Q", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(933000), + )), + publish_date: "[date]", + publish_date_txt: Some("4 months ago"), + view_count: Some(40487), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("A multimeter without any screws? A 1990\'s vintage Metrix MX44 multimeter torn down, tested and calibration adjusted.\n\nTektronix Multimeter Repair-o-thon\nhttps://www.youtube.com/watch?v=2QZ8GWwzXXY..."), + ), + VideoItem( + id: "CnJ7mQ_Fo-8", + name: "EEVblog 1577 - History of Television & Cathode Ray Tubes with Kathy Loves Physics", + length: Some(4693), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/CnJ7mQ_Fo-8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCIxRMt80uMLr-xNjaez0XsbalQsA", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/CnJ7mQ_Fo-8/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDdu3DdSJu3KSO0jlwzVhCGivAYNg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/CnJ7mQ_Fo-8/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCLmaAzBCUac2J1wi4FefpdRAMcBg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/CnJ7mQ_Fo-8/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBFvfKg1VqDDc7TMVYAn9gCb8YiVg", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UC2DjFE7Xf11URZqWBigcVOQ", + name: "EEVblog", + avatar: [], + verification: Verified, + subscriber_count: Some(933000), + )), + publish_date: "[date]", + publish_date_txt: Some("4 months ago"), + view_count: Some(17237), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: Some("Kathy Joseph from Kathy Loves Physics joins me on The Amp Hour to discuss history and physics and we end up discussing the intricate history of the development of television and the Cathode..."), + ), + ], + ctoken: Some("4qmFsgKrCBIYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RGo4IOGdhRUJocUJCbnItQlFyNUJRclFCVUZtYW5Fd2RrNDNNVTFSUkdVd2VGWXdSVXRSVlhORk16ZzFWRXQ2ZDJVelNrVlpXamhIWDJ4d2NIZG1SM2hXTm1ObFVVY3pkVWhoYUdWYVgzTjRUREZRYkhBdGNIVnlhQzF3VTNKMVlrVTRjRGRuVGxOdmFrdHJRbVozWHpKaVJXVmtVRUZyUTJ4M01WRlhZbloxV0d0eWRUUlZkM2s0VjNRMVYxRk9SVkV6Y2xwTlpIUllWelpSY3pCelJVeFFkVEJLU25aUFpESk9XVkE1T1hZdFYzUjFVbFV0Wm1ZM1F6VkdVa2hrY0UxYVlUaG1aa1I2ZWxWRWNHUXpUbmsxUlhJeGMyZGxTRFpOWTBWeE0wZzVVVkl6WjAxTWVrZEJkeTFVYVZSWFozbGtiME5oUW5oVFRGbFNkVkE1UWtaekxUbHRjVTVKWWtSMmVIRlBNMmRtVkhOd1ZuVkNSR3RFUlZJd1MxUlhkV3BNVVRBMlNGbFlUV0ZOVEd0NFNWUk1UREV4TWpoc1ZqUmpWamRhUlRWQ1prdDFMWFpZU1VKSlVXcFZWSGhKY0U5aExUZDFjbWRKU0hCNmQwRmxkMmhXV0dST00wbFVUMWxQYld4MGJVRjNlalJVZGxjNGIzTXdabEE1VTJ3eGVXUkZZbEl5YW1ZM1pqaFFkRGhhYUdOM1JGVjNNelI1WTFGVFNFbFllbFUxUkRoU04zVkVZVEJhVFVacFFqUnVhR1JTVjNBdGQyRjFOR05YVVVSWGJERktRbDlZU1U1NVJtNVpNR1ZhTWpSWVdYYzVhak4xTUcxcmVYTjZjVzFNWDBSS09WaHhObDlTUVV0cGNUSk9iVVZVVkZneExWRXdTRlZVYVZkRk4yOTFhRFZ4VDA1UmIzUkVVbTgxTjFsc2VuZExjRzVQWjNCdk0zTlRSV3hxU1dwQk9VcGZja2xTVjFBeGVEaFNSMWRKYzJ4UVN5MVRVVE5pTTJOZmMxRndORmh6TjFWUGRqUkdSbmN0WVc0eVRubHFhV3RuZVZONFV5MTFZelZVU0ZOd1NTMHhUVXRWTTNGbVZtcHRTRVpDUkhoaU9WWmtkbk14UW5aTmEzcGZWV3BhUlRaWkxVVXpNRTFRYVVaemVEaFhYMlJCT0ZOeE5Gb3lSWHBzY3psdGNWbGlUV0YxT0MxeU1XdHpiMXBpTjJ0d1ZqTjRVWEJGYW5rMVoxTm1TMXBXWW5OMllVYzVSVll5TVVFeWNDMXJPR3BHTm1ST1JUbFNWekZYWW00eldHRjVWaElrTmpZek16RTRaVEl0TURBd01DMHlNakZpTFdGak9XTXROVGd5TkRJNVlXVmpPR1V3R0FFJTNE"), + endpoint: browse, + ), +) diff --git a/testfiles/channel/channel_videos_20240324_pageheader2.json b/testfiles/channel/channel_videos_20240324_pageheader2.json new file mode 100644 index 0000000..974ee89 --- /dev/null +++ b/testfiles/channel/channel_videos_20240324_pageheader2.json @@ -0,0 +1,14558 @@ +{ + "responseContext": { + "serviceTrackingParams": [ + { + "service": "GFEEDBACK", + "params": [ + { + "key": "route", + "value": "channel.videos" + }, + { + "key": "is_casual", + "value": "false" + }, + { + "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": "9453588,9453589,23804281,23848212,23946420,23952866,23966208,23983296,23986015,23998056,24004644,24036948,24077241,24080738,24108448,24120819,24135310,24166867,24181174,24187377,24208765,24241378,24255545,24290971,24377598,24390675,24439361,24451319,24453989,24458317,24458324,24458329,24468724,24502054,24506784,24515423,24524098,24524562,24542367,24547316,24548627,24548629,24550458,24560416,24566687,24695884,24697069,24699899,39324567,39325349,39325801,39325808,39325818,39325930,39325955,39325978,39326022,39326072,39326089,39326093,39326154,51003636,51006181,51009781,51010235,51012659,51014091,51016856,51017346,51019626,51020570,51025415,51026715,51027870,51033399,51033765,51037540,51038805,51039200,51048489,51050361,51053689,51057501,51059571,51060353,51063643,51064834,51069269,51072748,51074183,51074739,51079239,51080341,51082384,51089441,51089956,51091331,51092661,51092929,51095478,51096389,51096576,51096646,51096989,51098297,51098299,51101170,51101454,51102791,51103088,51103518,51103858,51105868,51106995,51107658,51108006,51108977,51109078,51110160,51111738,51112401,51112970,51112972,51115184,51118293,51118932,51119507,51119512,51119935,51120529,51124104,51125637,51125903,51126281,51128585,51128977,51129060,51129216,51129218,51129220,51129223,51129224,51129395,51132393,51134507,51134731,51135346,51136218,51136785,51136843,51137185,51137936,51138637,51140454,51140749,51141038,51141385,51141541,51142840,51142842,51144819,51146434,51146794,51146962,51147896,51149880" + } + ] + }, + { + "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.20240326.01.00" + }, + { + "key": "yt_li", + "value": "0" + }, + { + "key": "GetChannelPage_rid", + "value": "0x4841fea0e2f9bba2" + } + ] + }, + { + "service": "GUIDED_HELP", + "params": [ + { + "key": "logged_in", + "value": "0" + } + ] + }, + { + "service": "ECATCHER", + "params": [ + { + "key": "client.version", + "value": "2.20240326" + }, + { + "key": "client.name", + "value": "WEB" + } + ] + } + ], + "maxAgeSeconds": 300, + "mainAppWebResponseContext": { + "loggedOut": true, + "trackingParam": "kx_fmPxhoPZRHF5swax781ASv6Mc0wrX3EYhjhUHwBzNr_wRgkuswmIBwOcCE59TDtslLKPQ-SS" + }, + "webResponseContextExtensionData": { + "hasDecorated": true + } + }, + "contents": { + "twoColumnBrowseResultsRenderer": { + "tabs": [ + { + "tabRenderer": { + "endpoint": { + "clickTrackingParams": "CP8BEPCTARgFIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@EEVblog/featured", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "params": "EghmZWF0dXJlZPIGBAoCMgA%3D", + "canonicalBaseUrl": "/@EEVblog" + } + }, + "title": "Home", + "trackingParams": "CP8BEPCTARgFIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "tabRenderer": { + "endpoint": { + "clickTrackingParams": "CCUQ8JMBGAYiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@EEVblog/videos", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "params": "EgZ2aWRlb3PyBgQKAjoA", + "canonicalBaseUrl": "/@EEVblog" + } + }, + "title": "Videos", + "selected": true, + "content": { + "richGridRenderer": { + "contents": [ + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "videoId": "BpW_DxGRCRw", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/BpW_DxGRCRw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBHX3HMauysp5rOpOOuhvfEsTxqHQ", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/BpW_DxGRCRw/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA_U5Sa2uICYXjld4CrvvATptclxg", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/BpW_DxGRCRw/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCoKLkbEuYKfnF8kuplvjngEyUN1A", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/BpW_DxGRCRw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDQnQsIHhkGbo_SLJY2DFMT1_lhgQ", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "EEVblog 1605 - Chasing Fart Noises - JBL Charge 3 \"Repair\"" + } + ], + "accessibility": { + "accessibilityData": { + "label": "EEVblog 1605 - Chasing Fart Noises - JBL Charge 3 \"Repair\" by EEVblog 27,799 views 12 days ago 27 minutes" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Dave is chasing fart noises in this JBL Charge 3 waterproof speaker.\nA teardown, and powerup on the bench to find the mysterious fart noises.\nWill it get repaired, or will the fault do a Harold..." + } + ] + }, + "publishedTimeText": { + "simpleText": "12 days ago" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "27 minutes, 56 seconds" + } + }, + "simpleText": "27:56" + }, + "viewCountText": { + "simpleText": "27,799 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPkBENwwIhMIv-qO59yShQMV0R8GAB0bsgbeWhhVQzJEakZFN1hmMTFVUlpxV0JpZ2NWT1GaAQMQ8jg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=BpW_DxGRCRw", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "BpW_DxGRCRw", + "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=0695bf0f1191091c&ip=79.250.144.228&initcwndbps=993750&mt=1711483046&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CPkBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "CPkBENwwIhMIv-qO59yShQMV0R8GAB0bsgbeQJySxIzx4e_KBg==", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "27K views" + } + }, + "simpleText": "27K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP4BEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CP4BEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "BpW_DxGRCRw", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CP4BEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "BpW_DxGRCRw" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "BpW_DxGRCRw" + ] + } + } + ] + } + }, + "trackingParams": "CP4BEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CP0BENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "offlineVideoEndpoint": { + "videoId": "BpW_DxGRCRw", + "onAddCommand": { + "clickTrackingParams": "CP0BENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "getDownloadActionCommand": { + "videoId": "BpW_DxGRCRw", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CP0BENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPkBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtCcFdfRHhHUkNSdw%3D%3D", + "commands": [ + { + "clickTrackingParams": "CPkBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CPwBEI5iIhMIv-qO59yShQMV0R8GAB0bsgbe", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CPkBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + } + ], + "trackingParams": "CPkBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "27 minutes, 56 seconds" + } + }, + "simpleText": "27:56" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CPsBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "BpW_DxGRCRw", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CPsBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "BpW_DxGRCRw" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CPsBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CPoBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CPoBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "BpW_DxGRCRw", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CPoBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "BpW_DxGRCRw" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "BpW_DxGRCRw" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CPoBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/BpW_DxGRCRw/mqdefault_6s.webp?du=3000&sqp=CNy2jLAG&rs=AOn4CLAy5DDSy48S8hZo8HUSL_nLzbN5Qw", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + "trackingParams": "CPgBEJmNBRgAIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "videoId": "GRRvGj8OT_A", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/GRRvGj8OT_A/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGMgYyhjMA8=&rs=AOn4CLByLXyg74bCFFJH8-ZqVMLtFqzniQ", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/GRRvGj8OT_A/hqdefault.jpg?sqp=-oaymwE1CMQBEG5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGMgYyhjMA8=&rs=AOn4CLAcXJZ9LF0JwB9XRc8GTmVY57pg4A", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/GRRvGj8OT_A/hqdefault.jpg?sqp=-oaymwE2CPYBEIoBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgB_gmAAtAFigIMCAAQARhjIGMoYzAP&rs=AOn4CLDOJD6P5nzkBqRGXNwNU9U0xPZkMQ", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/GRRvGj8OT_A/hqdefault.jpg?sqp=-oaymwE2CNACELwBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgB_gmAAtAFigIMCAAQARhjIGMoYzAP&rs=AOn4CLCZrK32i8fghUmiT89TeqxQX10Hiw", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "EEVblog 1604 - BEWARE! Multimeter Burden Voltage" + } + ], + "accessibility": { + "accessibilityData": { + "label": "EEVblog 1604 - BEWARE! Multimeter Burden Voltage by EEVblog 34,723 views 2 weeks ago 6 minutes, 23 seconds" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Burden Voltage is a BIG trap with Multimeters, don't get caught out!\nA short video demonstrating the impact of Burden Voltage / Shunt Resistance on current measurement.\n\nMutlimeter Shunt Tutorial..." + } + ] + }, + "publishedTimeText": { + "simpleText": "2 weeks ago" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "6 minutes, 23 seconds" + } + }, + "simpleText": "6:23" + }, + "viewCountText": { + "simpleText": "34,723 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPIBENwwIhMIv-qO59yShQMV0R8GAB0bsgbeWhhVQzJEakZFN1hmMTFVUlpxV0JpZ2NWT1GaAQMQ8jg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=GRRvGj8OT_A", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "GRRvGj8OT_A", + "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=19146f1a3f0e4ff0&ip=79.250.144.228&initcwndbps=1407500&mt=1711483046&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CPIBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "CPIBENwwIhMIv-qO59yShQMV0R8GAB0bsgbeQPCfufij45uKGQ==", + "showActionMenu": false, + "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": "CPcBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CPcBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "GRRvGj8OT_A", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CPcBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "GRRvGj8OT_A" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "GRRvGj8OT_A" + ] + } + } + ] + } + }, + "trackingParams": "CPcBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CPYBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "offlineVideoEndpoint": { + "videoId": "GRRvGj8OT_A", + "onAddCommand": { + "clickTrackingParams": "CPYBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "getDownloadActionCommand": { + "videoId": "GRRvGj8OT_A", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CPYBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPIBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtHUlJ2R2o4T1RfQQ%3D%3D", + "commands": [ + { + "clickTrackingParams": "CPIBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CPUBEI5iIhMIv-qO59yShQMV0R8GAB0bsgbe", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CPIBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + } + ], + "trackingParams": "CPIBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "6 minutes, 23 seconds" + } + }, + "simpleText": "6:23" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CPQBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "GRRvGj8OT_A", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CPQBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "GRRvGj8OT_A" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CPQBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CPMBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CPMBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "GRRvGj8OT_A", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CPMBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "GRRvGj8OT_A" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "GRRvGj8OT_A" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CPMBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/GRRvGj8OT_A/mqdefault_6s.webp?du=3000&sqp=CIDCjLAG&rs=AOn4CLAdfyOPM06vBIxDx2iWY0bhZzP5aw", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + "trackingParams": "CPEBEJmNBRgBIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "videoId": "Nl9NL1oup3Q", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/Nl9NL1oup3Q/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD8mC5yQTccSI3dqhCBNgbw8D981w", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/Nl9NL1oup3Q/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDoJQx200qpXQ-EzVw0jrK789egcA", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/Nl9NL1oup3Q/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB-OXpAH9uy86pgfpOUyJPqoRUfhQ", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/Nl9NL1oup3Q/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAWmsEaL8v6ii05P_hNTOqDir7-9A", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "EEVblog 1603 - Colas Wattway Solar Roadways is DEAD" + } + ], + "accessibility": { + "accessibilityData": { + "label": "EEVblog 1603 - Colas Wattway Solar Roadways is DEAD by EEVblog 60,589 views 3 weeks ago 17 minutes" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "The 1km Colas Wattway Solar Roadway in Normandy in France is finally being scrapped.\nPress F in the chat.\n€5M of taxpayer money down the drain. That money could have bought a 5MW commercial..." + } + ] + }, + "publishedTimeText": { + "simpleText": "3 weeks ago" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "17 minutes, 35 seconds" + } + }, + "simpleText": "17:35" + }, + "viewCountText": { + "simpleText": "60,589 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "COsBENwwIhMIv-qO59yShQMV0R8GAB0bsgbeWhhVQzJEakZFN1hmMTFVUlpxV0JpZ2NWT1GaAQMQ8jg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Nl9NL1oup3Q", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Nl9NL1oup3Q", + "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=365f4d2f5a2ea774&ip=79.250.144.228&initcwndbps=1407500&mt=1711483046&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "COsBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "COsBENwwIhMIv-qO59yShQMV0R8GAB0bsgbeQPTOutH1pdOvNg==", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "60K views" + } + }, + "simpleText": "60K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPABEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CPABEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "Nl9NL1oup3Q", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CPABEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "Nl9NL1oup3Q" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "Nl9NL1oup3Q" + ] + } + } + ] + } + }, + "trackingParams": "CPABEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CO8BENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "offlineVideoEndpoint": { + "videoId": "Nl9NL1oup3Q", + "onAddCommand": { + "clickTrackingParams": "CO8BENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "getDownloadActionCommand": { + "videoId": "Nl9NL1oup3Q", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CO8BENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "COsBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtObDlOTDFvdXAzUQ%3D%3D", + "commands": [ + { + "clickTrackingParams": "COsBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CO4BEI5iIhMIv-qO59yShQMV0R8GAB0bsgbe", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "COsBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + } + ], + "trackingParams": "COsBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "17 minutes, 35 seconds" + } + }, + "simpleText": "17:35" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CO0BEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "Nl9NL1oup3Q", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CO0BEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "Nl9NL1oup3Q" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CO0BEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "COwBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COwBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "Nl9NL1oup3Q", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COwBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "Nl9NL1oup3Q" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "Nl9NL1oup3Q" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "COwBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/Nl9NL1oup3Q/mqdefault_6s.webp?du=3000&sqp=CPTOjLAG&rs=AOn4CLAMyjVZePdjNNOY7jQQs4YjQuu4wg", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + "trackingParams": "COoBEJmNBRgCIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "videoId": "u6tuZ7plOa4", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/u6tuZ7plOa4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBa5FnB0TzCXbwoequOCmRm_VSIDw", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/u6tuZ7plOa4/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCGyuxbT5RDjioJbP0MZpPjx5KGfw", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/u6tuZ7plOa4/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBkUDAy5lmD4jIwDvnZ_wouReQQiw", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/u6tuZ7plOa4/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDwJw4LOQJtOp9jkqyeuDzNVTvOtQ", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "EEVblog 1602 - Sony Amplifier REPAIR ADVENTURE" + } + ], + "accessibility": { + "accessibilityData": { + "label": "EEVblog 1602 - Sony Amplifier REPAIR ADVENTURE by EEVblog 48,158 views 3 weeks ago 44 minutes" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Repair of a Sony HCD-SBT20B Bluetooth Stereo. What it's like to nail the repair and then, well come-a-gutsa and have to go down the rabbit hole to fix the fix all whilst battling bad design..." + } + ] + }, + "publishedTimeText": { + "simpleText": "3 weeks ago" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "44 minutes, 51 seconds" + } + }, + "simpleText": "44:51" + }, + "viewCountText": { + "simpleText": "48,158 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "COQBENwwIhMIv-qO59yShQMV0R8GAB0bsgbeWhhVQzJEakZFN1hmMTFVUlpxV0JpZ2NWT1GaAQMQ8jg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=u6tuZ7plOa4", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "u6tuZ7plOa4", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---sn-h0jelnes.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odepv=1&id=bbab6e67ba6539ae&ip=79.250.144.228&initcwndbps=993750&mt=1711483046&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "COQBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "COQBENwwIhMIv-qO59yShQMV0R8GAB0bsgbeQK7zlNP7zNvVuwE=", + "showActionMenu": false, + "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": "COkBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COkBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "u6tuZ7plOa4", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COkBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "u6tuZ7plOa4" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "u6tuZ7plOa4" + ] + } + } + ] + } + }, + "trackingParams": "COkBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "COgBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "offlineVideoEndpoint": { + "videoId": "u6tuZ7plOa4", + "onAddCommand": { + "clickTrackingParams": "COgBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "getDownloadActionCommand": { + "videoId": "u6tuZ7plOa4", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "COgBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "COQBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "Cgt1NnR1WjdwbE9hNA%3D%3D", + "commands": [ + { + "clickTrackingParams": "COQBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "COcBEI5iIhMIv-qO59yShQMV0R8GAB0bsgbe", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "COQBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + } + ], + "trackingParams": "COQBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "44 minutes, 51 seconds" + } + }, + "simpleText": "44:51" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "COYBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "u6tuZ7plOa4", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "COYBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "u6tuZ7plOa4" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "COYBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "COUBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COUBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "u6tuZ7plOa4", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COUBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "u6tuZ7plOa4" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "u6tuZ7plOa4" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "COUBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/u6tuZ7plOa4/mqdefault_6s.webp?du=3000&sqp=COi1jLAG&rs=AOn4CLD_P0hFROlVU-Q8XQbTA-RBIBl9Zw", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + "trackingParams": "COMBEJmNBRgDIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "videoId": "gZIRPJt69sM", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/gZIRPJt69sM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAgHSw4ma5wo_wloJIzb_3L6-BAaQ", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/gZIRPJt69sM/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCRUMcrDRkPOCBHD6i1bJpPuQyj_g", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/gZIRPJt69sM/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCwXmNXxSwqFtdNawCfFwbucc3u9A", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/gZIRPJt69sM/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBUaLo7Nv3DbZva82FOIY_ChHG3fw", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "EEVblog 1601 - How VFD (Vacuum Fluorescent) Displays Work" + } + ], + "accessibility": { + "accessibilityData": { + "label": "EEVblog 1601 - How VFD (Vacuum Fluorescent) Displays Work by EEVblog 23,312 views 4 weeks ago 10 minutes, 6 seconds" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "How VFD (Vacuum Fluorescent) Displays Work.\nExtracted from a hacking video #717: https://www.youtube.com/watch?v=clUVEyi_YNM\n\nForum: https://www.eevblog.com/forum/blog/eevblog-1601-how-vfd-(vacuum-..." + } + ] + }, + "publishedTimeText": { + "simpleText": "4 weeks ago" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "10 minutes, 6 seconds" + } + }, + "simpleText": "10:06" + }, + "viewCountText": { + "simpleText": "23,312 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CN0BENwwIhMIv-qO59yShQMV0R8GAB0bsgbeWhhVQzJEakZFN1hmMTFVUlpxV0JpZ2NWT1GaAQMQ8jg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=gZIRPJt69sM", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "gZIRPJt69sM", + "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=8192113c9b7af6c3&ip=79.250.144.228&initcwndbps=993750&mt=1711483046&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CN0BENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "CN0BENwwIhMIv-qO59yShQMV0R8GAB0bsgbeQMPt69vJp4TJgQE=", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "23K views" + } + }, + "simpleText": "23K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "COIBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COIBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "gZIRPJt69sM", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COIBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "gZIRPJt69sM" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "gZIRPJt69sM" + ] + } + } + ] + } + }, + "trackingParams": "COIBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "COEBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "offlineVideoEndpoint": { + "videoId": "gZIRPJt69sM", + "onAddCommand": { + "clickTrackingParams": "COEBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "getDownloadActionCommand": { + "videoId": "gZIRPJt69sM", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "COEBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN0BENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtnWklSUEp0NjlzTQ%3D%3D", + "commands": [ + { + "clickTrackingParams": "CN0BENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "COABEI5iIhMIv-qO59yShQMV0R8GAB0bsgbe", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CN0BENwwIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + } + ], + "trackingParams": "CN0BENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "10 minutes, 6 seconds" + } + }, + "simpleText": "10:06" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CN8BEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "gZIRPJt69sM", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CN8BEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "gZIRPJt69sM" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CN8BEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CN4BEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CN4BEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "gZIRPJt69sM", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CN4BEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "gZIRPJt69sM" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "gZIRPJt69sM" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CN4BEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/gZIRPJt69sM/mqdefault_6s.webp?du=3000&sqp=CLGxjLAG&rs=AOn4CLAXFTKEnV9U60vvEju5pgMa-UezPg", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + "trackingParams": "CNwBEJmNBRgEIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "videoId": "SGwHRImfE4E", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/SGwHRImfE4E/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAX6ecM7rCaBFym8pyYPrWnYwbGuA", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/SGwHRImfE4E/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDXmFxtcPiAVEG7zmr1amWN3Td4Pg", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/SGwHRImfE4E/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD8ZePkxoFVNGAqUrRwEWX2DRxKFg", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/SGwHRImfE4E/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCJXFjDYNXUM_QSZce45bOadBgiAA", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "EEVblog 1600 - Rouute: Road Based Energy BUSTED" + } + ], + "accessibility": { + "accessibilityData": { + "label": "EEVblog 1600 - Rouute: Road Based Energy BUSTED by EEVblog 70,912 views 1 month ago 21 minutes" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Rouute: Road Based Energy! Harvest kinestic energy from cars using speed bumps. Will this decarbonise and save the planet? Do the numbers add up?\n\nhttps://www.rouute.com/road-based-energy\nDiscount..." + } + ] + }, + "publishedTimeText": { + "simpleText": "1 month ago" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "21 minutes, 57 seconds" + } + }, + "simpleText": "21:57" + }, + "viewCountText": { + "simpleText": "70,912 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNYBENwwIhMIv-qO59yShQMV0R8GAB0bsgbeWhhVQzJEakZFN1hmMTFVUlpxV0JpZ2NWT1GaAQMQ8jg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=SGwHRImfE4E", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "SGwHRImfE4E", + "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&msp=1&odepv=1&id=486c0744899f1381&ip=79.250.144.228&initcwndbps=1407500&mt=1711483046&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CNYBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "CNYBENwwIhMIv-qO59yShQMV0R8GAB0bsgbeQIGn_MzI6IG2SA==", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "70K views" + } + }, + "simpleText": "70K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNsBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNsBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "SGwHRImfE4E", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNsBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "SGwHRImfE4E" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "SGwHRImfE4E" + ] + } + } + ] + } + }, + "trackingParams": "CNsBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CNoBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "offlineVideoEndpoint": { + "videoId": "SGwHRImfE4E", + "onAddCommand": { + "clickTrackingParams": "CNoBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "getDownloadActionCommand": { + "videoId": "SGwHRImfE4E", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CNoBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNYBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtTR3dIUkltZkU0RQ%3D%3D", + "commands": [ + { + "clickTrackingParams": "CNYBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CNkBEI5iIhMIv-qO59yShQMV0R8GAB0bsgbe", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CNYBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + } + ], + "trackingParams": "CNYBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "21 minutes, 57 seconds" + } + }, + "simpleText": "21:57" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CNgBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "SGwHRImfE4E", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CNgBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "SGwHRImfE4E" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CNgBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CNcBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNcBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "SGwHRImfE4E", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNcBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "SGwHRImfE4E" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "SGwHRImfE4E" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CNcBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/SGwHRImfE4E/mqdefault_6s.webp?du=3000&sqp=CObBjLAG&rs=AOn4CLDGvTQnwevoISSDpvyOX23XTnOX-w", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + "trackingParams": "CNUBEJmNBRgFIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "videoId": "XYdmX8w8xwI", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/XYdmX8w8xwI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBrEHr6sXxajy0arfVzB9rlF1APVg", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/XYdmX8w8xwI/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDqz9bAHSQ72iytzM1ioyIesJo9rA", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/XYdmX8w8xwI/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCtG_u9CWg-VhHWEfF0yIWqHfmQTg", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/XYdmX8w8xwI/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB-n4BcMAgWcLsi3ssO65lR7PcESQ", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "EEVblog 1599 - TOP 5 Jellybean Bipolar Transistors" + } + ], + "accessibility": { + "accessibilityData": { + "label": "EEVblog 1599 - TOP 5 Jellybean Bipolar Transistors by EEVblog 45,396 views 1 month ago 22 minutes" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "The TOP 5 Jellybean Bipolar Junction Transistors (BJT)\n\n00:00 - What is a Jellybean Component?\n01:30 - Low Power BJT: 2N3904 / 3906, SMD Marking 1A\n06:49 - 2N2222\n08:52 - BC547 fanboys\n09:28..." + } + ] + }, + "publishedTimeText": { + "simpleText": "1 month ago" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "22 minutes, 50 seconds" + } + }, + "simpleText": "22:50" + }, + "viewCountText": { + "simpleText": "45,396 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CM8BENwwIhMIv-qO59yShQMV0R8GAB0bsgbeWhhVQzJEakZFN1hmMTFVUlpxV0JpZ2NWT1GaAQMQ8jg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=XYdmX8w8xwI", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "XYdmX8w8xwI", + "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=5d87665fcc3cc702&ip=79.250.144.228&initcwndbps=1407500&mt=1711483046&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CM8BENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "CM8BENwwIhMIv-qO59yShQMV0R8GAB0bsgbeQIKO8-H8y9nDXQ==", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "45K views" + } + }, + "simpleText": "45K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNQBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNQBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "XYdmX8w8xwI", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNQBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "XYdmX8w8xwI" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "XYdmX8w8xwI" + ] + } + } + ] + } + }, + "trackingParams": "CNQBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CNMBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "offlineVideoEndpoint": { + "videoId": "XYdmX8w8xwI", + "onAddCommand": { + "clickTrackingParams": "CNMBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "getDownloadActionCommand": { + "videoId": "XYdmX8w8xwI", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CNMBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM8BENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtYWWRtWDh3OHh3SQ%3D%3D", + "commands": [ + { + "clickTrackingParams": "CM8BENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CNIBEI5iIhMIv-qO59yShQMV0R8GAB0bsgbe", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CM8BENwwIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + } + ], + "trackingParams": "CM8BENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "22 minutes, 50 seconds" + } + }, + "simpleText": "22:50" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CNEBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "XYdmX8w8xwI", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CNEBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "XYdmX8w8xwI" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CNEBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CNABEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNABEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "XYdmX8w8xwI", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNABEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "XYdmX8w8xwI" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "XYdmX8w8xwI" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CNABEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/XYdmX8w8xwI/mqdefault_6s.webp?du=3000&sqp=CPC9jLAG&rs=AOn4CLDdQaa8jVUGcNPoH_i0u95vN76MCg", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + "trackingParams": "CM4BEJmNBRgGIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "videoId": "igQoD_I7Arw", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/igQoD_I7Arw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDh-14EGoep-9LhQ2xkHz4xkUD3jA", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/igQoD_I7Arw/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAfXU9U0rc1Q5j4f7Ct-jqx_RrckQ", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/igQoD_I7Arw/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC7K7-Rh0rVBuLguj0VaZzRZ2Tm4Q", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/igQoD_I7Arw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDEqV1YRK4RBIeVI_7QLzkNU0B14w", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "EEVblog 1598 - ANENG AC11 Socket Tester TEARDOWN + SCHEMATIC Reverse Eng" + } + ], + "accessibility": { + "accessibilityData": { + "label": "EEVblog 1598 - ANENG AC11 Socket Tester TEARDOWN + SCHEMATIC Reverse Eng by EEVblog 54,864 views 1 month ago 19 minutes" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Teardown and reverse engineering of the ANENG AC11 Smart Mains Socket Tester + DaveCAD schematic.\n\nForum: https://www.eevblog.com/forum/blog/eevblog-1598-aneng-ac11-socket-tester-teardown-schematic..." + } + ] + }, + "publishedTimeText": { + "simpleText": "1 month ago" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "19 minutes, 47 seconds" + } + }, + "simpleText": "19:47" + }, + "viewCountText": { + "simpleText": "54,864 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMgBENwwIhMIv-qO59yShQMV0R8GAB0bsgbeWhhVQzJEakZFN1hmMTFVUlpxV0JpZ2NWT1GaAQMQ8jg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=igQoD_I7Arw", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "igQoD_I7Arw", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---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=8a04280ff23b02bc&ip=79.250.144.228&initcwndbps=1407500&mt=1711483046&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CMgBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "CMgBENwwIhMIv-qO59yShQMV0R8GAB0bsgbeQLyF7JH_gYqCigE=", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "54K views" + } + }, + "simpleText": "54K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM0BEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CM0BEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "igQoD_I7Arw", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CM0BEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "igQoD_I7Arw" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "igQoD_I7Arw" + ] + } + } + ] + } + }, + "trackingParams": "CM0BEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CMwBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "offlineVideoEndpoint": { + "videoId": "igQoD_I7Arw", + "onAddCommand": { + "clickTrackingParams": "CMwBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "getDownloadActionCommand": { + "videoId": "igQoD_I7Arw", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CMwBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMgBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtpZ1FvRF9JN0Fydw%3D%3D", + "commands": [ + { + "clickTrackingParams": "CMgBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CMsBEI5iIhMIv-qO59yShQMV0R8GAB0bsgbe", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CMgBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + } + ], + "trackingParams": "CMgBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "19 minutes, 47 seconds" + } + }, + "simpleText": "19:47" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CMoBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "igQoD_I7Arw", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CMoBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "igQoD_I7Arw" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CMoBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CMkBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMkBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "igQoD_I7Arw", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMkBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "igQoD_I7Arw" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "igQoD_I7Arw" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CMkBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/igQoD_I7Arw/mqdefault_6s.webp?du=3000&sqp=CNixjLAG&rs=AOn4CLAk0aY6YwImlH_3duDsGJyarfvjSg", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + "trackingParams": "CMcBEJmNBRgHIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "videoId": "kpzNVsSmUu0", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/kpzNVsSmUu0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAPg-goL1Tq9bpbFq9Ni64B0n3o_A", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/kpzNVsSmUu0/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAw1Oq_Nej8ADOSEuf4kHx4RCkvIQ", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/kpzNVsSmUu0/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLByIc5t3TIxU-SnKQ18UCRVbRhFQg", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/kpzNVsSmUu0/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDBCboNAHxJphNAxlsIedScp9zQTQ", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "EEVblog 1597 - Zoyi ZT-703S $80 2CH 50MHz Oscilloscope/Multimeter Review" + } + ], + "accessibility": { + "accessibilityData": { + "label": "EEVblog 1597 - Zoyi ZT-703S $80 2CH 50MHz Oscilloscope/Multimeter Review by EEVblog 145,453 views 1 month ago 29 minutes" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Looking at the new $80 Zoyi/Zotech ZT703S Dual channel 50MHz 25,000 count 0.05% handheld oscilloscope/multimeter compared to the single channel 10MHz 10,000 count ZT702S\nhttps://s.click.aliexpress...." + } + ] + }, + "publishedTimeText": { + "simpleText": "1 month ago" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "29 minutes, 52 seconds" + } + }, + "simpleText": "29:52" + }, + "viewCountText": { + "simpleText": "145,453 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMEBENwwIhMIv-qO59yShQMV0R8GAB0bsgbeWhhVQzJEakZFN1hmMTFVUlpxV0JpZ2NWT1GaAQMQ8jg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=kpzNVsSmUu0", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "kpzNVsSmUu0", + "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=929ccd56c4a652ed&ip=79.250.144.228&initcwndbps=1366250&mt=1711483046&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CMEBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "CMEBENwwIhMIv-qO59yShQMV0R8GAB0bsgbeQO2lmaXsqrPOkgE=", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "145K views" + } + }, + "simpleText": "145K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMYBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMYBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "kpzNVsSmUu0", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMYBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "kpzNVsSmUu0" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "kpzNVsSmUu0" + ] + } + } + ] + } + }, + "trackingParams": "CMYBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CMUBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "offlineVideoEndpoint": { + "videoId": "kpzNVsSmUu0", + "onAddCommand": { + "clickTrackingParams": "CMUBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "getDownloadActionCommand": { + "videoId": "kpzNVsSmUu0", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CMUBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMEBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtrcHpOVnNTbVV1MA%3D%3D", + "commands": [ + { + "clickTrackingParams": "CMEBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CMQBEI5iIhMIv-qO59yShQMV0R8GAB0bsgbe", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CMEBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + } + ], + "trackingParams": "CMEBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "29 minutes, 52 seconds" + } + }, + "simpleText": "29:52" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CMMBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "kpzNVsSmUu0", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CMMBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "kpzNVsSmUu0" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CMMBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CMIBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMIBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "kpzNVsSmUu0", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMIBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "kpzNVsSmUu0" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "kpzNVsSmUu0" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CMIBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/kpzNVsSmUu0/mqdefault_6s.webp?du=3000&sqp=CJ20jLAG&rs=AOn4CLDNUCBhSwrlSUSJyWf4lXw-kgZ8cg", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + "trackingParams": "CMABEJmNBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "videoId": "AUsENwVjiDQ", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/AUsENwVjiDQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCfOMU68_jSX9nkY3L8dhS8Cv4kOQ", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/AUsENwVjiDQ/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCnvjM2BZHjgyIQJV1I1ZQ_RXk2Tg", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/AUsENwVjiDQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCNGhrJhe7PZltk0wDJDdV5IFRpdA", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/AUsENwVjiDQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDs6dRcR4txFRhzlFaSS1JSRPFM7g", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "EEVblog 1596 - NEW Digilent Analog Discovery Pro ADP2230 TEARDOWN" + } + ], + "accessibility": { + "accessibilityData": { + "label": "EEVblog 1596 - NEW Digilent Analog Discovery Pro ADP2230 TEARDOWN by EEVblog 37,347 views 1 month ago 20 minutes" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Teardown of the UNRELEASED Digilent Analog Discovery Pro ADP2230\nIt will be released on the 29th Feb 2024 for US$695\nFeaturing the AvE Widlarizer!\nhttps://digilent.com/reference/test-and-measuremen..." + } + ] + }, + "publishedTimeText": { + "simpleText": "1 month ago" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "20 minutes, 12 seconds" + } + }, + "simpleText": "20:12" + }, + "viewCountText": { + "simpleText": "37,347 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLoBENwwIhMIv-qO59yShQMV0R8GAB0bsgbeWhhVQzJEakZFN1hmMTFVUlpxV0JpZ2NWT1GaAQMQ8jg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=AUsENwVjiDQ", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "AUsENwVjiDQ", + "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=014b043705638834&ip=79.250.144.228&initcwndbps=1407500&mt=1711483046&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CLoBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "CLoBENwwIhMIv-qO59yShQMV0R8GAB0bsgbeQLSQjqvwhsGlAQ==", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "37K views" + } + }, + "simpleText": "37K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL8BEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CL8BEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "AUsENwVjiDQ", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CL8BEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "AUsENwVjiDQ" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "AUsENwVjiDQ" + ] + } + } + ] + } + }, + "trackingParams": "CL8BEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CL4BENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "offlineVideoEndpoint": { + "videoId": "AUsENwVjiDQ", + "onAddCommand": { + "clickTrackingParams": "CL4BENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "getDownloadActionCommand": { + "videoId": "AUsENwVjiDQ", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CL4BENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLoBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtBVXNFTndWamlEUQ%3D%3D", + "commands": [ + { + "clickTrackingParams": "CLoBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CL0BEI5iIhMIv-qO59yShQMV0R8GAB0bsgbe", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CLoBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + } + ], + "trackingParams": "CLoBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "20 minutes, 12 seconds" + } + }, + "simpleText": "20:12" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLwBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "AUsENwVjiDQ", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CLwBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "AUsENwVjiDQ" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CLwBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLsBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLsBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "AUsENwVjiDQ", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLsBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "AUsENwVjiDQ" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "AUsENwVjiDQ" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CLsBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/AUsENwVjiDQ/mqdefault_6s.webp?du=3000&sqp=CMCqjLAG&rs=AOn4CLBvTekoWKeFbS5DpsaZJ7Uv1U1Fog", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + "trackingParams": "CLkBEJmNBRgJIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "videoId": "nEmO8DcOap4", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/nEmO8DcOap4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCajo6A-qIwGioGsM1c0wzSBfiing", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/nEmO8DcOap4/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB3pojZkVS4aTcVgyTCmcTPSr1vOg", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/nEmO8DcOap4/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCxkPEaPujMTuU3fOw7H1I7rsZ_FQ", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/nEmO8DcOap4/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDGMmn8M8ZHRajlM0W-ezuuqsGPGg", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "EEVblog 1595 - 50 Year Chinese Nuclear Diamond Battery!" + } + ], + "accessibility": { + "accessibilityData": { + "label": "EEVblog 1595 - 50 Year Chinese Nuclear Diamond Battery! by EEVblog 145,315 views 1 month ago 17 minutes" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "A Chinese startup has developed a tiny 50 year life diamond nuclear battery that's going to change the world! Yeah, nah. Same old betavoltaic, same old limitations, and same old startup marketing..." + } + ] + }, + "publishedTimeText": { + "simpleText": "1 month ago" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "17 minutes, 31 seconds" + } + }, + "simpleText": "17:31" + }, + "viewCountText": { + "simpleText": "145,315 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLMBENwwIhMIv-qO59yShQMV0R8GAB0bsgbeWhhVQzJEakZFN1hmMTFVUlpxV0JpZ2NWT1GaAQMQ8jg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=nEmO8DcOap4", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "nEmO8DcOap4", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---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=9c498ef0370e6a9e&ip=79.250.144.228&initcwndbps=1407500&mt=1711483046&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CLMBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "CLMBENwwIhMIv-qO59yShQMV0R8GAB0bsgbeQJ7VubiD3uOknAE=", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "145K views" + } + }, + "simpleText": "145K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLgBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLgBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "nEmO8DcOap4", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLgBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "nEmO8DcOap4" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "nEmO8DcOap4" + ] + } + } + ] + } + }, + "trackingParams": "CLgBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CLcBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "offlineVideoEndpoint": { + "videoId": "nEmO8DcOap4", + "onAddCommand": { + "clickTrackingParams": "CLcBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "getDownloadActionCommand": { + "videoId": "nEmO8DcOap4", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CLcBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLMBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtuRW1POERjT2FwNA%3D%3D", + "commands": [ + { + "clickTrackingParams": "CLMBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CLYBEI5iIhMIv-qO59yShQMV0R8GAB0bsgbe", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CLMBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + } + ], + "trackingParams": "CLMBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "17 minutes, 31 seconds" + } + }, + "simpleText": "17:31" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLUBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "nEmO8DcOap4", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CLUBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "nEmO8DcOap4" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CLUBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CLQBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLQBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "nEmO8DcOap4", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLQBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "nEmO8DcOap4" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "nEmO8DcOap4" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CLQBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/nEmO8DcOap4/mqdefault_6s.webp?du=3000&sqp=CPS4jLAG&rs=AOn4CLAnfEs4ODBLk4oK_l0p5bVVqJZjPA", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + "trackingParams": "CLIBEJmNBRgKIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "videoId": "fIEH4-P2nyQ", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/fIEH4-P2nyQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCRMUDhvpmmRPm6XLU21VstvzTzRw", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/fIEH4-P2nyQ/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD8DHZzlUMtmxLLN-qA9Zd-WQtn-A", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/fIEH4-P2nyQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC5C05Q_taEr6dJ_7ZZUsNAlMnxOA", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/fIEH4-P2nyQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCfV1MQkPXlSfBEI76RXVHguwrqcQ", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "EEVblog 1594 - Inside a Quantum Computer! with Andrea Morello" + } + ], + "accessibility": { + "accessibilityData": { + "label": "EEVblog 1594 - Inside a Quantum Computer! with Andrea Morello by EEVblog 73,277 views 2 months ago 1 hour, 34 minutes" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "An in-depth look at the engineering inside a quantum computer, and also demonstrating the operational results live and how they are measured.\nWith Professor Andrea Morello who is the Scientia..." + } + ] + }, + "publishedTimeText": { + "simpleText": "2 months ago" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "1 hour, 34 minutes, 10 seconds" + } + }, + "simpleText": "1:34:10" + }, + "viewCountText": { + "simpleText": "73,277 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKwBENwwIhMIv-qO59yShQMV0R8GAB0bsgbeWhhVQzJEakZFN1hmMTFVUlpxV0JpZ2NWT1GaAQMQ8jg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=fIEH4-P2nyQ", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "fIEH4-P2nyQ", + "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=7c8107e3e3f69f24&ip=79.250.144.228&initcwndbps=1407500&mt=1711483046&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CKwBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "CKwBENwwIhMIv-qO59yShQMV0R8GAB0bsgbeQKS-2p--_MHAfA==", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "73K views" + } + }, + "simpleText": "73K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLEBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLEBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "fIEH4-P2nyQ", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLEBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "fIEH4-P2nyQ" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "fIEH4-P2nyQ" + ] + } + } + ] + } + }, + "trackingParams": "CLEBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CLABENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "offlineVideoEndpoint": { + "videoId": "fIEH4-P2nyQ", + "onAddCommand": { + "clickTrackingParams": "CLABENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "getDownloadActionCommand": { + "videoId": "fIEH4-P2nyQ", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CLABENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKwBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtmSUVINC1QMm55UQ%3D%3D", + "commands": [ + { + "clickTrackingParams": "CKwBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CK8BEI5iIhMIv-qO59yShQMV0R8GAB0bsgbe", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CKwBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + } + ], + "trackingParams": "CKwBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "1 hour, 34 minutes, 10 seconds" + } + }, + "simpleText": "1:34:10" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CK4BEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "fIEH4-P2nyQ", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CK4BEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "fIEH4-P2nyQ" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CK4BEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CK0BEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CK0BEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "fIEH4-P2nyQ", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CK0BEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "fIEH4-P2nyQ" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "fIEH4-P2nyQ" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CK0BEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/fIEH4-P2nyQ/mqdefault_6s.webp?du=3000&sqp=CPzIjLAG&rs=AOn4CLBsQ9tqmOZTiDP5fXX78pYUi6qu3A", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + "trackingParams": "CKsBEJmNBRgLIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "videoId": "cO45J-8qTZ4", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/cO45J-8qTZ4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA4xdKXs7GYV215wv6CHdGcgCSKkg", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/cO45J-8qTZ4/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBIVwZLpawWUVY9fJPfKUZb109HRQ", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/cO45J-8qTZ4/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD49Mep9rt3px3yoVjxbgBwn55AVA", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/cO45J-8qTZ4/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCMf82skBbiBKUlk_rjtz1w3Rtuug", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "EEVblog 1593 - 16kV ESD Tester REPAIR - Part 2" + } + ], + "accessibility": { + "accessibilityData": { + "label": "EEVblog 1593 - 16kV ESD Tester REPAIR - Part 2 by EEVblog 24,722 views 2 months ago 27 minutes" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Repairing the Haefely Trench PESD-1600 ESD Tester, plus some testing and discussion of the IEC 61000-4-2 standard.\nPart 1 teardown: https://www.youtube.com/watch?v=-xtZvSG4N9I\nRotary encoder..." + } + ] + }, + "publishedTimeText": { + "simpleText": "2 months ago" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "27 minutes, 16 seconds" + } + }, + "simpleText": "27:16" + }, + "viewCountText": { + "simpleText": "24,722 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKUBENwwIhMIv-qO59yShQMV0R8GAB0bsgbeWhhVQzJEakZFN1hmMTFVUlpxV0JpZ2NWT1GaAQMQ8jg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=cO45J-8qTZ4", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "cO45J-8qTZ4", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---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=70ee3927ef2a4d9e&ip=79.250.144.228&initcwndbps=1407500&mt=1711483046&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CKUBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "CKUBENwwIhMIv-qO59yShQMV0R8GAB0bsgbeQJ6bqfn-pI73cA==", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "24K views" + } + }, + "simpleText": "24K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKoBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKoBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "cO45J-8qTZ4", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKoBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "cO45J-8qTZ4" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "cO45J-8qTZ4" + ] + } + } + ] + } + }, + "trackingParams": "CKoBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CKkBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "offlineVideoEndpoint": { + "videoId": "cO45J-8qTZ4", + "onAddCommand": { + "clickTrackingParams": "CKkBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "getDownloadActionCommand": { + "videoId": "cO45J-8qTZ4", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CKkBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKUBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtjTzQ1Si04cVRaNA%3D%3D", + "commands": [ + { + "clickTrackingParams": "CKUBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CKgBEI5iIhMIv-qO59yShQMV0R8GAB0bsgbe", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CKUBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + } + ], + "trackingParams": "CKUBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "27 minutes, 16 seconds" + } + }, + "simpleText": "27:16" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CKcBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "cO45J-8qTZ4", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CKcBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "cO45J-8qTZ4" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CKcBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CKYBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKYBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "cO45J-8qTZ4", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKYBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "cO45J-8qTZ4" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "cO45J-8qTZ4" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CKYBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/cO45J-8qTZ4/mqdefault_6s.webp?du=3000&sqp=CKyvjLAG&rs=AOn4CLArEIEvqH6i_K71xjnD1FsERCw7fg", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + "trackingParams": "CKQBEJmNBRgMIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "videoId": "AFz0qmkq4LM", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/AFz0qmkq4LM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA7MqMPizOmrSHoXDsieAhELhYHCg", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/AFz0qmkq4LM/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBvVNDGakUPgksdzQoVBtnuFoEhOw", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/AFz0qmkq4LM/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBBBqAmgDGBFIKlKfeeIhlSQ2q78Q", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/AFz0qmkq4LM/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDzn6AUQPf5LEwXE-iFLWsDikereg", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "EEVblog 1592 - Fluke 287 Multimeter Teardown" + } + ], + "accessibility": { + "accessibilityData": { + "label": "EEVblog 1592 - Fluke 287 Multimeter Teardown by EEVblog 51,408 views 2 months ago 17 minutes" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Fluke 287 Multmeter Teardown.\nTesting video: https://www.youtube.com/watch?v=FgkD8K0Ssdc\nForum: https://www.eevblog.com/forum/blog/eevblog-1592-fluke-287-multimeter-teardown/\nTeardown photos:..." + } + ] + }, + "publishedTimeText": { + "simpleText": "2 months ago" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "17 minutes, 2 seconds" + } + }, + "simpleText": "17:02" + }, + "viewCountText": { + "simpleText": "51,408 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJ4BENwwIhMIv-qO59yShQMV0R8GAB0bsgbeWhhVQzJEakZFN1hmMTFVUlpxV0JpZ2NWT1GaAQMQ8jg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=AFz0qmkq4LM", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "AFz0qmkq4LM", + "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=005cf4aa692ae0b3&ip=79.250.144.228&initcwndbps=1366250&mt=1711483046&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CJ4BENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "CJ4BENwwIhMIv-qO59yShQMV0R8GAB0bsgbeQLPBq8mmlb0u", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "51K views" + } + }, + "simpleText": "51K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKMBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKMBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "AFz0qmkq4LM", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKMBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "AFz0qmkq4LM" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "AFz0qmkq4LM" + ] + } + } + ] + } + }, + "trackingParams": "CKMBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CKIBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "offlineVideoEndpoint": { + "videoId": "AFz0qmkq4LM", + "onAddCommand": { + "clickTrackingParams": "CKIBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "getDownloadActionCommand": { + "videoId": "AFz0qmkq4LM", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CKIBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ4BENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtBRnowcW1rcTRMTQ%3D%3D", + "commands": [ + { + "clickTrackingParams": "CJ4BENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CKEBEI5iIhMIv-qO59yShQMV0R8GAB0bsgbe", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CJ4BENwwIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + } + ], + "trackingParams": "CJ4BENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "17 minutes, 2 seconds" + } + }, + "simpleText": "17:02" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CKABEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "AFz0qmkq4LM", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CKABEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "AFz0qmkq4LM" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CKABEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJ8BEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJ8BEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "AFz0qmkq4LM", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJ8BEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "AFz0qmkq4LM" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "AFz0qmkq4LM" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CJ8BEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/AFz0qmkq4LM/mqdefault_6s.webp?du=3000&sqp=COPSjLAG&rs=AOn4CLAFjWUTmjS8kvgzLmhTE1ARLzJ8Lw", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + "trackingParams": "CJ0BEJmNBRgNIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "videoId": "bnQCKa6GNWo", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/bnQCKa6GNWo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA71_sOs1fDAGBk2WJtxxOi6R_4KA", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/bnQCKa6GNWo/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBM0aU_1BnOHPMgdOl0hCrcTSDq1Q", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/bnQCKa6GNWo/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCdBRH0B7FOEPeVDjAoLirUoqD6TA", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/bnQCKa6GNWo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD2hbFGTjn9QOr3EVE-k0AAdLLcng", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "EEVblog 1591 - MORE Colas Wattway Solar Cycleways in the Netherlands!" + } + ], + "accessibility": { + "accessibilityData": { + "label": "EEVblog 1591 - MORE Colas Wattway Solar Cycleways in the Netherlands! by EEVblog 48,969 views 2 months ago 22 minutes" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Colas Wattway is back with the two 1000sqm solar cycleway installations in the Netherlands!\nhttps://electrek.co/2023/12/18/dutch-riding-bikes-solar-cycle-paths/\n\nJust 4 months ago! https://www.yout..." + } + ] + }, + "publishedTimeText": { + "simpleText": "2 months ago" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "22 minutes, 23 seconds" + } + }, + "simpleText": "22:23" + }, + "viewCountText": { + "simpleText": "48,969 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJcBENwwIhMIv-qO59yShQMV0R8GAB0bsgbeWhhVQzJEakZFN1hmMTFVUlpxV0JpZ2NWT1GaAQMQ8jg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=bnQCKa6GNWo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "bnQCKa6GNWo", + "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=6e740229ae86356a&ip=79.250.144.228&initcwndbps=1366250&mt=1711483046&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CJcBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "CJcBENwwIhMIv-qO59yShQMV0R8GAB0bsgbeQOrqmPSaxYC6bg==", + "showActionMenu": false, + "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": "CJwBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJwBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "bnQCKa6GNWo", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJwBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "bnQCKa6GNWo" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "bnQCKa6GNWo" + ] + } + } + ] + } + }, + "trackingParams": "CJwBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CJsBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "offlineVideoEndpoint": { + "videoId": "bnQCKa6GNWo", + "onAddCommand": { + "clickTrackingParams": "CJsBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "getDownloadActionCommand": { + "videoId": "bnQCKa6GNWo", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CJsBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJcBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtiblFDS2E2R05Xbw%3D%3D", + "commands": [ + { + "clickTrackingParams": "CJcBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CJoBEI5iIhMIv-qO59yShQMV0R8GAB0bsgbe", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CJcBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + } + ], + "trackingParams": "CJcBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "22 minutes, 23 seconds" + } + }, + "simpleText": "22:23" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJkBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "bnQCKa6GNWo", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CJkBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "bnQCKa6GNWo" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CJkBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJgBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJgBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "bnQCKa6GNWo", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJgBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "bnQCKa6GNWo" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "bnQCKa6GNWo" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CJgBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/bnQCKa6GNWo/mqdefault_6s.webp?du=3000&sqp=CLLLjLAG&rs=AOn4CLCMgCJhKqZ_peoX_BWDflzbBeOd6g", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + "trackingParams": "CJYBEJmNBRgOIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "videoId": "-g-MD69V0CU", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/-g-MD69V0CU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDjLnRunCSuUYAmnxKgbuSTJHshrA", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/-g-MD69V0CU/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCnpcRQQJ6UdKU5pBPE5DoM1a29Ug", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/-g-MD69V0CU/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCBsP1C14m96X9-F53bOjynIH9a3A", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/-g-MD69V0CU/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB3TuJnDbUdOSUr-oJdRFkPKrUPSw", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "EEVblog 1590 - Cheap $33 Boombox Teardown" + } + ], + "accessibility": { + "accessibilityData": { + "label": "EEVblog 1590 - Cheap $33 Boombox Teardown by EEVblog 49,405 views 2 months ago 19 minutes" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Is a modern $33 boombox from Kmart any good?\n\nTHE 80's boombox teardown: https://www.youtube.com/watch?v=hULNdrsh6uw\nBoombox REPAIR: https://www.youtube.com/watch?v=8ToVCAhLg8A\n\nForum: https://www...." + } + ] + }, + "publishedTimeText": { + "simpleText": "2 months ago" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "19 minutes, 51 seconds" + } + }, + "simpleText": "19:51" + }, + "viewCountText": { + "simpleText": "49,405 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJABENwwIhMIv-qO59yShQMV0R8GAB0bsgbeWhhVQzJEakZFN1hmMTFVUlpxV0JpZ2NWT1GaAQMQ8jg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=-g-MD69V0CU", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "-g-MD69V0CU", + "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=fa0f8c0faf55d025&ip=79.250.144.228&initcwndbps=1366250&mt=1711483046&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CJABENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "CJABENwwIhMIv-qO59yShQMV0R8GAB0bsgbeQKWg1_r6geOH-gE=", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "49K views" + } + }, + "simpleText": "49K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJUBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJUBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "-g-MD69V0CU", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJUBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "-g-MD69V0CU" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "-g-MD69V0CU" + ] + } + } + ] + } + }, + "trackingParams": "CJUBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CJQBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "offlineVideoEndpoint": { + "videoId": "-g-MD69V0CU", + "onAddCommand": { + "clickTrackingParams": "CJQBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "getDownloadActionCommand": { + "videoId": "-g-MD69V0CU", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CJQBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJABENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgstZy1NRDY5VjBDVQ%3D%3D", + "commands": [ + { + "clickTrackingParams": "CJABENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CJMBEI5iIhMIv-qO59yShQMV0R8GAB0bsgbe", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CJABENwwIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + } + ], + "trackingParams": "CJABENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "19 minutes, 51 seconds" + } + }, + "simpleText": "19:51" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJIBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "-g-MD69V0CU", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CJIBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "-g-MD69V0CU" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CJIBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CJEBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJEBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "-g-MD69V0CU", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJEBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "-g-MD69V0CU" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "-g-MD69V0CU" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CJEBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/-g-MD69V0CU/mqdefault_6s.webp?du=3000&sqp=CKPQjLAG&rs=AOn4CLDkQ72c4u_sBzSTRPYa6DCHS5gC4w", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + "trackingParams": "CI8BEJmNBRgPIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "videoId": "KKMrT2HeRsQ", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/KKMrT2HeRsQ/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGIgZShbMA8=&rs=AOn4CLBigIAgMdNzHkMH9gB4lgiwfXy-Yg", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/KKMrT2HeRsQ/hqdefault.jpg?sqp=-oaymwE1CMQBEG5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGIgZShbMA8=&rs=AOn4CLChNMPDTpMIcZK42mT4mlvYA26DNA", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/KKMrT2HeRsQ/hqdefault.jpg?sqp=-oaymwE2CPYBEIoBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgB_gmAAtAFigIMCAAQARhiIGUoWzAP&rs=AOn4CLCM5qQo9J2YdtrGVcz3WKws4i4KHw", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/KKMrT2HeRsQ/hqdefault.jpg?sqp=-oaymwE2CNACELwBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgB_gmAAtAFigIMCAAQARhiIGUoWzAP&rs=AOn4CLCIInd_b6uxUyrLvjr8SLIn1aBVlw", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "EEVblog 1589 - CCD Scanner Array" + } + ], + "accessibility": { + "accessibilityData": { + "label": "EEVblog 1589 - CCD Scanner Array by EEVblog 24,160 views 2 months ago 14 minutes, 32 seconds" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "A closer look at the scanner array head from the dumpster FAX machine teardown.\n\n00:00 - Linear Scanner Array\n04:40 - CCD sensor grouping\n08:24 - The optical zebra strip\n11:30 - Under the x400..." + } + ] + }, + "publishedTimeText": { + "simpleText": "2 months ago" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "14 minutes, 32 seconds" + } + }, + "simpleText": "14:32" + }, + "viewCountText": { + "simpleText": "24,160 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIkBENwwIhMIv-qO59yShQMV0R8GAB0bsgbeWhhVQzJEakZFN1hmMTFVUlpxV0JpZ2NWT1GaAQMQ8jg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=KKMrT2HeRsQ", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "KKMrT2HeRsQ", + "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=28a32b4f61de46c4&ip=79.250.144.228&initcwndbps=1407500&mt=1711483046&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CIkBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "CIkBENwwIhMIv-qO59yShQMV0R8GAB0bsgbeQMSN-Y726crRKA==", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "24K views" + } + }, + "simpleText": "24K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI4BEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CI4BEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "KKMrT2HeRsQ", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CI4BEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "KKMrT2HeRsQ" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "KKMrT2HeRsQ" + ] + } + } + ] + } + }, + "trackingParams": "CI4BEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CI0BENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "offlineVideoEndpoint": { + "videoId": "KKMrT2HeRsQ", + "onAddCommand": { + "clickTrackingParams": "CI0BENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "getDownloadActionCommand": { + "videoId": "KKMrT2HeRsQ", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CI0BENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIkBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtLS01yVDJIZVJzUQ%3D%3D", + "commands": [ + { + "clickTrackingParams": "CIkBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CIwBEI5iIhMIv-qO59yShQMV0R8GAB0bsgbe", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CIkBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + } + ], + "trackingParams": "CIkBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "14 minutes, 32 seconds" + } + }, + "simpleText": "14:32" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CIsBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "KKMrT2HeRsQ", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CIsBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "KKMrT2HeRsQ" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CIsBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CIoBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIoBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "KKMrT2HeRsQ", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIoBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "KKMrT2HeRsQ" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "KKMrT2HeRsQ" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CIoBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/KKMrT2HeRsQ/mqdefault_6s.webp?du=3000&sqp=CPSXjLAG&rs=AOn4CLAi549dq3IxKiObInOWOHXykBlSlA", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + "trackingParams": "CIgBEJmNBRgQIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "videoId": "W_W_BDcebao", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/W_W_BDcebao/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAgwPWx85cGEbBtxXot2PtP7Z12bQ", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/W_W_BDcebao/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAQz7mTB-mLsP9kZy6A5tEIzc-lJg", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/W_W_BDcebao/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA16LtERNyYUhPNardaLA0xGa53Kg", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/W_W_BDcebao/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAptKADGms1JjbIo-Nk_uwsYxFLUQ", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "EEVblog 1588 - Virgin Hyperloop One Goes BUST!" + } + ], + "accessibility": { + "accessibilityData": { + "label": "EEVblog 1588 - Virgin Hyperloop One Goes BUST! by EEVblog 56,586 views 3 months ago 29 minutes" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "The Elon Musk vision of Hyperloop has come-a-gutsa. Vigin Hyperloop One has gone out of business. Who could have predicted it?\nAnd who's left standing in the Hyperloop world?\nPart 2: TUM Hyperloop:..." + } + ] + }, + "publishedTimeText": { + "simpleText": "3 months ago" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "29 minutes, 43 seconds" + } + }, + "simpleText": "29:43" + }, + "viewCountText": { + "simpleText": "56,586 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIIBENwwIhMIv-qO59yShQMV0R8GAB0bsgbeWhhVQzJEakZFN1hmMTFVUlpxV0JpZ2NWT1GaAQMQ8jg=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=W_W_BDcebao", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "W_W_BDcebao", + "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=5bf5bf04371e6daa&ip=79.250.144.228&initcwndbps=1366250&mt=1711483046&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CIIBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "CIIBENwwIhMIv-qO59yShQMV0R8GAB0bsgbeQKrb-bjD4O_6Ww==", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "56K views" + } + }, + "simpleText": "56K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIcBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIcBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "W_W_BDcebao", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIcBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "W_W_BDcebao" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "W_W_BDcebao" + ] + } + } + ] + } + }, + "trackingParams": "CIcBEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CIYBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "offlineVideoEndpoint": { + "videoId": "W_W_BDcebao", + "onAddCommand": { + "clickTrackingParams": "CIYBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe", + "getDownloadActionCommand": { + "videoId": "W_W_BDcebao", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CIYBENGqBRgIIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIIBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtXX1dfQkRjZWJhbw%3D%3D", + "commands": [ + { + "clickTrackingParams": "CIIBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CIUBEI5iIhMIv-qO59yShQMV0R8GAB0bsgbe", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CIIBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + } + ], + "trackingParams": "CIIBENwwIhMIv-qO59yShQMV0R8GAB0bsgbe", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "29 minutes, 43 seconds" + } + }, + "simpleText": "29:43" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CIQBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "W_W_BDcebao", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CIQBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "W_W_BDcebao" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CIQBEPnnAxgCIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CIMBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIMBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "W_W_BDcebao", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIMBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "W_W_BDcebao" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "W_W_BDcebao" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CIMBEMfsBBgDIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/W_W_BDcebao/mqdefault_6s.webp?du=3000&sqp=CJrLjLAG&rs=AOn4CLCYJeswzXIRxFuxLzYMOqZCqG932w", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + "trackingParams": "CIEBEJmNBRgRIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "videoId": "FknxWtZkuUE", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/FknxWtZkuUE/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgXChUMA8=&rs=AOn4CLBGke3u13MxDYsi4cLbME7jckVKuw", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/FknxWtZkuUE/hqdefault.jpg?sqp=-oaymwE1CMQBEG5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgXChUMA8=&rs=AOn4CLBik13O4ddFMDmmOFqI0E7GAHaxwA", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/FknxWtZkuUE/hqdefault.jpg?sqp=-oaymwE2CPYBEIoBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgB_gmAAtAFigIMCAAQARhlIFwoVDAP&rs=AOn4CLAhqflsQgDfCpLOuVx76xOnZMJWrw", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/FknxWtZkuUE/hqdefault.jpg?sqp=-oaymwE2CNACELwBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgB_gmAAtAFigIMCAAQARhlIFwoVDAP&rs=AOn4CLAZi82kenLuT10YrEc4jR2sHigcPw", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "EEVblog 1587 - Dumpster FAX Teardown" + } + ], + "accessibility": { + "accessibilityData": { + "label": "EEVblog 1587 - Dumpster FAX Teardown by EEVblog 21,250 views 3 months ago 19 minutes" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Teardown of a Brother FAX machine found in the dumpster, just because.\nForum: https://www.eevblog.com/forum/blog/eevblog-1587-dumpster-fax-teardown/\n\n\nIf you find my videos useful you may consider..." + } + ] + }, + "publishedTimeText": { + "simpleText": "3 months ago" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "19 minutes, 45 seconds" + } + }, + "simpleText": "19:45" + }, + "viewCountText": { + "simpleText": "21,250 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CHsQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt5aGFVDMkRqRkU3WGYxMVVSWnFXQmlnY1ZPUZoBAxDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=FknxWtZkuUE", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "FknxWtZkuUE", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jelnes.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odepv=1&id=1649f15ad664b941&ip=79.250.144.228&initcwndbps=1407500&mt=1711483046&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CHsQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "CHsQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt5AwfKSs62r_KQW", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "21K views" + } + }, + "simpleText": "21K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIABEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIABEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "FknxWtZkuUE", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIABEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "FknxWtZkuUE" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "FknxWtZkuUE" + ] + } + } + ] + } + }, + "trackingParams": "CIABEP6YBBgHIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CH8Q0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "offlineVideoEndpoint": { + "videoId": "FknxWtZkuUE", + "onAddCommand": { + "clickTrackingParams": "CH8Q0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "getDownloadActionCommand": { + "videoId": "FknxWtZkuUE", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CH8Q0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CHsQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtGa254V3Raa3VVRQ%3D%3D", + "commands": [ + { + "clickTrackingParams": "CHsQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CH4QjmIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CHsQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + } + ], + "trackingParams": "CHsQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "19 minutes, 45 seconds" + } + }, + "simpleText": "19:45" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CH0Q-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "FknxWtZkuUE", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CH0Q-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "FknxWtZkuUE" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CH0Q-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CHwQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CHwQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "FknxWtZkuUE", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CHwQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "FknxWtZkuUE" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "FknxWtZkuUE" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CHwQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/FknxWtZkuUE/mqdefault_6s.webp?du=3000&sqp=CIXEjLAG&rs=AOn4CLCl4uYSkpev6fX8rgbvK4xaEhCiZA", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + "trackingParams": "CHoQmY0FGBIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "videoId": "AuFSMpFzAnw", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/AuFSMpFzAnw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCrpv-fSn1pwpshPv-QWXV6jeFCiw", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/AuFSMpFzAnw/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCUMFdAy0xuIpgEQOsBy5UqKyATPw", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/AuFSMpFzAnw/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAxNwGVeljlwit2jXNRLuKw4VDXhg", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/AuFSMpFzAnw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAEKVLY8uPv8V-V9xzdtX6ib8mhZw", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "eevBLAB 117 - The Youtube Bot Comment Problem" + } + ], + "accessibility": { + "accessibilityData": { + "label": "eevBLAB 117 - The Youtube Bot Comment Problem by EEVblog 23,126 views 3 months ago 4 minutes, 59 seconds" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "The huge Youtube bot comment spam problem has to end.\nForum: https://www.eevblog.com/forum/blog/eevblab-117-the-youtube-porn-bot-comment-problem/\n\nIf you find my videos useful you may consider..." + } + ] + }, + "publishedTimeText": { + "simpleText": "3 months ago" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 59 seconds" + } + }, + "simpleText": "4:59" + }, + "viewCountText": { + "simpleText": "23,126 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CHQQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt5aGFVDMkRqRkU3WGYxMVVSWnFXQmlnY1ZPUZoBAxDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=AuFSMpFzAnw", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "AuFSMpFzAnw", + "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=02e152329173027c&ip=79.250.144.228&initcwndbps=1366250&mt=1711483046&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CHQQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "CHQQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt5A_ITMi6nG1PAC", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "23K views" + } + }, + "simpleText": "23K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CHkQ_pgEGAYiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CHkQ_pgEGAYiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "AuFSMpFzAnw", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CHkQ_pgEGAYiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "AuFSMpFzAnw" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "AuFSMpFzAnw" + ] + } + } + ] + } + }, + "trackingParams": "CHkQ_pgEGAYiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CHgQ0aoFGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "offlineVideoEndpoint": { + "videoId": "AuFSMpFzAnw", + "onAddCommand": { + "clickTrackingParams": "CHgQ0aoFGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "getDownloadActionCommand": { + "videoId": "AuFSMpFzAnw", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CHgQ0aoFGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CHQQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtBdUZTTXBGekFudw%3D%3D", + "commands": [ + { + "clickTrackingParams": "CHQQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CHcQjmIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CHQQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + } + ], + "trackingParams": "CHQQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 59 seconds" + } + }, + "simpleText": "4:59" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CHYQ-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "AuFSMpFzAnw", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CHYQ-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "AuFSMpFzAnw" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CHYQ-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CHUQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CHUQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "AuFSMpFzAnw", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CHUQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "AuFSMpFzAnw" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "AuFSMpFzAnw" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CHUQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ] + } + }, + "trackingParams": "CHMQmY0FGBMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "videoId": "WIEb1Zd1NdI", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/WIEb1Zd1NdI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD5ndIPZJndQkkrCcT_SbrBWdBXaA", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/WIEb1Zd1NdI/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLArJNxp3V0M_9kH7bCTUJtiB-oNJQ", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/WIEb1Zd1NdI/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA6EJKuGz-aJASBI9RzKNGBuKhmDg", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/WIEb1Zd1NdI/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD1Atq4K6famlQ0WMrT6SPcQdSUmg", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "EEVblog 1586 - Stranger Things Decade Resistor Box + Repair" + } + ], + "accessibility": { + "accessibilityData": { + "label": "EEVblog 1586 - Stranger Things Decade Resistor Box + Repair by EEVblog 42,940 views 3 months ago 16 minutes" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "A $12 6 decade resistor box, is it any good?\nAnd it's not every day you have to repair a brand new product.\nhttps://s.click.aliexpress.com/e/_Ddfe4PL\nhttps://s.click.aliexpress.com/e/_DnK2irb..." + } + ] + }, + "publishedTimeText": { + "simpleText": "3 months ago" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "16 minutes, 8 seconds" + } + }, + "simpleText": "16:08" + }, + "viewCountText": { + "simpleText": "42,940 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CG0Q3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt5aGFVDMkRqRkU3WGYxMVVSWnFXQmlnY1ZPUZoBAxDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=WIEb1Zd1NdI", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "WIEb1Zd1NdI", + "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=58811bd5977535d2&ip=79.250.144.228&initcwndbps=1407500&mt=1711483046&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CG0Q3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "CG0Q3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt5A0uvUu9n6xsBY", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "42K views" + } + }, + "simpleText": "42K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CHIQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CHIQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "WIEb1Zd1NdI", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CHIQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "WIEb1Zd1NdI" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "WIEb1Zd1NdI" + ] + } + } + ] + } + }, + "trackingParams": "CHIQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CHEQ0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "offlineVideoEndpoint": { + "videoId": "WIEb1Zd1NdI", + "onAddCommand": { + "clickTrackingParams": "CHEQ0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "getDownloadActionCommand": { + "videoId": "WIEb1Zd1NdI", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CHEQ0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CG0Q3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtXSUViMVpkMU5kSQ%3D%3D", + "commands": [ + { + "clickTrackingParams": "CG0Q3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CHAQjmIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CG0Q3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + } + ], + "trackingParams": "CG0Q3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "16 minutes, 8 seconds" + } + }, + "simpleText": "16:08" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CG8Q-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "WIEb1Zd1NdI", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CG8Q-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "WIEb1Zd1NdI" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CG8Q-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CG4Qx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CG4Qx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "WIEb1Zd1NdI", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CG4Qx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "WIEb1Zd1NdI" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "WIEb1Zd1NdI" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CG4Qx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/WIEb1Zd1NdI/mqdefault_6s.webp?du=3000&sqp=COzAjLAG&rs=AOn4CLB1PVRwr1GZF8yuM_QPOjd_eezIWA", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + "trackingParams": "CGwQmY0FGBQiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "videoId": "PhGPacEg3zw", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/PhGPacEg3zw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBluu7atTRGHN9p5mhKoCjtJcQCQA", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/PhGPacEg3zw/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBVyhkIIYxEY8tWrvwUDP_uPW_0GA", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/PhGPacEg3zw/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC0tvz4rEY0usPCIsx6tiCQh81eAw", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/PhGPacEg3zw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLASwFdk5zIuZ2cOecCtcqkNxCBPnw", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "EEVblog 1585 - SCAM! Portable Kinetic Molecular Heater BUSTED" + } + ], + "accessibility": { + "accessibilityData": { + "label": "EEVblog 1585 - SCAM! Portable Kinetic Molecular Heater BUSTED by EEVblog 48,996 views 3 months ago 19 minutes" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "The Portable Kinetic Molecular Heater is an obvious SCAM.\nWe shouldn't have to look at why, but let's do it anyway.\n\nForum: https://www.eevblog.com/forum/blog/eevblog-1585-scam!-portable-kinetic-mo..." + } + ] + }, + "publishedTimeText": { + "simpleText": "3 months ago" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "19 minutes, 26 seconds" + } + }, + "simpleText": "19:26" + }, + "viewCountText": { + "simpleText": "48,996 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CGYQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt5aGFVDMkRqRkU3WGYxMVVSWnFXQmlnY1ZPUZoBAxDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=PhGPacEg3zw", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "PhGPacEg3zw", + "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=3e118f69c120df3c&ip=79.250.144.228&initcwndbps=1366250&mt=1711483046&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CGYQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "CGYQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt5AvL6DiZzt44g-", + "showActionMenu": false, + "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": "CGsQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CGsQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "PhGPacEg3zw", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CGsQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "PhGPacEg3zw" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "PhGPacEg3zw" + ] + } + } + ] + } + }, + "trackingParams": "CGsQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CGoQ0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "offlineVideoEndpoint": { + "videoId": "PhGPacEg3zw", + "onAddCommand": { + "clickTrackingParams": "CGoQ0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "getDownloadActionCommand": { + "videoId": "PhGPacEg3zw", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CGoQ0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CGYQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtQaEdQYWNFZzN6dw%3D%3D", + "commands": [ + { + "clickTrackingParams": "CGYQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CGkQjmIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CGYQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + } + ], + "trackingParams": "CGYQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "19 minutes, 26 seconds" + } + }, + "simpleText": "19:26" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CGgQ-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "PhGPacEg3zw", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CGgQ-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "PhGPacEg3zw" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CGgQ-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CGcQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CGcQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "PhGPacEg3zw", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CGcQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "PhGPacEg3zw" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "PhGPacEg3zw" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CGcQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/PhGPacEg3zw/mqdefault_6s.webp?du=3000&sqp=CNTRjLAG&rs=AOn4CLCawg0Iwa0_xqEKCT0BbdLamG9OCw", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + "trackingParams": "CGUQmY0FGBUiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "videoId": "sisD61ohzK0", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/sisD61ohzK0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAX1Q1G-ek-lBZwvIlTXGO6UYPmEA", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/sisD61ohzK0/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDK5abYrCa9sCDFhbSbc5l5D9VFgg", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/sisD61ohzK0/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDCdVqoCSmOa_ymbbFmwJscfA4A7Q", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/sisD61ohzK0/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBEnUHLoe1Y_oaS4XHBiF_OYBG2yw", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "EEVblog 1584 - Wireless Freakin' EV Charging Roads! A $250M Boondoggle" + } + ], + "accessibility": { + "accessibilityData": { + "label": "EEVblog 1584 - Wireless Freakin' EV Charging Roads! A $250M Boondoggle by EEVblog 49,899 views 3 months ago 29 minutes" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "The US Department of Transport have authorised a $250M grant program to fund Wireless EV charging roads. A look at the pilot program in Detroit Michigan with the startup company Electreon:..." + } + ] + }, + "publishedTimeText": { + "simpleText": "3 months ago" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "29 minutes, 45 seconds" + } + }, + "simpleText": "29:45" + }, + "viewCountText": { + "simpleText": "49,899 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CF8Q3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt5aGFVDMkRqRkU3WGYxMVVSWnFXQmlnY1ZPUZoBAxDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=sisD61ohzK0", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "sisD61ohzK0", + "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=b22b03eb5a21ccad&ip=79.250.144.228&initcwndbps=993750&mt=1711483046&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CF8Q3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "CF8Q3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt5ArZmH0bX9wJWyAQ==", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "49K views" + } + }, + "simpleText": "49K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CGQQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CGQQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "sisD61ohzK0", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CGQQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "sisD61ohzK0" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "sisD61ohzK0" + ] + } + } + ] + } + }, + "trackingParams": "CGQQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CGMQ0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "offlineVideoEndpoint": { + "videoId": "sisD61ohzK0", + "onAddCommand": { + "clickTrackingParams": "CGMQ0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "getDownloadActionCommand": { + "videoId": "sisD61ohzK0", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CGMQ0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CF8Q3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtzaXNENjFvaHpLMA%3D%3D", + "commands": [ + { + "clickTrackingParams": "CF8Q3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CGIQjmIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CF8Q3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + } + ], + "trackingParams": "CF8Q3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "29 minutes, 45 seconds" + } + }, + "simpleText": "29:45" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CGEQ-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "sisD61ohzK0", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CGEQ-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "sisD61ohzK0" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CGEQ-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CGAQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CGAQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "sisD61ohzK0", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CGAQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "sisD61ohzK0" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "sisD61ohzK0" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CGAQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/sisD61ohzK0/mqdefault_6s.webp?du=3000&sqp=CKTTjLAG&rs=AOn4CLCeaJdoU82LcP_lKeVqakZ75XSwcA", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + "trackingParams": "CF4QmY0FGBYiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "videoId": "1YK_GlnUlI8", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/1YK_GlnUlI8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA6wJK1kBMorZs7ba2ny9fNdGA8yQ", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/1YK_GlnUlI8/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAz1_NlQZNe-2-619L3yD86bobmQA", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/1YK_GlnUlI8/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDlw133uPnQlqJdk92hW1XNNdg_iA", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/1YK_GlnUlI8/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCyFSnkXdizZScSRqxHW2UA_AWfyw", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "EEVblog 1583 - Advanced Oscilloscope Triggering: Glitch/Pulse/Runt/Interval" + } + ], + "accessibility": { + "accessibilityData": { + "label": "EEVblog 1583 - Advanced Oscilloscope Triggering: Glitch/Pulse/Runt/Interval by EEVblog 24,076 views 3 months ago 22 minutes" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "A practical demonstration on how to use advanced oscillocope trigger features to trigger on an unsyncronised infrequenct runt/glitch pulse.\nIncludes Pulse/Glitch, Runt, Interval, Zone triggering,..." + } + ] + }, + "publishedTimeText": { + "simpleText": "3 months ago" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "22 minutes, 19 seconds" + } + }, + "simpleText": "22:19" + }, + "viewCountText": { + "simpleText": "24,076 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CFgQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt5aGFVDMkRqRkU3WGYxMVVSWnFXQmlnY1ZPUZoBAxDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=1YK_GlnUlI8", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "1YK_GlnUlI8", + "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=d582bf1a59d4948f&ip=79.250.144.228&initcwndbps=993750&mt=1711483046&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CFgQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "CFgQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt5Aj6nSzqXjr8HVAQ==", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "24K views" + } + }, + "simpleText": "24K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CF0Q_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CF0Q_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "1YK_GlnUlI8", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CF0Q_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "1YK_GlnUlI8" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "1YK_GlnUlI8" + ] + } + } + ] + } + }, + "trackingParams": "CF0Q_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CFwQ0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "offlineVideoEndpoint": { + "videoId": "1YK_GlnUlI8", + "onAddCommand": { + "clickTrackingParams": "CFwQ0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "getDownloadActionCommand": { + "videoId": "1YK_GlnUlI8", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CFwQ0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CFgQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgsxWUtfR2xuVWxJOA%3D%3D", + "commands": [ + { + "clickTrackingParams": "CFgQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CFsQjmIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CFgQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + } + ], + "trackingParams": "CFgQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "22 minutes, 19 seconds" + } + }, + "simpleText": "22:19" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CFoQ-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "1YK_GlnUlI8", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CFoQ-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "1YK_GlnUlI8" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CFoQ-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CFkQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CFkQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "1YK_GlnUlI8", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CFkQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "1YK_GlnUlI8" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "1YK_GlnUlI8" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CFkQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/1YK_GlnUlI8/mqdefault_6s.webp?du=3000&sqp=CO67jLAG&rs=AOn4CLCvZhUeF02PCY4mBpIgDmUFVfVPqA", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + "trackingParams": "CFcQmY0FGBciEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "videoId": "HR6_Lp7fH_c", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/HR6_Lp7fH_c/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA5ywdoHcjG1ge9V3fGZNJdrhDoxg", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/HR6_Lp7fH_c/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCoJN2piQ_s5LKnnACOt4XuQUwe3g", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/HR6_Lp7fH_c/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCqn_7bTbdgh0h803Wjt0pfvkIDGw", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/HR6_Lp7fH_c/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAj9fOW252TtK7YDHEOix09_Utw_w", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "EEVblog 1582 - FNIRSI DPOX180H 180MHz DPO for $123?" + } + ], + "accessibility": { + "accessibilityData": { + "label": "EEVblog 1582 - FNIRSI DPOX180H 180MHz DPO for $123? by EEVblog 149,964 views 3 months ago 27 minutes" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "A look at the FNIRSI DPOX180H 180MHz Handheld Digital Phosphor Oscilloscope for $123.\nhttps://www.aliexpress.com/item/1005005564788266.html\nhttps://eevblog.store/products/eevblog-bm036-ac-dc-clamp-..." + } + ] + }, + "publishedTimeText": { + "simpleText": "3 months ago" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "27 minutes, 30 seconds" + } + }, + "simpleText": "27:30" + }, + "viewCountText": { + "simpleText": "149,964 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CFEQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt5aGFVDMkRqRkU3WGYxMVVSWnFXQmlnY1ZPUZoBAxDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=HR6_Lp7fH_c", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "HR6_Lp7fH_c", + "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=1d1ebf2e9edf1ff7&ip=79.250.144.228&initcwndbps=1407500&mt=1711483046&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CFEQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "CFEQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt5A97_89unlr48d", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "149K views" + } + }, + "simpleText": "149K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CFYQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CFYQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "HR6_Lp7fH_c", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CFYQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "HR6_Lp7fH_c" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "HR6_Lp7fH_c" + ] + } + } + ] + } + }, + "trackingParams": "CFYQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CFUQ0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "offlineVideoEndpoint": { + "videoId": "HR6_Lp7fH_c", + "onAddCommand": { + "clickTrackingParams": "CFUQ0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "getDownloadActionCommand": { + "videoId": "HR6_Lp7fH_c", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CFUQ0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CFEQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtIUjZfTHA3ZkhfYw%3D%3D", + "commands": [ + { + "clickTrackingParams": "CFEQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CFQQjmIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CFEQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + } + ], + "trackingParams": "CFEQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "27 minutes, 30 seconds" + } + }, + "simpleText": "27:30" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CFMQ-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "HR6_Lp7fH_c", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CFMQ-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "HR6_Lp7fH_c" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CFMQ-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CFIQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CFIQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "HR6_Lp7fH_c", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CFIQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "HR6_Lp7fH_c" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "HR6_Lp7fH_c" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CFIQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/HR6_Lp7fH_c/mqdefault_6s.webp?du=3000&sqp=CPLAjLAG&rs=AOn4CLBgupkIZD4lVo7jjfYPQGocqnzCeQ", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + "trackingParams": "CFAQmY0FGBgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "videoId": "m_8jh_MpWBE", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/m_8jh_MpWBE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDHUvTCcc_XQO0MDCBTBOuXvixyuQ", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/m_8jh_MpWBE/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDw1oBMhbunOL68Ir0-NMHp2maDqQ", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/m_8jh_MpWBE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDeTzuK2Z6cx5UF_sR8j45-KfYVLA", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/m_8jh_MpWBE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDY0xdTkroLDhjQdHqu30ll2-XBzA", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "EEVblog 1581 - Tesla Roadster now OPEN SOURCE?" + } + ], + "accessibility": { + "accessibilityData": { + "label": "EEVblog 1581 - Tesla Roadster now OPEN SOURCE? by EEVblog 52,290 views 4 months ago 17 minutes" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Elon Musk just announced that the Tesla Roadster is now open source! Do we get schematics? Let's have a look...\nhttps://service.tesla.com/roadster\nPart 2: https://www.youtube.com/watch?v=r7Cw3GVXl4..." + } + ] + }, + "publishedTimeText": { + "simpleText": "4 months ago" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "17 minutes, 12 seconds" + } + }, + "simpleText": "17:12" + }, + "viewCountText": { + "simpleText": "52,290 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEoQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt5aGFVDMkRqRkU3WGYxMVVSWnFXQmlnY1ZPUZoBAxDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=m_8jh_MpWBE", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "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.250.144.228&initcwndbps=1366250&mt=1711483046&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CEoQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "CEoQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt5AkbClmf_wyP-bAQ==", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "52K views" + } + }, + "simpleText": "52K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CE8Q_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CE8Q_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "m_8jh_MpWBE", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CE8Q_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "m_8jh_MpWBE" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "m_8jh_MpWBE" + ] + } + } + ] + } + }, + "trackingParams": "CE8Q_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CE4Q0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "offlineVideoEndpoint": { + "videoId": "m_8jh_MpWBE", + "onAddCommand": { + "clickTrackingParams": "CE4Q0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "getDownloadActionCommand": { + "videoId": "m_8jh_MpWBE", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CE4Q0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEoQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgttXzhqaF9NcFdCRQ%3D%3D", + "commands": [ + { + "clickTrackingParams": "CEoQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CE0QjmIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CEoQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + } + ], + "trackingParams": "CEoQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "17 minutes, 12 seconds" + } + }, + "simpleText": "17:12" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CEwQ-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "m_8jh_MpWBE", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CEwQ-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "m_8jh_MpWBE" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CEwQ-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CEsQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CEsQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "m_8jh_MpWBE", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CEsQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "m_8jh_MpWBE" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "m_8jh_MpWBE" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CEsQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/m_8jh_MpWBE/mqdefault_6s.webp?du=3000&sqp=CKLRjLAG&rs=AOn4CLDd4AsYqjUQVFoF8Zw31YDcCyT_iw", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + "trackingParams": "CEkQmY0FGBkiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "videoId": "eeNKvh2cFPQ", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/eeNKvh2cFPQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBy8szo9U24ueqgaeinBiQSTiNdcw", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/eeNKvh2cFPQ/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCLTSBvNyxutsFXolQ3sXxb6ym0tA", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/eeNKvh2cFPQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBdedMyH0qswdu3IQuaXJl9uDfX6Q", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/eeNKvh2cFPQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCwpBjlO_Fpo1NoV9jF6HUd58tPpw", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "EEVblog 1580 - MacGruber Mailbag" + } + ], + "accessibility": { + "accessibilityData": { + "label": "EEVblog 1580 - MacGruber Mailbag by EEVblog 29,462 views 4 months ago 37 minutes" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "More Mailbag!\n\n00:00 - Mailbag Monday time\n01:42 - T-88C Analog Multimeter\nhttps://s.click.aliexpress.com/e/_DEojyDp\n07:26 - Teardown\n12:11 - PCB proto boards from Jon Newcomb\nhttp://www.jnewcomb.c..." + } + ] + }, + "publishedTimeText": { + "simpleText": "4 months ago" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "37 minutes, 15 seconds" + } + }, + "simpleText": "37:15" + }, + "viewCountText": { + "simpleText": "29,462 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEMQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt5aGFVDMkRqRkU3WGYxMVVSWnFXQmlnY1ZPUZoBAxDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=eeNKvh2cFPQ", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "eeNKvh2cFPQ", + "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&msp=1&odepv=1&id=79e34abe1d9c14f4&ip=79.250.144.228&initcwndbps=1407500&mt=1711483046&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CEMQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "CEMQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt5A9Knw7OHX0vF5", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "29K views" + } + }, + "simpleText": "29K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEgQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CEgQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "eeNKvh2cFPQ", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CEgQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "eeNKvh2cFPQ" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "eeNKvh2cFPQ" + ] + } + } + ] + } + }, + "trackingParams": "CEgQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CEcQ0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "offlineVideoEndpoint": { + "videoId": "eeNKvh2cFPQ", + "onAddCommand": { + "clickTrackingParams": "CEcQ0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "getDownloadActionCommand": { + "videoId": "eeNKvh2cFPQ", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CEcQ0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEMQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtlZU5LdmgyY0ZQUQ%3D%3D", + "commands": [ + { + "clickTrackingParams": "CEMQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CEYQjmIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CEMQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + } + ], + "trackingParams": "CEMQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "37 minutes, 15 seconds" + } + }, + "simpleText": "37:15" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CEUQ-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "eeNKvh2cFPQ", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CEUQ-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "eeNKvh2cFPQ" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CEUQ-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CEQQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CEQQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "eeNKvh2cFPQ", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CEQQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "eeNKvh2cFPQ" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "eeNKvh2cFPQ" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CEQQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/eeNKvh2cFPQ/mqdefault_6s.webp?du=3000&sqp=CPjLjLAG&rs=AOn4CLCRjIp_novqB_M9tzUJNwecUBhH8A", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + "trackingParams": "CEIQmY0FGBoiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "videoId": "5M5MF6KE-jY", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/5M5MF6KE-jY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBq8h9yVCll1FPCLA5FdQTAWiaCAg", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/5M5MF6KE-jY/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB0NK0jYYF9EYK7qdkqd4a055dupQ", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/5M5MF6KE-jY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCGGZY7vMAQGVzoLqxrODxF7nYiMQ", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/5M5MF6KE-jY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAFDAgQafqowx58nWJuGHULbRkR3A", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "EEVblog 1579 - Nuclear Diamond Battery FRAUD Lawsuit by SEC!" + } + ], + "accessibility": { + "accessibilityData": { + "label": "EEVblog 1579 - Nuclear Diamond Battery FRAUD Lawsuit by SEC! by EEVblog 116,169 views 4 months ago 17 minutes" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "The Nuclear Diamond Battery that made a huge marketing splash back in Aug 2020 and raised $1.2M in funding, NDB Inc and it's founder Nima Golsharifi is now being sued by the SEC for fraud...." + } + ] + }, + "publishedTimeText": { + "simpleText": "4 months ago" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "17 minutes, 57 seconds" + } + }, + "simpleText": "17:57" + }, + "viewCountText": { + "simpleText": "116,169 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDwQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt5aGFVDMkRqRkU3WGYxMVVSWnFXQmlnY1ZPUZoBAxDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=5M5MF6KE-jY", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "5M5MF6KE-jY", + "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=e4ce4c17a284fa36&ip=79.250.144.228&initcwndbps=1407500&mt=1711483046&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CDwQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "CDwQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt5AtvSTlPqCk-fkAQ==", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "116K views" + } + }, + "simpleText": "116K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEEQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CEEQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "5M5MF6KE-jY", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CEEQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "5M5MF6KE-jY" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "5M5MF6KE-jY" + ] + } + } + ] + } + }, + "trackingParams": "CEEQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CEAQ0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "offlineVideoEndpoint": { + "videoId": "5M5MF6KE-jY", + "onAddCommand": { + "clickTrackingParams": "CEAQ0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "getDownloadActionCommand": { + "videoId": "5M5MF6KE-jY", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CEAQ0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDwQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "Cgs1TTVNRjZLRS1qWQ%3D%3D", + "commands": [ + { + "clickTrackingParams": "CDwQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CD8QjmIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CDwQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + } + ], + "trackingParams": "CDwQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "17 minutes, 57 seconds" + } + }, + "simpleText": "17:57" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CD4Q-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "5M5MF6KE-jY", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CD4Q-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "5M5MF6KE-jY" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CD4Q-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CD0Qx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CD0Qx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "5M5MF6KE-jY", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CD0Qx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "5M5MF6KE-jY" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "5M5MF6KE-jY" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CD0Qx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/5M5MF6KE-jY/mqdefault_6s.webp?du=3000&sqp=CObOjLAG&rs=AOn4CLBoDc5Ax3uZRmVoSdskpFxK0iaCmA", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + "trackingParams": "CDsQmY0FGBsiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "videoId": "IWHS2FDyh7s", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/IWHS2FDyh7s/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDru0L9uKllbOsCuLX_39XvlAAN5g", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/IWHS2FDyh7s/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBwhjsPYVb2BYxX9PP7bnzQxa7Y1g", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/IWHS2FDyh7s/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA5lv9wWJUiPNUUEPJET4HFuRWj-A", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/IWHS2FDyh7s/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCh0_Y1OAf-CWf_u8J_mWhXwka03Q", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "EEVblog 1578 - No one can be told what the Metrix is." + } + ], + "accessibility": { + "accessibilityData": { + "label": "EEVblog 1578 - No one can be told what the Metrix is. by EEVblog 40,487 views 4 months ago 29 minutes" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "A multimeter without any screws? A 1990's vintage Metrix MX44 multimeter torn down, tested and calibration adjusted.\n\nTektronix Multimeter Repair-o-thon\nhttps://www.youtube.com/watch?v=2QZ8GWwzXXY..." + } + ] + }, + "publishedTimeText": { + "simpleText": "4 months ago" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "29 minutes, 54 seconds" + } + }, + "simpleText": "29:54" + }, + "viewCountText": { + "simpleText": "40,487 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDUQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt5aGFVDMkRqRkU3WGYxMVVSWnFXQmlnY1ZPUZoBAxDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=IWHS2FDyh7s", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "IWHS2FDyh7s", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jelnes.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odepv=1&id=2161d2d850f287bb&ip=79.250.144.228&initcwndbps=993750&mt=1711483046&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CDUQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "CDUQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt5Au4_Kh4Xb9LAh", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "40K views" + } + }, + "simpleText": "40K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDoQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CDoQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "IWHS2FDyh7s", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CDoQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "IWHS2FDyh7s" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "IWHS2FDyh7s" + ] + } + } + ] + } + }, + "trackingParams": "CDoQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CDkQ0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "offlineVideoEndpoint": { + "videoId": "IWHS2FDyh7s", + "onAddCommand": { + "clickTrackingParams": "CDkQ0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "getDownloadActionCommand": { + "videoId": "IWHS2FDyh7s", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CDkQ0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDUQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtJV0hTMkZEeWg3cw%3D%3D", + "commands": [ + { + "clickTrackingParams": "CDUQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CDgQjmIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CDUQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + } + ], + "trackingParams": "CDUQ3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "29 minutes, 54 seconds" + } + }, + "simpleText": "29:54" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CDcQ-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "IWHS2FDyh7s", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CDcQ-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "IWHS2FDyh7s" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CDcQ-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CDYQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CDYQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "IWHS2FDyh7s", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CDYQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "IWHS2FDyh7s" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "IWHS2FDyh7s" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CDYQx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/IWHS2FDyh7s/mqdefault_6s.webp?du=3000&sqp=CKq4jLAG&rs=AOn4CLALqC81AdG4H4pcHvd53CYIkL92dA", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + "trackingParams": "CDQQmY0FGBwiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "richItemRenderer": { + "content": { + "videoRenderer": { + "videoId": "CnJ7mQ_Fo-8", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/CnJ7mQ_Fo-8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCIxRMt80uMLr-xNjaez0XsbalQsA", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/CnJ7mQ_Fo-8/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDdu3DdSJu3KSO0jlwzVhCGivAYNg", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/CnJ7mQ_Fo-8/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCLmaAzBCUac2J1wi4FefpdRAMcBg", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/CnJ7mQ_Fo-8/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBFvfKg1VqDDc7TMVYAn9gCb8YiVg", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "EEVblog 1577 - History of Television & Cathode Ray Tubes with Kathy Loves Physics" + } + ], + "accessibility": { + "accessibilityData": { + "label": "EEVblog 1577 - History of Television & Cathode Ray Tubes with Kathy Loves Physics by EEVblog 17,237 views 4 months ago 1 hour, 18 minutes" + } + } + }, + "descriptionSnippet": { + "runs": [ + { + "text": "Kathy Joseph from Kathy Loves Physics joins me on The Amp Hour to discuss history and physics and we end up discussing the intricate history of the development of television and the Cathode..." + } + ] + }, + "publishedTimeText": { + "simpleText": "4 months ago" + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "1 hour, 18 minutes, 13 seconds" + } + }, + "simpleText": "1:18:13" + }, + "viewCountText": { + "simpleText": "17,237 views" + }, + "navigationEndpoint": { + "clickTrackingParams": "CC4Q3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt5aGFVDMkRqRkU3WGYxMVVSWnFXQmlnY1ZPUZoBAxDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=CnJ7mQ_Fo-8", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "CnJ7mQ_Fo-8", + "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=0a727b990fc5a3ef&ip=79.250.144.228&initcwndbps=1407500&mt=1711483046&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { + "iconType": "CHECK_CIRCLE_THICK" + }, + "style": "BADGE_STYLE_TYPE_VERIFIED", + "tooltip": "Verified", + "trackingParams": "CC4Q3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "accessibilityData": { + "label": "Verified" + } + } + } + ], + "trackingParams": "CC4Q3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt5A78eW_pDznrkK", + "showActionMenu": false, + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "17K views" + } + }, + "simpleText": "17K views" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDMQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CDMQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "CnJ7mQ_Fo-8", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CDMQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "CnJ7mQ_Fo-8" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "CnJ7mQ_Fo-8" + ] + } + } + ] + } + }, + "trackingParams": "CDMQ_pgEGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CDIQ0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "offlineVideoEndpoint": { + "videoId": "CnJ7mQ_Fo-8", + "onAddCommand": { + "clickTrackingParams": "CDIQ0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "getDownloadActionCommand": { + "videoId": "CnJ7mQ_Fo-8", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CDIQ0aoFGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CC4Q3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtDbko3bVFfRm8tOA%3D%3D", + "commands": [ + { + "clickTrackingParams": "CC4Q3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CDEQjmIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CC4Q3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + } + ], + "trackingParams": "CC4Q3DAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "1 hour, 18 minutes, 13 seconds" + } + }, + "simpleText": "1:18:13" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { + "iconType": "WATCH_LATER" + }, + "toggledIcon": { + "iconType": "CHECK" + }, + "untoggledTooltip": "Watch later", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CDAQ-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "CnJ7mQ_Fo-8", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CDAQ-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "CnJ7mQ_Fo-8" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Watch later" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CDAQ-ecDGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Add to queue", + "toggledTooltip": "Added", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CC8Qx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CC8Qx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "CnJ7mQ_Fo-8", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CC8Qx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "CnJ7mQ_Fo-8" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "CnJ7mQ_Fo-8" + ] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Add to queue" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Added" + } + }, + "trackingParams": "CC8Qx-wEGAMiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/CnJ7mQ_Fo-8/mqdefault_6s.webp?du=3000&sqp=CNu1jLAG&rs=AOn4CLDBMPzG7mNjpZVMpskyCVr3YTqQtQ", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + "trackingParams": "CC0QmY0FGB0iEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "continuationItemRenderer": { + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN", + "continuationEndpoint": { + "clickTrackingParams": "CCYQ8eIEIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse" + } + }, + "continuationCommand": { + "token": "4qmFsgKrCBIYVUMyRGpGRTdYZjExVVJacVdCaWdjVk9RGo4IOGdhRUJocUJCbnItQlFyNUJRclFCVUZtYW5Fd2RrNDNNVTFSUkdVd2VGWXdSVXRSVlhORk16ZzFWRXQ2ZDJVelNrVlpXamhIWDJ4d2NIZG1SM2hXTm1ObFVVY3pkVWhoYUdWYVgzTjRUREZRYkhBdGNIVnlhQzF3VTNKMVlrVTRjRGRuVGxOdmFrdHJRbVozWHpKaVJXVmtVRUZyUTJ4M01WRlhZbloxV0d0eWRUUlZkM2s0VjNRMVYxRk9SVkV6Y2xwTlpIUllWelpSY3pCelJVeFFkVEJLU25aUFpESk9XVkE1T1hZdFYzUjFVbFV0Wm1ZM1F6VkdVa2hrY0UxYVlUaG1aa1I2ZWxWRWNHUXpUbmsxUlhJeGMyZGxTRFpOWTBWeE0wZzVVVkl6WjAxTWVrZEJkeTFVYVZSWFozbGtiME5oUW5oVFRGbFNkVkE1UWtaekxUbHRjVTVKWWtSMmVIRlBNMmRtVkhOd1ZuVkNSR3RFUlZJd1MxUlhkV3BNVVRBMlNGbFlUV0ZOVEd0NFNWUk1UREV4TWpoc1ZqUmpWamRhUlRWQ1prdDFMWFpZU1VKSlVXcFZWSGhKY0U5aExUZDFjbWRKU0hCNmQwRmxkMmhXV0dST00wbFVUMWxQYld4MGJVRjNlalJVZGxjNGIzTXdabEE1VTJ3eGVXUkZZbEl5YW1ZM1pqaFFkRGhhYUdOM1JGVjNNelI1WTFGVFNFbFllbFUxUkRoU04zVkVZVEJhVFVacFFqUnVhR1JTVjNBdGQyRjFOR05YVVVSWGJERktRbDlZU1U1NVJtNVpNR1ZhTWpSWVdYYzVhak4xTUcxcmVYTjZjVzFNWDBSS09WaHhObDlTUVV0cGNUSk9iVVZVVkZneExWRXdTRlZVYVZkRk4yOTFhRFZ4VDA1UmIzUkVVbTgxTjFsc2VuZExjRzVQWjNCdk0zTlRSV3hxU1dwQk9VcGZja2xTVjFBeGVEaFNSMWRKYzJ4UVN5MVRVVE5pTTJOZmMxRndORmh6TjFWUGRqUkdSbmN0WVc0eVRubHFhV3RuZVZONFV5MTFZelZVU0ZOd1NTMHhUVXRWTTNGbVZtcHRTRVpDUkhoaU9WWmtkbk14UW5aTmEzcGZWV3BhUlRaWkxVVXpNRTFRYVVaemVEaFhYMlJCT0ZOeE5Gb3lSWHBzY3psdGNWbGlUV0YxT0MxeU1XdHpiMXBpTjJ0d1ZqTjRVWEJGYW5rMVoxTm1TMXBXWW5OMllVYzVSVll5TVVFeWNDMXJPR3BHTm1ST1JUbFNWekZYWW00eldHRjVWaElrTmpZek16RTRaVEl0TURBd01DMHlNakZpTFdGak9XTXROVGd5TkRJNVlXVmpPR1V3R0FFJTNE", + "request": "CONTINUATION_REQUEST_TYPE_BROWSE" + } + } + } + } + ], + "trackingParams": "CCYQ8eIEIhMIv-qO59yShQMV0R8GAB0bsgbe", + "header": { + "feedFilterChipBarRenderer": { + "contents": [ + { + "chipCloudChipRenderer": { + "text": { + "simpleText": "Latest" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCwQ_V0YACITCL_qjufckoUDFdEfBgAdG7IG3g==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse" + } + }, + "continuationCommand": { + "token": "4qmFsgJkEhhVQzJEakZFN1hmMTFVUlpxV0JpZ2NWT1EaSDhnWXVHaXg2S2hJbUNpUTJOak16TVRobE1pMHdNREF3TFRJeU1XSXRZV001WXkwMU9ESTBNamxoWldNNFpUQVlBUSUzRCUzRA%3D%3D", + "request": "CONTINUATION_REQUEST_TYPE_BROWSE", + "command": { + "clickTrackingParams": "CCwQ_V0YACITCL_qjufckoUDFdEfBgAdG7IG3g==", + "showReloadUiCommand": { + "targetId": "663318e2-0000-221b-ac9c-582429aec8e0" + } + } + } + }, + "trackingParams": "CCwQ_V0YACITCL_qjufckoUDFdEfBgAdG7IG3g==", + "isSelected": true + } + }, + { + "chipCloudChipRenderer": { + "text": { + "simpleText": "Popular" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCsQ_V0YASITCL_qjufckoUDFdEfBgAdG7IG3g==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse" + } + }, + "continuationCommand": { + "token": "4qmFsgJkEhhVQzJEakZFN1hmMTFVUlpxV0JpZ2NWT1EaSDhnWXVHaXg2S2hJbUNpUTJOak16TVRobE1pMHdNREF3TFRJeU1XSXRZV001WXkwMU9ESTBNamxoWldNNFpUQVlBZyUzRCUzRA%3D%3D", + "request": "CONTINUATION_REQUEST_TYPE_BROWSE", + "command": { + "clickTrackingParams": "CCsQ_V0YASITCL_qjufckoUDFdEfBgAdG7IG3g==", + "showReloadUiCommand": { + "targetId": "663318e2-0000-221b-ac9c-582429aec8e0" + } + } + } + }, + "trackingParams": "CCsQ_V0YASITCL_qjufckoUDFdEfBgAdG7IG3g==", + "isSelected": false + } + }, + { + "chipCloudChipRenderer": { + "text": { + "simpleText": "Oldest" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCoQ_V0YAiITCL_qjufckoUDFdEfBgAdG7IG3g==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse" + } + }, + "continuationCommand": { + "token": "4qmFsgJkEhhVQzJEakZFN1hmMTFVUlpxV0JpZ2NWT1EaSDhnWXVHaXg2S2hJbUNpUTJOak16TVRobE1pMHdNREF3TFRJeU1XSXRZV001WXkwMU9ESTBNamxoWldNNFpUQVlCQSUzRCUzRA%3D%3D", + "request": "CONTINUATION_REQUEST_TYPE_BROWSE", + "command": { + "clickTrackingParams": "CCoQ_V0YAiITCL_qjufckoUDFdEfBgAdG7IG3g==", + "showReloadUiCommand": { + "targetId": "663318e2-0000-221b-ac9c-582429aec8e0" + } + } + } + }, + "trackingParams": "CCoQ_V0YAiITCL_qjufckoUDFdEfBgAdG7IG3g==", + "isSelected": false + } + } + ], + "trackingParams": "CCcQ4M4DIhMIv-qO59yShQMV0R8GAB0bsgbe", + "nextButton": { + "buttonRenderer": { + "style": "STYLE_DEFAULT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "CHEVRON_RIGHT" + }, + "tooltip": "Next", + "trackingParams": "CCkQ8FsiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "accessibilityData": { + "accessibilityData": { + "label": "Next" + } + } + } + }, + "previousButton": { + "buttonRenderer": { + "style": "STYLE_DEFAULT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "CHEVRON_LEFT" + }, + "tooltip": "Previous", + "trackingParams": "CCgQ8FsiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "accessibilityData": { + "accessibilityData": { + "label": "Previous" + } + } + } + }, + "styleType": "FEED_FILTER_CHIP_BAR_STYLE_TYPE_CHANNEL_PAGE_GRID" + } + }, + "targetId": "663318e2-0000-221b-ac9c-582429aec8e0", + "style": "RICH_GRID_STYLE_SLIM" + } + }, + "trackingParams": "CCUQ8JMBGAYiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "tabRenderer": { + "endpoint": { + "clickTrackingParams": "CCQQ8JMBGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@EEVblog/shorts", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "params": "EgZzaG9ydHPyBgUKA5oBAA%3D%3D", + "canonicalBaseUrl": "/@EEVblog" + } + }, + "title": "Shorts", + "trackingParams": "CCQQ8JMBGAciEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "tabRenderer": { + "endpoint": { + "clickTrackingParams": "CCMQ8JMBGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@EEVblog/streams", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "params": "EgdzdHJlYW1z8gYECgJ6AA%3D%3D", + "canonicalBaseUrl": "/@EEVblog" + } + }, + "title": "Live", + "trackingParams": "CCMQ8JMBGAgiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "tabRenderer": { + "endpoint": { + "clickTrackingParams": "CCIQ8JMBGAkiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@EEVblog/playlists", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "params": "EglwbGF5bGlzdHPyBgQKAkIA", + "canonicalBaseUrl": "/@EEVblog" + } + }, + "title": "Playlists", + "trackingParams": "CCIQ8JMBGAkiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "tabRenderer": { + "endpoint": { + "clickTrackingParams": "CCEQ8JMBGAoiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@EEVblog/community", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "params": "Egljb21tdW5pdHnyBgQKAkoA", + "canonicalBaseUrl": "/@EEVblog" + } + }, + "title": "Community", + "trackingParams": "CCEQ8JMBGAoiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "tabRenderer": { + "endpoint": { + "clickTrackingParams": "CCAQ8JMBGAsiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@EEVblog/store", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "params": "EgVzdG9yZfIGBAoCGgA%3D", + "canonicalBaseUrl": "/@EEVblog" + } + }, + "title": "Store", + "trackingParams": "CCAQ8JMBGAsiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + { + "expandableTabRenderer": { + "endpoint": { + "clickTrackingParams": "CAAQhGciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@EEVblog/search", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "params": "EgZzZWFyY2jyBgQKAloA", + "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-QKIhMIv-qO59yShQMV0R8GAB0bsgbe", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 176655, + "veCounter": 659248539 + } + } + }, + "accessibilityContext": { + "label": "EEVblog, Verified" + } + } + } + }, + "image": { + "decoratedAvatarViewModel": { + "avatar": { + "avatarViewModel": { + "image": { + "sources": [ + { + "url": "https://yt3.googleusercontent.com/ytc/AIdro_lagjGDfXbXlQXhznx3CDRitOBdxvebllQd_YP1ag=s72-c-k-c0x00ffffff-no-rj", + "width": 72, + "height": 72 + }, + { + "url": "https://yt3.googleusercontent.com/ytc/AIdro_lagjGDfXbXlQXhznx3CDRitOBdxvebllQd_YP1ag=s120-c-k-c0x00ffffff-no-rj", + "width": 120, + "height": 120 + }, + { + "url": "https://yt3.googleusercontent.com/ytc/AIdro_lagjGDfXbXlQXhznx3CDRitOBdxvebllQd_YP1ag=s160-c-k-c0x00ffffff-no-rj", + "width": 160, + "height": 160 + } + ], + "processor": { + "borderImageProcessor": { + "circular": true + } + } + }, + "avatarImageSize": "AVATAR_SIZE_XL" + } + } + } + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "@EEVblog" + } + } + ] + }, + { + "metadataParts": [ + { + "text": { + "content": "933K subscribers" + } + }, + { + "text": { + "content": "1.9K videos", + "styleRuns": [ + { + "startIndex": 0, + "length": 11 + } + ] + } + } + ] + } + ], + "delimiter": "•", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CB4Q9eQKIhMIv-qO59yShQMV0R8GAB0bsgbe", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 176757, + "veCounter": 659248537 + } + } + } + } + } + }, + "actions": { + "flexibleActionsViewModel": { + "actionsRows": [ + { + "actions": [ + { + "buttonViewModel": { + "title": "Subscribe", + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBkQjqULIhMIv-qO59yShQMV0R8GAB0bsgbe", + "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": "CB0Q_YYEIhMIv-qO59yShQMV0R8GAB0bsgbeMglzdWJzY3JpYmU=", + "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%252Fvideos%26continue_action%3DQUFFLUhqbFpzRVVELUpyRzhZRjBpN3pLWDN4MWt5UE1BZ3xBQ3Jtc0ttY05YNUJwZVhCSU5NQ1FYRmF3Tm9YcmRvemlYX2pTX2NsVy1VX3JOX1FlV2tmdWZWTC1DMG9IbVdmUF8yWFR6SHVvamVGamR4N0JUek5fR1BOVDJLOUdzRDl2b0ppdmFHMTZDdFEtVWhJdFRKeUlEdWdFWXNwUzFscDNZMHVYSW53N19ha0F3LU5vZGVLV1o4WHNVLXptUzVqUkg0WGJyTUtKNTJQWV9ldFNCeE1DcVJRVkloUjViZ0sySnJtanFjOWl0SVY&hl=en&ec=66429", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CB0Q_YYEIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@EEVblog/videos", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "params": "EgZ2aWRlb3M%3D", + "canonicalBaseUrl": "/@EEVblog" + } + }, + "continueAction": "QUFFLUhqbFpzRVVELUpyRzhZRjBpN3pLWDN4MWt5UE1BZ3xBQ3Jtc0ttY05YNUJwZVhCSU5NQ1FYRmF3Tm9YcmRvemlYX2pTX2NsVy1VX3JOX1FlV2tmdWZWTC1DMG9IbVdmUF8yWFR6SHVvamVGamR4N0JUek5fR1BOVDJLOUdzRDl2b0ppdmFHMTZDdFEtVWhJdFRKeUlEdWdFWXNwUzFscDNZMHVYSW53N19ha0F3LU5vZGVLV1o4WHNVLXptUzVqUkg0WGJyTUtKNTJQWV9ldFNCeE1DcVJRVkloUjViZ0sySnJtanFjOWl0SVY", + "idamTag": "66429" + } + }, + "trackingParams": "CB0Q_YYEIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + } + } + } + } + } + }, + "accessibilityText": "Subscribe", + "style": "BUTTON_VIEW_MODEL_STYLE_MONO", + "trackingParams": "CBkQjqULIhMIv-qO59yShQMV0R8GAB0bsgbe", + "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": "CBsQqGAYBCITCL_qjufckoUDFdEfBgAdG7IG3g==", + "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": "CBwQ8FsiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "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%253Fkey%253DAIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8%2526prettyPrint%253Dfalse&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CBwQ8FsiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + } + } + } + } + } + }, + "accessibilityText": "Join this channel", + "style": "BUTTON_VIEW_MODEL_STYLE_MONO", + "trackingParams": "CBsQqGAYBCITCL_qjufckoUDFdEfBgAdG7IG3g==", + "isFullWidth": false, + "type": "BUTTON_VIEW_MODEL_TYPE_TONAL", + "buttonSize": "BUTTON_VIEW_MODEL_SIZE_DEFAULT", + "state": "BUTTON_VIEW_MODEL_STATE_ACTIVE", + "onVisible": { + "innertubeCommand": { + "clickTrackingParams": "CBsQqGAYBCITCL_qjufckoUDFdEfBgAdG7IG3g==", + "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" + } + } + ] + }, + { + "actions": [ + { + "buttonViewModel": { + "title": "Visit store", + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBoQoMYHGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@EEVblog/store", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC2DjFE7Xf11URZqWBigcVOQ", + "params": "EgVzdG9yZfIGBAoCGgA%3D", + "canonicalBaseUrl": "/@EEVblog" + } + } + }, + "accessibilityText": "Visit store", + "style": "BUTTON_VIEW_MODEL_STYLE_MONO", + "trackingParams": "CBoQoMYHGAIiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "isFullWidth": false, + "type": "BUTTON_VIEW_MODEL_TYPE_TONAL", + "buttonSize": "BUTTON_VIEW_MODEL_SIZE_DEFAULT", + "state": "BUTTON_VIEW_MODEL_STATE_ACTIVE", + "accessibilityId": "eml.header_store_button" + } + } + ] + } + ], + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CBkQjqULIhMIv-qO59yShQMV0R8GAB0bsgbe", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 184974, + "veCounter": 659248535 + } + } + } + } + } + }, + "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_4KIhMIv-qO59yShQMV0R8GAB0bsgbe", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 180015, + "veCounter": 659248533 + } + } + }, + "accessibilityContext": { + "label": "Description. NO SCRIPT, NO FEAR, ALL OPINION...tap for more." + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBQQr_4KIhMIv-qO59yShQMV0R8GAB0bsgbe", + "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": "CBgQ8FsiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "accessibilityData": { + "accessibilityData": { + "label": "Close" + } + }, + "command": { + "clickTrackingParams": "CBgQ8FsiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "changeEngagementPanelVisibilityAction": { + "targetId": "663318e4-0000-221b-ac9c-582429aec8e0", + "visibility": "ENGAGEMENT_PANEL_VISIBILITY_HIDDEN" + } + } + } + }, + "trackingParams": "CBUQ040EIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + "content": { + "sectionListRenderer": { + "contents": [ + { + "itemSectionRenderer": { + "contents": [ + { + "continuationItemRenderer": { + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN", + "continuationEndpoint": { + "clickTrackingParams": "CBcQuy8YACITCL_qjufckoUDFdEfBgAdG7IG3g==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse" + } + }, + "continuationCommand": { + "token": "4qmFsgJgEhhVQzJEakZFN1hmMTFVUlpxV0JpZ2NWT1EaRDhnWXJHaW1hQVNZS0pEWTJNek14T0dVMUxUQXdNREF0TWpJeFlpMWhZemxqTFRVNE1qUXlPV0ZsWXpobE1BJTNEJTNE", + "request": "CONTINUATION_REQUEST_TYPE_BROWSE" + } + } + } + } + ], + "trackingParams": "CBcQuy8YACITCL_qjufckoUDFdEfBgAdG7IG3g==", + "sectionIdentifier": "663318e5-0000-221b-ac9c-582429aec8e0", + "targetId": "663318e5-0000-221b-ac9c-582429aec8e0" + } + } + ], + "trackingParams": "CBYQui8iEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "scrollPaneStyle": { + "scrollable": true + } + } + }, + "targetId": "663318e4-0000-221b-ac9c-582429aec8e0", + "identifier": { + "surface": "ENGAGEMENT_PANEL_SURFACE_BROWSE", + "tag": "663318e4-0000-221b-ac9c-582429aec8e0" + } + } + }, + "identifier": { + "surface": "ENGAGEMENT_PANEL_SURFACE_BROWSE", + "tag": "663318e4-0000-221b-ac9c-582429aec8e0" + }, + "engagementPanelPresentationConfigs": { + "engagementPanelPopupPresentationConfig": { + "popupType": "PANEL_POPUP_TYPE_DIALOG" + } + } + } + } + } + } + } + } + }, + "attribution": { + "attributionViewModel": { + "text": { + "content": "eevblog.com", + "commandRuns": [ + { + "startIndex": 0, + "length": 11, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CA8QjaULIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://www.youtube.com/redirect?event=channel_header&redir_token=QUFFLUhqbWo3eGtDZlhPUlduLTdmUk5sb0lkWkJwSERqUXxBQ3Jtc0tseER0SzZ3bk5fSjh0N3BWYW02bks5Umh3RU03M2hBbFNSeE9KM25FWnJLYy12ZHYtUzE3V1V2VWg5WWdXXzNLWkY0bURCMXhJT2kwd1Zzcm11WUZGcGtleEFJZVdkWW1Fd1Qyekh5dURFSmo2aDJ2SQ&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=QUFFLUhqbWo3eGtDZlhPUlduLTdmUk5sb0lkWkJwSERqUXxBQ3Jtc0tseER0SzZ3bk5fSjh0N3BWYW02bks5Umh3RU03M2hBbFNSeE9KM25FWnJLYy12ZHYtUzE3V1V2VWg5WWdXXzNLWkY0bURCMXhJT2kwd1Zzcm11WUZGcGtleEFJZVdkWW1Fd1Qyekh5dURFSmo2aDJ2SQ&q=http%3A%2F%2Fwww.eevblog.com", + "target": "TARGET_NEW_WINDOW" + } + } + } + } + ], + "styleRuns": [ + { + "weightLabel": "FONT_WEIGHT_NORMAL", + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4278607828 + }, + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4282296063 + } + ] + } + } + } + ] + }, + "suffix": { + "content": "and 12 more links", + "commandRuns": [ + { + "startIndex": 0, + "length": 17, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CA8QjaULIhMIv-qO59yShQMV0R8GAB0bsgbe", + "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": "CBMQ8FsiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "accessibilityData": { + "accessibilityData": { + "label": "Close" + } + }, + "command": { + "clickTrackingParams": "CBMQ8FsiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "changeEngagementPanelVisibilityAction": { + "targetId": "663318e6-0000-221b-ac9c-582429aec8e0", + "visibility": "ENGAGEMENT_PANEL_VISIBILITY_HIDDEN" + } + } + } + }, + "trackingParams": "CBAQ040EIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + "content": { + "sectionListRenderer": { + "contents": [ + { + "itemSectionRenderer": { + "contents": [ + { + "continuationItemRenderer": { + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN", + "continuationEndpoint": { + "clickTrackingParams": "CBIQuy8YACITCL_qjufckoUDFdEfBgAdG7IG3g==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse" + } + }, + "continuationCommand": { + "token": "4qmFsgJgEhhVQzJEakZFN1hmMTFVUlpxV0JpZ2NWT1EaRDhnWXJHaW1hQVNZS0pEWTJNek14T0dVM0xUQXdNREF0TWpJeFlpMWhZemxqTFRVNE1qUXlPV0ZsWXpobE1BJTNEJTNE", + "request": "CONTINUATION_REQUEST_TYPE_BROWSE" + } + } + } + } + ], + "trackingParams": "CBIQuy8YACITCL_qjufckoUDFdEfBgAdG7IG3g==", + "sectionIdentifier": "663318e7-0000-221b-ac9c-582429aec8e0", + "targetId": "663318e7-0000-221b-ac9c-582429aec8e0" + } + } + ], + "trackingParams": "CBEQui8iEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "scrollPaneStyle": { + "scrollable": true + } + } + }, + "targetId": "663318e6-0000-221b-ac9c-582429aec8e0", + "identifier": { + "surface": "ENGAGEMENT_PANEL_SURFACE_BROWSE", + "tag": "663318e6-0000-221b-ac9c-582429aec8e0" + } + } + }, + "identifier": { + "surface": "ENGAGEMENT_PANEL_SURFACE_BROWSE", + "tag": "663318e6-0000-221b-ac9c-582429aec8e0" + }, + "engagementPanelPresentationConfigs": { + "engagementPanelPopupPresentationConfig": { + "popupType": "PANEL_POPUP_TYPE_DIALOG" + } + } + } + } + } + } + ], + "styleRuns": [ + { + "fontName": "", + "fontSize": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CA8QjaULIhMIv-qO59yShQMV0R8GAB0bsgbe", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 184973, + "veCounter": 659248531 + } + } + } + } + } + }, + "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": "CA4QnfILIhMIv-qO59yShQMV0R8GAB0bsgbe", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 194845, + "veCounter": 659248529 + } + } + } + } + } + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CA0Qot8KIhMIv-qO59yShQMV0R8GAB0bsgbe", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 176034, + "veCounter": 659248527 + } + } + } + } + } + } + } + }, + "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_lagjGDfXbXlQXhznx3CDRitOBdxvebllQd_YP1ag=s900-c-k-c0x00ffffff-no-rj", + "width": 900, + "height": 900 + } + ] + }, + "channelUrl": "https://www.youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ", + "isFamilySafe": true, + "facebookProfileId": "EEVblog", + "availableCountryCodes": [ + "ID", + "IR", + "FO", + "ME", + "YT", + "BL", + "MO", + "EC", + "CL", + "GT", + "NE", + "AG", + "PM", + "EE", + "ZW", + "CN", + "EH", + "MG", + "ES", + "GY", + "GL", + "VE", + "CU", + "KM", + "MD", + "NI", + "CZ", + "AR", + "DO", + "BE", + "MY", + "MZ", + "DE", + "KH", + "BS", + "SK", + "UA", + "TO", + "PT", + "BY", + "JM", + "MU", + "ER", + "FK", + "GB", + "MK", + "TM", + "SD", + "RE", + "NP", + "TT", + "MQ", + "UZ", + "GD", + "AI", + "AX", + "AD", + "CR", + "US", + "NZ", + "LV", + "KN", + "NU", + "CI", + "MF", + "KP", + "ST", + "FJ", + "KE", + "SM", + "CA", + "SV", + "OM", + "AQ", + "TF", + "BZ", + "LY", + "SS", + "PK", + "UG", + "HM", + "HN", + "TK", + "RO", + "SI", + "CG", + "MW", + "CO", + "DK", + "ET", + "MR", + "AL", + "TC", + "LB", + "BH", + "GU", + "BT", + "BB", + "ML", + "MS", + "SX", + "LT", + "AS", + "TH", + "UM", + "SR", + "KI", + "KR", + "NF", + "HU", + "VA", + "NR", + "GI", + "IL", + "PA", + "AF", + "MX", + "HT", + "AU", + "BV", + "SB", + "NG", + "VU", + "DZ", + "ZM", + "KZ", + "WF", + "SN", + "GF", + "TW", + "IM", + "MN", + "GQ", + "PF", + "PG", + "PR", + "TR", + "BO", + "RU", + "AW", + "MT", + "MC", + "MH", + "SC", + "SG", + "WS", + "BI", + "JO", + "TJ", + "TZ", + "TG", + "CH", + "CV", + "GR", + "VG", + "AZ", + "GP", + "BJ", + "TL", + "KW", + "SA", + "BN", + "RW", + "EG", + "PY", + "IE", + "LR", + "CF", + "CD", + "LC", + "MM", + "LU", + "BA", + "GS", + "NA", + "GM", + "NC", + "SO", + "DM", + "BQ", + "IT", + "RS", + "IO", + "TV", + "BD", + "AT", + "LK", + "BG", + "UY", + "BM", + "PW", + "CW", + "CX", + "AE", + "AO", + "GE", + "JP", + "FI", + "NL", + "SH", + "AM", + "FM", + "CK", + "BR", + "SL", + "LA", + "SY", + "QA", + "TD", + "CC", + "DJ", + "SJ", + "VN", + "ZA", + "BW", + "PN", + "GW", + "FR", + "YE", + "LS", + "PL", + "SE", + "HK", + "NO", + "VC", + "IS", + "KG", + "GN", + "LI", + "GH", + "CM", + "PH", + "IN", + "BF", + "GA", + "GG", + "HR", + "IQ", + "PE", + "CY", + "MP", + "MV", + "PS", + "SZ", + "MA", + "KY", + "TN", + "VI", + "JE" + ], + "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": "CAAQhGciEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "topbar": { + "desktopTopbarRenderer": { + "logo": { + "topbarLogoRenderer": { + "iconImage": { + "iconType": "YOUTUBE_LOGO" + }, + "tooltipText": { + "runs": [ + { + "text": "YouTube Home" + } + ] + }, + "endpoint": { + "clickTrackingParams": "CAwQsV4iEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/", + "webPageType": "WEB_PAGE_TYPE_BROWSE", + "rootVe": 3854, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "FEwhat_to_watch" + } + }, + "trackingParams": "CAwQsV4iEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "overrideEntityKey": "EgZ0b3BiYXIg9QEoAQ%3D%3D" + } + }, + "searchbox": { + "fusionSearchboxRenderer": { + "icon": { + "iconType": "SEARCH" + }, + "placeholderText": { + "runs": [ + { + "text": "Search" + } + ] + }, + "config": { + "webSearchboxConfig": { + "requestLanguage": "en", + "requestDomain": "us", + "hasOnscreenKeyboard": false, + "focusSearchbox": true + } + }, + "trackingParams": "CAoQ7VAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "searchEndpoint": { + "clickTrackingParams": "CAoQ7VAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "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": "CAsQ8FsiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "accessibilityData": { + "accessibilityData": { + "label": "Clear search query" + } + } + } + } + } + }, + "trackingParams": "CAEQq6wBIhMIv-qO59yShQMV0R8GAB0bsgbe", + "topbarButtons": [ + { + "topbarMenuButtonRenderer": { + "icon": { + "iconType": "MORE_VERT" + }, + "menuRequest": { + "clickTrackingParams": "CAgQ_qsBGAAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/account/account_menu" + } + }, + "signalServiceEndpoint": { + "signal": "GET_ACCOUNT_MENU", + "actions": [ + { + "clickTrackingParams": "CAgQ_qsBGAAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "openPopupAction": { + "popup": { + "multiPageMenuRenderer": { + "trackingParams": "CAkQ_6sBIhMIv-qO59yShQMV0R8GAB0bsgbe", + "style": "MULTI_PAGE_MENU_STYLE_TYPE_SYSTEM", + "showLoadingSpinner": true + } + }, + "popupType": "DROPDOWN", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CAgQ_qsBGAAiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "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": "CAcQ1IAEGAEiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "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%253Fkey%253DAIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8%2526prettyPrint%253Dfalse&hl=en&ec=65620", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "idamTag": "65620" + } + }, + "trackingParams": "CAcQ1IAEGAEiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "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": "CAYQ8FsiEwi_6o7n3JKFAxXRHwYAHRuyBt4=" + } + }, + "trackingParams": "CAUQteYDIhMIv-qO59yShQMV0R8GAB0bsgbe" + } + }, + "backButton": { + "buttonRenderer": { + "trackingParams": "CAQQvIYDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "command": { + "clickTrackingParams": "CAQQvIYDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CAQQvIYDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "signalAction": { + "signal": "HISTORY_BACK" + } + } + ] + } + } + } + }, + "forwardButton": { + "buttonRenderer": { + "trackingParams": "CAMQvYYDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "command": { + "clickTrackingParams": "CAMQvYYDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CAMQvYYDIhMIv-qO59yShQMV0R8GAB0bsgbe", + "signalAction": { + "signal": "HISTORY_FORWARD" + } + } + ] + } + } + } + }, + "a11ySkipNavigationButton": { + "buttonRenderer": { + "style": "STYLE_DEFAULT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Skip navigation" + } + ] + }, + "trackingParams": "CAIQ8FsiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "command": { + "clickTrackingParams": "CAIQ8FsiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CAIQ8FsiEwi_6o7n3JKFAxXRHwYAHRuyBt4=", + "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_lagjGDfXbXlQXhznx3CDRitOBdxvebllQd_YP1ag=s200-c-k-c0x00ffffff-no-rj?days_since_epoch=19808", + "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": [ + "ID", + "IR", + "FO", + "ME", + "YT", + "BL", + "MO", + "EC", + "CL", + "GT", + "NE", + "AG", + "PM", + "EE", + "ZW", + "CN", + "EH", + "MG", + "ES", + "GY", + "GL", + "VE", + "CU", + "KM", + "MD", + "NI", + "CZ", + "AR", + "DO", + "BE", + "MY", + "MZ", + "DE", + "KH", + "BS", + "SK", + "UA", + "TO", + "PT", + "BY", + "JM", + "MU", + "ER", + "FK", + "GB", + "MK", + "TM", + "SD", + "RE", + "NP", + "TT", + "MQ", + "UZ", + "GD", + "AI", + "AX", + "AD", + "CR", + "US", + "NZ", + "LV", + "KN", + "NU", + "CI", + "MF", + "KP", + "ST", + "FJ", + "KE", + "SM", + "CA", + "SV", + "OM", + "AQ", + "TF", + "BZ", + "LY", + "SS", + "PK", + "UG", + "HM", + "HN", + "TK", + "RO", + "SI", + "CG", + "MW", + "CO", + "DK", + "ET", + "MR", + "AL", + "TC", + "LB", + "BH", + "GU", + "BT", + "BB", + "ML", + "MS", + "SX", + "LT", + "AS", + "TH", + "UM", + "SR", + "KI", + "KR", + "NF", + "HU", + "VA", + "NR", + "GI", + "IL", + "PA", + "AF", + "MX", + "HT", + "AU", + "BV", + "SB", + "NG", + "VU", + "DZ", + "ZM", + "KZ", + "WF", + "SN", + "GF", + "TW", + "IM", + "MN", + "GQ", + "PF", + "PG", + "PR", + "TR", + "BO", + "RU", + "AW", + "MT", + "MC", + "MH", + "SC", + "SG", + "WS", + "BI", + "JO", + "TJ", + "TZ", + "TG", + "CH", + "CV", + "GR", + "VG", + "AZ", + "GP", + "BJ", + "TL", + "KW", + "SA", + "BN", + "RW", + "EG", + "PY", + "IE", + "LR", + "CF", + "CD", + "LC", + "MM", + "LU", + "BA", + "GS", + "NA", + "GM", + "NC", + "SO", + "DM", + "BQ", + "IT", + "RS", + "IO", + "TV", + "BD", + "AT", + "LK", + "BG", + "UY", + "BM", + "PW", + "CW", + "CX", + "AE", + "AO", + "GE", + "JP", + "FI", + "NL", + "SH", + "AM", + "FM", + "CK", + "BR", + "SL", + "LA", + "SY", + "QA", + "TD", + "CC", + "DJ", + "SJ", + "VN", + "ZA", + "BW", + "PN", + "GW", + "FR", + "YE", + "LS", + "PL", + "SE", + "HK", + "NO", + "VC", + "IS", + "KG", + "GN", + "LI", + "GH", + "CM", + "PH", + "IN", + "BF", + "GA", + "GG", + "HR", + "IQ", + "PE", + "CY", + "MP", + "MV", + "PS", + "SZ", + "MA", + "KY", + "TN", + "VI", + "JE" + ], + "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" + } + ] + } + } +} From 79c504954ef856332d7e7ff05e712818f010588d Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 26 Mar 2024 21:23:37 +0100 Subject: [PATCH 025/347] chore(release): release rustypipe v0.1.2 --- CHANGELOG.md | 6 ++++++ Cargo.toml | 2 +- README.md | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 38e5256..0bdd8d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## [v0.1.2](https://code.thetadev.de/ThetaDev/rustypipe/compare/rustypipe/v0.1.1..v0.1.2) - 2024-03-26 + +### 🐛 Bug Fixes + +- Correctly parse subscriber count with new channel header - ([180dd98](https://code.thetadev.de/ThetaDev/rustypipe/commit/180dd9891a14b4da9f130a73d73aecc3822fce2f)) + ## [v0.1.1](https://code.thetadev.de/ThetaDev/rustypipe/compare/rustypipe-cli/v0.1.0..v0.1.1) - 2024-03-26 ### 🐛 Bug Fixes diff --git a/Cargo.toml b/Cargo.toml index 6202e54..3ef608c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe" -version = "0.1.1" +version = "0.1.2" edition.workspace = true authors.workspace = true license.workspace = true diff --git a/README.md b/README.md index 626042d..daf3502 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ Client for the public YouTube / YouTube Music API (Innertube), inspired by ```toml [dependencies] -rustypipe = "0.1.1" +rustypipe = "0.1.2" tokio = { version = "1.20.0", features = ["macros", "rt-multi-thread"] } ``` From 348c8523fe847f2f6ce98317375a7ab65e778ed2 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 1 Apr 2024 17:27:53 +0200 Subject: [PATCH 026/347] revert: "fix: improve VecLogErr messages" (leads to infinite loop) This reverts commit 9a652d851fa962183e60b11cbb4e34477a979aac. --- src/serializer/vec_log_err.rs | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/src/serializer/vec_log_err.rs b/src/serializer/vec_log_err.rs index c2e89ff..9e3e32c 100644 --- a/src/serializer/vec_log_err.rs +++ b/src/serializer/vec_log_err.rs @@ -20,6 +20,13 @@ where where D: serde::Deserializer<'de>, { + #[derive(serde::Deserialize)] + #[serde(untagged)] + enum GoodOrError { + Good(T), + Error(serde_json::Value), + } + struct SeqVisitor(PhantomData); impl<'de, T> Visitor<'de> for SeqVisitor @@ -39,14 +46,16 @@ where let mut values = Vec::with_capacity(seq.size_hint().unwrap_or_default()); let mut warnings = Vec::new(); - loop { - match seq.next_element::() { - Ok(val) => match val { - Some(val) => values.push(val), - None => break, - }, - Err(e) => { - warnings.push(format!("error deserializing item: {e}")); + while let Some(value) = seq.next_element()? { + match value { + GoodOrError::::Good(value) => { + values.push(value); + } + GoodOrError::::Error(value) => { + warnings.push(format!( + "error deserializing item: {}", + serde_json::to_string(&value).unwrap_or_default() + )); } } } @@ -177,8 +186,8 @@ mod tests { insta::assert_debug_snapshot!(res.items.warnings, @r###" [ - "error deserializing item: missing field `name` at line 1 column 40", - "error deserializing item: missing field `name` at line 1 column 73", + "error deserializing item: {\"xyz\":\"i2\"}", + "error deserializing item: {\"namra\":\"i4\"}", ] "###); } From b0331f7250f5d7d61a45209150739d2cb08b4280 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 1 Apr 2024 23:11:33 +0200 Subject: [PATCH 027/347] fix: parse new comment model (A/B#14 frameworkUpdates) --- codegen/src/abtest.rs | 27 +- notes/AB_Tests.md | 149 +- src/client/response/channel.rs | 8 +- src/client/response/mod.rs | 91 + src/client/response/video_details.rs | 171 +- ...s__map_comments_20240401_frameworkupd.snap | 691 + ..._comments_20240401_frameworkupd_reply.snap | 351 + src/client/video_details.rs | 288 +- .../comments_20240401_frameworkupd.json | 13159 ++++++++++++++++ .../comments_20240401_frameworkupd_reply.json | 3397 ++++ 10 files changed, 18207 insertions(+), 125 deletions(-) create mode 100644 src/client/snapshots/rustypipe__client__video_details__tests__map_comments_20240401_frameworkupd.snap create mode 100644 src/client/snapshots/rustypipe__client__video_details__tests__map_comments_20240401_frameworkupd_reply.snap create mode 100644 testfiles/video_details/comments_20240401_frameworkupd.json create mode 100644 testfiles/video_details/comments_20240401_frameworkupd_reply.json diff --git a/codegen/src/abtest.rs b/codegen/src/abtest.rs index f09a30d..eadf73e 100644 --- a/codegen/src/abtest.rs +++ b/codegen/src/abtest.rs @@ -13,6 +13,8 @@ use rustypipe::param::ChannelVideoTab; use serde::de::IgnoredAny; use serde::{Deserialize, Serialize}; +use crate::model::QCont; + #[derive( Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, TryFromPrimitive, Serialize, Deserialize, )] @@ -31,10 +33,15 @@ pub enum ABTest { LikeButtonViewmodel = 11, ChannelPageHeader = 12, MusicPlaylistTwoColumn = 13, + CommentsFrameworkUpdate = 14, } /// List of active A/B tests that are run when none is manually specified -const TESTS_TO_RUN: [ABTest; 2] = [ABTest::ChannelPageHeader, ABTest::MusicPlaylistTwoColumn]; +const TESTS_TO_RUN: [ABTest; 3] = [ + ABTest::ChannelPageHeader, + ABTest::MusicPlaylistTwoColumn, + ABTest::CommentsFrameworkUpdate, +]; #[derive(Debug, Serialize, Deserialize)] pub struct ABTestRes { @@ -104,6 +111,7 @@ pub async fn run_test( ABTest::LikeButtonViewmodel => like_button_viewmodel(&query).await, ABTest::ChannelPageHeader => channel_page_header(&query).await, ABTest::MusicPlaylistTwoColumn => music_playlist_two_column(&query).await, + ABTest::CommentsFrameworkUpdate => comments_framework_update(&query).await, } .unwrap(); pb.inc(1); @@ -356,3 +364,20 @@ pub async fn music_playlist_two_column(rp: &RustyPipeQuery) -> Result { .unwrap(); Ok(res.contains("\"musicResponsiveHeaderRenderer\"")) } + +pub async fn comments_framework_update(rp: &RustyPipeQuery) -> Result { + let continuation = + "Eg0SC3dMZHBSN2d1S3k4GAYyJSIRIgt3TGRwUjdndUt5ODAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"; + let res = rp + .raw( + ClientType::Desktop, + "next", + &QCont { + context: rp.get_context(ClientType::Desktop, true, None).await, + continuation, + }, + ) + .await + .unwrap(); + Ok(res.contains("\"frameworkUpdates\"")) +} diff --git a/notes/AB_Tests.md b/notes/AB_Tests.md index 9f5457d..8d26b91 100644 --- a/notes/AB_Tests.md +++ b/notes/AB_Tests.md @@ -592,7 +592,6 @@ be accomodated. There are also no mobile/TV header images available any more. } ``` - ## [13] Music album/playlist 2-column layout - **Encountered on:** 29.02.2024 @@ -602,5 +601,149 @@ be accomodated. There are also no mobile/TV header images available any more. ![A/B test 13 screenshot](./_img/ab_13.png) -YouTube Music updated the layout of album and playlist pages. The new layout shows -the cover on the left side of the playlist content. +YouTube Music updated the layout of album and playlist pages. The new layout shows the +cover on the left side of the playlist content. + +## [14] Comments Framework update + +- **Encountered on:** 31.01.2024 +- **Impact:** 🟢 Low +- **Endpoint:** next +- **Status:** Common (50%) + +YouTube changed the data model for YouTube comments, now putting the content into a +seperate framework update object + +```json +{ + "frameworkUpdates": { + "onResponseReceivedEndpoints": [ + { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "reloadContinuationItemsCommand": { + "targetId": "comments-section", + "continuationItems": [ + { + "commentThreadRenderer": { + "replies": { + "commentRepliesRenderer": { + "contents": [ + { + "continuationItemRenderer": { + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN", + "continuationEndpoint": { + "clickTrackingParams": "CHgQvnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/next" + } + }, + "continuationCommand": { + "token": "Eg0SC1FpcDFWa1R1TTcwGAYygwEaUBIaVWd5TlRUOHV4REVqZ1lxeWJJRjRBYUFCQWciAggAKhhVQ3lhZmx6ek9IMEdDNjgzRGxRLWZ6d2cyC1FpcDFWa1R1TTcwQAFICoIBAggBQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3lOVFQ4dXhERWpnWXF5YklGNEFhQUJBZw%3D%3D", + "request": "CONTINUATION_REQUEST_TYPE_WATCH_NEXT" + } + } + } + } + ], + "trackingParams": "CHgQvnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "viewReplies": { + "buttonRenderer": { + "text": { "runs": [{ "text": "220 replies" }] }, + "icon": { "iconType": "ARROW_DROP_DOWN" }, + "trackingParams": "CHoQosAEIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "iconPosition": "BUTTON_ICON_POSITION_TYPE_LEFT_OF_TEXT" + } + }, + "hideReplies": { + "buttonRenderer": { + "text": { "runs": [{ "text": "220 replies" }] }, + "icon": { "iconType": "ARROW_DROP_UP" }, + "trackingParams": "CHkQ280EIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "iconPosition": "BUTTON_ICON_POSITION_TYPE_LEFT_OF_TEXT" + } + }, + "targetId": "comment-replies-item-UgyNTT8uxDEjgYqybIF4AaABAg" + } + }, + "trackingParams": "CHYQwnUYywEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "renderingPriority": "RENDERING_PRIORITY_PINNED_COMMENT", + "isModeratedElqComment": false, + "commentViewModel": { + "commentViewModel": { + "commentId": "UgyNTT8uxDEjgYqybIF4AaABAg" + } + } + } + } + ] + } + } + ], + "entityBatchUpdate": { + "mutations": [ + { + "entityKey": "EhpVZ3lOVFQ4dXhERWpnWXF5YklGNEFhQUJBZyAoKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EhpVZ3lOVFQ4dXhERWpnWXF5YklGNEFhQUJBZyAoKAE%3D", + "properties": { + "commentId": "UgyNTT8uxDEjgYqybIF4AaABAg", + "content": { + "content": "⚠️ Important notice: if you put any symbol immediately after markup, it will not work: *here is the comma*, without space.\n\nYou should leave space before and after , to make it work.\n\nSame for _underscore_, and -hyphen-.\n\nLeave space before opening and after closing underscore and hyphen. Put all dots and commas inside markup.", + "styleRuns": [ + { + "startIndex": 135, + "length": 28, + "weightLabel": "FONT_WEIGHT_MEDIUM" + }, + { + "startIndex": 267, + "length": 10, + "weightLabel": "FONT_WEIGHT_NORMAL", + "italic": true + }, + { + "startIndex": 282, + "length": 7, + "weightLabel": "FONT_WEIGHT_NORMAL", + "strikethrough": "LINE_STYLE_SINGLE" + } + ] + }, + "publishedTime": "2 years ago (edited)", + "replyLevel": 0, + "authorButtonA11y": "@kibizoid", + "toolbarStateKey": "EhpVZ3lOVFQ4dXhERWpnWXF5YklGNEFhQUJBZyAsKAE%3D", + "translateButtonEntityKey": "EhpVZ3lOVFQ4dXhERWpnWXF5YklGNEFhQUJBZyD_ASgB" + }, + "author": { + "channelId": "UCUJfyiofeHQTmxKwZ6cCwIg", + "displayName": "@kibizoid", + "avatarThumbnailUrl": "https://yt3.ggpht.com/ytc/AIdro_nY2PkIyojDqs9Bk5RY6J90-U7wePswTYl799DNJQ=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "isArtist": false + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/ytc/AIdro_nY2PkIyojDqs9Bk5RY6J90-U7wePswTYl799DNJQ=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ] + } + } + } + } + } + ] + } + } +} +``` diff --git a/src/client/response/channel.rs b/src/client/response/channel.rs index 7b371a4..4bff8f2 100644 --- a/src/client/response/channel.rs +++ b/src/client/response/channel.rs @@ -3,7 +3,7 @@ use serde_with::{rust::deserialize_ignore_any, serde_as, DefaultOnError, VecSkip use super::{ video_item::YouTubeListRenderer, Alert, ChannelBadge, ContentRenderer, ContentsRenderer, - ContinuationActionWrap, ResponseContext, Thumbnails, TwoColumnBrowseResults, + ContinuationActionWrap, ImageView, ResponseContext, Thumbnails, TwoColumnBrowseResults, }; use crate::serializer::text::{AttributedText, Text, TextComponent}; @@ -224,12 +224,6 @@ pub(crate) struct PhAvatarView3 { pub avatar_view_model: ImageView, } -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub(crate) struct ImageView { - pub image: Thumbnails, -} - #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct PhMetadataView { diff --git a/src/client/response/mod.rs b/src/client/response/mod.rs index 3f5682d..85392cd 100644 --- a/src/client/response/mod.rs +++ b/src/client/response/mod.rs @@ -48,6 +48,7 @@ pub(crate) mod channel_rss; pub(crate) use channel_rss::ChannelRss; use std::borrow::Cow; +use std::collections::HashMap; use std::marker::PhantomData; use serde::{ @@ -106,6 +107,12 @@ pub(crate) struct ThumbnailsWrap { pub thumbnail: Thumbnails, } +#[derive(Default, Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct ImageView { + pub image: Thumbnails, +} + /// List of images in different resolutions. /// Not only used for thumbnails, but also for avatars and banners. #[derive(Default, Debug, Deserialize)] @@ -374,3 +381,87 @@ pub(crate) fn alerts_to_err(id: &str, alerts: Option>) -> ExtractionE .unwrap_or_default(), } } + +// FRAMEWORK UPDATES + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct FrameworkUpdates { + pub entity_batch_update: EntityBatchUpdate, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct EntityBatchUpdate { + pub mutations: FrameworkUpdateMutations, +} + +/// List of update mutations that deserializes into a HashMap (entity_key => payload) +#[derive(Debug)] +pub(crate) struct FrameworkUpdateMutations { + pub items: HashMap, + pub warnings: Vec, +} + +impl<'de, T> Deserialize<'de> for FrameworkUpdateMutations +where + T: Deserialize<'de>, +{ + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + struct SeqVisitor(PhantomData); + + #[derive(serde::Deserialize)] + #[serde(untagged)] + enum MutationOrError { + #[serde(rename_all = "camelCase")] + Good { + entity_key: String, + payload: T, + }, + Error(serde_json::Value), + } + + impl<'de, T> Visitor<'de> for SeqVisitor + where + T: Deserialize<'de>, + { + type Value = FrameworkUpdateMutations; + + fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result { + formatter.write_str("sequence of entity mutations") + } + + fn visit_seq(self, mut seq: A) -> Result + where + A: serde::de::SeqAccess<'de>, + { + let mut items = HashMap::with_capacity(seq.size_hint().unwrap_or_default()); + let mut warnings = Vec::new(); + + while let Some(value) = seq.next_element::>()? { + match value { + MutationOrError::Good { + entity_key, + payload, + } => { + items.insert(entity_key, payload); + } + MutationOrError::Error(value) => { + warnings.push(format!( + "error deserializing item: {}", + serde_json::to_string(&value).unwrap_or_default() + )); + } + } + } + + Ok(FrameworkUpdateMutations { items, warnings }) + } + } + + deserializer.deserialize_seq(SeqVisitor(PhantomData::)) + } +} diff --git a/src/client/response/video_details.rs b/src/client/response/video_details.rs index 50373d7..126a540 100644 --- a/src/client/response/video_details.rs +++ b/src/client/response/video_details.rs @@ -3,9 +3,8 @@ use serde::Deserialize; use serde_with::{rust::deserialize_ignore_any, serde_as, DefaultOnError, VecSkipError}; -use crate::serializer::text::TextComponent; use crate::serializer::{ - text::{AccessibilityText, AttributedText, Text, TextComponents}, + text::{AccessibilityText, AttributedText, Text, TextComponent, TextComponents}, MapResult, }; @@ -13,7 +12,10 @@ use super::{ url_endpoint::BrowseEndpointWrap, ContinuationEndpoint, ContinuationItemRenderer, Icon, MusicContinuationData, Thumbnails, }; -use super::{ChannelBadge, ContentsRendererLogged, ResponseContext, YouTubeListItem}; +use super::{ + ChannelBadge, ContentsRendererLogged, FrameworkUpdates, ImageView, ResponseContext, + YouTubeListItem, +}; /* #VIDEO DETAILS @@ -476,6 +478,7 @@ pub(crate) struct VideoComments { /// - n*commentRenderer, continuationItemRenderer: /// replies + continuation pub on_response_received_endpoints: MapResult>, + pub framework_updates: Option>, } /// Video comments continuation @@ -498,23 +501,13 @@ pub(crate) struct AppendComments { #[serde(rename_all = "camelCase")] pub(crate) enum CommentListItem { /// Top-level comment - #[serde(rename_all = "camelCase")] - CommentThreadRenderer { - comment: Comment, - /// Continuation token to fetch replies - #[serde(default)] - replies: Replies, - #[serde(default)] - #[serde_as(deserialize_as = "DefaultOnError")] - rendering_priority: CommentPriority, - }, + CommentThreadRenderer(CommentThreadRenderer), /// Reply comment CommentRenderer(CommentRenderer), + /// Reply comment (A/B #14) + CommentViewModel(CommentViewModel), /// Continuation token to fetch more comments - #[serde(rename_all = "camelCase")] - ContinuationItemRenderer { - continuation_endpoint: ContinuationEndpoint, - }, + ContinuationItemRenderer(ContinuationItemVariants), /// Header of the comment section (contains number of comments) #[serde(rename_all = "camelCase")] CommentsHeaderRenderer { @@ -524,6 +517,46 @@ pub(crate) enum CommentListItem { }, } +#[derive(Debug, Deserialize)] +#[serde(untagged)] +pub(crate) enum ContinuationItemVariants { + #[serde(rename_all = "camelCase")] + Ep { + continuation_endpoint: ContinuationEndpoint, + }, + Btn { + button: ContinuationButton, + }, +} + +impl ContinuationItemVariants { + pub fn token(self) -> String { + match self { + ContinuationItemVariants::Ep { + continuation_endpoint, + } => continuation_endpoint, + ContinuationItemVariants::Btn { button } => button.button_renderer.command, + } + .continuation_command + .token + } +} + +#[serde_as] +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct CommentThreadRenderer { + /// Missing on the FrameworkUpdate data model (A/B #14) + pub comment: Option, + pub comment_view_model: Option, + /// Continuation token to fetch replies + #[serde(default)] + pub replies: Replies, + #[serde(default)] + #[serde_as(deserialize_as = "DefaultOnError")] + pub rendering_priority: CommentPriority, +} + #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct Comment { @@ -564,7 +597,7 @@ pub(crate) struct CommentRenderer { pub action_buttons: CommentActionButtons, } -#[derive(Default, Clone, Copy, Debug, Deserialize, PartialEq, Eq)] +#[derive(Default, Clone, Copy, Debug, Deserialize)] #[serde(rename_all = "SCREAMING_SNAKE_CASE")] pub(crate) enum CommentPriority { /// Default rendering priority @@ -574,6 +607,26 @@ pub(crate) enum CommentPriority { RenderingPriorityPinnedComment, } +impl From for bool { + fn from(value: CommentPriority) -> Self { + matches!(value, CommentPriority::RenderingPriorityPinnedComment) + } +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct CommentViewModelWrap { + pub comment_view_model: CommentViewModel, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct CommentViewModel { + pub comment_id: String, + pub comment_key: String, + pub toolbar_state_key: String, +} + /// Does not contain replies directly but a continuation token /// for fetching them. #[derive(Default, Debug, Deserialize)] @@ -637,3 +690,85 @@ pub(crate) struct AuthorCommentBadgeRenderer { /// Artist: `OFFICIAL_ARTIST_BADGE` pub icon: Icon, } + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) enum Payload { + CommentEntityPayload(CommentEntityPayload), + #[serde(rename_all = "camelCase")] + EngagementToolbarStateEntityPayload { + heart_state: HeartState, + }, + #[serde(other, deserialize_with = "deserialize_ignore_any")] + None, +} + +#[serde_as] +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct CommentEntityPayload { + pub properties: CommentProperties, + #[serde(default)] + #[serde_as(as = "DefaultOnError")] + pub author: Option, + pub toolbar: CommentToolbar, + #[serde(default)] + pub avatar: ImageView, +} + +#[serde_as] +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct CommentProperties { + #[serde_as(as = "AttributedText")] + pub content: TextComponents, + pub published_time: String, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct CommentAuthor { + pub channel_id: String, + pub display_name: String, + #[serde(default)] + pub is_verified: bool, + #[serde(default)] + pub is_artist: bool, + #[serde(default)] + pub is_creator: bool, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct CommentToolbar { + pub like_count_notliked: String, + pub reply_count: String, +} + +#[derive(Debug, Copy, Clone, Deserialize)] +#[serde(rename_all = "SCREAMING_SNAKE_CASE")] +pub(crate) enum HeartState { + ToolbarHeartStateUnhearted, + ToolbarHeartStateHearted, +} + +impl From for bool { + fn from(value: HeartState) -> Self { + match value { + HeartState::ToolbarHeartStateUnhearted => false, + HeartState::ToolbarHeartStateHearted => true, + } + } +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct ContinuationButton { + pub button_renderer: ContinuationButtonRenderer, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct ContinuationButtonRenderer { + pub command: ContinuationEndpoint, +} 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 new file mode 100644 index 0000000..df3aedb --- /dev/null +++ b/src/client/snapshots/rustypipe__client__video_details__tests__map_comments_20240401_frameworkupd.snap @@ -0,0 +1,691 @@ +--- +source: src/client/video_details.rs +expression: map_res.c +--- +Paginator( + count: Some(20617), + items: [ + Comment( + id: "UgyNTT8uxDEjgYqybIF4AaABAg", + text: RichText([ + Text( + text: "⚠\u{fe0f} Important notice: if you put any symbol immediately after markup, it will not work: *here is the comma*, without space.\n\nYou should leave space before and after , to make it work.\n\nSame for _underscore_, and -hyphen-.\n\nLeave space before opening and after closing underscore and hyphen. Put all dots and commas inside markup.", + ), + ]), + author: Some(ChannelTag( + id: "UCUJfyiofeHQTmxKwZ6cCwIg", + name: "@kibizoid", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/ytc/AIdro_nY2PkIyojDqs9Bk5RY6J90-U7wePswTYl799DNJQ=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "2 years ago (edited)", + like_count: Some(293), + reply_count: 220, + replies: Paginator( + count: Some(220), + items: [], + ctoken: Some("Eg0SC1FpcDFWa1R1TTcwGAYygwEaUBIaVWd5TlRUOHV4REVqZ1lxeWJJRjRBYUFCQWciAggAKhhVQ3lhZmx6ek9IMEdDNjgzRGxRLWZ6d2cyC1FpcDFWa1R1TTcwQAFICoIBAggBQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3lOVFQ4dXhERWpnWXF5YklGNEFhQUJBZw%3D%3D"), + endpoint: browse, + ), + by_owner: false, + pinned: true, + hearted: true, + ), + Comment( + id: "UgycWgNOoon0A4EV9LZ4AaABAg", + text: RichText([ + Text( + text: "Me: tests out fonts\nFriend: Why are you doing this?\nMe: my goals are beyond your understanding", + ), + ]), + author: Some(ChannelTag( + id: "UCr0PeEY_am9P-GobbfvKECw", + name: "@userfjdrg", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/Zr2PmQsrD4obL2n5HS18X3jKXGJ-HFjIJS_OcZv4I5VAk5HuLRCpzFprY5Hh7n23-FCURVJi=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "2 years ago", + like_count: Some(80), + reply_count: 34, + replies: Paginator( + count: Some(34), + items: [], + ctoken: Some("Eg0SC1FpcDFWa1R1TTcwGAYygwEaUBIaVWd5Y1dnTk9vb24wQTRFVjlMWjRBYUFCQWciAggAKhhVQ3lhZmx6ek9IMEdDNjgzRGxRLWZ6d2cyC1FpcDFWa1R1TTcwQAFICoIBAggBQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3ljV2dOT29vbjBBNEVWOUxaNEFhQUJBZw%3D%3D"), + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: true, + ), + Comment( + id: "Ugy5iq4M1c3WS3lGmih4AaABAg", + text: RichText([ + Text( + text: "To-do list\n• be dumb\n• get kicked out when i can legally live alone\n• spend money on pointless things", + ), + ]), + author: Some(ChannelTag( + id: "UCDB5XvpUB8cEvjbWewlp28w", + name: "@T0r0xFan", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/PPL5vj6-pXFpaLa41yet34OHGcEYt06WPQLmruaiFJSM0eLmn9ZQW0QgTtdafDBO-kNy2oukVA=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "2 years ago (edited)", + like_count: Some(48), + reply_count: 22, + replies: Paginator( + count: Some(22), + items: [], + ctoken: Some("Eg0SC1FpcDFWa1R1TTcwGAYygwEaUBIaVWd5NWlxNE0xYzNXUzNsR21paDRBYUFCQWciAggAKhhVQ3lhZmx6ek9IMEdDNjgzRGxRLWZ6d2cyC1FpcDFWa1R1TTcwQAFICoIBAggBQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3k1aXE0TTFjM1dTM2xHbWloNEFhQUJBZw%3D%3D"), + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: true, + ), + Comment( + id: "UgxqDIVVcoigjtx4Dtl4AaABAg", + text: RichText([ + Text( + text: "omg thank you! Ive been looking for this tutorial for a year forever", + ), + ]), + author: Some(ChannelTag( + id: "UCxa4xER0-cFbcIYp0ZIeVaw", + name: "@LunasVibe", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/P5Io1kQb7GRwe4pgNsaYFEm30hDl_T7Tp5rZo7aYWFkqbV6Yp_lCYVuaaK7O3SEsnIX_5iC1Hw=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "1 month ago", + like_count: Some(0), + reply_count: 0, + replies: Paginator( + count: Some(0), + items: [], + ctoken: None, + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: false, + ), + Comment( + id: "UgxDQfVQdYaWR-VUM-94AaABAg", + text: RichText([ + Text( + text: "tysm\ni finally learned it\nother channel never go straight to the point", + ), + ]), + author: Some(ChannelTag( + id: "UC8cojSRuyZT74Bs_b5AecTA", + name: "@Bp_bts_skz_for_life", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/0zFBRYv8wo2JqzkyMk29xgC8zD1nKYNSSoD3Zo9XP8t9rHrbTYEEt0gdu0O3XS7Scpza3JJKog=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "1 month ago (edited)", + like_count: Some(1), + reply_count: 1, + replies: Paginator( + count: Some(1), + items: [], + ctoken: Some("Eg0SC1FpcDFWa1R1TTcwGAYygwEaUBIaVWd4RFFmVlFkWWFXUi1WVU0tOTRBYUFCQWciAggAKhhVQ3lhZmx6ek9IMEdDNjgzRGxRLWZ6d2cyC1FpcDFWa1R1TTcwQAFICoIBAggBQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3hEUWZWUWRZYVdSLVZVTS05NEFhQUJBZw%3D%3D"), + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: false, + ), + Comment( + id: "UgxFvrmwec-jmfQyGRR4AaABAg", + text: RichText([ + Text( + text: "I like how this was straight to the point. Unlike other channels lol Thank you!", + ), + ]), + author: Some(ChannelTag( + id: "UCCyIVS_s1-jA48pPft8AifA", + name: "@ishouldbesleepingalready", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/N90y_XdoDP6Rd1v6Z5OpDH8jMtvqpU1qnF6DJoIL6qcLiWfZK7ok8u_IxqSxJazaQH6oqhEbqA=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "2 years ago", + like_count: Some(241), + reply_count: 65, + replies: Paginator( + count: Some(65), + items: [], + ctoken: Some("Eg0SC1FpcDFWa1R1TTcwGAYygwEaUBIaVWd4RnZybXdlYy1qbWZReUdSUjRBYUFCQWciAggAKhhVQ3lhZmx6ek9IMEdDNjgzRGxRLWZ6d2cyC1FpcDFWa1R1TTcwQAFICoIBAggBQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3hGdnJtd2VjLWptZlF5R1JSNEFhQUJBZw%3D%3D"), + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: false, + ), + Comment( + id: "Ugy-3OYEcwxkvyrrCqN4AaABAg", + text: RichText([ + Text( + text: "To the person who is reading this: You\'re intelligent and smart, stay safe", + ), + ]), + author: Some(ChannelTag( + id: "UCQklgcA8quxZm5pgNAsVJAQ", + name: "@blocking948", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/ytc/AIdro_nAg9bEjW4otWlryJwqAgiDRLzy8ZX-ROqkDY1ksQ=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "3 years ago (edited)", + like_count: Some(711), + reply_count: 250, + replies: Paginator( + count: Some(250), + items: [], + ctoken: Some("Eg0SC1FpcDFWa1R1TTcwGAYygwEaUBIaVWd5LTNPWUVjd3hrdnlyckNxTjRBYUFCQWciAggAKhhVQ3lhZmx6ek9IMEdDNjgzRGxRLWZ6d2cyC1FpcDFWa1R1TTcwQAFICoIBAggBQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3ktM09ZRWN3eGt2eXJyQ3FONEFhQUJBZw%3D%3D"), + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: true, + ), + Comment( + id: "Ugylw3ss_xv9svWbRud4AaABAg", + text: RichText([ + Text( + text: "‘ life could be a dream, life could be a dream ‘", + ), + ]), + author: Some(ChannelTag( + id: "UCSyjdP7Duhns4Ybncy6ObZA", + name: "@malarchee0899", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/dSwRzOfoKrN4yc58uhFlIyqBXmbi6B14-On-wEEM_S6Nr6aDHTkG-xVkI1-u-uBwqKqodEgrMro=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "13 days ago", + like_count: Some(2), + reply_count: 1, + replies: Paginator( + count: Some(1), + items: [], + ctoken: Some("Eg0SC1FpcDFWa1R1TTcwGAYygwEaUBIaVWd5bHczc3NfeHY5c3ZXYlJ1ZDRBYUFCQWciAggAKhhVQ3lhZmx6ek9IMEdDNjgzRGxRLWZ6d2cyC1FpcDFWa1R1TTcwQAFICoIBAggBQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3lsdzNzc194djlzdldiUnVkNEFhQUJBZw%3D%3D"), + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: false, + ), + Comment( + id: "UgydXobRB0F5dW1KVsF4AaABAg", + text: RichText([ + Text( + text: "Woah! thank you for showing me this I really needed it!", + ), + ]), + author: Some(ChannelTag( + id: "UC9f9uJgwsCBBHA4CioIzdkA", + name: "@fatimagarcia3162", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/cKmBVKqq9mkW4F355y3UtUw4POwTWKi-0LUYLDx85vffRd7pU-LECXvudUrHH_9qobo6A1kM=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "1 month ago", + like_count: Some(0), + reply_count: 0, + replies: Paginator( + count: Some(0), + items: [], + ctoken: None, + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: false, + ), + Comment( + id: "UgwmFn6ejKltcZ_BZvl4AaABAg", + text: RichText([ + Text( + text: "The fitness gram pacer test is a multistage aerobic capacity test that progressively gets more difficult as it continues.", + ), + ]), + author: Some(ChannelTag( + id: "UCIymYi-_AJ10pYrh8sqTBTg", + name: "@No-du9is", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/ytc/AIdro_lPWhGGvIIA08s4u_-Lwyx88rGSRksOFeYHipE=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "2 years ago", + like_count: Some(22), + reply_count: 12, + replies: Paginator( + count: Some(12), + items: [], + ctoken: Some("Eg0SC1FpcDFWa1R1TTcwGAYygwEaUBIaVWd3bUZuNmVqS2x0Y1pfQlp2bDRBYUFCQWciAggAKhhVQ3lhZmx6ek9IMEdDNjgzRGxRLWZ6d2cyC1FpcDFWa1R1TTcwQAFICoIBAggBQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3dtRm42ZWpLbHRjWl9CWnZsNEFhQUJBZw%3D%3D"), + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: true, + ), + Comment( + id: "UgxtXH6bWRWm8ahavfR4AaABAg", + text: RichText([ + Text( + text: "YouTube got a new update(or probably it\'s a bug) and for that it\'s not showing bold/strikethrough/italic on the app but it\'s showing on other places.", + ), + ]), + author: Some(ChannelTag( + id: "UCyaflzzOH0GC683DlQ-fzwg", + name: "@HaruXen", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/YMmDD0zp5wT6l5ozqVMEMuqm5W07QFqmMHzOJ9QKGnSf9xpgEQ0rznstfXlBDxlFpLIrltQxRg=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "3 years ago", + like_count: Some(167), + reply_count: 337, + replies: Paginator( + count: Some(337), + items: [], + ctoken: Some("Eg0SC1FpcDFWa1R1TTcwGAYygwEaUBIaVWd4dFhINmJXUldtOGFoYXZmUjRBYUFCQWciAggAKhhVQ3lhZmx6ek9IMEdDNjgzRGxRLWZ6d2cyC1FpcDFWa1R1TTcwQAFICoIBAggBQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3h0WEg2YldSV204YWhhdmZSNEFhQUJBZw%3D%3D"), + endpoint: browse, + ), + by_owner: true, + pinned: false, + hearted: false, + ), + Comment( + id: "UgyHg3XnjBV935da_Lh4AaABAg", + text: RichText([ + Text( + text: "omg it works i actuallly cant believe this ive been wanting to do this for ages thankyou so much!", + ), + ]), + author: Some(ChannelTag( + id: "UCFL5d8rMCfbxppODSbRLOgQ", + name: "@Auf-dem-weg-zum-sieg", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/oi4vbSV3Cx9G97QcHkSMWL98LksC6rnTLoq93T5sOO8MNuZPXWEXq9Nqkp8XYF93L2WklHADmNY=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "4 days ago", + like_count: Some(0), + reply_count: 0, + replies: Paginator( + count: Some(0), + items: [], + ctoken: None, + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: false, + ), + Comment( + id: "UgxIL5emXyn42htlfZZ4AaABAg", + text: RichText([ + Text( + text: "I did know how to do that writing where the text is highlighted before, and now after I watched this video I knew even how to write those styles of text.", + ), + ]), + author: Some(ChannelTag( + id: "UChkVaXCYN_QcaE50zETAMOg", + name: "@CasamTheAnimator", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/ctUbv8QpWPZRZumEBTVhlSSxg0JfiyvJ40nrWj_0ivOy5s6OoPK7iNp01diskRLs1Hig4ZE82w=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "3 weeks ago", + like_count: Some(0), + reply_count: 0, + replies: Paginator( + count: Some(0), + items: [], + ctoken: None, + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: false, + ), + Comment( + id: "UgwMKY-89XCdCVB9bXp4AaABAg", + text: RichText([ + Text( + text: "Nobody asked for, but everyone needed", + ), + ]), + author: Some(ChannelTag( + id: "UCDezbPSXn3awzhxVm7qhGtg", + name: "@0_Ed", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/4DWdgRIJ0lEV-e4GZFrdf8MGxQBtML2aix2orKBt3iM6QBrh7Kg1ur1FZlyRmqWpWnRPRIex9w=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "3 years ago", + like_count: Some(12), + reply_count: 5, + replies: Paginator( + count: Some(5), + items: [], + ctoken: Some("Eg0SC1FpcDFWa1R1TTcwGAYygwEaUBIaVWd3TUtZLTg5WENkQ1ZCOWJYcDRBYUFCQWciAggAKhhVQ3lhZmx6ek9IMEdDNjgzRGxRLWZ6d2cyC1FpcDFWa1R1TTcwQAFICoIBAggBQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3dNS1ktODlYQ2RDVkI5YlhwNEFhQUJBZw%3D%3D"), + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: true, + ), + Comment( + id: "UgyfuG2sCDvgnRUYHJp4AaABAg", + text: RichText([ + Text( + text: "me: types bold\n\nHaruTutorial: your bald", + ), + ]), + author: Some(ChannelTag( + id: "UCge96FdHXkARBjzPhdYl8Sg", + name: "@stargazeu", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/JoeW_qNuf9b6BusB3E6JShizqRLB4jR3NaTnsnzvpUQ1KW88OcS74_Sx1h6vjZiXK2uOxnrUNeY=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "3 years ago", + like_count: Some(42), + reply_count: 15, + replies: Paginator( + count: Some(15), + items: [], + ctoken: Some("Eg0SC1FpcDFWa1R1TTcwGAYygwEaUBIaVWd5ZnVHMnNDRHZnblJVWUhKcDRBYUFCQWciAggAKhhVQ3lhZmx6ek9IMEdDNjgzRGxRLWZ6d2cyC1FpcDFWa1R1TTcwQAFICoIBAggBQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3lmdUcyc0NEdmduUlVZSEpwNEFhQUJBZw%3D%3D"), + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: true, + ), + Comment( + id: "UgwAXndNNEa1h-VVIC94AaABAg", + text: RichText([ + Text( + text: "the McDonald’s don’t feel like turning the Icecream machine on", + ), + ]), + author: Some(ChannelTag( + id: "UCkmY4kQ8e8gDRllV485Rd9g", + name: "@Flowershowrise", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/c2iMsq-wFjKRjTDqPy14UpMI1B9hNms4moW9H7xtPjOMI0vjaHwN94me23upYar-8CE3s6QkFw=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "1 month ago", + like_count: Some(2), + reply_count: 0, + replies: Paginator( + count: Some(0), + items: [], + ctoken: None, + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: false, + ), + Comment( + id: "UgwwEBqareQ0tpsW7RR4AaABAg", + text: RichText([ + Text( + text: "YOOO THIS IS SICK! THANK YOU MAN!", + ), + ]), + author: Some(ChannelTag( + id: "UChIbg4dGguUwzg7O-xmi57g", + name: "@ziaaaaa.", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/HEAdH93oAQu2ScXNmiKIISapv5O9dKSVLuT3gD1zJhSgHqTaptL7JPun6A5GZqg58_C75_OPkQ=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "1 month ago", + like_count: Some(0), + reply_count: 0, + replies: Paginator( + count: Some(0), + items: [], + ctoken: None, + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: false, + ), + Comment( + id: "UgxnFMLrpvbCWzHidml4AaABAg", + text: RichText([ + Text( + text: "Someone must honor him , this man is the best , no , he is a LEGEND . We must all thank him for his video and for getting to the point immediately.", + ), + ]), + author: Some(ChannelTag( + id: "UCeGJuvHZqqebHTE_Kz2zyug", + name: "@Dahackabarade", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/csf-cEr2z4uWg8ZpVEPqgS2D2ZUHKBAJWnIbnzQCRtAlioSlUbtQZAyx76tnyfpXpixrsKke6DE=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "2 years ago (edited)", + like_count: Some(11), + reply_count: 5, + replies: Paginator( + count: Some(5), + items: [], + ctoken: Some("Eg0SC1FpcDFWa1R1TTcwGAYygwEaUBIaVWd4bkZNTHJwdmJDV3pIaWRtbDRBYUFCQWciAggAKhhVQ3lhZmx6ek9IMEdDNjgzRGxRLWZ6d2cyC1FpcDFWa1R1TTcwQAFICoIBAggBQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3huRk1McnB2YkNXekhpZG1sNEFhQUJBZw%3D%3D"), + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: false, + ), + Comment( + id: "UgwCIwmF6synP7UF_wV4AaABAg", + text: RichText([ + Text( + text: "Never gonna give you up. Im gonna let u down", + ), + ]), + author: Some(ChannelTag( + id: "UCyrDrBrWvXwIhf2s2F1dq-Q", + name: "@imnotjust...2326", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/Clzb1GD_KnRm9u7mOAN165HZO_H0jhXQlRG8YvEjqkDuBUNibGkclRyRZIdhi-yJhC4hHorGLQ=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "2 years ago", + like_count: Some(14), + reply_count: 0, + replies: Paginator( + count: Some(0), + items: [], + ctoken: None, + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: true, + ), + Comment( + id: "Ugyb5Wy91Yon69o3wLh4AaABAg", + text: RichText([ + Text( + text: "Thank you for being A Legend No, The Goat Lets go dude", + ), + ]), + author: Some(ChannelTag( + id: "UCPCgaC_EJlS5RpRRWPHWvKA", + name: "@gfghdgfghd6391", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/ytc/AIdro_n0lpwvjOP9HO_XHxzInwQoqQ7qIXeR0SqZVbCE=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "1 month ago", + like_count: Some(0), + reply_count: 0, + replies: Paginator( + count: Some(0), + items: [], + ctoken: None, + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: false, + ), + ], + ctoken: Some("Eg0SC1FpcDFWa1R1TTcwGAYy4gIKuAJnZXRfcmFua2VkX3N0cmVhbXMtLUNxWUJDSUFFRlJlMzBUZ2Ftd0VLbGdFSTJGOFFnQVFZQnlLTEFSdUNtdFZ5a3dZMFFzVVVvM3I0LUY0OWU2d3RGSGFjbDIxS0Nsd3M4ZFZNaGdDdm9VWFhac2NZNXVncURIaUNiQVpveUczUEh6MTRPQ0tJV1BZTm9PTnN6dlFPVDZkaFZXMGRiSlZNelJXSW5QTm5QY0pyTmhQbzAyT1ZuamlVcHJTTHc1UEZxVHFBRkxlYXEtSHQtdU5uZkp1SzItMXVhQkp2aWE3S183QzgzOURiekJhY2tFeVRzUUFRRkJJRkNJZ2dHQUFTQndpSElCQUJHQUFTQlFpb0lCZ0FFZ1VJaVNBWUFCSUhDSVVnRUFrWUFSSUhDSVFnRUFzWUFSZ0EiESILUWlwMVZrVHVNNzAwAHgBKBRCEGNvbW1lbnRzLXNlY3Rpb24%3D"), + endpoint: browse, +) 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 new file mode 100644 index 0000000..71403ef --- /dev/null +++ b/src/client/snapshots/rustypipe__client__video_details__tests__map_comments_20240401_frameworkupd_reply.snap @@ -0,0 +1,351 @@ +--- +source: src/client/video_details.rs +expression: map_res.c +--- +Paginator( + count: None, + items: [ + Comment( + id: "Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-GzThFMUcw", + text: RichText([ + Text( + text: "Fact🙌🏻", + ), + ]), + author: Some(ChannelTag( + id: "UC4I0-MXGyTRsc1tsJrDMh2A", + name: "@Sadaf788", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/uIXOBEBIhYn6Y8cQHlhaGGnCqOqS8PI5YR_Cx28qR_Y_p1qkjHC8V68iwxfeJ20eQ3zp81owJ64=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "2 months ago", + like_count: Some(800), + reply_count: 0, + replies: Paginator( + count: Some(0), + items: [], + ctoken: None, + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: false, + ), + Comment( + id: "Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-H295I5iMZ", + text: RichText([ + Text( + text: "Facts", + ), + ]), + author: Some(ChannelTag( + id: "UCdJ0CAWWa1rRjRbVrQUrU_w", + name: "@Biggest_Onceu", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/dHe_Zmr-7EueUz0R-BbuFoGwRyNMXwa3gb_GJMgAie9yU5PM6LbgTlNJ1zivRxnjiFg2nrlF1Es=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "2 months ago", + like_count: Some(530), + reply_count: 0, + replies: Paginator( + count: Some(0), + items: [], + ctoken: None, + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: false, + ), + Comment( + id: "Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-H73oLoHkI", + text: RichText([ + Text( + text: "Faacttts", + ), + ]), + author: Some(ChannelTag( + id: "UCPPhfcNhQ768F0Hhk3-25hA", + name: "@neni996", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/t__fCiOIhKCg2BwaxaRog9F_a5uemd8rTEvwzWYl6WeLn-nN9xEW0FvxUtM0fQrh2Dj_6ENsGQ=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "2 months ago", + like_count: Some(412), + reply_count: 0, + replies: Paginator( + count: Some(0), + items: [], + ctoken: None, + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: false, + ), + Comment( + id: "Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-H7nBbPD5z", + text: RichText([ + Text( + text: "REAL", + ), + ]), + author: Some(ChannelTag( + id: "UCQyomFJDEQtC2lbQ6E7QUGA", + name: "@momolvs", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/nt6GjcwAs8NPgaF29pn-cHTPmPAwQC_e_lXQHGDjZJGSRKzsH4s3le8Wpg0ByAUvPwTSHWe0OA=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "2 months ago", + like_count: Some(312), + reply_count: 0, + replies: Paginator( + count: Some(0), + items: [], + ctoken: None, + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: false, + ), + Comment( + id: "Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-H9s3LvStZ", + text: RichText([ + Text( + text: "FR!!", + ), + ]), + author: Some(ChannelTag( + id: "UC9HOPOf3gD3aw6Ej9WZ-rYg", + name: "@user-vv9yp1fh8w", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/ytc/AIdro_nqyUCWW7jqWrg_39XNQ18-acPouL6wyHeQnZOMbmlSa9x2YGWINkfU1DLcvaXw=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "2 months ago", + like_count: Some(187), + reply_count: 0, + replies: Paginator( + count: Some(0), + items: [], + ctoken: None, + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: false, + ), + Comment( + id: "Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-HB52Dv3SL", + text: RichText([ + Text( + text: "fato.", + ), + ]), + author: Some(ChannelTag( + id: "UCW6ua0VDEFz7SyVMX01fTCA", + name: "@millenatwice", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/rInaNzUF3JLL_pCNfZtZlf2cHipf1yM4grr8VGJRHocwOQiuq1x7kUVi24q3ydtDC0j8bqbw2vA=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "2 months ago", + like_count: Some(165), + reply_count: 0, + replies: Paginator( + count: Some(0), + items: [], + ctoken: None, + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: false, + ), + Comment( + id: "Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-HDLrM1OPD", + text: RichText([ + Text( + text: "For sure!! TWICE is always TWICE!! They always give GOOD MUSIC", + ), + ]), + author: Some(ChannelTag( + id: "UCqDSps4SV0v8Dzf8esr6ScQ", + name: "@Its_me_hi_good", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/ytc/AIdro_nfh9rWK7_gae1YkUgKuq13G9OUpxQCqrXAAi1hfPkCvHeHORbq3DUTYm7b5eoy=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "2 months ago", + like_count: Some(341), + reply_count: 0, + replies: Paginator( + count: Some(0), + items: [], + ctoken: None, + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: false, + ), + Comment( + id: "Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-HIAbm3Him", + text: RichText([ + Text( + text: "Fr", + ), + ]), + author: Some(ChannelTag( + id: "UCFA4BaLyvM1DDNsFyE_BHqQ", + name: "@amanpreetbrar7836", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/ytc/AIdro_n1M-xxgSLIqe17kDv-i-tPn23FT1ywabpRAQ=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "2 months 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, + ), + Comment( + id: "Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-HIrpOKIi7", + text: RichText([ + Text( + text: "Presave I got you and with youth on spotify", + ), + ]), + author: Some(ChannelTag( + id: "UCxMDESp088wGItVM4xXACgw", + name: "@RitaOnce9", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/hVTumbLCpmtJw0c2mq1B-ES5W3kdYPqnNrtzEcUhxCoUN6dAutXc6exaPRnBMLM6Jw1ILPoBDg=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "2 months ago", + like_count: Some(112), + reply_count: 0, + replies: Paginator( + count: Some(0), + items: [], + ctoken: None, + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: false, + ), + Comment( + id: "Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-HKMOSBnLK", + text: RichText([ + Text( + text: "real", + ), + ]), + author: Some(ChannelTag( + id: "UCqeOr9ddrs_d6OgboKjk6zw", + name: "@twiceupremacy", + avatar: [ + Thumbnail( + url: "https://yt3.ggpht.com/ytc/AIdro_lpKYjxtRm1HSjv3tFvGwrvnRILmJoQrPTBBOFG=s88-c-k-c0x00ffffff-no-rj", + width: 88, + height: 88, + ), + ], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: "2 months ago", + like_count: Some(75), + reply_count: 0, + replies: Paginator( + count: Some(0), + items: [], + ctoken: None, + endpoint: browse, + ), + by_owner: false, + pinned: false, + hearted: false, + ), + ], + ctoken: Some("Eg0SC2hhZjY3ZUtGMHVvGAYy1wEKUGdldF9jb21tZW50X3dpdGhfcmVwbGllc19zdHJlYW0tLUNnZ0lnQVFWRjdmUk9CSUZDS0FnR0FFWUFDSU9DZ3dJeXUzdXJRWVE2Tkt2NGdFGlASGlVnenUtdDQ4dlY5U2pkZVdJTWg0QWFBQkFnIgIIACoYVUNhTzZUWXRsQzhVNXR0ejYyaFRyWmdnMgtoYWY2N2VLRjB1b0AASDKCAQIIASgKQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZw%3D%3D"), + endpoint: browse, +) diff --git a/src/client/video_details.rs b/src/client/video_details.rs index 107843e..d08d0a2 100644 --- a/src/client/video_details.rs +++ b/src/client/video_details.rs @@ -1,4 +1,4 @@ -use std::fmt::Debug; +use std::{collections::HashMap, fmt::Debug}; use serde::Serialize; @@ -6,7 +6,7 @@ use crate::{ error::{Error, ExtractionError}, model::{ paginator::{ContinuationEndpoint, Paginator}, - ChannelTag, Chapter, Comment, VideoDetails, VideoItem, + ChannelTag, Chapter, Comment, Verification, VideoDetails, VideoItem, }, param::Language, serializer::MapResult, @@ -14,7 +14,7 @@ use crate::{ }; use super::{ - response::{self, IconType}, + response::{self, video_details::Payload, IconType}, ClientType, MapResponse, QContinuation, RustyPipeQuery, YTContext, }; @@ -391,44 +391,73 @@ impl MapResponse> for response::VideoComments { _vdata: Option<&str>, ) -> Result>, ExtractionError> { let received_endpoints = self.on_response_received_endpoints; - let mut warnings = received_endpoints.warnings; + let mut warnings = Vec::new(); let mut comments = Vec::new(); let mut comment_count = None; let mut ctoken = None; + let mut mutations = if let Some(upd) = self.framework_updates { + let mut m = upd.entity_batch_update.mutations; + warnings.append(&mut m.warnings); + m.items + } else { + HashMap::new() + }; + received_endpoints.c.into_iter().for_each(|citem| { let mut items = citem.append_continuation_items_action.continuation_items; warnings.append(&mut items.warnings); items.c.into_iter().for_each(|item| match item { - response::video_details::CommentListItem::CommentThreadRenderer { - comment, - replies, - rendering_priority, - } => { - let mut res = map_comment( - comment.comment_renderer, - Some(replies), - rendering_priority, - lang, - ); - comments.push(res.c); - warnings.append(&mut res.warnings); + response::video_details::CommentListItem::CommentThreadRenderer(thread) => { + if let Some(comment) = thread.comment { + comments.push(map_comment( + comment.comment_renderer, + Some(thread.replies), + thread.rendering_priority, + lang, + &mut warnings, + )); + } else if let Some(vm) = thread.comment_view_model { + if let Some(c) = map_comment_vm( + vm.comment_view_model, + &mut mutations, + Some(thread.replies), + thread.rendering_priority, + lang, + &mut warnings, + ) { + comments.push(c); + } + } else { + warnings.push( + "comment does not contain comment or commentViewModel field".to_owned(), + ); + } } response::video_details::CommentListItem::CommentRenderer(comment) => { - let mut res = map_comment( + comments.push(map_comment( comment, None, response::video_details::CommentPriority::RenderingPriorityUnknown, lang, - ); - comments.push(res.c); - warnings.append(&mut res.warnings); + &mut warnings, + )); } - response::video_details::CommentListItem::ContinuationItemRenderer { - continuation_endpoint, - } => { - ctoken = Some(continuation_endpoint.continuation_command.token); + response::video_details::CommentListItem::CommentViewModel(vm) => { + if let Some(c) = map_comment_vm( + vm, + &mut mutations, + None, + response::video_details::CommentPriority::RenderingPriorityUnknown, + lang, + &mut warnings, + ) { + comments.push(c); + } + } + response::video_details::CommentListItem::ContinuationItemRenderer(cont) => { + ctoken = Some(cont.token()); } response::video_details::CommentListItem::CommentsHeaderRenderer { count_text } => { comment_count = count_text @@ -471,87 +500,152 @@ fn map_recommendations( } } +fn map_replies( + replies: Option, + lang: Language, + warnings: &mut Vec, +) -> (Vec, Option) { + let mut reply_ctoken = None; + let replies = replies + .map(|replies| { + replies + .comment_replies_renderer + .contents + .into_iter() + .filter_map(|item| match item { + response::video_details::CommentListItem::CommentRenderer(comment) => { + Some(map_comment( + comment, + None, + response::video_details::CommentPriority::default(), + lang, + warnings, + )) + } + response::video_details::CommentListItem::ContinuationItemRenderer(cont) => { + reply_ctoken = Some(cont.token()); + None + } + _ => None, + }) + .collect::>() + }) + .unwrap_or_default(); + (replies, reply_ctoken) +} + fn map_comment( c: response::video_details::CommentRenderer, replies: Option, priority: response::video_details::CommentPriority, lang: Language, -) -> MapResult { - let mut warnings = Vec::new(); + warnings: &mut Vec, +) -> Comment { + let (replies, reply_ctoken) = map_replies(replies, lang, warnings); - let mut reply_ctoken = None; - let replies = replies.map(|replies| { - replies - .comment_replies_renderer - .contents - .into_iter() - .filter_map(|item| match item { - response::video_details::CommentListItem::CommentRenderer(comment) => { - let mut res = map_comment( - comment, - None, - response::video_details::CommentPriority::default(), - lang, - ); - warnings.append(&mut res.warnings); - Some(res.c) - } - response::video_details::CommentListItem::ContinuationItemRenderer { - continuation_endpoint, - } => { - reply_ctoken = Some(continuation_endpoint.continuation_command.token); - None - } - _ => None, - }) - .collect::>() - }); - - MapResult { - c: Comment { - id: c.comment_id, - text: c.content_text.into(), - author: match (c.author_endpoint, c.author_text) { - (Some(aep), Some(name)) => Some(ChannelTag { - id: aep.browse_endpoint.browse_id, - name, - avatar: c.author_thumbnail.into(), - verification: c - .author_comment_badge - .map(|b| b.author_comment_badge_renderer.icon.into()) - .unwrap_or_default(), - subscriber_count: None, - }), - _ => None, - }, - publish_date: timeago::parse_timeago_dt_or_warn( - lang, - &c.published_time_text, - &mut warnings, - ), - publish_date_txt: c.published_time_text, - like_count: match c.vote_count { - Some(txt) => util::parse_numeric_or_warn(&txt, &mut warnings), - None => Some(0), - }, - reply_count: c.reply_count as u32, - replies: replies - .map(|items| Paginator::new(Some(c.reply_count), items, reply_ctoken)) - .unwrap_or_default(), - by_owner: c.author_is_channel_owner, - pinned: priority - == response::video_details::CommentPriority::RenderingPriorityPinnedComment, - hearted: c - .action_buttons - .comment_action_buttons_renderer - .creator_heart - .map(|h| h.creator_heart_renderer.is_hearted) - .unwrap_or_default(), + Comment { + id: c.comment_id, + text: c.content_text.into(), + author: match (c.author_endpoint, c.author_text) { + (Some(aep), Some(name)) => Some(ChannelTag { + id: aep.browse_endpoint.browse_id, + name, + avatar: c.author_thumbnail.into(), + verification: c + .author_comment_badge + .map(|b| b.author_comment_badge_renderer.icon.into()) + .unwrap_or_default(), + subscriber_count: None, + }), + _ => None, }, - warnings, + publish_date: timeago::parse_timeago_dt_or_warn(lang, &c.published_time_text, warnings), + publish_date_txt: c.published_time_text, + like_count: match c.vote_count { + Some(txt) => util::parse_numeric_or_warn(&txt, warnings), + None => Some(0), + }, + reply_count: c.reply_count as u32, + replies: Paginator::new(Some(c.reply_count), replies, reply_ctoken), + by_owner: c.author_is_channel_owner, + pinned: priority.into(), + hearted: c + .action_buttons + .comment_action_buttons_renderer + .creator_heart + .map(|h| h.creator_heart_renderer.is_hearted) + .unwrap_or_default(), } } +fn map_comment_vm( + vm: response::video_details::CommentViewModel, + mutations: &mut HashMap, + replies: Option, + priority: response::video_details::CommentPriority, + lang: Language, + warnings: &mut Vec, +) -> Option { + let (replies, reply_ctoken) = map_replies(replies, lang, warnings); + + let ce = if let Some(Payload::CommentEntityPayload(ce)) = mutations.remove(&vm.comment_key) { + ce + } else { + warnings.push(format!( + "comment `{}` does not have entity payload (key: `{}`)", + vm.comment_id, vm.comment_key + )); + return None; + }; + let hearted = if let Some(Payload::EngagementToolbarStateEntityPayload { heart_state }) = + mutations.get(&vm.toolbar_state_key) + { + (*heart_state).into() + } else { + false + }; + + let mut parse_num = |s: &str| -> Option { + if s.is_empty() || s == " " { + Some(0) + } else { + util::parse_large_numstr_or_warn(s, lang, warnings) + } + }; + + let reply_count = parse_num(&ce.toolbar.reply_count).unwrap_or_default(); + + Some(Comment { + id: vm.comment_id, + text: 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, + name: a.display_name, + avatar: ce.avatar.image.into(), + verification: if a.is_artist { + Verification::Artist + } else if a.is_verified { + Verification::Verified + } else { + Verification::None + }, + subscriber_count: None, + }), + like_count: parse_num(&ce.toolbar.like_count_notliked), + reply_count, + replies: Paginator::new(Some(reply_count.into()), replies, reply_ctoken), + publish_date: timeago::parse_timeago_dt_or_warn( + lang, + &ce.properties.published_time, + warnings, + ), + publish_date_txt: ce.properties.published_time, + pinned: priority.into(), + hearted, + }) +} + #[cfg(test)] mod tests { use std::{fs::File, io::BufReader}; @@ -614,6 +708,8 @@ mod tests { #[rstest] #[case::top("top")] #[case::latest("latest")] + #[case::frameworkupd("20240401_frameworkupd")] + #[case::frameworkupd_reply("20240401_frameworkupd_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_20240401_frameworkupd.json b/testfiles/video_details/comments_20240401_frameworkupd.json new file mode 100644 index 0000000..00b9951 --- /dev/null +++ b/testfiles/video_details/comments_20240401_frameworkupd.json @@ -0,0 +1,13159 @@ +{ + "responseContext": { + "serviceTrackingParams": [ + { + "service": "CSI", + "params": [ + { "key": "c", "value": "WEB" }, + { + "key": "cver", + "value": "2.20240328.07.00-canary_experiment_2.20240327.00.00" + }, + { "key": "yt_li", "value": "0" }, + { + "key": "GetWatchPageWebTopLevelComments_rid", + "value": "0xfaf1213bff919a30" + } + ] + }, + { + "service": "GFEEDBACK", + "params": [ + { "key": "logged_in", "value": "0" }, + { + "key": "e", + "value": "23804281,23858057,23946420,23966208,23983296,23998056,24004644,24007613,24036948,24077241,24080738,24120820,24135310,24166867,24181174,24187377,24208765,24241378,24290971,24377598,24407446,24425061,24439361,24451319,24453989,24468724,24506784,24515423,24524098,24524562,24542367,24547316,24548627,24548629,24550458,24560416,24566687,24690004,24697068,24699899,39325978,51003636,51006181,51009781,51010235,51012659,51014091,51016856,51017346,51017378,51019626,51020570,51025415,51026715,51027870,51030101,51033399,51033765,51037330,51037342,51037349,51037540,51038805,51039200,51040842,51048489,51050361,51053689,51053731,51057501,51057846,51057855,51060353,51063363,51063643,51064835,51069269,51072748,51073089,51074183,51074739,51076170,51078191,51079239,51079303,51080341,51080402,51082236,51083234,51084267,51084279,51084292,51089177,51089441,51089956,51091331,51091812,51092557,51092661,51092916,51092929,51094175,51094202,51094209,51095478,51096389,51096577,51096646,51096989,51098297,51098299,51099412,51101454,51103518,51103858,51104988,51105868,51106995,51107331,51107338,51108006,51108620,51108977,51109077,51110160,51111738,51112970,51112972,51113658,51113663,51115184,51116067,51118293,51118456,51118564,51118932,51119507,51119512,51120953,51121939,51122047,51123077,51124104,51124478,51125903,51127561,51128585,51129216,51129218,51129220,51129222,51129224,51129395,51130324,51131075,51132393,51134988,51135346,51135654,51136141,51136149,51136217,51136785,51136843,51137135,51137185,51137715,51139378,51140749,51141384,51141542,51141765,51141798,51142470,51142659,51142840,51142842,51143318,51145218,51146434,51146962,51147091,51148978,51148981,51149607,51152049,51152100,51152207,51152444,51152508" + } + ] + }, + { "service": "GUIDED_HELP", "params": [{ "key": "logged_in", "value": "0" }] }, + { + "service": "ECATCHER", + "params": [ + { "key": "client.version", "value": "2.20240328" }, + { "key": "client.name", "value": "WEB" } + ] + } + ], + "mainAppWebResponseContext": { + "loggedOut": true, + "trackingParam": "kx_fmPxhoPZRKJK1g3pqzkARnjmzwieLvFwbbXj94cnLL4HRgkussh7BwOcCE59TDtslLKPQ-SS" + }, + "webResponseContextExtensionData": { "hasDecorated": true } + }, + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKOCAR0IygEQuy8YAyITCLzzxtqYoYUDFVtBegUdPpAJAg==", + "onResponseReceivedEndpoints": [ + { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "reloadContinuationItemsCommand": { + "targetId": "comments-section", + "continuationItems": [ + { + "commentsHeaderRenderer": { + "countText": { "runs": [{ "text": "20,617" }, { "text": " Comments" }] }, + "createRenderer": { + "commentSimpleboxRenderer": { + "authorThumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/a/default-user=s48-c-k-c0x00ffffff-no-rj", + "width": 48, + "height": 48 + }, + { + "url": "https://yt3.ggpht.com/a/default-user=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + }, + { + "url": "https://yt3.ggpht.com/a/default-user=s176-c-k-c0x00ffffff-no-rj", + "width": 176, + "height": 176 + } + ], + "accessibility": { + "accessibilityData": { "label": "Default profile photo" } + } + }, + "placeholderText": { "runs": [{ "text": "Add a comment..." }] }, + "prepareAccountEndpoint": { + "clickTrackingParams": "CH8QwXUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CH8QwXUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + }, + "trackingParams": "CH8QwXUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "avatarSize": "SIMPLEBOX_AVATAR_SIZE_TYPE_DEFAULT", + "emojiButton": { + "buttonRenderer": { + "size": "SIZE_SMALL", + "icon": { "iconType": "EMOJI" }, + "trackingParams": "CIkBEPBbIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "accessibilityData": { + "accessibilityData": { "label": "Show emoji picker" } + } + } + }, + "emojiPicker": { + "emojiPickerRenderer": { + "id": "emoji", + "categories": [ + { + "emojiPickerCategoryRenderer": { + "categoryId": "UCkszU2WH9gy1mb0dV-11UJg", + "title": { "simpleText": "YouTube" }, + "emojiIds": [ + "UCkszU2WH9gy1mb0dV-11UJg/G8AfY6yWGuKuhL0PlbiA2AE", + "UCkszU2WH9gy1mb0dV-11UJg/KsIfY6LzFoLM6AKanYDQAg", + "UCkszU2WH9gy1mb0dV-11UJg/W8IfY_bwAfiPq7IPvNCA2AU", + "UCkszU2WH9gy1mb0dV-11UJg/b8IfY7zOK9iVkNAP_I2A-AY", + "UCkszU2WH9gy1mb0dV-11UJg/hcIfY57lBJXp6AKBx4CoCA", + "UCkszU2WH9gy1mb0dV-11UJg/ssIfY7OFG5OykQOpn4CQCw", + "UCkszU2WH9gy1mb0dV-11UJg/xsIfY4OqCd2T29sP54iAsAw", + "UCkszU2WH9gy1mb0dV-11UJg/2sIfY8vIG8z96ALulYDQDQ", + "UCkszU2WH9gy1mb0dV-11UJg/7cIfY5niDOmSkNAP08CA6A4", + "UCkszU2WH9gy1mb0dV-11UJg/A8MfY-_pEIKNr8oP78-AGA", + "UCkszU2WH9gy1mb0dV-11UJg/E8MfY5u7JPSXkNAP95GAmAE", + "UCkszU2WH9gy1mb0dV-11UJg/LsMfY8P6G-yckNAPjoWA8AI", + "UCkszU2WH9gy1mb0dV-11UJg/Z8MfY8mzLbnovwK5roC4Bg", + "UCkszU2WH9gy1mb0dV-11UJg/hcMfY5_zAbbxvwKLooCoCA", + "UCkszU2WH9gy1mb0dV-11UJg/ygF1XpGUMMjk8gSDrI2wCx", + "UCkszU2WH9gy1mb0dV-11UJg/m8MfY4jbFsWJhL0PyouA2Ak", + "UCkszU2WH9gy1mb0dV-11UJg/6_cfY8HJH8bV5QS5yYDYDg", + "UCkszU2WH9gy1mb0dV-11UJg/DfgfY9LaNdmMq7IPuI2AaA", + "UCkszU2WH9gy1mb0dV-11UJg/HvgfY93GEYmqvwLUuYDwAQ", + "UCkszU2WH9gy1mb0dV-11UJg/NvgfY9aeC_OFvOMPkrOAsAM", + "UCkszU2WH9gy1mb0dV-11UJg/UvgfY_vqE92T29sPvqiAkAU", + "UCkszU2WH9gy1mb0dV-11UJg/YvgfY-LIBpjChgHKyYCQBg", + "UCkszU2WH9gy1mb0dV-11UJg/ePgfY-K2Kp6Mr8oP1oqAwAc", + "UCkszU2WH9gy1mb0dV-11UJg/jPgfY5j2IIud29sP3ZeA4Ag", + "UCkszU2WH9gy1mb0dV-11UJg/oPgfY_DoKfSXkNAPq8-AgAo", + "UCkszU2WH9gy1mb0dV-11UJg/tPgfY7mSO4XovQKzmYCgCw", + "UCkszU2WH9gy1mb0dV-11UJg/zPgfY66lCJGRhL0Pz6iA4Aw", + "UCkszU2WH9gy1mb0dV-11UJg/4PgfY73cJprKCq-_gIAO", + "UCkszU2WH9gy1mb0dV-11UJg/-fgfY9DIGYjbhgHLzoDIDw", + "UCkszU2WH9gy1mb0dV-11UJg/EvkfY6uNC5OykQOewoCQAQ", + "UCkszU2WH9gy1mb0dV-11UJg/LfkfY_zhH4GFr8oP4aKA6AI", + "UCkszU2WH9gy1mb0dV-11UJg/RPkfY8TPGsCakNAP-JWAoAQ", + "UCkszU2WH9gy1mb0dV-11UJg/Mm5IY53bH7SEq7IP-MWAkAM", + "UCkszU2WH9gy1mb0dV-11UJg/UW5IY-ibBqa8jgTymoCIBQ", + "UCkszU2WH9gy1mb0dV-11UJg/Ym5IY7-0LoqA29sPq9CAkAY", + "UCkszU2WH9gy1mb0dV-11UJg/dG5IY-mhEof9jgSykoCgBw", + "UCkszU2WH9gy1mb0dV-11UJg/hm5IY4W-H9SO5QS6n4CwCA", + "UCkszU2WH9gy1mb0dV-11UJg/mW5IY47PMcSnkMkPo6OAyAk", + "UCkszU2WH9gy1mb0dV-11UJg/rW5IY_26FryOq7IPlL2A6Ao", + "UCkszU2WH9gy1mb0dV-11UJg/v25IY7KcJIGOr8oPz4OA-As", + "UCkszU2WH9gy1mb0dV-11UJg/face-turquoise-speaker-shape", + "UCkszU2WH9gy1mb0dV-11UJg/octopus-red-waving", + "UCkszU2WH9gy1mb0dV-11UJg/pillow-turquoise-hot-chocolate", + "UCkszU2WH9gy1mb0dV-11UJg/hourglass-purple-sand-orange", + "UCkszU2WH9gy1mb0dV-11UJg/fish-orange-wide-eyes", + "UCkszU2WH9gy1mb0dV-11UJg/popcorn-yellow-striped-smile", + "UCkszU2WH9gy1mb0dV-11UJg/penguin-blue-waving-tear", + "UCkszU2WH9gy1mb0dV-11UJg/clock-turquoise-looking-up", + "UCkszU2WH9gy1mb0dV-11UJg/face-red-smiling-live", + "UCkszU2WH9gy1mb0dV-11UJg/hands-yellow-heart-red", + "UCkszU2WH9gy1mb0dV-11UJg/volcano-green-lava-orange", + "UCkszU2WH9gy1mb0dV-11UJg/person-turquoise-waving-speech", + "UCkszU2WH9gy1mb0dV-11UJg/face-orange-tv-shape", + "UCkszU2WH9gy1mb0dV-11UJg/face-blue-spam-shape", + "UCkszU2WH9gy1mb0dV-11UJg/face-fuchsia-flower-shape", + "UCkszU2WH9gy1mb0dV-11UJg/person-blue-holding-pencil", + "UCkszU2WH9gy1mb0dV-11UJg/body-turquoise-yoga-pose", + "UCkszU2WH9gy1mb0dV-11UJg/location-yellow-teal-bars", + "UCkszU2WH9gy1mb0dV-11UJg/person-turquoise-writing-headphones", + "UCkszU2WH9gy1mb0dV-11UJg/person-turquoise-wizard-wand", + "UCkszU2WH9gy1mb0dV-11UJg/person-blue-eating-spaghetti", + "UCkszU2WH9gy1mb0dV-11UJg/face-turquoise-music-note", + "UCkszU2WH9gy1mb0dV-11UJg/person-pink-swaying-hair", + "UCkszU2WH9gy1mb0dV-11UJg/person-blue-speaking-microphone", + "UCkszU2WH9gy1mb0dV-11UJg/rocket-red-countdown-liftoff", + "UCkszU2WH9gy1mb0dV-11UJg/face-purple-rain-drops", + "UCkszU2WH9gy1mb0dV-11UJg/face-pink-drinking-tea", + "UCkszU2WH9gy1mb0dV-11UJg/person-purple-stage-event", + "UCkszU2WH9gy1mb0dV-11UJg/face-purple-open-box", + "UCkszU2WH9gy1mb0dV-11UJg/person-yellow-podium-blue", + "UCkszU2WH9gy1mb0dV-11UJg/baseball-white-cap-out", + "UCkszU2WH9gy1mb0dV-11UJg/whistle-red-blow", + "UCkszU2WH9gy1mb0dV-11UJg/person-turquoise-crowd-surf", + "UCkszU2WH9gy1mb0dV-11UJg/finger-red-number-one", + "UCkszU2WH9gy1mb0dV-11UJg/text-yellow-goal", + "UCkszU2WH9gy1mb0dV-11UJg/medal-yellow-first-red", + "UCkszU2WH9gy1mb0dV-11UJg/person-blue-wheelchair-race", + "UCkszU2WH9gy1mb0dV-11UJg/card-red-penalty", + "UCkszU2WH9gy1mb0dV-11UJg/stopwatch-blue-hand-timer", + "UCkszU2WH9gy1mb0dV-11UJg/CIW60IPp_dYCFcuqTgodEu4IlQ", + "UCkszU2WH9gy1mb0dV-11UJg/CN2m5cKr49sCFYbFggodDFEKrg", + "UCkszU2WH9gy1mb0dV-11UJg/X_zdXMHgJaPa8gTGt4f4Ag", + "UCkszU2WH9gy1mb0dV-11UJg/1v50XorRJ8GQ8gTz_prwAg", + "UCkszU2WH9gy1mb0dV-11UJg/8P50XuS9Oo7h8wSqtIagBA", + "UCkszU2WH9gy1mb0dV-11UJg/Fv90Xq-vJcPq8gTqzreQAQ", + "UCkszU2WH9gy1mb0dV-11UJg/Iv90XouTLuOR8gSxxrToBA", + "UCkszU2WH9gy1mb0dV-11UJg/Rf90XtDbG8GQ8gTz_prwAg", + "UCkszU2WH9gy1mb0dV-11UJg/VP90Xv_wG82o8wTCi7CQAw", + "UCkszU2WH9gy1mb0dV-11UJg/dv90XtfhAurw8gTgzar4DA", + "UCkszU2WH9gy1mb0dV-11UJg/hf90Xv-jHeOR8gSxxrToBA", + "UCkszU2WH9gy1mb0dV-11UJg/lP90XvOhCZGl8wSO1JmgAw", + "UCkszU2WH9gy1mb0dV-11UJg/uP90Xq6wNYrK8gTUoo3wAg", + "UCkszU2WH9gy1mb0dV-11UJg/fAF1XtDQMIrK8gTUoo3wAg", + "UCkszU2WH9gy1mb0dV-11UJg/vQF1XpyaG_XG8gTs77bACQ", + "UCkszU2WH9gy1mb0dV-11UJg/ygF1XpGUMMjk8gSDrI2wCw", + "UCkszU2WH9gy1mb0dV-11UJg/8gF1Xp_zK8jk8gSDrI2wCw", + "UCkszU2WH9gy1mb0dV-11UJg/EAJ1XrS7PMGQ8gTz_prwAg", + "UCkszU2WH9gy1mb0dV-11UJg/JAJ1XpGpJYnW8wTupZu4Cw", + "UCkszU2WH9gy1mb0dV-11UJg/PAJ1XsOOI4fegwOo57ewAg", + "UCkszU2WH9gy1mb0dV-11UJg/egJ1XufTKYfegwOo57ewAg" + ], + "trackingParams": "CIgBELeDCBgAIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "categoryType": "CATEGORY_TYPE_GLOBAL" + } + }, + { + "emojiPickerCategoryRenderer": { + "categoryId": "people", + "title": { "simpleText": "People" }, + "emojiIds": [ + "😀", + "😃", + "😄", + "😁", + "😆", + "😅", + "🤣", + "😂", + "🙂", + "🙃", + "😉", + "😊", + "😇", + "🥰", + "😍", + "🤩", + "😘", + "😗", + "☺", + "😚", + "😙", + "🥲", + "😋", + "😛", + "😜", + "🤪", + "😝", + "🤑", + "🤗", + "🤭", + "🤫", + "🤔", + "🤐", + "🤨", + "😐", + "😑", + "😶", + "😶\u200d🌫", + "😏", + "😒", + "🙄", + "😬", + "😮\u200d💨", + "🤥", + "😌", + "😔", + "😪", + "🤤", + "😴", + "😷", + "🤒", + "🤕", + "🤢", + "🤮", + "🤧", + "🥵", + "🥶", + "🥴", + "😵", + "😵\u200d💫", + "🤯", + "🤠", + "🥳", + "🥸", + "😎", + "🤓", + "🧐", + "😕", + "😟", + "🙁", + "☹", + "😮", + "😯", + "😲", + "😳", + "🥺", + "😦", + "😧", + "😨", + "😰", + "😥", + "😢", + "😭", + "😱", + "😖", + "😣", + "😞", + "😓", + "😩", + "😫", + "🥱", + "😤", + "😡", + "😠", + "🤬", + "😈", + "👿", + "💀", + "☠", + "💩", + "🤡", + "👹", + "👺", + "👻", + "👽", + "👾", + "🤖", + "😺", + "😸", + "😹", + "😻", + "😼", + "😽", + "🙀", + "😿", + "😾", + "🙈", + "🙉", + "🙊", + "💋", + "💌", + "💘", + "💝", + "💖", + "💗", + "💓", + "💞", + "💕", + "💟", + "❣", + "💔", + "❤\u200d🔥", + "❤\u200d🩹", + "❤", + "🧡", + "💛", + "💚", + "💙", + "💜", + "🤎", + "🖤", + "🤍", + "💯", + "💢", + "💥", + "💫", + "💦", + "💨", + "🕳", + "💣", + "💬", + "👁\u200d🗨", + "🗨", + "🗯", + "💭", + "💤", + "👋", + "🤚", + "🖐", + "✋", + "🖖", + "👌", + "🤌", + "🤏", + "✌", + "🤞", + "🤟", + "🤘", + "🤙", + "👈", + "👉", + "👆", + "🖕", + "👇", + "☝", + "👍", + "👎", + "✊", + "👊", + "🤛", + "🤜", + "👏", + "🙌", + "👐", + "🤲", + "🤝", + "🙏", + "✍", + "💅", + "🤳", + "💪", + "🦾", + "🦿", + "🦵", + "🦶", + "👂", + "🦻", + "👃", + "🧠", + "🫀", + "🫁", + "🦷", + "🦴", + "👀", + "👁", + "👅", + "👄", + "👶", + "🧒", + "👦", + "👧", + "🧑", + "👱", + "👨", + "🧔", + "🧔\u200d♂", + "🧔\u200d♀", + "👩", + "👱\u200d♀", + "👱\u200d♂", + "🧓", + "👴", + "👵", + "🙍", + "🙍\u200d♂", + "🙍\u200d♀", + "🙎", + "🙎\u200d♂", + "🙎\u200d♀", + "🙅", + "🙅\u200d♂", + "🙅\u200d♀", + "🙆", + "🙆\u200d♂", + "🙆\u200d♀", + "💁", + "💁\u200d♂", + "💁\u200d♀", + "🙋", + "🙋\u200d♂", + "🙋\u200d♀", + "🧏", + "🧏\u200d♂", + "🧏\u200d♀", + "🙇", + "🙇\u200d♂", + "🙇\u200d♀", + "🤦", + "🤦\u200d♂", + "🤦\u200d♀", + "🤷", + "🤷\u200d♂", + "🤷\u200d♀", + "🧑\u200d⚕", + "👨\u200d⚕", + "👩\u200d⚕", + "🧑\u200d🎓", + "👨\u200d🎓", + "👩\u200d🎓", + "🧑\u200d🏫", + "👨\u200d🏫", + "👩\u200d🏫", + "🧑\u200d⚖", + "👨\u200d⚖", + "👩\u200d⚖", + "🧑\u200d🌾", + "👨\u200d🌾", + "👩\u200d🌾", + "🧑\u200d🍳", + "👨\u200d🍳", + "👩\u200d🍳", + "🧑\u200d🔧", + "👨\u200d🔧", + "👩\u200d🔧", + "🧑\u200d🏭", + "👨\u200d🏭", + "👩\u200d🏭", + "🧑\u200d💼", + "👨\u200d💼", + "👩\u200d💼", + "🧑\u200d🔬", + "👨\u200d🔬", + "👩\u200d🔬", + "🧑\u200d💻", + "👨\u200d💻", + "👩\u200d💻", + "🧑\u200d🎤", + "👨\u200d🎤", + "👩\u200d🎤", + "🧑\u200d🎨", + "👨\u200d🎨", + "👩\u200d🎨", + "🧑\u200d✈", + "👨\u200d✈", + "👩\u200d✈", + "🧑\u200d🚀", + "👨\u200d🚀", + "👩\u200d🚀", + "🧑\u200d🚒", + "👨\u200d🚒", + "👩\u200d🚒", + "👮", + "👮\u200d♂", + "👮\u200d♀", + "🕵", + "🕵\u200d♂", + "🕵\u200d♀", + "💂", + "💂\u200d♂", + "💂\u200d♀", + "🥷", + "👷", + "👷\u200d♂", + "👷\u200d♀", + "🤴", + "👸", + "👳", + "👳\u200d♂", + "👳\u200d♀", + "👲", + "🧕", + "🤵", + "🤵\u200d♂", + "🤵\u200d♀", + "👰", + "👰\u200d♂", + "👰\u200d♀", + "🤰", + "🤱", + "👩\u200d🍼", + "👨\u200d🍼", + "🧑\u200d🍼", + "👼", + "🎅", + "🤶", + "🧑\u200d🎄", + "🦸", + "🦸\u200d♂", + "🦸\u200d♀", + "🦹", + "🦹\u200d♂", + "🦹\u200d♀", + "🧙", + "🧙\u200d♂", + "🧙\u200d♀", + "🧚", + "🧚\u200d♂", + "🧚\u200d♀", + "🧛", + "🧛\u200d♂", + "🧛\u200d♀", + "🧜", + "🧜\u200d♂", + "🧜\u200d♀", + "🧝", + "🧝\u200d♂", + "🧝\u200d♀", + "🧞", + "🧞\u200d♂", + "🧞\u200d♀", + "🧟", + "🧟\u200d♂", + "🧟\u200d♀", + "💆", + "💆\u200d♂", + "💆\u200d♀", + "💇", + "💇\u200d♂", + "💇\u200d♀", + "🚶", + "🚶\u200d♂", + "🚶\u200d♀", + "🧍", + "🧍\u200d♂", + "🧍\u200d♀", + "🧎", + "🧎\u200d♂", + "🧎\u200d♀", + "🧑\u200d🦯", + "👨\u200d🦯", + "👩\u200d🦯", + "🧑\u200d🦼", + "👨\u200d🦼", + "👩\u200d🦼", + "🧑\u200d🦽", + "👨\u200d🦽", + "👩\u200d🦽", + "🏃", + "🏃\u200d♂", + "🏃\u200d♀", + "💃", + "🕺", + "🕴", + "👯", + "👯\u200d♂", + "👯\u200d♀", + "🧖", + "🧖\u200d♂", + "🧖\u200d♀", + "🧗", + "🧗\u200d♂", + "🧗\u200d♀", + "🤺", + "🏇", + "⛷", + "🏂", + "🏌", + "🏌\u200d♂", + "🏌\u200d♀", + "🏄", + "🏄\u200d♂", + "🏄\u200d♀", + "🚣", + "🚣\u200d♂", + "🚣\u200d♀", + "🏊", + "🏊\u200d♂", + "🏊\u200d♀", + "⛹", + "⛹\u200d♂", + "⛹\u200d♀", + "🏋", + "🏋\u200d♂", + "🏋\u200d♀", + "🚴", + "🚴\u200d♂", + "🚴\u200d♀", + "🚵", + "🚵\u200d♂", + "🚵\u200d♀", + "🤸", + "🤸\u200d♂", + "🤸\u200d♀", + "🤼", + "🤼\u200d♂", + "🤼\u200d♀", + "🤽", + "🤽\u200d♂", + "🤽\u200d♀", + "🤾", + "🤾\u200d♂", + "🤾\u200d♀", + "🤹", + "🤹\u200d♂", + "🤹\u200d♀", + "🧘", + "🧘\u200d♂", + "🧘\u200d♀", + "🛀", + "🛌", + "🧑\u200d🤝\u200d🧑", + "👭", + "👫", + "👬", + "💏", + "👩\u200d❤\u200d💋\u200d👨", + "👨\u200d❤\u200d💋\u200d👨", + "👩\u200d❤\u200d💋\u200d👩", + "💑", + "👩\u200d❤\u200d👨", + "👨\u200d❤\u200d👨", + "👩\u200d❤\u200d👩", + "👪", + "👨\u200d👩\u200d👦", + "👨\u200d👩\u200d👧", + "👨\u200d👩\u200d👧\u200d👦", + "👨\u200d👩\u200d👦\u200d👦", + "👨\u200d👩\u200d👧\u200d👧", + "👨\u200d👨\u200d👦", + "👨\u200d👨\u200d👧", + "👨\u200d👨\u200d👧\u200d👦", + "👨\u200d👨\u200d👦\u200d👦", + "👨\u200d👨\u200d👧\u200d👧", + "👩\u200d👩\u200d👦", + "👩\u200d👩\u200d👧", + "👩\u200d👩\u200d👧\u200d👦", + "👩\u200d👩\u200d👦\u200d👦", + "👩\u200d👩\u200d👧\u200d👧", + "👨\u200d👦", + "👨\u200d👦\u200d👦", + "👨\u200d👧", + "👨\u200d👧\u200d👦", + "👨\u200d👧\u200d👧", + "👩\u200d👦", + "👩\u200d👦\u200d👦", + "👩\u200d👧", + "👩\u200d👧\u200d👦", + "👩\u200d👧\u200d👧", + "🗣", + "👤", + "👥", + "🫂", + "👣" + ], + "trackingParams": "CIcBELiDCBgBIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "imageLoadingLazy": true, + "categoryType": "CATEGORY_TYPE_UNICODE" + } + }, + { + "emojiPickerCategoryRenderer": { + "categoryId": "nature", + "title": { "simpleText": "Nature" }, + "emojiIds": [ + "🐵", + "🐒", + "🦍", + "🦧", + "🐶", + "🐕", + "🦮", + "🐕\u200d🦺", + "🐩", + "🐺", + "🦊", + "🦝", + "🐱", + "🐈", + "🐈\u200d⬛", + "🦁", + "🐯", + "🐅", + "🐆", + "🐴", + "🐎", + "🦄", + "🦓", + "🦌", + "🦬", + "🐮", + "🐂", + "🐃", + "🐄", + "🐷", + "🐖", + "🐗", + "🐽", + "🐏", + "🐑", + "🐐", + "🐪", + "🐫", + "🦙", + "🦒", + "🐘", + "🦣", + "🦏", + "🦛", + "🐭", + "🐁", + "🐀", + "🐹", + "🐰", + "🐇", + "🐿", + "🦫", + "🦔", + "🦇", + "🐻", + "🐻\u200d❄", + "🐨", + "🐼", + "🦥", + "🦦", + "🦨", + "🦘", + "🦡", + "🐾", + "🦃", + "🐔", + "🐓", + "🐣", + "🐤", + "🐥", + "🐦", + "🐧", + "🕊", + "🦅", + "🦆", + "🦢", + "🦉", + "🦤", + "🪶", + "🦩", + "🦚", + "🦜", + "🐸", + "🐊", + "🐢", + "🦎", + "🐍", + "🐲", + "🐉", + "🦕", + "🦖", + "🐳", + "🐋", + "🐬", + "🦭", + "🐟", + "🐠", + "🐡", + "🦈", + "🐙", + "🐚", + "🐌", + "🦋", + "🐛", + "🐜", + "🐝", + "🪲", + "🐞", + "🦗", + "🪳", + "🕷", + "🕸", + "🦂", + "🦟", + "🪰", + "🪱", + "🦠", + "💐", + "🌸", + "💮", + "🏵", + "🌹", + "🥀", + "🌺", + "🌻", + "🌼", + "🌷", + "🌱", + "🪴", + "🌲", + "🌳", + "🌴", + "🌵", + "🌾", + "🌿", + "☘", + "🍀", + "🍁", + "🍂", + "🍃" + ], + "trackingParams": "CIYBELiDCBgCIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "imageLoadingLazy": true, + "categoryType": "CATEGORY_TYPE_UNICODE" + } + }, + { + "emojiPickerCategoryRenderer": { + "categoryId": "food", + "title": { "simpleText": "Food" }, + "emojiIds": [ + "🍇", + "🍈", + "🍉", + "🍊", + "🍋", + "🍌", + "🍍", + "🥭", + "🍎", + "🍏", + "🍐", + "🍑", + "🍒", + "🍓", + "🫐", + "🥝", + "🍅", + "🫒", + "🥥", + "🥑", + "🍆", + "🥔", + "🥕", + "🌽", + "🌶", + "🫑", + "🥒", + "🥬", + "🥦", + "🧄", + "🧅", + "🍄", + "🥜", + "🌰", + "🍞", + "🥐", + "🥖", + "🫓", + "🥨", + "🥯", + "🥞", + "🧇", + "🧀", + "🍖", + "🍗", + "🥩", + "🥓", + "🍔", + "🍟", + "🍕", + "🌭", + "🥪", + "🌮", + "🌯", + "🫔", + "🥙", + "🧆", + "🥚", + "🍳", + "🥘", + "🍲", + "🫕", + "🥣", + "🥗", + "🍿", + "🧈", + "🧂", + "🥫", + "🍱", + "🍘", + "🍙", + "🍚", + "🍛", + "🍜", + "🍝", + "🍠", + "🍢", + "🍣", + "🍤", + "🍥", + "🥮", + "🍡", + "🥟", + "🥠", + "🥡", + "🦀", + "🦞", + "🦐", + "🦑", + "🦪", + "🍦", + "🍧", + "🍨", + "🍩", + "🍪", + "🎂", + "🍰", + "🧁", + "🥧", + "🍫", + "🍬", + "🍭", + "🍮", + "🍯", + "🍼", + "🥛", + "☕", + "🫖", + "🍵", + "🍶", + "🍾", + "🍷", + "🍸", + "🍹", + "🍺", + "🍻", + "🥂", + "🥃", + "🥤", + "🧋", + "🧃", + "🧉", + "🧊", + "🥢", + "🍽", + "🍴", + "🥄", + "🔪", + "🏺" + ], + "trackingParams": "CIUBELiDCBgDIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "imageLoadingLazy": true, + "categoryType": "CATEGORY_TYPE_UNICODE" + } + }, + { + "emojiPickerCategoryRenderer": { + "categoryId": "travel", + "title": { "simpleText": "Travel" }, + "emojiIds": [ + "🌍", + "🌎", + "🌏", + "🌐", + "🗺", + "🗾", + "🧭", + "🏔", + "⛰", + "🌋", + "🗻", + "🏕", + "🏖", + "🏜", + "🏝", + "🏞", + "🏟", + "🏛", + "🏗", + "🧱", + "🪨", + "🪵", + "🛖", + "🏘", + "🏚", + "🏠", + "🏡", + "🏢", + "🏣", + "🏤", + "🏥", + "🏦", + "🏨", + "🏩", + "🏪", + "🏫", + "🏬", + "🏭", + "🏯", + "🏰", + "💒", + "🗼", + "🗽", + "⛪", + "🕌", + "🛕", + "🕍", + "⛩", + "🕋", + "⛲", + "⛺", + "🌁", + "🌃", + "🏙", + "🌄", + "🌅", + "🌆", + "🌇", + "🌉", + "♨", + "🎠", + "🎡", + "🎢", + "💈", + "🎪", + "🚂", + "🚃", + "🚄", + "🚅", + "🚆", + "🚇", + "🚈", + "🚉", + "🚊", + "🚝", + "🚞", + "🚋", + "🚌", + "🚍", + "🚎", + "🚐", + "🚑", + "🚒", + "🚓", + "🚔", + "🚕", + "🚖", + "🚗", + "🚘", + "🚙", + "🛻", + "🚚", + "🚛", + "🚜", + "🏎", + "🏍", + "🛵", + "🦽", + "🦼", + "🛺", + "🚲", + "🛴", + "🛹", + "🛼", + "🚏", + "🛣", + "🛤", + "🛢", + "⛽", + "🚨", + "🚥", + "🚦", + "🛑", + "🚧", + "⚓", + "⛵", + "🛶", + "🚤", + "🛳", + "⛴", + "🛥", + "🚢", + "✈", + "🛩", + "🛫", + "🛬", + "🪂", + "💺", + "🚁", + "🚟", + "🚠", + "🚡", + "🛰", + "🚀", + "🛸", + "🛎", + "🧳", + "⌛", + "⏳", + "⌚", + "⏰", + "⏱", + "⏲", + "🕰", + "🕛", + "🕧", + "🕐", + "🕜", + "🕑", + "🕝", + "🕒", + "🕞", + "🕓", + "🕟", + "🕔", + "🕠", + "🕕", + "🕡", + "🕖", + "🕢", + "🕗", + "🕣", + "🕘", + "🕤", + "🕙", + "🕥", + "🕚", + "🕦", + "🌑", + "🌒", + "🌓", + "🌔", + "🌕", + "🌖", + "🌗", + "🌘", + "🌙", + "🌚", + "🌛", + "🌜", + "🌡", + "☀", + "🌝", + "🌞", + "🪐", + "⭐", + "🌟", + "🌠", + "🌌", + "☁", + "⛅", + "⛈", + "🌤", + "🌥", + "🌦", + "🌧", + "🌨", + "🌩", + "🌪", + "🌫", + "🌬", + "🌀", + "🌈", + "🌂", + "☂", + "☔", + "⛱", + "⚡", + "❄", + "☃", + "⛄", + "☄", + "🔥", + "💧", + "🌊" + ], + "trackingParams": "CIQBELiDCBgEIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "imageLoadingLazy": true, + "categoryType": "CATEGORY_TYPE_UNICODE" + } + }, + { + "emojiPickerCategoryRenderer": { + "categoryId": "activities", + "title": { "simpleText": "Activities" }, + "emojiIds": [ + "🎃", + "🎄", + "🎆", + "🎇", + "🧨", + "✨", + "🎈", + "🎉", + "🎊", + "🎋", + "🎍", + "🎎", + "🎏", + "🎐", + "🎑", + "🧧", + "🎀", + "🎁", + "🎗", + "🎟", + "🎫", + "🎖", + "🏆", + "🏅", + "🥇", + "🥈", + "🥉", + "⚽", + "⚾", + "🥎", + "🏀", + "🏐", + "🏈", + "🏉", + "🎾", + "🥏", + "🎳", + "🏏", + "🏑", + "🏒", + "🥍", + "🏓", + "🏸", + "🥊", + "🥋", + "🥅", + "⛳", + "⛸", + "🎣", + "🤿", + "🎽", + "🎿", + "🛷", + "🥌", + "🎯", + "🪀", + "🪁", + "🎱", + "🔮", + "🪄", + "🧿", + "🎮", + "🕹", + "🎰", + "🎲", + "🧩", + "🧸", + "🪅", + "🪆", + "♠", + "♥", + "♦", + "♣", + "♟", + "🃏", + "🀄", + "🎴", + "🎭", + "🖼", + "🎨", + "🧵", + "🪡", + "🧶", + "🪢" + ], + "trackingParams": "CIMBELiDCBgFIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "imageLoadingLazy": true, + "categoryType": "CATEGORY_TYPE_UNICODE" + } + }, + { + "emojiPickerCategoryRenderer": { + "categoryId": "objects", + "title": { "simpleText": "Objects" }, + "emojiIds": [ + "👓", + "🕶", + "🥽", + "🥼", + "🦺", + "👔", + "👕", + "👖", + "🧣", + "🧤", + "🧥", + "🧦", + "👗", + "👘", + "🥻", + "🩱", + "🩲", + "🩳", + "👙", + "👚", + "👛", + "👜", + "👝", + "🛍", + "🎒", + "🩴", + "👞", + "👟", + "🥾", + "🥿", + "👠", + "👡", + "🩰", + "👢", + "👑", + "👒", + "🎩", + "🎓", + "🧢", + "🪖", + "⛑", + "📿", + "💄", + "💍", + "💎", + "🔇", + "🔈", + "🔉", + "🔊", + "📢", + "📣", + "📯", + "🔔", + "🔕", + "🎼", + "🎵", + "🎶", + "🎙", + "🎚", + "🎛", + "🎤", + "🎧", + "📻", + "🎷", + "🪗", + "🎸", + "🎹", + "🎺", + "🎻", + "🪕", + "🥁", + "🪘", + "📱", + "📲", + "☎", + "📞", + "📟", + "📠", + "🔋", + "🔌", + "💻", + "🖥", + "🖨", + "⌨", + "🖱", + "🖲", + "💽", + "💾", + "💿", + "📀", + "🧮", + "🎥", + "🎞", + "📽", + "🎬", + "📺", + "📷", + "📸", + "📹", + "📼", + "🔍", + "🔎", + "🕯", + "💡", + "🔦", + "🏮", + "🪔", + "📔", + "📕", + "📖", + "📗", + "📘", + "📙", + "📚", + "📓", + "📒", + "📃", + "📜", + "📄", + "📰", + "🗞", + "📑", + "🔖", + "🏷", + "💰", + "🪙", + "💴", + "💵", + "💶", + "💷", + "💸", + "💳", + "🧾", + "💹", + "✉", + "📧", + "📨", + "📩", + "📤", + "📥", + "📦", + "📫", + "📪", + "📬", + "📭", + "📮", + "🗳", + "✏", + "✒", + "🖋", + "🖊", + "🖌", + "🖍", + "📝", + "💼", + "📁", + "📂", + "🗂", + "📅", + "📆", + "🗒", + "🗓", + "📇", + "📈", + "📉", + "📊", + "📋", + "📌", + "📍", + "📎", + "🖇", + "📏", + "📐", + "✂", + "🗃", + "🗄", + "🗑", + "🔒", + "🔓", + "🔏", + "🔐", + "🔑", + "🗝", + "🔨", + "🪓", + "⛏", + "⚒", + "🛠", + "🗡", + "⚔", + "🔫", + "🪃", + "🏹", + "🛡", + "🪚", + "🔧", + "🪛", + "🔩", + "⚙", + "🗜", + "⚖", + "🦯", + "🔗", + "⛓", + "🪝", + "🧰", + "🧲", + "🪜", + "⚗", + "🧪", + "🧫", + "🧬", + "🔬", + "🔭", + "📡", + "💉", + "🩸", + "💊", + "🩹", + "🩺", + "🚪", + "🛗", + "🪞", + "🪟", + "🛏", + "🛋", + "🪑", + "🚽", + "🪠", + "🚿", + "🛁", + "🪤", + "🪒", + "🧴", + "🧷", + "🧹", + "🧺", + "🧻", + "🪣", + "🧼", + "🪥", + "🧽", + "🧯", + "🛒", + "🚬", + "⚰", + "🪦", + "⚱", + "🗿", + "🪧" + ], + "trackingParams": "CIIBELiDCBgGIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "imageLoadingLazy": true, + "categoryType": "CATEGORY_TYPE_UNICODE" + } + }, + { + "emojiPickerCategoryRenderer": { + "categoryId": "symbols", + "title": { "simpleText": "Symbols" }, + "emojiIds": [ + "🏧", + "🚮", + "🚰", + "♿", + "🚹", + "🚺", + "🚻", + "🚼", + "🚾", + "🛂", + "🛃", + "🛄", + "🛅", + "⚠", + "🚸", + "⛔", + "🚫", + "🚳", + "🚭", + "🚯", + "🚱", + "🚷", + "📵", + "🔞", + "☢", + "☣", + "⬆", + "↗", + "➡", + "↘", + "⬇", + "↙", + "⬅", + "↖", + "↕", + "↔", + "↩", + "↪", + "⤴", + "⤵", + "🔃", + "🔄", + "🔙", + "🔚", + "🔛", + "🔜", + "🔝", + "🛐", + "⚛", + "🕉", + "✡", + "☸", + "☯", + "✝", + "☦", + "☪", + "☮", + "🕎", + "🔯", + "♈", + "♉", + "♊", + "♋", + "♌", + "♍", + "♎", + "♏", + "♐", + "♑", + "♒", + "♓", + "⛎", + "🔀", + "🔁", + "🔂", + "▶", + "⏩", + "⏭", + "⏯", + "◀", + "⏪", + "⏮", + "🔼", + "⏫", + "🔽", + "⏬", + "⏸", + "⏹", + "⏺", + "⏏", + "🎦", + "🔅", + "🔆", + "📶", + "📳", + "📴", + "♀", + "♂", + "⚧", + "✖", + "➕", + "➖", + "➗", + "♾", + "‼", + "⁉", + "❓", + "❔", + "❕", + "❗", + "〰", + "💱", + "💲", + "⚕", + "♻", + "⚜", + "🔱", + "📛", + "🔰", + "⭕", + "✅", + "☑", + "✔", + "❌", + "❎", + "➰", + "➿", + "〽", + "✳", + "✴", + "❇", + "©", + "®", + "™", + "🔴", + "🟠", + "🟡", + "🟢", + "🔵", + "🟣", + "🟤", + "⚫", + "⚪", + "🟥", + "🟧", + "🟨", + "🟩", + "🟦", + "🟪", + "🟫", + "⬛", + "⬜", + "◼", + "◻", + "◾", + "◽", + "▪", + "▫", + "🔶", + "🔷", + "🔸", + "🔹", + "🔺", + "🔻", + "💠", + "🔘", + "🔳", + "🔲", + "🏁", + "🚩", + "🎌", + "🏴", + "🏳", + "🏳\u200d🌈", + "🏳\u200d⚧", + "🏴\u200d☠" + ], + "trackingParams": "CIEBELiDCBgHIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "imageLoadingLazy": true, + "categoryType": "CATEGORY_TYPE_UNICODE" + } + } + ], + "categoryButtons": [ + { + "emojiPickerCategoryButtonRenderer": { + "categoryId": "UCkszU2WH9gy1mb0dV-11UJg", + "icon": { "iconType": "VIDEO_YOUTUBE" }, + "tooltip": "YouTube", + "accessibility": { + "accessibilityData": { "label": "YouTube" } + } + } + }, + { + "emojiPickerCategoryButtonRenderer": { + "categoryId": "people", + "icon": { "iconType": "EMOJI_PEOPLE" }, + "tooltip": "People", + "accessibility": { + "accessibilityData": { "label": "People" } + }, + "targetId": "emoji-picker-category-button-people" + } + }, + { + "emojiPickerCategoryButtonRenderer": { + "categoryId": "nature", + "icon": { "iconType": "EMOJI_NATURE" }, + "tooltip": "Nature", + "accessibility": { + "accessibilityData": { "label": "Nature" } + } + } + }, + { + "emojiPickerCategoryButtonRenderer": { + "categoryId": "food", + "icon": { "iconType": "EMOJI_FOOD" }, + "tooltip": "Food", + "accessibility": { + "accessibilityData": { "label": "Food" } + } + } + }, + { + "emojiPickerCategoryButtonRenderer": { + "categoryId": "travel", + "icon": { "iconType": "EMOJI_TRAVEL" }, + "tooltip": "Travel", + "accessibility": { + "accessibilityData": { "label": "Travel" } + } + } + }, + { + "emojiPickerCategoryButtonRenderer": { + "categoryId": "activities", + "icon": { "iconType": "EMOJI_ACTIVITIES" }, + "tooltip": "Activities", + "accessibility": { + "accessibilityData": { "label": "Activities" } + } + } + }, + { + "emojiPickerCategoryButtonRenderer": { + "categoryId": "objects", + "icon": { "iconType": "EMOJI_OBJECTS" }, + "tooltip": "Objects", + "accessibility": { + "accessibilityData": { "label": "Objects" } + } + } + }, + { + "emojiPickerCategoryButtonRenderer": { + "categoryId": "symbols", + "icon": { "iconType": "EMOJI_SYMBOLS" }, + "tooltip": "Symbols", + "accessibility": { + "accessibilityData": { "label": "Symbols" } + } + } + } + ], + "searchPlaceholderText": { "runs": [{ "text": "Search emoji" }] }, + "searchNoResultsText": { "runs": [{ "text": "No emoji found" }] }, + "pickSkinToneText": { + "runs": [{ "text": "Pick emoji skin tone" }] + }, + "trackingParams": "CIABELK0AiITCLrird2YoYUDFa_LQgUdzXgEow==", + "clearSearchLabel": "Clear search", + "skinToneGenericLabel": "Generic skin tone", + "skinToneLightLabel": "Light skin tone", + "skinToneMediumLightLabel": "Medium light skin tone", + "skinToneMediumLabel": "Medium skin tone", + "skinToneMediumDarkLabel": "Medium dark skin tone", + "skinToneDarkLabel": "Dark skin tone" + } + } + } + }, + "sortMenu": { + "sortFilterSubMenuRenderer": { + "subMenuItems": [ + { + "title": "Top comments", + "selected": true, + "serviceEndpoint": { + "clickTrackingParams": "CH4Q48AHGAAiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/next" + } + }, + "continuationCommand": { + "token": "Eg0SC1FpcDFWa1R1TTcwGAYyJSIRIgtRaXAxVmtUdU03MDAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D", + "request": "CONTINUATION_REQUEST_TYPE_WATCH_NEXT", + "command": { + "clickTrackingParams": "CH4Q48AHGAAiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "showReloadUiCommand": { "targetId": "comments-section" } + } + } + }, + "trackingParams": "CH4Q48AHGAAiEwi64q3dmKGFAxWvy0IFHc14BKM=" + }, + { + "title": "Newest first", + "selected": false, + "serviceEndpoint": { + "clickTrackingParams": "CH0Q48AHGAEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/next" + } + }, + "continuationCommand": { + "token": "Eg0SC1FpcDFWa1R1TTcwGAYyJSIRIgtRaXAxVmtUdU03MDABeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D", + "request": "CONTINUATION_REQUEST_TYPE_WATCH_NEXT", + "command": { + "clickTrackingParams": "CH0Q48AHGAEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "showReloadUiCommand": { "targetId": "comments-section" } + } + } + }, + "trackingParams": "CH0Q48AHGAEiEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + ], + "title": "Sort by", + "icon": { "iconType": "SORT" }, + "accessibility": { + "accessibilityData": { "label": "Sort comments" } + }, + "tooltip": "Sort comments", + "trackingParams": "CHwQgdoEIhMIuuKt3ZihhQMVr8tCBR3NeASj" + } + }, + "trackingParams": "CHsQ7pgBGOABIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "titleText": { "runs": [{ "text": "Comments" }] }, + "commentsCount": { "runs": [{ "text": "20K" }] }, + "showSeparator": true, + "customEmojis": [ + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/fish-orange-wide-eyes", + "shortcuts": [":fish-orange-wide-eyes:"], + "searchTerms": ["fish-orange-wide-eyes"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/iQLKgKs7qL3091VHgVgpaezc62uPewy50G_DoI0dMtVGmQEX5pflZrUxWfYGmRfzfUOOgJs=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/iQLKgKs7qL3091VHgVgpaezc62uPewy50G_DoI0dMtVGmQEX5pflZrUxWfYGmRfzfUOOgJs=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "fish-orange-wide-eyes" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/face-turquoise-music-note", + "shortcuts": [":face-turquoise-music-note:"], + "searchTerms": ["face-turquoise-music-note"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/-K6oRITFKVU8V4FedrqXGkV_vTqUufVCQpBpyLK6w3chF4AS1kzT0JVfJxhtlfIAw5jrNco=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/-K6oRITFKVU8V4FedrqXGkV_vTqUufVCQpBpyLK6w3chF4AS1kzT0JVfJxhtlfIAw5jrNco=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-turquoise-music-note" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/7cIfY5niDOmSkNAP08CA6A4", + "shortcuts": [":eyes-purple-crying:"], + "searchTerms": ["eyes-purple-crying"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/FrYgdeZPpvXs-6Mp305ZiimWJ0wV5bcVZctaUy80mnIdwe-P8HRGYAm0OyBtVx8EB9_Dxkc=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/FrYgdeZPpvXs-6Mp305ZiimWJ0wV5bcVZctaUy80mnIdwe-P8HRGYAm0OyBtVx8EB9_Dxkc=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "eyes-purple-crying" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/mW5IY47PMcSnkMkPo6OAyAk", + "shortcuts": [":face-blue-three-eyes:"], + "searchTerms": ["face-blue-three-eyes"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/nSQHitVplLe5uZC404dyAwv1f58S3PN-U_799fvFzq-6b3bv-MwENO-Zs1qQI4oEXCbOJg=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/nSQHitVplLe5uZC404dyAwv1f58S3PN-U_799fvFzq-6b3bv-MwENO-Zs1qQI4oEXCbOJg=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-blue-three-eyes" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/face-orange-tv-shape", + "shortcuts": [":face-orange-tv-shape:"], + "searchTerms": ["face-orange-tv-shape"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/EVK0ik6dL5mngojX9I9Juw4iFh053emP0wcUjZH0whC_LabPq-DZxN4Jg-tpMcEVfJ0QpcJ4=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/EVK0ik6dL5mngojX9I9Juw4iFh053emP0wcUjZH0whC_LabPq-DZxN4Jg-tpMcEVfJ0QpcJ4=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-orange-tv-shape" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/rocket-red-countdown-liftoff", + "shortcuts": [":rocket-red-countdown-liftoff:"], + "searchTerms": ["rocket-red-countdown-liftoff"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/lQZFYAeWe5-SJ_fz6dCAFYz1MjBnEek8DvioGxhlj395UFTSSHqYAmfhJN2i0rz3fDD5DQ=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/lQZFYAeWe5-SJ_fz6dCAFYz1MjBnEek8DvioGxhlj395UFTSSHqYAmfhJN2i0rz3fDD5DQ=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "rocket-red-countdown-liftoff" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/Fv90Xq-vJcPq8gTqzreQAQ", + "shortcuts": [":elbowbump:"], + "searchTerms": ["elbowbump"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/2ou58X5XuhTrxjtIM2wew1f-HKRhN_T5SILQgHE-WD9dySzzJdGwL4R1gpKiJXcbtq6sjQ=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/2ou58X5XuhTrxjtIM2wew1f-HKRhN_T5SILQgHE-WD9dySzzJdGwL4R1gpKiJXcbtq6sjQ=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { "accessibilityData": { "label": "elbowbump" } } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/VP90Xv_wG82o8wTCi7CQAw", + "shortcuts": [":videocall:"], + "searchTerms": ["videocall"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/k5v_oxUzRWmTOXP0V6WJver6xdS1lyHMPcMTfxn23Md6rmixoR5RZUusFbZi1uZwjF__pv4=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/k5v_oxUzRWmTOXP0V6WJver6xdS1lyHMPcMTfxn23Md6rmixoR5RZUusFbZi1uZwjF__pv4=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { "accessibilityData": { "label": "videocall" } } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/UvgfY_vqE92T29sPvqiAkAU", + "shortcuts": [":body-blue-raised-arms:"], + "searchTerms": ["body-blue-raised-arms"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/2Jds3I9UKOfgjid97b_nlDU4X2t5MgjTof8yseCp7M-6ZhOhRkPGSPfYwmE9HjCibsfA1Uzo=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/2Jds3I9UKOfgjid97b_nlDU4X2t5MgjTof8yseCp7M-6ZhOhRkPGSPfYwmE9HjCibsfA1Uzo=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "body-blue-raised-arms" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/LsMfY8P6G-yckNAPjoWA8AI", + "shortcuts": [":face-blue-wide-eyes:"], + "searchTerms": ["face-blue-wide-eyes"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/2Ht4KImoWDlCddiDQVuzSJwpEb59nZJ576ckfaMh57oqz2pUkkgVTXV8osqUOgFHZdUISJM=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/2Ht4KImoWDlCddiDQVuzSJwpEb59nZJ576ckfaMh57oqz2pUkkgVTXV8osqUOgFHZdUISJM=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-blue-wide-eyes" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/person-blue-wheelchair-race", + "shortcuts": [":person-blue-wheelchair-race:"], + "searchTerms": ["person-blue-wheelchair-race"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/ZepxPGk5TwzrKAP9LUkzmKmEkbaF5OttNyybwok6mJENw3p0lxDXkD1X2_rAwGcUM0L-D04=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/ZepxPGk5TwzrKAP9LUkzmKmEkbaF5OttNyybwok6mJENw3p0lxDXkD1X2_rAwGcUM0L-D04=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "person-blue-wheelchair-race" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/PAJ1XsOOI4fegwOo57ewAg", + "shortcuts": [":socialdist:"], + "searchTerms": ["socialdist"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/igBNi55-TACUi1xQkqMAor-IEXmt8He56K7pDTG5XoTsbM-rVswNzUfC5iwnfrpunWihrg=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/igBNi55-TACUi1xQkqMAor-IEXmt8He56K7pDTG5XoTsbM-rVswNzUfC5iwnfrpunWihrg=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { "accessibilityData": { "label": "socialdist" } } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/oPgfY_DoKfSXkNAPq8-AgAo", + "shortcuts": [":face-turquoise-covering-eyes:"], + "searchTerms": ["face-turquoise-covering-eyes"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/H2HNPRO8f4SjMmPNh5fl10okSETW7dLTZtuE4jh9D6pSmaUiLfoZJ2oiY-qWU3Owfm1IsXg=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/H2HNPRO8f4SjMmPNh5fl10okSETW7dLTZtuE4jh9D6pSmaUiLfoZJ2oiY-qWU3Owfm1IsXg=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-turquoise-covering-eyes" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/LfkfY_zhH4GFr8oP4aKA6AI", + "shortcuts": [":face-blue-question-mark:"], + "searchTerms": ["face-blue-question-mark"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/Wx4PMqTwG3f4gtR7J9Go1s8uozzByGWLSXHzrh3166ixaYRinkH_F05lslfsRUsKRvHXrDk=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/Wx4PMqTwG3f4gtR7J9Go1s8uozzByGWLSXHzrh3166ixaYRinkH_F05lslfsRUsKRvHXrDk=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-blue-question-mark" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/hands-yellow-heart-red", + "shortcuts": [":hands-yellow-heart-red:"], + "searchTerms": ["hands-yellow-heart-red"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/qWSu2zrgOKLKgt_E-XUP9e30aydT5aF3TnNjvfBL55cTu1clP8Eoh5exN3NDPEVPYmasmoA=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/qWSu2zrgOKLKgt_E-XUP9e30aydT5aF3TnNjvfBL55cTu1clP8Eoh5exN3NDPEVPYmasmoA=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "hands-yellow-heart-red" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/dv90XtfhAurw8gTgzar4DA", + "shortcuts": [":virtualhug:"], + "searchTerms": ["virtualhug"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/U1TjOZlqtS58NGqQhE8VWDptPSrmJNkrbVRp_8jI4f84QqIGflq2Ibu7YmuOg5MmVYnpevc=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/U1TjOZlqtS58NGqQhE8VWDptPSrmJNkrbVRp_8jI4f84QqIGflq2Ibu7YmuOg5MmVYnpevc=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { "accessibilityData": { "label": "virtualhug" } } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/HvgfY93GEYmqvwLUuYDwAQ", + "shortcuts": [":glasses-purple-yellow-diamond:"], + "searchTerms": ["glasses-purple-yellow-diamond"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/EnDBiuksboKsLkxp_CqMWlTcZtlL77QBkbjz_rLedMSDzrHmy_6k44YWFy2rk4I0LG6K2KI=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/EnDBiuksboKsLkxp_CqMWlTcZtlL77QBkbjz_rLedMSDzrHmy_6k44YWFy2rk4I0LG6K2KI=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "glasses-purple-yellow-diamond" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/face-red-smiling-live", + "shortcuts": [":face-red-smiling-live:"], + "searchTerms": ["face-red-smiling-live"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/14Pb--7rVcqnHvM7UlrYnV9Rm4J-uojX1B1kiXYvv1my-eyu77pIoPR5sH28-eNIFyLaQHs=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/14Pb--7rVcqnHvM7UlrYnV9Rm4J-uojX1B1kiXYvv1my-eyu77pIoPR5sH28-eNIFyLaQHs=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-red-smiling-live" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/Ym5IY7-0LoqA29sPq9CAkAY", + "shortcuts": [":face-purple-smiling-tears:"], + "searchTerms": ["face-purple-smiling-tears"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/MJV1k3J5s0hcUfuo78Y6MKi-apDY5NVDjO9Q7hL8fU4i0cIBgU-cU4rq4sHessJuvuGpDOjJ=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/MJV1k3J5s0hcUfuo78Y6MKi-apDY5NVDjO9Q7hL8fU4i0cIBgU-cU4rq4sHessJuvuGpDOjJ=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-purple-smiling-tears" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/face-fuchsia-flower-shape", + "shortcuts": [":face-fuchsia-flower-shape:"], + "searchTerms": ["face-fuchsia-flower-shape"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/o9kq4LQ0fE_x8yxj29ZeLFZiUFpHpL_k2OivHbjZbttzgQytU49Y8-VRhkOP18jgH1dQNSVz=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/o9kq4LQ0fE_x8yxj29ZeLFZiUFpHpL_k2OivHbjZbttzgQytU49Y8-VRhkOP18jgH1dQNSVz=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-fuchsia-flower-shape" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/Z8MfY8mzLbnovwK5roC4Bg", + "shortcuts": [":face-orange-raised-eyebrow:"], + "searchTerms": ["face-orange-raised-eyebrow"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/JbCfmOgYI-mO17LPw8e_ycqbBGESL8AVP6i7ZsBOVLd3PEpgrfEuJ9rEGpP_unDcqgWSCg=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/JbCfmOgYI-mO17LPw8e_ycqbBGESL8AVP6i7ZsBOVLd3PEpgrfEuJ9rEGpP_unDcqgWSCg=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-orange-raised-eyebrow" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/stopwatch-blue-hand-timer", + "shortcuts": [":stopwatch-blue-hand-timer:"], + "searchTerms": ["stopwatch-blue-hand-timer"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/DCvefDAiskRfACgolTlvV1kMfiZVcG50UrmpnRrg3k0udFWG2Uo9zFMaJrJMSJYwcx6fMgk=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/DCvefDAiskRfACgolTlvV1kMfiZVcG50UrmpnRrg3k0udFWG2Uo9zFMaJrJMSJYwcx6fMgk=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "stopwatch-blue-hand-timer" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/face-purple-open-box", + "shortcuts": [":face-purple-open-box:"], + "searchTerms": ["face-purple-open-box"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/7lJM2sLrozPtNLagPTcN0xlcStWpAuZEmO2f4Ej5kYgSp3woGdq3tWFrTH30S3mD2PyjlQ=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/7lJM2sLrozPtNLagPTcN0xlcStWpAuZEmO2f4Ej5kYgSp3woGdq3tWFrTH30S3mD2PyjlQ=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-purple-open-box" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/whistle-red-blow", + "shortcuts": [":whistle-red-blow:"], + "searchTerms": ["whistle-red-blow"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/DBu1ZfPJTnX9S1RyKKdBY-X_CEmj7eF6Uzl71j5jVBz5y4k9JcKnoiFtImAbeu4u8M2X8tU=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/DBu1ZfPJTnX9S1RyKKdBY-X_CEmj7eF6Uzl71j5jVBz5y4k9JcKnoiFtImAbeu4u8M2X8tU=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "whistle-red-blow" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/b8IfY7zOK9iVkNAP_I2A-AY", + "shortcuts": [":face-purple-crying:"], + "searchTerms": ["face-purple-crying"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/g6_km98AfdHbN43gvEuNdZ2I07MmzVpArLwEvNBwwPqpZYzszqhRzU_DXALl11TchX5_xFE=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/g6_km98AfdHbN43gvEuNdZ2I07MmzVpArLwEvNBwwPqpZYzszqhRzU_DXALl11TchX5_xFE=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-purple-crying" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/uP90Xq6wNYrK8gTUoo3wAg", + "shortcuts": [":takeout:"], + "searchTerms": ["takeout"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/FizHI5IYMoNql9XeP7TV3E0ffOaNKTUSXbjtJe90e1OUODJfZbWU37VqBbTh-vpyFHlFIS0=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/FizHI5IYMoNql9XeP7TV3E0ffOaNKTUSXbjtJe90e1OUODJfZbWU37VqBbTh-vpyFHlFIS0=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { "accessibilityData": { "label": "takeout" } } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/8gF1Xp_zK8jk8gSDrI2wCw", + "shortcuts": [":elbowcough:"], + "searchTerms": ["elbowcough"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/DTR9bZd1HOqpRJyz9TKiLb0cqe5Hb84Yi_79A6LWlN1tY-5kXqLDXRmtYVKE9rcqzEghmw=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/DTR9bZd1HOqpRJyz9TKiLb0cqe5Hb84Yi_79A6LWlN1tY-5kXqLDXRmtYVKE9rcqzEghmw=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { "accessibilityData": { "label": "elbowcough" } } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/EAJ1XrS7PMGQ8gTz_prwAg", + "shortcuts": [":learning:"], + "searchTerms": ["learning"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/ZuBuz8GAQ6IEcQc7CoJL8IEBTYbXEvzhBeqy1AiytmhuAT0VHjpXEjd-A5GfR4zDin1L53Q=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/ZuBuz8GAQ6IEcQc7CoJL8IEBTYbXEvzhBeqy1AiytmhuAT0VHjpXEjd-A5GfR4zDin1L53Q=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { "accessibilityData": { "label": "learning" } } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/KsIfY6LzFoLM6AKanYDQAg", + "shortcuts": [":face-blue-smiling:"], + "searchTerms": ["face-blue-smiling"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/cktIaPxFwnrPwn-alHvnvedHLUJwbHi8HCK3AgbHpphrMAW99qw0bDfxuZagSY5ieE9BBrA=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/cktIaPxFwnrPwn-alHvnvedHLUJwbHi8HCK3AgbHpphrMAW99qw0bDfxuZagSY5ieE9BBrA=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-blue-smiling" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/hcIfY57lBJXp6AKBx4CoCA", + "shortcuts": [":text-green-game-over:"], + "searchTerms": ["text-green-game-over"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/cr36FHhSiMAJUSpO9XzjbOgxhtrdJNTVJUlMJeOOfLOFzKleAKT2SEkZwbqihBqfTXYCIg=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/cr36FHhSiMAJUSpO9XzjbOgxhtrdJNTVJUlMJeOOfLOFzKleAKT2SEkZwbqihBqfTXYCIg=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "text-green-game-over" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/lP90XvOhCZGl8wSO1JmgAw", + "shortcuts": [":sanitizer:"], + "searchTerms": ["sanitizer"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/EJ_8vc4Gl-WxCWBurHwwWROAHrPzxgePodoNfkRY1U_I8L1O2zlqf7-wfUtTeyzq2qHNnocZ=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/EJ_8vc4Gl-WxCWBurHwwWROAHrPzxgePodoNfkRY1U_I8L1O2zlqf7-wfUtTeyzq2qHNnocZ=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { "accessibilityData": { "label": "sanitizer" } } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/Iv90XouTLuOR8gSxxrToBA", + "shortcuts": [":goodvibes:"], + "searchTerms": ["goodvibes"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/2CvFOwgKpL29mW_C51XvaWa7Eixtv-3tD1XvZa1_WemaDDL2AqevKbTZ1rdV0OWcnOZRag=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/2CvFOwgKpL29mW_C51XvaWa7Eixtv-3tD1XvZa1_WemaDDL2AqevKbTZ1rdV0OWcnOZRag=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { "accessibilityData": { "label": "goodvibes" } } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/EvkfY6uNC5OykQOewoCQAQ", + "shortcuts": [":hand-purple-blue-peace:"], + "searchTerms": ["hand-purple-blue-peace"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/-sC8wj6pThd7FNdslEoJlG4nB9SIbrJG3CRGh7-bNV0RVfcrJuwiWHoUZ6UmcVs7sQjxTg4=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/-sC8wj6pThd7FNdslEoJlG4nB9SIbrJG3CRGh7-bNV0RVfcrJuwiWHoUZ6UmcVs7sQjxTg4=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "hand-purple-blue-peace" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/face-blue-spam-shape", + "shortcuts": [":face-blue-spam-shape:"], + "searchTerms": ["face-blue-spam-shape"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/hpwvR5UgJtf0bGkUf8Rn-jTlD6DYZ8FPOFY7rhZZL-JHj_7OPDr7XUOesilRPxlf-aW42Zg=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/hpwvR5UgJtf0bGkUf8Rn-jTlD6DYZ8FPOFY7rhZZL-JHj_7OPDr7XUOesilRPxlf-aW42Zg=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-blue-spam-shape" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/egJ1XufTKYfegwOo57ewAg", + "shortcuts": [":shelterin:"], + "searchTerms": ["shelterin"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/gjC5x98J4BoVSEPfFJaoLtc4tSBGSEdIlfL2FV4iJG9uGNykDP9oJC_QxAuBTJy6dakPxVeC=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/gjC5x98J4BoVSEPfFJaoLtc4tSBGSEdIlfL2FV4iJG9uGNykDP9oJC_QxAuBTJy6dakPxVeC=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { "accessibilityData": { "label": "shelterin" } } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/medal-yellow-first-red", + "shortcuts": [":medal-yellow-first-red:"], + "searchTerms": ["medal-yellow-first-red"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/EEHiiIalCBKuWDPtNOjjvmEZ-KRkf5dlgmhe5rbLn8aZQl-pNz_paq5UjxNhCrI019TWOQ=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/EEHiiIalCBKuWDPtNOjjvmEZ-KRkf5dlgmhe5rbLn8aZQl-pNz_paq5UjxNhCrI019TWOQ=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "medal-yellow-first-red" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/person-pink-swaying-hair", + "shortcuts": [":person-pink-swaying-hair:"], + "searchTerms": ["person-pink-swaying-hair"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/L8cwo8hEoVhB1k1TopQaeR7oPTn7Ypn5IOae5NACgQT0E9PNYkmuENzVqS7dk2bYRthNAkQ=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/L8cwo8hEoVhB1k1TopQaeR7oPTn7Ypn5IOae5NACgQT0E9PNYkmuENzVqS7dk2bYRthNAkQ=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "person-pink-swaying-hair" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/W8IfY_bwAfiPq7IPvNCA2AU", + "shortcuts": [":face-red-droopy-eyes:"], + "searchTerms": ["face-red-droopy-eyes"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/oih9s26MOYPWC_uL6tgaeOlXSGBv8MMoDrWzBt-80nEiVSL9nClgnuzUAKqkU9_TWygF6CI=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/oih9s26MOYPWC_uL6tgaeOlXSGBv8MMoDrWzBt-80nEiVSL9nClgnuzUAKqkU9_TWygF6CI=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-red-droopy-eyes" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/person-yellow-podium-blue", + "shortcuts": [":person-yellow-podium-blue:"], + "searchTerms": ["person-yellow-podium-blue"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/N28nFDm82F8kLPAa-jY_OySFsn3Ezs_2Bl5kdxC8Yxau5abkj_XZHYsS3uYKojs8qy8N-9w=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/N28nFDm82F8kLPAa-jY_OySFsn3Ezs_2Bl5kdxC8Yxau5abkj_XZHYsS3uYKojs8qy8N-9w=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "person-yellow-podium-blue" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/face-pink-drinking-tea", + "shortcuts": [":face-pink-drinking-tea:"], + "searchTerms": ["face-pink-drinking-tea"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/WRLIgKpnClgYOZyAwnqP-Edrdxu6_N19qa8gsB9P_6snZJYIMu5YBJX8dlM81YG6H307KA=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/WRLIgKpnClgYOZyAwnqP-Edrdxu6_N19qa8gsB9P_6snZJYIMu5YBJX8dlM81YG6H307KA=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-pink-drinking-tea" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/baseball-white-cap-out", + "shortcuts": [":baseball-white-cap-out:"], + "searchTerms": ["baseball-white-cap-out"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/8DaGaXfaBN0c-ZsZ-1WqPJ6H9TsJOlUUQQEoXvmdROphZE9vdRtN0867Gb2YZcm2x38E9Q=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/8DaGaXfaBN0c-ZsZ-1WqPJ6H9TsJOlUUQQEoXvmdROphZE9vdRtN0867Gb2YZcm2x38E9Q=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "baseball-white-cap-out" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/face-turquoise-speaker-shape", + "shortcuts": [":face-turquoise-speaker-shape:"], + "searchTerms": ["face-turquoise-speaker-shape"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/WTFFqm70DuMxSC6ezQ5Zs45GaWD85Xwrd9Sullxt54vErPUKb_o0NJQ4kna5m7rvjbRMgr3A=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/WTFFqm70DuMxSC6ezQ5Zs45GaWD85Xwrd9Sullxt54vErPUKb_o0NJQ4kna5m7rvjbRMgr3A=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-turquoise-speaker-shape" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/A8MfY-_pEIKNr8oP78-AGA", + "shortcuts": [":face-fuchsia-wide-eyes:"], + "searchTerms": ["face-fuchsia-wide-eyes"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/zdcOC1SMmyXJOAddl9DYeEFN9YYcn5mHemJCdRFQMtDuS0V-IyE-5YjNUL1tduX1zs17tQ=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/zdcOC1SMmyXJOAddl9DYeEFN9YYcn5mHemJCdRFQMtDuS0V-IyE-5YjNUL1tduX1zs17tQ=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-fuchsia-wide-eyes" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/person-blue-eating-spaghetti", + "shortcuts": [":person-blue-eating-spaghetti:"], + "searchTerms": ["person-blue-eating-spaghetti"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/AXZ8POmCHoxXuBaRxX6-xlT5M-nJZmO1AeUNo0t4o7xxT2Da2oGy347sHpMM8shtUs7Xxh0=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/AXZ8POmCHoxXuBaRxX6-xlT5M-nJZmO1AeUNo0t4o7xxT2Da2oGy347sHpMM8shtUs7Xxh0=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "person-blue-eating-spaghetti" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/hcMfY5_zAbbxvwKLooCoCA", + "shortcuts": [":face-fuchsia-tongue-out:"], + "searchTerms": ["face-fuchsia-tongue-out"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/EURfJZi_heNulV3mfHzXBk8PIs9XmZ9lOOYi5za6wFMCGrps4i2BJX9j-H2gK6LIhW6h7sY=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/EURfJZi_heNulV3mfHzXBk8PIs9XmZ9lOOYi5za6wFMCGrps4i2BJX9j-H2gK6LIhW6h7sY=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-fuchsia-tongue-out" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/volcano-green-lava-orange", + "shortcuts": [":volcano-green-lava-orange:"], + "searchTerms": ["volcano-green-lava-orange"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/_IWOdMxapt6IBY5Cb6LFVkA3J77dGQ7P2fuvYYv1-ahigpVfBvkubOuGLSCyFJ7jvis-X8I=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/_IWOdMxapt6IBY5Cb6LFVkA3J77dGQ7P2fuvYYv1-ahigpVfBvkubOuGLSCyFJ7jvis-X8I=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "volcano-green-lava-orange" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/location-yellow-teal-bars", + "shortcuts": [":location-yellow-teal-bars:"], + "searchTerms": ["location-yellow-teal-bars"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/YgeWJsRspSlAp3BIS5HMmwtpWtMi8DqLg9fH7DwUZaf5kG4yABfE1mObAvjCh0xKX_HoIR23=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/YgeWJsRspSlAp3BIS5HMmwtpWtMi8DqLg9fH7DwUZaf5kG4yABfE1mObAvjCh0xKX_HoIR23=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "location-yellow-teal-bars" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/1v50XorRJ8GQ8gTz_prwAg", + "shortcuts": [":stayhome:"], + "searchTerms": ["stayhome"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/_1FGHypiub51kuTiNBX1a0H3NyFih3TnHX7bHU06j_ajTzT0OQfMLl9RI1SiQoxtgA2Grg=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/_1FGHypiub51kuTiNBX1a0H3NyFih3TnHX7bHU06j_ajTzT0OQfMLl9RI1SiQoxtgA2Grg=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { "accessibilityData": { "label": "stayhome" } } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/6_cfY8HJH8bV5QS5yYDYDg", + "shortcuts": [":face-fuchsia-poop-shape:"], + "searchTerms": ["face-fuchsia-poop-shape"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/_xlyzvSimqMzhdhODyqUBLXIGA6F_d5en2bq-AIfc6fc3M7tw2jucuXRIo5igcW3g9VVe3A=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/_xlyzvSimqMzhdhODyqUBLXIGA6F_d5en2bq-AIfc6fc3M7tw2jucuXRIo5igcW3g9VVe3A=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-fuchsia-poop-shape" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/ePgfY-K2Kp6Mr8oP1oqAwAc", + "shortcuts": [":trophy-yellow-smiling:"], + "searchTerms": ["trophy-yellow-smiling"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/7tf3A_D48gBg9g2N0Rm6HWs2aqzshHU4CuVubTXVxh1BP7YDBRC6pLBoC-ibvr-zCl_Lgg=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/7tf3A_D48gBg9g2N0Rm6HWs2aqzshHU4CuVubTXVxh1BP7YDBRC6pLBoC-ibvr-zCl_Lgg=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "trophy-yellow-smiling" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/ygF1XpGUMMjk8gSDrI2wCx", + "shortcuts": [":face-orange-biting-nails:"], + "searchTerms": ["face-orange-biting-nails"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/HmsXEgqUogkQOnL5LP_FdPit9Z909RJxby-uYcPxBLNhaPyqPTcGwvGaGPk2hzB_cC0hs_pV=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/HmsXEgqUogkQOnL5LP_FdPit9Z909RJxby-uYcPxBLNhaPyqPTcGwvGaGPk2hzB_cC0hs_pV=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-orange-biting-nails" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/pillow-turquoise-hot-chocolate", + "shortcuts": [":pillow-turquoise-hot-chocolate:"], + "searchTerms": ["pillow-turquoise-hot-chocolate"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/cAR4cehRxbn6dPbxKIb-7ShDdWnMxbaBqy2CXzBW4aRL3IqXs3rxG0UdS7IU71OEU7LSd20q=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/cAR4cehRxbn6dPbxKIb-7ShDdWnMxbaBqy2CXzBW4aRL3IqXs3rxG0UdS7IU71OEU7LSd20q=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "pillow-turquoise-hot-chocolate" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/face-purple-rain-drops", + "shortcuts": [":face-purple-rain-drops:"], + "searchTerms": ["face-purple-rain-drops"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/woHW5Jl2RD0qxijnl_4vx4ZhP0Zp65D4Ve1DM_HrwJW-Kh6bQZoRjesGnEwjde8F4LynrQ=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/woHW5Jl2RD0qxijnl_4vx4ZhP0Zp65D4Ve1DM_HrwJW-Kh6bQZoRjesGnEwjde8F4LynrQ=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-purple-rain-drops" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/person-blue-holding-pencil", + "shortcuts": [":person-blue-holding-pencil:"], + "searchTerms": ["person-blue-holding-pencil"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/TKgph5IHIHL-A3fgkrGzmiNXzxJkibB4QWRcf_kcjIofhwcUK_pWGUFC4xPXoimmne3h8eQ=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/TKgph5IHIHL-A3fgkrGzmiNXzxJkibB4QWRcf_kcjIofhwcUK_pWGUFC4xPXoimmne3h8eQ=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "person-blue-holding-pencil" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/person-purple-stage-event", + "shortcuts": [":person-purple-stage-event:"], + "searchTerms": ["person-purple-stage-event"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/YeVVscOyRcDJAhKo2bMwMz_B6127_7lojqafTZECTR9NSEunYO5zEi7R7RqxBD7LYLxfNnXe=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/YeVVscOyRcDJAhKo2bMwMz_B6127_7lojqafTZECTR9NSEunYO5zEi7R7RqxBD7LYLxfNnXe=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "person-purple-stage-event" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/RPkfY8TPGsCakNAP-JWAoAQ", + "shortcuts": [":face-blue-covering-eyes:"], + "searchTerms": ["face-blue-covering-eyes"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/kj3IgbbR6u-mifDkBNWVcdOXC-ut-tiFbDpBMGVeW79c2c54n5vI-HNYCOC6XZ9Bzgupc10=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/kj3IgbbR6u-mifDkBNWVcdOXC-ut-tiFbDpBMGVeW79c2c54n5vI-HNYCOC6XZ9Bzgupc10=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-blue-covering-eyes" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/person-turquoise-writing-headphones", + "shortcuts": [":person-turquoise-writing-headphones:"], + "searchTerms": ["person-turquoise-writing-headphones"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/DC4KrwzNkVxLZa2_KbKyjZTUyB9oIvH5JuEWAshsMv9Ctz4lEUVK0yX5PaMsTK3gGS-r9w=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/DC4KrwzNkVxLZa2_KbKyjZTUyB9oIvH5JuEWAshsMv9Ctz4lEUVK0yX5PaMsTK3gGS-r9w=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { + "label": "person-turquoise-writing-headphones" + } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/octopus-red-waving", + "shortcuts": [":octopus-red-waving:"], + "searchTerms": ["octopus-red-waving"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/L9Wo5tLT_lRQX36iZO_fJqLJR4U74J77tJ6Dg-QmPmSC_zhVQ-NodMRc9T0ozwvRXRaT43o=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/L9Wo5tLT_lRQX36iZO_fJqLJR4U74J77tJ6Dg-QmPmSC_zhVQ-NodMRc9T0ozwvRXRaT43o=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "octopus-red-waving" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/zPgfY66lCJGRhL0Pz6iA4Aw", + "shortcuts": [":face-turquoise-drinking-coffee:"], + "searchTerms": ["face-turquoise-drinking-coffee"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/myqoI1MgFUXQr5fuWTC9mz0BCfgf3F8GSDp06o1G7w6pTz48lwARjdG8vj0vMxADvbwA1dA=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/myqoI1MgFUXQr5fuWTC9mz0BCfgf3F8GSDp06o1G7w6pTz48lwARjdG8vj0vMxADvbwA1dA=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-turquoise-drinking-coffee" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/person-turquoise-crowd-surf", + "shortcuts": [":person-turquoise-crowd-surf:"], + "searchTerms": ["person-turquoise-crowd-surf"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/Q0wFvHZ5h54xGSTo-JeGst6InRU3yR6NdBRoyowaqGY66LPzdcrV2t-wBN21kBIdb2TeNA=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/Q0wFvHZ5h54xGSTo-JeGst6InRU3yR6NdBRoyowaqGY66LPzdcrV2t-wBN21kBIdb2TeNA=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "person-turquoise-crowd-surf" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/text-yellow-goal", + "shortcuts": [":text-yellow-goal:"], + "searchTerms": ["text-yellow-goal"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/tnHp8rHjXecGbGrWNcs7xss_aVReaYE6H-QWRCXYg_aaYszHXnbP_pVADnibUiimspLvgX0L=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/tnHp8rHjXecGbGrWNcs7xss_aVReaYE6H-QWRCXYg_aaYszHXnbP_pVADnibUiimspLvgX0L=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "text-yellow-goal" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/ssIfY7OFG5OykQOpn4CQCw", + "shortcuts": [":person-turqouise-waving:"], + "searchTerms": ["person-turqouise-waving"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/uNSzQ2M106OC1L3VGzrOsGNjopboOv-m1bnZKFGuh0DxcceSpYHhYbuyggcgnYyaF3o-AQ=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/uNSzQ2M106OC1L3VGzrOsGNjopboOv-m1bnZKFGuh0DxcceSpYHhYbuyggcgnYyaF3o-AQ=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "person-turqouise-waving" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/Mm5IY53bH7SEq7IP-MWAkAM", + "shortcuts": [":face-purple-smiling-fangs:"], + "searchTerms": ["face-purple-smiling-fangs"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/k1vqi6xoHakGUfa0XuZYWHOv035807ARP-ZLwFmA-_NxENJMxsisb-kUgkSr96fj5baBOZE=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/k1vqi6xoHakGUfa0XuZYWHOv035807ARP-ZLwFmA-_NxENJMxsisb-kUgkSr96fj5baBOZE=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-purple-smiling-fangs" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/person-turquoise-wizard-wand", + "shortcuts": [":person-turquoise-wizard-wand:"], + "searchTerms": ["person-turquoise-wizard-wand"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/OiZeNvmELg2PQKbT5UCS0xbmsGbqRBSbaRVSsKnRS9gvJPw7AzPp-3ysVffHFbSMqlWKeQ=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/OiZeNvmELg2PQKbT5UCS0xbmsGbqRBSbaRVSsKnRS9gvJPw7AzPp-3ysVffHFbSMqlWKeQ=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "person-turquoise-wizard-wand" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/v25IY7KcJIGOr8oPz4OA-As", + "shortcuts": [":planet-orange-purple-ring:"], + "searchTerms": ["planet-orange-purple-ring"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/xkaLigm3P4_1g4X1JOtkymcC7snuJu_C5YwIFAyQlAXK093X0IUjaSTinMTLKeRZ6280jXg=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/xkaLigm3P4_1g4X1JOtkymcC7snuJu_C5YwIFAyQlAXK093X0IUjaSTinMTLKeRZ6280jXg=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "planet-orange-purple-ring" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/card-red-penalty", + "shortcuts": [":card-red-penalty:"], + "searchTerms": ["card-red-penalty"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/uRDUMIeAHnNsaIaShtRkQ6hO0vycbNH_BQT7i3PWetFJb09q88RTjxwzToBy9Cez20D7hA=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/uRDUMIeAHnNsaIaShtRkQ6hO0vycbNH_BQT7i3PWetFJb09q88RTjxwzToBy9Cez20D7hA=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "card-red-penalty" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/8P50XuS9Oo7h8wSqtIagBA", + "shortcuts": [":dothefive:"], + "searchTerms": ["dothefive"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/-nM0DOd49969h3GNcl705Ti1fIf1ZG_E3JxcOUVV-qPfCW6jY8xZ98caNLHkVSGRTSEb7Y9y=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/-nM0DOd49969h3GNcl705Ti1fIf1ZG_E3JxcOUVV-qPfCW6jY8xZ98caNLHkVSGRTSEb7Y9y=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { "accessibilityData": { "label": "dothefive" } } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/Rf90XtDbG8GQ8gTz_prwAg", + "shortcuts": [":thanksdoc:"], + "searchTerms": ["thanksdoc"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/bUnO_VwXW2hDf-Da8D64KKv6nBJDYUBuo13RrOg141g2da8pi9-KClJYlUDuqIwyPBfvOO8=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/bUnO_VwXW2hDf-Da8D64KKv6nBJDYUBuo13RrOg141g2da8pi9-KClJYlUDuqIwyPBfvOO8=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { "accessibilityData": { "label": "thanksdoc" } } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/E8MfY5u7JPSXkNAP95GAmAE", + "shortcuts": [":cat-orange-whistling:"], + "searchTerms": ["cat-orange-whistling"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/0ocqEmuhrKCK87_J21lBkvjW70wRGC32-Buwk6TP4352CgcNjL6ug8zcsel6JiPbE58xhq5g=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/0ocqEmuhrKCK87_J21lBkvjW70wRGC32-Buwk6TP4352CgcNjL6ug8zcsel6JiPbE58xhq5g=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "cat-orange-whistling" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/fAF1XtDQMIrK8gTUoo3wAg", + "shortcuts": [":hydrate:"], + "searchTerms": ["hydrate"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/tpgZgmhX8snKniye36mnrDVfTnlc44EK92EPeZ0m9M2EPizn1vKEGJzNYdp7KQy6iNZlYDc1=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/tpgZgmhX8snKniye36mnrDVfTnlc44EK92EPeZ0m9M2EPizn1vKEGJzNYdp7KQy6iNZlYDc1=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { "accessibilityData": { "label": "hydrate" } } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/jPgfY5j2IIud29sP3ZeA4Ag", + "shortcuts": [":eyes-pink-heart-shape:"], + "searchTerms": ["eyes-pink-heart-shape"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/5vzlCQfQQdzsG7nlQzD8eNjtyLlnATwFwGvrMpC8dgLcosNhWLXu8NN9qIS3HZjJYd872dM=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/5vzlCQfQQdzsG7nlQzD8eNjtyLlnATwFwGvrMpC8dgLcosNhWLXu8NN9qIS3HZjJYd872dM=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "eyes-pink-heart-shape" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/tPgfY7mSO4XovQKzmYCgCw", + "shortcuts": [":hand-green-crystal-ball:"], + "searchTerms": ["hand-green-crystal-ball"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/qZfJrWDEmR03FIak7PMNRNpMjNsCnOzD9PqK8mOpAp4Kacn_uXRNJNb99tE_1uyEbvgJReF2=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/qZfJrWDEmR03FIak7PMNRNpMjNsCnOzD9PqK8mOpAp4Kacn_uXRNJNb99tE_1uyEbvgJReF2=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "hand-green-crystal-ball" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/CIW60IPp_dYCFcuqTgodEu4IlQ", + "shortcuts": [":yt:"], + "searchTerms": ["yt"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/IkpeJf1g9Lq0WNjvSa4XFq4LVNZ9IP5FKW8yywXb12djo1OGdJtziejNASITyq4L0itkMNw=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/IkpeJf1g9Lq0WNjvSa4XFq4LVNZ9IP5FKW8yywXb12djo1OGdJtziejNASITyq4L0itkMNw=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { "accessibilityData": { "label": "yt" } } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/DfgfY9LaNdmMq7IPuI2AaA", + "shortcuts": [":face-purple-wide-eyes:"], + "searchTerms": ["face-purple-wide-eyes"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/5RDrtjmzRQKuVYE_FKPUHiGh7TNtX5eSNe6XzcSytMsHirXYKunxpyAsVacTFMg0jmUGhQ=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/5RDrtjmzRQKuVYE_FKPUHiGh7TNtX5eSNe6XzcSytMsHirXYKunxpyAsVacTFMg0jmUGhQ=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-purple-wide-eyes" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/hm5IY4W-H9SO5QS6n4CwCA", + "shortcuts": [":face-blue-heart-eyes:"], + "searchTerms": ["face-blue-heart-eyes"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/M9tzKd64_r3hvgpTSgca7K3eBlGuyiqdzzhYPp7ullFAHMgeFoNLA0uQ1dGxj3fXgfcHW4w=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/M9tzKd64_r3hvgpTSgca7K3eBlGuyiqdzzhYPp7ullFAHMgeFoNLA0uQ1dGxj3fXgfcHW4w=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-blue-heart-eyes" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/4PgfY73cJprKCq-_gIAO", + "shortcuts": [":body-green-covering-eyes:"], + "searchTerms": ["body-green-covering-eyes"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/UR8ydcU3gz360bzDsprB6d1klFSQyVzgn-Fkgu13dIKPj3iS8OtG1bhBUXPdj9pMwtM00ro=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/UR8ydcU3gz360bzDsprB6d1klFSQyVzgn-Fkgu13dIKPj3iS8OtG1bhBUXPdj9pMwtM00ro=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "body-green-covering-eyes" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/popcorn-yellow-striped-smile", + "shortcuts": [":popcorn-yellow-striped-smile:"], + "searchTerms": ["popcorn-yellow-striped-smile"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/TW_GktV5uVYviPDtkCRCKRDrGlUc3sJ5OHO81uqdMaaHrIQ5-sXXwJfDI3FKPyv4xtGpOlg=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/TW_GktV5uVYviPDtkCRCKRDrGlUc3sJ5OHO81uqdMaaHrIQ5-sXXwJfDI3FKPyv4xtGpOlg=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "popcorn-yellow-striped-smile" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/person-turquoise-waving-speech", + "shortcuts": [":person-turquoise-waving-speech:"], + "searchTerms": ["person-turquoise-waving-speech"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/gafhCE49PH_9q-PuigZaDdU6zOKD6grfwEh1MM7fYVs7smAS_yhYCBipq8gEiW73E0apKTzi=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/gafhCE49PH_9q-PuigZaDdU6zOKD6grfwEh1MM7fYVs7smAS_yhYCBipq8gEiW73E0apKTzi=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "person-turquoise-waving-speech" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/body-turquoise-yoga-pose", + "shortcuts": [":body-turquoise-yoga-pose:"], + "searchTerms": ["body-turquoise-yoga-pose"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/GW3otW7CmWpuayb7Ddo0ux5c-OvmPZ2K3vaytJi8bHFjcn-ulT8vcHMNcqVqMp1j2lit2Vw=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/GW3otW7CmWpuayb7Ddo0ux5c-OvmPZ2K3vaytJi8bHFjcn-ulT8vcHMNcqVqMp1j2lit2Vw=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "body-turquoise-yoga-pose" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/finger-red-number-one", + "shortcuts": [":finger-red-number-one:"], + "searchTerms": ["finger-red-number-one"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/Hbk0wxBzPTBCDvD_y4qdcHL5_uu7SeOnaT2B7gl9GLB4u8Ecm9OaXCGSMMUBFeNGl5Q3fHJ2=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/Hbk0wxBzPTBCDvD_y4qdcHL5_uu7SeOnaT2B7gl9GLB4u8Ecm9OaXCGSMMUBFeNGl5Q3fHJ2=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "finger-red-number-one" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/vQF1XpyaG_XG8gTs77bACQ", + "shortcuts": [":chillwcat:"], + "searchTerms": ["chillwcat"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/y03dFcPc1B7CO20zgQYzhcRPka5Bhs6iSg57MaxJdhaLidFvvXBLf_i4_SHG7zJ_2VpBMNs=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/y03dFcPc1B7CO20zgQYzhcRPka5Bhs6iSg57MaxJdhaLidFvvXBLf_i4_SHG7zJ_2VpBMNs=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { "accessibilityData": { "label": "chillwcat" } } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/YvgfY-LIBpjChgHKyYCQBg", + "shortcuts": [":hand-orange-covering-eyes:"], + "searchTerms": ["hand-orange-covering-eyes"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/y8ppa6GcJoRUdw7GwmjDmTAnSkeIkUptZMVQuFmFaTlF_CVIL7YP7hH7hd0TJbd8p9w67IM=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/y8ppa6GcJoRUdw7GwmjDmTAnSkeIkUptZMVQuFmFaTlF_CVIL7YP7hH7hd0TJbd8p9w67IM=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "hand-orange-covering-eyes" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/hourglass-purple-sand-orange", + "shortcuts": [":hourglass-purple-sand-orange:"], + "searchTerms": ["hourglass-purple-sand-orange"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/MFDLjasPt5cuSM_tK5Fnjaz_k08lKHdX_Mf7JkI6awaHriC3rGL7J_wHxyG6PPhJ8CJ6vsQ=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/MFDLjasPt5cuSM_tK5Fnjaz_k08lKHdX_Mf7JkI6awaHriC3rGL7J_wHxyG6PPhJ8CJ6vsQ=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "hourglass-purple-sand-orange" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/ygF1XpGUMMjk8gSDrI2wCw", + "shortcuts": [":chillwdog:"], + "searchTerms": ["chillwdog"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/Ir9mDxzUi0mbqyYdJ3N9Lq7bN5Xdt0Q7fEYFngN3GYAcJT_tccH1as1PKmInnpt2cbWOam4=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/Ir9mDxzUi0mbqyYdJ3N9Lq7bN5Xdt0Q7fEYFngN3GYAcJT_tccH1as1PKmInnpt2cbWOam4=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { "accessibilityData": { "label": "chillwdog" } } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/person-blue-speaking-microphone", + "shortcuts": [":person-blue-speaking-microphone:"], + "searchTerms": ["person-blue-speaking-microphone"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/FMaw3drKKGyc6dk3DvtHbkJ1Ki2uD0FLqSIiFDyuChc1lWcA9leahX3mCFMBIWviN2o8eyc=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/FMaw3drKKGyc6dk3DvtHbkJ1Ki2uD0FLqSIiFDyuChc1lWcA9leahX3mCFMBIWviN2o8eyc=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { + "label": "person-blue-speaking-microphone" + } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/JAJ1XpGpJYnW8wTupZu4Cw", + "shortcuts": [":washhands:"], + "searchTerms": ["washhands"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/qXUeUW0KpKBc9Z3AqUqr_0B7HbW1unAv4qmt7-LJGUK_gsFBIaHISWJNt4n3yvmAnQNZHE-u=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/qXUeUW0KpKBc9Z3AqUqr_0B7HbW1unAv4qmt7-LJGUK_gsFBIaHISWJNt4n3yvmAnQNZHE-u=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { "accessibilityData": { "label": "washhands" } } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/rW5IY_26FryOq7IPlL2A6Ao", + "shortcuts": [":face-blue-droopy-eyes:"], + "searchTerms": ["face-blue-droopy-eyes"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/hGPqMUCiXGt6zuX4dHy0HRZtQ-vZmOY8FM7NOHrJTta3UEJksBKjOcoE6ZUAW9sz7gIF_nk=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/hGPqMUCiXGt6zuX4dHy0HRZtQ-vZmOY8FM7NOHrJTta3UEJksBKjOcoE6ZUAW9sz7gIF_nk=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-blue-droopy-eyes" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/G8AfY6yWGuKuhL0PlbiA2AE", + "shortcuts": [":hand-pink-waving:"], + "searchTerms": ["hand-pink-waving"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/KOxdr_z3A5h1Gb7kqnxqOCnbZrBmxI2B_tRQ453BhTWUhYAlpg5ZP8IKEBkcvRoY8grY91Q=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/KOxdr_z3A5h1Gb7kqnxqOCnbZrBmxI2B_tRQ453BhTWUhYAlpg5ZP8IKEBkcvRoY8grY91Q=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "hand-pink-waving" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/penguin-blue-waving-tear", + "shortcuts": [":penguin-blue-waving-tear:"], + "searchTerms": ["penguin-blue-waving-tear"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/p2u7dcfZau4_bMOMtN7Ma8mjHX_43jOjDwITf4U9adT44I-y-PT7ddwPKkfbW6Wx02BTpNoC=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/p2u7dcfZau4_bMOMtN7Ma8mjHX_43jOjDwITf4U9adT44I-y-PT7ddwPKkfbW6Wx02BTpNoC=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "penguin-blue-waving-tear" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/NvgfY9aeC_OFvOMPkrOAsAM", + "shortcuts": [":face-pink-tears:"], + "searchTerms": ["face-pink-tears"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/RL5QHCNcO_Mc98SxFEblXZt9FNoh3bIgsjm0Kj8kmeQJWMeTu7JX_NpICJ6KKwKT0oVHhAA=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/RL5QHCNcO_Mc98SxFEblXZt9FNoh3bIgsjm0Kj8kmeQJWMeTu7JX_NpICJ6KKwKT0oVHhAA=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-pink-tears" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/UW5IY-ibBqa8jgTymoCIBQ", + "shortcuts": [":face-purple-sweating:"], + "searchTerms": ["face-purple-sweating"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/tRnrCQtEKlTM9YLPo0vaxq9mDvlT0mhDld2KI7e_nDRbhta3ULKSoPVHZ1-bNlzQRANmH90=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/tRnrCQtEKlTM9YLPo0vaxq9mDvlT0mhDld2KI7e_nDRbhta3ULKSoPVHZ1-bNlzQRANmH90=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-purple-sweating" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/CN2m5cKr49sCFYbFggodDFEKrg", + "shortcuts": [":oops:"], + "searchTerms": ["oops"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/PFoVIqIiFRS3aFf5-bt_tTC0WrDm_ylhF4BKKwgqAASNb7hVgx_adFP-XVhFiJLXdRK0EQ=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/PFoVIqIiFRS3aFf5-bt_tTC0WrDm_ylhF4BKKwgqAASNb7hVgx_adFP-XVhFiJLXdRK0EQ=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { "accessibilityData": { "label": "oops" } } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/hf90Xv-jHeOR8gSxxrToBA", + "shortcuts": [":yougotthis:"], + "searchTerms": ["yougotthis"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/s3uOe4lUx3iPIt1h901SlMp_sKCTp3oOVj1JV8izBw_vDVLxFqk5dq-3NX-nK_gnUwVEXld3=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/s3uOe4lUx3iPIt1h901SlMp_sKCTp3oOVj1JV8izBw_vDVLxFqk5dq-3NX-nK_gnUwVEXld3=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { "accessibilityData": { "label": "yougotthis" } } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/X_zdXMHgJaPa8gTGt4f4Ag", + "shortcuts": [":buffering:"], + "searchTerms": ["buffering"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/5gfMEfdqO9CiLwhN9Mq7VI6--T2QFp8AXNNy5Fo7btfY6fRKkThWq35SCZ6SPMVCjg-sUA=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/5gfMEfdqO9CiLwhN9Mq7VI6--T2QFp8AXNNy5Fo7btfY6fRKkThWq35SCZ6SPMVCjg-sUA=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { "accessibilityData": { "label": "buffering" } } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/dG5IY-mhEof9jgSykoCgBw", + "shortcuts": [":face-blue-star-eyes:"], + "searchTerms": ["face-blue-star-eyes"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/m_ANavMhp6cQ1HzX0HCTgp_er_yO2UA28JPbi-0HElQgnQ4_q5RUhgwueTpH-st8L3MyTA=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/m_ANavMhp6cQ1HzX0HCTgp_er_yO2UA28JPbi-0HElQgnQ4_q5RUhgwueTpH-st8L3MyTA=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-blue-star-eyes" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/-fgfY9DIGYjbhgHLzoDIDw", + "shortcuts": [":goat-turquoise-white-horns:"], + "searchTerms": ["goat-turquoise-white-horns"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/jMnX4lu5GnjBRgiPtX5FwFmEyKTlWFrr5voz-Auko35oP0t3-zhPxR3PQMYa-7KhDeDtrv4=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/jMnX4lu5GnjBRgiPtX5FwFmEyKTlWFrr5voz-Auko35oP0t3-zhPxR3PQMYa-7KhDeDtrv4=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "goat-turquoise-white-horns" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/clock-turquoise-looking-up", + "shortcuts": [":clock-turquoise-looking-up:"], + "searchTerms": ["clock-turquoise-looking-up"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/tDnDkDZykkJTrsWEJPlRF30rmbek2wcDcAIymruOvSLTsUFIZHoAiYTRe9OtO-80lDfFGvo=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/tDnDkDZykkJTrsWEJPlRF30rmbek2wcDcAIymruOvSLTsUFIZHoAiYTRe9OtO-80lDfFGvo=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "clock-turquoise-looking-up" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/xsIfY4OqCd2T29sP54iAsAw", + "shortcuts": [":face-green-smiling:"], + "searchTerms": ["face-green-smiling"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/G061SAfXg2bmG1ZXbJsJzQJpN8qEf_W3f5cb5nwzBYIV58IpPf6H90lElDl85iti3HgoL3o=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/G061SAfXg2bmG1ZXbJsJzQJpN8qEf_W3f5cb5nwzBYIV58IpPf6H90lElDl85iti3HgoL3o=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-green-smiling" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/m8MfY4jbFsWJhL0PyouA2Ak", + "shortcuts": [":face-red-heart-shape:"], + "searchTerms": ["face-red-heart-shape"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/I0Mem9dU_IZ4a9cQPzR0pUJ8bH-882Eg0sDQjBmPcHA6Oq0uXOZcsjPvPbtormx91Ha2eRA=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/I0Mem9dU_IZ4a9cQPzR0pUJ8bH-882Eg0sDQjBmPcHA6Oq0uXOZcsjPvPbtormx91Ha2eRA=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-red-heart-shape" } + } + }, + "isCustomEmoji": true + }, + { + "emojiId": "UCkszU2WH9gy1mb0dV-11UJg/2sIfY8vIG8z96ALulYDQDQ", + "shortcuts": [":face-orange-frowning:"], + "searchTerms": ["face-orange-frowning"], + "image": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/Ar8jaEIxzfiyYmB7ejDOHba2kUMdR37MHn_R39mtxqO5CD4aYGvjDFL22DW_Cka6LKzhGDk=w24-h24-c-k-nd", + "width": 24, + "height": 24 + }, + { + "url": "https://yt3.ggpht.com/Ar8jaEIxzfiyYmB7ejDOHba2kUMdR37MHn_R39mtxqO5CD4aYGvjDFL22DW_Cka6LKzhGDk=w48-h48-c-k-nd", + "width": 48, + "height": 48 + } + ], + "accessibility": { + "accessibilityData": { "label": "face-orange-frowning" } + } + }, + "isCustomEmoji": true + } + ], + "unicodeEmojisUrl": "https://www.gstatic.com/youtube/img/emojis/emojis-png-7.json", + "loggingDirectives": { + "trackingParams": "CHsQ7pgBGOABIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + ], + "slot": "RELOAD_CONTINUATION_SLOT_HEADER" + } + }, + { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "reloadContinuationItemsCommand": { + "targetId": "comments-section", + "continuationItems": [ + { + "commentThreadRenderer": { + "replies": { + "commentRepliesRenderer": { + "contents": [ + { + "continuationItemRenderer": { + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN", + "continuationEndpoint": { + "clickTrackingParams": "CHgQvnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/next" + } + }, + "continuationCommand": { + "token": "Eg0SC1FpcDFWa1R1TTcwGAYygwEaUBIaVWd5TlRUOHV4REVqZ1lxeWJJRjRBYUFCQWciAggAKhhVQ3lhZmx6ek9IMEdDNjgzRGxRLWZ6d2cyC1FpcDFWa1R1TTcwQAFICoIBAggBQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3lOVFQ4dXhERWpnWXF5YklGNEFhQUJBZw%3D%3D", + "request": "CONTINUATION_REQUEST_TYPE_WATCH_NEXT" + } + } + } + } + ], + "trackingParams": "CHgQvnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "viewReplies": { + "buttonRenderer": { + "text": { "runs": [{ "text": "220 replies" }] }, + "icon": { "iconType": "ARROW_DROP_DOWN" }, + "trackingParams": "CHoQosAEIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "iconPosition": "BUTTON_ICON_POSITION_TYPE_LEFT_OF_TEXT" + } + }, + "hideReplies": { + "buttonRenderer": { + "text": { "runs": [{ "text": "220 replies" }] }, + "icon": { "iconType": "ARROW_DROP_UP" }, + "trackingParams": "CHkQ280EIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "iconPosition": "BUTTON_ICON_POSITION_TYPE_LEFT_OF_TEXT" + } + }, + "targetId": "comment-replies-item-UgyNTT8uxDEjgYqybIF4AaABAg" + } + }, + "trackingParams": "CHYQwnUYywEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "renderingPriority": "RENDERING_PRIORITY_PINNED_COMMENT", + "isModeratedElqComment": false, + "commentViewModel": { + "commentViewModel": { + "commentKey": "EhpVZ3lOVFQ4dXhERWpnWXF5YklGNEFhQUJBZyAoKAE%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EhpVZ3lOVFQ4dXhERWpnWXF5YklGNEFhQUJBZyAsKAE%3D", + "toolbarSurfaceKey": "Eh1VZ3lOVFQ4dXhERWpnWXF5YklGNEFhQUJBZy8xMiBGKAE%3D", + "pinnedText": "Pinned by HaruXen", + "commentId": "UgyNTT8uxDEjgYqybIF4AaABAg", + "commentSurfaceKey": "Eh1VZ3lOVFQ4dXhERWpnWXF5YklGNEFhQUJBZy8xMiBPKAE%3D", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CHcQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "CHYQwnUYywEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "commentThreadRenderer": { + "replies": { + "commentRepliesRenderer": { + "contents": [ + { + "continuationItemRenderer": { + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN", + "continuationEndpoint": { + "clickTrackingParams": "CHMQvnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/next" + } + }, + "continuationCommand": { + "token": "Eg0SC1FpcDFWa1R1TTcwGAYygwEaUBIaVWd5Y1dnTk9vb24wQTRFVjlMWjRBYUFCQWciAggAKhhVQ3lhZmx6ek9IMEdDNjgzRGxRLWZ6d2cyC1FpcDFWa1R1TTcwQAFICoIBAggBQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3ljV2dOT29vbjBBNEVWOUxaNEFhQUJBZw%3D%3D", + "request": "CONTINUATION_REQUEST_TYPE_WATCH_NEXT" + } + } + } + } + ], + "trackingParams": "CHMQvnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "viewReplies": { + "buttonRenderer": { + "text": { "runs": [{ "text": "34 replies" }] }, + "icon": { "iconType": "ARROW_DROP_DOWN" }, + "trackingParams": "CHUQosAEIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "iconPosition": "BUTTON_ICON_POSITION_TYPE_LEFT_OF_TEXT" + } + }, + "hideReplies": { + "buttonRenderer": { + "text": { "runs": [{ "text": "34 replies" }] }, + "icon": { "iconType": "ARROW_DROP_UP" }, + "trackingParams": "CHQQ280EIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "iconPosition": "BUTTON_ICON_POSITION_TYPE_LEFT_OF_TEXT" + } + }, + "targetId": "comment-replies-item-UgycWgNOoon0A4EV9LZ4AaABAg" + } + }, + "trackingParams": "CHEQwnUYzAEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "renderingPriority": "RENDERING_PRIORITY_UNKNOWN", + "isModeratedElqComment": false, + "commentViewModel": { + "commentViewModel": { + "commentKey": "EhpVZ3ljV2dOT29vbjBBNEVWOUxaNEFhQUJBZyAoKAE%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EhpVZ3ljV2dOT29vbjBBNEVWOUxaNEFhQUJBZyAsKAE%3D", + "toolbarSurfaceKey": "Eh1VZ3ljV2dOT29vbjBBNEVWOUxaNEFhQUJBZy8xMiBGKAE%3D", + "commentId": "UgycWgNOoon0A4EV9LZ4AaABAg", + "commentSurfaceKey": "Eh1VZ3ljV2dOT29vbjBBNEVWOUxaNEFhQUJBZy8xMiBPKAE%3D", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CHIQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "CHEQwnUYzAEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "commentThreadRenderer": { + "replies": { + "commentRepliesRenderer": { + "contents": [ + { + "continuationItemRenderer": { + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN", + "continuationEndpoint": { + "clickTrackingParams": "CG4QvnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/next" + } + }, + "continuationCommand": { + "token": "Eg0SC1FpcDFWa1R1TTcwGAYygwEaUBIaVWd5NWlxNE0xYzNXUzNsR21paDRBYUFCQWciAggAKhhVQ3lhZmx6ek9IMEdDNjgzRGxRLWZ6d2cyC1FpcDFWa1R1TTcwQAFICoIBAggBQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3k1aXE0TTFjM1dTM2xHbWloNEFhQUJBZw%3D%3D", + "request": "CONTINUATION_REQUEST_TYPE_WATCH_NEXT" + } + } + } + } + ], + "trackingParams": "CG4QvnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "viewReplies": { + "buttonRenderer": { + "text": { "runs": [{ "text": "22 replies" }] }, + "icon": { "iconType": "ARROW_DROP_DOWN" }, + "trackingParams": "CHAQosAEIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "iconPosition": "BUTTON_ICON_POSITION_TYPE_LEFT_OF_TEXT" + } + }, + "hideReplies": { + "buttonRenderer": { + "text": { "runs": [{ "text": "22 replies" }] }, + "icon": { "iconType": "ARROW_DROP_UP" }, + "trackingParams": "CG8Q280EIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "iconPosition": "BUTTON_ICON_POSITION_TYPE_LEFT_OF_TEXT" + } + }, + "targetId": "comment-replies-item-Ugy5iq4M1c3WS3lGmih4AaABAg" + } + }, + "trackingParams": "CGwQwnUYzQEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "renderingPriority": "RENDERING_PRIORITY_UNKNOWN", + "isModeratedElqComment": false, + "commentViewModel": { + "commentViewModel": { + "commentKey": "EhpVZ3k1aXE0TTFjM1dTM2xHbWloNEFhQUJBZyAoKAE%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EhpVZ3k1aXE0TTFjM1dTM2xHbWloNEFhQUJBZyAsKAE%3D", + "toolbarSurfaceKey": "Eh1VZ3k1aXE0TTFjM1dTM2xHbWloNEFhQUJBZy8xMiBGKAE%3D", + "commentId": "Ugy5iq4M1c3WS3lGmih4AaABAg", + "commentSurfaceKey": "Eh1VZ3k1aXE0TTFjM1dTM2xHbWloNEFhQUJBZy8xMiBPKAE%3D", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CG0QtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "CGwQwnUYzQEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "commentThreadRenderer": { + "trackingParams": "CGoQwnUYzgEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "renderingPriority": "RENDERING_PRIORITY_UNKNOWN", + "isModeratedElqComment": false, + "commentViewModel": { + "commentViewModel": { + "commentKey": "EhpVZ3hxRElWVmNvaWdqdHg0RHRsNEFhQUJBZyAoKAE%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EhpVZ3hxRElWVmNvaWdqdHg0RHRsNEFhQUJBZyAsKAE%3D", + "toolbarSurfaceKey": "Eh1VZ3hxRElWVmNvaWdqdHg0RHRsNEFhQUJBZy8xMiBGKAE%3D", + "commentId": "UgxqDIVVcoigjtx4Dtl4AaABAg", + "commentSurfaceKey": "Eh1VZ3hxRElWVmNvaWdqdHg0RHRsNEFhQUJBZy8xMiBPKAE%3D", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CGsQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "CGoQwnUYzgEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "commentThreadRenderer": { + "replies": { + "commentRepliesRenderer": { + "contents": [ + { + "continuationItemRenderer": { + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN", + "continuationEndpoint": { + "clickTrackingParams": "CGcQvnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/next" + } + }, + "continuationCommand": { + "token": "Eg0SC1FpcDFWa1R1TTcwGAYygwEaUBIaVWd4RFFmVlFkWWFXUi1WVU0tOTRBYUFCQWciAggAKhhVQ3lhZmx6ek9IMEdDNjgzRGxRLWZ6d2cyC1FpcDFWa1R1TTcwQAFICoIBAggBQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3hEUWZWUWRZYVdSLVZVTS05NEFhQUJBZw%3D%3D", + "request": "CONTINUATION_REQUEST_TYPE_WATCH_NEXT" + } + } + } + } + ], + "trackingParams": "CGcQvnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "viewReplies": { + "buttonRenderer": { + "text": { "runs": [{ "text": "1 reply" }] }, + "icon": { "iconType": "ARROW_DROP_DOWN" }, + "trackingParams": "CGkQosAEIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "iconPosition": "BUTTON_ICON_POSITION_TYPE_LEFT_OF_TEXT" + } + }, + "hideReplies": { + "buttonRenderer": { + "text": { "runs": [{ "text": "1 reply" }] }, + "icon": { "iconType": "ARROW_DROP_UP" }, + "trackingParams": "CGgQ280EIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "iconPosition": "BUTTON_ICON_POSITION_TYPE_LEFT_OF_TEXT" + } + }, + "targetId": "comment-replies-item-UgxDQfVQdYaWR-VUM-94AaABAg" + } + }, + "trackingParams": "CGUQwnUYzwEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "renderingPriority": "RENDERING_PRIORITY_UNKNOWN", + "isModeratedElqComment": false, + "commentViewModel": { + "commentViewModel": { + "commentKey": "EhpVZ3hEUWZWUWRZYVdSLVZVTS05NEFhQUJBZyAoKAE%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EhpVZ3hEUWZWUWRZYVdSLVZVTS05NEFhQUJBZyAsKAE%3D", + "toolbarSurfaceKey": "Eh1VZ3hEUWZWUWRZYVdSLVZVTS05NEFhQUJBZy8xMiBGKAE%3D", + "commentId": "UgxDQfVQdYaWR-VUM-94AaABAg", + "commentSurfaceKey": "Eh1VZ3hEUWZWUWRZYVdSLVZVTS05NEFhQUJBZy8xMiBPKAE%3D", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CGYQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "CGUQwnUYzwEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "commentThreadRenderer": { + "replies": { + "commentRepliesRenderer": { + "contents": [ + { + "continuationItemRenderer": { + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN", + "continuationEndpoint": { + "clickTrackingParams": "CGIQvnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/next" + } + }, + "continuationCommand": { + "token": "Eg0SC1FpcDFWa1R1TTcwGAYygwEaUBIaVWd4RnZybXdlYy1qbWZReUdSUjRBYUFCQWciAggAKhhVQ3lhZmx6ek9IMEdDNjgzRGxRLWZ6d2cyC1FpcDFWa1R1TTcwQAFICoIBAggBQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3hGdnJtd2VjLWptZlF5R1JSNEFhQUJBZw%3D%3D", + "request": "CONTINUATION_REQUEST_TYPE_WATCH_NEXT" + } + } + } + } + ], + "trackingParams": "CGIQvnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "viewReplies": { + "buttonRenderer": { + "text": { "runs": [{ "text": "65 replies" }] }, + "icon": { "iconType": "ARROW_DROP_DOWN" }, + "trackingParams": "CGQQosAEIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "iconPosition": "BUTTON_ICON_POSITION_TYPE_LEFT_OF_TEXT" + } + }, + "hideReplies": { + "buttonRenderer": { + "text": { "runs": [{ "text": "65 replies" }] }, + "icon": { "iconType": "ARROW_DROP_UP" }, + "trackingParams": "CGMQ280EIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "iconPosition": "BUTTON_ICON_POSITION_TYPE_LEFT_OF_TEXT" + } + }, + "targetId": "comment-replies-item-UgxFvrmwec-jmfQyGRR4AaABAg" + } + }, + "trackingParams": "CGAQwnUY0AEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "renderingPriority": "RENDERING_PRIORITY_UNKNOWN", + "isModeratedElqComment": false, + "commentViewModel": { + "commentViewModel": { + "commentKey": "EhpVZ3hGdnJtd2VjLWptZlF5R1JSNEFhQUJBZyAoKAE%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EhpVZ3hGdnJtd2VjLWptZlF5R1JSNEFhQUJBZyAsKAE%3D", + "toolbarSurfaceKey": "Eh1VZ3hGdnJtd2VjLWptZlF5R1JSNEFhQUJBZy8xMiBGKAE%3D", + "commentId": "UgxFvrmwec-jmfQyGRR4AaABAg", + "commentSurfaceKey": "Eh1VZ3hGdnJtd2VjLWptZlF5R1JSNEFhQUJBZy8xMiBPKAE%3D", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CGEQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "CGAQwnUY0AEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "commentThreadRenderer": { + "replies": { + "commentRepliesRenderer": { + "contents": [ + { + "continuationItemRenderer": { + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN", + "continuationEndpoint": { + "clickTrackingParams": "CF0QvnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/next" + } + }, + "continuationCommand": { + "token": "Eg0SC1FpcDFWa1R1TTcwGAYygwEaUBIaVWd5LTNPWUVjd3hrdnlyckNxTjRBYUFCQWciAggAKhhVQ3lhZmx6ek9IMEdDNjgzRGxRLWZ6d2cyC1FpcDFWa1R1TTcwQAFICoIBAggBQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3ktM09ZRWN3eGt2eXJyQ3FONEFhQUJBZw%3D%3D", + "request": "CONTINUATION_REQUEST_TYPE_WATCH_NEXT" + } + } + } + } + ], + "trackingParams": "CF0QvnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "viewReplies": { + "buttonRenderer": { + "text": { "runs": [{ "text": "250 replies" }] }, + "icon": { "iconType": "ARROW_DROP_DOWN" }, + "trackingParams": "CF8QosAEIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "iconPosition": "BUTTON_ICON_POSITION_TYPE_LEFT_OF_TEXT" + } + }, + "hideReplies": { + "buttonRenderer": { + "text": { "runs": [{ "text": "250 replies" }] }, + "icon": { "iconType": "ARROW_DROP_UP" }, + "trackingParams": "CF4Q280EIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "iconPosition": "BUTTON_ICON_POSITION_TYPE_LEFT_OF_TEXT" + } + }, + "targetId": "comment-replies-item-Ugy-3OYEcwxkvyrrCqN4AaABAg" + } + }, + "trackingParams": "CFsQwnUY0QEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "renderingPriority": "RENDERING_PRIORITY_UNKNOWN", + "isModeratedElqComment": false, + "commentViewModel": { + "commentViewModel": { + "commentKey": "EhpVZ3ktM09ZRWN3eGt2eXJyQ3FONEFhQUJBZyAoKAE%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EhpVZ3ktM09ZRWN3eGt2eXJyQ3FONEFhQUJBZyAsKAE%3D", + "toolbarSurfaceKey": "Eh1VZ3ktM09ZRWN3eGt2eXJyQ3FONEFhQUJBZy8xMiBGKAE%3D", + "commentId": "Ugy-3OYEcwxkvyrrCqN4AaABAg", + "commentSurfaceKey": "Eh1VZ3ktM09ZRWN3eGt2eXJyQ3FONEFhQUJBZy8xMiBPKAE%3D", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CFwQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "CFsQwnUY0QEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "commentThreadRenderer": { + "replies": { + "commentRepliesRenderer": { + "contents": [ + { + "continuationItemRenderer": { + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN", + "continuationEndpoint": { + "clickTrackingParams": "CFgQvnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/next" + } + }, + "continuationCommand": { + "token": "Eg0SC1FpcDFWa1R1TTcwGAYygwEaUBIaVWd5bHczc3NfeHY5c3ZXYlJ1ZDRBYUFCQWciAggAKhhVQ3lhZmx6ek9IMEdDNjgzRGxRLWZ6d2cyC1FpcDFWa1R1TTcwQAFICoIBAggBQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3lsdzNzc194djlzdldiUnVkNEFhQUJBZw%3D%3D", + "request": "CONTINUATION_REQUEST_TYPE_WATCH_NEXT" + } + } + } + } + ], + "trackingParams": "CFgQvnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "viewReplies": { + "buttonRenderer": { + "text": { "runs": [{ "text": "1 reply" }] }, + "icon": { "iconType": "ARROW_DROP_DOWN" }, + "trackingParams": "CFoQosAEIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "iconPosition": "BUTTON_ICON_POSITION_TYPE_LEFT_OF_TEXT" + } + }, + "hideReplies": { + "buttonRenderer": { + "text": { "runs": [{ "text": "1 reply" }] }, + "icon": { "iconType": "ARROW_DROP_UP" }, + "trackingParams": "CFkQ280EIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "iconPosition": "BUTTON_ICON_POSITION_TYPE_LEFT_OF_TEXT" + } + }, + "targetId": "comment-replies-item-Ugylw3ss_xv9svWbRud4AaABAg" + } + }, + "trackingParams": "CFYQwnUY0gEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "renderingPriority": "RENDERING_PRIORITY_UNKNOWN", + "isModeratedElqComment": false, + "commentViewModel": { + "commentViewModel": { + "commentKey": "EhpVZ3lsdzNzc194djlzdldiUnVkNEFhQUJBZyAoKAE%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EhpVZ3lsdzNzc194djlzdldiUnVkNEFhQUJBZyAsKAE%3D", + "toolbarSurfaceKey": "Eh1VZ3lsdzNzc194djlzdldiUnVkNEFhQUJBZy8xMiBGKAE%3D", + "commentId": "Ugylw3ss_xv9svWbRud4AaABAg", + "commentSurfaceKey": "Eh1VZ3lsdzNzc194djlzdldiUnVkNEFhQUJBZy8xMiBPKAE%3D", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CFcQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "CFYQwnUY0gEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "commentThreadRenderer": { + "trackingParams": "CFQQwnUY0wEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "renderingPriority": "RENDERING_PRIORITY_UNKNOWN", + "isModeratedElqComment": false, + "commentViewModel": { + "commentViewModel": { + "commentKey": "EhpVZ3lkWG9iUkIwRjVkVzFLVnNGNEFhQUJBZyAoKAE%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EhpVZ3lkWG9iUkIwRjVkVzFLVnNGNEFhQUJBZyAsKAE%3D", + "toolbarSurfaceKey": "Eh1VZ3lkWG9iUkIwRjVkVzFLVnNGNEFhQUJBZy8xMiBGKAE%3D", + "commentId": "UgydXobRB0F5dW1KVsF4AaABAg", + "commentSurfaceKey": "Eh1VZ3lkWG9iUkIwRjVkVzFLVnNGNEFhQUJBZy8xMiBPKAE%3D", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CFUQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "CFQQwnUY0wEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "commentThreadRenderer": { + "replies": { + "commentRepliesRenderer": { + "contents": [ + { + "continuationItemRenderer": { + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN", + "continuationEndpoint": { + "clickTrackingParams": "CFEQvnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/next" + } + }, + "continuationCommand": { + "token": "Eg0SC1FpcDFWa1R1TTcwGAYygwEaUBIaVWd3bUZuNmVqS2x0Y1pfQlp2bDRBYUFCQWciAggAKhhVQ3lhZmx6ek9IMEdDNjgzRGxRLWZ6d2cyC1FpcDFWa1R1TTcwQAFICoIBAggBQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3dtRm42ZWpLbHRjWl9CWnZsNEFhQUJBZw%3D%3D", + "request": "CONTINUATION_REQUEST_TYPE_WATCH_NEXT" + } + } + } + } + ], + "trackingParams": "CFEQvnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "viewReplies": { + "buttonRenderer": { + "text": { "runs": [{ "text": "12 replies" }] }, + "icon": { "iconType": "ARROW_DROP_DOWN" }, + "trackingParams": "CFMQosAEIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "iconPosition": "BUTTON_ICON_POSITION_TYPE_LEFT_OF_TEXT" + } + }, + "hideReplies": { + "buttonRenderer": { + "text": { "runs": [{ "text": "12 replies" }] }, + "icon": { "iconType": "ARROW_DROP_UP" }, + "trackingParams": "CFIQ280EIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "iconPosition": "BUTTON_ICON_POSITION_TYPE_LEFT_OF_TEXT" + } + }, + "targetId": "comment-replies-item-UgwmFn6ejKltcZ_BZvl4AaABAg" + } + }, + "trackingParams": "CE8QwnUY1AEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "renderingPriority": "RENDERING_PRIORITY_UNKNOWN", + "isModeratedElqComment": false, + "commentViewModel": { + "commentViewModel": { + "commentKey": "EhpVZ3dtRm42ZWpLbHRjWl9CWnZsNEFhQUJBZyAoKAE%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EhpVZ3dtRm42ZWpLbHRjWl9CWnZsNEFhQUJBZyAsKAE%3D", + "toolbarSurfaceKey": "Eh1VZ3dtRm42ZWpLbHRjWl9CWnZsNEFhQUJBZy8xMiBGKAE%3D", + "commentId": "UgwmFn6ejKltcZ_BZvl4AaABAg", + "commentSurfaceKey": "Eh1VZ3dtRm42ZWpLbHRjWl9CWnZsNEFhQUJBZy8xMiBPKAE%3D", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CFAQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "CE8QwnUY1AEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "commentThreadRenderer": { + "replies": { + "commentRepliesRenderer": { + "contents": [ + { + "continuationItemRenderer": { + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN", + "continuationEndpoint": { + "clickTrackingParams": "CEoQvnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/next" + } + }, + "continuationCommand": { + "token": "Eg0SC1FpcDFWa1R1TTcwGAYygwEaUBIaVWd4dFhINmJXUldtOGFoYXZmUjRBYUFCQWciAggAKhhVQ3lhZmx6ek9IMEdDNjgzRGxRLWZ6d2cyC1FpcDFWa1R1TTcwQAFICoIBAggBQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3h0WEg2YldSV204YWhhdmZSNEFhQUJBZw%3D%3D", + "request": "CONTINUATION_REQUEST_TYPE_WATCH_NEXT" + } + } + } + } + ], + "trackingParams": "CEoQvnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "viewReplies": { + "buttonRenderer": { + "text": { "runs": [{ "text": "337 replies" }] }, + "trackingParams": "CE4QosAEIhMIuuKt3ZihhQMVr8tCBR3NeASj" + } + }, + "hideReplies": { + "buttonRenderer": { + "text": { "runs": [{ "text": "337 replies" }] }, + "trackingParams": "CE0Q280EIhMIuuKt3ZihhQMVr8tCBR3NeASj" + } + }, + "targetId": "comment-replies-item-UgxtXH6bWRWm8ahavfR4AaABAg", + "viewRepliesCreatorThumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/YMmDD0zp5wT6l5ozqVMEMuqm5W07QFqmMHzOJ9QKGnSf9xpgEQ0rznstfXlBDxlFpLIrltQxRg=s48-c-k-c0x00ffffff-no-rj", + "width": 48, + "height": 48 + }, + { + "url": "https://yt3.ggpht.com/YMmDD0zp5wT6l5ozqVMEMuqm5W07QFqmMHzOJ9QKGnSf9xpgEQ0rznstfXlBDxlFpLIrltQxRg=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + }, + { + "url": "https://yt3.ggpht.com/YMmDD0zp5wT6l5ozqVMEMuqm5W07QFqmMHzOJ9QKGnSf9xpgEQ0rznstfXlBDxlFpLIrltQxRg=s176-c-k-c0x00ffffff-no-rj", + "width": 176, + "height": 176 + } + ], + "accessibility": { "accessibilityData": { "label": "HaruXen" } } + }, + "viewRepliesIcon": { + "buttonRenderer": { + "icon": { "iconType": "ARROW_DROP_DOWN" }, + "trackingParams": "CEwQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "hideRepliesIcon": { + "buttonRenderer": { + "icon": { "iconType": "ARROW_DROP_UP" }, + "trackingParams": "CEsQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + } + } + }, + "trackingParams": "CEgQwnUY1QEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "renderingPriority": "RENDERING_PRIORITY_UNKNOWN", + "isModeratedElqComment": false, + "commentViewModel": { + "commentViewModel": { + "commentKey": "EhpVZ3h0WEg2YldSV204YWhhdmZSNEFhQUJBZyAoKAE%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EhpVZ3h0WEg2YldSV204YWhhdmZSNEFhQUJBZyAsKAE%3D", + "toolbarSurfaceKey": "Eh1VZ3h0WEg2YldSV204YWhhdmZSNEFhQUJBZy8xMiBGKAE%3D", + "commentId": "UgxtXH6bWRWm8ahavfR4AaABAg", + "commentSurfaceKey": "Eh1VZ3h0WEg2YldSV204YWhhdmZSNEFhQUJBZy8xMiBPKAE%3D", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CEkQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "CEgQwnUY1QEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "commentThreadRenderer": { + "trackingParams": "CEYQwnUY1gEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "renderingPriority": "RENDERING_PRIORITY_UNKNOWN", + "isModeratedElqComment": false, + "commentViewModel": { + "commentViewModel": { + "commentKey": "EhpVZ3lIZzNYbmpCVjkzNWRhX0xoNEFhQUJBZyAoKAE%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EhpVZ3lIZzNYbmpCVjkzNWRhX0xoNEFhQUJBZyAsKAE%3D", + "toolbarSurfaceKey": "Eh1VZ3lIZzNYbmpCVjkzNWRhX0xoNEFhQUJBZy8xMiBGKAE%3D", + "commentId": "UgyHg3XnjBV935da_Lh4AaABAg", + "commentSurfaceKey": "Eh1VZ3lIZzNYbmpCVjkzNWRhX0xoNEFhQUJBZy8xMiBPKAE%3D", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CEcQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "CEYQwnUY1gEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "commentThreadRenderer": { + "trackingParams": "CEQQwnUY1wEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "renderingPriority": "RENDERING_PRIORITY_UNKNOWN", + "isModeratedElqComment": false, + "commentViewModel": { + "commentViewModel": { + "commentKey": "EhpVZ3hJTDVlbVh5bjQyaHRsZlpaNEFhQUJBZyAoKAE%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EhpVZ3hJTDVlbVh5bjQyaHRsZlpaNEFhQUJBZyAsKAE%3D", + "toolbarSurfaceKey": "Eh1VZ3hJTDVlbVh5bjQyaHRsZlpaNEFhQUJBZy8xMiBGKAE%3D", + "commentId": "UgxIL5emXyn42htlfZZ4AaABAg", + "commentSurfaceKey": "Eh1VZ3hJTDVlbVh5bjQyaHRsZlpaNEFhQUJBZy8xMiBPKAE%3D", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CEUQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "CEQQwnUY1wEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "commentThreadRenderer": { + "replies": { + "commentRepliesRenderer": { + "contents": [ + { + "continuationItemRenderer": { + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN", + "continuationEndpoint": { + "clickTrackingParams": "CEEQvnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/next" + } + }, + "continuationCommand": { + "token": "Eg0SC1FpcDFWa1R1TTcwGAYygwEaUBIaVWd3TUtZLTg5WENkQ1ZCOWJYcDRBYUFCQWciAggAKhhVQ3lhZmx6ek9IMEdDNjgzRGxRLWZ6d2cyC1FpcDFWa1R1TTcwQAFICoIBAggBQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3dNS1ktODlYQ2RDVkI5YlhwNEFhQUJBZw%3D%3D", + "request": "CONTINUATION_REQUEST_TYPE_WATCH_NEXT" + } + } + } + } + ], + "trackingParams": "CEEQvnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "viewReplies": { + "buttonRenderer": { + "text": { "runs": [{ "text": "5 replies" }] }, + "icon": { "iconType": "ARROW_DROP_DOWN" }, + "trackingParams": "CEMQosAEIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "iconPosition": "BUTTON_ICON_POSITION_TYPE_LEFT_OF_TEXT" + } + }, + "hideReplies": { + "buttonRenderer": { + "text": { "runs": [{ "text": "5 replies" }] }, + "icon": { "iconType": "ARROW_DROP_UP" }, + "trackingParams": "CEIQ280EIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "iconPosition": "BUTTON_ICON_POSITION_TYPE_LEFT_OF_TEXT" + } + }, + "targetId": "comment-replies-item-UgwMKY-89XCdCVB9bXp4AaABAg" + } + }, + "trackingParams": "CD8QwnUY2AEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "renderingPriority": "RENDERING_PRIORITY_UNKNOWN", + "isModeratedElqComment": false, + "commentViewModel": { + "commentViewModel": { + "commentKey": "EhpVZ3dNS1ktODlYQ2RDVkI5YlhwNEFhQUJBZyAoKAE%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EhpVZ3dNS1ktODlYQ2RDVkI5YlhwNEFhQUJBZyAsKAE%3D", + "toolbarSurfaceKey": "Eh1VZ3dNS1ktODlYQ2RDVkI5YlhwNEFhQUJBZy8xMiBGKAE%3D", + "commentId": "UgwMKY-89XCdCVB9bXp4AaABAg", + "commentSurfaceKey": "Eh1VZ3dNS1ktODlYQ2RDVkI5YlhwNEFhQUJBZy8xMiBPKAE%3D", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CEAQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "CD8QwnUY2AEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "commentThreadRenderer": { + "replies": { + "commentRepliesRenderer": { + "contents": [ + { + "continuationItemRenderer": { + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN", + "continuationEndpoint": { + "clickTrackingParams": "CDwQvnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/next" + } + }, + "continuationCommand": { + "token": "Eg0SC1FpcDFWa1R1TTcwGAYygwEaUBIaVWd5ZnVHMnNDRHZnblJVWUhKcDRBYUFCQWciAggAKhhVQ3lhZmx6ek9IMEdDNjgzRGxRLWZ6d2cyC1FpcDFWa1R1TTcwQAFICoIBAggBQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3lmdUcyc0NEdmduUlVZSEpwNEFhQUJBZw%3D%3D", + "request": "CONTINUATION_REQUEST_TYPE_WATCH_NEXT" + } + } + } + } + ], + "trackingParams": "CDwQvnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "viewReplies": { + "buttonRenderer": { + "text": { "runs": [{ "text": "15 replies" }] }, + "icon": { "iconType": "ARROW_DROP_DOWN" }, + "trackingParams": "CD4QosAEIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "iconPosition": "BUTTON_ICON_POSITION_TYPE_LEFT_OF_TEXT" + } + }, + "hideReplies": { + "buttonRenderer": { + "text": { "runs": [{ "text": "15 replies" }] }, + "icon": { "iconType": "ARROW_DROP_UP" }, + "trackingParams": "CD0Q280EIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "iconPosition": "BUTTON_ICON_POSITION_TYPE_LEFT_OF_TEXT" + } + }, + "targetId": "comment-replies-item-UgyfuG2sCDvgnRUYHJp4AaABAg" + } + }, + "trackingParams": "CDoQwnUY2QEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "renderingPriority": "RENDERING_PRIORITY_UNKNOWN", + "isModeratedElqComment": false, + "commentViewModel": { + "commentViewModel": { + "commentKey": "EhpVZ3lmdUcyc0NEdmduUlVZSEpwNEFhQUJBZyAoKAE%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EhpVZ3lmdUcyc0NEdmduUlVZSEpwNEFhQUJBZyAsKAE%3D", + "toolbarSurfaceKey": "Eh1VZ3lmdUcyc0NEdmduUlVZSEpwNEFhQUJBZy8xMiBGKAE%3D", + "commentId": "UgyfuG2sCDvgnRUYHJp4AaABAg", + "commentSurfaceKey": "Eh1VZ3lmdUcyc0NEdmduUlVZSEpwNEFhQUJBZy8xMiBPKAE%3D", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CDsQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "CDoQwnUY2QEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "commentThreadRenderer": { + "trackingParams": "CDgQwnUY2gEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "renderingPriority": "RENDERING_PRIORITY_UNKNOWN", + "isModeratedElqComment": false, + "commentViewModel": { + "commentViewModel": { + "commentKey": "EhpVZ3dBWG5kTk5FYTFoLVZWSUM5NEFhQUJBZyAoKAE%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EhpVZ3dBWG5kTk5FYTFoLVZWSUM5NEFhQUJBZyAsKAE%3D", + "toolbarSurfaceKey": "Eh1VZ3dBWG5kTk5FYTFoLVZWSUM5NEFhQUJBZy8xMiBGKAE%3D", + "commentId": "UgwAXndNNEa1h-VVIC94AaABAg", + "commentSurfaceKey": "Eh1VZ3dBWG5kTk5FYTFoLVZWSUM5NEFhQUJBZy8xMiBPKAE%3D", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CDkQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "CDgQwnUY2gEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "commentThreadRenderer": { + "trackingParams": "CDYQwnUY2wEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "renderingPriority": "RENDERING_PRIORITY_UNKNOWN", + "isModeratedElqComment": false, + "commentViewModel": { + "commentViewModel": { + "commentKey": "EhpVZ3d3RUJxYXJlUTB0cHNXN1JSNEFhQUJBZyAoKAE%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EhpVZ3d3RUJxYXJlUTB0cHNXN1JSNEFhQUJBZyAsKAE%3D", + "toolbarSurfaceKey": "Eh1VZ3d3RUJxYXJlUTB0cHNXN1JSNEFhQUJBZy8xMiBGKAE%3D", + "commentId": "UgwwEBqareQ0tpsW7RR4AaABAg", + "commentSurfaceKey": "Eh1VZ3d3RUJxYXJlUTB0cHNXN1JSNEFhQUJBZy8xMiBPKAE%3D", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CDcQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "CDYQwnUY2wEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "commentThreadRenderer": { + "replies": { + "commentRepliesRenderer": { + "contents": [ + { + "continuationItemRenderer": { + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN", + "continuationEndpoint": { + "clickTrackingParams": "CDMQvnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/next" + } + }, + "continuationCommand": { + "token": "Eg0SC1FpcDFWa1R1TTcwGAYygwEaUBIaVWd4bkZNTHJwdmJDV3pIaWRtbDRBYUFCQWciAggAKhhVQ3lhZmx6ek9IMEdDNjgzRGxRLWZ6d2cyC1FpcDFWa1R1TTcwQAFICoIBAggBQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3huRk1McnB2YkNXekhpZG1sNEFhQUJBZw%3D%3D", + "request": "CONTINUATION_REQUEST_TYPE_WATCH_NEXT" + } + } + } + } + ], + "trackingParams": "CDMQvnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "viewReplies": { + "buttonRenderer": { + "text": { "runs": [{ "text": "5 replies" }] }, + "icon": { "iconType": "ARROW_DROP_DOWN" }, + "trackingParams": "CDUQosAEIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "iconPosition": "BUTTON_ICON_POSITION_TYPE_LEFT_OF_TEXT" + } + }, + "hideReplies": { + "buttonRenderer": { + "text": { "runs": [{ "text": "5 replies" }] }, + "icon": { "iconType": "ARROW_DROP_UP" }, + "trackingParams": "CDQQ280EIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "iconPosition": "BUTTON_ICON_POSITION_TYPE_LEFT_OF_TEXT" + } + }, + "targetId": "comment-replies-item-UgxnFMLrpvbCWzHidml4AaABAg" + } + }, + "trackingParams": "CDEQwnUY3AEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "renderingPriority": "RENDERING_PRIORITY_UNKNOWN", + "isModeratedElqComment": false, + "commentViewModel": { + "commentViewModel": { + "commentKey": "EhpVZ3huRk1McnB2YkNXekhpZG1sNEFhQUJBZyAoKAE%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EhpVZ3huRk1McnB2YkNXekhpZG1sNEFhQUJBZyAsKAE%3D", + "toolbarSurfaceKey": "Eh1VZ3huRk1McnB2YkNXekhpZG1sNEFhQUJBZy8xMiBGKAE%3D", + "commentId": "UgxnFMLrpvbCWzHidml4AaABAg", + "commentSurfaceKey": "Eh1VZ3huRk1McnB2YkNXekhpZG1sNEFhQUJBZy8xMiBPKAE%3D", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CDIQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "CDEQwnUY3AEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "commentThreadRenderer": { + "trackingParams": "CC8QwnUY3QEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "renderingPriority": "RENDERING_PRIORITY_UNKNOWN", + "isModeratedElqComment": false, + "commentViewModel": { + "commentViewModel": { + "commentKey": "EhpVZ3dDSXdtRjZzeW5QN1VGX3dWNEFhQUJBZyAoKAE%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EhpVZ3dDSXdtRjZzeW5QN1VGX3dWNEFhQUJBZyAsKAE%3D", + "toolbarSurfaceKey": "Eh1VZ3dDSXdtRjZzeW5QN1VGX3dWNEFhQUJBZy8xMiBGKAE%3D", + "commentId": "UgwCIwmF6synP7UF_wV4AaABAg", + "commentSurfaceKey": "Eh1VZ3dDSXdtRjZzeW5QN1VGX3dWNEFhQUJBZy8xMiBPKAE%3D", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CDAQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "CC8QwnUY3QEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "commentThreadRenderer": { + "trackingParams": "CC0QwnUY3gEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "renderingPriority": "RENDERING_PRIORITY_UNKNOWN", + "isModeratedElqComment": false, + "commentViewModel": { + "commentViewModel": { + "commentKey": "EhpVZ3liNVd5OTFZb242OW8zd0xoNEFhQUJBZyAoKAE%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EhpVZ3liNVd5OTFZb242OW8zd0xoNEFhQUJBZyAsKAE%3D", + "toolbarSurfaceKey": "Eh1VZ3liNVd5OTFZb242OW8zd0xoNEFhQUJBZy8xMiBGKAE%3D", + "commentId": "Ugyb5Wy91Yon69o3wLh4AaABAg", + "commentSurfaceKey": "Eh1VZ3liNVd5OTFZb242OW8zd0xoNEFhQUJBZy8xMiBPKAE%3D", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CC4QtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + "loggingDirectives": { + "trackingParams": "CC0QwnUY3gEiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + }, + { + "continuationItemRenderer": { + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN", + "continuationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/next" + } + }, + "continuationCommand": { + "token": "Eg0SC1FpcDFWa1R1TTcwGAYy4gIKuAJnZXRfcmFua2VkX3N0cmVhbXMtLUNxWUJDSUFFRlJlMzBUZ2Ftd0VLbGdFSTJGOFFnQVFZQnlLTEFSdUNtdFZ5a3dZMFFzVVVvM3I0LUY0OWU2d3RGSGFjbDIxS0Nsd3M4ZFZNaGdDdm9VWFhac2NZNXVncURIaUNiQVpveUczUEh6MTRPQ0tJV1BZTm9PTnN6dlFPVDZkaFZXMGRiSlZNelJXSW5QTm5QY0pyTmhQbzAyT1ZuamlVcHJTTHc1UEZxVHFBRkxlYXEtSHQtdU5uZkp1SzItMXVhQkp2aWE3S183QzgzOURiekJhY2tFeVRzUUFRRkJJRkNJZ2dHQUFTQndpSElCQUJHQUFTQlFpb0lCZ0FFZ1VJaVNBWUFCSUhDSVVnRUFrWUFSSUhDSVFnRUFzWUFSZ0EiESILUWlwMVZrVHVNNzAwAHgBKBRCEGNvbW1lbnRzLXNlY3Rpb24%3D", + "request": "CONTINUATION_REQUEST_TYPE_WATCH_NEXT" + } + } + } + } + ], + "slot": "RELOAD_CONTINUATION_SLOT_BODY" + } + } + ], + "frameworkUpdates": { + "entityBatchUpdate": { + "mutations": [ + { + "entityKey": "EgAgKygB", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSharedEntityPayload": { + "key": "EgAgKygB", + "theme": { + "colors": { + "brandBackgroundSolid": 4280821800, + "brandBackgroundPrimary": 4196935720, + "brandBackgroundSecondary": 4062717992, + "backgroundA": 4280361249, + "iconInactive": 4287664272, + "iconDisabled": 4284506208, + "badgeChipBackground": 452984831, + "buttonChipBackgroundHover": 872415231, + "touchResponse": 4294967295, + "brandIconActive": 4294967295, + "brandIconInactive": 4287664272, + "brandButtonBackground": 4291559424, + "brandLinkText": 4294921797, + "tenPercentLayer": 452984831, + "snackbarBackground": 4279440147, + "themedBlue": 4282296063, + "themedGreen": 4281050688, + "staticBrandRed": 4294901760, + "staticBrandWhite": 4294967295, + "staticBrandBlack": 4280821800, + "staticClearColor": 16777215, + "staticAdYellow": 4294688813, + "staticGrey": 4284506208, + "overlayTextPrimary": 4294967295, + "overlayTextSecondary": 3019898879, + "separator": 4282861383, + "thumbnailOverlayIcon": 3741319167, + "selected": 4282664004, + "highlighted": 234881023, + "borderGrey": 4293322470, + "blackDim": 2315255808, + "videoProgressBarBackground": 3019898879, + "legacyBlue": 4282549748, + "iconActiveOther": 4294967295, + "errorBackground": 4294243572, + "suggestedAction": 4280625722, + "overlayButtonPrimary": 1308622847, + "overlayButtonSecondary": 452984831, + "callToAction": 4282296063, + "overlayBackgroundBrand": 3855351808, + "overlayBackgroundMediumLight": 1291845632, + "verifiedBadgeBackground": 1090519039, + "staticClearBlack": 0, + "overlayBackgroundSolid": 4278190080, + "overlayBackgroundHeavy": 3422552064, + "adIndicator": 4278233767, + "textDisabled": 4285624689, + "textPrimaryInverse": 4279440147, + "overlayCallToAction": 4282296063, + "overlayBackgroundMedium": 2566914048, + "themedOverlayBackground": 3422552064, + "wordmarkText": 4294967295, + "brandBackgroundSolidUpdated": 4280821800, + "backgroundAUpdated": 4280361249, + "overlayBackgroundLight": 436207616, + "overlayTextDisabled": 1308622847, + "generalBackgroundC": 4279440147, + "generalBackgroundB": 4279900698, + "generalBackgroundA": 4280361249, + "textSecondary": 4289374890, + "textPrimary": 4294967295, + "errorIndicator": 4294936963, + "baseBackground": 4279176975, + "raisedBackground": 4280361249, + "menuBackground": 4280821800, + "invertedBackground": 4294046193, + "outline": 872415231, + "additiveBackground": 452984831, + "invertedAdditiveBackground": 218103808, + "outlineInverse": 436207616, + "staticMagenta": 4294911889 + }, + "fonts": {}, + "icons": {}, + "layout": { + "spacing": { + "space1": 4, + "space2": 8, + "space3": 12, + "space4": 16, + "space5": 20, + "space6": 24, + "space7": 28, + "space8": 32, + "space9": 36, + "space10": 40, + "space0": 0 + }, + "fixedGrid": { "margin": 16, "gutter": 16 }, + "icon": { "width": 24, "height": 24 }, + "button": { + "minWidthTextButton": 88, + "minWidthIconButton": 56, + "paddingX": 16, + "cornerRadius": 2, + "strokeThickness": 1 + } + }, + "themeType": "USER_INTERFACE_THEME_DARK" + }, + "strings": { + "viewAllRepliesButtonA11y": "View all replies", + "expandText": "Read more", + "discardDialogTitle": "Discard comment?", + "discardDialogAction": "Discard", + "discardDialogCancel": "Keep writing", + "shortReplyThumbnailA11y": "See Short reply", + "collapseText": "Show less", + "replyButtonText": "Reply" + }, + "toolbarShared": { + "unlikeButtonA11y": "Unlike", + "undislikeButtonA11y": "Remove dislike", + "heartButtonA11y": "Heart", + "unheartButtonA11y": "Remove heart", + "heartedTooltipA11y": "❤ by HaruXen", + "replyButtonA11y": "Reply", + "menuButtonA11y": "Action menu", + "approveButtonA11y": "Approve", + "removeButtonA11y": "Remove", + "blockButtonA11y": "Hide user from channel", + "spamButtonA11y": "Report spam or abuse", + "heartedTooltipCommand": { + "tooltipCommand": { + "hintRenderer": { + "content": { + "bubbleHintRenderer": { + "trackingParams": "CCwQgYkBIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "detailsText": { + "runs": [ + { "text": "❤ by HaruXen", "textColor": 4279440147 } + ] + }, + "isVisible": true + } + }, + "dwellTimeMs": "1500", + "suggestedPosition": { + "type": "HINT_SUGGESTED_POSITION_TYPE_ABOVE" + }, + "trackingParams": "CCsQpecFIhMIuuKt3ZihhQMVr8tCBR3NeASj" + } + } + }, + "dislikeCommentButtonA11y": "Dislike this comment", + "dislikeReplyButtonA11y": "Dislike this reply", + "cancelButtonLabel": "Cancel", + "allowVoiceControl": false + }, + "experiments": { + "enableElementsRowReverse": false, + "elementsUseAndroidLegacyTouchTarget": false, + "enableElementsReadMoreButtonLogging": false, + "translateButtonStyle": "TRANSLATE_BUTTON_STYLE_WITH_LANGUAGE", + "enablePersistentCommentComposer": false, + "enableTecToTsCommandMigration": false, + "enableElementsLoggingContract": false, + "enableCompactifyV0": false, + "enableCompactifyV0AvatarSize": false, + "enableCompactifyV0OverflowMenu": false, + "shortsCommentsOnElements": false, + "enableCompactifyV1CommentCountRemoval": true, + "enableNewUiForElementizedComposer": false, + "enableCompactifyV2CommentDividerRemoval": true, + "enableInlineMobileSuperThanksChip": false, + "compactifyV1MaxCommentLines": 4, + "enableDoubleTapLikesComment": false, + "enableElementsCoinboxRepliesPadding": false, + "enableShowPreviouslyPinnedComments": true, + "enableLikeButtonPromo": false, + "enableHandlesTooltip": false, + "enableModernizedCommunityChannelGuidelines": false, + "enableCommunityGuidelinesOncePerRun": false, + "enable18ptToolbarIcons": false, + "enableHideCommunityGuidelines": false, + "ignoreTapsBetweenToolbarButtons": false, + "enableModernizedFontsWithHeightChanges": false, + "enableModernizedFontsWithoutHeightChanges": false, + "logDoubleTapGestures": false + }, + "environment": { + "platformName": "PLATFORM_NAME_IOS", + "formFactor": "SMALL_FORM_FACTOR" + }, + "capabilities": { + "supportsIndicatorTouchExpansion": false, + "supportsIndicatorPadding": false, + "supportsTooltipCommand": false, + "supportsSubstitute": false, + "supportsUpdate": false, + "supportsLogGestureCommand": false, + "supportsClickableSpanIncrease": false + }, + "commentEnvironment": { "platformName": "PLATFORM_NAME_IOS" }, + "clientName": "WEB" + } + } + }, + { + "entityKey": "EhpVZ3lOVFQ4dXhERWpnWXF5YklGNEFhQUJBZyAoKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EhpVZ3lOVFQ4dXhERWpnWXF5YklGNEFhQUJBZyAoKAE%3D", + "properties": { + "commentId": "UgyNTT8uxDEjgYqybIF4AaABAg", + "content": { + "content": "⚠️ Important notice: if you put any symbol immediately after markup, it will not work: *here is the comma*, without space.\n\nYou should leave space before and after , to make it work.\n\nSame for _underscore_, and -hyphen-.\n\nLeave space before opening and after closing underscore and hyphen. Put all dots and commas inside markup.", + "styleRuns": [ + { + "startIndex": 135, + "length": 28, + "weightLabel": "FONT_WEIGHT_MEDIUM" + }, + { + "startIndex": 267, + "length": 10, + "weightLabel": "FONT_WEIGHT_NORMAL", + "italic": true + }, + { + "startIndex": 282, + "length": 7, + "weightLabel": "FONT_WEIGHT_NORMAL", + "strikethrough": "LINE_STYLE_SINGLE" + } + ], + "attachmentRuns": [ + { + "startIndex": 0, + "length": 1, + "element": { + "type": { + "imageType": { + "image": { + "sources": [ + { + "url": "https://www.youtube.com/s/gaming/emoji/7ff574f2/emoji_u26a0.png", + "width": 16, + "height": 16 + } + ] + }, + "playbackState": "IMAGE_PLAYBACK_STATE_STOPPED" + } + }, + "properties": { + "layoutProperties": { + "height": { "value": 16, "unit": "DIMENSION_UNIT_POINT" }, + "width": { "value": 16, "unit": "DIMENSION_UNIT_POINT" }, + "margin": { + "left": { "value": 2, "unit": "DIMENSION_UNIT_POINT" }, + "right": { "value": 2, "unit": "DIMENSION_UNIT_POINT" } + } + } + } + }, + "alignment": "ALIGNMENT_VERTICAL_CENTER" + } + ] + }, + "publishedTime": "2 years ago (edited)", + "replyLevel": 0, + "authorButtonA11y": "@kibizoid", + "toolbarStateKey": "EhpVZ3lOVFQ4dXhERWpnWXF5YklGNEFhQUJBZyAsKAE%3D", + "translateButtonEntityKey": "EhpVZ3lOVFQ4dXhERWpnWXF5YklGNEFhQUJBZyD_ASgB" + }, + "author": { + "channelId": "UCUJfyiofeHQTmxKwZ6cCwIg", + "displayName": "@kibizoid", + "avatarThumbnailUrl": "https://yt3.ggpht.com/ytc/AIdro_nY2PkIyojDqs9Bk5RY6J90-U7wePswTYl799DNJQ=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CCoQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@kibizoid", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCUJfyiofeHQTmxKwZ6cCwIg", + "canonicalBaseUrl": "/@kibizoid" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "294", + "likeCountNotliked": "293", + "replyCount": "220", + "creatorThumbnailUrl": "https://yt3.ggpht.com/YMmDD0zp5wT6l5ozqVMEMuqm5W07QFqmMHzOJ9QKGnSf9xpgEQ0rznstfXlBDxlFpLIrltQxRg=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this comment along with 293 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "293 likes", + "replyCountA11y": "220 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by HaruXen" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/ytc/AIdro_nY2PkIyojDqs9Bk5RY6J90-U7wePswTYl799DNJQ=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { "borderImageProcessor": { "circular": true } } + }, + "accessibilityText": "@kibizoid", + "avatarImageSize": "AVATAR_SIZE_40", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CCoQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@kibizoid", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCUJfyiofeHQTmxKwZ6cCwIg", + "canonicalBaseUrl": "/@kibizoid" + } + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3lOVFQ4dXhERWpnWXF5YklGNEFhQUJBZy8xMiBPKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "Eh1VZ3lOVFQ4dXhERWpnWXF5YklGNEFhQUJBZy8xMiBPKAE%3D", + "commentClickCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "inlineReadMoreButton": { "isSupported": true, "isExpanded": false }, + "commentClickOpensComposer": true, + "composerDraftEntityKey": "N/A", + "viewRepliesTooltipData": { + "tooltipCommand": { + "tooltipCommand": { + "hintRenderer": { + "content": { + "bubbleHintRenderer": { + "text": { "simpleText": "Tap the comment to view replies" }, + "trackingParams": "CCkQgYkBIhMIuuKt3ZihhQMVr8tCBR3NeASj", + "isVisible": true + } + }, + "dismissStrategy": { "type": "DISMISS_ON_TAP_ONLY" }, + "hintCap": { "impressionCap": "1" }, + "suggestedPosition": { + "type": "HINT_SUGGESTED_POSITION_TYPE_BELOW" + }, + "trackingParams": "CCgQpecFIhMIuuKt3ZihhQMVr8tCBR3NeASj" + } + } + }, + "viewRepliesTooltipIdentifier": "view_replies_tooltip_identifier" + }, + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70&lc=UgyNTT8uxDEjgYqybIF4AaABAg", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70", + "params": "ehpVZ3lOVFQ4dXhERWpnWXF5YklGNEFhQUJBZ6ICA8ABAA%3D%3D" + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3lOVFQ4dXhERWpnWXF5YklGNEFhQUJBZy8xMiBGKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "Eh1VZ3lOVFQ4dXhERWpnWXF5YklGNEFhQUJBZy8xMiBGKAE%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "replyCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Report" }] }, + "icon": { "iconType": "FLAG" }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { "ignoreNavigation": true } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { "text": "Need to report the comment?" } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgyNTT8uxDEjgYqybIF4AaABAg&contact_type=main", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgyNTT8uxDEjgYqybIF4AaABAg&contact_type=main" + } + } + }, + { "text": " without signing in." } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Sign in" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CCcQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CCcQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + }, + "trackingParams": "CCcQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "command": { + "clickTrackingParams": "CCcQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CCcQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + } + ], + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EhpVZ3lOVFQ4dXhERWpnWXF5YklGNEFhQUJBZyAsKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EhpVZ3lOVFQ4dXhERWpnWXF5YklGNEFhQUJBZyAsKAE%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_HEARTED" + } + } + }, + { + "entityKey": "EhpVZ3ljV2dOT29vbjBBNEVWOUxaNEFhQUJBZyAoKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EhpVZ3ljV2dOT29vbjBBNEVWOUxaNEFhQUJBZyAoKAE%3D", + "properties": { + "commentId": "UgycWgNOoon0A4EV9LZ4AaABAg", + "content": { + "content": "Me: tests out fonts\nFriend: Why are you doing this?\nMe: my goals are beyond your understanding", + "styleRuns": [ + { + "startIndex": 0, + "length": 19, + "weightLabel": "FONT_WEIGHT_MEDIUM" + }, + { + "startIndex": 28, + "length": 23, + "weightLabel": "FONT_WEIGHT_MEDIUM" + }, + { + "startIndex": 56, + "length": 38, + "weightLabel": "FONT_WEIGHT_NORMAL", + "italic": true + } + ] + }, + "publishedTime": "2 years ago", + "replyLevel": 0, + "authorButtonA11y": "@userfjdrg", + "toolbarStateKey": "EhpVZ3ljV2dOT29vbjBBNEVWOUxaNEFhQUJBZyAsKAE%3D", + "translateButtonEntityKey": "EhpVZ3ljV2dOT29vbjBBNEVWOUxaNEFhQUJBZyD_ASgB" + }, + "author": { + "channelId": "UCr0PeEY_am9P-GobbfvKECw", + "displayName": "@userfjdrg", + "avatarThumbnailUrl": "https://yt3.ggpht.com/Zr2PmQsrD4obL2n5HS18X3jKXGJ-HFjIJS_OcZv4I5VAk5HuLRCpzFprY5Hh7n23-FCURVJi=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CCYQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@userfjdrg", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCr0PeEY_am9P-GobbfvKECw", + "canonicalBaseUrl": "/@userfjdrg" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "81", + "likeCountNotliked": "80", + "replyCount": "34", + "creatorThumbnailUrl": "https://yt3.ggpht.com/YMmDD0zp5wT6l5ozqVMEMuqm5W07QFqmMHzOJ9QKGnSf9xpgEQ0rznstfXlBDxlFpLIrltQxRg=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this comment along with 80 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "80 likes", + "replyCountA11y": "34 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by HaruXen" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/Zr2PmQsrD4obL2n5HS18X3jKXGJ-HFjIJS_OcZv4I5VAk5HuLRCpzFprY5Hh7n23-FCURVJi=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { "borderImageProcessor": { "circular": true } } + }, + "accessibilityText": "@userfjdrg", + "avatarImageSize": "AVATAR_SIZE_40", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CCYQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@userfjdrg", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCr0PeEY_am9P-GobbfvKECw", + "canonicalBaseUrl": "/@userfjdrg" + } + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3ljV2dOT29vbjBBNEVWOUxaNEFhQUJBZy8xMiBPKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "Eh1VZ3ljV2dOT29vbjBBNEVWOUxaNEFhQUJBZy8xMiBPKAE%3D", + "commentClickCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "inlineReadMoreButton": { "isSupported": true, "isExpanded": false }, + "commentClickOpensComposer": true, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70&lc=UgycWgNOoon0A4EV9LZ4AaABAg", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70", + "params": "ehpVZ3ljV2dOT29vbjBBNEVWOUxaNEFhQUJBZ6ICA8ABAA%3D%3D" + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3ljV2dOT29vbjBBNEVWOUxaNEFhQUJBZy8xMiBGKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "Eh1VZ3ljV2dOT29vbjBBNEVWOUxaNEFhQUJBZy8xMiBGKAE%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "replyCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Report" }] }, + "icon": { "iconType": "FLAG" }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { "ignoreNavigation": true } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { "text": "Need to report the comment?" } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgycWgNOoon0A4EV9LZ4AaABAg&contact_type=main", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgycWgNOoon0A4EV9LZ4AaABAg&contact_type=main" + } + } + }, + { "text": " without signing in." } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Sign in" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CCUQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CCUQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + }, + "trackingParams": "CCUQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "command": { + "clickTrackingParams": "CCUQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CCUQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + } + ], + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EhpVZ3ljV2dOT29vbjBBNEVWOUxaNEFhQUJBZyAsKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EhpVZ3ljV2dOT29vbjBBNEVWOUxaNEFhQUJBZyAsKAE%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_HEARTED" + } + } + }, + { + "entityKey": "EhpVZ3k1aXE0TTFjM1dTM2xHbWloNEFhQUJBZyAoKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EhpVZ3k1aXE0TTFjM1dTM2xHbWloNEFhQUJBZyAoKAE%3D", + "properties": { + "commentId": "Ugy5iq4M1c3WS3lGmih4AaABAg", + "content": { + "content": "To-do list\n• be dumb\n• get kicked out when i can legally live alone\n• spend money on pointless things", + "styleRuns": [ + { + "startIndex": 13, + "length": 7, + "weightLabel": "FONT_WEIGHT_NORMAL", + "strikethrough": "LINE_STYLE_SINGLE" + }, + { + "startIndex": 23, + "length": 44, + "weightLabel": "FONT_WEIGHT_NORMAL", + "strikethrough": "LINE_STYLE_SINGLE" + }, + { + "startIndex": 70, + "length": 31, + "weightLabel": "FONT_WEIGHT_NORMAL", + "strikethrough": "LINE_STYLE_SINGLE" + } + ] + }, + "publishedTime": "2 years ago (edited)", + "replyLevel": 0, + "authorButtonA11y": "@T0r0xFan", + "toolbarStateKey": "EhpVZ3k1aXE0TTFjM1dTM2xHbWloNEFhQUJBZyAsKAE%3D", + "translateButtonEntityKey": "EhpVZ3k1aXE0TTFjM1dTM2xHbWloNEFhQUJBZyD_ASgB" + }, + "author": { + "channelId": "UCDB5XvpUB8cEvjbWewlp28w", + "displayName": "@T0r0xFan", + "avatarThumbnailUrl": "https://yt3.ggpht.com/PPL5vj6-pXFpaLa41yet34OHGcEYt06WPQLmruaiFJSM0eLmn9ZQW0QgTtdafDBO-kNy2oukVA=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CCQQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@T0r0xFan", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCDB5XvpUB8cEvjbWewlp28w", + "canonicalBaseUrl": "/@T0r0xFan" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "49", + "likeCountNotliked": "48", + "replyCount": "22", + "creatorThumbnailUrl": "https://yt3.ggpht.com/YMmDD0zp5wT6l5ozqVMEMuqm5W07QFqmMHzOJ9QKGnSf9xpgEQ0rznstfXlBDxlFpLIrltQxRg=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this comment along with 48 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "48 likes", + "replyCountA11y": "22 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by HaruXen" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/PPL5vj6-pXFpaLa41yet34OHGcEYt06WPQLmruaiFJSM0eLmn9ZQW0QgTtdafDBO-kNy2oukVA=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { "borderImageProcessor": { "circular": true } } + }, + "accessibilityText": "@T0r0xFan", + "avatarImageSize": "AVATAR_SIZE_40", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CCQQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@T0r0xFan", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCDB5XvpUB8cEvjbWewlp28w", + "canonicalBaseUrl": "/@T0r0xFan" + } + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3k1aXE0TTFjM1dTM2xHbWloNEFhQUJBZy8xMiBPKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "Eh1VZ3k1aXE0TTFjM1dTM2xHbWloNEFhQUJBZy8xMiBPKAE%3D", + "commentClickCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "inlineReadMoreButton": { "isSupported": true, "isExpanded": false }, + "commentClickOpensComposer": true, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70&lc=Ugy5iq4M1c3WS3lGmih4AaABAg", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70", + "params": "ehpVZ3k1aXE0TTFjM1dTM2xHbWloNEFhQUJBZ6ICA8ABAA%3D%3D" + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3k1aXE0TTFjM1dTM2xHbWloNEFhQUJBZy8xMiBGKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "Eh1VZ3k1aXE0TTFjM1dTM2xHbWloNEFhQUJBZy8xMiBGKAE%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "replyCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Report" }] }, + "icon": { "iconType": "FLAG" }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { "ignoreNavigation": true } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { "text": "Need to report the comment?" } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgy5iq4M1c3WS3lGmih4AaABAg&contact_type=main", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgy5iq4M1c3WS3lGmih4AaABAg&contact_type=main" + } + } + }, + { "text": " without signing in." } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Sign in" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CCMQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CCMQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + }, + "trackingParams": "CCMQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "command": { + "clickTrackingParams": "CCMQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CCMQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + } + ], + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EhpVZ3k1aXE0TTFjM1dTM2xHbWloNEFhQUJBZyAsKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EhpVZ3k1aXE0TTFjM1dTM2xHbWloNEFhQUJBZyAsKAE%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_HEARTED" + } + } + }, + { + "entityKey": "EhpVZ3hxRElWVmNvaWdqdHg0RHRsNEFhQUJBZyAoKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EhpVZ3hxRElWVmNvaWdqdHg0RHRsNEFhQUJBZyAoKAE%3D", + "properties": { + "commentId": "UgxqDIVVcoigjtx4Dtl4AaABAg", + "content": { + "content": "omg thank you! Ive been looking for this tutorial for a year forever", + "styleRuns": [ + { + "startIndex": 4, + "length": 5, + "weightLabel": "FONT_WEIGHT_NORMAL", + "italic": true + }, + { + "startIndex": 56, + "length": 4, + "weightLabel": "FONT_WEIGHT_NORMAL", + "strikethrough": "LINE_STYLE_SINGLE" + }, + { + "startIndex": 61, + "length": 7, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + }, + "publishedTime": "1 month ago", + "replyLevel": 0, + "authorButtonA11y": "@LunasVibe", + "toolbarStateKey": "EhpVZ3hxRElWVmNvaWdqdHg0RHRsNEFhQUJBZyAsKAE%3D", + "translateButtonEntityKey": "EhpVZ3hxRElWVmNvaWdqdHg0RHRsNEFhQUJBZyD_ASgB" + }, + "author": { + "channelId": "UCxa4xER0-cFbcIYp0ZIeVaw", + "displayName": "@LunasVibe", + "avatarThumbnailUrl": "https://yt3.ggpht.com/P5Io1kQb7GRwe4pgNsaYFEm30hDl_T7Tp5rZo7aYWFkqbV6Yp_lCYVuaaK7O3SEsnIX_5iC1Hw=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CCIQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@LunasVibe", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCxa4xER0-cFbcIYp0ZIeVaw", + "canonicalBaseUrl": "/@LunasVibe" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "1", + "likeCountNotliked": " ", + "replyCount": "", + "creatorThumbnailUrl": "https://yt3.ggpht.com/YMmDD0zp5wT6l5ozqVMEMuqm5W07QFqmMHzOJ9QKGnSf9xpgEQ0rznstfXlBDxlFpLIrltQxRg=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this comment along with 0 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "0 likes", + "replyCountA11y": "0 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by HaruXen" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/P5Io1kQb7GRwe4pgNsaYFEm30hDl_T7Tp5rZo7aYWFkqbV6Yp_lCYVuaaK7O3SEsnIX_5iC1Hw=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { "borderImageProcessor": { "circular": true } } + }, + "accessibilityText": "@LunasVibe", + "avatarImageSize": "AVATAR_SIZE_40", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CCIQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@LunasVibe", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCxa4xER0-cFbcIYp0ZIeVaw", + "canonicalBaseUrl": "/@LunasVibe" + } + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3hxRElWVmNvaWdqdHg0RHRsNEFhQUJBZy8xMiBPKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "Eh1VZ3hxRElWVmNvaWdqdHg0RHRsNEFhQUJBZy8xMiBPKAE%3D", + "commentClickCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "inlineReadMoreButton": { "isSupported": true, "isExpanded": false }, + "commentClickOpensComposer": true, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70&lc=UgxqDIVVcoigjtx4Dtl4AaABAg", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70", + "params": "ehpVZ3hxRElWVmNvaWdqdHg0RHRsNEFhQUJBZ6ICA8ABAA%3D%3D" + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3hxRElWVmNvaWdqdHg0RHRsNEFhQUJBZy8xMiBGKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "Eh1VZ3hxRElWVmNvaWdqdHg0RHRsNEFhQUJBZy8xMiBGKAE%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "replyCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Report" }] }, + "icon": { "iconType": "FLAG" }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { "ignoreNavigation": true } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { "text": "Need to report the comment?" } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgxqDIVVcoigjtx4Dtl4AaABAg&contact_type=main", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgxqDIVVcoigjtx4Dtl4AaABAg&contact_type=main" + } + } + }, + { "text": " without signing in." } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Sign in" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CCEQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CCEQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + }, + "trackingParams": "CCEQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "command": { + "clickTrackingParams": "CCEQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CCEQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + } + ], + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EhpVZ3hxRElWVmNvaWdqdHg0RHRsNEFhQUJBZyAsKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EhpVZ3hxRElWVmNvaWdqdHg0RHRsNEFhQUJBZyAsKAE%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + }, + { + "entityKey": "EhpVZ3hEUWZWUWRZYVdSLVZVTS05NEFhQUJBZyAoKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EhpVZ3hEUWZWUWRZYVdSLVZVTS05NEFhQUJBZyAoKAE%3D", + "properties": { + "commentId": "UgxDQfVQdYaWR-VUM-94AaABAg", + "content": { + "content": "tysm\ni finally learned it\nother channel never go straight to the point", + "styleRuns": [ + { + "startIndex": 0, + "length": 4, + "weightLabel": "FONT_WEIGHT_MEDIUM" + }, + { + "startIndex": 5, + "length": 20, + "weightLabel": "FONT_WEIGHT_NORMAL", + "italic": true + }, + { + "startIndex": 26, + "length": 44, + "weightLabel": "FONT_WEIGHT_NORMAL", + "strikethrough": "LINE_STYLE_SINGLE" + } + ] + }, + "publishedTime": "1 month ago (edited)", + "replyLevel": 0, + "authorButtonA11y": "@Bp_bts_skz_for_life", + "toolbarStateKey": "EhpVZ3hEUWZWUWRZYVdSLVZVTS05NEFhQUJBZyAsKAE%3D", + "translateButtonEntityKey": "EhpVZ3hEUWZWUWRZYVdSLVZVTS05NEFhQUJBZyD_ASgB" + }, + "author": { + "channelId": "UC8cojSRuyZT74Bs_b5AecTA", + "displayName": "@Bp_bts_skz_for_life", + "avatarThumbnailUrl": "https://yt3.ggpht.com/0zFBRYv8wo2JqzkyMk29xgC8zD1nKYNSSoD3Zo9XP8t9rHrbTYEEt0gdu0O3XS7Scpza3JJKog=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CCAQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Bp_bts_skz_for_life", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC8cojSRuyZT74Bs_b5AecTA", + "canonicalBaseUrl": "/@Bp_bts_skz_for_life" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "2", + "likeCountNotliked": "1", + "replyCount": "1", + "creatorThumbnailUrl": "https://yt3.ggpht.com/YMmDD0zp5wT6l5ozqVMEMuqm5W07QFqmMHzOJ9QKGnSf9xpgEQ0rznstfXlBDxlFpLIrltQxRg=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this comment along with 1 other person", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "1 like", + "replyCountA11y": "1 reply", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by HaruXen" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/0zFBRYv8wo2JqzkyMk29xgC8zD1nKYNSSoD3Zo9XP8t9rHrbTYEEt0gdu0O3XS7Scpza3JJKog=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { "borderImageProcessor": { "circular": true } } + }, + "accessibilityText": "@Bp_bts_skz_for_life", + "avatarImageSize": "AVATAR_SIZE_40", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CCAQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Bp_bts_skz_for_life", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC8cojSRuyZT74Bs_b5AecTA", + "canonicalBaseUrl": "/@Bp_bts_skz_for_life" + } + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3hEUWZWUWRZYVdSLVZVTS05NEFhQUJBZy8xMiBPKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "Eh1VZ3hEUWZWUWRZYVdSLVZVTS05NEFhQUJBZy8xMiBPKAE%3D", + "commentClickCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "inlineReadMoreButton": { "isSupported": true, "isExpanded": false }, + "commentClickOpensComposer": true, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70&lc=UgxDQfVQdYaWR-VUM-94AaABAg", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70", + "params": "ehpVZ3hEUWZWUWRZYVdSLVZVTS05NEFhQUJBZ6ICA8ABAA%3D%3D" + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3hEUWZWUWRZYVdSLVZVTS05NEFhQUJBZy8xMiBGKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "Eh1VZ3hEUWZWUWRZYVdSLVZVTS05NEFhQUJBZy8xMiBGKAE%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "replyCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Report" }] }, + "icon": { "iconType": "FLAG" }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { "ignoreNavigation": true } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { "text": "Need to report the comment?" } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgxDQfVQdYaWR-VUM-94AaABAg&contact_type=main", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgxDQfVQdYaWR-VUM-94AaABAg&contact_type=main" + } + } + }, + { "text": " without signing in." } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Sign in" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CB8Q8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CB8Q8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + }, + "trackingParams": "CB8Q8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "command": { + "clickTrackingParams": "CB8Q8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CB8Q8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + } + ], + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EhpVZ3hEUWZWUWRZYVdSLVZVTS05NEFhQUJBZyAsKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EhpVZ3hEUWZWUWRZYVdSLVZVTS05NEFhQUJBZyAsKAE%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + }, + { + "entityKey": "EhpVZ3hGdnJtd2VjLWptZlF5R1JSNEFhQUJBZyAoKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EhpVZ3hGdnJtd2VjLWptZlF5R1JSNEFhQUJBZyAoKAE%3D", + "properties": { + "commentId": "UgxFvrmwec-jmfQyGRR4AaABAg", + "content": { + "content": "I like how this was straight to the point. Unlike other channels lol Thank you!", + "styleRuns": [ + { + "startIndex": 0, + "length": 42, + "weightLabel": "FONT_WEIGHT_NORMAL", + "italic": true + }, + { + "startIndex": 43, + "length": 25, + "weightLabel": "FONT_WEIGHT_NORMAL", + "strikethrough": "LINE_STYLE_SINGLE" + }, + { + "startIndex": 69, + "length": 10, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + }, + "publishedTime": "2 years ago", + "replyLevel": 0, + "authorButtonA11y": "@ishouldbesleepingalready", + "toolbarStateKey": "EhpVZ3hGdnJtd2VjLWptZlF5R1JSNEFhQUJBZyAsKAE%3D", + "translateButtonEntityKey": "EhpVZ3hGdnJtd2VjLWptZlF5R1JSNEFhQUJBZyD_ASgB" + }, + "author": { + "channelId": "UCCyIVS_s1-jA48pPft8AifA", + "displayName": "@ishouldbesleepingalready", + "avatarThumbnailUrl": "https://yt3.ggpht.com/N90y_XdoDP6Rd1v6Z5OpDH8jMtvqpU1qnF6DJoIL6qcLiWfZK7ok8u_IxqSxJazaQH6oqhEbqA=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CB4QtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@ishouldbesleepingalready", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCCyIVS_s1-jA48pPft8AifA", + "canonicalBaseUrl": "/@ishouldbesleepingalready" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "242", + "likeCountNotliked": "241", + "replyCount": "65", + "creatorThumbnailUrl": "https://yt3.ggpht.com/YMmDD0zp5wT6l5ozqVMEMuqm5W07QFqmMHzOJ9QKGnSf9xpgEQ0rznstfXlBDxlFpLIrltQxRg=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this comment along with 241 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "241 likes", + "replyCountA11y": "65 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by HaruXen" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/N90y_XdoDP6Rd1v6Z5OpDH8jMtvqpU1qnF6DJoIL6qcLiWfZK7ok8u_IxqSxJazaQH6oqhEbqA=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { "borderImageProcessor": { "circular": true } } + }, + "accessibilityText": "@ishouldbesleepingalready", + "avatarImageSize": "AVATAR_SIZE_40", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CB4QtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@ishouldbesleepingalready", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCCyIVS_s1-jA48pPft8AifA", + "canonicalBaseUrl": "/@ishouldbesleepingalready" + } + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3hGdnJtd2VjLWptZlF5R1JSNEFhQUJBZy8xMiBPKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "Eh1VZ3hGdnJtd2VjLWptZlF5R1JSNEFhQUJBZy8xMiBPKAE%3D", + "commentClickCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "inlineReadMoreButton": { "isSupported": true, "isExpanded": false }, + "commentClickOpensComposer": true, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70&lc=UgxFvrmwec-jmfQyGRR4AaABAg", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70", + "params": "ehpVZ3hGdnJtd2VjLWptZlF5R1JSNEFhQUJBZ6ICA8ABAA%3D%3D" + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3hGdnJtd2VjLWptZlF5R1JSNEFhQUJBZy8xMiBGKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "Eh1VZ3hGdnJtd2VjLWptZlF5R1JSNEFhQUJBZy8xMiBGKAE%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "replyCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Report" }] }, + "icon": { "iconType": "FLAG" }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { "ignoreNavigation": true } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { "text": "Need to report the comment?" } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgxFvrmwec-jmfQyGRR4AaABAg&contact_type=main", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgxFvrmwec-jmfQyGRR4AaABAg&contact_type=main" + } + } + }, + { "text": " without signing in." } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Sign in" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CB0Q8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CB0Q8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + }, + "trackingParams": "CB0Q8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "command": { + "clickTrackingParams": "CB0Q8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CB0Q8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + } + ], + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EhpVZ3hGdnJtd2VjLWptZlF5R1JSNEFhQUJBZyAsKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EhpVZ3hGdnJtd2VjLWptZlF5R1JSNEFhQUJBZyAsKAE%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + }, + { + "entityKey": "EhpVZ3ktM09ZRWN3eGt2eXJyQ3FONEFhQUJBZyAoKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EhpVZ3ktM09ZRWN3eGt2eXJyQ3FONEFhQUJBZyAoKAE%3D", + "properties": { + "commentId": "Ugy-3OYEcwxkvyrrCqN4AaABAg", + "content": { + "content": "To the person who is reading this: You're intelligent and smart, stay safe", + "styleRuns": [ + { + "startIndex": 35, + "length": 39, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + }, + "publishedTime": "3 years ago (edited)", + "replyLevel": 0, + "authorButtonA11y": "@blocking948", + "toolbarStateKey": "EhpVZ3ktM09ZRWN3eGt2eXJyQ3FONEFhQUJBZyAsKAE%3D", + "translateButtonEntityKey": "EhpVZ3ktM09ZRWN3eGt2eXJyQ3FONEFhQUJBZyD_ASgB" + }, + "author": { + "channelId": "UCQklgcA8quxZm5pgNAsVJAQ", + "displayName": "@blocking948", + "avatarThumbnailUrl": "https://yt3.ggpht.com/ytc/AIdro_nAg9bEjW4otWlryJwqAgiDRLzy8ZX-ROqkDY1ksQ=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CBwQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@blocking948", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCQklgcA8quxZm5pgNAsVJAQ", + "canonicalBaseUrl": "/@blocking948" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "712", + "likeCountNotliked": "711", + "replyCount": "250", + "creatorThumbnailUrl": "https://yt3.ggpht.com/YMmDD0zp5wT6l5ozqVMEMuqm5W07QFqmMHzOJ9QKGnSf9xpgEQ0rznstfXlBDxlFpLIrltQxRg=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this comment along with 711 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "711 likes", + "replyCountA11y": "250 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by HaruXen" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/ytc/AIdro_nAg9bEjW4otWlryJwqAgiDRLzy8ZX-ROqkDY1ksQ=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { "borderImageProcessor": { "circular": true } } + }, + "accessibilityText": "@blocking948", + "avatarImageSize": "AVATAR_SIZE_40", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CBwQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@blocking948", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCQklgcA8quxZm5pgNAsVJAQ", + "canonicalBaseUrl": "/@blocking948" + } + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3ktM09ZRWN3eGt2eXJyQ3FONEFhQUJBZy8xMiBPKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "Eh1VZ3ktM09ZRWN3eGt2eXJyQ3FONEFhQUJBZy8xMiBPKAE%3D", + "commentClickCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "inlineReadMoreButton": { "isSupported": true, "isExpanded": false }, + "commentClickOpensComposer": true, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70&lc=Ugy-3OYEcwxkvyrrCqN4AaABAg", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70", + "params": "ehpVZ3ktM09ZRWN3eGt2eXJyQ3FONEFhQUJBZ6ICA8ABAA%3D%3D" + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3ktM09ZRWN3eGt2eXJyQ3FONEFhQUJBZy8xMiBGKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "Eh1VZ3ktM09ZRWN3eGt2eXJyQ3FONEFhQUJBZy8xMiBGKAE%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "replyCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Report" }] }, + "icon": { "iconType": "FLAG" }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { "ignoreNavigation": true } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { "text": "Need to report the comment?" } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgy-3OYEcwxkvyrrCqN4AaABAg&contact_type=main", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgy-3OYEcwxkvyrrCqN4AaABAg&contact_type=main" + } + } + }, + { "text": " without signing in." } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Sign in" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CBsQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CBsQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + }, + "trackingParams": "CBsQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "command": { + "clickTrackingParams": "CBsQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CBsQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + } + ], + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EhpVZ3ktM09ZRWN3eGt2eXJyQ3FONEFhQUJBZyAsKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EhpVZ3ktM09ZRWN3eGt2eXJyQ3FONEFhQUJBZyAsKAE%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_HEARTED" + } + } + }, + { + "entityKey": "EhpVZ3lsdzNzc194djlzdldiUnVkNEFhQUJBZyAoKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EhpVZ3lsdzNzc194djlzdldiUnVkNEFhQUJBZyAoKAE%3D", + "properties": { + "commentId": "Ugylw3ss_xv9svWbRud4AaABAg", + "content": { + "content": "‘ life could be a dream, life could be a dream ‘", + "styleRuns": [ + { + "startIndex": 2, + "length": 44, + "weightLabel": "FONT_WEIGHT_MEDIUM", + "italic": true + } + ] + }, + "publishedTime": "13 days ago", + "replyLevel": 0, + "authorButtonA11y": "@malarchee0899", + "toolbarStateKey": "EhpVZ3lsdzNzc194djlzdldiUnVkNEFhQUJBZyAsKAE%3D", + "translateButtonEntityKey": "EhpVZ3lsdzNzc194djlzdldiUnVkNEFhQUJBZyD_ASgB" + }, + "author": { + "channelId": "UCSyjdP7Duhns4Ybncy6ObZA", + "displayName": "@malarchee0899", + "avatarThumbnailUrl": "https://yt3.ggpht.com/dSwRzOfoKrN4yc58uhFlIyqBXmbi6B14-On-wEEM_S6Nr6aDHTkG-xVkI1-u-uBwqKqodEgrMro=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CBoQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@malarchee0899", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCSyjdP7Duhns4Ybncy6ObZA", + "canonicalBaseUrl": "/@malarchee0899" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "3", + "likeCountNotliked": "2", + "replyCount": "1", + "creatorThumbnailUrl": "https://yt3.ggpht.com/YMmDD0zp5wT6l5ozqVMEMuqm5W07QFqmMHzOJ9QKGnSf9xpgEQ0rznstfXlBDxlFpLIrltQxRg=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this comment along with 2 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "2 likes", + "replyCountA11y": "1 reply", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by HaruXen" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/dSwRzOfoKrN4yc58uhFlIyqBXmbi6B14-On-wEEM_S6Nr6aDHTkG-xVkI1-u-uBwqKqodEgrMro=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { "borderImageProcessor": { "circular": true } } + }, + "accessibilityText": "@malarchee0899", + "avatarImageSize": "AVATAR_SIZE_40", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CBoQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@malarchee0899", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCSyjdP7Duhns4Ybncy6ObZA", + "canonicalBaseUrl": "/@malarchee0899" + } + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3lsdzNzc194djlzdldiUnVkNEFhQUJBZy8xMiBPKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "Eh1VZ3lsdzNzc194djlzdldiUnVkNEFhQUJBZy8xMiBPKAE%3D", + "commentClickCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "inlineReadMoreButton": { "isSupported": true, "isExpanded": false }, + "commentClickOpensComposer": true, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70&lc=Ugylw3ss_xv9svWbRud4AaABAg", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70", + "params": "ehpVZ3lsdzNzc194djlzdldiUnVkNEFhQUJBZ6ICA8ABAA%3D%3D" + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3lsdzNzc194djlzdldiUnVkNEFhQUJBZy8xMiBGKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "Eh1VZ3lsdzNzc194djlzdldiUnVkNEFhQUJBZy8xMiBGKAE%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "replyCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Report" }] }, + "icon": { "iconType": "FLAG" }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { "ignoreNavigation": true } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { "text": "Need to report the comment?" } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgylw3ss_xv9svWbRud4AaABAg&contact_type=main", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgylw3ss_xv9svWbRud4AaABAg&contact_type=main" + } + } + }, + { "text": " without signing in." } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Sign in" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CBkQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CBkQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + }, + "trackingParams": "CBkQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "command": { + "clickTrackingParams": "CBkQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CBkQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + } + ], + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EhpVZ3lsdzNzc194djlzdldiUnVkNEFhQUJBZyAsKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EhpVZ3lsdzNzc194djlzdldiUnVkNEFhQUJBZyAsKAE%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + }, + { + "entityKey": "EhpVZ3lkWG9iUkIwRjVkVzFLVnNGNEFhQUJBZyAoKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EhpVZ3lkWG9iUkIwRjVkVzFLVnNGNEFhQUJBZyAoKAE%3D", + "properties": { + "commentId": "UgydXobRB0F5dW1KVsF4AaABAg", + "content": { + "content": "Woah! thank you for showing me this I really needed it!", + "styleRuns": [ + { + "startIndex": 0, + "length": 5, + "weightLabel": "FONT_WEIGHT_MEDIUM" + }, + { + "startIndex": 6, + "length": 29, + "weightLabel": "FONT_WEIGHT_NORMAL", + "strikethrough": "LINE_STYLE_SINGLE" + }, + { + "startIndex": 36, + "length": 19, + "weightLabel": "FONT_WEIGHT_NORMAL", + "italic": true + } + ] + }, + "publishedTime": "1 month ago", + "replyLevel": 0, + "authorButtonA11y": "@fatimagarcia3162", + "toolbarStateKey": "EhpVZ3lkWG9iUkIwRjVkVzFLVnNGNEFhQUJBZyAsKAE%3D", + "translateButtonEntityKey": "EhpVZ3lkWG9iUkIwRjVkVzFLVnNGNEFhQUJBZyD_ASgB" + }, + "author": { + "channelId": "UC9f9uJgwsCBBHA4CioIzdkA", + "displayName": "@fatimagarcia3162", + "avatarThumbnailUrl": "https://yt3.ggpht.com/cKmBVKqq9mkW4F355y3UtUw4POwTWKi-0LUYLDx85vffRd7pU-LECXvudUrHH_9qobo6A1kM=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CBgQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@fatimagarcia3162", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC9f9uJgwsCBBHA4CioIzdkA", + "canonicalBaseUrl": "/@fatimagarcia3162" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "1", + "likeCountNotliked": " ", + "replyCount": "", + "creatorThumbnailUrl": "https://yt3.ggpht.com/YMmDD0zp5wT6l5ozqVMEMuqm5W07QFqmMHzOJ9QKGnSf9xpgEQ0rznstfXlBDxlFpLIrltQxRg=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this comment along with 0 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "0 likes", + "replyCountA11y": "0 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by HaruXen" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/cKmBVKqq9mkW4F355y3UtUw4POwTWKi-0LUYLDx85vffRd7pU-LECXvudUrHH_9qobo6A1kM=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { "borderImageProcessor": { "circular": true } } + }, + "accessibilityText": "@fatimagarcia3162", + "avatarImageSize": "AVATAR_SIZE_40", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CBgQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@fatimagarcia3162", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC9f9uJgwsCBBHA4CioIzdkA", + "canonicalBaseUrl": "/@fatimagarcia3162" + } + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3lkWG9iUkIwRjVkVzFLVnNGNEFhQUJBZy8xMiBPKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "Eh1VZ3lkWG9iUkIwRjVkVzFLVnNGNEFhQUJBZy8xMiBPKAE%3D", + "commentClickCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "inlineReadMoreButton": { "isSupported": true, "isExpanded": false }, + "commentClickOpensComposer": true, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70&lc=UgydXobRB0F5dW1KVsF4AaABAg", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70", + "params": "ehpVZ3lkWG9iUkIwRjVkVzFLVnNGNEFhQUJBZ6ICA8ABAA%3D%3D" + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3lkWG9iUkIwRjVkVzFLVnNGNEFhQUJBZy8xMiBGKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "Eh1VZ3lkWG9iUkIwRjVkVzFLVnNGNEFhQUJBZy8xMiBGKAE%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "replyCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Report" }] }, + "icon": { "iconType": "FLAG" }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { "ignoreNavigation": true } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { "text": "Need to report the comment?" } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgydXobRB0F5dW1KVsF4AaABAg&contact_type=main", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgydXobRB0F5dW1KVsF4AaABAg&contact_type=main" + } + } + }, + { "text": " without signing in." } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Sign in" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CBcQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CBcQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + }, + "trackingParams": "CBcQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "command": { + "clickTrackingParams": "CBcQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CBcQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + } + ], + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EhpVZ3lkWG9iUkIwRjVkVzFLVnNGNEFhQUJBZyAsKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EhpVZ3lkWG9iUkIwRjVkVzFLVnNGNEFhQUJBZyAsKAE%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + }, + { + "entityKey": "EhpVZ3dtRm42ZWpLbHRjWl9CWnZsNEFhQUJBZyAoKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EhpVZ3dtRm42ZWpLbHRjWl9CWnZsNEFhQUJBZyAoKAE%3D", + "properties": { + "commentId": "UgwmFn6ejKltcZ_BZvl4AaABAg", + "content": { + "content": "The fitness gram pacer test is a multistage aerobic capacity test that progressively gets more difficult as it continues.", + "styleRuns": [ + { + "startIndex": 0, + "length": 121, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + }, + "publishedTime": "2 years ago", + "replyLevel": 0, + "authorButtonA11y": "@No-du9is", + "toolbarStateKey": "EhpVZ3dtRm42ZWpLbHRjWl9CWnZsNEFhQUJBZyAsKAE%3D", + "translateButtonEntityKey": "EhpVZ3dtRm42ZWpLbHRjWl9CWnZsNEFhQUJBZyD_ASgB" + }, + "author": { + "channelId": "UCIymYi-_AJ10pYrh8sqTBTg", + "displayName": "@No-du9is", + "avatarThumbnailUrl": "https://yt3.ggpht.com/ytc/AIdro_lPWhGGvIIA08s4u_-Lwyx88rGSRksOFeYHipE=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CBYQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@No-du9is", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCIymYi-_AJ10pYrh8sqTBTg", + "canonicalBaseUrl": "/@No-du9is" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "23", + "likeCountNotliked": "22", + "replyCount": "12", + "creatorThumbnailUrl": "https://yt3.ggpht.com/YMmDD0zp5wT6l5ozqVMEMuqm5W07QFqmMHzOJ9QKGnSf9xpgEQ0rznstfXlBDxlFpLIrltQxRg=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this comment along with 22 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "22 likes", + "replyCountA11y": "12 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by HaruXen" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/ytc/AIdro_lPWhGGvIIA08s4u_-Lwyx88rGSRksOFeYHipE=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { "borderImageProcessor": { "circular": true } } + }, + "accessibilityText": "@No-du9is", + "avatarImageSize": "AVATAR_SIZE_40", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CBYQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@No-du9is", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCIymYi-_AJ10pYrh8sqTBTg", + "canonicalBaseUrl": "/@No-du9is" + } + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3dtRm42ZWpLbHRjWl9CWnZsNEFhQUJBZy8xMiBPKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "Eh1VZ3dtRm42ZWpLbHRjWl9CWnZsNEFhQUJBZy8xMiBPKAE%3D", + "commentClickCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "inlineReadMoreButton": { "isSupported": true, "isExpanded": false }, + "commentClickOpensComposer": true, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70&lc=UgwmFn6ejKltcZ_BZvl4AaABAg", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70", + "params": "ehpVZ3dtRm42ZWpLbHRjWl9CWnZsNEFhQUJBZ6ICA8ABAA%3D%3D" + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3dtRm42ZWpLbHRjWl9CWnZsNEFhQUJBZy8xMiBGKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "Eh1VZ3dtRm42ZWpLbHRjWl9CWnZsNEFhQUJBZy8xMiBGKAE%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "replyCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Report" }] }, + "icon": { "iconType": "FLAG" }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { "ignoreNavigation": true } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { "text": "Need to report the comment?" } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgwmFn6ejKltcZ_BZvl4AaABAg&contact_type=main", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgwmFn6ejKltcZ_BZvl4AaABAg&contact_type=main" + } + } + }, + { "text": " without signing in." } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Sign in" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CBUQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CBUQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + }, + "trackingParams": "CBUQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "command": { + "clickTrackingParams": "CBUQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CBUQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + } + ], + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EhpVZ3dtRm42ZWpLbHRjWl9CWnZsNEFhQUJBZyAsKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EhpVZ3dtRm42ZWpLbHRjWl9CWnZsNEFhQUJBZyAsKAE%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_HEARTED" + } + } + }, + { + "entityKey": "EhpVZ3h0WEg2YldSV204YWhhdmZSNEFhQUJBZyAoKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EhpVZ3h0WEg2YldSV204YWhhdmZSNEFhQUJBZyAoKAE%3D", + "properties": { + "commentId": "UgxtXH6bWRWm8ahavfR4AaABAg", + "content": { + "content": "YouTube got a new update(or probably it's a bug) and for that it's not showing bold/strikethrough/italic on the app but it's showing on other places." + }, + "publishedTime": "3 years ago", + "replyLevel": 0, + "authorButtonA11y": "@HaruXen", + "toolbarStateKey": "EhpVZ3h0WEg2YldSV204YWhhdmZSNEFhQUJBZyAsKAE%3D", + "translateButtonEntityKey": "EhpVZ3h0WEg2YldSV204YWhhdmZSNEFhQUJBZyD_ASgB" + }, + "author": { + "channelId": "UCyaflzzOH0GC683DlQ-fzwg", + "displayName": "@HaruXen", + "avatarThumbnailUrl": "https://yt3.ggpht.com/YMmDD0zp5wT6l5ozqVMEMuqm5W07QFqmMHzOJ9QKGnSf9xpgEQ0rznstfXlBDxlFpLIrltQxRg=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": true, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CBQQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@HaruXen", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCyaflzzOH0GC683DlQ-fzwg", + "canonicalBaseUrl": "/@HaruXen" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "168", + "likeCountNotliked": "167", + "replyCount": "337", + "creatorThumbnailUrl": "https://yt3.ggpht.com/YMmDD0zp5wT6l5ozqVMEMuqm5W07QFqmMHzOJ9QKGnSf9xpgEQ0rznstfXlBDxlFpLIrltQxRg=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this comment along with 167 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "167 likes", + "replyCountA11y": "337 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by HaruXen" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/YMmDD0zp5wT6l5ozqVMEMuqm5W07QFqmMHzOJ9QKGnSf9xpgEQ0rznstfXlBDxlFpLIrltQxRg=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { "borderImageProcessor": { "circular": true } } + }, + "accessibilityText": "@HaruXen", + "avatarImageSize": "AVATAR_SIZE_40", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CBQQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@HaruXen", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCyaflzzOH0GC683DlQ-fzwg", + "canonicalBaseUrl": "/@HaruXen" + } + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3h0WEg2YldSV204YWhhdmZSNEFhQUJBZy8xMiBPKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "Eh1VZ3h0WEg2YldSV204YWhhdmZSNEFhQUJBZy8xMiBPKAE%3D", + "commentClickCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "inlineReadMoreButton": { "isSupported": true, "isExpanded": false }, + "commentClickOpensComposer": true, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70&lc=UgxtXH6bWRWm8ahavfR4AaABAg", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70", + "params": "ehpVZ3h0WEg2YldSV204YWhhdmZSNEFhQUJBZ6ICA8ABAA%3D%3D" + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3h0WEg2YldSV204YWhhdmZSNEFhQUJBZy8xMiBGKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "Eh1VZ3h0WEg2YldSV204YWhhdmZSNEFhQUJBZy8xMiBGKAE%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "replyCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Report" }] }, + "icon": { "iconType": "FLAG" }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { "ignoreNavigation": true } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { "text": "Need to report the comment?" } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgxtXH6bWRWm8ahavfR4AaABAg&contact_type=main", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgxtXH6bWRWm8ahavfR4AaABAg&contact_type=main" + } + } + }, + { "text": " without signing in." } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Sign in" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CBMQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CBMQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + }, + "trackingParams": "CBMQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "command": { + "clickTrackingParams": "CBMQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CBMQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + } + ], + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EhpVZ3h0WEg2YldSV204YWhhdmZSNEFhQUJBZyAsKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EhpVZ3h0WEg2YldSV204YWhhdmZSNEFhQUJBZyAsKAE%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + }, + { + "entityKey": "EhpVZ3lIZzNYbmpCVjkzNWRhX0xoNEFhQUJBZyAoKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EhpVZ3lIZzNYbmpCVjkzNWRhX0xoNEFhQUJBZyAoKAE%3D", + "properties": { + "commentId": "UgyHg3XnjBV935da_Lh4AaABAg", + "content": { + "content": "omg it works i actuallly cant believe this ive been wanting to do this for ages thankyou so much!", + "styleRuns": [ + { + "startIndex": 0, + "length": 97, + "weightLabel": "FONT_WEIGHT_NORMAL", + "strikethrough": "LINE_STYLE_SINGLE" + } + ] + }, + "publishedTime": "4 days ago", + "replyLevel": 0, + "authorButtonA11y": "@Auf-dem-weg-zum-sieg", + "toolbarStateKey": "EhpVZ3lIZzNYbmpCVjkzNWRhX0xoNEFhQUJBZyAsKAE%3D", + "translateButtonEntityKey": "EhpVZ3lIZzNYbmpCVjkzNWRhX0xoNEFhQUJBZyD_ASgB" + }, + "author": { + "channelId": "UCFL5d8rMCfbxppODSbRLOgQ", + "displayName": "@Auf-dem-weg-zum-sieg", + "avatarThumbnailUrl": "https://yt3.ggpht.com/oi4vbSV3Cx9G97QcHkSMWL98LksC6rnTLoq93T5sOO8MNuZPXWEXq9Nqkp8XYF93L2WklHADmNY=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CBIQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Auf-dem-weg-zum-sieg", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCFL5d8rMCfbxppODSbRLOgQ", + "canonicalBaseUrl": "/@Auf-dem-weg-zum-sieg" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "1", + "likeCountNotliked": " ", + "replyCount": "", + "creatorThumbnailUrl": "https://yt3.ggpht.com/YMmDD0zp5wT6l5ozqVMEMuqm5W07QFqmMHzOJ9QKGnSf9xpgEQ0rznstfXlBDxlFpLIrltQxRg=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this comment along with 0 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "0 likes", + "replyCountA11y": "0 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by HaruXen" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/oi4vbSV3Cx9G97QcHkSMWL98LksC6rnTLoq93T5sOO8MNuZPXWEXq9Nqkp8XYF93L2WklHADmNY=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { "borderImageProcessor": { "circular": true } } + }, + "accessibilityText": "@Auf-dem-weg-zum-sieg", + "avatarImageSize": "AVATAR_SIZE_40", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CBIQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Auf-dem-weg-zum-sieg", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCFL5d8rMCfbxppODSbRLOgQ", + "canonicalBaseUrl": "/@Auf-dem-weg-zum-sieg" + } + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3lIZzNYbmpCVjkzNWRhX0xoNEFhQUJBZy8xMiBPKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "Eh1VZ3lIZzNYbmpCVjkzNWRhX0xoNEFhQUJBZy8xMiBPKAE%3D", + "commentClickCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "inlineReadMoreButton": { "isSupported": true, "isExpanded": false }, + "commentClickOpensComposer": true, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70&lc=UgyHg3XnjBV935da_Lh4AaABAg", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70", + "params": "ehpVZ3lIZzNYbmpCVjkzNWRhX0xoNEFhQUJBZ6ICA8ABAA%3D%3D" + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3lIZzNYbmpCVjkzNWRhX0xoNEFhQUJBZy8xMiBGKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "Eh1VZ3lIZzNYbmpCVjkzNWRhX0xoNEFhQUJBZy8xMiBGKAE%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "replyCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Report" }] }, + "icon": { "iconType": "FLAG" }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { "ignoreNavigation": true } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { "text": "Need to report the comment?" } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgyHg3XnjBV935da_Lh4AaABAg&contact_type=main", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgyHg3XnjBV935da_Lh4AaABAg&contact_type=main" + } + } + }, + { "text": " without signing in." } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Sign in" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CBEQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CBEQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + }, + "trackingParams": "CBEQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "command": { + "clickTrackingParams": "CBEQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CBEQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + } + ], + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EhpVZ3lIZzNYbmpCVjkzNWRhX0xoNEFhQUJBZyAsKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EhpVZ3lIZzNYbmpCVjkzNWRhX0xoNEFhQUJBZyAsKAE%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + }, + { + "entityKey": "EhpVZ3hJTDVlbVh5bjQyaHRsZlpaNEFhQUJBZyAoKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EhpVZ3hJTDVlbVh5bjQyaHRsZlpaNEFhQUJBZyAoKAE%3D", + "properties": { + "commentId": "UgxIL5emXyn42htlfZZ4AaABAg", + "content": { + "content": "I did know how to do that writing where the text is highlighted before, and now after I watched this video I knew even how to write those styles of text." + }, + "publishedTime": "3 weeks ago", + "replyLevel": 0, + "authorButtonA11y": "@CasamTheAnimator", + "toolbarStateKey": "EhpVZ3hJTDVlbVh5bjQyaHRsZlpaNEFhQUJBZyAsKAE%3D", + "translateButtonEntityKey": "EhpVZ3hJTDVlbVh5bjQyaHRsZlpaNEFhQUJBZyD_ASgB" + }, + "author": { + "channelId": "UChkVaXCYN_QcaE50zETAMOg", + "displayName": "@CasamTheAnimator", + "avatarThumbnailUrl": "https://yt3.ggpht.com/ctUbv8QpWPZRZumEBTVhlSSxg0JfiyvJ40nrWj_0ivOy5s6OoPK7iNp01diskRLs1Hig4ZE82w=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CBAQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@CasamTheAnimator", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UChkVaXCYN_QcaE50zETAMOg", + "canonicalBaseUrl": "/@CasamTheAnimator" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "1", + "likeCountNotliked": " ", + "replyCount": "", + "creatorThumbnailUrl": "https://yt3.ggpht.com/YMmDD0zp5wT6l5ozqVMEMuqm5W07QFqmMHzOJ9QKGnSf9xpgEQ0rznstfXlBDxlFpLIrltQxRg=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this comment along with 0 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "0 likes", + "replyCountA11y": "0 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by HaruXen" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/ctUbv8QpWPZRZumEBTVhlSSxg0JfiyvJ40nrWj_0ivOy5s6OoPK7iNp01diskRLs1Hig4ZE82w=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { "borderImageProcessor": { "circular": true } } + }, + "accessibilityText": "@CasamTheAnimator", + "avatarImageSize": "AVATAR_SIZE_40", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CBAQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@CasamTheAnimator", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UChkVaXCYN_QcaE50zETAMOg", + "canonicalBaseUrl": "/@CasamTheAnimator" + } + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3hJTDVlbVh5bjQyaHRsZlpaNEFhQUJBZy8xMiBPKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "Eh1VZ3hJTDVlbVh5bjQyaHRsZlpaNEFhQUJBZy8xMiBPKAE%3D", + "commentClickCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "inlineReadMoreButton": { "isSupported": true, "isExpanded": false }, + "commentClickOpensComposer": true, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70&lc=UgxIL5emXyn42htlfZZ4AaABAg", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70", + "params": "ehpVZ3hJTDVlbVh5bjQyaHRsZlpaNEFhQUJBZ6ICA8ABAA%3D%3D" + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3hJTDVlbVh5bjQyaHRsZlpaNEFhQUJBZy8xMiBGKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "Eh1VZ3hJTDVlbVh5bjQyaHRsZlpaNEFhQUJBZy8xMiBGKAE%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "replyCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Report" }] }, + "icon": { "iconType": "FLAG" }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { "ignoreNavigation": true } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { "text": "Need to report the comment?" } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgxIL5emXyn42htlfZZ4AaABAg&contact_type=main", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgxIL5emXyn42htlfZZ4AaABAg&contact_type=main" + } + } + }, + { "text": " without signing in." } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Sign in" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CA8Q8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CA8Q8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + }, + "trackingParams": "CA8Q8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "command": { + "clickTrackingParams": "CA8Q8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CA8Q8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + } + ], + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EhpVZ3hJTDVlbVh5bjQyaHRsZlpaNEFhQUJBZyAsKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EhpVZ3hJTDVlbVh5bjQyaHRsZlpaNEFhQUJBZyAsKAE%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + }, + { + "entityKey": "EhpVZ3dNS1ktODlYQ2RDVkI5YlhwNEFhQUJBZyAoKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EhpVZ3dNS1ktODlYQ2RDVkI5YlhwNEFhQUJBZyAoKAE%3D", + "properties": { + "commentId": "UgwMKY-89XCdCVB9bXp4AaABAg", + "content": { "content": "Nobody asked for, but everyone needed" }, + "publishedTime": "3 years ago", + "replyLevel": 0, + "authorButtonA11y": "@0_Ed", + "toolbarStateKey": "EhpVZ3dNS1ktODlYQ2RDVkI5YlhwNEFhQUJBZyAsKAE%3D", + "translateButtonEntityKey": "EhpVZ3dNS1ktODlYQ2RDVkI5YlhwNEFhQUJBZyD_ASgB" + }, + "author": { + "channelId": "UCDezbPSXn3awzhxVm7qhGtg", + "displayName": "@0_Ed", + "avatarThumbnailUrl": "https://yt3.ggpht.com/4DWdgRIJ0lEV-e4GZFrdf8MGxQBtML2aix2orKBt3iM6QBrh7Kg1ur1FZlyRmqWpWnRPRIex9w=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CA4QtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@0_Ed", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCDezbPSXn3awzhxVm7qhGtg", + "canonicalBaseUrl": "/@0_Ed" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "13", + "likeCountNotliked": "12", + "replyCount": "5", + "creatorThumbnailUrl": "https://yt3.ggpht.com/YMmDD0zp5wT6l5ozqVMEMuqm5W07QFqmMHzOJ9QKGnSf9xpgEQ0rznstfXlBDxlFpLIrltQxRg=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this comment along with 12 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "12 likes", + "replyCountA11y": "5 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by HaruXen" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/4DWdgRIJ0lEV-e4GZFrdf8MGxQBtML2aix2orKBt3iM6QBrh7Kg1ur1FZlyRmqWpWnRPRIex9w=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { "borderImageProcessor": { "circular": true } } + }, + "accessibilityText": "@0_Ed", + "avatarImageSize": "AVATAR_SIZE_40", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CA4QtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@0_Ed", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCDezbPSXn3awzhxVm7qhGtg", + "canonicalBaseUrl": "/@0_Ed" + } + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3dNS1ktODlYQ2RDVkI5YlhwNEFhQUJBZy8xMiBPKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "Eh1VZ3dNS1ktODlYQ2RDVkI5YlhwNEFhQUJBZy8xMiBPKAE%3D", + "commentClickCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "inlineReadMoreButton": { "isSupported": true, "isExpanded": false }, + "commentClickOpensComposer": true, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70&lc=UgwMKY-89XCdCVB9bXp4AaABAg", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70", + "params": "ehpVZ3dNS1ktODlYQ2RDVkI5YlhwNEFhQUJBZ6ICA8ABAA%3D%3D" + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3dNS1ktODlYQ2RDVkI5YlhwNEFhQUJBZy8xMiBGKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "Eh1VZ3dNS1ktODlYQ2RDVkI5YlhwNEFhQUJBZy8xMiBGKAE%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "replyCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Report" }] }, + "icon": { "iconType": "FLAG" }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { "ignoreNavigation": true } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { "text": "Need to report the comment?" } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgwMKY-89XCdCVB9bXp4AaABAg&contact_type=main", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgwMKY-89XCdCVB9bXp4AaABAg&contact_type=main" + } + } + }, + { "text": " without signing in." } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Sign in" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CA0Q8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CA0Q8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + }, + "trackingParams": "CA0Q8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "command": { + "clickTrackingParams": "CA0Q8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CA0Q8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + } + ], + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EhpVZ3dNS1ktODlYQ2RDVkI5YlhwNEFhQUJBZyAsKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EhpVZ3dNS1ktODlYQ2RDVkI5YlhwNEFhQUJBZyAsKAE%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_HEARTED" + } + } + }, + { + "entityKey": "EhpVZ3lmdUcyc0NEdmduUlVZSEpwNEFhQUJBZyAoKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EhpVZ3lmdUcyc0NEdmduUlVZSEpwNEFhQUJBZyAoKAE%3D", + "properties": { + "commentId": "UgyfuG2sCDvgnRUYHJp4AaABAg", + "content": { + "content": "me: types bold\n\nHaruTutorial: your bald", + "styleRuns": [ + { + "startIndex": 30, + "length": 9, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + }, + "publishedTime": "3 years ago", + "replyLevel": 0, + "authorButtonA11y": "@stargazeu", + "toolbarStateKey": "EhpVZ3lmdUcyc0NEdmduUlVZSEpwNEFhQUJBZyAsKAE%3D", + "translateButtonEntityKey": "EhpVZ3lmdUcyc0NEdmduUlVZSEpwNEFhQUJBZyD_ASgB" + }, + "author": { + "channelId": "UCge96FdHXkARBjzPhdYl8Sg", + "displayName": "@stargazeu", + "avatarThumbnailUrl": "https://yt3.ggpht.com/JoeW_qNuf9b6BusB3E6JShizqRLB4jR3NaTnsnzvpUQ1KW88OcS74_Sx1h6vjZiXK2uOxnrUNeY=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAwQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@stargazeu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCge96FdHXkARBjzPhdYl8Sg", + "canonicalBaseUrl": "/@stargazeu" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "43", + "likeCountNotliked": "42", + "replyCount": "15", + "creatorThumbnailUrl": "https://yt3.ggpht.com/YMmDD0zp5wT6l5ozqVMEMuqm5W07QFqmMHzOJ9QKGnSf9xpgEQ0rznstfXlBDxlFpLIrltQxRg=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this comment along with 42 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "42 likes", + "replyCountA11y": "15 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by HaruXen" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/JoeW_qNuf9b6BusB3E6JShizqRLB4jR3NaTnsnzvpUQ1KW88OcS74_Sx1h6vjZiXK2uOxnrUNeY=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { "borderImageProcessor": { "circular": true } } + }, + "accessibilityText": "@stargazeu", + "avatarImageSize": "AVATAR_SIZE_40", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CAwQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@stargazeu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCge96FdHXkARBjzPhdYl8Sg", + "canonicalBaseUrl": "/@stargazeu" + } + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3lmdUcyc0NEdmduUlVZSEpwNEFhQUJBZy8xMiBPKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "Eh1VZ3lmdUcyc0NEdmduUlVZSEpwNEFhQUJBZy8xMiBPKAE%3D", + "commentClickCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "inlineReadMoreButton": { "isSupported": true, "isExpanded": false }, + "commentClickOpensComposer": true, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70&lc=UgyfuG2sCDvgnRUYHJp4AaABAg", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70", + "params": "ehpVZ3lmdUcyc0NEdmduUlVZSEpwNEFhQUJBZ6ICA8ABAA%3D%3D" + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3lmdUcyc0NEdmduUlVZSEpwNEFhQUJBZy8xMiBGKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "Eh1VZ3lmdUcyc0NEdmduUlVZSEpwNEFhQUJBZy8xMiBGKAE%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "replyCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Report" }] }, + "icon": { "iconType": "FLAG" }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { "ignoreNavigation": true } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { "text": "Need to report the comment?" } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgyfuG2sCDvgnRUYHJp4AaABAg&contact_type=main", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgyfuG2sCDvgnRUYHJp4AaABAg&contact_type=main" + } + } + }, + { "text": " without signing in." } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Sign in" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CAsQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAsQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + }, + "trackingParams": "CAsQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "command": { + "clickTrackingParams": "CAsQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAsQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + } + ], + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EhpVZ3lmdUcyc0NEdmduUlVZSEpwNEFhQUJBZyAsKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EhpVZ3lmdUcyc0NEdmduUlVZSEpwNEFhQUJBZyAsKAE%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_HEARTED" + } + } + }, + { + "entityKey": "EhpVZ3dBWG5kTk5FYTFoLVZWSUM5NEFhQUJBZyAoKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EhpVZ3dBWG5kTk5FYTFoLVZWSUM5NEFhQUJBZyAoKAE%3D", + "properties": { + "commentId": "UgwAXndNNEa1h-VVIC94AaABAg", + "content": { + "content": "the McDonald’s don’t feel like turning the Icecream machine on", + "styleRuns": [ + { + "startIndex": 0, + "length": 62, + "weightLabel": "FONT_WEIGHT_NORMAL", + "italic": true + } + ] + }, + "publishedTime": "1 month ago", + "replyLevel": 0, + "authorButtonA11y": "@Flowershowrise", + "toolbarStateKey": "EhpVZ3dBWG5kTk5FYTFoLVZWSUM5NEFhQUJBZyAsKAE%3D", + "translateButtonEntityKey": "EhpVZ3dBWG5kTk5FYTFoLVZWSUM5NEFhQUJBZyD_ASgB" + }, + "author": { + "channelId": "UCkmY4kQ8e8gDRllV485Rd9g", + "displayName": "@Flowershowrise", + "avatarThumbnailUrl": "https://yt3.ggpht.com/c2iMsq-wFjKRjTDqPy14UpMI1B9hNms4moW9H7xtPjOMI0vjaHwN94me23upYar-8CE3s6QkFw=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAoQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Flowershowrise", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCkmY4kQ8e8gDRllV485Rd9g", + "canonicalBaseUrl": "/@Flowershowrise" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "3", + "likeCountNotliked": "2", + "replyCount": "", + "creatorThumbnailUrl": "https://yt3.ggpht.com/YMmDD0zp5wT6l5ozqVMEMuqm5W07QFqmMHzOJ9QKGnSf9xpgEQ0rznstfXlBDxlFpLIrltQxRg=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this comment along with 2 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "2 likes", + "replyCountA11y": "0 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by HaruXen" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/c2iMsq-wFjKRjTDqPy14UpMI1B9hNms4moW9H7xtPjOMI0vjaHwN94me23upYar-8CE3s6QkFw=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { "borderImageProcessor": { "circular": true } } + }, + "accessibilityText": "@Flowershowrise", + "avatarImageSize": "AVATAR_SIZE_40", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CAoQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Flowershowrise", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCkmY4kQ8e8gDRllV485Rd9g", + "canonicalBaseUrl": "/@Flowershowrise" + } + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3dBWG5kTk5FYTFoLVZWSUM5NEFhQUJBZy8xMiBPKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "Eh1VZ3dBWG5kTk5FYTFoLVZWSUM5NEFhQUJBZy8xMiBPKAE%3D", + "commentClickCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "inlineReadMoreButton": { "isSupported": true, "isExpanded": false }, + "commentClickOpensComposer": true, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70&lc=UgwAXndNNEa1h-VVIC94AaABAg", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70", + "params": "ehpVZ3dBWG5kTk5FYTFoLVZWSUM5NEFhQUJBZ6ICA8ABAA%3D%3D" + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3dBWG5kTk5FYTFoLVZWSUM5NEFhQUJBZy8xMiBGKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "Eh1VZ3dBWG5kTk5FYTFoLVZWSUM5NEFhQUJBZy8xMiBGKAE%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "replyCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Report" }] }, + "icon": { "iconType": "FLAG" }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { "ignoreNavigation": true } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { "text": "Need to report the comment?" } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgwAXndNNEa1h-VVIC94AaABAg&contact_type=main", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgwAXndNNEa1h-VVIC94AaABAg&contact_type=main" + } + } + }, + { "text": " without signing in." } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Sign in" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CAkQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAkQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + }, + "trackingParams": "CAkQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "command": { + "clickTrackingParams": "CAkQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAkQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + } + ], + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EhpVZ3dBWG5kTk5FYTFoLVZWSUM5NEFhQUJBZyAsKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EhpVZ3dBWG5kTk5FYTFoLVZWSUM5NEFhQUJBZyAsKAE%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + }, + { + "entityKey": "EhpVZ3d3RUJxYXJlUTB0cHNXN1JSNEFhQUJBZyAoKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EhpVZ3d3RUJxYXJlUTB0cHNXN1JSNEFhQUJBZyAoKAE%3D", + "properties": { + "commentId": "UgwwEBqareQ0tpsW7RR4AaABAg", + "content": { + "content": "YOOO THIS IS SICK! THANK YOU MAN!", + "styleRuns": [ + { + "startIndex": 0, + "length": 33, + "weightLabel": "FONT_WEIGHT_MEDIUM", + "italic": true, + "strikethrough": "LINE_STYLE_SINGLE" + } + ] + }, + "publishedTime": "1 month ago", + "replyLevel": 0, + "authorButtonA11y": "@ziaaaaa.", + "toolbarStateKey": "EhpVZ3d3RUJxYXJlUTB0cHNXN1JSNEFhQUJBZyAsKAE%3D", + "translateButtonEntityKey": "EhpVZ3d3RUJxYXJlUTB0cHNXN1JSNEFhQUJBZyD_ASgB" + }, + "author": { + "channelId": "UChIbg4dGguUwzg7O-xmi57g", + "displayName": "@ziaaaaa.", + "avatarThumbnailUrl": "https://yt3.ggpht.com/HEAdH93oAQu2ScXNmiKIISapv5O9dKSVLuT3gD1zJhSgHqTaptL7JPun6A5GZqg58_C75_OPkQ=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAgQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@ziaaaaa.", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UChIbg4dGguUwzg7O-xmi57g", + "canonicalBaseUrl": "/@ziaaaaa." + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "1", + "likeCountNotliked": " ", + "replyCount": "", + "creatorThumbnailUrl": "https://yt3.ggpht.com/YMmDD0zp5wT6l5ozqVMEMuqm5W07QFqmMHzOJ9QKGnSf9xpgEQ0rznstfXlBDxlFpLIrltQxRg=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this comment along with 0 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "0 likes", + "replyCountA11y": "0 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by HaruXen" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/HEAdH93oAQu2ScXNmiKIISapv5O9dKSVLuT3gD1zJhSgHqTaptL7JPun6A5GZqg58_C75_OPkQ=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { "borderImageProcessor": { "circular": true } } + }, + "accessibilityText": "@ziaaaaa.", + "avatarImageSize": "AVATAR_SIZE_40", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CAgQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@ziaaaaa.", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UChIbg4dGguUwzg7O-xmi57g", + "canonicalBaseUrl": "/@ziaaaaa." + } + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3d3RUJxYXJlUTB0cHNXN1JSNEFhQUJBZy8xMiBPKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "Eh1VZ3d3RUJxYXJlUTB0cHNXN1JSNEFhQUJBZy8xMiBPKAE%3D", + "commentClickCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "inlineReadMoreButton": { "isSupported": true, "isExpanded": false }, + "commentClickOpensComposer": true, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70&lc=UgwwEBqareQ0tpsW7RR4AaABAg", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70", + "params": "ehpVZ3d3RUJxYXJlUTB0cHNXN1JSNEFhQUJBZ6ICA8ABAA%3D%3D" + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3d3RUJxYXJlUTB0cHNXN1JSNEFhQUJBZy8xMiBGKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "Eh1VZ3d3RUJxYXJlUTB0cHNXN1JSNEFhQUJBZy8xMiBGKAE%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "replyCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Report" }] }, + "icon": { "iconType": "FLAG" }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { "ignoreNavigation": true } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { "text": "Need to report the comment?" } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgwwEBqareQ0tpsW7RR4AaABAg&contact_type=main", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgwwEBqareQ0tpsW7RR4AaABAg&contact_type=main" + } + } + }, + { "text": " without signing in." } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Sign in" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CAcQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAcQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + }, + "trackingParams": "CAcQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "command": { + "clickTrackingParams": "CAcQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAcQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + } + ], + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EhpVZ3d3RUJxYXJlUTB0cHNXN1JSNEFhQUJBZyAsKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EhpVZ3d3RUJxYXJlUTB0cHNXN1JSNEFhQUJBZyAsKAE%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + }, + { + "entityKey": "EhpVZ3huRk1McnB2YkNXekhpZG1sNEFhQUJBZyAoKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EhpVZ3huRk1McnB2YkNXekhpZG1sNEFhQUJBZyAoKAE%3D", + "properties": { + "commentId": "UgxnFMLrpvbCWzHidml4AaABAg", + "content": { + "content": "Someone must honor him , this man is the best , no , he is a LEGEND . We must all thank him for his video and for getting to the point immediately.", + "styleRuns": [ + { + "startIndex": 0, + "length": 22, + "weightLabel": "FONT_WEIGHT_MEDIUM" + }, + { + "startIndex": 37, + "length": 8, + "weightLabel": "FONT_WEIGHT_NORMAL", + "strikethrough": "LINE_STYLE_SINGLE" + }, + { + "startIndex": 62, + "length": 6, + "weightLabel": "FONT_WEIGHT_MEDIUM" + }, + { + "startIndex": 72, + "length": 35, + "weightLabel": "FONT_WEIGHT_NORMAL", + "italic": true + }, + { + "startIndex": 116, + "length": 33, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + }, + "publishedTime": "2 years ago (edited)", + "replyLevel": 0, + "authorButtonA11y": "@Dahackabarade", + "toolbarStateKey": "EhpVZ3huRk1McnB2YkNXekhpZG1sNEFhQUJBZyAsKAE%3D", + "translateButtonEntityKey": "EhpVZ3huRk1McnB2YkNXekhpZG1sNEFhQUJBZyD_ASgB" + }, + "author": { + "channelId": "UCeGJuvHZqqebHTE_Kz2zyug", + "displayName": "@Dahackabarade", + "avatarThumbnailUrl": "https://yt3.ggpht.com/csf-cEr2z4uWg8ZpVEPqgS2D2ZUHKBAJWnIbnzQCRtAlioSlUbtQZAyx76tnyfpXpixrsKke6DE=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAYQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Dahackabarade", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCeGJuvHZqqebHTE_Kz2zyug", + "canonicalBaseUrl": "/@Dahackabarade" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "12", + "likeCountNotliked": "11", + "replyCount": "5", + "creatorThumbnailUrl": "https://yt3.ggpht.com/YMmDD0zp5wT6l5ozqVMEMuqm5W07QFqmMHzOJ9QKGnSf9xpgEQ0rznstfXlBDxlFpLIrltQxRg=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this comment along with 11 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "11 likes", + "replyCountA11y": "5 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by HaruXen" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/csf-cEr2z4uWg8ZpVEPqgS2D2ZUHKBAJWnIbnzQCRtAlioSlUbtQZAyx76tnyfpXpixrsKke6DE=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { "borderImageProcessor": { "circular": true } } + }, + "accessibilityText": "@Dahackabarade", + "avatarImageSize": "AVATAR_SIZE_40", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CAYQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Dahackabarade", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCeGJuvHZqqebHTE_Kz2zyug", + "canonicalBaseUrl": "/@Dahackabarade" + } + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3huRk1McnB2YkNXekhpZG1sNEFhQUJBZy8xMiBPKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "Eh1VZ3huRk1McnB2YkNXekhpZG1sNEFhQUJBZy8xMiBPKAE%3D", + "commentClickCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "inlineReadMoreButton": { "isSupported": true, "isExpanded": false }, + "commentClickOpensComposer": true, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70&lc=UgxnFMLrpvbCWzHidml4AaABAg", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70", + "params": "ehpVZ3huRk1McnB2YkNXekhpZG1sNEFhQUJBZ6ICA8ABAA%3D%3D" + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3huRk1McnB2YkNXekhpZG1sNEFhQUJBZy8xMiBGKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "Eh1VZ3huRk1McnB2YkNXekhpZG1sNEFhQUJBZy8xMiBGKAE%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "replyCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Report" }] }, + "icon": { "iconType": "FLAG" }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { "ignoreNavigation": true } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { "text": "Need to report the comment?" } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgxnFMLrpvbCWzHidml4AaABAg&contact_type=main", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgxnFMLrpvbCWzHidml4AaABAg&contact_type=main" + } + } + }, + { "text": " without signing in." } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Sign in" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CAUQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAUQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + }, + "trackingParams": "CAUQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "command": { + "clickTrackingParams": "CAUQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAUQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + } + ], + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EhpVZ3huRk1McnB2YkNXekhpZG1sNEFhQUJBZyAsKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EhpVZ3huRk1McnB2YkNXekhpZG1sNEFhQUJBZyAsKAE%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + }, + { + "entityKey": "EhpVZ3dDSXdtRjZzeW5QN1VGX3dWNEFhQUJBZyAoKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EhpVZ3dDSXdtRjZzeW5QN1VGX3dWNEFhQUJBZyAoKAE%3D", + "properties": { + "commentId": "UgwCIwmF6synP7UF_wV4AaABAg", + "content": { + "content": "Never gonna give you up. Im gonna let u down", + "styleRuns": [ + { + "startIndex": 0, + "length": 24, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + }, + "publishedTime": "2 years ago", + "replyLevel": 0, + "authorButtonA11y": "@imnotjust...2326", + "toolbarStateKey": "EhpVZ3dDSXdtRjZzeW5QN1VGX3dWNEFhQUJBZyAsKAE%3D", + "translateButtonEntityKey": "EhpVZ3dDSXdtRjZzeW5QN1VGX3dWNEFhQUJBZyD_ASgB" + }, + "author": { + "channelId": "UCyrDrBrWvXwIhf2s2F1dq-Q", + "displayName": "@imnotjust...2326", + "avatarThumbnailUrl": "https://yt3.ggpht.com/Clzb1GD_KnRm9u7mOAN165HZO_H0jhXQlRG8YvEjqkDuBUNibGkclRyRZIdhi-yJhC4hHorGLQ=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAQQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@imnotjust...2326", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCyrDrBrWvXwIhf2s2F1dq-Q", + "canonicalBaseUrl": "/@imnotjust...2326" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "15", + "likeCountNotliked": "14", + "replyCount": "", + "creatorThumbnailUrl": "https://yt3.ggpht.com/YMmDD0zp5wT6l5ozqVMEMuqm5W07QFqmMHzOJ9QKGnSf9xpgEQ0rznstfXlBDxlFpLIrltQxRg=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this comment along with 14 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "14 likes", + "replyCountA11y": "0 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by HaruXen" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/Clzb1GD_KnRm9u7mOAN165HZO_H0jhXQlRG8YvEjqkDuBUNibGkclRyRZIdhi-yJhC4hHorGLQ=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { "borderImageProcessor": { "circular": true } } + }, + "accessibilityText": "@imnotjust...2326", + "avatarImageSize": "AVATAR_SIZE_40", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CAQQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@imnotjust...2326", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCyrDrBrWvXwIhf2s2F1dq-Q", + "canonicalBaseUrl": "/@imnotjust...2326" + } + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3dDSXdtRjZzeW5QN1VGX3dWNEFhQUJBZy8xMiBPKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "Eh1VZ3dDSXdtRjZzeW5QN1VGX3dWNEFhQUJBZy8xMiBPKAE%3D", + "commentClickCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "inlineReadMoreButton": { "isSupported": true, "isExpanded": false }, + "commentClickOpensComposer": true, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70&lc=UgwCIwmF6synP7UF_wV4AaABAg", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70", + "params": "ehpVZ3dDSXdtRjZzeW5QN1VGX3dWNEFhQUJBZ6ICA8ABAA%3D%3D" + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3dDSXdtRjZzeW5QN1VGX3dWNEFhQUJBZy8xMiBGKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "Eh1VZ3dDSXdtRjZzeW5QN1VGX3dWNEFhQUJBZy8xMiBGKAE%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "replyCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Report" }] }, + "icon": { "iconType": "FLAG" }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { "ignoreNavigation": true } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { "text": "Need to report the comment?" } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgwCIwmF6synP7UF_wV4AaABAg&contact_type=main", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgwCIwmF6synP7UF_wV4AaABAg&contact_type=main" + } + } + }, + { "text": " without signing in." } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Sign in" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CAMQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAMQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + }, + "trackingParams": "CAMQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "command": { + "clickTrackingParams": "CAMQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAMQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + } + ], + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EhpVZ3dDSXdtRjZzeW5QN1VGX3dWNEFhQUJBZyAsKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EhpVZ3dDSXdtRjZzeW5QN1VGX3dWNEFhQUJBZyAsKAE%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_HEARTED" + } + } + }, + { + "entityKey": "EhpVZ3liNVd5OTFZb242OW8zd0xoNEFhQUJBZyAoKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EhpVZ3liNVd5OTFZb242OW8zd0xoNEFhQUJBZyAoKAE%3D", + "properties": { + "commentId": "Ugyb5Wy91Yon69o3wLh4AaABAg", + "content": { + "content": "Thank you for being A Legend No, The Goat Lets go dude", + "styleRuns": [ + { + "startIndex": 20, + "length": 8, + "weightLabel": "FONT_WEIGHT_NORMAL", + "strikethrough": "LINE_STYLE_SINGLE" + }, + { + "startIndex": 33, + "length": 8, + "weightLabel": "FONT_WEIGHT_MEDIUM" + }, + { + "startIndex": 42, + "length": 12, + "weightLabel": "FONT_WEIGHT_NORMAL", + "italic": true + } + ] + }, + "publishedTime": "1 month ago", + "replyLevel": 0, + "authorButtonA11y": "@gfghdgfghd6391", + "toolbarStateKey": "EhpVZ3liNVd5OTFZb242OW8zd0xoNEFhQUJBZyAsKAE%3D", + "translateButtonEntityKey": "EhpVZ3liNVd5OTFZb242OW8zd0xoNEFhQUJBZyD_ASgB" + }, + "author": { + "channelId": "UCPCgaC_EJlS5RpRRWPHWvKA", + "displayName": "@gfghdgfghd6391", + "avatarThumbnailUrl": "https://yt3.ggpht.com/ytc/AIdro_n0lpwvjOP9HO_XHxzInwQoqQ7qIXeR0SqZVbCE=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAIQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@gfghdgfghd6391", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCPCgaC_EJlS5RpRRWPHWvKA", + "canonicalBaseUrl": "/@gfghdgfghd6391" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "1", + "likeCountNotliked": " ", + "replyCount": "", + "creatorThumbnailUrl": "https://yt3.ggpht.com/YMmDD0zp5wT6l5ozqVMEMuqm5W07QFqmMHzOJ9QKGnSf9xpgEQ0rznstfXlBDxlFpLIrltQxRg=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this comment along with 0 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "0 likes", + "replyCountA11y": "0 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by HaruXen" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/ytc/AIdro_n0lpwvjOP9HO_XHxzInwQoqQ7qIXeR0SqZVbCE=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { "borderImageProcessor": { "circular": true } } + }, + "accessibilityText": "@gfghdgfghd6391", + "avatarImageSize": "AVATAR_SIZE_40", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CAIQtnUiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@gfghdgfghd6391", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCPCgaC_EJlS5RpRRWPHWvKA", + "canonicalBaseUrl": "/@gfghdgfghd6391" + } + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3liNVd5OTFZb242OW8zd0xoNEFhQUJBZy8xMiBPKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "Eh1VZ3liNVd5OTFZb242OW8zd0xoNEFhQUJBZy8xMiBPKAE%3D", + "commentClickCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "inlineReadMoreButton": { "isSupported": true, "isExpanded": false }, + "commentClickOpensComposer": true, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70&lc=Ugyb5Wy91Yon69o3wLh4AaABAg", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70", + "params": "ehpVZ3liNVd5OTFZb242OW8zd0xoNEFhQUJBZ6ICA8ABAA%3D%3D" + } + } + } + } + } + }, + { + "entityKey": "Eh1VZ3liNVd5OTFZb242OW8zd0xoNEFhQUJBZy8xMiBGKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "Eh1VZ3liNVd5OTFZb242OW8zd0xoNEFhQUJBZy8xMiBGKAE%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + }, + "replyCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "Qip1VkTuM70" } + } + } + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Report" }] }, + "icon": { "iconType": "FLAG" }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { "ignoreNavigation": true } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { "text": "Need to report the comment?" } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgyb5Wy91Yon69o3wLh4AaABAg&contact_type=main", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3DQip1VkTuM70%26lc%3DUgyb5Wy91Yon69o3wLh4AaABAg&contact_type=main" + } + } + }, + { "text": " without signing in." } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Sign in" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CAEQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAEQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + }, + "trackingParams": "CAEQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "command": { + "clickTrackingParams": "CAEQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "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%253DQip1VkTuM70&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAEQ8FsiEwi64q3dmKGFAxWvy0IFHc14BKM=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Qip1VkTuM70", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Qip1VkTuM70" + } + } + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=" + } + } + ], + "trackingParams": "CAAQg2ciEwi64q3dmKGFAxWvy0IFHc14BKM=", + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EhpVZ3liNVd5OTFZb242OW8zd0xoNEFhQUJBZyAsKAE%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EhpVZ3liNVd5OTFZb242OW8zd0xoNEFhQUJBZyAsKAE%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + } + ], + "timestamp": { "seconds": "1711980602", "nanos": 730890285 } + } + } +} diff --git a/testfiles/video_details/comments_20240401_frameworkupd_reply.json b/testfiles/video_details/comments_20240401_frameworkupd_reply.json new file mode 100644 index 0000000..cac3fb0 --- /dev/null +++ b/testfiles/video_details/comments_20240401_frameworkupd_reply.json @@ -0,0 +1,3397 @@ +{ + "responseContext": { + "serviceTrackingParams": [ + { + "service": "CSI", + "params": [ + { "key": "c", "value": "WEB" }, + { "key": "cver", "value": "2.20240327.00.00" }, + { "key": "yt_li", "value": "0" }, + { "key": "GetWatchPageWebCommentReplies_rid", "value": "0x2d67cc1f834679de" } + ] + }, + { + "service": "GFEEDBACK", + "params": [ + { "key": "logged_in", "value": "0" }, + { + "key": "e", + "value": "23804281,23858057,23946420,23966208,23983296,23998056,24004644,24007613,24036948,24077241,24080738,24120820,24135310,24166867,24181174,24187377,24208765,24241378,24290971,24377598,24407446,24425061,24439361,24451319,24453989,24468724,24506784,24515423,24524098,24524562,24542367,24547316,24548627,24548629,24550458,24560416,24566687,24690004,24697068,24699899,39325978,51003636,51006181,51009781,51010235,51012659,51014091,51016856,51017346,51017378,51019626,51020570,51025415,51026715,51027870,51030101,51033399,51033765,51037330,51037342,51037349,51037540,51038805,51039200,51040842,51048489,51050361,51053689,51057501,51057846,51057855,51060353,51063643,51064835,51069269,51072748,51073089,51074183,51074739,51076170,51078191,51079239,51079303,51080341,51080402,51082236,51083234,51084267,51084279,51084292,51089177,51089441,51089956,51091331,51091812,51092557,51092661,51092916,51092929,51094175,51094202,51094209,51095478,51096389,51096577,51096646,51096989,51098297,51098299,51099412,51100401,51101454,51103858,51104988,51105868,51106995,51107331,51107338,51108006,51108620,51108977,51109077,51110160,51111738,51112970,51112972,51113658,51113663,51115184,51116067,51118293,51118456,51118564,51118932,51119507,51119512,51120953,51121939,51122047,51123077,51124104,51124478,51125903,51127561,51128585,51129216,51129218,51129220,51129222,51129224,51129395,51130324,51131075,51132393,51135346,51135654,51136141,51136149,51136217,51136785,51136843,51137086,51137135,51137185,51137715,51139379,51140749,51141384,51141542,51141765,51141798,51142470,51142840,51142842,51143318,51145219,51146434,51146962,51147091,51148978,51148981,51149607,51152049,51152100,51152207,51152444,51152508,51153962" + } + ] + }, + { "service": "GUIDED_HELP", "params": [{ "key": "logged_in", "value": "0" }] }, + { + "service": "ECATCHER", + "params": [ + { "key": "client.version", "value": "2.20240327" }, + { "key": "client.name", "value": "WEB" } + ] + } + ], + "mainAppWebResponseContext": { + "loggedOut": true, + "trackingParam": "kx_fmPxhoPZRbWKP3KhZedSUkqnLSgvVbXCccQmGvt1MMhHRgkussh7BwOcCE59TDtslLKPQ-SS" + }, + "webResponseContextExtensionData": { "hasDecorated": true } + }, + "trackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdWCARoIfBC-dSITCPCN8vzMoYUDFbDoSQcdOD4G0Q==", + "onResponseReceivedEndpoints": [ + { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "appendContinuationItemsAction": { + "continuationItems": [ + { + "commentViewModel": { + "commentKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtR3pUaEZNVWN3ICgoAQ%3D%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtR3pUaEZNVWN3ICwoAQ%3D%3D", + "toolbarSurfaceKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtR3pUaEZNVWN3LzEyIEYoAQ%3D%3D", + "commentId": "Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-GzThFMUcw", + "commentSurfaceKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtR3pUaEZNVWN3LzEyIE8oAQ%3D%3D", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CB8QtnUYZSITCMW4kf7MoYUDFUrSSQcddOkN1Q==", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + { + "commentViewModel": { + "commentKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDI5NUk1aU1aICgoAQ%3D%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDI5NUk1aU1aICwoAQ%3D%3D", + "toolbarSurfaceKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDI5NUk1aU1aLzEyIEYoAQ%3D%3D", + "commentId": "Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-H295I5iMZ", + "commentSurfaceKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDI5NUk1aU1aLzEyIE8oAQ%3D%3D", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CB4QtnUYZiITCMW4kf7MoYUDFUrSSQcddOkN1Q==", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + { + "commentViewModel": { + "commentKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDczb0xvSGtJICgoAQ%3D%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDczb0xvSGtJICwoAQ%3D%3D", + "toolbarSurfaceKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDczb0xvSGtJLzEyIEYoAQ%3D%3D", + "commentId": "Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-H73oLoHkI", + "commentSurfaceKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDczb0xvSGtJLzEyIE8oAQ%3D%3D", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CB0QtnUYZyITCMW4kf7MoYUDFUrSSQcddOkN1Q==", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + { + "commentViewModel": { + "commentKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDduQmJQRDV6ICgoAQ%3D%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDduQmJQRDV6ICwoAQ%3D%3D", + "toolbarSurfaceKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDduQmJQRDV6LzEyIEYoAQ%3D%3D", + "commentId": "Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-H7nBbPD5z", + "commentSurfaceKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDduQmJQRDV6LzEyIE8oAQ%3D%3D", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CBwQtnUYaCITCMW4kf7MoYUDFUrSSQcddOkN1Q==", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + { + "commentViewModel": { + "commentKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDlzM0x2U3RaICgoAQ%3D%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDlzM0x2U3RaICwoAQ%3D%3D", + "toolbarSurfaceKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDlzM0x2U3RaLzEyIEYoAQ%3D%3D", + "commentId": "Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-H9s3LvStZ", + "commentSurfaceKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDlzM0x2U3RaLzEyIE8oAQ%3D%3D", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CBsQtnUYaSITCMW4kf7MoYUDFUrSSQcddOkN1Q==", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + { + "commentViewModel": { + "commentKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSEI1MkR2M1NMICgoAQ%3D%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSEI1MkR2M1NMICwoAQ%3D%3D", + "toolbarSurfaceKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSEI1MkR2M1NMLzEyIEYoAQ%3D%3D", + "commentId": "Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-HB52Dv3SL", + "commentSurfaceKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSEI1MkR2M1NMLzEyIE8oAQ%3D%3D", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CBoQtnUYaiITCMW4kf7MoYUDFUrSSQcddOkN1Q==", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + { + "commentViewModel": { + "commentKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSERMck0xT1BEICgoAQ%3D%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSERMck0xT1BEICwoAQ%3D%3D", + "toolbarSurfaceKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSERMck0xT1BELzEyIEYoAQ%3D%3D", + "commentId": "Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-HDLrM1OPD", + "commentSurfaceKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSERMck0xT1BELzEyIE8oAQ%3D%3D", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CBkQtnUYayITCMW4kf7MoYUDFUrSSQcddOkN1Q==", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + { + "commentViewModel": { + "commentKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSElBYm0zSGltICgoAQ%3D%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSElBYm0zSGltICwoAQ%3D%3D", + "toolbarSurfaceKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSElBYm0zSGltLzEyIEYoAQ%3D%3D", + "commentId": "Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-HIAbm3Him", + "commentSurfaceKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSElBYm0zSGltLzEyIE8oAQ%3D%3D", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CBgQtnUYbCITCMW4kf7MoYUDFUrSSQcddOkN1Q==", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + { + "commentViewModel": { + "commentKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSElycE9LSWk3ICgoAQ%3D%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSElycE9LSWk3ICwoAQ%3D%3D", + "toolbarSurfaceKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSElycE9LSWk3LzEyIEYoAQ%3D%3D", + "commentId": "Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-HIrpOKIi7", + "commentSurfaceKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSElycE9LSWk3LzEyIE8oAQ%3D%3D", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CBcQtnUYbSITCMW4kf7MoYUDFUrSSQcddOkN1Q==", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + { + "commentViewModel": { + "commentKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSEtNT1NCbkxLICgoAQ%3D%3D", + "sharedKey": "EgAgKygB", + "toolbarStateKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSEtNT1NCbkxLICwoAQ%3D%3D", + "toolbarSurfaceKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSEtNT1NCbkxLLzEyIEYoAQ%3D%3D", + "commentId": "Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-HKMOSBnLK", + "commentSurfaceKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSEtNT1NCbkxLLzEyIE8oAQ%3D%3D", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CBYQtnUYbiITCMW4kf7MoYUDFUrSSQcddOkN1Q==", + "visibility": { "types": "12" }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + { + "continuationItemRenderer": { + "button": { + "buttonRenderer": { + "text": { "runs": [{ "text": "Show more replies" }] }, + "icon": { "iconType": "SUBDIRECTORY_ARROW_RIGHT" }, + "trackingParams": "CBUQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "command": { + "clickTrackingParams": "CBUQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/next" + } + }, + "continuationCommand": { + "token": "Eg0SC2hhZjY3ZUtGMHVvGAYy1wEKUGdldF9jb21tZW50X3dpdGhfcmVwbGllc19zdHJlYW0tLUNnZ0lnQVFWRjdmUk9CSUZDS0FnR0FFWUFDSU9DZ3dJeXUzdXJRWVE2Tkt2NGdFGlASGlVnenUtdDQ4dlY5U2pkZVdJTWg0QWFBQkFnIgIIACoYVUNhTzZUWXRsQzhVNXR0ejYyaFRyWmdnMgtoYWY2N2VLRjB1b0AASDKCAQIIASgKQi9jb21tZW50LXJlcGxpZXMtaXRlbS1VZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZw%3D%3D", + "request": "CONTINUATION_REQUEST_TYPE_WATCH_NEXT" + } + } + } + } + } + } + ], + "targetId": "comment-replies-item-Ugzu-t48vV9SjdeWIMh4AaABAg" + } + } + ], + "frameworkUpdates": { + "entityBatchUpdate": { + "mutations": [ + { + "entityKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtR3pUaEZNVWN3ICgoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtR3pUaEZNVWN3ICgoAQ%3D%3D", + "properties": { + "commentId": "Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-GzThFMUcw", + "content": { + "content": "Fact🙌🏻", + "attachmentRuns": [ + { + "startIndex": 4, + "length": 4, + "element": { + "type": { + "imageType": { + "image": { + "sources": [ + { + "url": "https://www.youtube.com/s/gaming/emoji/7ff574f2/emoji_u1f64c_1f3fb.png", + "width": 16, + "height": 16 + } + ] + }, + "playbackState": "IMAGE_PLAYBACK_STATE_STOPPED" + } + }, + "properties": { + "layoutProperties": { + "height": { "value": 16, "unit": "DIMENSION_UNIT_POINT" }, + "width": { "value": 16, "unit": "DIMENSION_UNIT_POINT" }, + "margin": { + "left": { "value": 2, "unit": "DIMENSION_UNIT_POINT" }, + "right": { "value": 2, "unit": "DIMENSION_UNIT_POINT" } + } + } + } + }, + "alignment": "ALIGNMENT_VERTICAL_CENTER" + } + ] + }, + "publishedTime": "2 months ago", + "replyLevel": 1, + "authorButtonA11y": "@Sadaf788", + "toolbarStateKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtR3pUaEZNVWN3ICwoAQ%3D%3D", + "translateButtonEntityKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtR3pUaEZNVWN3IP8BKAE%3D" + }, + "author": { + "channelId": "UC4I0-MXGyTRsc1tsJrDMh2A", + "displayName": "@Sadaf788", + "avatarThumbnailUrl": "https://yt3.ggpht.com/uIXOBEBIhYn6Y8cQHlhaGGnCqOqS8PI5YR_Cx28qR_Y_p1qkjHC8V68iwxfeJ20eQ3zp81owJ64=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CBQQtnUiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Sadaf788", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC4I0-MXGyTRsc1tsJrDMh2A", + "canonicalBaseUrl": "/@Sadaf788" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "801", + "likeCountNotliked": "800", + "replyCount": "", + "creatorThumbnailUrl": "https://yt3.ggpht.com/kcV7NQkBm-UvvzVTJvrg1Yf1eHSqi-DLXuZPt_ECa3cHEPefujS951Dxj6KUEQ5i9Z7_fyMUjw=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this reply along with 800 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "800 likes", + "replyCountA11y": "0 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by JYP Entertainment" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/uIXOBEBIhYn6Y8cQHlhaGGnCqOqS8PI5YR_Cx28qR_Y_p1qkjHC8V68iwxfeJ20eQ3zp81owJ64=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { "borderImageProcessor": { "circular": true } } + }, + "accessibilityText": "@Sadaf788", + "avatarImageSize": "AVATAR_SIZE_XS", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CBQQtnUiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Sadaf788", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC4I0-MXGyTRsc1tsJrDMh2A", + "canonicalBaseUrl": "/@Sadaf788" + } + } + } + } + } + } + }, + { + "entityKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtR3pUaEZNVWN3LzEyIE8oAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtR3pUaEZNVWN3LzEyIE8oAQ%3D%3D", + "inlineReadMoreButton": { "isSupported": true, "isExpanded": false }, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo&lc=Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-GzThFMUcw", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "haf67eKF0uo", + "params": "ejFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtR3pUaEZNVWN3ogIDwAEA" + } + } + } + } + } + }, + { + "entityKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtR3pUaEZNVWN3LzEyIEYoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtR3pUaEZNVWN3LzEyIEYoAQ%3D%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "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%253Dhaf67eKF0uo&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "haf67eKF0uo" } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Report" }] }, + "icon": { "iconType": "FLAG" }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { "ignoreNavigation": true } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { "text": "Need to report the comment?" } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3Dhaf67eKF0uo%26lc%3DUgzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-GzThFMUcw&contact_type=main", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3Dhaf67eKF0uo%26lc%3DUgzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-GzThFMUcw&contact_type=main" + } + } + }, + { "text": " without signing in." } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Sign in" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CBMQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "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%253Dhaf67eKF0uo&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CBMQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "haf67eKF0uo" + } + } + } + }, + "trackingParams": "CBMQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "command": { + "clickTrackingParams": "CBMQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "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%253Dhaf67eKF0uo&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CBMQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "haf67eKF0uo" + } + } + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + } + ], + "trackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtR3pUaEZNVWN3ICwoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtR3pUaEZNVWN3ICwoAQ%3D%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + }, + { + "entityKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDI5NUk1aU1aICgoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDI5NUk1aU1aICgoAQ%3D%3D", + "properties": { + "commentId": "Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-H295I5iMZ", + "content": { "content": "Facts" }, + "publishedTime": "2 months ago", + "replyLevel": 1, + "authorButtonA11y": "@Biggest_Onceu", + "toolbarStateKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDI5NUk1aU1aICwoAQ%3D%3D", + "translateButtonEntityKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDI5NUk1aU1aIP8BKAE%3D" + }, + "author": { + "channelId": "UCdJ0CAWWa1rRjRbVrQUrU_w", + "displayName": "@Biggest_Onceu", + "avatarThumbnailUrl": "https://yt3.ggpht.com/dHe_Zmr-7EueUz0R-BbuFoGwRyNMXwa3gb_GJMgAie9yU5PM6LbgTlNJ1zivRxnjiFg2nrlF1Es=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CBIQtnUiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Biggest_Onceu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCdJ0CAWWa1rRjRbVrQUrU_w", + "canonicalBaseUrl": "/@Biggest_Onceu" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "531", + "likeCountNotliked": "530", + "replyCount": "", + "creatorThumbnailUrl": "https://yt3.ggpht.com/kcV7NQkBm-UvvzVTJvrg1Yf1eHSqi-DLXuZPt_ECa3cHEPefujS951Dxj6KUEQ5i9Z7_fyMUjw=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this reply along with 530 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "530 likes", + "replyCountA11y": "0 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by JYP Entertainment" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/dHe_Zmr-7EueUz0R-BbuFoGwRyNMXwa3gb_GJMgAie9yU5PM6LbgTlNJ1zivRxnjiFg2nrlF1Es=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { "borderImageProcessor": { "circular": true } } + }, + "accessibilityText": "@Biggest_Onceu", + "avatarImageSize": "AVATAR_SIZE_XS", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CBIQtnUiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Biggest_Onceu", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCdJ0CAWWa1rRjRbVrQUrU_w", + "canonicalBaseUrl": "/@Biggest_Onceu" + } + } + } + } + } + } + }, + { + "entityKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDI5NUk1aU1aLzEyIE8oAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDI5NUk1aU1aLzEyIE8oAQ%3D%3D", + "inlineReadMoreButton": { "isSupported": true, "isExpanded": false }, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo&lc=Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-H295I5iMZ", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "haf67eKF0uo", + "params": "ejFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDI5NUk1aU1aogIDwAEA" + } + } + } + } + } + }, + { + "entityKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDI5NUk1aU1aLzEyIEYoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDI5NUk1aU1aLzEyIEYoAQ%3D%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "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%253Dhaf67eKF0uo&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "haf67eKF0uo" } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Report" }] }, + "icon": { "iconType": "FLAG" }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { "ignoreNavigation": true } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { "text": "Need to report the comment?" } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3Dhaf67eKF0uo%26lc%3DUgzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-H295I5iMZ&contact_type=main", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3Dhaf67eKF0uo%26lc%3DUgzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-H295I5iMZ&contact_type=main" + } + } + }, + { "text": " without signing in." } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Sign in" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CBEQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "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%253Dhaf67eKF0uo&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CBEQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "haf67eKF0uo" + } + } + } + }, + "trackingParams": "CBEQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "command": { + "clickTrackingParams": "CBEQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "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%253Dhaf67eKF0uo&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CBEQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "haf67eKF0uo" + } + } + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + } + ], + "trackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDI5NUk1aU1aICwoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDI5NUk1aU1aICwoAQ%3D%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + }, + { + "entityKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDczb0xvSGtJICgoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDczb0xvSGtJICgoAQ%3D%3D", + "properties": { + "commentId": "Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-H73oLoHkI", + "content": { "content": "Faacttts" }, + "publishedTime": "2 months ago", + "replyLevel": 1, + "authorButtonA11y": "@neni996", + "toolbarStateKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDczb0xvSGtJICwoAQ%3D%3D", + "translateButtonEntityKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDczb0xvSGtJIP8BKAE%3D" + }, + "author": { + "channelId": "UCPPhfcNhQ768F0Hhk3-25hA", + "displayName": "@neni996", + "avatarThumbnailUrl": "https://yt3.ggpht.com/t__fCiOIhKCg2BwaxaRog9F_a5uemd8rTEvwzWYl6WeLn-nN9xEW0FvxUtM0fQrh2Dj_6ENsGQ=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CBAQtnUiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@neni996", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCPPhfcNhQ768F0Hhk3-25hA", + "canonicalBaseUrl": "/@neni996" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "413", + "likeCountNotliked": "412", + "replyCount": "", + "creatorThumbnailUrl": "https://yt3.ggpht.com/kcV7NQkBm-UvvzVTJvrg1Yf1eHSqi-DLXuZPt_ECa3cHEPefujS951Dxj6KUEQ5i9Z7_fyMUjw=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this reply along with 412 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "412 likes", + "replyCountA11y": "0 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by JYP Entertainment" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/t__fCiOIhKCg2BwaxaRog9F_a5uemd8rTEvwzWYl6WeLn-nN9xEW0FvxUtM0fQrh2Dj_6ENsGQ=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { "borderImageProcessor": { "circular": true } } + }, + "accessibilityText": "@neni996", + "avatarImageSize": "AVATAR_SIZE_XS", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CBAQtnUiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@neni996", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCPPhfcNhQ768F0Hhk3-25hA", + "canonicalBaseUrl": "/@neni996" + } + } + } + } + } + } + }, + { + "entityKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDczb0xvSGtJLzEyIE8oAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDczb0xvSGtJLzEyIE8oAQ%3D%3D", + "inlineReadMoreButton": { "isSupported": true, "isExpanded": false }, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo&lc=Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-H73oLoHkI", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "haf67eKF0uo", + "params": "ejFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDczb0xvSGtJogIDwAEA" + } + } + } + } + } + }, + { + "entityKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDczb0xvSGtJLzEyIEYoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDczb0xvSGtJLzEyIEYoAQ%3D%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "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%253Dhaf67eKF0uo&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "haf67eKF0uo" } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Report" }] }, + "icon": { "iconType": "FLAG" }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { "ignoreNavigation": true } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { "text": "Need to report the comment?" } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3Dhaf67eKF0uo%26lc%3DUgzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-H73oLoHkI&contact_type=main", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3Dhaf67eKF0uo%26lc%3DUgzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-H73oLoHkI&contact_type=main" + } + } + }, + { "text": " without signing in." } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Sign in" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CA8Q8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "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%253Dhaf67eKF0uo&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CA8Q8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "haf67eKF0uo" + } + } + } + }, + "trackingParams": "CA8Q8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "command": { + "clickTrackingParams": "CA8Q8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "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%253Dhaf67eKF0uo&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CA8Q8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "haf67eKF0uo" + } + } + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + } + ], + "trackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDczb0xvSGtJICwoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDczb0xvSGtJICwoAQ%3D%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + }, + { + "entityKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDduQmJQRDV6ICgoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDduQmJQRDV6ICgoAQ%3D%3D", + "properties": { + "commentId": "Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-H7nBbPD5z", + "content": { "content": "REAL" }, + "publishedTime": "2 months ago", + "replyLevel": 1, + "authorButtonA11y": "@momolvs", + "toolbarStateKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDduQmJQRDV6ICwoAQ%3D%3D", + "translateButtonEntityKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDduQmJQRDV6IP8BKAE%3D" + }, + "author": { + "channelId": "UCQyomFJDEQtC2lbQ6E7QUGA", + "displayName": "@momolvs", + "avatarThumbnailUrl": "https://yt3.ggpht.com/nt6GjcwAs8NPgaF29pn-cHTPmPAwQC_e_lXQHGDjZJGSRKzsH4s3le8Wpg0ByAUvPwTSHWe0OA=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CA4QtnUiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@momolvs", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCQyomFJDEQtC2lbQ6E7QUGA", + "canonicalBaseUrl": "/@momolvs" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "313", + "likeCountNotliked": "312", + "replyCount": "", + "creatorThumbnailUrl": "https://yt3.ggpht.com/kcV7NQkBm-UvvzVTJvrg1Yf1eHSqi-DLXuZPt_ECa3cHEPefujS951Dxj6KUEQ5i9Z7_fyMUjw=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this reply along with 312 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "312 likes", + "replyCountA11y": "0 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by JYP Entertainment" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/nt6GjcwAs8NPgaF29pn-cHTPmPAwQC_e_lXQHGDjZJGSRKzsH4s3le8Wpg0ByAUvPwTSHWe0OA=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { "borderImageProcessor": { "circular": true } } + }, + "accessibilityText": "@momolvs", + "avatarImageSize": "AVATAR_SIZE_XS", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CA4QtnUiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@momolvs", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCQyomFJDEQtC2lbQ6E7QUGA", + "canonicalBaseUrl": "/@momolvs" + } + } + } + } + } + } + }, + { + "entityKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDduQmJQRDV6LzEyIE8oAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDduQmJQRDV6LzEyIE8oAQ%3D%3D", + "inlineReadMoreButton": { "isSupported": true, "isExpanded": false }, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo&lc=Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-H7nBbPD5z", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "haf67eKF0uo", + "params": "ejFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDduQmJQRDV6ogIDwAEA" + } + } + } + } + } + }, + { + "entityKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDduQmJQRDV6LzEyIEYoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDduQmJQRDV6LzEyIEYoAQ%3D%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "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%253Dhaf67eKF0uo&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "haf67eKF0uo" } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Report" }] }, + "icon": { "iconType": "FLAG" }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { "ignoreNavigation": true } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { "text": "Need to report the comment?" } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3Dhaf67eKF0uo%26lc%3DUgzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-H7nBbPD5z&contact_type=main", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3Dhaf67eKF0uo%26lc%3DUgzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-H7nBbPD5z&contact_type=main" + } + } + }, + { "text": " without signing in." } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Sign in" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CA0Q8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "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%253Dhaf67eKF0uo&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CA0Q8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "haf67eKF0uo" + } + } + } + }, + "trackingParams": "CA0Q8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "command": { + "clickTrackingParams": "CA0Q8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "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%253Dhaf67eKF0uo&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CA0Q8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "haf67eKF0uo" + } + } + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + } + ], + "trackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDduQmJQRDV6ICwoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDduQmJQRDV6ICwoAQ%3D%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + }, + { + "entityKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDlzM0x2U3RaICgoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDlzM0x2U3RaICgoAQ%3D%3D", + "properties": { + "commentId": "Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-H9s3LvStZ", + "content": { "content": "FR!!" }, + "publishedTime": "2 months ago", + "replyLevel": 1, + "authorButtonA11y": "@user-vv9yp1fh8w", + "toolbarStateKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDlzM0x2U3RaICwoAQ%3D%3D", + "translateButtonEntityKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDlzM0x2U3RaIP8BKAE%3D" + }, + "author": { + "channelId": "UC9HOPOf3gD3aw6Ej9WZ-rYg", + "displayName": "@user-vv9yp1fh8w", + "avatarThumbnailUrl": "https://yt3.ggpht.com/ytc/AIdro_nqyUCWW7jqWrg_39XNQ18-acPouL6wyHeQnZOMbmlSa9x2YGWINkfU1DLcvaXw=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAwQtnUiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@user-vv9yp1fh8w", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC9HOPOf3gD3aw6Ej9WZ-rYg", + "canonicalBaseUrl": "/@user-vv9yp1fh8w" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "188", + "likeCountNotliked": "187", + "replyCount": "", + "creatorThumbnailUrl": "https://yt3.ggpht.com/kcV7NQkBm-UvvzVTJvrg1Yf1eHSqi-DLXuZPt_ECa3cHEPefujS951Dxj6KUEQ5i9Z7_fyMUjw=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this reply along with 187 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "187 likes", + "replyCountA11y": "0 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by JYP Entertainment" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/ytc/AIdro_nqyUCWW7jqWrg_39XNQ18-acPouL6wyHeQnZOMbmlSa9x2YGWINkfU1DLcvaXw=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { "borderImageProcessor": { "circular": true } } + }, + "accessibilityText": "@user-vv9yp1fh8w", + "avatarImageSize": "AVATAR_SIZE_XS", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CAwQtnUiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@user-vv9yp1fh8w", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UC9HOPOf3gD3aw6Ej9WZ-rYg", + "canonicalBaseUrl": "/@user-vv9yp1fh8w" + } + } + } + } + } + } + }, + { + "entityKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDlzM0x2U3RaLzEyIE8oAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDlzM0x2U3RaLzEyIE8oAQ%3D%3D", + "inlineReadMoreButton": { "isSupported": true, "isExpanded": false }, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo&lc=Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-H9s3LvStZ", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "haf67eKF0uo", + "params": "ejFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDlzM0x2U3RaogIDwAEA" + } + } + } + } + } + }, + { + "entityKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDlzM0x2U3RaLzEyIEYoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDlzM0x2U3RaLzEyIEYoAQ%3D%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "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%253Dhaf67eKF0uo&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "haf67eKF0uo" } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Report" }] }, + "icon": { "iconType": "FLAG" }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { "ignoreNavigation": true } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { "text": "Need to report the comment?" } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3Dhaf67eKF0uo%26lc%3DUgzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-H9s3LvStZ&contact_type=main", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3Dhaf67eKF0uo%26lc%3DUgzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-H9s3LvStZ&contact_type=main" + } + } + }, + { "text": " without signing in." } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Sign in" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CAsQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "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%253Dhaf67eKF0uo&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAsQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "haf67eKF0uo" + } + } + } + }, + "trackingParams": "CAsQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "command": { + "clickTrackingParams": "CAsQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "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%253Dhaf67eKF0uo&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAsQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "haf67eKF0uo" + } + } + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + } + ], + "trackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDlzM0x2U3RaICwoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSDlzM0x2U3RaICwoAQ%3D%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + }, + { + "entityKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSEI1MkR2M1NMICgoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSEI1MkR2M1NMICgoAQ%3D%3D", + "properties": { + "commentId": "Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-HB52Dv3SL", + "content": { "content": "fato." }, + "publishedTime": "2 months ago", + "replyLevel": 1, + "authorButtonA11y": "@millenatwice", + "toolbarStateKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSEI1MkR2M1NMICwoAQ%3D%3D", + "translateButtonEntityKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSEI1MkR2M1NMIP8BKAE%3D" + }, + "author": { + "channelId": "UCW6ua0VDEFz7SyVMX01fTCA", + "displayName": "@millenatwice", + "avatarThumbnailUrl": "https://yt3.ggpht.com/rInaNzUF3JLL_pCNfZtZlf2cHipf1yM4grr8VGJRHocwOQiuq1x7kUVi24q3ydtDC0j8bqbw2vA=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAoQtnUiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@millenatwice", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCW6ua0VDEFz7SyVMX01fTCA", + "canonicalBaseUrl": "/@millenatwice" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "166", + "likeCountNotliked": "165", + "replyCount": "", + "creatorThumbnailUrl": "https://yt3.ggpht.com/kcV7NQkBm-UvvzVTJvrg1Yf1eHSqi-DLXuZPt_ECa3cHEPefujS951Dxj6KUEQ5i9Z7_fyMUjw=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this reply along with 165 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "165 likes", + "replyCountA11y": "0 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by JYP Entertainment" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/rInaNzUF3JLL_pCNfZtZlf2cHipf1yM4grr8VGJRHocwOQiuq1x7kUVi24q3ydtDC0j8bqbw2vA=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { "borderImageProcessor": { "circular": true } } + }, + "accessibilityText": "@millenatwice", + "avatarImageSize": "AVATAR_SIZE_XS", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CAoQtnUiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@millenatwice", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCW6ua0VDEFz7SyVMX01fTCA", + "canonicalBaseUrl": "/@millenatwice" + } + } + } + } + } + } + }, + { + "entityKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSEI1MkR2M1NMLzEyIE8oAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSEI1MkR2M1NMLzEyIE8oAQ%3D%3D", + "inlineReadMoreButton": { "isSupported": true, "isExpanded": false }, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo&lc=Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-HB52Dv3SL", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "haf67eKF0uo", + "params": "ejFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSEI1MkR2M1NMogIDwAEA" + } + } + } + } + } + }, + { + "entityKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSEI1MkR2M1NMLzEyIEYoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSEI1MkR2M1NMLzEyIEYoAQ%3D%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "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%253Dhaf67eKF0uo&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "haf67eKF0uo" } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Report" }] }, + "icon": { "iconType": "FLAG" }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { "ignoreNavigation": true } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { "text": "Need to report the comment?" } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3Dhaf67eKF0uo%26lc%3DUgzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-HB52Dv3SL&contact_type=main", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3Dhaf67eKF0uo%26lc%3DUgzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-HB52Dv3SL&contact_type=main" + } + } + }, + { "text": " without signing in." } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Sign in" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CAkQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "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%253Dhaf67eKF0uo&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAkQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "haf67eKF0uo" + } + } + } + }, + "trackingParams": "CAkQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "command": { + "clickTrackingParams": "CAkQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "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%253Dhaf67eKF0uo&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAkQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "haf67eKF0uo" + } + } + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + } + ], + "trackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSEI1MkR2M1NMICwoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSEI1MkR2M1NMICwoAQ%3D%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + }, + { + "entityKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSERMck0xT1BEICgoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSERMck0xT1BEICgoAQ%3D%3D", + "properties": { + "commentId": "Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-HDLrM1OPD", + "content": { + "content": "For sure!! TWICE is always TWICE!! They always give GOOD MUSIC" + }, + "publishedTime": "2 months ago", + "replyLevel": 1, + "authorButtonA11y": "@Its_me_hi_good", + "toolbarStateKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSERMck0xT1BEICwoAQ%3D%3D", + "translateButtonEntityKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSERMck0xT1BEIP8BKAE%3D" + }, + "author": { + "channelId": "UCqDSps4SV0v8Dzf8esr6ScQ", + "displayName": "@Its_me_hi_good", + "avatarThumbnailUrl": "https://yt3.ggpht.com/ytc/AIdro_nfh9rWK7_gae1YkUgKuq13G9OUpxQCqrXAAi1hfPkCvHeHORbq3DUTYm7b5eoy=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAgQtnUiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Its_me_hi_good", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCqDSps4SV0v8Dzf8esr6ScQ", + "canonicalBaseUrl": "/@Its_me_hi_good" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "342", + "likeCountNotliked": "341", + "replyCount": "", + "creatorThumbnailUrl": "https://yt3.ggpht.com/kcV7NQkBm-UvvzVTJvrg1Yf1eHSqi-DLXuZPt_ECa3cHEPefujS951Dxj6KUEQ5i9Z7_fyMUjw=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this reply along with 341 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "341 likes", + "replyCountA11y": "0 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by JYP Entertainment" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/ytc/AIdro_nfh9rWK7_gae1YkUgKuq13G9OUpxQCqrXAAi1hfPkCvHeHORbq3DUTYm7b5eoy=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { "borderImageProcessor": { "circular": true } } + }, + "accessibilityText": "@Its_me_hi_good", + "avatarImageSize": "AVATAR_SIZE_XS", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CAgQtnUiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Its_me_hi_good", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCqDSps4SV0v8Dzf8esr6ScQ", + "canonicalBaseUrl": "/@Its_me_hi_good" + } + } + } + } + } + } + }, + { + "entityKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSERMck0xT1BELzEyIE8oAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSERMck0xT1BELzEyIE8oAQ%3D%3D", + "inlineReadMoreButton": { "isSupported": true, "isExpanded": false }, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo&lc=Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-HDLrM1OPD", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "haf67eKF0uo", + "params": "ejFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSERMck0xT1BEogIDwAEA" + } + } + } + } + } + }, + { + "entityKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSERMck0xT1BELzEyIEYoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSERMck0xT1BELzEyIEYoAQ%3D%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "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%253Dhaf67eKF0uo&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "haf67eKF0uo" } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Report" }] }, + "icon": { "iconType": "FLAG" }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { "ignoreNavigation": true } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { "text": "Need to report the comment?" } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3Dhaf67eKF0uo%26lc%3DUgzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-HDLrM1OPD&contact_type=main", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3Dhaf67eKF0uo%26lc%3DUgzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-HDLrM1OPD&contact_type=main" + } + } + }, + { "text": " without signing in." } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Sign in" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CAcQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "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%253Dhaf67eKF0uo&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAcQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "haf67eKF0uo" + } + } + } + }, + "trackingParams": "CAcQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "command": { + "clickTrackingParams": "CAcQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "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%253Dhaf67eKF0uo&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAcQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "haf67eKF0uo" + } + } + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + } + ], + "trackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSERMck0xT1BEICwoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSERMck0xT1BEICwoAQ%3D%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + }, + { + "entityKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSElBYm0zSGltICgoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSElBYm0zSGltICgoAQ%3D%3D", + "properties": { + "commentId": "Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-HIAbm3Him", + "content": { "content": "Fr" }, + "publishedTime": "2 months ago", + "replyLevel": 1, + "authorButtonA11y": "@amanpreetbrar7836", + "toolbarStateKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSElBYm0zSGltICwoAQ%3D%3D", + "translateButtonEntityKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSElBYm0zSGltIP8BKAE%3D" + }, + "author": { + "channelId": "UCFA4BaLyvM1DDNsFyE_BHqQ", + "displayName": "@amanpreetbrar7836", + "avatarThumbnailUrl": "https://yt3.ggpht.com/ytc/AIdro_n1M-xxgSLIqe17kDv-i-tPn23FT1ywabpRAQ=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAYQtnUiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@amanpreetbrar7836", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCFA4BaLyvM1DDNsFyE_BHqQ", + "canonicalBaseUrl": "/@amanpreetbrar7836" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "85", + "likeCountNotliked": "84", + "replyCount": "", + "creatorThumbnailUrl": "https://yt3.ggpht.com/kcV7NQkBm-UvvzVTJvrg1Yf1eHSqi-DLXuZPt_ECa3cHEPefujS951Dxj6KUEQ5i9Z7_fyMUjw=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 JYP Entertainment" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/ytc/AIdro_n1M-xxgSLIqe17kDv-i-tPn23FT1ywabpRAQ=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { "borderImageProcessor": { "circular": true } } + }, + "accessibilityText": "@amanpreetbrar7836", + "avatarImageSize": "AVATAR_SIZE_XS", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CAYQtnUiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@amanpreetbrar7836", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCFA4BaLyvM1DDNsFyE_BHqQ", + "canonicalBaseUrl": "/@amanpreetbrar7836" + } + } + } + } + } + } + }, + { + "entityKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSElBYm0zSGltLzEyIE8oAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSElBYm0zSGltLzEyIE8oAQ%3D%3D", + "inlineReadMoreButton": { "isSupported": true, "isExpanded": false }, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo&lc=Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-HIAbm3Him", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "haf67eKF0uo", + "params": "ejFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSElBYm0zSGltogIDwAEA" + } + } + } + } + } + }, + { + "entityKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSElBYm0zSGltLzEyIEYoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSElBYm0zSGltLzEyIEYoAQ%3D%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "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%253Dhaf67eKF0uo&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "haf67eKF0uo" } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Report" }] }, + "icon": { "iconType": "FLAG" }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { "ignoreNavigation": true } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { "text": "Need to report the comment?" } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3Dhaf67eKF0uo%26lc%3DUgzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-HIAbm3Him&contact_type=main", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3Dhaf67eKF0uo%26lc%3DUgzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-HIAbm3Him&contact_type=main" + } + } + }, + { "text": " without signing in." } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Sign in" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CAUQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "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%253Dhaf67eKF0uo&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAUQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "haf67eKF0uo" + } + } + } + }, + "trackingParams": "CAUQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "command": { + "clickTrackingParams": "CAUQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "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%253Dhaf67eKF0uo&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAUQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "haf67eKF0uo" + } + } + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + } + ], + "trackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSElBYm0zSGltICwoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSElBYm0zSGltICwoAQ%3D%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + }, + { + "entityKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSElycE9LSWk3ICgoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSElycE9LSWk3ICgoAQ%3D%3D", + "properties": { + "commentId": "Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-HIrpOKIi7", + "content": { "content": "Presave I got you and with youth on spotify" }, + "publishedTime": "2 months ago", + "replyLevel": 1, + "authorButtonA11y": "@RitaOnce9", + "toolbarStateKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSElycE9LSWk3ICwoAQ%3D%3D", + "translateButtonEntityKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSElycE9LSWk3IP8BKAE%3D" + }, + "author": { + "channelId": "UCxMDESp088wGItVM4xXACgw", + "displayName": "@RitaOnce9", + "avatarThumbnailUrl": "https://yt3.ggpht.com/hVTumbLCpmtJw0c2mq1B-ES5W3kdYPqnNrtzEcUhxCoUN6dAutXc6exaPRnBMLM6Jw1ILPoBDg=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAQQtnUiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@RitaOnce9", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCxMDESp088wGItVM4xXACgw", + "canonicalBaseUrl": "/@RitaOnce9" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "113", + "likeCountNotliked": "112", + "replyCount": "", + "creatorThumbnailUrl": "https://yt3.ggpht.com/kcV7NQkBm-UvvzVTJvrg1Yf1eHSqi-DLXuZPt_ECa3cHEPefujS951Dxj6KUEQ5i9Z7_fyMUjw=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this reply along with 112 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "112 likes", + "replyCountA11y": "0 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by JYP Entertainment" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/hVTumbLCpmtJw0c2mq1B-ES5W3kdYPqnNrtzEcUhxCoUN6dAutXc6exaPRnBMLM6Jw1ILPoBDg=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { "borderImageProcessor": { "circular": true } } + }, + "accessibilityText": "@RitaOnce9", + "avatarImageSize": "AVATAR_SIZE_XS", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CAQQtnUiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@RitaOnce9", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCxMDESp088wGItVM4xXACgw", + "canonicalBaseUrl": "/@RitaOnce9" + } + } + } + } + } + } + }, + { + "entityKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSElycE9LSWk3LzEyIE8oAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSElycE9LSWk3LzEyIE8oAQ%3D%3D", + "inlineReadMoreButton": { "isSupported": true, "isExpanded": false }, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo&lc=Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-HIrpOKIi7", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "haf67eKF0uo", + "params": "ejFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSElycE9LSWk3ogIDwAEA" + } + } + } + } + } + }, + { + "entityKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSElycE9LSWk3LzEyIEYoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSElycE9LSWk3LzEyIEYoAQ%3D%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "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%253Dhaf67eKF0uo&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "haf67eKF0uo" } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Report" }] }, + "icon": { "iconType": "FLAG" }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { "ignoreNavigation": true } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { "text": "Need to report the comment?" } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3Dhaf67eKF0uo%26lc%3DUgzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-HIrpOKIi7&contact_type=main", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3Dhaf67eKF0uo%26lc%3DUgzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-HIrpOKIi7&contact_type=main" + } + } + }, + { "text": " without signing in." } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Sign in" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CAMQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "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%253Dhaf67eKF0uo&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAMQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "haf67eKF0uo" + } + } + } + }, + "trackingParams": "CAMQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "command": { + "clickTrackingParams": "CAMQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "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%253Dhaf67eKF0uo&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAMQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "haf67eKF0uo" + } + } + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + } + ], + "trackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSElycE9LSWk3ICwoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSElycE9LSWk3ICwoAQ%3D%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + }, + { + "entityKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSEtNT1NCbkxLICgoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentEntityPayload": { + "key": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSEtNT1NCbkxLICgoAQ%3D%3D", + "properties": { + "commentId": "Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-HKMOSBnLK", + "content": { "content": "real" }, + "publishedTime": "2 months ago", + "replyLevel": 1, + "authorButtonA11y": "@twiceupremacy", + "toolbarStateKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSEtNT1NCbkxLICwoAQ%3D%3D", + "translateButtonEntityKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSEtNT1NCbkxLIP8BKAE%3D" + }, + "author": { + "channelId": "UCqeOr9ddrs_d6OgboKjk6zw", + "displayName": "@twiceupremacy", + "avatarThumbnailUrl": "https://yt3.ggpht.com/ytc/AIdro_lpKYjxtRm1HSjv3tFvGwrvnRILmJoQrPTBBOFG=s88-c-k-c0x00ffffff-no-rj", + "isVerified": false, + "isCurrentUser": false, + "isCreator": false, + "channelCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAIQtnUiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@twiceupremacy", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCqeOr9ddrs_d6OgboKjk6zw", + "canonicalBaseUrl": "/@twiceupremacy" + } + } + }, + "isArtist": false + }, + "toolbar": { + "likeCountLiked": "76", + "likeCountNotliked": "75", + "replyCount": "", + "creatorThumbnailUrl": "https://yt3.ggpht.com/kcV7NQkBm-UvvzVTJvrg1Yf1eHSqi-DLXuZPt_ECa3cHEPefujS951Dxj6KUEQ5i9Z7_fyMUjw=s88-c-k-c0x00ffffff-no-rj", + "likeButtonA11y": "Like this reply along with 75 other people", + "engagementToolbarStyle": { + "value": "ENGAGEMENT_TOOLBAR_STYLE_VALUE_DEFAULT" + }, + "likeCountA11y": "75 likes", + "replyCountA11y": "0 replies", + "likeInactiveTooltip": "Like", + "likeActiveTooltip": "Unlike", + "dislikeInactiveTooltip": "Dislike", + "dislikeActiveTooltip": "Remove dislike", + "heartActiveTooltip": "❤ by JYP Entertainment" + }, + "avatar": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/ytc/AIdro_lpKYjxtRm1HSjv3tFvGwrvnRILmJoQrPTBBOFG=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + } + ], + "processor": { "borderImageProcessor": { "circular": true } } + }, + "accessibilityText": "@twiceupremacy", + "avatarImageSize": "AVATAR_SIZE_XS", + "endpoint": { + "innertubeCommand": { + "clickTrackingParams": "CAIQtnUiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@twiceupremacy", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCqeOr9ddrs_d6OgboKjk6zw", + "canonicalBaseUrl": "/@twiceupremacy" + } + } + } + } + } + } + }, + { + "entityKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSEtNT1NCbkxLLzEyIE8oAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "commentSurfaceEntityPayload": { + "key": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSEtNT1NCbkxLLzEyIE8oAQ%3D%3D", + "inlineReadMoreButton": { "isSupported": true, "isExpanded": false }, + "composerDraftEntityKey": "N/A", + "publishedTimeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo&lc=Ugzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-HKMOSBnLK", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "haf67eKF0uo", + "params": "ejFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSEtNT1NCbkxLogIDwAEA" + } + } + } + } + } + }, + { + "entityKey": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSEtNT1NCbkxLLzEyIEYoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarSurfaceEntityPayload": { + "key": "EjRVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSEtNT1NCbkxLLzEyIEYoAQ%3D%3D", + "prepareAccountCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "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%253Dhaf67eKF0uo&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { "videoId": "haf67eKF0uo" } + } + } + } + }, + "likeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "unlikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "dislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "undislikeCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + }, + "menuCommand": { + "innertubeCommand": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "menuEndpoint": { + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { "runs": [{ "text": "Report" }] }, + "icon": { "iconType": "FLAG" }, + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { "ignoreNavigation": true } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "runs": [ + { "text": "Need to report the comment?" } + ] + }, + "content": { + "runs": [ + { + "text": "Sign in to report content that breaks our rules.\n\nYou can also file a " + }, + { + "text": "legal complaint", + "navigationEndpoint": { + "clickTrackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3Dhaf67eKF0uo%26lc%3DUgzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-HKMOSBnLK&contact_type=main", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://support.google.com/youtube/contact/legal_complaint_entities_single?hl=en&entity_url=https://www.youtube.com/watch%3Fv%3Dhaf67eKF0uo%26lc%3DUgzu-t48vV9SjdeWIMh4AaABAg.A-Grr7qN9uaA-HKMOSBnLK&contact_type=main" + } + } + }, + { "text": " without signing in." } + ] + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Sign in" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CAEQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "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%253Dhaf67eKF0uo&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAEQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "haf67eKF0uo" + } + } + } + }, + "trackingParams": "CAEQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "command": { + "clickTrackingParams": "CAEQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "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%253Dhaf67eKF0uo&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAEQ8FsiEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=haf67eKF0uo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "haf67eKF0uo" + } + } + } + } + } + } + } + } + } + }, + "trackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=" + } + } + ], + "trackingParams": "CAAQg2ciEwjFuJH-zKGFAxVK0kkHHXTpDdU=", + "accessibility": { + "accessibilityData": { "label": "Action menu" } + } + } + } + } + } + }, + "isEngagementToolbar": true + } + } + }, + { + "entityKey": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSEtNT1NCbkxLICwoAQ%3D%3D", + "type": "ENTITY_MUTATION_TYPE_REPLACE", + "payload": { + "engagementToolbarStateEntityPayload": { + "key": "EjFVZ3p1LXQ0OHZWOVNqZGVXSU1oNEFhQUJBZy5BLUdycjdxTjl1YUEtSEtNT1NCbkxLICwoAQ%3D%3D", + "likeState": "TOOLBAR_LIKE_STATE_INDIFFERENT", + "heartState": "TOOLBAR_HEART_STATE_UNHEARTED" + } + } + } + ], + "timestamp": { "seconds": "1711994629", "nanos": 900081824 } + } + } +} From 490350fcfef16d25b9a1259ad76bd191f5e03423 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 2 Apr 2024 01:52:07 +0200 Subject: [PATCH 028/347] ci: dont run CI on pushed tags --- .gitea/workflows/ci.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml index 57a1d09..2f772b5 100644 --- a/.gitea/workflows/ci.yaml +++ b/.gitea/workflows/ci.yaml @@ -1,5 +1,8 @@ name: CI -on: [push, pull_request] +on: + push: + branches: ["main"] + pull_request: jobs: Test: From 449fc0128e04c55637e5fd2258913f80ca5660e9 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 2 Apr 2024 01:52:43 +0200 Subject: [PATCH 029/347] chore(release): release rustypipe v0.1.3 --- CHANGELOG.md | 10 ++++++++++ Cargo.toml | 2 +- README.md | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0bdd8d6..e33180d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,16 @@ All notable changes to this project will be documented in this file. +## [v0.1.3](https://code.thetadev.de/ThetaDev/rustypipe/compare/rustypipe/v0.1.2..v0.1.3) - 2024-04-01 + +### 🐛 Bug Fixes + +- Parse new comment model (A/B#14 frameworkUpdates) - ([b0331f7](https://code.thetadev.de/ThetaDev/rustypipe/commit/b0331f7250f5d7d61a45209150739d2cb08b4280)) + +### ◀️ Revert + +- "fix: improve VecLogErr messages" (leads to infinite loop) - ([348c852](https://code.thetadev.de/ThetaDev/rustypipe/commit/348c8523fe847f2f6ce98317375a7ab65e778ed2)) + ## [v0.1.2](https://code.thetadev.de/ThetaDev/rustypipe/compare/rustypipe/v0.1.1..v0.1.2) - 2024-03-26 ### 🐛 Bug Fixes diff --git a/Cargo.toml b/Cargo.toml index 3ef608c..c949a85 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe" -version = "0.1.2" +version = "0.1.3" edition.workspace = true authors.workspace = true license.workspace = true diff --git a/README.md b/README.md index daf3502..0f74703 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ Client for the public YouTube / YouTube Music API (Innertube), inspired by ```toml [dependencies] -rustypipe = "0.1.2" +rustypipe = "0.1.3" tokio = { version = "1.20.0", features = ["macros", "rt-multi-thread"] } ``` From b8825f9199365c873a4f0edd98a435e986b8daa2 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 3 Apr 2024 03:28:13 +0200 Subject: [PATCH 030/347] feat: add text formatting (bold/italic/strikethrough) --- src/client/playlist.rs | 2 +- ...s__map_comments_20240401_frameworkupd.snap | 290 +++++++++++++++++- ...s__map_video_details_20221011_rec_isr.snap | 9 + src/model/richtext.rs | 195 +++++++++--- ...rializer__text__tests__split_text_cmp.snap | 50 +++ ...rializer__text__tests__styled_comment.snap | 74 +++++ ...text__tests__t_attributed_description.snap | 80 +++++ src/serializer/text.rs | 260 +++++++++++----- src/util/mod.rs | 12 +- testfiles/text/styled_comment.json | 31 ++ 10 files changed, 858 insertions(+), 145 deletions(-) create mode 100644 src/serializer/snapshots/rustypipe__serializer__text__tests__split_text_cmp.snap create mode 100644 src/serializer/snapshots/rustypipe__serializer__text__tests__styled_comment.snap create mode 100644 testfiles/text/styled_comment.json diff --git a/src/client/playlist.rs b/src/client/playlist.rs index bb3c80e..ce198f5 100644 --- a/src/client/playlist.rs +++ b/src/client/playlist.rs @@ -156,7 +156,7 @@ impl MapResponse for response::Playlist { header .playlist_header_renderer .description_text - .map(|text| TextComponents(vec![TextComponent::Text { text }])) + .map(|text| TextComponents(vec![TextComponent::new(text)])) }) .map(RichText::from); let channel = header 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 df3aedb..9248fb4 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 @@ -9,7 +9,34 @@ Paginator( id: "UgyNTT8uxDEjgYqybIF4AaABAg", text: RichText([ Text( - text: "⚠\u{fe0f} Important notice: if you put any symbol immediately after markup, it will not work: *here is the comma*, without space.\n\nYou should leave space before and after , to make it work.\n\nSame for _underscore_, and -hyphen-.\n\nLeave space before opening and after closing underscore and hyphen. Put all dots and commas inside markup.", + text: "⚠\u{fe0f} Important notice: if you put any symbol immediately after markup, it will not work: *here is the comma*, without space.\n\nYou should ", + ), + Text( + text: "leave space before and after", + style: Style( + bold: true, + ), + ), + Text( + text: " , to make it work.\n\nSame for _underscore_, and -hyphen-.\n\nLeave space before opening and after closing ", + ), + Text( + text: "underscore", + style: Style( + italic: true, + ), + ), + Text( + text: " and ", + ), + Text( + text: "hyphen.", + style: Style( + strikethrough: true, + ), + ), + Text( + text: " Put all dots and commas inside markup.", ), ]), author: Some(ChannelTag( @@ -43,7 +70,28 @@ Paginator( id: "UgycWgNOoon0A4EV9LZ4AaABAg", text: RichText([ Text( - text: "Me: tests out fonts\nFriend: Why are you doing this?\nMe: my goals are beyond your understanding", + text: "Me: tests out fonts", + style: Style( + bold: true, + ), + ), + Text( + text: "\nFriend: ", + ), + Text( + text: "Why are you doing this?", + style: Style( + bold: true, + ), + ), + Text( + text: "\nMe: ", + ), + Text( + text: "my goals are beyond your understanding", + style: Style( + italic: true, + ), ), ]), author: Some(ChannelTag( @@ -77,7 +125,31 @@ Paginator( id: "Ugy5iq4M1c3WS3lGmih4AaABAg", text: RichText([ Text( - text: "To-do list\n• be dumb\n• get kicked out when i can legally live alone\n• spend money on pointless things", + text: "To-do list\n• ", + ), + Text( + text: "be dumb", + style: Style( + strikethrough: true, + ), + ), + Text( + text: "\n• ", + ), + Text( + text: "get kicked out when i can legally live alone", + style: Style( + strikethrough: true, + ), + ), + Text( + text: "\n• ", + ), + Text( + text: "spend money on pointless things", + style: Style( + strikethrough: true, + ), ), ]), author: Some(ChannelTag( @@ -111,7 +183,31 @@ Paginator( id: "UgxqDIVVcoigjtx4Dtl4AaABAg", text: RichText([ Text( - text: "omg thank you! Ive been looking for this tutorial for a year forever", + text: "omg ", + ), + Text( + text: "thank", + style: Style( + italic: true, + ), + ), + Text( + text: " you! Ive been looking for this tutorial for a ", + ), + Text( + text: "year", + style: Style( + strikethrough: true, + ), + ), + Text( + text: " ", + ), + Text( + text: "forever", + style: Style( + bold: true, + ), ), ]), author: Some(ChannelTag( @@ -145,7 +241,28 @@ Paginator( id: "UgxDQfVQdYaWR-VUM-94AaABAg", text: RichText([ Text( - text: "tysm\ni finally learned it\nother channel never go straight to the point", + text: "tysm", + style: Style( + bold: true, + ), + ), + Text( + text: "\n", + ), + Text( + text: "i finally learned it", + style: Style( + italic: true, + ), + ), + Text( + text: "\n", + ), + Text( + text: "other channel never go straight to the point", + style: Style( + strikethrough: true, + ), ), ]), author: Some(ChannelTag( @@ -179,7 +296,28 @@ Paginator( id: "UgxFvrmwec-jmfQyGRR4AaABAg", text: RichText([ Text( - text: "I like how this was straight to the point. Unlike other channels lol Thank you!", + text: "I like how this was straight to the point.", + style: Style( + italic: true, + ), + ), + Text( + text: " ", + ), + Text( + text: "Unlike other channels lol", + style: Style( + strikethrough: true, + ), + ), + Text( + text: " ", + ), + Text( + text: "Thank you!", + style: Style( + bold: true, + ), ), ]), author: Some(ChannelTag( @@ -213,7 +351,13 @@ Paginator( id: "Ugy-3OYEcwxkvyrrCqN4AaABAg", text: RichText([ Text( - text: "To the person who is reading this: You\'re intelligent and smart, stay safe", + text: "To the person who is reading this: ", + ), + Text( + text: "You\'re intelligent and smart, stay safe", + style: Style( + bold: true, + ), ), ]), author: Some(ChannelTag( @@ -247,7 +391,17 @@ Paginator( id: "Ugylw3ss_xv9svWbRud4AaABAg", text: RichText([ Text( - text: "‘ life could be a dream, life could be a dream ‘", + text: "‘ ", + ), + Text( + text: "life could be a dream, life could be a dream", + style: Style( + bold: true, + italic: true, + ), + ), + Text( + text: " ‘", ), ]), author: Some(ChannelTag( @@ -281,7 +435,28 @@ Paginator( id: "UgydXobRB0F5dW1KVsF4AaABAg", text: RichText([ Text( - text: "Woah! thank you for showing me this I really needed it!", + text: "Woah!", + style: Style( + bold: true, + ), + ), + Text( + text: " ", + ), + Text( + text: "thank you for showing me this", + style: Style( + strikethrough: true, + ), + ), + Text( + text: " ", + ), + Text( + text: "I really needed it!", + style: Style( + italic: true, + ), ), ]), author: Some(ChannelTag( @@ -316,6 +491,9 @@ Paginator( text: RichText([ Text( text: "The fitness gram pacer test is a multistage aerobic capacity test that progressively gets more difficult as it continues.", + style: Style( + bold: true, + ), ), ]), author: Some(ChannelTag( @@ -384,6 +562,9 @@ Paginator( text: RichText([ Text( text: "omg it works i actuallly cant believe this ive been wanting to do this for ages thankyou so much!", + style: Style( + strikethrough: true, + ), ), ]), author: Some(ChannelTag( @@ -485,7 +666,13 @@ Paginator( id: "UgyfuG2sCDvgnRUYHJp4AaABAg", text: RichText([ Text( - text: "me: types bold\n\nHaruTutorial: your bald", + text: "me: types bold\n\nHaruTutorial: ", + ), + Text( + text: "your bald", + style: Style( + bold: true, + ), ), ]), author: Some(ChannelTag( @@ -520,6 +707,9 @@ Paginator( text: RichText([ Text( text: "the McDonald’s don’t feel like turning the Icecream machine on", + style: Style( + italic: true, + ), ), ]), author: Some(ChannelTag( @@ -554,6 +744,11 @@ Paginator( text: RichText([ Text( text: "YOOO THIS IS SICK! THANK YOU MAN!", + style: Style( + bold: true, + italic: true, + strikethrough: true, + ), ), ]), author: Some(ChannelTag( @@ -587,7 +782,46 @@ Paginator( id: "UgxnFMLrpvbCWzHidml4AaABAg", text: RichText([ Text( - text: "Someone must honor him , this man is the best , no , he is a LEGEND . We must all thank him for his video and for getting to the point immediately.", + text: "Someone must honor him", + style: Style( + bold: true, + ), + ), + Text( + text: " , this man is ", + ), + Text( + text: "the best", + style: Style( + strikethrough: true, + ), + ), + Text( + text: " , no , he is a ", + ), + Text( + text: "LEGEND", + style: Style( + bold: true, + ), + ), + Text( + text: " . ", + ), + Text( + text: "We must all thank him for his video", + style: Style( + italic: true, + ), + ), + Text( + text: " and for ", + ), + Text( + text: "getting to the point immediately.", + style: Style( + bold: true, + ), ), ]), author: Some(ChannelTag( @@ -621,7 +855,13 @@ Paginator( id: "UgwCIwmF6synP7UF_wV4AaABAg", text: RichText([ Text( - text: "Never gonna give you up. Im gonna let u down", + text: "Never gonna give you up.", + style: Style( + bold: true, + ), + ), + Text( + text: " Im gonna let u down", ), ]), author: Some(ChannelTag( @@ -655,7 +895,31 @@ Paginator( id: "Ugyb5Wy91Yon69o3wLh4AaABAg", text: RichText([ Text( - text: "Thank you for being A Legend No, The Goat Lets go dude", + text: "Thank you for being ", + ), + Text( + text: "A Legend", + style: Style( + strikethrough: true, + ), + ), + Text( + text: " No, ", + ), + Text( + text: "The Goat", + style: Style( + bold: true, + ), + ), + Text( + text: " ", + ), + Text( + text: "Lets go dude", + style: Style( + italic: true, + ), ), ]), author: Some(ChannelTag( 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 4cfe502..b91086b 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 @@ -95,6 +95,9 @@ VideoDetails( ), Text( text: "-------------------------------------------------", + style: Style( + strikethrough: true, + ), ), Text( text: " \nTwitter: ", @@ -136,6 +139,9 @@ VideoDetails( ), Text( text: "-------------------------------------------------", + style: Style( + strikethrough: true, + ), ), Text( text: "\nIntro: Laszlo - Supernova\nVideo Link: ", @@ -218,6 +224,9 @@ VideoDetails( ), Text( text: "-------------------------------------------------", + style: Style( + strikethrough: true, + ), ), Text( text: "\n", diff --git a/src/model/richtext.rs b/src/model/richtext.rs index aeb81fc..93ef5af 100644 --- a/src/model/richtext.rs +++ b/src/model/richtext.rs @@ -19,6 +19,9 @@ pub enum TextComponent { Text { /// Plain text text: String, + /// Text styling + #[serde(default, skip_serializing_if = "Style::is_unstyled")] + style: Style, }, /// Web link Web { @@ -36,6 +39,78 @@ pub enum TextComponent { }, } +/// Text styling +#[derive(Default, Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] +#[serde(default)] +#[non_exhaustive] +pub struct Style { + /// **Bold** + /// + /// - HTML: `Text` + /// - Markdown: `**Text**` + #[serde(skip_serializing_if = "std::ops::Not::not")] + pub bold: bool, + /// *Italic* + /// + /// - HTML: `Text` + /// - Markdown: `*Text*` + #[serde(skip_serializing_if = "std::ops::Not::not")] + pub italic: bool, + /// ~~Strikethrough~~ + /// + /// - HTML: `Text` + /// - Markdown: `~~Text~~` + #[serde(skip_serializing_if = "std::ops::Not::not")] + pub strikethrough: bool, +} + +impl Style { + /// Return true if the text is styled (bold/italic/strikethrough) + pub fn is_styled(&self) -> bool { + self.bold || self.italic || self.strikethrough + } + + fn is_unstyled(&self) -> bool { + !self.is_styled() + } + + fn html_open(&self, s: &mut String) { + if self.bold { + s.push_str(""); + } + if self.italic { + s.push_str(""); + } + if self.strikethrough { + s.push_str(""); + } + } + + fn html_close(&self, s: &mut String) { + if self.bold { + s.push_str(""); + } + if self.italic { + s.push_str(""); + } + if self.strikethrough { + s.push_str(""); + } + } + + fn md_tag(&self, s: &mut String) { + if self.bold { + s.push_str("**"); + } + if self.italic { + s.push('*'); + } + if self.strikethrough { + s.push_str("~~"); + } + } +} + /// Trait for converting rich text to plain text. pub trait ToPlaintext { /// Convert rich text to plain text. @@ -83,7 +158,7 @@ impl TextComponent { /// Get the text from the component pub fn get_text(&self) -> &str { match self { - TextComponent::Text { text } + TextComponent::Text { text, .. } | TextComponent::Web { text, .. } | TextComponent::YouTube { text, .. } => text, } @@ -104,7 +179,7 @@ impl TextComponent { impl ToPlaintext for TextComponent { fn to_plaintext_yt_host(&self, yt_host: &str) -> String { match self { - TextComponent::Text { text } => text.clone(), + TextComponent::Text { text, .. } => text.clone(), _ => self.get_url(yt_host), } } @@ -113,7 +188,13 @@ impl ToPlaintext for TextComponent { impl ToHtml for TextComponent { fn to_html_yt_host(&self, yt_host: &str) -> String { match self { - TextComponent::Text { text } => util::escape_html(text), + TextComponent::Text { text, style } => { + let mut html = String::with_capacity(text.len()); + style.html_open(&mut html); + util::escape_html_append(text, &mut html); + style.html_close(&mut html); + html + } TextComponent::Web { text, .. } => { format!( r#"{}"#, @@ -135,7 +216,13 @@ impl ToHtml for TextComponent { impl ToMarkdown for TextComponent { fn to_markdown_yt_host(&self, yt_host: &str) -> String { match self { - TextComponent::Text { text } => util::escape_markdown(text), + TextComponent::Text { text, style } => { + let mut md = String::with_capacity(text.len()); + style.md_tag(&mut md); + util::escape_markdown_append(text, &mut md); + style.md_tag(&mut md); + md + } TextComponent::Web { text, .. } | TextComponent::YouTube { text, .. } => { format!( "[{}]({})", @@ -175,6 +262,7 @@ impl ToMarkdown for RichText { mod tests { use super::*; + use insta::assert_snapshot; use once_cell::sync::Lazy; use crate::client::response::url_endpoint::MusicVideoType; @@ -182,37 +270,47 @@ mod tests { static TEXT_SOURCE: Lazy = Lazy::new(|| { text::TextComponents(vec![ - text::TextComponent::Text { text: "🎧Listen and download aespa's debut single \"Black Mamba\": ".to_owned() }, + text::TextComponent::new("🎧Listen and download aespa's debut single \"Black Mamba\": "), text::TextComponent::Web { text: "https://smarturl.it/aespa_BlackMamba".to_owned(), url: "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbFY1QmpQamJPSms0Z1FnVTlQUS00ZFhBZnBJZ3xBQ3Jtc0tuRGJBanludGoyRnphb2dZWVd3cUNnS3dEd0FnNHFOZEY1NHBJaHFmLXpaWUJwX3ZucDZxVnpGeHNGX1FpMzFkZW9jQkI2Mi1wNGJ1UVFNN3h1MnN3R3JLMzdxU01nZ01POHBGcmxHU2puSUk1WHRzQQ&q=https%3A%2F%2Fsmarturl.it%2Faespa_BlackMamba&v=ZeerrnuLi5E".to_owned() }, - text::TextComponent::Text { text: "\n🐍The Debut Stage ".to_owned() }, + text::TextComponent::new("\n🐍The Debut Stage "), text::TextComponent::Video { text: "https://youtu.be/Ky5RT5oGg0w".to_owned(), video_id: "Ky5RT5oGg0w".to_owned(), start_time: 0, vtype: MusicVideoType::Video }, - text::TextComponent::Text { text: "\n\n🎟️ aespa Showcase SYNK in LA! Tickets now on sale: ".to_owned() }, + text::TextComponent::new("\n\n🎟️ aespa Showcase SYNK in LA! Tickets now on sale: "), text::TextComponent::Web { text: "https://www.ticketmaster.com/event/0A...".to_owned(), url: "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbFpUMEZiaXJWWkszaVZXaEM0emxWU1JQV3NoQXxBQ3Jtc0tuU2g4VWNPNE5UY3hoSWYtamFzX0h4bUVQLVJiRy1ubDZrTnh3MUpGdDNSaUo0ZlMyT3lUM28ycUVBdHJLMndGcDhla3BkOFpxSVFfOS1QdVJPVHBUTEV1LXpOV0J2QXdhV05lV210cEJtZUJMeHdaTQ&q=https%3A%2F%2Fwww.ticketmaster.com%2Fevent%2F0A005CCD9E871F6E&v=ZeerrnuLi5E".to_owned() }, - text::TextComponent::Text { text: "\n\nSubscribe to aespa Official YouTube Channel!\n".to_owned() }, + text::TextComponent::new("\n\nSubscribe to aespa Official YouTube Channel!\n"), text::TextComponent::Web { text: "https://www.youtube.com/aespa?sub_con...".to_owned(), url: "https://www.youtube.com/aespa?sub_confirmation=1".to_owned() }, - text::TextComponent::Text { text: "\n\naespa official\n".to_owned() }, + text::TextComponent::new("\n\naespa official\n"), text::TextComponent::Web { text: "https://www.youtube.com/c/aespa".to_owned(), url: "https://www.youtube.com/c/aespa".to_owned() }, - text::TextComponent::Text { text: "\n".to_owned() }, + text::TextComponent::new("\n"), text::TextComponent::Web { text: "https://www.instagram.com/aespa_official".to_owned(), url: "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbmE4UXZBdFM4allpdUkwaGQ1SGFBTklKYVVaQXxBQ3Jtc0tsOVg3WTM2Y0t1eE5YUm5vZjNTVjM4bncxTl9JeFdWeGJlbDZJa3BqTXZDQUdzVndPR3ZpV2ZEOGMzZ1FsT21HMEp5UllpWVZVb3djYTVzNGNFaWlmbzhmTEVmQ0RiVUxMNUM4MDV3ZGt3SHhJM3pGSQ&q=https%3A%2F%2Fwww.instagram.com%2Faespa_official&v=ZeerrnuLi5E".to_owned() }, - text::TextComponent::Text { text: "\n".to_owned() }, + text::TextComponent::new("\n"), text::TextComponent::Web { text: "https://www.tiktok.com/@aespa_official".to_owned(), url: "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqa2hVUk9QQXZmMHk5ZkdEZnVKZXIyXzZvX09zZ3xBQ3Jtc0trZEhjd1lVc1NZMWs4TVY3UmpzdDhnX0lLYnZjekZqNUprWUpHV1ZOR2g0al84TlNLTEFjODktUWE3QUFFTlJ5RlpvOVNOWUdJXzF2ZHhzOHRTdGhlUG1OcmhZVkMtazBzYXJqNFVUYVBKUVI1ZzB4VQ&q=https%3A%2F%2Fwww.tiktok.com%2F%40aespa_official&v=ZeerrnuLi5E".to_owned() }, - text::TextComponent::Text { text: "\n".to_owned() }, + text::TextComponent::new("\n"), text::TextComponent::Web { text: "https://twitter.com/aespa_Official".to_owned(), url: "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbWFlRFFWWVpMeFRzU08ySWhJWVl0RUJpZzIxZ3xBQ3Jtc0tsekJiMUI4Zk1QdENObWpLZVppdk1nRVBkamJmX21VNGxaYjdUTEdoREx4Z3pWTm0wVHg4MWNTVmdxakNJT3VQQk5tSDVnZkNJZkhQSTF1d0ZEX3g0RUVDWjFjVzA1ZzVsTEVvMW5ISTdaZU1xYjhXSQ&q=https%3A%2F%2Ftwitter.com%2Faespa_Official&v=ZeerrnuLi5E".to_owned() }, - text::TextComponent::Text { text: "\n".to_owned() }, + text::TextComponent::new("\n"), text::TextComponent::Web { text: "https://www.facebook.com/aespa.official".to_owned(), url: "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbWJxUWVETWNwM0ltc0JYXzBjQ1h5dmQ2OXNzUXxBQ3Jtc0ttVy1JRHV2VVpUOUtDdUZTU0tROEtLX1k0bVFFNTdoZVpIUDhDbTkydmRmY2diR3RlQmlON1Y4NURsaU1YcTRKLXBzeGdkWWY1d0R3MzhMYXl6cE1OM0hMcEpkdXZvVXItQzRhMTVqVU1ySk93UG9Ydw&q=https%3A%2F%2Fwww.facebook.com%2Faespa.official&v=ZeerrnuLi5E".to_owned() }, - text::TextComponent::Text { text: "\n".to_owned() }, + text::TextComponent::new("\n"), text::TextComponent::Web { text: "https://weibo.com/aespa".to_owned(), url: "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbUZFOVFFSEtTRkU5LXluWk9uTVRHbU5tN2JGd3xBQ3Jtc0ttR003eUM4ZVBVM3JPdjdJMnZwRXpxZmJMMkhFbHYtbklJUG9LYXh5VHBXalgyWTZwc3RqcGlhT2JIR0RlNVpWUEpBajZ0X2d5ZkxEZUUyQmF4bE13NjhEdDZOak9saHdnb25qdnB3dnRiYmplbkY0MA&q=https%3A%2F%2Fweibo.com%2Faespa&v=ZeerrnuLi5E".to_owned() }, - text::TextComponent::Text { text: "\n\n".to_owned() }, - text::TextComponent::Text { text: "#aespa".to_owned() }, - text::TextComponent::Text { text: " ".to_owned() }, - text::TextComponent::Text { text: "#æspa".to_owned() }, - text::TextComponent::Text { text: " ".to_owned() }, - text::TextComponent::Text { text: "#BlackMamba".to_owned() }, - text::TextComponent::Text { text: " ".to_owned() }, - text::TextComponent::Text { text: "#블랙맘바".to_owned() }, - text::TextComponent::Text { text: " ".to_owned() }, - text::TextComponent::Text { text: "#에스파".to_owned() }, - text::TextComponent::Text { text: "\naespa 에스파 'Black Mamba' MV ℗ SM Entertainment".to_owned() }, + text::TextComponent::new("\n\n"), + text::TextComponent::new("#aespa"), + text::TextComponent::new(" "), + text::TextComponent::new("#æspa"), + text::TextComponent::new(" "), + text::TextComponent::new("#BlackMamba"), + text::TextComponent::new(" "), + text::TextComponent::new("#블랙맘바"), + text::TextComponent::new(" "), + text::TextComponent::new("#에스파"), + text::TextComponent::new("\naespa 에스파 'Black Mamba' MV ℗ SM Entertainment"), + text::TextComponent::new("\n\n"), + + text::TextComponent::new("Bold: "), + text::TextComponent::Text { text: "Awesome".to_owned(), style: Style { bold: true, italic: false, strikethrough: false } }, + text::TextComponent::new("\nItalic: "), + text::TextComponent::Text { text: "Great".to_owned(), style: Style { bold: false, italic: true, strikethrough: false } }, + text::TextComponent::new("\nStrikethrough: "), + text::TextComponent::Text { text: "Gone".to_owned(), style: Style { bold: false, italic: false, strikethrough: true } }, + text::TextComponent::new("\nMixed: "), + text::TextComponent::Text { text: "Everything".to_owned(), style: Style { bold: true, italic: true, strikethrough: true } }, ]) }); @@ -220,36 +318,41 @@ mod tests { fn to_plaintext() { let richtext = RichText::from(TEXT_SOURCE.clone()); let plaintext = richtext.to_plaintext_yt_host("https://piped.kavin.rocks"); - assert_eq!( - plaintext, - r#"🎧Listen and download aespa's debut single "Black Mamba": https://smarturl.it/aespa_BlackMamba -🐍The Debut Stage https://piped.kavin.rocks/watch?v=Ky5RT5oGg0w -🎟️ aespa Showcase SYNK in LA! Tickets now on sale: https://www.ticketmaster.com/event/0A005CCD9E871F6E + assert_snapshot!(plaintext, @r###" + 🎧Listen and download aespa's debut single "Black Mamba": https://smarturl.it/aespa_BlackMamba + 🐍The Debut Stage https://piped.kavin.rocks/watch?v=Ky5RT5oGg0w -Subscribe to aespa Official YouTube Channel! -https://www.youtube.com/aespa?sub_confirmation=1 + 🎟️ aespa Showcase SYNK in LA! Tickets now on sale: https://www.ticketmaster.com/event/0A005CCD9E871F6E -aespa official -https://www.youtube.com/c/aespa -https://www.instagram.com/aespa_official -https://www.tiktok.com/@aespa_official -https://twitter.com/aespa_Official -https://www.facebook.com/aespa.official -https://weibo.com/aespa + Subscribe to aespa Official YouTube Channel! + https://www.youtube.com/aespa?sub_confirmation=1 -#aespa #æspa #BlackMamba #블랙맘바 #에스파 -aespa 에스파 'Black Mamba' MV ℗ SM Entertainment"# - ); + aespa official + https://www.youtube.com/c/aespa + https://www.instagram.com/aespa_official + https://www.tiktok.com/@aespa_official + https://twitter.com/aespa_Official + https://www.facebook.com/aespa.official + https://weibo.com/aespa + + #aespa #æspa #BlackMamba #블랙맘바 #에스파 + aespa 에스파 'Black Mamba' MV ℗ SM Entertainment + + Bold: Awesome + Italic: Great + Strikethrough: Gone + Mixed: Everything + "###); } #[test] fn to_html() { let richtext = RichText::from(TEXT_SOURCE.clone()); let html = richtext.to_html_yt_host("https://piped.kavin.rocks"); - assert_eq!( + assert_snapshot!( html, - "🎧Listen and download aespa's debut single "Black Mamba": https://smarturl.it/aespa_BlackMamba
🐍The Debut Stage https://youtu.be/Ky5RT5oGg0w

🎟\u{fe0f} aespa Showcase SYNK in LA! Tickets now on sale: https://www.ticketmaster.com/event/0A...

Subscribe to aespa Official YouTube Channel!
https://www.youtube.com/aespa?sub_con...

aespa official
https://www.youtube.com/c/aespa
https://www.instagram.com/aespa_official
https://www.tiktok.com/@aespa_official
https://twitter.com/aespa_Official
https://www.facebook.com/aespa.official
https://weibo.com/aespa

#aespa #æspa #BlackMamba #블랙맘바 #에스파
aespa 에스파 'Black Mamba' MV ℗ SM Entertainment" + @r###"🎧Listen and download aespa's debut single "Black Mamba": https://smarturl.it/aespa_BlackMamba
🐍The Debut Stage https://youtu.be/Ky5RT5oGg0w

🎟️ aespa Showcase SYNK in LA! Tickets now on sale: https://www.ticketmaster.com/event/0A...

Subscribe to aespa Official YouTube Channel!
https://www.youtube.com/aespa?sub_con...

aespa official
https://www.youtube.com/c/aespa
https://www.instagram.com/aespa_official
https://www.tiktok.com/@aespa_official
https://twitter.com/aespa_Official
https://www.facebook.com/aespa.official
https://weibo.com/aespa

#aespa #æspa #BlackMamba #블랙맘바 #에스파
aespa 에스파 'Black Mamba' MV ℗ SM Entertainment

Bold: Awesome
Italic: Great
Strikethrough: Gone
Mixed: Everything"### ); } @@ -258,9 +361,9 @@ aespa 에스파 'Black Mamba' MV ℗ SM Entertainment"# let richtext = RichText::from(TEXT_SOURCE.clone()); let markdown = richtext.to_markdown_yt_host("https://piped.kavin.rocks"); println!("{markdown}"); - assert_eq!( + assert_snapshot!( markdown, - r#"🎧Listen and download aespa's debut single "Black Mamba"\: [https\://smarturl.it/aespa\_BlackMamba](https://smarturl.it/aespa_BlackMamba)
🐍The Debut Stage [https\://youtu.be/Ky5RT5oGg0w](https://piped.kavin.rocks/watch?v=Ky5RT5oGg0w)

🎟️ aespa Showcase SYNK in LA! Tickets now on sale\: [https\://www.ticketmaster.com/event/0A...](https://www.ticketmaster.com/event/0A005CCD9E871F6E)

Subscribe to aespa Official YouTube Channel!
[https\://www.youtube.com/aespa?sub\_con...](https://www.youtube.com/aespa?sub_confirmation=1)

aespa official
[https\://www.youtube.com/c/aespa](https://www.youtube.com/c/aespa)
[https\://www.instagram.com/aespa\_official](https://www.instagram.com/aespa_official)
[https\://www.tiktok.com/@aespa\_official](https://www.tiktok.com/@aespa_official)
[https\://twitter.com/aespa\_Official](https://twitter.com/aespa_Official)
[https\://www.facebook.com/aespa.official](https://www.facebook.com/aespa.official)
[https\://weibo.com/aespa](https://weibo.com/aespa)

\#aespa \#æspa \#BlackMamba \#블랙맘바 \#에스파
aespa 에스파 'Black Mamba' MV ℗ SM Entertainment"# + @r###"🎧Listen and download aespa's debut single "Black Mamba"\: [https\://smarturl.it/aespa\_BlackMamba](https://smarturl.it/aespa_BlackMamba)
🐍The Debut Stage [https\://youtu.be/Ky5RT5oGg0w](https://piped.kavin.rocks/watch?v=Ky5RT5oGg0w)

🎟️ aespa Showcase SYNK in LA! Tickets now on sale\: [https\://www.ticketmaster.com/event/0A...](https://www.ticketmaster.com/event/0A005CCD9E871F6E)

Subscribe to aespa Official YouTube Channel!
[https\://www.youtube.com/aespa?sub\_con...](https://www.youtube.com/aespa?sub_confirmation=1)

aespa official
[https\://www.youtube.com/c/aespa](https://www.youtube.com/c/aespa)
[https\://www.instagram.com/aespa\_official](https://www.instagram.com/aespa_official)
[https\://www.tiktok.com/@aespa\_official](https://www.tiktok.com/@aespa_official)
[https\://twitter.com/aespa\_Official](https://twitter.com/aespa_Official)
[https\://www.facebook.com/aespa.official](https://www.facebook.com/aespa.official)
[https\://weibo.com/aespa](https://weibo.com/aespa)

\#aespa \#æspa \#BlackMamba \#블랙맘바 \#에스파
aespa 에스파 'Black Mamba' MV ℗ SM Entertainment

Bold\: **Awesome**
Italic\: *Great*
Strikethrough\: ~~Gone~~
Mixed\: ***~~Everything***~~"### ); } } diff --git a/src/serializer/snapshots/rustypipe__serializer__text__tests__split_text_cmp.snap b/src/serializer/snapshots/rustypipe__serializer__text__tests__split_text_cmp.snap new file mode 100644 index 0000000..a5b6e05 --- /dev/null +++ b/src/serializer/snapshots/rustypipe__serializer__text__tests__split_text_cmp.snap @@ -0,0 +1,50 @@ +--- +source: src/serializer/text.rs +expression: split +--- +[ + TextComponents( + [ + Text { + text: "Hello", + style: Style { + bold: false, + italic: false, + strikethrough: false, + }, + }, + Text { + text: " World", + style: Style { + bold: false, + italic: false, + strikethrough: false, + }, + }, + ], + ), + TextComponents( + [ + Text { + text: "T2", + style: Style { + bold: false, + italic: false, + strikethrough: false, + }, + }, + ], + ), + TextComponents( + [ + Text { + text: "T3", + style: Style { + bold: false, + italic: false, + strikethrough: false, + }, + }, + ], + ), +] diff --git a/src/serializer/snapshots/rustypipe__serializer__text__tests__styled_comment.snap b/src/serializer/snapshots/rustypipe__serializer__text__tests__styled_comment.snap new file mode 100644 index 0000000..c90d4ac --- /dev/null +++ b/src/serializer/snapshots/rustypipe__serializer__text__tests__styled_comment.snap @@ -0,0 +1,74 @@ +--- +source: src/serializer/text.rs +expression: res +--- +SAttributed { + ln: TextComponents( + [ + Text { + text: "Bold: ", + style: Style { + bold: false, + italic: false, + strikethrough: false, + }, + }, + Text { + text: "Awesome", + style: Style { + bold: true, + italic: false, + strikethrough: false, + }, + }, + Text { + text: "\nItalic: ", + style: Style { + bold: false, + italic: false, + strikethrough: false, + }, + }, + Text { + text: "Great", + style: Style { + bold: false, + italic: true, + strikethrough: false, + }, + }, + Text { + text: "\nCut: ", + style: Style { + bold: false, + italic: false, + strikethrough: false, + }, + }, + Text { + text: "Dumb", + style: Style { + bold: false, + italic: false, + strikethrough: true, + }, + }, + Text { + text: "\n\nMixed: ", + style: Style { + bold: false, + italic: false, + strikethrough: false, + }, + }, + Text { + text: "Mixer", + style: Style { + bold: true, + italic: true, + strikethrough: true, + }, + }, + ], + ), +} 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 25c6179..c47814b 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 @@ -7,6 +7,11 @@ SAttributed { [ Text { text: "🎧Listen and download aespa's debut single \"Black Mamba\": ", + style: Style { + bold: false, + italic: false, + strikethrough: false, + }, }, Web { text: "https://smarturl.it/aespa_BlackMamba", @@ -14,6 +19,11 @@ SAttributed { }, Text { text: "\n🐍The Debut Stage ", + style: Style { + bold: false, + italic: false, + strikethrough: false, + }, }, Video { text: "aespa 에스파 'Black ...", @@ -23,6 +33,11 @@ SAttributed { }, Text { text: "\n\n🎟\u{fe0f} aespa Showcase SYNK in LA! Tickets now on sale: ", + style: Style { + bold: false, + italic: false, + strikethrough: false, + }, }, Web { text: "https://www.ticketmaster.com/event/0A...", @@ -30,6 +45,11 @@ SAttributed { }, Text { text: "\n\nSubscribe to aespa Official YouTube Channel!\n", + style: Style { + bold: false, + italic: false, + strikethrough: false, + }, }, Web { text: "https://www.youtube.com/aespa?sub_con...", @@ -37,6 +57,11 @@ SAttributed { }, Text { text: "\n\naespa official\n", + style: Style { + bold: false, + italic: false, + strikethrough: false, + }, }, Web { text: "aespa", @@ -44,6 +69,11 @@ SAttributed { }, Text { text: "\n", + style: Style { + bold: false, + italic: false, + strikethrough: false, + }, }, Web { text: "https://www.instagram.com/aespa_official", @@ -51,6 +81,11 @@ SAttributed { }, Text { text: "\n", + style: Style { + bold: false, + italic: false, + strikethrough: false, + }, }, Web { text: "https://www.tiktok.com/@aespa_official", @@ -58,6 +93,11 @@ SAttributed { }, Text { text: "\n", + style: Style { + bold: false, + italic: false, + strikethrough: false, + }, }, Web { text: "https://twitter.com/aespa_Official", @@ -65,6 +105,11 @@ SAttributed { }, Text { text: "\n", + style: Style { + bold: false, + italic: false, + strikethrough: false, + }, }, Web { text: "https://www.facebook.com/aespa.official", @@ -72,6 +117,11 @@ SAttributed { }, Text { text: "\n", + style: Style { + bold: false, + italic: false, + strikethrough: false, + }, }, Web { text: "https://weibo.com/aespa", @@ -79,6 +129,11 @@ SAttributed { }, Text { text: "\n\n", + style: Style { + bold: false, + italic: false, + strikethrough: false, + }, }, Browse { text: "#aespa", @@ -87,6 +142,11 @@ SAttributed { }, Text { text: " ", + style: Style { + bold: false, + italic: false, + strikethrough: false, + }, }, Browse { text: "#æspa", @@ -95,6 +155,11 @@ SAttributed { }, Text { text: " ", + style: Style { + bold: false, + italic: false, + strikethrough: false, + }, }, Browse { text: "#BlackMamba", @@ -103,6 +168,11 @@ SAttributed { }, Text { text: " ", + style: Style { + bold: false, + italic: false, + strikethrough: false, + }, }, Browse { text: "#블랙맘바", @@ -111,6 +181,11 @@ SAttributed { }, Text { text: " ", + style: Style { + bold: false, + italic: false, + strikethrough: false, + }, }, Browse { text: "#에스파", @@ -119,6 +194,11 @@ SAttributed { }, Text { text: "\naespa 에스파 'Black Mamba' MV ℗ SM Entertainment", + style: Style { + bold: false, + italic: false, + strikethrough: false, + }, }, ], ), diff --git a/src/serializer/text.rs b/src/serializer/text.rs index 5fbe692..6f4cd5b 100644 --- a/src/serializer/text.rs +++ b/src/serializer/text.rs @@ -9,7 +9,7 @@ use crate::{ client::response::url_endpoint::{ MusicPage, MusicPageType, MusicVideoType, NavigationEndpoint, PageType, }, - model::UrlTarget, + model::{richtext::Style, UrlTarget}, util, }; @@ -110,6 +110,7 @@ pub(crate) enum TextComponent { }, Text { text: String, + style: Style, }, } @@ -130,6 +131,12 @@ struct RichTextRun { #[serde(default)] #[serde_as(as = "DefaultOnError")] navigation_endpoint: Option, + #[serde(default)] + bold: bool, + #[serde(default)] + italic: bool, + #[serde(default)] + strikethrough: bool, } /// This is a new rich text representation format that YouTube is A/B testing @@ -142,31 +149,117 @@ pub(crate) struct AttributedText { content: String, #[serde(default)] #[serde_as(as = "VecSkipError<_>")] - command_runs: Vec, + command_runs: Vec, + #[serde(default)] + #[serde_as(as = "VecSkipError<_>")] + style_runs: Vec, } #[derive(Deserialize)] #[serde(rename_all = "camelCase")] -struct AttributedTextRun { +struct CommandRun { start_index: usize, length: usize, on_tap: AttributedTextOnTap, } +#[derive(Deserialize)] +#[serde(rename_all = "camelCase")] +struct StyleRun { + start_index: usize, + length: usize, + #[serde(default)] + weight_label: WeightLabel, + #[serde(default)] + italic: bool, + #[serde(default)] + strikethrough: Strikethrough, +} + +#[derive(Default, Deserialize)] +#[serde(rename_all = "SCREAMING_SNAKE_CASE")] +enum WeightLabel { + FontWeightMedium, + #[default] + #[serde(other)] + FontWeightNormal, +} + +#[derive(Default, Deserialize)] +#[serde(rename_all = "SCREAMING_SNAKE_CASE")] +enum Strikethrough { + LineStyleSingle, + #[default] + #[serde(other)] + None, +} + #[derive(Deserialize)] #[serde(rename_all = "camelCase")] struct AttributedTextOnTap { innertube_command: NavigationEndpoint, } +struct AttributedTextRun { + start_index: usize, + length: usize, + content: AttributedTextRunContent, +} + +enum AttributedTextRunContent { + Link(NavigationEndpoint), + Style(Style), +} + impl From for TextComponent { fn from(run: RichTextRun) -> Self { - map_text_component(run.text, run.navigation_endpoint) + map_text_component( + run.text, + Style { + bold: run.bold, + italic: run.italic, + strikethrough: run.strikethrough, + }, + run.navigation_endpoint, + ) + } +} + +impl From for AttributedTextRun { + fn from(value: CommandRun) -> Self { + Self { + start_index: value.start_index, + length: value.length, + content: AttributedTextRunContent::Link(value.on_tap.innertube_command), + } + } +} + +impl StyleRun { + fn into_attributed_text_run(self) -> Option { + let style = Style { + bold: matches!(self.weight_label, WeightLabel::FontWeightMedium), + italic: self.italic, + strikethrough: matches!(self.strikethrough, Strikethrough::LineStyleSingle), + }; + if style.is_styled() { + Some(AttributedTextRun { + start_index: self.start_index, + length: self.length, + content: AttributedTextRunContent::Style(style), + }) + } else { + None + } } } /// Map a single component of a rich text -fn map_text_component(text: String, nav: Option) -> TextComponent { +fn map_text_component( + text: String, + style: Style, + nav: Option, +) -> TextComponent { match nav { Some(NavigationEndpoint::Watch { watch_endpoint }) => TextComponent::Video { text, @@ -185,7 +278,7 @@ fn map_text_component(text: String, nav: Option) -> TextComp Some(bc) => bc.browse_endpoint_context_music_config.page_type, None => match &command_metadata { Some(cm) => cm.web_command_metadata.web_page_type, - None => return TextComponent::Text { text }, + None => return TextComponent::Text { text, style }, }, }, text, @@ -202,7 +295,7 @@ fn map_text_component(text: String, nav: Option) -> TextComp page_type: PageType::Playlist, browse_id: watch_playlist_endpoint.playlist_id, }, - None => TextComponent::Text { text }, + None => TextComponent::Text { text, style }, } } @@ -267,37 +360,51 @@ impl<'de> DeserializeAs<'de, TextComponents> for AttributedText { buf }; - let mut components = Vec::with_capacity(text.command_runs.len() + 1); - text.command_runs.into_iter().for_each(|cmd| { - let txt_before = take_chars(cmd.start_index); - let txt_link = take_chars(cmd.start_index + cmd.length); + let mut runs = text + .command_runs + .into_iter() + .map(AttributedTextRun::from) + .collect::>(); + runs.extend( + text.style_runs + .into_iter() + .filter_map(StyleRun::into_attributed_text_run), + ); + runs.sort_by_key(|run| run.start_index); - // Trim link text: - // 3xnbsp, (/ •), nbsp, Name, 2xnbsp - // Channel: `\u{a0}\u{a0}\u{a0}/\u{a0}aespa\u{a0}\u{a0}` - // Video: `\u{a0}\u{a0}\u{a0}•\u{a0}aespa\u{a0}에스파\u{a0}'Black\u{a0}...\u{a0}\u{a0}` - - // Replace no-break spaces, trim off whitespace and prefix character - let txt_link = txt_link.trim(); - let txt_link = txt_link.replace('\u{a0}', " "); - - static LINK_PREFIX: Lazy = Lazy::new(|| Regex::new("^[/•] *").unwrap()); - let txt_link = LINK_PREFIX.replace(&txt_link, ""); + let mut components = Vec::with_capacity(runs.len() + 1); + for run in runs { + let txt_before = take_chars(run.start_index); + let txt_run = take_chars(run.start_index + run.length); if !txt_before.is_empty() { - components.push(TextComponent::Text { text: txt_before }); + components.push(TextComponent::new(txt_before)); } - components.push(map_text_component( - txt_link.to_string(), - Some(cmd.on_tap.innertube_command), - )); - }); + components.push(match run.content { + AttributedTextRunContent::Link(link) => { + // Trim link text: + // 3xnbsp, (/ •), nbsp, Name, 2xnbsp + // Channel: `\u{a0}\u{a0}\u{a0}/\u{a0}aespa\u{a0}\u{a0}` + // Video: `\u{a0}\u{a0}\u{a0}•\u{a0}aespa\u{a0}에스파\u{a0}'Black\u{a0}...\u{a0}\u{a0}` + + // Replace no-break spaces, trim off whitespace and prefix character + let txt_link = txt_run.trim(); + let txt_link = txt_link.replace('\u{a0}', " "); + + static LINK_PREFIX: Lazy = Lazy::new(|| Regex::new("^[/•] *").unwrap()); + let txt_link = LINK_PREFIX.replace(&txt_link, ""); + + map_text_component(txt_link.to_string(), Style::default(), Some(link)) + } + AttributedTextRunContent::Style(style) => { + map_text_component(txt_run.to_string(), style, None) + } + }) + } let end = chars.as_str(); if !end.is_empty() { - components.push(TextComponent::Text { - text: end.to_owned(), - }); + components.push(TextComponent::new(end)); } Ok(TextComponents(components)) @@ -376,7 +483,7 @@ impl From for crate::model::ArtistId { }, TextComponent::Video { text, .. } | TextComponent::Web { text, .. } - | TextComponent::Text { text } => Self { + | TextComponent::Text { text, .. } => Self { id: None, name: text, }, @@ -405,13 +512,16 @@ impl From for crate::model::richtext::TextComponent { browse_id, } => match page_type.to_url_target(browse_id) { Some(target) => Self::YouTube { text, target }, - None => Self::Text { text }, + None => Self::Text { + text, + style: Default::default(), + }, }, TextComponent::Web { text, url } => Self::Web { text, url: util::sanitize_yt_url(&url), }, - TextComponent::Text { text } => Self::Text { text }, + TextComponent::Text { text, style } => Self::Text { text, style }, } } } @@ -423,12 +533,19 @@ impl From for crate::model::richtext::RichText { } impl TextComponent { + pub fn new>(s: S) -> Self { + Self::Text { + text: s.into(), + style: Style::default(), + } + } + pub fn as_str(&self) -> &str { match self { TextComponent::Video { text, .. } | TextComponent::Browse { text, .. } | TextComponent::Web { text, .. } - | TextComponent::Text { text } => text, + | TextComponent::Text { text, .. } => text, } } @@ -456,7 +573,7 @@ impl From for String { TextComponent::Video { text, .. } | TextComponent::Browse { text, .. } | TextComponent::Web { text, .. } - | TextComponent::Text { text } => text, + | TextComponent::Text { text, .. } => text, } } } @@ -732,6 +849,11 @@ mod tests { SLink { ln: Text { text: "Hello World", + style: Style { + bold: false, + italic: false, + strikethrough: false, + }, }, } "###); @@ -823,6 +945,11 @@ mod tests { }, Text { text: " & ", + style: Style { + bold: false, + italic: false, + strikethrough: false, + }, }, Browse { text: "Maite Kelly", @@ -851,57 +978,26 @@ mod tests { insta::assert_debug_snapshot!(res); } + #[test] + fn styled_comment() { + let json_path = path!(*TESTFILES / "text" / "styled_comment.json"); + let json_file = File::open(json_path).unwrap(); + let res: SAttributed = serde_json::from_reader(BufReader::new(json_file)).unwrap(); + insta::assert_debug_snapshot!(res); + } + #[test] fn split_text_cmp() { let text = TextComponents(vec![ - TextComponent::Text { - text: "Hello".to_owned(), - }, - TextComponent::Text { - text: " World".to_owned(), - }, - TextComponent::Text { - text: util::DOT_SEPARATOR.to_owned(), - }, - TextComponent::Text { - text: "T2".to_owned(), - }, - TextComponent::Text { - text: util::DOT_SEPARATOR.to_owned(), - }, - TextComponent::Text { - text: "T3".to_owned(), - }, + TextComponent::new("Hello"), + TextComponent::new(" World"), + TextComponent::new(util::DOT_SEPARATOR), + TextComponent::new("T2"), + TextComponent::new(util::DOT_SEPARATOR), + TextComponent::new("T3"), ]); let split = text.split(util::DOT_SEPARATOR); - insta::assert_debug_snapshot!(split, @r###" - [ - TextComponents( - [ - Text { - text: "Hello", - }, - Text { - text: " World", - }, - ], - ), - TextComponents( - [ - Text { - text: "T2", - }, - ], - ), - TextComponents( - [ - Text { - text: "T3", - }, - ], - ), - ] - "###); + insta::assert_debug_snapshot!(split); } } diff --git a/src/util/mod.rs b/src/util/mod.rs index 34d09ac..d11c66c 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -327,7 +327,7 @@ impl TryRemove for Vec { /// Check if a channel name equals "YouTube Music" /// (the author of original YouTube music playlists) pub(crate) fn is_ytm(text: &TextComponent) -> bool { - if let TextComponent::Text { text } = text { + if let TextComponent::Text { text, .. } = text { text.starts_with("YouTube") } else { false @@ -422,7 +422,11 @@ where /// Replace all html control characters to make a string safe for inserting into HTML. pub fn escape_html(input: &str) -> String { let mut buf = String::with_capacity(input.len()); + escape_html_append(input, &mut buf); + buf +} +pub fn escape_html_append(input: &str, buf: &mut String) { for c in input.chars() { match c { '<' => buf.push_str("<"), @@ -434,14 +438,17 @@ pub fn escape_html(input: &str) -> String { _ => buf.push(c), }; } - buf } /// Replace all markdown control characters to make a string safe for /// inserting into Markdown. pub fn escape_markdown(input: &str) -> String { let mut buf = String::with_capacity(input.len()); + escape_markdown_append(input, &mut buf); + buf +} +pub fn escape_markdown_append(input: &str, buf: &mut String) { for c in input.chars() { match c { '<' => buf.push_str("<"), @@ -455,7 +462,6 @@ pub fn escape_markdown(input: &str) -> String { _ => buf.push(c), }; } - buf } pub fn video_id_from_thumbnail_url(url: &str) -> Option { diff --git a/testfiles/text/styled_comment.json b/testfiles/text/styled_comment.json new file mode 100644 index 0000000..6fc8621 --- /dev/null +++ b/testfiles/text/styled_comment.json @@ -0,0 +1,31 @@ +{ + "ln": { + "content": "Bold: Awesome\nItalic: Great\nCut: Dumb\n\nMixed: Mixer", + "styleRuns": [ + { + "startIndex": 6, + "length": 7, + "weightLabel": "FONT_WEIGHT_MEDIUM" + }, + { + "startIndex": 22, + "length": 5, + "weightLabel": "FONT_WEIGHT_NORMAL", + "italic": true + }, + { + "startIndex": 33, + "length": 4, + "weightLabel": "FONT_WEIGHT_NORMAL", + "strikethrough": "LINE_STYLE_SINGLE" + }, + { + "startIndex": 46, + "length": 5, + "weightLabel": "FONT_WEIGHT_MEDIUM", + "italic": true, + "strikethrough": "LINE_STYLE_SINGLE" + } + ] + } +} From 97b6f07399e80e00a6c015d013e744568be125dd Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 11 Apr 2024 13:25:47 +0200 Subject: [PATCH 031/347] chore: changelog: fix incorrect version URLs --- CHANGELOG.md | 8 ++++---- Justfile | 2 +- cli/CHANGELOG.md | 2 +- cliff.toml | 5 +++-- downloader/CHANGELOG.md | 2 +- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e33180d..df969f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ All notable changes to this project will be documented in this file. -## [v0.1.3](https://code.thetadev.de/ThetaDev/rustypipe/compare/rustypipe/v0.1.2..v0.1.3) - 2024-04-01 +## [v0.1.3](https://code.thetadev.de/ThetaDev/rustypipe/compare/rustypipe/v0.1.2..rustypipe/v0.1.3) - 2024-04-01 ### 🐛 Bug Fixes @@ -12,13 +12,13 @@ All notable changes to this project will be documented in this file. - "fix: improve VecLogErr messages" (leads to infinite loop) - ([348c852](https://code.thetadev.de/ThetaDev/rustypipe/commit/348c8523fe847f2f6ce98317375a7ab65e778ed2)) -## [v0.1.2](https://code.thetadev.de/ThetaDev/rustypipe/compare/rustypipe/v0.1.1..v0.1.2) - 2024-03-26 +## [v0.1.2](https://code.thetadev.de/ThetaDev/rustypipe/compare/rustypipe/v0.1.1..rustypipe/v0.1.2) - 2024-03-26 ### 🐛 Bug Fixes - Correctly parse subscriber count with new channel header - ([180dd98](https://code.thetadev.de/ThetaDev/rustypipe/commit/180dd9891a14b4da9f130a73d73aecc3822fce2f)) -## [v0.1.1](https://code.thetadev.de/ThetaDev/rustypipe/compare/rustypipe-cli/v0.1.0..v0.1.1) - 2024-03-26 +## [v0.1.1](https://code.thetadev.de/ThetaDev/rustypipe/compare/rustypipe/v0.1.0..rustypipe/v0.1.1) - 2024-03-26 ### 🐛 Bug Fixes @@ -28,7 +28,7 @@ All notable changes to this project will be documented in this file. - Update user agent (FF 115.0) - ([be314d5](https://code.thetadev.de/ThetaDev/rustypipe/commit/be314d57ea1d99bfdc80649351ee3e7845541238)) -## v0.1.0 - 2024-03-22 +## [v0.1.0](https://code.thetadev.de/ThetaDev/rustypipe/commits/tag/rustypipe/v0.1.0) - 2024-03-22 Initial release diff --git a/Justfile b/Justfile index 6a3224a..99126ba 100644 --- a/Justfile +++ b/Justfile @@ -69,7 +69,7 @@ release crate="rustypipe": if git rev-parse "$TAG" >/dev/null 2>&1; then echo "version tag $TAG already exists"; exit 1; fi - CLIFF_ARGS="--tag 'v${VERSION}' --tag-pattern '${CRATE}/*' --unreleased $INCLUDES" + CLIFF_ARGS="--tag '${TAG}' --tag-pattern '${CRATE}/*' --unreleased $INCLUDES" echo "git-cliff $CLIFF_ARGS" if [ -f "$CHANGELOG" ]; then eval "git-cliff $CLIFF_ARGS --prepend '$CHANGELOG'" diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md index bab248d..057a9d8 100644 --- a/cli/CHANGELOG.md +++ b/cli/CHANGELOG.md @@ -2,7 +2,7 @@ All notable changes to this project will be documented in this file. -## v0.1.0 - 2024-03-22 +## [v0.1.0](https://code.thetadev.de/ThetaDev/rustypipe/commits/tag/rustypipe-cli/v0.1.0) - 2024-03-22 Initial release diff --git a/cliff.toml b/cliff.toml index c175f64..066cdd5 100644 --- a/cliff.toml +++ b/cliff.toml @@ -16,10 +16,11 @@ All notable changes to this project will be documented in this file.\n body = """ {% set repo_url = "https://code.thetadev.de/ThetaDev/rustypipe" %}\ {% if version %}\ + {%set vname = version | split(pat="/") | last %} {%if previous.version %}\ - ## [{{ version }}]({{ repo_url }}/compare/{{ previous.version }}..{{ version }})\ + ## [{{ vname }}]({{ repo_url }}/compare/{{ previous.version }}..{{ version }})\ {% else %}\ - ## {{ version }}\ + ## [{{ vname }}]({{ repo_url }}/commits/tag/{{ version }})\ {% endif %} - {{ timestamp | date(format="%Y-%m-%d") }} {% else %}\ ## [unreleased] diff --git a/downloader/CHANGELOG.md b/downloader/CHANGELOG.md index bab248d..f5ac11c 100644 --- a/downloader/CHANGELOG.md +++ b/downloader/CHANGELOG.md @@ -2,7 +2,7 @@ All notable changes to this project will be documented in this file. -## v0.1.0 - 2024-03-22 +## [v0.1.0](https://code.thetadev.de/ThetaDev/rustypipe/commits/tag/rustypipe-downloader/v0.1.0) - 2024-03-22 Initial release From 50fd1f08caf39c1298654e06059cc393543e925b Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 11 Apr 2024 23:11:20 +0200 Subject: [PATCH 032/347] chore: update rstest to v0.19.0 --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index c949a85..2485421 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -65,7 +65,7 @@ dirs = "5.0.0" filenamify = "0.1.0" # Testing -rstest = "0.18.1" +rstest = "0.19.0" tokio-test = "0.4.2" insta = { version = "1.17.1", features = ["ron", "redactions"] } path_macro = "1.0.0" From 328177a9f56f6247785818f79cf60d22d4cf8842 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 12 Apr 2024 00:16:17 +0200 Subject: [PATCH 033/347] ci: update to actions/checkout@v4 --- .gitea/workflows/ci.yaml | 2 +- .gitea/workflows/release.yaml | 2 +- codegen/Cargo.toml | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml index 2f772b5..03c558f 100644 --- a/.gitea/workflows/ci.yaml +++ b/.gitea/workflows/ci.yaml @@ -9,7 +9,7 @@ jobs: runs-on: cimaster-latest steps: - name: 📦 Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: 🦀 Setup Rust cache uses: https://github.com/Swatinem/rust-cache@v2 with: diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml index 044d36f..33dd17f 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release.yaml @@ -9,7 +9,7 @@ jobs: runs-on: cimaster-latest steps: - name: 📦 Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Get variables run: | diff --git a/codegen/Cargo.toml b/codegen/Cargo.toml index 6b81189..c47f1df 100644 --- a/codegen/Cargo.toml +++ b/codegen/Cargo.toml @@ -1,5 +1,6 @@ [package] name = "rustypipe-codegen" +version = "0.1.0" edition.workspace = true authors.workspace = true license.workspace = true From 8dc710a32e716baa8b8f749c7d870cc95a9dd7f3 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 12 Apr 2024 00:34:42 +0200 Subject: [PATCH 034/347] ci: checkout whole repository --- .gitea/workflows/ci.yaml | 3 +++ .gitea/workflows/release.yaml | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml index 03c558f..0a658b3 100644 --- a/.gitea/workflows/ci.yaml +++ b/.gitea/workflows/ci.yaml @@ -10,6 +10,9 @@ jobs: steps: - name: 📦 Checkout repository uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: 🦀 Setup Rust cache uses: https://github.com/Swatinem/rust-cache@v2 with: diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml index 33dd17f..f43c70d 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release.yaml @@ -10,11 +10,11 @@ jobs: steps: - name: 📦 Checkout repository uses: actions/checkout@v4 + with: + fetch-depth: 0 - name: Get variables run: | - git fetch --tags --force #the checkout action does not load the tag message - echo "CRATE=$(echo '${{ github.ref_name }}' | awk 'BEGIN{RS="/"} NR==1{print}')" >> "$GITHUB_ENV" echo "CRATE_VERSION=$(echo '${{ github.ref_name }}' | awk 'BEGIN{RS="/"} NR==2{print}')" >> "$GITHUB_ENV" { From 4b3e895d4f8131592d1bf63c80e226e62bb54678 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 12 Apr 2024 03:26:19 +0200 Subject: [PATCH 035/347] ci: fix changelog tag pattern --- CHANGELOG.md | 7 +++++++ Justfile | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index df969f6..9c0d074 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,21 +12,28 @@ All notable changes to this project will be documented in this file. - "fix: improve VecLogErr messages" (leads to infinite loop) - ([348c852](https://code.thetadev.de/ThetaDev/rustypipe/commit/348c8523fe847f2f6ce98317375a7ab65e778ed2)) + ## [v0.1.2](https://code.thetadev.de/ThetaDev/rustypipe/compare/rustypipe/v0.1.1..rustypipe/v0.1.2) - 2024-03-26 ### 🐛 Bug Fixes - Correctly parse subscriber count with new channel header - ([180dd98](https://code.thetadev.de/ThetaDev/rustypipe/commit/180dd9891a14b4da9f130a73d73aecc3822fce2f)) + ## [v0.1.1](https://code.thetadev.de/ThetaDev/rustypipe/compare/rustypipe/v0.1.0..rustypipe/v0.1.1) - 2024-03-26 ### 🐛 Bug Fixes +- Specify internal dependency versions - ([6598a23](https://code.thetadev.de/ThetaDev/rustypipe/commit/6598a23d0699e6fe298275a67e0146a19c422c88)) +- Move package attributes to workspace - ([e4b204e](https://code.thetadev.de/ThetaDev/rustypipe/commit/e4b204eae65f450471be0890b0198d2f30714b3b)) - Parsing music details with video description tab - ([a81c3e8](https://code.thetadev.de/ThetaDev/rustypipe/commit/a81c3e83366fdf72d01dd3ee00fb2e831f7aaa26)) ### ⚙️ Miscellaneous Tasks +- Changes to release command - ([0bcced1](https://code.thetadev.de/ThetaDev/rustypipe/commit/0bcced1db377198a54c9c7d03b8d038125a2bfe4)) - Update user agent (FF 115.0) - ([be314d5](https://code.thetadev.de/ThetaDev/rustypipe/commit/be314d57ea1d99bfdc80649351ee3e7845541238)) +- Fix release script (unquoted include paths) - ([78ba9cb](https://code.thetadev.de/ThetaDev/rustypipe/commit/78ba9cb34c6bba3aba177583b242d3f76ea9847d)) + ## [v0.1.0](https://code.thetadev.de/ThetaDev/rustypipe/commits/tag/rustypipe/v0.1.0) - 2024-03-22 diff --git a/Justfile b/Justfile index 99126ba..9bc4fd6 100644 --- a/Justfile +++ b/Justfile @@ -69,7 +69,7 @@ release crate="rustypipe": if git rev-parse "$TAG" >/dev/null 2>&1; then echo "version tag $TAG already exists"; exit 1; fi - CLIFF_ARGS="--tag '${TAG}' --tag-pattern '${CRATE}/*' --unreleased $INCLUDES" + CLIFF_ARGS="--tag '${TAG}' --tag-pattern '${CRATE}/v*' --unreleased $INCLUDES" echo "git-cliff $CLIFF_ARGS" if [ -f "$CHANGELOG" ]; then eval "git-cliff $CLIFF_ARGS --prepend '$CHANGELOG'" From 89cda7db59545373d1afd15add9caba4323bea08 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 12 Apr 2024 03:40:53 +0200 Subject: [PATCH 036/347] ci: change changelog generation command --- Justfile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Justfile b/Justfile index 9bc4fd6..7d48e2b 100644 --- a/Justfile +++ b/Justfile @@ -49,16 +49,15 @@ release crate="rustypipe": set -e CRATE="{{crate}}" - INCLUDES='--include-path README.md --include-path LICENSE --include-path Cargo.toml' CHANGELOG="CHANGELOG.md" if [ "$CRATE" = "rustypipe" ]; then - INCLUDES="$INCLUDES --include-path 'src/**' --include-path 'tests/**' --include-path 'testfiles/**'" + INCLUDES="--exclude-path 'notes/**' --exclude-path 'cli/**' --exclude-path 'downloader/**'" else if [ ! -d "$CRATE" ]; then echo "$CRATE does not exist."; exit 1 fi - INCLUDES="$INCLUDES --include-path '$CRATE/**'" + INCLUDES="--include-path README.md --include-path LICENSE --include-path Cargo.toml --include-path '$CRATE/**'" CHANGELOG="$CRATE/$CHANGELOG" CRATE="rustypipe-$CRATE" # Add crate name prefix fi From 6c41ef2fb2531e10a12c271e2d48504510a3b0bf Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 12 Apr 2024 12:33:36 +0200 Subject: [PATCH 037/347] feat: prefix chip-style web links (social media) with the service name --- ...text__tests__t_attributed_description.snap | 12 +- src/serializer/text.rs | 62 +- testfiles/text/attributed_description.json | 1667 +++++++++++++---- tests/youtube.rs | 2 +- 4 files changed, 1383 insertions(+), 360 deletions(-) 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 c47814b..c4bf828 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 @@ -26,7 +26,7 @@ SAttributed { }, }, Video { - text: "aespa 에스파 'Black ...", + text: "aespa 에스파 'Black Mamba' The Debut Stage", video_id: "Ky5RT5oGg0w", start_time: 0, vtype: Video, @@ -64,7 +64,7 @@ SAttributed { }, }, Web { - text: "aespa", + text: "YouTube: aespa", url: "https://www.youtube.com/c/aespa", }, Text { @@ -76,7 +76,7 @@ SAttributed { }, }, Web { - text: "https://www.instagram.com/aespa_official", + text: "Instagram: aespa_official", url: "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbE9FVEtZZkVLUExjdFBnZjZnZ19KNWRYOVZUd3xBQ3Jtc0tsbHpCa1hLTVJ6MEllczlzUEpoVi1IQ2F5NG1jMnlOT3p3bnlFeE80ZzlsaG5CUXlFQnFGTkMtN19DcVYzQkw3bVlVVmNwQlpYQWZnNGNsME45WE1WQ21sR3V1Z3k5RG9DUDE0VTZQTm53Mk9vTWhiOA&q=https%3A%2F%2Fwww.instagram.com%2Faespa_official&v=ZeerrnuLi5E", }, Text { @@ -88,7 +88,7 @@ SAttributed { }, }, Web { - text: "https://www.tiktok.com/@aespa_official", + text: "TikTok: aespa_official", url: "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbVdlSGk3eDd5U0dUVG16VFJCQnhKVFBEUUxMQXxBQ3Jtc0tuX3ZJbENNY1ZSN0FFemdxTFdlcTVvc3AwZE05NEFvRW5nOHpZWDUtZG9ORHBnT1JGc2UySDh3WWl3MU53VjFvbHRSdjdxMUlGM2Z6SmdaLTVaWWxhamJEems0Uld3MGlTT0Z0bkh5Y0hpcnY1aXptSQ&q=https%3A%2F%2Fwww.tiktok.com%2F%40aespa_official&v=ZeerrnuLi5E", }, Text { @@ -100,7 +100,7 @@ SAttributed { }, }, Web { - text: "https://twitter.com/aespa_Official", + text: "Twitter: aespa_official", url: "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqa3lNcG1lMHkwSzNLQVBrUXFNTXl0N1hNa04wUXxBQ3Jtc0tubm1sQkdaVjNYR04xOHpJV3NxZVBpb3I5V1FVOHVFNC1uWE5vb211ZmZKYzhTZXZfbjlkY09fanBRdHpjUkdRVGJJYS0xZ3NBNkVZQVhWSS0xVDYwRlRzQ0J3ODQxNDE0ODAxd1Q0cG5icVlNWndscw&q=https%3A%2F%2Ftwitter.com%2Faespa_Official&v=ZeerrnuLi5E", }, Text { @@ -112,7 +112,7 @@ SAttributed { }, }, Web { - text: "https://www.facebook.com/aespa.official", + text: "Facebook: aespa.official", url: "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbjdBNG5yVEFwU0JMNGZaLUpQZ1ZoeGgwT0xOZ3xBQ3Jtc0tuRFdFNlJNV29PMThRNWo5MHZrREZ1ZU5oZlkxVmE4ZlU5STFCZW1mUFVSdXJ3VUQxUnNVVkUzLWJQMS1uRzVjdkRCV2ZxSWJ6cFNxRVVzejY0SDltZFZPc2xwS3ZPZGIxcFZ6cndIVkMtUjVtZ054cw&q=https%3A%2F%2Fwww.facebook.com%2Faespa.official&v=ZeerrnuLi5E", }, Text { diff --git a/src/serializer/text.rs b/src/serializer/text.rs index 6f4cd5b..b708625 100644 --- a/src/serializer/text.rs +++ b/src/serializer/text.rs @@ -1,7 +1,5 @@ use std::convert::TryFrom; -use once_cell::sync::Lazy; -use regex::Regex; use serde::{Deserialize, Deserializer}; use serde_with::{serde_as, DefaultOnError, DeserializeAs, VecSkipError}; @@ -155,12 +153,16 @@ pub(crate) struct AttributedText { style_runs: Vec, } +#[serde_as] #[derive(Deserialize)] #[serde(rename_all = "camelCase")] struct CommandRun { start_index: usize, length: usize, on_tap: AttributedTextOnTap, + #[serde(default)] + #[serde_as(as = "DefaultOnError<_>")] + on_tap_options: Option, } #[derive(Deserialize)] @@ -200,6 +202,18 @@ struct AttributedTextOnTap { innertube_command: NavigationEndpoint, } +#[derive(Deserialize)] +#[serde(rename_all = "camelCase")] +struct AttributedTextOnTapOptions { + accessibility_info: AccessibilityInfo, +} + +#[derive(Deserialize)] +#[serde(rename_all = "camelCase")] +struct AccessibilityInfo { + accessibility_label: String, +} + struct AttributedTextRun { start_index: usize, length: usize, @@ -207,7 +221,7 @@ struct AttributedTextRun { } enum AttributedTextRunContent { - Link(NavigationEndpoint), + Link(NavigationEndpoint, Option), Style(Style), } @@ -230,7 +244,12 @@ impl From for AttributedTextRun { Self { start_index: value.start_index, length: value.length, - content: AttributedTextRunContent::Link(value.on_tap.innertube_command), + content: AttributedTextRunContent::Link( + value.on_tap.innertube_command, + value + .on_tap_options + .map(|o| o.accessibility_info.accessibility_label), + ), } } } @@ -381,7 +400,7 @@ impl<'de> DeserializeAs<'de, TextComponents> for AttributedText { components.push(TextComponent::new(txt_before)); } components.push(match run.content { - AttributedTextRunContent::Link(link) => { + AttributedTextRunContent::Link(link, label) => { // Trim link text: // 3xnbsp, (/ •), nbsp, Name, 2xnbsp // Channel: `\u{a0}\u{a0}\u{a0}/\u{a0}aespa\u{a0}\u{a0}` @@ -391,10 +410,35 @@ impl<'de> DeserializeAs<'de, TextComponents> for AttributedText { let txt_link = txt_run.trim(); let txt_link = txt_link.replace('\u{a0}', " "); - static LINK_PREFIX: Lazy = Lazy::new(|| Regex::new("^[/•] *").unwrap()); - let txt_link = LINK_PREFIX.replace(&txt_link, ""); - - map_text_component(txt_link.to_string(), Style::default(), Some(link)) + if let Some(txt_link) = txt_link.strip_prefix(['/', '•']) { + let txt_link = txt_link.trim_start(); + match (&link, label) { + (NavigationEndpoint::Url { .. }, Some(label)) => { + // Prefix chip-style web links with the service name from accessibility label + // Example: `Twitter: aespa_official` + if let Some(first_word) = label.split_whitespace().next() { + map_text_component( + format!("{first_word}: {txt_link}"), + Style::default(), + Some(link), + ) + } else { + map_text_component( + txt_link.to_owned(), + Style::default(), + Some(link), + ) + } + } + _ => map_text_component( + txt_link.to_owned(), + Style::default(), + Some(link), + ), + } + } else { + map_text_component(txt_link, Style::default(), Some(link)) + } } AttributedTextRunContent::Style(style) => { map_text_component(txt_run.to_string(), style, None) diff --git a/testfiles/text/attributed_description.json b/testfiles/text/attributed_description.json index 3dcbb04..f169c79 100644 --- a/testfiles/text/attributed_description.json +++ b/testfiles/text/attributed_description.json @@ -1,346 +1,1325 @@ { - "ln": { - "content": "🎧Listen and download aespa's debut single \"Black Mamba\": https://smarturl.it/aespa_BlackMamba\n🐍The Debut Stage    • aespa 에스파 'Black ...  \n\n🎟️ aespa Showcase SYNK in LA! Tickets now on sale: https://www.ticketmaster.com/event/0A...\n\nSubscribe to aespa Official YouTube Channel!\nhttps://www.youtube.com/aespa?sub_con...\n\naespa official\n   / aespa  \nhttps://www.instagram.com/aespa_official\nhttps://www.tiktok.com/@aespa_official\nhttps://twitter.com/aespa_Official\nhttps://www.facebook.com/aespa.official\nhttps://weibo.com/aespa\n\n#aespa #æspa #BlackMamba #블랙맘바 #에스파\naespa 에스파 'Black Mamba' MV ℗ SM Entertainment", - "commandRuns": [ - { - "startIndex": 58, - "length": 36, - "onTap": { - "innertubeCommand": { - "clickTrackingParams": "CJ0BEM2rARgBIhMIzvHr0sis-gIV0kZ6BR0GNA_4SJGXrtzn9erzZQ==", - "commandMetadata": { - "webCommandMetadata": { - "url": "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbm1qRVVfQUlObURLcnFFQXBTUkJSOEpqWGIzUXxBQ3Jtc0tsNUJIYm5xdERxZk9rZEw3YlJzV0ZIYTNaSjU2a21PaFhNUmxzdjI5VE1VRWUyczZwYmtmQXh3QXV0eXlkMDgxRUJoNVMzRFZ6RlZ6MGdXeXdWQXFTTGY2ZHhFcUFqdExRQ21PYzNfWmlBaHhqYXVUdw&q=https%3A%2F%2Fsmarturl.it%2Faespa_BlackMamba&v=ZeerrnuLi5E", - "webPageType": "WEB_PAGE_TYPE_UNKNOWN", - "rootVe": 83769 - } - }, - "urlEndpoint": { - "url": "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbm1qRVVfQUlObURLcnFFQXBTUkJSOEpqWGIzUXxBQ3Jtc0tsNUJIYm5xdERxZk9rZEw3YlJzV0ZIYTNaSjU2a21PaFhNUmxzdjI5VE1VRWUyczZwYmtmQXh3QXV0eXlkMDgxRUJoNVMzRFZ6RlZ6MGdXeXdWQXFTTGY2ZHhFcUFqdExRQ21PYzNfWmlBaHhqYXVUdw&q=https%3A%2F%2Fsmarturl.it%2Faespa_BlackMamba&v=ZeerrnuLi5E", - "target": "TARGET_NEW_WINDOW", - "nofollow": true - } - } - } - }, - { - "startIndex": 113, - "length": 27, - "onTap": { - "innertubeCommand": { - "clickTrackingParams": "CJ0BEM2rARgBIhMIzvHr0sis-gIV0kZ6BR0GNA_4", - "commandMetadata": { - "webCommandMetadata": { - "url": "/watch?v=Ky5RT5oGg0w&t=0s", - "webPageType": "WEB_PAGE_TYPE_WATCH", - "rootVe": 3832 - } - }, - "watchEndpoint": { - "videoId": "Ky5RT5oGg0w", - "startTimeSeconds": 0, - "watchEndpointSupportedOnesieConfig": { - "html5PlaybackOnesieConfig": { - "commonConfig": { - "url": "https://rr5---sn-h0jeener.googlevideo.com/initplayback?source=youtube&orc=1&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odeak=1&odepv=1&osfc=1&id=2b2e514f9a06834c&ip=2003%3Ade%3Aaf30%3A200%3Ad8ce%3A4044%3A2ba2%3A3881&initcwndbps=1556250&mt=1663992556&oweuc=" - } - } - } - } - } - } - }, - { - "startIndex": 194, - "length": 40, - "onTap": { - "innertubeCommand": { - "clickTrackingParams": "CJ0BEM2rARgBIhMIzvHr0sis-gIV0kZ6BR0GNA_4SJGXrtzn9erzZQ==", - "commandMetadata": { - "webCommandMetadata": { - "url": "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbU1ObGNaRDZaRmo1X1ZjejBoeTRnWkxuVUJxZ3xBQ3Jtc0ttWk1BVVhaRXRfN1VYWXBqMHdaYURTRFJNcUZJVlY3a21wRHE2ZGZaclE3WUM5bEZWbmFfT0sxWTZHOVotWVh6U3YtVk94SlA5NkRFTnBPcHVCWDJhMGJRQlI3ZHN0MnJleHp0c2lEVWNxeW1jSDZuVQ&q=https%3A%2F%2Fwww.ticketmaster.com%2Fevent%2F0A005CCD9E871F6E&v=ZeerrnuLi5E", - "webPageType": "WEB_PAGE_TYPE_UNKNOWN", - "rootVe": 83769 - } - }, - "urlEndpoint": { - "url": "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbU1ObGNaRDZaRmo1X1ZjejBoeTRnWkxuVUJxZ3xBQ3Jtc0ttWk1BVVhaRXRfN1VYWXBqMHdaYURTRFJNcUZJVlY3a21wRHE2ZGZaclE3WUM5bEZWbmFfT0sxWTZHOVotWVh6U3YtVk94SlA5NkRFTnBPcHVCWDJhMGJRQlI3ZHN0MnJleHp0c2lEVWNxeW1jSDZuVQ&q=https%3A%2F%2Fwww.ticketmaster.com%2Fevent%2F0A005CCD9E871F6E&v=ZeerrnuLi5E", - "target": "TARGET_NEW_WINDOW", - "nofollow": true - } - } - } - }, - { - "startIndex": 281, - "length": 40, - "onTap": { - "innertubeCommand": { - "clickTrackingParams": "CJ0BEM2rARgBIhMIzvHr0sis-gIV0kZ6BR0GNA_4", - "commandMetadata": { - "webCommandMetadata": { - "url": "https://www.youtube.com/aespa?sub_confirmation=1", - "webPageType": "WEB_PAGE_TYPE_UNKNOWN", - "rootVe": 83769 - } - }, - "urlEndpoint": { - "url": "https://www.youtube.com/aespa?sub_confirmation=1", - "nofollow": true - } - } - } - }, - { - "startIndex": 338, - "length": 12, - "onTap": { - "innertubeCommand": { - "clickTrackingParams": "CJ0BEM2rARgBIhMIzvHr0sis-gIV0kZ6BR0GNA_4", - "commandMetadata": { - "webCommandMetadata": { - "url": "https://www.youtube.com/c/aespa", - "webPageType": "WEB_PAGE_TYPE_UNKNOWN", - "rootVe": 83769 - } - }, - "urlEndpoint": { - "url": "https://www.youtube.com/c/aespa", - "nofollow": true - } - } - } - }, - { - "startIndex": 351, - "length": 40, - "onTap": { - "innertubeCommand": { - "clickTrackingParams": "CJ0BEM2rARgBIhMIzvHr0sis-gIV0kZ6BR0GNA_4SJGXrtzn9erzZQ==", - "commandMetadata": { - "webCommandMetadata": { - "url": "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbE9FVEtZZkVLUExjdFBnZjZnZ19KNWRYOVZUd3xBQ3Jtc0tsbHpCa1hLTVJ6MEllczlzUEpoVi1IQ2F5NG1jMnlOT3p3bnlFeE80ZzlsaG5CUXlFQnFGTkMtN19DcVYzQkw3bVlVVmNwQlpYQWZnNGNsME45WE1WQ21sR3V1Z3k5RG9DUDE0VTZQTm53Mk9vTWhiOA&q=https%3A%2F%2Fwww.instagram.com%2Faespa_official&v=ZeerrnuLi5E", - "webPageType": "WEB_PAGE_TYPE_UNKNOWN", - "rootVe": 83769 - } - }, - "urlEndpoint": { - "url": "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbE9FVEtZZkVLUExjdFBnZjZnZ19KNWRYOVZUd3xBQ3Jtc0tsbHpCa1hLTVJ6MEllczlzUEpoVi1IQ2F5NG1jMnlOT3p3bnlFeE80ZzlsaG5CUXlFQnFGTkMtN19DcVYzQkw3bVlVVmNwQlpYQWZnNGNsME45WE1WQ21sR3V1Z3k5RG9DUDE0VTZQTm53Mk9vTWhiOA&q=https%3A%2F%2Fwww.instagram.com%2Faespa_official&v=ZeerrnuLi5E", - "target": "TARGET_NEW_WINDOW", - "nofollow": true - } - } - } - }, - { - "startIndex": 392, - "length": 38, - "onTap": { - "innertubeCommand": { - "clickTrackingParams": "CJ0BEM2rARgBIhMIzvHr0sis-gIV0kZ6BR0GNA_4SJGXrtzn9erzZQ==", - "commandMetadata": { - "webCommandMetadata": { - "url": "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbVdlSGk3eDd5U0dUVG16VFJCQnhKVFBEUUxMQXxBQ3Jtc0tuX3ZJbENNY1ZSN0FFemdxTFdlcTVvc3AwZE05NEFvRW5nOHpZWDUtZG9ORHBnT1JGc2UySDh3WWl3MU53VjFvbHRSdjdxMUlGM2Z6SmdaLTVaWWxhamJEems0Uld3MGlTT0Z0bkh5Y0hpcnY1aXptSQ&q=https%3A%2F%2Fwww.tiktok.com%2F%40aespa_official&v=ZeerrnuLi5E", - "webPageType": "WEB_PAGE_TYPE_UNKNOWN", - "rootVe": 83769 - } - }, - "urlEndpoint": { - "url": "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbVdlSGk3eDd5U0dUVG16VFJCQnhKVFBEUUxMQXxBQ3Jtc0tuX3ZJbENNY1ZSN0FFemdxTFdlcTVvc3AwZE05NEFvRW5nOHpZWDUtZG9ORHBnT1JGc2UySDh3WWl3MU53VjFvbHRSdjdxMUlGM2Z6SmdaLTVaWWxhamJEems0Uld3MGlTT0Z0bkh5Y0hpcnY1aXptSQ&q=https%3A%2F%2Fwww.tiktok.com%2F%40aespa_official&v=ZeerrnuLi5E", - "target": "TARGET_NEW_WINDOW", - "nofollow": true - } - } - } - }, - { - "startIndex": 431, - "length": 34, - "onTap": { - "innertubeCommand": { - "clickTrackingParams": "CJ0BEM2rARgBIhMIzvHr0sis-gIV0kZ6BR0GNA_4SJGXrtzn9erzZQ==", - "commandMetadata": { - "webCommandMetadata": { - "url": "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqa3lNcG1lMHkwSzNLQVBrUXFNTXl0N1hNa04wUXxBQ3Jtc0tubm1sQkdaVjNYR04xOHpJV3NxZVBpb3I5V1FVOHVFNC1uWE5vb211ZmZKYzhTZXZfbjlkY09fanBRdHpjUkdRVGJJYS0xZ3NBNkVZQVhWSS0xVDYwRlRzQ0J3ODQxNDE0ODAxd1Q0cG5icVlNWndscw&q=https%3A%2F%2Ftwitter.com%2Faespa_Official&v=ZeerrnuLi5E", - "webPageType": "WEB_PAGE_TYPE_UNKNOWN", - "rootVe": 83769 - } - }, - "urlEndpoint": { - "url": "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqa3lNcG1lMHkwSzNLQVBrUXFNTXl0N1hNa04wUXxBQ3Jtc0tubm1sQkdaVjNYR04xOHpJV3NxZVBpb3I5V1FVOHVFNC1uWE5vb211ZmZKYzhTZXZfbjlkY09fanBRdHpjUkdRVGJJYS0xZ3NBNkVZQVhWSS0xVDYwRlRzQ0J3ODQxNDE0ODAxd1Q0cG5icVlNWndscw&q=https%3A%2F%2Ftwitter.com%2Faespa_Official&v=ZeerrnuLi5E", - "target": "TARGET_NEW_WINDOW", - "nofollow": true - } - } - } - }, - { - "startIndex": 466, - "length": 39, - "onTap": { - "innertubeCommand": { - "clickTrackingParams": "CJ0BEM2rARgBIhMIzvHr0sis-gIV0kZ6BR0GNA_4SJGXrtzn9erzZQ==", - "commandMetadata": { - "webCommandMetadata": { - "url": "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbjdBNG5yVEFwU0JMNGZaLUpQZ1ZoeGgwT0xOZ3xBQ3Jtc0tuRFdFNlJNV29PMThRNWo5MHZrREZ1ZU5oZlkxVmE4ZlU5STFCZW1mUFVSdXJ3VUQxUnNVVkUzLWJQMS1uRzVjdkRCV2ZxSWJ6cFNxRVVzejY0SDltZFZPc2xwS3ZPZGIxcFZ6cndIVkMtUjVtZ054cw&q=https%3A%2F%2Fwww.facebook.com%2Faespa.official&v=ZeerrnuLi5E", - "webPageType": "WEB_PAGE_TYPE_UNKNOWN", - "rootVe": 83769 - } - }, - "urlEndpoint": { - "url": "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbjdBNG5yVEFwU0JMNGZaLUpQZ1ZoeGgwT0xOZ3xBQ3Jtc0tuRFdFNlJNV29PMThRNWo5MHZrREZ1ZU5oZlkxVmE4ZlU5STFCZW1mUFVSdXJ3VUQxUnNVVkUzLWJQMS1uRzVjdkRCV2ZxSWJ6cFNxRVVzejY0SDltZFZPc2xwS3ZPZGIxcFZ6cndIVkMtUjVtZ054cw&q=https%3A%2F%2Fwww.facebook.com%2Faespa.official&v=ZeerrnuLi5E", - "target": "TARGET_NEW_WINDOW", - "nofollow": true - } - } - } - }, - { - "startIndex": 506, - "length": 23, - "onTap": { - "innertubeCommand": { - "clickTrackingParams": "CJ0BEM2rARgBIhMIzvHr0sis-gIV0kZ6BR0GNA_4SJGXrtzn9erzZQ==", - "commandMetadata": { - "webCommandMetadata": { - "url": "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbEtGMHB6eXBESW92aEVLc1FybkRwQU95eTh6UXxBQ3Jtc0tuWXc5d2JsTHFYcHExdy1FTDFyUV9wdU1DSmxELUxGSGlPMzhBdFVkblRSZkNLQzRaMEJGUGhYLWp4RU40YUVwV3N3ZUpRTVVKVDRiY19zeE5RUkt2dW5aUVcxcHBRQldCOTE3YktXSXZlSFJhRWRjdw&q=https%3A%2F%2Fweibo.com%2Faespa&v=ZeerrnuLi5E", - "webPageType": "WEB_PAGE_TYPE_UNKNOWN", - "rootVe": 83769 - } - }, - "urlEndpoint": { - "url": "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbEtGMHB6eXBESW92aEVLc1FybkRwQU95eTh6UXxBQ3Jtc0tuWXc5d2JsTHFYcHExdy1FTDFyUV9wdU1DSmxELUxGSGlPMzhBdFVkblRSZkNLQzRaMEJGUGhYLWp4RU40YUVwV3N3ZUpRTVVKVDRiY19zeE5RUkt2dW5aUVcxcHBRQldCOTE3YktXSXZlSFJhRWRjdw&q=https%3A%2F%2Fweibo.com%2Faespa&v=ZeerrnuLi5E", - "target": "TARGET_NEW_WINDOW", - "nofollow": true - } - } - } - }, - { - "startIndex": 531, - "length": 6, - "onTap": { - "innertubeCommand": { - "clickTrackingParams": "CKIBENzXBBgKIhMIzvHr0sis-gIV0kZ6BR0GNA_4", - "commandMetadata": { - "webCommandMetadata": { - "url": "/hashtag/aespa", - "webPageType": "WEB_PAGE_TYPE_BROWSE", - "rootVe": 6827, - "apiUrl": "/youtubei/v1/browse" - } - }, - "browseEndpoint": { - "browseId": "FEhashtag", - "params": "6gUHCgVhZXNwYQ%3D%3D" - } - } - }, - "loggingDirectives": { - "trackingParams": "CKIBENzXBBgKIhMIzvHr0sis-gIV0kZ6BR0GNA_4", - "enableDisplayloggerExperiment": true - } - }, - { - "startIndex": 538, - "length": 5, - "onTap": { - "innertubeCommand": { - "clickTrackingParams": "CKEBENzXBBgLIhMIzvHr0sis-gIV0kZ6BR0GNA_4", - "commandMetadata": { - "webCommandMetadata": { - "url": "/hashtag/%C3%A6spa", - "webPageType": "WEB_PAGE_TYPE_BROWSE", - "rootVe": 6827, - "apiUrl": "/youtubei/v1/browse" - } - }, - "browseEndpoint": { - "browseId": "FEhashtag", - "params": "6gUHCgXDpnNwYQ%3D%3D" - } - } - }, - "loggingDirectives": { - "trackingParams": "CKEBENzXBBgLIhMIzvHr0sis-gIV0kZ6BR0GNA_4", - "enableDisplayloggerExperiment": true - } - }, - { - "startIndex": 544, - "length": 11, - "onTap": { - "innertubeCommand": { - "clickTrackingParams": "CKABENzXBBgMIhMIzvHr0sis-gIV0kZ6BR0GNA_4", - "commandMetadata": { - "webCommandMetadata": { - "url": "/hashtag/blackmamba", - "webPageType": "WEB_PAGE_TYPE_BROWSE", - "rootVe": 6827, - "apiUrl": "/youtubei/v1/browse" - } - }, - "browseEndpoint": { - "browseId": "FEhashtag", - "params": "6gUMCgpibGFja21hbWJh" - } - } - }, - "loggingDirectives": { - "trackingParams": "CKABENzXBBgMIhMIzvHr0sis-gIV0kZ6BR0GNA_4", - "enableDisplayloggerExperiment": true - } - }, - { - "startIndex": 556, - "length": 5, - "onTap": { - "innertubeCommand": { - "clickTrackingParams": "CJ8BENzXBBgNIhMIzvHr0sis-gIV0kZ6BR0GNA_4", - "commandMetadata": { - "webCommandMetadata": { - "url": "/hashtag/%EB%B8%94%EB%9E%99%EB%A7%98%EB%B0%94", - "webPageType": "WEB_PAGE_TYPE_BROWSE", - "rootVe": 6827, - "apiUrl": "/youtubei/v1/browse" - } - }, - "browseEndpoint": { - "browseId": "FEhashtag", - "params": "6gUOCgzruJTrnpnrp5jrsJQ%3D" - } - } - }, - "loggingDirectives": { - "trackingParams": "CJ8BENzXBBgNIhMIzvHr0sis-gIV0kZ6BR0GNA_4", - "enableDisplayloggerExperiment": true - } - }, - { - "startIndex": 562, - "length": 4, - "onTap": { - "innertubeCommand": { - "clickTrackingParams": "CJ4BENzXBBgOIhMIzvHr0sis-gIV0kZ6BR0GNA_4", - "commandMetadata": { - "webCommandMetadata": { - "url": "/hashtag/%EC%97%90%EC%8A%A4%ED%8C%8C", - "webPageType": "WEB_PAGE_TYPE_BROWSE", - "rootVe": 6827, - "apiUrl": "/youtubei/v1/browse" - } - }, - "browseEndpoint": { - "browseId": "FEhashtag", - "params": "6gULCgnsl5DsiqTtjIw%3D" - } - } - }, - "loggingDirectives": { - "trackingParams": "CJ4BENzXBBgOIhMIzvHr0sis-gIV0kZ6BR0GNA_4", - "enableDisplayloggerExperiment": true - } - } - ] - } + "ln": { + "content": "🎧Listen and download aespa's debut single \"Black Mamba\": https://smarturl.it/aespa_BlackMamba\n🐍The Debut Stage    • aespa 에스파 'Black Mamba' The Debut Stage  \n\n🎟️ aespa Showcase SYNK in LA! Tickets now on sale: https://www.ticketmaster.com/event/0A...\n\nSubscribe to aespa Official YouTube Channel!\nhttps://www.youtube.com/aespa?sub_con...\n\naespa official\n   / aespa  \n  / aespa_official  \n  / aespa_official  \n  / aespa_official  \n  / aespa.official  \nhttps://weibo.com/aespa\n\n#aespa #æspa #BlackMamba #블랙맘바 #에스파\naespa 에스파 'Black Mamba' MV ℗ SM Entertainment", + "commandRuns": [ + { + "startIndex": 58, + "length": 36, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBwQ040EGAMiEwjGtqeIuryFAxUvb3oFHcieCCxIkZeu3Of16vNl", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbm1qRVVfQUlObURLcnFFQXBTUkJSOEpqWGIzUXxBQ3Jtc0tsNUJIYm5xdERxZk9rZEw3YlJzV0ZIYTNaSjU2a21PaFhNUmxzdjI5VE1VRWUyczZwYmtmQXh3QXV0eXlkMDgxRUJoNVMzRFZ6RlZ6MGdXeXdWQXFTTGY2ZHhFcUFqdExRQ21PYzNfWmlBaHhqYXVUdw&q=https%3A%2F%2Fsmarturl.it%2Faespa_BlackMamba&v=ZeerrnuLi5E", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbm1qRVVfQUlObURLcnFFQXBTUkJSOEpqWGIzUXxBQ3Jtc0tsNUJIYm5xdERxZk9rZEw3YlJzV0ZIYTNaSjU2a21PaFhNUmxzdjI5VE1VRWUyczZwYmtmQXh3QXV0eXlkMDgxRUJoNVMzRFZ6RlZ6MGdXeXdWQXFTTGY2ZHhFcUFqdExRQ21PYzNfWmlBaHhqYXVUdw&q=https%3A%2F%2Fsmarturl.it%2Faespa_BlackMamba&v=ZeerrnuLi5E", + "target": "TARGET_NEW_WINDOW", + "nofollow": true + } + } + } + }, + { + "startIndex": 113, + "length": 46, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBwQ040EGAMiEwjGtqeIuryFAxUvb3oFHcieCCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=Ky5RT5oGg0w&t=0s", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "Ky5RT5oGg0w", + "startTimeSeconds": 0, + "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=2b2e514f9a06834c&ip=79.205.220.219&initcwndbps=1590000&mt=1712917030&oweuc=&pxtags=Cg4KAnR4Egg1MTExODU2NA&rxtags=Cg4KAnR4Egg1MTExODU2MQ%2CCg4KAnR4Egg1MTExODU2Mg%2CCg4KAnR4Egg1MTExODU2Mw%2CCg4KAnR4Egg1MTExODU2NA%2CCg4KAnR4Egg1MTExODU2NQ%2CCg4KAnR4Egg1MTExODU2Ng%2CCg4KAnR4Egg1MTExODU2Nw" + } + } + } + } + } + }, + "onTapOptions": { + "accessibilityInfo": { + "accessibilityLabel": "YouTube Channel Link: aespa 에스파 'Black Mamba' The Debut Stage" + } + } + }, + { + "startIndex": 213, + "length": 40, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBwQ040EGAMiEwjGtqeIuryFAxUvb3oFHcieCCxIkZeu3Of16vNl", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbU1ObGNaRDZaRmo1X1ZjejBoeTRnWkxuVUJxZ3xBQ3Jtc0ttWk1BVVhaRXRfN1VYWXBqMHdaYURTRFJNcUZJVlY3a21wRHE2ZGZaclE3WUM5bEZWbmFfT0sxWTZHOVotWVh6U3YtVk94SlA5NkRFTnBPcHVCWDJhMGJRQlI3ZHN0MnJleHp0c2lEVWNxeW1jSDZuVQ&q=https%3A%2F%2Fwww.ticketmaster.com%2Fevent%2F0A005CCD9E871F6E&v=ZeerrnuLi5E", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbU1ObGNaRDZaRmo1X1ZjejBoeTRnWkxuVUJxZ3xBQ3Jtc0ttWk1BVVhaRXRfN1VYWXBqMHdaYURTRFJNcUZJVlY3a21wRHE2ZGZaclE3WUM5bEZWbmFfT0sxWTZHOVotWVh6U3YtVk94SlA5NkRFTnBPcHVCWDJhMGJRQlI3ZHN0MnJleHp0c2lEVWNxeW1jSDZuVQ&q=https%3A%2F%2Fwww.ticketmaster.com%2Fevent%2F0A005CCD9E871F6E&v=ZeerrnuLi5E", + "target": "TARGET_NEW_WINDOW", + "nofollow": true + } + } + } + }, + { + "startIndex": 300, + "length": 40, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBwQ040EGAMiEwjGtqeIuryFAxUvb3oFHcieCCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://www.youtube.com/aespa?sub_confirmation=1", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://www.youtube.com/aespa?sub_confirmation=1", + "nofollow": true + } + } + } + }, + { + "startIndex": 357, + "length": 12, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBwQ040EGAMiEwjGtqeIuryFAxUvb3oFHcieCCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://www.youtube.com/c/aespa", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://www.youtube.com/c/aespa", + "nofollow": true + } + } + }, + "onTapOptions": { + "accessibilityInfo": { + "accessibilityLabel": "YouTube Channel Link: aespa" + } + } + }, + { + "startIndex": 370, + "length": 20, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBwQ040EGAMiEwjGtqeIuryFAxUvb3oFHcieCCxIkZeu3Of16vNl", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbE9FVEtZZkVLUExjdFBnZjZnZ19KNWRYOVZUd3xBQ3Jtc0tsbHpCa1hLTVJ6MEllczlzUEpoVi1IQ2F5NG1jMnlOT3p3bnlFeE80ZzlsaG5CUXlFQnFGTkMtN19DcVYzQkw3bVlVVmNwQlpYQWZnNGNsME45WE1WQ21sR3V1Z3k5RG9DUDE0VTZQTm53Mk9vTWhiOA&q=https%3A%2F%2Fwww.instagram.com%2Faespa_official&v=ZeerrnuLi5E", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbE9FVEtZZkVLUExjdFBnZjZnZ19KNWRYOVZUd3xBQ3Jtc0tsbHpCa1hLTVJ6MEllczlzUEpoVi1IQ2F5NG1jMnlOT3p3bnlFeE80ZzlsaG5CUXlFQnFGTkMtN19DcVYzQkw3bVlVVmNwQlpYQWZnNGNsME45WE1WQ21sR3V1Z3k5RG9DUDE0VTZQTm53Mk9vTWhiOA&q=https%3A%2F%2Fwww.instagram.com%2Faespa_official&v=ZeerrnuLi5E", + "target": "TARGET_NEW_WINDOW", + "nofollow": true + } + } + }, + "onTapOptions": { + "accessibilityInfo": { + "accessibilityLabel": "Instagram Channel Link: aespa_official" + } + } + }, + { + "startIndex": 391, + "length": 20, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBwQ040EGAMiEwjGtqeIuryFAxUvb3oFHcieCCxIkZeu3Of16vNl", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbVdlSGk3eDd5U0dUVG16VFJCQnhKVFBEUUxMQXxBQ3Jtc0tuX3ZJbENNY1ZSN0FFemdxTFdlcTVvc3AwZE05NEFvRW5nOHpZWDUtZG9ORHBnT1JGc2UySDh3WWl3MU53VjFvbHRSdjdxMUlGM2Z6SmdaLTVaWWxhamJEems0Uld3MGlTT0Z0bkh5Y0hpcnY1aXptSQ&q=https%3A%2F%2Fwww.tiktok.com%2F%40aespa_official&v=ZeerrnuLi5E", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbVdlSGk3eDd5U0dUVG16VFJCQnhKVFBEUUxMQXxBQ3Jtc0tuX3ZJbENNY1ZSN0FFemdxTFdlcTVvc3AwZE05NEFvRW5nOHpZWDUtZG9ORHBnT1JGc2UySDh3WWl3MU53VjFvbHRSdjdxMUlGM2Z6SmdaLTVaWWxhamJEems0Uld3MGlTT0Z0bkh5Y0hpcnY1aXptSQ&q=https%3A%2F%2Fwww.tiktok.com%2F%40aespa_official&v=ZeerrnuLi5E", + "target": "TARGET_NEW_WINDOW", + "nofollow": true + } + } + }, + "onTapOptions": { + "accessibilityInfo": { + "accessibilityLabel": "TikTok Channel Link: aespa_official" + } + } + }, + { + "startIndex": 412, + "length": 20, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBwQ040EGAMiEwjGtqeIuryFAxUvb3oFHcieCCxIkZeu3Of16vNl", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqa3lNcG1lMHkwSzNLQVBrUXFNTXl0N1hNa04wUXxBQ3Jtc0tubm1sQkdaVjNYR04xOHpJV3NxZVBpb3I5V1FVOHVFNC1uWE5vb211ZmZKYzhTZXZfbjlkY09fanBRdHpjUkdRVGJJYS0xZ3NBNkVZQVhWSS0xVDYwRlRzQ0J3ODQxNDE0ODAxd1Q0cG5icVlNWndscw&q=https%3A%2F%2Ftwitter.com%2Faespa_Official&v=ZeerrnuLi5E", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqa3lNcG1lMHkwSzNLQVBrUXFNTXl0N1hNa04wUXxBQ3Jtc0tubm1sQkdaVjNYR04xOHpJV3NxZVBpb3I5V1FVOHVFNC1uWE5vb211ZmZKYzhTZXZfbjlkY09fanBRdHpjUkdRVGJJYS0xZ3NBNkVZQVhWSS0xVDYwRlRzQ0J3ODQxNDE0ODAxd1Q0cG5icVlNWndscw&q=https%3A%2F%2Ftwitter.com%2Faespa_Official&v=ZeerrnuLi5E", + "target": "TARGET_NEW_WINDOW", + "nofollow": true + } + } + }, + "onTapOptions": { + "accessibilityInfo": { + "accessibilityLabel": "Twitter Channel Link: aespa_Official" + } + } + }, + { + "startIndex": 433, + "length": 20, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBwQ040EGAMiEwjGtqeIuryFAxUvb3oFHcieCCxIkZeu3Of16vNl", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbjdBNG5yVEFwU0JMNGZaLUpQZ1ZoeGgwT0xOZ3xBQ3Jtc0tuRFdFNlJNV29PMThRNWo5MHZrREZ1ZU5oZlkxVmE4ZlU5STFCZW1mUFVSdXJ3VUQxUnNVVkUzLWJQMS1uRzVjdkRCV2ZxSWJ6cFNxRVVzejY0SDltZFZPc2xwS3ZPZGIxcFZ6cndIVkMtUjVtZ054cw&q=https%3A%2F%2Fwww.facebook.com%2Faespa.official&v=ZeerrnuLi5E", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbjdBNG5yVEFwU0JMNGZaLUpQZ1ZoeGgwT0xOZ3xBQ3Jtc0tuRFdFNlJNV29PMThRNWo5MHZrREZ1ZU5oZlkxVmE4ZlU5STFCZW1mUFVSdXJ3VUQxUnNVVkUzLWJQMS1uRzVjdkRCV2ZxSWJ6cFNxRVVzejY0SDltZFZPc2xwS3ZPZGIxcFZ6cndIVkMtUjVtZ054cw&q=https%3A%2F%2Fwww.facebook.com%2Faespa.official&v=ZeerrnuLi5E", + "target": "TARGET_NEW_WINDOW", + "nofollow": true + } + } + }, + "onTapOptions": { + "accessibilityInfo": { + "accessibilityLabel": "Facebook Channel Link: aespa.official" + } + } + }, + { + "startIndex": 454, + "length": 23, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBwQ040EGAMiEwjGtqeIuryFAxUvb3oFHcieCCxIkZeu3Of16vNl", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbEtGMHB6eXBESW92aEVLc1FybkRwQU95eTh6UXxBQ3Jtc0tuWXc5d2JsTHFYcHExdy1FTDFyUV9wdU1DSmxELUxGSGlPMzhBdFVkblRSZkNLQzRaMEJGUGhYLWp4RU40YUVwV3N3ZUpRTVVKVDRiY19zeE5RUkt2dW5aUVcxcHBRQldCOTE3YktXSXZlSFJhRWRjdw&q=https%3A%2F%2Fweibo.com%2Faespa&v=ZeerrnuLi5E", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbEtGMHB6eXBESW92aEVLc1FybkRwQU95eTh6UXxBQ3Jtc0tuWXc5d2JsTHFYcHExdy1FTDFyUV9wdU1DSmxELUxGSGlPMzhBdFVkblRSZkNLQzRaMEJGUGhYLWp4RU40YUVwV3N3ZUpRTVVKVDRiY19zeE5RUkt2dW5aUVcxcHBRQldCOTE3YktXSXZlSFJhRWRjdw&q=https%3A%2F%2Fweibo.com%2Faespa&v=ZeerrnuLi5E", + "target": "TARGET_NEW_WINDOW", + "nofollow": true + } + } + } + }, + { + "startIndex": 479, + "length": 6, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CHAQ3NcEGC8iEwjGtqeIuryFAxUvb3oFHcieCCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/hashtag/aespa", + "webPageType": "WEB_PAGE_TYPE_BROWSE", + "rootVe": 6827, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "FEhashtag", + "params": "6gUJCgVhZXNwYRgB" + } + } + }, + "loggingDirectives": { + "trackingParams": "CHAQ3NcEGC8iEwjGtqeIuryFAxUvb3oFHcieCCw=", + "enableDisplayloggerExperiment": true + } + }, + { + "startIndex": 486, + "length": 5, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CG8Q3NcEGDAiEwjGtqeIuryFAxUvb3oFHcieCCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/hashtag/%C3%A6spa", + "webPageType": "WEB_PAGE_TYPE_BROWSE", + "rootVe": 6827, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "FEhashtag", + "params": "6gUJCgXDpnNwYRgB" + } + } + }, + "loggingDirectives": { + "trackingParams": "CG8Q3NcEGDAiEwjGtqeIuryFAxUvb3oFHcieCCw=", + "enableDisplayloggerExperiment": true + } + }, + { + "startIndex": 492, + "length": 11, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CG4Q3NcEGDEiEwjGtqeIuryFAxUvb3oFHcieCCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/hashtag/blackmamba", + "webPageType": "WEB_PAGE_TYPE_BROWSE", + "rootVe": 6827, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "FEhashtag", + "params": "6gUOCgpibGFja21hbWJhGAE%3D" + } + } + }, + "loggingDirectives": { + "trackingParams": "CG4Q3NcEGDEiEwjGtqeIuryFAxUvb3oFHcieCCw=", + "enableDisplayloggerExperiment": true + } + }, + { + "startIndex": 504, + "length": 5, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CG0Q3NcEGDIiEwjGtqeIuryFAxUvb3oFHcieCCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/hashtag/%EB%B8%94%EB%9E%99%EB%A7%98%EB%B0%94", + "webPageType": "WEB_PAGE_TYPE_BROWSE", + "rootVe": 6827, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "FEhashtag", + "params": "6gUQCgzruJTrnpnrp5jrsJQYAQ%3D%3D" + } + } + }, + "loggingDirectives": { + "trackingParams": "CG0Q3NcEGDIiEwjGtqeIuryFAxUvb3oFHcieCCw=", + "enableDisplayloggerExperiment": true + } + }, + { + "startIndex": 510, + "length": 4, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CGwQ3NcEGDMiEwjGtqeIuryFAxUvb3oFHcieCCw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/hashtag/%EC%97%90%EC%8A%A4%ED%8C%8C", + "webPageType": "WEB_PAGE_TYPE_BROWSE", + "rootVe": 6827, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "FEhashtag", + "params": "6gUNCgnsl5DsiqTtjIwYAQ%3D%3D" + } + } + }, + "loggingDirectives": { + "trackingParams": "CGwQ3NcEGDMiEwjGtqeIuryFAxUvb3oFHcieCCw=", + "enableDisplayloggerExperiment": true + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 58, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4294967295 + }, + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4279440147 + } + ] + } + }, + "fontFamilyName": "Roboto" + }, + { + "startIndex": 58, + "length": 36, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4282296063 + }, + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4278607828 + } + ] + } + }, + "fontFamilyName": "Roboto" + }, + { + "startIndex": 94, + "length": 19, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4294967295 + }, + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4279440147 + } + ] + } + }, + "fontFamilyName": "Roboto" + }, + { + "startIndex": 113, + "length": 46, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4279440147 + }, + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4294967295 + } + ] + } + } + }, + { + "startIndex": 159, + "length": 54, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4294967295 + }, + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4279440147 + } + ] + } + }, + "fontFamilyName": "Roboto" + }, + { + "startIndex": 213, + "length": 40, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4278607828 + }, + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4282296063 + } + ] + } + }, + "fontFamilyName": "Roboto" + }, + { + "startIndex": 253, + "length": 47, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4279440147 + }, + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4294967295 + } + ] + } + }, + "fontFamilyName": "Roboto" + }, + { + "startIndex": 300, + "length": 40, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4278607828 + }, + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4282296063 + } + ] + } + }, + "fontFamilyName": "Roboto" + }, + { + "startIndex": 340, + "length": 17, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4279440147 + }, + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4294967295 + } + ] + } + }, + "fontFamilyName": "Roboto" + }, + { + "startIndex": 357, + "length": 12, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4294967295 + }, + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4279440147 + } + ] + } + } + }, + { + "startIndex": 369, + "length": 1, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4294967295 + }, + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4279440147 + } + ] + } + }, + "fontFamilyName": "Roboto" + }, + { + "startIndex": 370, + "length": 20, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4279440147 + }, + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4294967295 + } + ] + } + } + }, + { + "startIndex": 390, + "length": 1, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4279440147 + }, + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4294967295 + } + ] + } + }, + "fontFamilyName": "Roboto" + }, + { + "startIndex": 391, + "length": 20, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4279440147 + }, + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4294967295 + } + ] + } + } + }, + { + "startIndex": 411, + "length": 1, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4294967295 + }, + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4279440147 + } + ] + } + }, + "fontFamilyName": "Roboto" + }, + { + "startIndex": 412, + "length": 20, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4294967295 + }, + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4279440147 + } + ] + } + } + }, + { + "startIndex": 432, + "length": 1, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4279440147 + }, + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4294967295 + } + ] + } + }, + "fontFamilyName": "Roboto" + }, + { + "startIndex": 433, + "length": 20, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4294967295 + }, + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4279440147 + } + ] + } + } + }, + { + "startIndex": 453, + "length": 1, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4294967295 + }, + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4279440147 + } + ] + } + }, + "fontFamilyName": "Roboto" + }, + { + "startIndex": 454, + "length": 23, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4278607828 + }, + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4282296063 + } + ] + } + }, + "fontFamilyName": "Roboto" + }, + { + "startIndex": 477, + "length": 2, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4279440147 + }, + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4294967295 + } + ] + } + }, + "fontFamilyName": "Roboto" + }, + { + "startIndex": 479, + "length": 6, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4282296063 + }, + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4278607828 + } + ] + } + }, + "fontFamilyName": "Roboto" + }, + { + "startIndex": 485, + "length": 1, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4279440147 + }, + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4294967295 + } + ] + } + }, + "fontFamilyName": "Roboto" + }, + { + "startIndex": 486, + "length": 5, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4278607828 + }, + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4282296063 + } + ] + } + }, + "fontFamilyName": "Roboto" + }, + { + "startIndex": 491, + "length": 1, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4294967295 + }, + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4279440147 + } + ] + } + }, + "fontFamilyName": "Roboto" + }, + { + "startIndex": 492, + "length": 11, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4278607828 + }, + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4282296063 + } + ] + } + }, + "fontFamilyName": "Roboto" + }, + { + "startIndex": 503, + "length": 1, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4294967295 + }, + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4279440147 + } + ] + } + }, + "fontFamilyName": "Roboto" + }, + { + "startIndex": 504, + "length": 5, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4278607828 + }, + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4282296063 + } + ] + } + }, + "fontFamilyName": "Roboto" + }, + { + "startIndex": 509, + "length": 1, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4279440147 + }, + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4294967295 + } + ] + } + }, + "fontFamilyName": "Roboto" + }, + { + "startIndex": 510, + "length": 4, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4282296063 + }, + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4278607828 + } + ] + } + }, + "fontFamilyName": "Roboto" + }, + { + "startIndex": 514, + "length": 46, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4279440147 + }, + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4294967295 + } + ] + } + }, + "fontFamilyName": "Roboto" + } + ], + "attachmentRuns": [ + { + "startIndex": 115, + "length": 0, + "element": { + "type": { + "imageType": { + "image": { + "sources": [ + { + "url": "https://www.gstatic.com/youtube/img/watch/yt_favicon.png" + } + ] + } + } + }, + "properties": { + "layoutProperties": { + "height": { + "value": 10, + "unit": "DIMENSION_UNIT_POINT" + }, + "width": { + "value": 14, + "unit": "DIMENSION_UNIT_POINT" + }, + "margin": { + "top": { + "value": 0.5, + "unit": "DIMENSION_UNIT_POINT" + } + } + } + } + }, + "alignment": "ALIGNMENT_VERTICAL_CENTER" + }, + { + "startIndex": 359, + "length": 0, + "element": { + "type": { + "imageType": { + "image": { + "sources": [ + { + "url": "https://www.gstatic.com/youtube/img/watch/yt_favicon.png" + } + ] + } + } + }, + "properties": { + "layoutProperties": { + "height": { + "value": 10, + "unit": "DIMENSION_UNIT_POINT" + }, + "width": { + "value": 14, + "unit": "DIMENSION_UNIT_POINT" + }, + "margin": { + "top": { + "value": 0.5, + "unit": "DIMENSION_UNIT_POINT" + } + } + } + } + }, + "alignment": "ALIGNMENT_VERTICAL_CENTER" + }, + { + "startIndex": 371, + "length": 0, + "element": { + "type": { + "imageType": { + "image": { + "sources": [ + { + "url": "https://www.gstatic.com/youtube/img/watch/social_media/instagram_1x.png" + } + ] + } + } + }, + "properties": { + "layoutProperties": { + "height": { + "value": 14, + "unit": "DIMENSION_UNIT_POINT" + }, + "width": { + "value": 14, + "unit": "DIMENSION_UNIT_POINT" + }, + "margin": { + "top": { + "value": 0.5, + "unit": "DIMENSION_UNIT_POINT" + } + } + } + } + }, + "alignment": "ALIGNMENT_VERTICAL_CENTER" + }, + { + "startIndex": 392, + "length": 0, + "element": { + "type": { + "imageType": { + "image": { + "sources": [ + { + "url": "https://www.gstatic.com/youtube/img/watch/social_media/tiktok_1x.png" + } + ] + } + } + }, + "properties": { + "layoutProperties": { + "height": { + "value": 14, + "unit": "DIMENSION_UNIT_POINT" + }, + "width": { + "value": 14, + "unit": "DIMENSION_UNIT_POINT" + }, + "margin": { + "top": { + "value": 0.5, + "unit": "DIMENSION_UNIT_POINT" + } + } + } + } + }, + "alignment": "ALIGNMENT_VERTICAL_CENTER" + }, + { + "startIndex": 413, + "length": 0, + "element": { + "type": { + "imageType": { + "image": { + "sources": [ + { + "url": "https://www.gstatic.com/youtube/img/watch/social_media/twitter_1x_v2.png" + } + ] + } + } + }, + "properties": { + "layoutProperties": { + "height": { + "value": 14, + "unit": "DIMENSION_UNIT_POINT" + }, + "width": { + "value": 14, + "unit": "DIMENSION_UNIT_POINT" + }, + "margin": { + "top": { + "value": 0.5, + "unit": "DIMENSION_UNIT_POINT" + } + } + } + } + }, + "alignment": "ALIGNMENT_VERTICAL_CENTER" + }, + { + "startIndex": 434, + "length": 0, + "element": { + "type": { + "imageType": { + "image": { + "sources": [ + { + "url": "https://www.gstatic.com/youtube/img/watch/social_media/facebook_1x.png" + } + ] + } + } + }, + "properties": { + "layoutProperties": { + "height": { + "value": 14, + "unit": "DIMENSION_UNIT_POINT" + }, + "width": { + "value": 14, + "unit": "DIMENSION_UNIT_POINT" + }, + "margin": { + "top": { + "value": 0.5, + "unit": "DIMENSION_UNIT_POINT" + } + } + } + } + }, + "alignment": "ALIGNMENT_VERTICAL_CENTER" + } + ], + "decorationRuns": [ + { + "textDecorator": { + "highlightTextDecorator": { + "startIndex": 113, + "length": 46, + "backgroundCornerRadius": 8, + "bottomPadding": 1, + "highlightTextDecoratorExtensions": { + "highlightTextDecoratorColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 218103808 + }, + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 452984831 + } + ] + } + } + } + } + }, + { + "textDecorator": { + "highlightTextDecorator": { + "startIndex": 357, + "length": 12, + "backgroundCornerRadius": 8, + "bottomPadding": 1, + "highlightTextDecoratorExtensions": { + "highlightTextDecoratorColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 218103808 + }, + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 452984831 + } + ] + } + } + } + } + }, + { + "textDecorator": { + "highlightTextDecorator": { + "startIndex": 370, + "length": 20, + "backgroundCornerRadius": 8, + "bottomPadding": 1, + "highlightTextDecoratorExtensions": { + "highlightTextDecoratorColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 218103808 + }, + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 452984831 + } + ] + } + } + } + } + }, + { + "textDecorator": { + "highlightTextDecorator": { + "startIndex": 391, + "length": 20, + "backgroundCornerRadius": 8, + "bottomPadding": 1, + "highlightTextDecoratorExtensions": { + "highlightTextDecoratorColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 218103808 + }, + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 452984831 + } + ] + } + } + } + } + }, + { + "textDecorator": { + "highlightTextDecorator": { + "startIndex": 412, + "length": 20, + "backgroundCornerRadius": 8, + "bottomPadding": 1, + "highlightTextDecoratorExtensions": { + "highlightTextDecoratorColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 218103808 + }, + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 452984831 + } + ] + } + } + } + } + }, + { + "textDecorator": { + "highlightTextDecorator": { + "startIndex": 433, + "length": 20, + "backgroundCornerRadius": 8, + "bottomPadding": 1, + "highlightTextDecoratorExtensions": { + "highlightTextDecoratorColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 218103808 + }, + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 452984831 + } + ] + } + } + } + } + } + ] + } } diff --git a/tests/youtube.rs b/tests/youtube.rs index 84c6b08..f4979ef 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -2519,7 +2519,7 @@ async fn music_new_videos(rp: RustyPipe) { assert!(!video.name.is_empty()); assert!(!video.cover.is_empty(), "got no cover"); if let Some(view_count) = video.view_count { - assert_gte(view_count, 1000, "views"); + assert_gte(view_count, 500, "views"); } else { // Podcast episode: shows duration instead of view count assert!(video.duration.is_some(), "no view count or duration"); From a8fb337fae9cb0112e0152f9a0a19ebae49c2a4d Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 16 Apr 2024 15:18:29 +0200 Subject: [PATCH 038/347] fix: remove Innertube API keys, update android player params --- src/client/mod.rs | 18 +++++++----------- src/client/player.rs | 4 ++-- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/client/mod.rs b/src/client/mod.rs index 0203c3d..b64ecbb 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -192,19 +192,15 @@ const YOUTUBE_MUSIC_V1_URL: &str = "https://music.youtube.com/youtubei/v1/"; const YOUTUBE_HOME_URL: &str = "https://www.youtube.com/"; const YOUTUBE_MUSIC_HOME_URL: &str = "https://music.youtube.com/"; -const DISABLE_PRETTY_PRINT_PARAMETER: &str = "&prettyPrint=false"; +const DISABLE_PRETTY_PRINT_PARAMETER: &str = "prettyPrint=false"; // Desktop client const DESKTOP_CLIENT_VERSION: &str = "2.20230126.00.00"; -const DESKTOP_API_KEY: &str = "AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8"; const TVHTML5_CLIENT_VERSION: &str = "2.0"; -const DESKTOP_MUSIC_API_KEY: &str = "AIzaSyC9XL3ZjWddXya6X74dJoCTL-WEYFDNX30"; const DESKTOP_MUSIC_CLIENT_VERSION: &str = "1.20230123.01.01"; // Mobile client const MOBILE_CLIENT_VERSION: &str = "18.03.33"; -const ANDROID_API_KEY: &str = "AIzaSyA8eiZmM1FaDVjRy-df2KTyQ_vz_yYM39w"; -const IOS_API_KEY: &str = "AIzaSyB-63vPrdThhKuerbB2N_l7Kwwcxj6yUAc"; const IOS_DEVICE_MODEL: &str = "iPhone14,5"; static CLIENT_VERSION_REGEX: Lazy = @@ -1189,7 +1185,7 @@ impl RustyPipeQuery { .inner .http .post(format!( - "{YOUTUBEI_V1_URL}{endpoint}?key={DESKTOP_API_KEY}{DISABLE_PRETTY_PRINT_PARAMETER}" + "{YOUTUBEI_V1_URL}{endpoint}?{DISABLE_PRETTY_PRINT_PARAMETER}" )) .header(header::ORIGIN, YOUTUBE_HOME_URL) .header(header::REFERER, YOUTUBE_HOME_URL) @@ -1204,7 +1200,7 @@ impl RustyPipeQuery { .inner .http .post(format!( - "{YOUTUBE_MUSIC_V1_URL}{endpoint}?key={DESKTOP_MUSIC_API_KEY}{DISABLE_PRETTY_PRINT_PARAMETER}" + "{YOUTUBE_MUSIC_V1_URL}{endpoint}?{DISABLE_PRETTY_PRINT_PARAMETER}" )) .header(header::ORIGIN, YOUTUBE_MUSIC_HOME_URL) .header(header::REFERER, YOUTUBE_MUSIC_HOME_URL) @@ -1212,14 +1208,14 @@ impl RustyPipeQuery { .header("X-YouTube-Client-Name", "67") .header( "X-YouTube-Client-Version", - self.client.get_music_client_version().await + self.client.get_music_client_version().await, ), ClientType::TvHtml5Embed => self .client .inner .http .post(format!( - "{YOUTUBEI_V1_URL}{endpoint}?key={DESKTOP_API_KEY}{DISABLE_PRETTY_PRINT_PARAMETER}" + "{YOUTUBEI_V1_URL}{endpoint}?{DISABLE_PRETTY_PRINT_PARAMETER}" )) .header(header::ORIGIN, YOUTUBE_HOME_URL) .header(header::REFERER, YOUTUBE_HOME_URL) @@ -1230,7 +1226,7 @@ impl RustyPipeQuery { .inner .http .post(format!( - "{YOUTUBEI_V1_GAPIS_URL}{endpoint}?key={ANDROID_API_KEY}{DISABLE_PRETTY_PRINT_PARAMETER}" + "{YOUTUBEI_V1_GAPIS_URL}{endpoint}?{DISABLE_PRETTY_PRINT_PARAMETER}" )) .header( header::USER_AGENT, @@ -1245,7 +1241,7 @@ impl RustyPipeQuery { .inner .http .post(format!( - "{YOUTUBEI_V1_GAPIS_URL}{endpoint}?key={IOS_API_KEY}{DISABLE_PRETTY_PRINT_PARAMETER}" + "{YOUTUBEI_V1_GAPIS_URL}{endpoint}?{DISABLE_PRETTY_PRINT_PARAMETER}" )) .header( header::USER_AGENT, diff --git a/src/client/player.rs b/src/client/player.rs index 1dceb7d..ba1bee8 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -128,8 +128,8 @@ impl RustyPipeQuery { video_id, content_check_ok: true, racy_check_ok: true, - // Source: https://github.com/TeamNewPipe/NewPipeExtractor/pull/1084 - params: Some("CgIQBg").filter(|_| client_type == ClientType::Android), + // Source: https://github.com/TeamNewPipe/NewPipeExtractor/pull/1168 + params: Some("CgIIAQ%3D%3D").filter(|_| client_type == ClientType::Android), } }; From 77ee9237783cc2183d52e383baefa7fe117ba027 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 18 Apr 2024 17:37:50 +0200 Subject: [PATCH 039/347] test: update channel ID for L. R. Eswari --- tests/snapshots/youtube__music_album_no_artist.snap | 4 ++-- tests/snapshots/youtube__music_album_no_artist_intl.snap | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/snapshots/youtube__music_album_no_artist.snap b/tests/snapshots/youtube__music_album_no_artist.snap index eea1c14..1b4773b 100644 --- a/tests/snapshots/youtube__music_album_no_artist.snap +++ b/tests/snapshots/youtube__music_album_no_artist.snap @@ -63,11 +63,11 @@ MusicAlbum( cover: [], artists: [ ArtistId( - id: Some("UCUhWwvF6gIPWTYlYb4-icLA"), + id: Some("UC_KQPMiRQl3CFAIKTVfCHwA"), name: "L.r. Eswari", ), ], - artist_id: Some("UCUhWwvF6gIPWTYlYb4-icLA"), + artist_id: Some("UC_KQPMiRQl3CFAIKTVfCHwA"), album: Some(AlbumId( id: "MPREb_bqWA6mAZFWS", name: "Pedha Rasi Peddamma Katha", diff --git a/tests/snapshots/youtube__music_album_no_artist_intl.snap b/tests/snapshots/youtube__music_album_no_artist_intl.snap index a8cefcf..779f0aa 100644 --- a/tests/snapshots/youtube__music_album_no_artist_intl.snap +++ b/tests/snapshots/youtube__music_album_no_artist_intl.snap @@ -63,11 +63,11 @@ MusicAlbum( cover: [], artists: [ ArtistId( - id: Some("UCUhWwvF6gIPWTYlYb4-icLA"), + id: Some("UC_KQPMiRQl3CFAIKTVfCHwA"), name: "[name]", ), ], - artist_id: Some("UCUhWwvF6gIPWTYlYb4-icLA"), + artist_id: Some("UC_KQPMiRQl3CFAIKTVfCHwA"), album: Some(AlbumId( id: "MPREb_bqWA6mAZFWS", name: "[name]", From 8fbd6b95b6f01108b46f53fe60a56b0c561e40c1 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 18 Apr 2024 19:50:06 +0200 Subject: [PATCH 040/347] fix: parsing error when no `music_related` content available --- src/client/music_details.rs | 76 ++++++++++++++-------------- src/client/response/music_details.rs | 21 +++++--- 2 files changed, 52 insertions(+), 45 deletions(-) diff --git a/src/client/music_details.rs b/src/client/music_details.rs index 36d5ddd..0459389 100644 --- a/src/client/music_details.rs +++ b/src/client/music_details.rs @@ -306,19 +306,14 @@ impl MapResponse for response::MusicLyrics { ) -> Result, ExtractionError> { let lyrics = self .contents - .section_list_renderer - .and_then(|sl| { - sl.contents - .into_iter() - .find_map(|item| item.music_description_shelf_renderer) - }) - .ok_or(match self.contents.message_renderer { - Some(msg) => ExtractionError::NotFound { - id: id.to_owned(), - msg: msg.text.into(), - }, - None => ExtractionError::InvalidData(Cow::Borrowed("no content")), - })?; + .into_res() + .map_err(|msg| ExtractionError::NotFound { + id: id.to_owned(), + msg: msg.into(), + })? + .into_iter() + .find_map(|item| item.music_description_shelf_renderer) + .ok_or(ExtractionError::InvalidData(Cow::Borrowed("no content")))?; Ok(MapResult { c: Lyrics { @@ -333,36 +328,39 @@ impl MapResponse for response::MusicLyrics { impl MapResponse for response::MusicRelated { fn map_response( self, - _id: &str, + id: &str, lang: Language, _deobf: Option<&crate::deobfuscate::DeobfData>, _vdata: Option<&str>, ) -> Result, ExtractionError> { + let contents = self + .contents + .into_res() + .map_err(|msg| ExtractionError::NotFound { + id: id.to_owned(), + msg: msg.into(), + })?; + // Find artist - let artist_id = self - .contents - .section_list_renderer - .contents - .iter() - .find_map(|section| match section { - response::music_item::ItemSection::MusicCarouselShelfRenderer(shelf) => { - shelf.header.as_ref().and_then(|h| { - h.music_carousel_shelf_basic_header_renderer - .title - .0 - .iter() - .find_map(|c| { - let artist = ArtistId::from(c.clone()); - if artist.id.is_some() { - Some(artist) - } else { - None - } - }) - }) - } - _ => None, - }); + let artist_id = contents.iter().find_map(|section| match section { + response::music_item::ItemSection::MusicCarouselShelfRenderer(shelf) => { + shelf.header.as_ref().and_then(|h| { + h.music_carousel_shelf_basic_header_renderer + .title + .0 + .iter() + .find_map(|c| { + let artist = ArtistId::from(c.clone()); + if artist.id.is_some() { + Some(artist) + } else { + None + } + }) + }) + } + _ => None, + }); let mut mapper_tracks = MusicListMapper::new(lang); let mut mapper = match artist_id { @@ -370,7 +368,7 @@ impl MapResponse for response::MusicRelated { None => MusicListMapper::new(lang), }; - let mut sections = self.contents.section_list_renderer.contents.into_iter(); + let mut sections = contents.into_iter(); if let Some(response::music_item::ItemSection::MusicCarouselShelfRenderer(shelf)) = sections.next() { diff --git a/src/client/response/music_details.rs b/src/client/response/music_details.rs index 387f041..4254b00 100644 --- a/src/client/response/music_details.rs +++ b/src/client/response/music_details.rs @@ -7,7 +7,7 @@ use super::AlertRenderer; use super::ContentsRenderer; use super::{ music_item::{ItemSection, PlaylistPanelRenderer}, - ContentRenderer, SectionList, + ContentRenderer, }; /// Response model for YouTube Music track details @@ -108,14 +108,14 @@ pub(crate) struct PlaylistPanel { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct MusicLyrics { - pub contents: LyricsContents, + pub contents: ListOrMessage, } #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub(crate) struct LyricsContents { - pub message_renderer: Option, - pub section_list_renderer: Option>, +pub(crate) enum ListOrMessage { + SectionListRenderer(ContentsRenderer), + MessageRenderer(AlertRenderer), } #[derive(Debug, Deserialize)] @@ -137,5 +137,14 @@ pub(crate) struct LyricsRenderer { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct MusicRelated { - pub contents: SectionList, + pub contents: ListOrMessage, +} + +impl ListOrMessage { + pub fn into_res(self) -> Result, String> { + match self { + ListOrMessage::SectionListRenderer(c) => Ok(c.contents), + ListOrMessage::MessageRenderer(msg) => Err(msg.text), + } + } } From 16e0e28c4866bb69d8e4c06eef94176f329a1c27 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 26 Apr 2024 16:09:13 +0200 Subject: [PATCH 041/347] feat: CLI: setting player type --- cli/src/main.rs | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/cli/src/main.rs b/cli/src/main.rs index cd8bd4c..138e915 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -8,7 +8,7 @@ use futures::stream::{self, StreamExt}; use indicatif::{MultiProgress, ProgressBar, ProgressStyle}; use reqwest::{Client, ClientBuilder}; use rustypipe::{ - client::RustyPipe, + client::{ClientType, RustyPipe}, model::{UrlTarget, VideoId, YouTubeItem}, param::{search_filter, ChannelVideoTab, Country, Language, StreamFilter}, }; @@ -81,6 +81,8 @@ enum Commands { /// Get the player #[clap(long)] player: bool, + #[clap(long)] + player_type: Option, }, /// Search YouTube Search { @@ -189,6 +191,14 @@ enum MusicSearchCategory { PlaylistsCommunity, } +#[derive(Copy, Clone, PartialEq, Eq, ValueEnum)] +enum PlayerType { + Desktop, + Tv, + Android, + Ios, +} + impl From for search_filter::ItemType { fn from(value: SearchItemType) -> Self { match value { @@ -231,6 +241,17 @@ impl From for search_filter::Order { } } +impl From for ClientType { + fn from(value: PlayerType) -> Self { + match value { + PlayerType::Desktop => Self::Desktop, + PlayerType::Tv => Self::TvHtml5Embed, + PlayerType::Android => Self::Android, + PlayerType::Ios => Self::Ios, + } + } +} + #[allow(clippy::too_many_arguments)] async fn download_single_video( video_id: &str, @@ -540,6 +561,7 @@ async fn main() { comments, lyrics, player, + player_type, } => { let target = rp.query().resolve_string(&id, false).await.unwrap(); @@ -558,7 +580,12 @@ async fn main() { let details = rp.query().music_details(&id).await.unwrap(); print_data(&details, format, pretty); } else if player { - let player = rp.query().player(&id).await.unwrap(); + let player = if let Some(player_type) = player_type { + rp.query().player_from_client(&id, player_type.into()).await + } else { + rp.query().player(&id).await + } + .unwrap(); print_data(&player, format, pretty); } else { let mut details = rp.query().video_details(&id).await.unwrap(); From b4a6658e33c8cbe7f6463edee2c6ab824032508b Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 2 May 2024 14:14:22 +0200 Subject: [PATCH 042/347] test: update track durations --- tests/snapshots/youtube__music_album_ep.snap | 10 +++++----- tests/snapshots/youtube__music_album_ep_intl.snap | 10 +++++----- .../youtube__music_album_version_no_artist.snap | 8 ++++---- .../youtube__music_album_version_no_artist_intl.snap | 8 ++++---- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/tests/snapshots/youtube__music_album_ep.snap b/tests/snapshots/youtube__music_album_ep.snap index 10e5e03..03a55ab 100644 --- a/tests/snapshots/youtube__music_album_ep.snap +++ b/tests/snapshots/youtube__music_album_ep.snap @@ -22,7 +22,7 @@ MusicAlbum( TrackItem( id: "aGd3VKSOTxY", name: "Ich wache auf", - duration: Some(221), + duration: Some(222), cover: [], artists: [ ArtistId( @@ -43,7 +43,7 @@ MusicAlbum( TrackItem( id: "Jz-26iiDuYs", name: "Waldbrand", - duration: Some(208), + duration: Some(209), cover: [], artists: [ ArtistId( @@ -64,7 +64,7 @@ MusicAlbum( TrackItem( id: "Bu26uFtpt58", name: "Verlernt", - duration: Some(223), + duration: Some(224), cover: [], artists: [ ArtistId( @@ -85,7 +85,7 @@ MusicAlbum( TrackItem( id: "RgwNqqiVqdY", name: "In Farbe", - duration: Some(221), + duration: Some(222), cover: [], artists: [ ArtistId( @@ -106,7 +106,7 @@ MusicAlbum( TrackItem( id: "2TuOh30XbCI", name: "Stadt im Hinterland", - duration: Some(197), + duration: Some(198), cover: [], artists: [ ArtistId( diff --git a/tests/snapshots/youtube__music_album_ep_intl.snap b/tests/snapshots/youtube__music_album_ep_intl.snap index c48bcd4..83775be 100644 --- a/tests/snapshots/youtube__music_album_ep_intl.snap +++ b/tests/snapshots/youtube__music_album_ep_intl.snap @@ -22,7 +22,7 @@ MusicAlbum( TrackItem( id: "aGd3VKSOTxY", name: "[name]", - duration: Some(221), + duration: Some(222), cover: [], artists: [ ArtistId( @@ -43,7 +43,7 @@ MusicAlbum( TrackItem( id: "Jz-26iiDuYs", name: "[name]", - duration: Some(208), + duration: Some(209), cover: [], artists: [ ArtistId( @@ -64,7 +64,7 @@ MusicAlbum( TrackItem( id: "Bu26uFtpt58", name: "[name]", - duration: Some(223), + duration: Some(224), cover: [], artists: [ ArtistId( @@ -85,7 +85,7 @@ MusicAlbum( TrackItem( id: "RgwNqqiVqdY", name: "[name]", - duration: Some(221), + duration: Some(222), cover: [], artists: [ ArtistId( @@ -106,7 +106,7 @@ MusicAlbum( TrackItem( id: "2TuOh30XbCI", name: "[name]", - duration: Some(197), + duration: Some(198), cover: [], artists: [ ArtistId( diff --git a/tests/snapshots/youtube__music_album_version_no_artist.snap b/tests/snapshots/youtube__music_album_version_no_artist.snap index f1fb92f..b7a3813 100644 --- a/tests/snapshots/youtube__music_album_version_no_artist.snap +++ b/tests/snapshots/youtube__music_album_version_no_artist.snap @@ -26,7 +26,7 @@ MusicAlbum( TrackItem( id: "AKJ3IJZKPWc", name: "Oh Javaraala", - duration: Some(228), + duration: Some(229), cover: [], artists: [ ArtistId( @@ -51,7 +51,7 @@ MusicAlbum( TrackItem( id: "WnpZuHNB33E", name: "Siva Manoranjani", - duration: Some(266), + duration: Some(267), cover: [], artists: [ ArtistId( @@ -72,7 +72,7 @@ MusicAlbum( TrackItem( id: "pRqoDGXg1-I", name: "Gulabi Buggalunna", - duration: Some(154), + duration: Some(155), cover: [], artists: [ ArtistId( @@ -93,7 +93,7 @@ MusicAlbum( TrackItem( id: "20vIKLJxjBY", name: "Kuluku Nadakula", - duration: Some(178), + duration: Some(179), cover: [], artists: [ ArtistId( diff --git a/tests/snapshots/youtube__music_album_version_no_artist_intl.snap b/tests/snapshots/youtube__music_album_version_no_artist_intl.snap index da0a781..4cc82ef 100644 --- a/tests/snapshots/youtube__music_album_version_no_artist_intl.snap +++ b/tests/snapshots/youtube__music_album_version_no_artist_intl.snap @@ -26,7 +26,7 @@ MusicAlbum( TrackItem( id: "AKJ3IJZKPWc", name: "[name]", - duration: Some(228), + duration: Some(229), cover: [], artists: [ ArtistId( @@ -51,7 +51,7 @@ MusicAlbum( TrackItem( id: "WnpZuHNB33E", name: "[name]", - duration: Some(266), + duration: Some(267), cover: [], artists: [ ArtistId( @@ -72,7 +72,7 @@ MusicAlbum( TrackItem( id: "pRqoDGXg1-I", name: "[name]", - duration: Some(154), + duration: Some(155), cover: [], artists: [ ArtistId( @@ -93,7 +93,7 @@ MusicAlbum( TrackItem( id: "20vIKLJxjBY", name: "[name]", - duration: Some(178), + duration: Some(179), cover: [], artists: [ ArtistId( From 5dbb288a496d53a299effa2026f5258af7b1f176 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 2 May 2024 18:46:21 +0200 Subject: [PATCH 043/347] chore: introduce MSRV --- Cargo.toml | 2 ++ cli/Cargo.toml | 1 + codegen/Cargo.toml | 1 + downloader/Cargo.toml | 1 + 4 files changed, 5 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index 2485421..8c92bcf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,6 +2,7 @@ name = "rustypipe" version = "0.1.3" edition.workspace = true +rust-version.workspace = true authors.workspace = true license.workspace = true repository.workspace = true @@ -16,6 +17,7 @@ members = [".", "codegen", "downloader", "cli"] [workspace.package] edition = "2021" +rust-version = "1.67.1" authors = ["ThetaDev "] license = "GPL-3.0" repository = "https://code.thetadev.de/ThetaDev/rustypipe" diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 53556b8..802f588 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -2,6 +2,7 @@ name = "rustypipe-cli" version = "0.1.0" edition.workspace = true +rust-version.workspace = true authors.workspace = true license.workspace = true repository.workspace = true diff --git a/codegen/Cargo.toml b/codegen/Cargo.toml index c47f1df..d38e104 100644 --- a/codegen/Cargo.toml +++ b/codegen/Cargo.toml @@ -2,6 +2,7 @@ name = "rustypipe-codegen" version = "0.1.0" edition.workspace = true +rust-version.workspace = true authors.workspace = true license.workspace = true repository.workspace = true diff --git a/downloader/Cargo.toml b/downloader/Cargo.toml index 1479524..c068ca2 100644 --- a/downloader/Cargo.toml +++ b/downloader/Cargo.toml @@ -2,6 +2,7 @@ name = "rustypipe-downloader" version = "0.1.0" edition.workspace = true +rust-version.workspace = true authors.workspace = true license.workspace = true repository.workspace = true From 45b9f2a627b4e7075ba0b1c5f16efcc19aef7922 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 2 May 2024 19:39:48 +0200 Subject: [PATCH 044/347] chore: fix clippy lints --- Cargo.toml | 3 +-- cli/Cargo.toml | 2 +- codegen/Cargo.toml | 2 +- codegen/src/model.rs | 8 ++++---- downloader/Cargo.toml | 2 +- src/client/player.rs | 2 +- src/client/response/music_item.rs | 4 ++-- src/model/mod.rs | 6 +++--- src/serializer/text.rs | 9 ++++++--- src/util/mod.rs | 1 + 10 files changed, 21 insertions(+), 18 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 8c92bcf..4203e8e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,8 +1,8 @@ [package] name = "rustypipe" version = "0.1.3" +rust-version = "1.67.1" edition.workspace = true -rust-version.workspace = true authors.workspace = true license.workspace = true repository.workspace = true @@ -17,7 +17,6 @@ members = [".", "codegen", "downloader", "cli"] [workspace.package] edition = "2021" -rust-version = "1.67.1" authors = ["ThetaDev "] license = "GPL-3.0" repository = "https://code.thetadev.de/ThetaDev/rustypipe" diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 802f588..3ba9b45 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -1,8 +1,8 @@ [package] name = "rustypipe-cli" version = "0.1.0" +rust-version = "1.74.0" edition.workspace = true -rust-version.workspace = true authors.workspace = true license.workspace = true repository.workspace = true diff --git a/codegen/Cargo.toml b/codegen/Cargo.toml index d38e104..7a0e5d1 100644 --- a/codegen/Cargo.toml +++ b/codegen/Cargo.toml @@ -1,8 +1,8 @@ [package] name = "rustypipe-codegen" version = "0.1.0" +rust-version = "1.74.0" edition.workspace = true -rust-version.workspace = true authors.workspace = true license.workspace = true repository.workspace = true diff --git a/codegen/src/model.rs b/codegen/src/model.rs index f7599cf..0f445a6 100644 --- a/codegen/src/model.rs +++ b/codegen/src/model.rs @@ -67,12 +67,12 @@ pub struct TimeAgo { pub unit: TimeUnit, } -impl ToString for TimeAgo { - fn to_string(&self) -> String { +impl std::fmt::Display for TimeAgo { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { if self.n > 1 { - format!("{}{}", self.n, self.unit.as_str()) + write!(f, "{}{}", self.n, self.unit.as_str()) } else { - self.unit.as_str().to_owned() + f.write_str(self.unit.as_str()) } } } diff --git a/downloader/Cargo.toml b/downloader/Cargo.toml index c068ca2..7f0190d 100644 --- a/downloader/Cargo.toml +++ b/downloader/Cargo.toml @@ -1,8 +1,8 @@ [package] name = "rustypipe-downloader" version = "0.1.0" +rust-version = "1.67.1" edition.workspace = true -rust-version.workspace = true authors.workspace = true license.workspace = true repository.workspace = true diff --git a/src/client/player.rs b/src/client/player.rs index ba1bee8..d95043e 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -429,7 +429,7 @@ fn deobf_nsig( } else { let nsig = deobf.deobfuscate_nsig(n)?; last_nsig[0] = n.to_string(); - last_nsig[1] = nsig.clone(); + last_nsig[1].clone_from(&nsig); nsig }; diff --git a/src/client/response/music_item.rs b/src/client/response/music_item.rs index 4aa0b50..dc29688 100644 --- a/src/client/response/music_item.rs +++ b/src/client/response/music_item.rs @@ -721,7 +721,7 @@ impl MusicListMapper { .unwrap_or_default() })) { - artists = fb_artists.clone(); + artists.clone_from(fb_artists); } } @@ -787,7 +787,7 @@ impl MusicListMapper { // fall back to menu data if let Some(a1) = artists.first_mut() { if a1.id.is_none() { - a1.id = artist_id.clone(); + a1.id.clone_from(&artist_id); } } diff --git a/src/model/mod.rs b/src/model/mod.rs index 8b695b4..1a6029d 100644 --- a/src/model/mod.rs +++ b/src/model/mod.rs @@ -68,9 +68,9 @@ pub enum UrlTarget { }, } -impl ToString for UrlTarget { - fn to_string(&self) -> String { - self.to_url() +impl std::fmt::Display for UrlTarget { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(&self.to_url()) } } diff --git a/src/serializer/text.rs b/src/serializer/text.rs index b708625..f146e7f 100644 --- a/src/serializer/text.rs +++ b/src/serializer/text.rs @@ -658,9 +658,12 @@ impl TextComponents { } } -impl ToString for TextComponents { - fn to_string(&self) -> String { - self.0.iter().map(TextComponent::as_str).collect::() +impl std::fmt::Display for TextComponents { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + for t in &self.0 { + f.write_str(t.as_str())?; + } + Ok(()) } } diff --git a/src/util/mod.rs b/src/util/mod.rs index d11c66c..75dcb00 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -284,6 +284,7 @@ pub fn div_ceil(a: u32, b: u32) -> u32 { } } +#[allow(dead_code)] pub trait TryRemove { /// Removes and returns the element at position `index` within the vector, /// shifting all elements after it to the left. From 29a7db231a182bb74c8219ff73ba5dbcf3619f3b Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 17 May 2024 18:27:24 +0200 Subject: [PATCH 045/347] test: fix asserts: client version parts, iOS client bitrate --- cli/Cargo.toml | 2 +- cliff.toml | 2 +- src/client/mod.rs | 4 +++- src/serializer/text.rs | 13 +++++-------- tests/youtube.rs | 28 +++++++++++++++------------- 5 files changed, 25 insertions(+), 24 deletions(-) diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 3ba9b45..5a3fee0 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "rustypipe-cli" version = "0.1.0" -rust-version = "1.74.0" +rust-version = "1.67.1" edition.workspace = true authors.workspace = true license.workspace = true diff --git a/cliff.toml b/cliff.toml index 066cdd5..9f0f6cf 100644 --- a/cliff.toml +++ b/cliff.toml @@ -73,7 +73,7 @@ commit_parsers = [ { message = "^perf", group = "⚡ Performance" }, { message = "^refactor", group = "🚜 Refactor" }, { message = "^style", group = "🎨 Styling" }, - { message = "^test", group = "🧪 Testing" }, + { message = "^test", skip = true }, { message = "^chore\\(release\\)", skip = true }, { message = "^chore\\(pr\\)", skip = true }, { message = "^chore\\(pull\\)", skip = true }, diff --git a/src/client/mod.rs b/src/client/mod.rs index b64ecbb..c5999ef 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -1592,9 +1592,11 @@ fn validate_country(country: Country) -> Country { mod tests { use super::*; + // 1.20240506.01.00-canary_control_1.20240508.01.01 + // 1.20240508.01.01-canary_experiment_1.20240506.01.00 fn get_major_version(version: &str) -> u32 { let parts = version.split('.').collect::>(); - assert_eq!(parts.len(), 4); + assert!(parts.len() >= 4, "version: {version}"); parts[0].parse().unwrap() } diff --git a/src/serializer/text.rs b/src/serializer/text.rs index f146e7f..2395d41 100644 --- a/src/serializer/text.rs +++ b/src/serializer/text.rs @@ -476,15 +476,12 @@ impl TryFrom for crate::model::ChannelId { match value { TextComponent::Browse { text, - page_type, + page_type: PageType::Channel | PageType::Artist, browse_id, - } => match page_type { - PageType::Channel | PageType::Artist => Ok(crate::model::ChannelId { - id: browse_id, - name: text, - }), - _ => Err(()), - }, + } => Ok(crate::model::ChannelId { + id: browse_id, + name: text, + }), _ => Err(()), } } diff --git a/tests/youtube.rs b/tests/youtube.rs index f4979ef..f748fb5 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -76,9 +76,9 @@ async fn get_player_from_client(#[case] client_type: ClientType, rp: RustyPipe) .expect("audio #140"); // Bitrates may change between requests - assert_approx(f64::from(video.bitrate), 1_851_854.0); - assert_eq!(video.average_bitrate, 923_766); - assert_eq!(video.size, Some(29_909_835)); + assert_approx(video.bitrate, 1_500_162); + assert_eq!(video.average_bitrate, 1_360_266); + assert_eq!(video.size, Some(44_042_868)); assert_eq!(video.width, 1280); assert_eq!(video.height, 720); assert_eq!(video.fps, 30); @@ -88,9 +88,9 @@ async fn get_player_from_client(#[case] client_type: ClientType, rp: RustyPipe) assert_eq!(video.format, VideoFormat::Webm); assert_eq!(video.codec, VideoCodec::Vp9); - assert_approx(f64::from(audio.bitrate), 130_685.0); - assert_approx(f64::from(audio.average_bitrate), 129_496.0); - assert_approx(audio.size as f64, 4_193_863.0); + assert_approx(audio.bitrate, 130_685); + assert_approx(audio.average_bitrate, 129_496); + assert_approx(audio.size as f64, 4_193_863); assert_eq!(audio.mime, "audio/mp4; codecs=\"mp4a.40.2\""); assert_eq!(audio.format, AudioFormat::M4a); assert_eq!(audio.codec, AudioCodec::Mp4a); @@ -109,9 +109,9 @@ async fn get_player_from_client(#[case] client_type: ClientType, rp: RustyPipe) .find(|s| s.itag == 251) .expect("audio stream not found"); - assert_approx(f64::from(video.bitrate), 1_340_829.0); - assert_approx(f64::from(video.average_bitrate), 1_046_557.0); - assert_approx(video.size.expect("video size") as f64, 33_885_572.0); + assert_approx(video.bitrate, 1_340_829); + assert_approx(video.average_bitrate, 1_046_557); + assert_approx(video.size.expect("video size") as f64, 33_885_572); assert_eq!(video.width, 1280); assert_eq!(video.height, 720); assert_eq!(video.fps, 30); @@ -122,9 +122,9 @@ async fn get_player_from_client(#[case] client_type: ClientType, rp: RustyPipe) assert_eq!(video.codec, VideoCodec::Av01); assert!(!video.throttled); - assert_approx(f64::from(audio.bitrate), 142_718.0); - assert_approx(f64::from(audio.average_bitrate), 130_708.0); - assert_approx(audio.size as f64, 4_232_344.0); + assert_approx(audio.bitrate, 142_718); + assert_approx(audio.average_bitrate, 130_708); + assert_approx(audio.size as f64, 4_232_344); assert_eq!(audio.mime, "audio/webm; codecs=\"opus\""); assert_eq!(audio.format, AudioFormat::Webm); assert_eq!(audio.codec, AudioCodec::Opus); @@ -2705,7 +2705,9 @@ fn rp_visitor_data(vdata: &str) -> RustyPipe { /// Assert equality within 10% margin #[track_caller] -fn assert_approx(left: f64, right: f64) { +fn assert_approx, B: Into>(left: A, right: B) { + let left = left.into(); + let right = right.into(); if left != right { let f = left / right; assert!( From e75ffbb5da6198086385ea96383ab9d0791592a5 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 14 Jun 2024 16:16:05 +0200 Subject: [PATCH 046/347] chore: vscode: enable rss feature by default --- .vscode/settings.json | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..3f2ccb1 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "rust-analyzer.cargo.features": ["rss"] +} From 74946f9ea094e42142c83ea0d1759145e51bb47b Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 14 Jun 2024 17:58:07 +0200 Subject: [PATCH 047/347] test: fix tests --- Justfile | 9 +- .../youtube__music_album_no_artist.snap | 323 ++++++++++++++---- .../youtube__music_album_no_artist_intl.snap | 293 +++++++++++++--- ...outube__music_album_version_no_artist.snap | 138 -------- ...e__music_album_version_no_artist_intl.snap | 138 -------- .../youtube__music_artist_only_singles.snap | 2 +- tests/youtube.rs | 21 +- 7 files changed, 523 insertions(+), 401 deletions(-) delete mode 100644 tests/snapshots/youtube__music_album_version_no_artist.snap delete mode 100644 tests/snapshots/youtube__music_album_version_no_artist_intl.snap diff --git a/Justfile b/Justfile index 7d48e2b..72d9880 100644 --- a/Justfile +++ b/Justfile @@ -1,14 +1,15 @@ test: - cargo test --features=rss + # cargo test --features=rss + cargo nextest run --features=rss --no-fail-fast --failure-output final unittest: - cargo test --features=rss --lib + cargo nextest run --features=rss --no-fail-fast --failure-output final --lib testyt: - cargo test --features=rss --test youtube + cargo nextest run --features=rss --no-fail-fast --failure-output final --test youtube testyt-localized: - YT_LANG=th cargo test --features=rss --test youtube + YT_LANG=th cargo nextest run --features=rss --no-fail-fast --failure-output final --test youtube testintl: #!/usr/bin/env bash diff --git a/tests/snapshots/youtube__music_album_no_artist.snap b/tests/snapshots/youtube__music_album_no_artist.snap index 1b4773b..11818a7 100644 --- a/tests/snapshots/youtube__music_album_no_artist.snap +++ b/tests/snapshots/youtube__music_album_no_artist.snap @@ -3,32 +3,36 @@ source: tests/youtube.rs expression: album --- MusicAlbum( - id: "MPREb_bqWA6mAZFWS", - playlist_id: Some("OLAK5uy_mUiRbMqeQXFUH6h9KB87RcEmNtm45Qvs0"), - name: "Pedha Rasi Peddamma Katha", + id: "MPREb_Z81wHtF9fhC", + playlist_id: Some("OLAK5uy_l4sJyKllp77ht_HPYCUFo-sA6N8fNFNsY"), + name: "June Compilation", cover: "[cover]", artists: [], artist_id: None, description: None, - album_type: Ep, - year: Some(1968), - by_va: false, + album_type: Album, + year: Some(2024), + by_va: true, tracks: [ TrackItem( - id: "EX7-pOQHPyE", - name: "Siva Manoranjani", - duration: Some(267), + id: "ilNEztApdjI", + name: "Shanghai", + duration: Some(259), cover: [], artists: [ ArtistId( - id: Some("UC1C05NyYICFB2mVGn9_ttEw"), - name: "Dr. M. Balamuralikrishna", + id: Some("UC9MB9dkvCCpM3qVF71TZL7g"), + name: "Crubbixz", + ), + ArtistId( + id: Some("UCMYTb0sib5ppwQL9FAGmYTw"), + name: "Tank", ), ], - artist_id: Some("UC1C05NyYICFB2mVGn9_ttEw"), + artist_id: Some("UC9MB9dkvCCpM3qVF71TZL7g"), album: Some(AlbumId( - id: "MPREb_bqWA6mAZFWS", - name: "Pedha Rasi Peddamma Katha", + id: "MPREb_Z81wHtF9fhC", + name: "June Compilation", )), view_count: "[view_count]", is_video: false, @@ -36,20 +40,20 @@ MusicAlbum( by_va: false, ), TrackItem( - id: "0AyWB-Quj4A", - name: "Kuluku Nadakula", - duration: Some(179), + id: "s-qSnZyyvzs", + name: "Always Be With U(Extended Mix)", + duration: Some(165), cover: [], artists: [ ArtistId( - id: Some("UCDqpyYkgWy2h03HamIfODjw"), - name: "Ghantasala, Chorus", + id: Some("UCpAZ1Ap_nuAEk9RiT-nUsWQ"), + name: "陈海择HeizerChan", ), ], - artist_id: Some("UCDqpyYkgWy2h03HamIfODjw"), + artist_id: Some("UCpAZ1Ap_nuAEk9RiT-nUsWQ"), album: Some(AlbumId( - id: "MPREb_bqWA6mAZFWS", - name: "Pedha Rasi Peddamma Katha", + id: "MPREb_Z81wHtF9fhC", + name: "June Compilation", )), view_count: "[view_count]", is_video: false, @@ -57,20 +61,20 @@ MusicAlbum( by_va: false, ), TrackItem( - id: "s0Sb-GZLXSM", - name: "Gulabi Buggalunna", - duration: Some(155), + id: "4jXoRBcQ8PY", + name: "Elude (Extended Mix)", + duration: Some(329), cover: [], artists: [ ArtistId( - id: Some("UC_KQPMiRQl3CFAIKTVfCHwA"), - name: "L.r. Eswari", + id: None, + name: "Julius Beat & SinDj", ), ], - artist_id: Some("UC_KQPMiRQl3CFAIKTVfCHwA"), + artist_id: Some("UCCRiYE0dTFA_pc23-97GfSg"), album: Some(AlbumId( - id: "MPREb_bqWA6mAZFWS", - name: "Pedha Rasi Peddamma Katha", + id: "MPREb_Z81wHtF9fhC", + name: "June Compilation", )), view_count: "[view_count]", is_video: false, @@ -78,57 +82,252 @@ MusicAlbum( by_va: false, ), TrackItem( - id: "P4XAaXjlCDA", - name: "Oh Javaraala", - duration: Some(229), + id: "DRES9S4VQI8", + name: "Venus (Extended Mix)", + duration: Some(202), cover: [], artists: [ ArtistId( - id: Some("UCl4iPtukwe7m0kIxUMskkgA"), - name: "S.p. Balasubrahmanyam, S. Janaki", + id: Some("UC_y8p7fi6t3z10R2UEMQG_A"), + name: "Andymion", ), ], - artist_id: Some("UCl4iPtukwe7m0kIxUMskkgA"), + artist_id: Some("UC_y8p7fi6t3z10R2UEMQG_A"), album: Some(AlbumId( - id: "MPREb_bqWA6mAZFWS", - name: "Pedha Rasi Peddamma Katha", + id: "MPREb_Z81wHtF9fhC", + name: "June Compilation", )), view_count: "[view_count]", is_video: false, track_nr: Some(4), by_va: false, ), - ], - variants: [ - AlbumItem( - id: "MPREb_h8ltx5oKvyY", - name: "Pedha Rasi Peddamma Katha", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/iZtBdPWBGNB-GAWvOp9seuYj5QqKrUYGSe-B5J026yxHqFSWv4zsxHy-LxX5LbFlnepOPRWNLrajO-_-=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/iZtBdPWBGNB-GAWvOp9seuYj5QqKrUYGSe-B5J026yxHqFSWv4zsxHy-LxX5LbFlnepOPRWNLrajO-_-=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], + TrackItem( + id: "yhZVimwD4B4", + name: "Arise", + duration: Some(213), + cover: [], artists: [ ArtistId( - id: Some("UCl4iPtukwe7m0kIxUMskkgA"), - name: "S P Balasubramaniam", + id: Some("UCYAzELapKjDUHMGRbzjJtgw"), + name: "Takahiro Yoshihira", ), ArtistId( - id: Some("UCWgAqlYG7mXTUxrFiLyDSsg"), - name: "S Janaki", + id: Some("UCN2Ji-D6Tzn5CTC7iCWoX8w"), + name: "TOMI-NORI", ), ], - artist_id: Some("UCl4iPtukwe7m0kIxUMskkgA"), - album_type: Ep, - year: None, + artist_id: Some("UCYAzELapKjDUHMGRbzjJtgw"), + album: Some(AlbumId( + id: "MPREb_Z81wHtF9fhC", + name: "June Compilation", + )), + view_count: "[view_count]", + is_video: false, + track_nr: Some(5), + by_va: false, + ), + TrackItem( + id: "5d6YiFkdzLM", + name: "Acid Rave (Extended Mix)", + duration: Some(191), + cover: [], + artists: [ + ArtistId( + id: Some("UCFqaoKXGfCsd9VRQNXzhIjQ"), + name: "SteelDrum", + ), + ], + artist_id: Some("UCFqaoKXGfCsd9VRQNXzhIjQ"), + album: Some(AlbumId( + id: "MPREb_Z81wHtF9fhC", + name: "June Compilation", + )), + view_count: "[view_count]", + is_video: false, + track_nr: Some(6), + by_va: false, + ), + TrackItem( + id: "3Qe7-uN2PjU", + name: "Destiny (Extended Mix)", + duration: Some(446), + cover: [], + artists: [ + ArtistId( + id: Some("UCjqRwXhXgFW7RDDPn_TlAbw"), + name: "Tyranix", + ), + ArtistId( + id: Some("UCy69bQ95ovXIquWzY5jfAIA"), + name: "Jawzcirclesix", + ), + ], + artist_id: Some("UCjqRwXhXgFW7RDDPn_TlAbw"), + album: Some(AlbumId( + id: "MPREb_Z81wHtF9fhC", + name: "June Compilation", + )), + view_count: "[view_count]", + is_video: false, + track_nr: Some(7), + by_va: false, + ), + TrackItem( + id: "SKZ_MTsXFP4", + name: "Darksiders (Extended Mix)", + duration: Some(376), + cover: [], + artists: [ + ArtistId( + id: Some("UCEUUFTUZpm1MmANCfLN5_9Q"), + name: "Kruky", + ), + ], + artist_id: Some("UCEUUFTUZpm1MmANCfLN5_9Q"), + album: Some(AlbumId( + id: "MPREb_Z81wHtF9fhC", + name: "June Compilation", + )), + view_count: "[view_count]", + is_video: false, + track_nr: Some(8), + by_va: false, + ), + TrackItem( + id: "n5-ujUwazDA", + name: "Mind Game (Extended Mix)", + duration: Some(335), + cover: [], + artists: [ + ArtistId( + id: Some("UCxByvsK9hDZk2MnnF9jsFGw"), + name: "Herbrido", + ), + ], + artist_id: Some("UCxByvsK9hDZk2MnnF9jsFGw"), + album: Some(AlbumId( + id: "MPREb_Z81wHtF9fhC", + name: "June Compilation", + )), + view_count: "[view_count]", + is_video: false, + track_nr: Some(9), + by_va: false, + ), + TrackItem( + id: "VaREivfDJeY", + name: "Caronte (Extended Mix)", + duration: Some(268), + cover: [], + artists: [ + ArtistId( + id: Some("UCG2o9g3Yl6jBL21_z7XBMVw"), + name: "Foodydrop", + ), + ], + artist_id: Some("UCG2o9g3Yl6jBL21_z7XBMVw"), + album: Some(AlbumId( + id: "MPREb_Z81wHtF9fhC", + name: "June Compilation", + )), + view_count: "[view_count]", + is_video: false, + track_nr: Some(10), + by_va: false, + ), + TrackItem( + id: "cWcD0WIK2PA", + name: "Left Right Go (Extended Mix)", + duration: Some(198), + cover: [], + artists: [ + ArtistId( + id: Some("UCiIDz3M3cDn2QeYjLbhIdBQ"), + name: "Fly飞", + ), + ArtistId( + id: Some("UChLPGmjYa8bmKShqMBFP_DA"), + name: "MARSJONE 鸡万", + ), + ], + artist_id: Some("UCiIDz3M3cDn2QeYjLbhIdBQ"), + album: Some(AlbumId( + id: "MPREb_Z81wHtF9fhC", + name: "June Compilation", + )), + view_count: "[view_count]", + is_video: false, + track_nr: Some(11), + by_va: false, + ), + TrackItem( + id: "QRELvH564T4", + name: "Terminal Zero (Extended Mix)", + duration: Some(325), + cover: [], + artists: [ + ArtistId( + id: Some("UCbiVmjdLA5PKZcUnZMExqCA"), + name: "Reivax", + ), + ], + artist_id: Some("UCbiVmjdLA5PKZcUnZMExqCA"), + album: Some(AlbumId( + id: "MPREb_Z81wHtF9fhC", + name: "June Compilation", + )), + view_count: "[view_count]", + is_video: false, + track_nr: Some(12), + by_va: false, + ), + TrackItem( + id: "eCY0-GyG46s", + name: "The Unknown (Extended Mix)", + duration: Some(198), + cover: [], + artists: [ + ArtistId( + id: Some("UC-thVg_PSz894f5mVqMFMeQ"), + name: "Elia Akita", + ), + ], + artist_id: Some("UC-thVg_PSz894f5mVqMFMeQ"), + album: Some(AlbumId( + id: "MPREb_Z81wHtF9fhC", + name: "June Compilation", + )), + view_count: "[view_count]", + is_video: false, + track_nr: Some(13), + by_va: false, + ), + TrackItem( + id: "UIrHYTEyUfA", + name: "This is Acid (Extended Mix)", + duration: Some(213), + cover: [], + artists: [ + ArtistId( + id: Some("UC2pJL-Kp6yJtARS8MC0N8Ag"), + name: "Monored", + ), + ArtistId( + id: Some("UCpmZakvqLLUZ4G_YkKjoy6g"), + name: "Egemen Kızıltekin", + ), + ], + artist_id: Some("UC2pJL-Kp6yJtARS8MC0N8Ag"), + album: Some(AlbumId( + id: "MPREb_Z81wHtF9fhC", + name: "June Compilation", + )), + view_count: "[view_count]", + is_video: false, + track_nr: Some(14), by_va: false, ), ], + variants: [], ) diff --git a/tests/snapshots/youtube__music_album_no_artist_intl.snap b/tests/snapshots/youtube__music_album_no_artist_intl.snap index 779f0aa..4eb19bc 100644 --- a/tests/snapshots/youtube__music_album_no_artist_intl.snap +++ b/tests/snapshots/youtube__music_album_no_artist_intl.snap @@ -3,31 +3,35 @@ source: tests/youtube.rs expression: album --- MusicAlbum( - id: "MPREb_bqWA6mAZFWS", - playlist_id: Some("OLAK5uy_mUiRbMqeQXFUH6h9KB87RcEmNtm45Qvs0"), + id: "MPREb_Z81wHtF9fhC", + playlist_id: Some("OLAK5uy_l4sJyKllp77ht_HPYCUFo-sA6N8fNFNsY"), name: "[name]", cover: "[cover]", artists: [], artist_id: None, description: "[description]", - album_type: Ep, - year: Some(1968), - by_va: false, + album_type: Album, + year: Some(2024), + by_va: true, tracks: [ TrackItem( - id: "EX7-pOQHPyE", + id: "ilNEztApdjI", name: "[name]", - duration: Some(267), + duration: Some(259), cover: [], artists: [ ArtistId( - id: Some("UC1C05NyYICFB2mVGn9_ttEw"), + id: Some("UC9MB9dkvCCpM3qVF71TZL7g"), + name: "[name]", + ), + ArtistId( + id: Some("UCMYTb0sib5ppwQL9FAGmYTw"), name: "[name]", ), ], - artist_id: Some("UC1C05NyYICFB2mVGn9_ttEw"), + artist_id: Some("UC9MB9dkvCCpM3qVF71TZL7g"), album: Some(AlbumId( - id: "MPREb_bqWA6mAZFWS", + id: "MPREb_Z81wHtF9fhC", name: "[name]", )), view_count: "[view_count]", @@ -36,19 +40,19 @@ MusicAlbum( by_va: false, ), TrackItem( - id: "0AyWB-Quj4A", + id: "s-qSnZyyvzs", name: "[name]", - duration: Some(179), + duration: Some(165), cover: [], artists: [ ArtistId( - id: Some("UCDqpyYkgWy2h03HamIfODjw"), + id: Some("UCpAZ1Ap_nuAEk9RiT-nUsWQ"), name: "[name]", ), ], - artist_id: Some("UCDqpyYkgWy2h03HamIfODjw"), + artist_id: Some("UCpAZ1Ap_nuAEk9RiT-nUsWQ"), album: Some(AlbumId( - id: "MPREb_bqWA6mAZFWS", + id: "MPREb_Z81wHtF9fhC", name: "[name]", )), view_count: "[view_count]", @@ -57,19 +61,19 @@ MusicAlbum( by_va: false, ), TrackItem( - id: "s0Sb-GZLXSM", + id: "4jXoRBcQ8PY", name: "[name]", - duration: Some(155), + duration: Some(329), cover: [], artists: [ ArtistId( - id: Some("UC_KQPMiRQl3CFAIKTVfCHwA"), + id: None, name: "[name]", ), ], - artist_id: Some("UC_KQPMiRQl3CFAIKTVfCHwA"), + artist_id: Some("UCCRiYE0dTFA_pc23-97GfSg"), album: Some(AlbumId( - id: "MPREb_bqWA6mAZFWS", + id: "MPREb_Z81wHtF9fhC", name: "[name]", )), view_count: "[view_count]", @@ -78,19 +82,19 @@ MusicAlbum( by_va: false, ), TrackItem( - id: "P4XAaXjlCDA", + id: "DRES9S4VQI8", name: "[name]", - duration: Some(229), + duration: Some(202), cover: [], artists: [ ArtistId( - id: Some("UCl4iPtukwe7m0kIxUMskkgA"), + id: Some("UC_y8p7fi6t3z10R2UEMQG_A"), name: "[name]", ), ], - artist_id: Some("UCl4iPtukwe7m0kIxUMskkgA"), + artist_id: Some("UC_y8p7fi6t3z10R2UEMQG_A"), album: Some(AlbumId( - id: "MPREb_bqWA6mAZFWS", + id: "MPREb_Z81wHtF9fhC", name: "[name]", )), view_count: "[view_count]", @@ -98,37 +102,232 @@ MusicAlbum( track_nr: Some(4), by_va: false, ), - ], - variants: [ - AlbumItem( - id: "MPREb_h8ltx5oKvyY", - name: "Pedha Rasi Peddamma Katha", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/iZtBdPWBGNB-GAWvOp9seuYj5QqKrUYGSe-B5J026yxHqFSWv4zsxHy-LxX5LbFlnepOPRWNLrajO-_-=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/iZtBdPWBGNB-GAWvOp9seuYj5QqKrUYGSe-B5J026yxHqFSWv4zsxHy-LxX5LbFlnepOPRWNLrajO-_-=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], + TrackItem( + id: "yhZVimwD4B4", + name: "[name]", + duration: Some(213), + cover: [], artists: [ ArtistId( - id: Some("UCl4iPtukwe7m0kIxUMskkgA"), + id: Some("UCYAzELapKjDUHMGRbzjJtgw"), name: "[name]", ), ArtistId( - id: Some("UCWgAqlYG7mXTUxrFiLyDSsg"), + id: Some("UCN2Ji-D6Tzn5CTC7iCWoX8w"), name: "[name]", ), ], - artist_id: Some("UCl4iPtukwe7m0kIxUMskkgA"), - album_type: Ep, - year: None, + artist_id: Some("UCYAzELapKjDUHMGRbzjJtgw"), + album: Some(AlbumId( + id: "MPREb_Z81wHtF9fhC", + name: "[name]", + )), + view_count: "[view_count]", + is_video: false, + track_nr: Some(5), + by_va: false, + ), + TrackItem( + id: "5d6YiFkdzLM", + name: "[name]", + duration: Some(191), + cover: [], + artists: [ + ArtistId( + id: Some("UCFqaoKXGfCsd9VRQNXzhIjQ"), + name: "[name]", + ), + ], + artist_id: Some("UCFqaoKXGfCsd9VRQNXzhIjQ"), + album: Some(AlbumId( + id: "MPREb_Z81wHtF9fhC", + name: "[name]", + )), + view_count: "[view_count]", + is_video: false, + track_nr: Some(6), + by_va: false, + ), + TrackItem( + id: "3Qe7-uN2PjU", + name: "[name]", + duration: Some(446), + cover: [], + artists: [ + ArtistId( + id: Some("UCjqRwXhXgFW7RDDPn_TlAbw"), + name: "[name]", + ), + ArtistId( + id: Some("UCy69bQ95ovXIquWzY5jfAIA"), + name: "[name]", + ), + ], + artist_id: Some("UCjqRwXhXgFW7RDDPn_TlAbw"), + album: Some(AlbumId( + id: "MPREb_Z81wHtF9fhC", + name: "[name]", + )), + view_count: "[view_count]", + is_video: false, + track_nr: Some(7), + by_va: false, + ), + TrackItem( + id: "SKZ_MTsXFP4", + name: "[name]", + duration: Some(376), + cover: [], + artists: [ + ArtistId( + id: Some("UCEUUFTUZpm1MmANCfLN5_9Q"), + name: "[name]", + ), + ], + artist_id: Some("UCEUUFTUZpm1MmANCfLN5_9Q"), + album: Some(AlbumId( + id: "MPREb_Z81wHtF9fhC", + name: "[name]", + )), + view_count: "[view_count]", + is_video: false, + track_nr: Some(8), + by_va: false, + ), + TrackItem( + id: "n5-ujUwazDA", + name: "[name]", + duration: Some(335), + cover: [], + artists: [ + ArtistId( + id: Some("UCxByvsK9hDZk2MnnF9jsFGw"), + name: "[name]", + ), + ], + artist_id: Some("UCxByvsK9hDZk2MnnF9jsFGw"), + album: Some(AlbumId( + id: "MPREb_Z81wHtF9fhC", + name: "[name]", + )), + view_count: "[view_count]", + is_video: false, + track_nr: Some(9), + by_va: false, + ), + TrackItem( + id: "VaREivfDJeY", + name: "[name]", + duration: Some(268), + cover: [], + artists: [ + ArtistId( + id: Some("UCG2o9g3Yl6jBL21_z7XBMVw"), + name: "[name]", + ), + ], + artist_id: Some("UCG2o9g3Yl6jBL21_z7XBMVw"), + album: Some(AlbumId( + id: "MPREb_Z81wHtF9fhC", + name: "[name]", + )), + view_count: "[view_count]", + is_video: false, + track_nr: Some(10), + by_va: false, + ), + TrackItem( + id: "cWcD0WIK2PA", + name: "[name]", + duration: Some(198), + cover: [], + artists: [ + ArtistId( + id: Some("UCiIDz3M3cDn2QeYjLbhIdBQ"), + name: "[name]", + ), + ArtistId( + id: Some("UChLPGmjYa8bmKShqMBFP_DA"), + name: "[name]", + ), + ], + artist_id: Some("UCiIDz3M3cDn2QeYjLbhIdBQ"), + album: Some(AlbumId( + id: "MPREb_Z81wHtF9fhC", + name: "[name]", + )), + view_count: "[view_count]", + is_video: false, + track_nr: Some(11), + by_va: false, + ), + TrackItem( + id: "QRELvH564T4", + name: "[name]", + duration: Some(325), + cover: [], + artists: [ + ArtistId( + id: Some("UCbiVmjdLA5PKZcUnZMExqCA"), + name: "[name]", + ), + ], + artist_id: Some("UCbiVmjdLA5PKZcUnZMExqCA"), + album: Some(AlbumId( + id: "MPREb_Z81wHtF9fhC", + name: "[name]", + )), + view_count: "[view_count]", + is_video: false, + track_nr: Some(12), + by_va: false, + ), + TrackItem( + id: "eCY0-GyG46s", + name: "[name]", + duration: Some(198), + cover: [], + artists: [ + ArtistId( + id: Some("UC-thVg_PSz894f5mVqMFMeQ"), + name: "[name]", + ), + ], + artist_id: Some("UC-thVg_PSz894f5mVqMFMeQ"), + album: Some(AlbumId( + id: "MPREb_Z81wHtF9fhC", + name: "[name]", + )), + view_count: "[view_count]", + is_video: false, + track_nr: Some(13), + by_va: false, + ), + TrackItem( + id: "UIrHYTEyUfA", + name: "[name]", + duration: Some(213), + cover: [], + artists: [ + ArtistId( + id: Some("UC2pJL-Kp6yJtARS8MC0N8Ag"), + name: "[name]", + ), + ArtistId( + id: Some("UCpmZakvqLLUZ4G_YkKjoy6g"), + name: "[name]", + ), + ], + artist_id: Some("UC2pJL-Kp6yJtARS8MC0N8Ag"), + album: Some(AlbumId( + id: "MPREb_Z81wHtF9fhC", + name: "[name]", + )), + view_count: "[view_count]", + is_video: false, + track_nr: Some(14), by_va: false, ), ], + variants: [], ) diff --git a/tests/snapshots/youtube__music_album_version_no_artist.snap b/tests/snapshots/youtube__music_album_version_no_artist.snap deleted file mode 100644 index b7a3813..0000000 --- a/tests/snapshots/youtube__music_album_version_no_artist.snap +++ /dev/null @@ -1,138 +0,0 @@ ---- -source: tests/youtube.rs -expression: album ---- -MusicAlbum( - id: "MPREb_h8ltx5oKvyY", - playlist_id: Some("OLAK5uy_lIDfTi_k8V1RJ54MeJJGK_BduAeYbm-0s"), - name: "Pedha Rasi Peddamma Katha", - cover: "[cover]", - artists: [ - ArtistId( - id: Some("UCl4iPtukwe7m0kIxUMskkgA"), - name: "S P Balasubramaniam", - ), - ArtistId( - id: Some("UCWgAqlYG7mXTUxrFiLyDSsg"), - name: "S Janaki", - ), - ], - artist_id: Some("UCl4iPtukwe7m0kIxUMskkgA"), - description: None, - album_type: Ep, - year: Some(1968), - by_va: false, - tracks: [ - TrackItem( - id: "AKJ3IJZKPWc", - name: "Oh Javaraala", - duration: Some(229), - cover: [], - artists: [ - ArtistId( - id: Some("UCl4iPtukwe7m0kIxUMskkgA"), - name: "S P Balasubramaniam", - ), - ArtistId( - id: Some("UCWgAqlYG7mXTUxrFiLyDSsg"), - name: "S Janaki", - ), - ], - artist_id: Some("UCl4iPtukwe7m0kIxUMskkgA"), - album: Some(AlbumId( - id: "MPREb_h8ltx5oKvyY", - name: "Pedha Rasi Peddamma Katha", - )), - view_count: "[view_count]", - is_video: false, - track_nr: Some(1), - by_va: false, - ), - TrackItem( - id: "WnpZuHNB33E", - name: "Siva Manoranjani", - duration: Some(267), - cover: [], - artists: [ - ArtistId( - id: Some("UC1C05NyYICFB2mVGn9_ttEw"), - name: "M Balamuralikrishna", - ), - ], - artist_id: Some("UC1C05NyYICFB2mVGn9_ttEw"), - album: Some(AlbumId( - id: "MPREb_h8ltx5oKvyY", - name: "Pedha Rasi Peddamma Katha", - )), - view_count: "[view_count]", - is_video: false, - track_nr: Some(2), - by_va: false, - ), - TrackItem( - id: "pRqoDGXg1-I", - name: "Gulabi Buggalunna", - duration: Some(155), - cover: [], - artists: [ - ArtistId( - id: Some("UC_KQPMiRQl3CFAIKTVfCHwA"), - name: "L R Eswari", - ), - ], - artist_id: Some("UC_KQPMiRQl3CFAIKTVfCHwA"), - album: Some(AlbumId( - id: "MPREb_h8ltx5oKvyY", - name: "Pedha Rasi Peddamma Katha", - )), - view_count: "[view_count]", - is_video: false, - track_nr: Some(3), - by_va: false, - ), - TrackItem( - id: "20vIKLJxjBY", - name: "Kuluku Nadakula", - duration: Some(179), - cover: [], - artists: [ - ArtistId( - id: None, - name: "Ghantasala & Chorus", - ), - ], - artist_id: Some("UCDqpyYkgWy2h03HamIfODjw"), - album: Some(AlbumId( - id: "MPREb_h8ltx5oKvyY", - name: "Pedha Rasi Peddamma Katha", - )), - view_count: "[view_count]", - is_video: false, - track_nr: Some(4), - by_va: false, - ), - ], - variants: [ - AlbumItem( - id: "MPREb_bqWA6mAZFWS", - name: "Pedha Rasi Peddamma Katha", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/cyKTDdyucqYv8xfv0t3Vs9CkhmvssXRKsGzlWN_DU6A9uapXvovV0Ys2fXc9-r7Jv7V4UB1OD48iYH5z=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/cyKTDdyucqYv8xfv0t3Vs9CkhmvssXRKsGzlWN_DU6A9uapXvovV0Ys2fXc9-r7Jv7V4UB1OD48iYH5z=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [], - artist_id: None, - album_type: Ep, - year: None, - by_va: true, - ), - ], -) diff --git a/tests/snapshots/youtube__music_album_version_no_artist_intl.snap b/tests/snapshots/youtube__music_album_version_no_artist_intl.snap deleted file mode 100644 index 4cc82ef..0000000 --- a/tests/snapshots/youtube__music_album_version_no_artist_intl.snap +++ /dev/null @@ -1,138 +0,0 @@ ---- -source: tests/youtube.rs -expression: album ---- -MusicAlbum( - id: "MPREb_h8ltx5oKvyY", - playlist_id: Some("OLAK5uy_lIDfTi_k8V1RJ54MeJJGK_BduAeYbm-0s"), - name: "[name]", - cover: "[cover]", - artists: [ - ArtistId( - id: Some("UCl4iPtukwe7m0kIxUMskkgA"), - name: "[name]", - ), - ArtistId( - id: Some("UCWgAqlYG7mXTUxrFiLyDSsg"), - name: "[name]", - ), - ], - artist_id: Some("UCl4iPtukwe7m0kIxUMskkgA"), - description: "[description]", - album_type: Ep, - year: Some(1968), - by_va: false, - tracks: [ - TrackItem( - id: "AKJ3IJZKPWc", - name: "[name]", - duration: Some(229), - cover: [], - artists: [ - ArtistId( - id: Some("UCl4iPtukwe7m0kIxUMskkgA"), - name: "[name]", - ), - ArtistId( - id: Some("UCWgAqlYG7mXTUxrFiLyDSsg"), - name: "[name]", - ), - ], - artist_id: Some("UCl4iPtukwe7m0kIxUMskkgA"), - album: Some(AlbumId( - id: "MPREb_h8ltx5oKvyY", - name: "[name]", - )), - view_count: "[view_count]", - is_video: false, - track_nr: Some(1), - by_va: false, - ), - TrackItem( - id: "WnpZuHNB33E", - name: "[name]", - duration: Some(267), - cover: [], - artists: [ - ArtistId( - id: Some("UC1C05NyYICFB2mVGn9_ttEw"), - name: "[name]", - ), - ], - artist_id: Some("UC1C05NyYICFB2mVGn9_ttEw"), - album: Some(AlbumId( - id: "MPREb_h8ltx5oKvyY", - name: "[name]", - )), - view_count: "[view_count]", - is_video: false, - track_nr: Some(2), - by_va: false, - ), - TrackItem( - id: "pRqoDGXg1-I", - name: "[name]", - duration: Some(155), - cover: [], - artists: [ - ArtistId( - id: Some("UC_KQPMiRQl3CFAIKTVfCHwA"), - name: "[name]", - ), - ], - artist_id: Some("UC_KQPMiRQl3CFAIKTVfCHwA"), - album: Some(AlbumId( - id: "MPREb_h8ltx5oKvyY", - name: "[name]", - )), - view_count: "[view_count]", - is_video: false, - track_nr: Some(3), - by_va: false, - ), - TrackItem( - id: "20vIKLJxjBY", - name: "[name]", - duration: Some(179), - cover: [], - artists: [ - ArtistId( - id: None, - name: "[name]", - ), - ], - artist_id: Some("UCDqpyYkgWy2h03HamIfODjw"), - album: Some(AlbumId( - id: "MPREb_h8ltx5oKvyY", - name: "[name]", - )), - view_count: "[view_count]", - is_video: false, - track_nr: Some(4), - by_va: false, - ), - ], - variants: [ - AlbumItem( - id: "MPREb_bqWA6mAZFWS", - name: "Pedha Rasi Peddamma Katha", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/cyKTDdyucqYv8xfv0t3Vs9CkhmvssXRKsGzlWN_DU6A9uapXvovV0Ys2fXc9-r7Jv7V4UB1OD48iYH5z=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/cyKTDdyucqYv8xfv0t3Vs9CkhmvssXRKsGzlWN_DU6A9uapXvovV0Ys2fXc9-r7Jv7V4UB1OD48iYH5z=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [], - artist_id: None, - album_type: Ep, - year: None, - by_va: true, - ), - ], -) diff --git a/tests/snapshots/youtube__music_artist_only_singles.snap b/tests/snapshots/youtube__music_artist_only_singles.snap index 9e673ba..3531789 100644 --- a/tests/snapshots/youtube__music_artist_only_singles.snap +++ b/tests/snapshots/youtube__music_artist_only_singles.snap @@ -6,7 +6,7 @@ MusicArtist( id: "UCfwCE5VhPMGxNPFxtVv7lRw", name: "Sulli", header_image: "[header_image]", - description: Some("Choi Jin-ri, better known by her stage name Sulli, was a South Korean singer and actress. She first made her debut as a child actress, appearing as a supporting cast member on the SBS historical drama Ballad of Seodong. Following this, she earned a number of guest roles, appearing in the television series Love Needs a Miracle and Drama City, and the film Vacation. She then subsequently appeared in the independent films Punch Lady and BA:BO, the former being her first time cast in a substantial dramatic role.\nAfter signing a record deal with SM Entertainment, Sulli rose to prominence as a member of the girl group f(x) formed in 2009. The group achieved both critical and commercial success, with four Korean number-one singles and international recognition after becoming the first K-pop act to perform at SXSW. Concurrently with her music career, Sulli returned to acting by starring in the SBS romantic comedy series, To the Beautiful You, a Korean adaptation of the shōjo manga Hana-Kimi where her performance was positively received and earned her two SBS Drama Awards and a nomination at the 49th Paeksang Arts Awards.\n\nFrom Wikipedia (https://en.wikipedia.org/wiki/Sulli) under Creative Commons Attribution CC-BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/legalcode)"), + description: Some("Choi Jin-ri, known professionally as Sulli, was a South Korean singer and actress. She first made her debut as a child actress, appearing as a supporting cast member on the SBS historical drama Ballad of Seodong. Following this, she earned a number of guest roles, appearing in the television series Love Needs a Miracle and Drama City, and the film Vacation. She then subsequently appeared in the independent films Punch Lady and BA:BO, the former being her first time cast in a substantial dramatic role.\nAfter signing a record deal with SM Entertainment, Sulli rose to prominence as a member of the girl group f(x) formed in 2009. The group achieved both critical and commercial success, with four Korean number-one singles and international recognition after becoming the first K-pop act to perform at SXSW. Concurrently with her music career, Sulli returned to acting by starring in the SBS romantic comedy series, To the Beautiful You, a Korean adaptation of the shōjo manga Hana-Kimi where her performance was positively received and earned her two SBS Drama Awards and a nomination at the 49th Paeksang Arts Awards.\n\nFrom Wikipedia (https://en.wikipedia.org/wiki/Sulli) 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/Sulli"), subscriber_count: "[subscriber_count]", tracks: "[tracks]", diff --git a/tests/youtube.rs b/tests/youtube.rs index f748fb5..086dc52 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -67,8 +67,8 @@ async fn get_player_from_client(#[case] client_type: ClientType, rp: RustyPipe) let video = player_data .video_only_streams .into_iter() - .find(|s| s.itag == 247) - .expect("video #247"); + .find(|s| s.itag == 136) + .expect("video #136"); let audio = player_data .audio_streams .into_iter() @@ -76,17 +76,17 @@ async fn get_player_from_client(#[case] client_type: ClientType, rp: RustyPipe) .expect("audio #140"); // Bitrates may change between requests - assert_approx(video.bitrate, 1_500_162); - assert_eq!(video.average_bitrate, 1_360_266); - assert_eq!(video.size, Some(44_042_868)); + assert_approx(video.bitrate, 2_341_408); + assert_eq!(video.average_bitrate, 1_660_210); + assert_eq!(video.size, Some(53_754_490)); assert_eq!(video.width, 1280); assert_eq!(video.height, 720); assert_eq!(video.fps, 30); assert_eq!(video.quality, "720p"); assert!(!video.hdr); - assert_eq!(video.mime, "video/webm; codecs=\"vp09.00.31.08\""); - assert_eq!(video.format, VideoFormat::Webm); - assert_eq!(video.codec, VideoCodec::Vp9); + assert_eq!(video.mime, "video/mp4; codecs=\"avc1.4D401F\""); + assert_eq!(video.format, VideoFormat::Mp4); + assert_eq!(video.codec, VideoCodec::Avc1); assert_approx(audio.bitrate, 130_685); assert_approx(audio.average_bitrate, 129_496); @@ -1576,12 +1576,11 @@ async fn music_playlist_not_found(rp: RustyPipe) { #[case::various_artists("various_artists", "MPREb_8QkDeEIawvX")] #[case::single("single", "MPREb_bHfHGoy7vuv")] #[case::ep("ep", "MPREb_u1I69lSAe5v")] -// #[case::audiobook("audiobook", "MPREb_gaoNzsQHedo")] +#[case::audiobook("audiobook", "MPREb_gaoNzsQHedo")] #[case::show("show", "MPREb_aDDw2kVEFtM")] #[case::unavailable("unavailable", "MPREb_AzuWg8qAVVl")] #[case::no_year("no_year", "MPREb_F3Af9UZZVxX")] -#[case::version_no_artist("version_no_artist", "MPREb_h8ltx5oKvyY")] -#[case::no_artist("no_artist", "MPREb_bqWA6mAZFWS")] +#[case::no_artist("no_artist", "MPREb_Z81wHtF9fhC")] #[tokio::test] async fn music_album(#[case] name: &str, #[case] id: &str, rp: RustyPipe, unlocalized: bool) { let album = rp.query().music_album(id).await.unwrap(); From 27b1cd1aa70ccb5f57d4a4f3068621d5bf787369 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 16 Jun 2024 00:21:25 +0200 Subject: [PATCH 048/347] test: fix tests --- notes/AB_Tests.md | 7 ++-- .../youtube__music_artist_basic.snap | 32 +++++++++---------- .../youtube__music_artist_basic_intl.snap | 30 ++++++++--------- tests/youtube.rs | 19 +++++++++-- 4 files changed, 51 insertions(+), 37 deletions(-) diff --git a/notes/AB_Tests.md b/notes/AB_Tests.md index 8d26b91..a7c8504 100644 --- a/notes/AB_Tests.md +++ b/notes/AB_Tests.md @@ -26,6 +26,7 @@ to the new feature. **Status:** +- Discontinued (0%) - Experimental (<3%) - Common (>3%) - Frequent (>40%) @@ -488,7 +489,7 @@ looks needlessly complex but contains the same parsing-relevant data as the old - **Encountered on:** 29.01.2024 - **Impact:** 🟢 Low - **Endpoint:** browse -- **Status:** Experimental (<1%) +- **Status:** Frequent (55%) YouTube introduced a new data model for channel headers, based on a `"pageHeaderRenderer"`. The new model comes with more needless complexity that needs to @@ -597,7 +598,7 @@ be accomodated. There are also no mobile/TV header images available any more. - **Encountered on:** 29.02.2024 - **Impact:** 🟢 Low - **Endpoint:** browse -- **Status:** Common (6%) +- **Status:** Discontinued (0%) ![A/B test 13 screenshot](./_img/ab_13.png) @@ -609,7 +610,7 @@ cover on the left side of the playlist content. - **Encountered on:** 31.01.2024 - **Impact:** 🟢 Low - **Endpoint:** next -- **Status:** Common (50%) +- **Status:** Frequent (98%) YouTube changed the data model for YouTube comments, now putting the content into a seperate framework update object diff --git a/tests/snapshots/youtube__music_artist_basic.snap b/tests/snapshots/youtube__music_artist_basic.snap index 27a6839..c88198a 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 was a German band that featured a variety of influences, including various pop and electronic styles as well as harder, nihilistic hard rock. The band was founded 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 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)"), wikipedia_url: Some("https://en.wikipedia.org/wiki/Unheilig"), subscriber_count: "[subscriber_count]", tracks: "[tracks]", @@ -56,21 +56,6 @@ MusicArtist( year: Some(2008), by_va: false, ), - AlbumItem( - id: "MPREb_88p7e6nBtgz", - name: "Lichter der Stadt", - cover: "[cover]", - artists: [ - ArtistId( - id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - name: "Unheilig", - ), - ], - artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Single, - year: Some(2012), - by_va: false, - ), AlbumItem( id: "MPREb_Md2aZrjaqHX", name: "Stille Winternacht", @@ -101,6 +86,21 @@ MusicArtist( year: Some(2018), by_va: false, ), + AlbumItem( + id: "MPREb_QEClJsuO9xM", + name: "So wie Du warst", + cover: "[cover]", + artists: [ + ArtistId( + id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), + name: "Unheilig", + ), + ], + artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), + album_type: Single, + year: Some(2012), + by_va: false, + ), AlbumItem( id: "MPREb_QyGCcLWExXj", name: "Als wär\'s das erste Mal (Exklusive Piano Version)", diff --git a/tests/snapshots/youtube__music_artist_basic_intl.snap b/tests/snapshots/youtube__music_artist_basic_intl.snap index 056a221..8a3d210 100644 --- a/tests/snapshots/youtube__music_artist_basic_intl.snap +++ b/tests/snapshots/youtube__music_artist_basic_intl.snap @@ -56,21 +56,6 @@ MusicArtist( year: Some(2008), by_va: false, ), - AlbumItem( - id: "MPREb_88p7e6nBtgz", - name: "[name]", - cover: "[cover]", - artists: [ - ArtistId( - id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - name: "[name]", - ), - ], - artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Single, - year: Some(2012), - by_va: false, - ), AlbumItem( id: "MPREb_Md2aZrjaqHX", name: "[name]", @@ -101,6 +86,21 @@ MusicArtist( year: Some(2018), by_va: false, ), + AlbumItem( + id: "MPREb_QEClJsuO9xM", + name: "[name]", + cover: "[cover]", + artists: [ + ArtistId( + id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), + name: "[name]", + ), + ], + artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), + album_type: Single, + year: Some(2012), + by_va: false, + ), AlbumItem( id: "MPREb_QyGCcLWExXj", name: "[name]", diff --git a/tests/youtube.rs b/tests/youtube.rs index 086dc52..6f0451e 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -14,7 +14,7 @@ use rustypipe::model::{ richtext::ToPlaintext, traits::{FromYtItem, YtStream}, AlbumType, AudioCodec, AudioFormat, AudioTrackType, Channel, Frameset, MusicGenre, MusicItem, - UrlTarget, Verification, VideoCodec, VideoFormat, YouTubeItem, + UrlTarget, Verification, VideoCodec, VideoFormat, VideoId, YouTubeItem, }; use rustypipe::param::{ search_filter::{self, SearchFilter}, @@ -418,6 +418,8 @@ async fn playlist_cont(rp: RustyPipe) { .extend_pages(rp.query(), usize::MAX) .await .unwrap(); + + check_duplicates(&playlist.videos.items); assert_gte(playlist.videos.items.len(), 101, "video items"); assert_gteo(playlist.videos.count, 101, "video count"); } @@ -432,6 +434,7 @@ async fn playlist_cont2(rp: RustyPipe) { .unwrap(); playlist.videos.extend_limit(rp.query(), 101).await.unwrap(); + check_duplicates(&playlist.videos.items); assert_gte(playlist.videos.items.len(), 101, "video items"); assert_gteo(playlist.videos.count, 101, "video count"); } @@ -1527,6 +1530,8 @@ async fn music_playlist_cont(#[case] id: &str, rp: RustyPipe) { playlist.tracks.extend_pages(rp.query(), 5).await.unwrap(); + check_duplicates(&playlist.tracks.items); + let track_count = playlist.track_count.unwrap(); assert_gte(track_count, 100, "tracks"); @@ -1626,8 +1631,7 @@ async fn music_album_not_found(rp: RustyPipe) { #[rstest] #[case::basic_all("basic_all", "UCFKUUtHjT4iq3p0JJA13SOA", true, 15, 1)] -// TODO: wait for A/B test 6 to stabilize -// #[case::basic("basic", "UC7cl4MmM6ZZ2TcFyMk_b4pg", false, 15, 2)] +#[case::basic("basic", "UC7cl4MmM6ZZ2TcFyMk_b4pg", false, 15, 2)] #[case::no_more_albums("no_more_albums", "UCOR4_bSVIXPsGa4BbCSt60Q", true, 15, 0)] #[case::only_singles("only_singles", "UCfwCE5VhPMGxNPFxtVv7lRw", false, 13, 0)] #[case::no_artist("no_artist", "UCh8gHdtzO2tXd593_bjErWg", false, 0, 0)] @@ -2779,3 +2783,12 @@ fn assert_frameset(frameset: &Frameset) { let n = frameset.urls().count() as u32; assert_eq!(n, frameset.page_count); } + +#[track_caller] +fn check_duplicates>(items: &[T]) { + let ids = items + .iter() + .map(|itm| itm.clone().into().id) + .collect::>(); + assert_eq!(ids.len(), items.len(), "duplicate items"); +} From da1d1bd2a0b214da10436ae221c90a0f88697b9a Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 16 Jun 2024 02:18:04 +0200 Subject: [PATCH 049/347] feat: make get_visitor_data() public --- codegen/src/abtest.rs | 20 +------------------- src/client/mod.rs | 2 +- 2 files changed, 2 insertions(+), 20 deletions(-) diff --git a/codegen/src/abtest.rs b/codegen/src/abtest.rs index eadf73e..f1d8cbb 100644 --- a/codegen/src/abtest.rs +++ b/codegen/src/abtest.rs @@ -79,7 +79,6 @@ pub async fn run_test( let rp = RustyPipe::new(); let pb = ProgressBar::new(n as u64); - let http = reqwest::Client::default(); pb.set_style( ProgressStyle::with_template( "{msg} [{elapsed_precise}] [{wide_bar:.cyan/blue}] {pos}/{len}", @@ -91,9 +90,8 @@ pub async fn run_test( .map(|_| { let rp = rp.clone(); let pb = pb.clone(); - let http = http.clone(); async move { - let visitor_data = get_visitor_data(&http).await; + let visitor_data = rp.query().get_visitor_data().await.unwrap(); let query = rp.query().visitor_data(&visitor_data); let is_present = match ab { ABTest::AttributedTextDescription => attributed_text_description(&query).await, @@ -133,22 +131,6 @@ pub async fn run_test( (count, vd_present, vd_absent) } -async fn get_visitor_data(http: &reqwest::Client) -> String { - let resp = http.get("https://www.youtube.com").send().await.unwrap(); - resp.headers() - .get_all(reqwest::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()); - } - } - None - }) - .unwrap() -} - pub async fn run_all_tests(n: usize, concurrency: usize) -> Vec { let mut results = Vec::new(); diff --git a/src/client/mod.rs b/src/client/mod.rs index c5999ef..7eb83d1 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -1259,7 +1259,7 @@ impl RustyPipeQuery { } /// Get a YouTube visitor data cookie, which is necessary for certain requests - async fn get_visitor_data(&self) -> Result { + pub async fn get_visitor_data(&self) -> Result { match &self.opts.visitor_data { Some(vd) => Ok(vd.clone()), None => self.client.get_visitor_data().await, From bb4c92c70b631edc70686d5f161907747ff1be7f Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 16 Jun 2024 02:23:22 +0200 Subject: [PATCH 050/347] ci: upload test reports --- .gitea/workflows/ci.yaml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml index 0a658b3..02e2874 100644 --- a/.gitea/workflows/ci.yaml +++ b/.gitea/workflows/ci.yaml @@ -10,8 +10,6 @@ jobs: steps: - name: 📦 Checkout repository uses: actions/checkout@v4 - with: - fetch-depth: 0 - name: 🦀 Setup Rust cache uses: https://github.com/Swatinem/rust-cache@v2 @@ -22,4 +20,13 @@ jobs: run: cargo clippy --all --features=rss -- -D warnings - name: 🧪 Test - run: cargo test --features=rss --workspace + run: cargo nextest run --config-file ~/.config/nextest.toml --profile ci --features rss --workspace + + - name: 💌 Upload test report + if: always() + uses: https://code.forgejo.org/forgejo/upload-artifact@v4 + with: + name: test + path: | + target/nextest/ci/junit.xml + rustypipe_reports/* From 8420c2f8dbd2791b524ceca2e19fb68e5b918bfa Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 16 Jun 2024 02:27:09 +0200 Subject: [PATCH 051/347] fix: clippy warning --- cli/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 5a3fee0..722079e 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "rustypipe-cli" version = "0.1.0" -rust-version = "1.67.1" +rust-version = "1.70.0" edition.workspace = true authors.workspace = true license.workspace = true From 53829c543f9cc094cd0775521b5b5e80e6544fd9 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 16 Jun 2024 02:38:00 +0200 Subject: [PATCH 052/347] ci: fix CI --- .gitea/workflows/ci.yaml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml index 02e2874..e695d65 100644 --- a/.gitea/workflows/ci.yaml +++ b/.gitea/workflows/ci.yaml @@ -20,13 +20,11 @@ jobs: run: cargo clippy --all --features=rss -- -D warnings - name: 🧪 Test - run: cargo nextest run --config-file ~/.config/nextest.toml --profile ci --features rss --workspace + run: cargo nextest run --config-file ~/.config/nextest.toml --profile ci --retries 2 --features rss --workspace - name: 💌 Upload test report if: always() uses: https://code.forgejo.org/forgejo/upload-artifact@v4 with: name: test - path: | - target/nextest/ci/junit.xml - rustypipe_reports/* + path: target/nextest/ci/junit.xml From 401d4e8255b1e86444319fed6d114dfbd0f80bbd Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 16 Jun 2024 22:24:59 +0200 Subject: [PATCH 053/347] feat: add UnavailabilityReason: IpBan --- src/client/player.rs | 1 + src/error.rs | 11 +++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/client/player.rs b/src/client/player.rs index d95043e..2a4f294 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -180,6 +180,7 @@ impl MapResponse for response::Player { "members-only" => Some(UnavailabilityReason::MembersOnly), "country" => Some(UnavailabilityReason::Geoblocked), "Android" | "websites" => Some(UnavailabilityReason::UnsupportedClient), + "bot" => Some(UnavailabilityReason::IpBan), _ => None, }) .unwrap_or_default(); diff --git a/src/error.rs b/src/error.rs index 104387f..ae804d8 100644 --- a/src/error.rs +++ b/src/error.rs @@ -31,7 +31,7 @@ pub enum ExtractionError { /// - Age restriction /// - Private video /// - DRM (Movies and TV shows) - #[error("content unavailable because it is {reason}. Reason (from YT): {msg}")] + #[error("content unavailable ({reason}). Reason (from YT): {msg}")] Unavailable { /// Reason why the video could not be extracted reason: UnavailabilityReason, @@ -100,6 +100,8 @@ pub enum UnavailabilityReason { MembersOnly, /// Livestream has gone offline OfflineLivestream, + /// YouTube banned your IP address from accessing the platform without an account + IpBan, /// Video cant be played for other reasons #[default] Unplayable, @@ -108,15 +110,16 @@ pub enum UnavailabilityReason { impl Display for UnavailabilityReason { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { - UnavailabilityReason::AgeRestricted => f.write_str("age restriction"), + UnavailabilityReason::AgeRestricted => f.write_str("age-restricted"), UnavailabilityReason::Deleted => f.write_str("deleted"), - UnavailabilityReason::Geoblocked => f.write_str("geoblocking"), + UnavailabilityReason::Geoblocked => f.write_str("geoblocked"), UnavailabilityReason::UnsupportedClient => f.write_str("unsupported by client"), UnavailabilityReason::Private => f.write_str("private"), UnavailabilityReason::Paid => f.write_str("paid"), UnavailabilityReason::Premium => f.write_str("premium-only"), UnavailabilityReason::MembersOnly => f.write_str("members-only"), - UnavailabilityReason::OfflineLivestream => f.write_str("an offline stream"), + UnavailabilityReason::OfflineLivestream => f.write_str("offline stream"), + UnavailabilityReason::IpBan => f.write_str("ip-ban"), UnavailabilityReason::Unplayable => f.write_str("unplayable"), } } From 94e8d24c6848b8bfca70dd03a7d89547ba9d6051 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 16 Jun 2024 22:42:11 +0200 Subject: [PATCH 054/347] refactor!: rename VideoItem/VideoPlayerDetails.length to duration for consistency --- src/client/player.rs | 2 +- src/client/response/video_item.rs | 6 +- ...annel__tests__map_channel_livestreams.snap | 60 +++--- ...t__channel__tests__map_channel_shorts.snap | 96 ++++----- ...ap_channel_shorts_20240129_pageheader.snap | 96 ++++----- ..._map_channel_videos_20221011_richgrid.snap | 60 +++--- ...map_channel_videos_20221011_richgrid2.snap | 60 +++--- ...map_channel_videos_20230415_coachella.snap | 60 +++--- ...p_channel_videos_20240324_pageheader2.snap | 60 +++--- ...annel__tests__map_channel_videos_base.snap | 60 +++--- ...annel__tests__map_channel_videos_live.snap | 42 ++-- ...nel__tests__map_channel_videos_shorts.snap | 60 +++--- ...l__tests__map_channel_videos_upcoming.snap | 60 +++--- ...pagination__tests__map_channel_videos.snap | 60 +++--- ...ient__pagination__tests__map_playlist.snap | 200 +++++++++--------- ...agination__tests__map_recommendations.snap | 38 ++-- ...client__pagination__tests__map_search.snap | 32 +-- ...ent__pagination__tests__map_startpage.snap | 48 ++--- ...layer__tests__map_player_data_android.snap | 2 +- ...layer__tests__map_player_data_desktop.snap | 2 +- ...__tests__map_player_data_desktopmusic.snap | 2 +- ...t__player__tests__map_player_data_ios.snap | 2 +- ...__tests__map_player_data_tvhtml5embed.snap | 2 +- ...t__playlist__tests__map_playlist_cont.snap | 200 +++++++++--------- ...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 +++++++-------- ...nt__search__tests__map_search_default.snap | 38 ++-- ..._client__trends__tests__map_startpage.snap | 42 ++-- ...rending_20230501_page_header_renderer.snap | 60 +++--- ...t__trends__tests__map_trending_videos.snap | 196 ++++++++--------- ...s__map_video_details_20220924_newdesc.snap | 34 +-- ...deo_details_20221011_new_continuation.snap | 38 ++-- ...s__map_video_details_20221011_rec_isr.snap | 40 ++-- ...sts__map_video_details_20231103_likes.snap | 40 ++-- ...ls__tests__map_video_details_ccommons.snap | 38 ++-- ...ls__tests__map_video_details_chapters.snap | 38 ++-- ...etails__tests__map_video_details_live.snap | 40 ++-- ...tails__tests__map_video_details_music.snap | 28 +-- ..._details__tests__map_video_details_mv.snap | 36 ++-- src/model/mod.rs | 8 +- testfiles/player_model/hdr.json | 2 +- testfiles/player_model/multilanguage.json | 2 +- tests/youtube.rs | 6 +- 45 files changed, 1352 insertions(+), 1352 deletions(-) diff --git a/src/client/player.rs b/src/client/player.rs index 2a4f294..03ac1e8 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -246,7 +246,7 @@ impl MapResponse for response::Player { id: video_details.video_id, name: video_details.title, description: video_details.short_description, - length: video_details.length_seconds, + duration: video_details.length_seconds, thumbnail: video_details.thumbnail.into(), channel: ChannelId { id: video_details.channel_id, diff --git a/src/client/response/video_item.rs b/src/client/response/video_item.rs index c151e08..3d7a116 100644 --- a/src/client/response/video_item.rs +++ b/src/client/response/video_item.rs @@ -445,7 +445,7 @@ impl YouTubeListMapper { VideoItem { id: video.video_id, name: video.title, - length: length_text.and_then(|txt| util::parse_video_length(&txt)), + duration: length_text.and_then(|txt| util::parse_video_length(&txt)), thumbnail: video.thumbnail.into(), channel: video .channel @@ -500,7 +500,7 @@ impl YouTubeListMapper { VideoItem { id: video.video_id, name: video.headline, - length: None, + duration: None, thumbnail: video.thumbnail.into(), channel: self.channel.clone(), publish_date: pub_date_txt.as_ref().and_then(|txt| { @@ -564,7 +564,7 @@ impl YouTubeListMapper { VideoItem { id: video.video_id, name: video.title, - length: video.length_seconds, + duration: video.length_seconds, thumbnail: video.thumbnail.into(), channel, publish_date, 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 fe35153..830b5fd 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 @@ -151,7 +151,7 @@ Channel( VideoItem( id: "hhs95CI6Dsg", name: "MARS 2020 Landing LIVE", - length: Some(6321), + duration: Some(6321), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/hhs95CI6Dsg/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AHUBoAC4AOKAgwIABABGGUgZShlMA8=&rs=AOn4CLAlPp2e1tF8gyf1cJisZGTMleissg", @@ -192,7 +192,7 @@ Channel( VideoItem( id: "cpQk2n-wmQ4", name: "LIVE Soldering", - length: Some(7046), + duration: Some(7046), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/cpQk2n-wmQ4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCoS3qwdY2rDbhkWJOWHisORlMKnA", @@ -233,7 +233,7 @@ Channel( VideoItem( id: "kIDV_XN9oA8", name: "LIVE Soldering", - length: Some(4353), + duration: Some(4353), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/kIDV_XN9oA8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBG3KVoFpBFIYCG2mrox_kEq6Arug", @@ -274,7 +274,7 @@ Channel( VideoItem( id: "DWS4Qp3Yn0A", name: "Apollo 11 Launch LIVE - 50 Years Later", - length: Some(4560), + duration: Some(4560), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/DWS4Qp3Yn0A/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAFkIQ4er8qDNMlD9H8lPzfSnE99g", @@ -315,7 +315,7 @@ Channel( VideoItem( id: "LwjTe3SiVXg", name: "EEVblog LIVE Q&A", - length: Some(3943), + duration: Some(3943), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/LwjTe3SiVXg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAzTlnjBJLT3KJVN4teMlX_svuaNA", @@ -356,7 +356,7 @@ Channel( VideoItem( id: "skPiz3GrVNs", name: "LIVE Keysight Scope Draw #2", - length: Some(2445), + duration: Some(2445), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/skPiz3GrVNs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBFiIfUBfoL0Q9CLR9Pc8bXy-zclg", @@ -397,7 +397,7 @@ Channel( VideoItem( id: "HZc-Ctvgv5Y", name: "LIVE Keysight Scope Draw", - length: Some(6455), + duration: Some(6455), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/HZc-Ctvgv5Y/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDQM1_QPh6u5_BFonLCdFPz-AcpkQ", @@ -438,7 +438,7 @@ Channel( VideoItem( id: "5ilODYy2zGE", name: "Ask Dave LIVE - March 8th 2019", - length: Some(10645), + duration: Some(10645), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/5ilODYy2zGE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCft4f7Lw3l3_u55bzUibWXr-UHTQ", @@ -479,7 +479,7 @@ Channel( VideoItem( id: "gQ7TTuiDH1M", name: "Ask Dave LIVE - Jan 28th 2019", - length: Some(17228), + duration: Some(17228), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/gQ7TTuiDH1M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAUPZz1xzckl5xzdBRonA_1WNWIyg", @@ -520,7 +520,7 @@ Channel( VideoItem( id: "qpw9dKxL2Ho", name: "LIVE KiCAD 5 PCB Design", - length: Some(8003), + duration: Some(8003), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/qpw9dKxL2Ho/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAC-kI2770I7JgVCTYExG0vXoYoxA", @@ -561,7 +561,7 @@ Channel( VideoItem( id: "wECZoUNd2GY", name: "EEVblog LIVE DIY TTL Computer Build", - length: Some(14599), + duration: Some(14599), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/wECZoUNd2GY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDzZwAD6bQQEaYuZEzmQ0sgQKc1yA", @@ -602,7 +602,7 @@ Channel( VideoItem( id: "bV99dn-tWDk", name: "EEVblog LIVE Scope Draw", - length: Some(2694), + duration: Some(2694), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/bV99dn-tWDk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAR4ckJxAituVMFCyWpYhHXozqQRA", @@ -643,7 +643,7 @@ Channel( VideoItem( id: "-NGRIFiu_p0", name: "EEVblog LIVE SHOW - End of 2017", - length: Some(12238), + duration: Some(12238), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/-NGRIFiu_p0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBjMmIdgjiSMBQ2X73h6-NtVUIqSg", @@ -684,7 +684,7 @@ Channel( VideoItem( id: "zgE6_x4rM5k", name: "LIVE Show Giveaway", - length: Some(5533), + duration: Some(5533), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/zgE6_x4rM5k/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBjb92wUNqOvTKs9TCLCThvdkdz3A", @@ -725,7 +725,7 @@ Channel( VideoItem( id: "9DjABCJN2M8", name: "LIVE Testing of the Batteriser", - length: Some(10747), + duration: Some(10747), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/9DjABCJN2M8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBXhnnHCuNfSzHZC64KFsfHPPJDNg", @@ -766,7 +766,7 @@ Channel( VideoItem( id: "cAsUI2YhqN4", name: "LIVE Unboxing of the Batteriser! (Batteroo)", - length: Some(3102), + duration: Some(3102), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/cAsUI2YhqN4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCOE1MyG1nFXs9D2qdK78bpN1mc_g", @@ -807,7 +807,7 @@ Channel( VideoItem( id: "CLYKwFMW9J0", name: "Juno Live Again", - length: Some(811), + duration: Some(811), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/CLYKwFMW9J0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC7WO4HX0e7M58ddoJD5dkVjdKHYQ", @@ -848,7 +848,7 @@ Channel( VideoItem( id: "nV43vM9VcUA", name: "Juno Live", - length: Some(190), + duration: Some(190), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/nV43vM9VcUA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCy-zEVPDvomCCi8YoP8Ig_Hrhzfw", @@ -889,7 +889,7 @@ Channel( VideoItem( id: "38uFiWzcDnc", name: "Juno Orbital Insertion Live", - length: Some(1731), + duration: Some(1731), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/38uFiWzcDnc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLALhrDygxFH4T2c-4efZqVaJnYY7g", @@ -930,7 +930,7 @@ Channel( VideoItem( id: "ib80yjc9VlM", name: "Juno Jupiter Live", - length: Some(581), + duration: Some(581), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ib80yjc9VlM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDbJJvzoEmwUc7nAm6GLJpoZJKmgQ", @@ -971,7 +971,7 @@ Channel( VideoItem( id: "rQRakYpb8-g", name: "eevSTREAM: Lab Rearrangement Part 2", - length: Some(8616), + duration: Some(8616), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/rQRakYpb8-g/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAdGJH0yhCQ7kmI3d3JXVv_7xzJAQ", @@ -1012,7 +1012,7 @@ Channel( VideoItem( id: "DwLEFKu2XWg", name: "eevSTREAM: Lab Rearrangement Part 1", - length: Some(768), + duration: Some(768), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/DwLEFKu2XWg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCXvSePgZ8NIKQTviqWvROVZFRPpA", @@ -1053,7 +1053,7 @@ Channel( VideoItem( id: "VeUDXQR3F2o", name: "Live Show", - length: Some(10360), + duration: Some(10360), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/VeUDXQR3F2o/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDmgrfQXMTaGMahuP8F_UHJAomFbg", @@ -1094,7 +1094,7 @@ Channel( VideoItem( id: "PgZx25vVwoI", name: "Live Giveaway", - length: Some(1808), + duration: Some(1808), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/PgZx25vVwoI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDTrMmoCfISxG0YSqC4oEyKGHdK_A", @@ -1135,7 +1135,7 @@ Channel( VideoItem( id: "jUtzoO-ur34", name: "Inventables X-Carve LIVE Build Part 4", - length: Some(10665), + duration: Some(10665), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/jUtzoO-ur34/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCO35sFP8D_Q08HxMZkNHFO8MmpDg", @@ -1176,7 +1176,7 @@ Channel( VideoItem( id: "199gtbX1y4M", name: "Inventables X-Carve LIVE Build Part 3 + Batteriser Rant", - length: Some(6267), + duration: Some(6267), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/199gtbX1y4M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAg3bMS00xpSXmNn1f5hXu_jWWC1w", @@ -1217,7 +1217,7 @@ Channel( VideoItem( id: "nQH4I_p7-MI", name: "Inventables X-Carve LIVE Build Part 2", - length: Some(17643), + duration: Some(17643), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/nQH4I_p7-MI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBMIA1YzQefFwGj5UFikXuYS2Nkng", @@ -1258,7 +1258,7 @@ Channel( VideoItem( id: "XBMNFXGKpaw", name: "Inventables X-Carve LIVE Build", - length: Some(5479), + duration: Some(5479), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/XBMNFXGKpaw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCV980wWO8tdx0aFDXwPn9aBQ2xlA", @@ -1299,7 +1299,7 @@ Channel( VideoItem( id: "yl6DGgiE3J8", name: "Apollo Saturn LVDC Live testing", - length: Some(1076), + duration: Some(1076), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/yl6DGgiE3J8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCugABHuqqPZQjV9cEm0JFh7R5aiA", @@ -1340,7 +1340,7 @@ Channel( VideoItem( id: "EEMcIZAcKjc", name: "LIVE EEVblog Mailbag", - length: Some(7344), + duration: Some(7344), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/EEMcIZAcKjc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCg16HpJqC9mNwkYOf8b0cfAuNLOA", 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 c2116be..e9e98bf 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 @@ -122,7 +122,7 @@ Channel( VideoItem( id: "bGXP83AU3Mc", name: "do u wanna get swole?", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/bGXP83AU3Mc/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLC9bzCBeHDbZFLE84Up3IiBIsxmmA", @@ -148,7 +148,7 @@ Channel( VideoItem( id: "E52sSgZlgYs", name: "the holy trinity of korean street food", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/E52sSgZlgYs/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDBahtFRcfBInHuA8CjXFPWkF2jHg", @@ -174,7 +174,7 @@ Channel( VideoItem( id: "ovaHmfy3O6U", name: "hangover food", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ovaHmfy3O6U/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCHmvWlG06h-DT6oxfmh69JGQ69KA", @@ -200,7 +200,7 @@ Channel( VideoItem( id: "FHTQmKTZnlI", name: "pig trotter raguuuuuuuuu 💅", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/FHTQmKTZnlI/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLD0xhka1osA4nI3VCwhQusn3ND3Hg", @@ -226,7 +226,7 @@ Channel( VideoItem( id: "1AXB0l_wKMs", name: "what i ate in google japan", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1AXB0l_wKMs/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBsfYJ0KffUNn-9jBzNRTqetyFr8g", @@ -252,7 +252,7 @@ Channel( VideoItem( id: "1ARLtk3HiB0", name: "succumb to your cravings", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1ARLtk3HiB0/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBY9E40Ehvq862CVItJy0Uj_pS5bg", @@ -278,7 +278,7 @@ Channel( VideoItem( id: "0FfDoDHpaN8", name: "you can\'t let the what ifs rule your life", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/0FfDoDHpaN8/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBiV2TVPO-VbIjoNtwCKmFuxmj6LA", @@ -304,7 +304,7 @@ Channel( VideoItem( id: "kuT90_RIdF0", name: "duck confit lollipop 🦆🍭", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/kuT90_RIdF0/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCUN-DW72m7sAXJMgVkWNxPYpJBcQ", @@ -330,7 +330,7 @@ Channel( VideoItem( id: "aPJLhrcM4Yg", name: "HOUSE TOUR", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/aPJLhrcM4Yg/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLD1TbWAIbzyWq8AXLoW0xqaji3ukQ", @@ -356,7 +356,7 @@ Channel( VideoItem( id: "DKQrG_hJJX4", name: "how to meal prep like a korean", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/DKQrG_hJJX4/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBE2DnpLFvtXsZOu1Ta4JQeOToVAw", @@ -382,7 +382,7 @@ Channel( VideoItem( id: "lNizW_P_oVw", name: "Rating Everything I ate at McDonald\'s Japan 🇯🇵", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/lNizW_P_oVw/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBI5XrkQ9Hesbf4lWELy7Uk3yMGMg", @@ -408,7 +408,7 @@ Channel( VideoItem( id: "kbWyJjrCjwA", name: "enemies as fertilizer √(veg)", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/kbWyJjrCjwA/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDlk30Km1M0jze1M3O90fB2LdvoAQ", @@ -434,7 +434,7 @@ Channel( VideoItem( id: "xAp910JTDig", name: "let\'s make some cabbage rolls for lunch", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/xAp910JTDig/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAJtpPGRgffBu9WDXACbtiGa_oRgA", @@ -460,7 +460,7 @@ Channel( VideoItem( id: "vSL7dhKatEk", name: "Rating Everything I ate at IKEA Korea", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/vSL7dhKatEk/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBYpIDYbwwWiCqRNVi6PlfEfjrt4A", @@ -486,7 +486,7 @@ Channel( VideoItem( id: "LZzhUpACXSk", name: "I\'m done being the bigger person", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/LZzhUpACXSk/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAFTvhtVUP7QZ4P7U70-0XH7PzDDg", @@ -512,7 +512,7 @@ Channel( VideoItem( id: "5C7nqNDfhis", name: "we\'re cooking a whole bird today", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/5C7nqNDfhis/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLA9I9irDsRjikwd0aqp1FWNFtjAqA", @@ -538,7 +538,7 @@ Channel( VideoItem( id: "6mj4Af0kUOQ", name: "men will disappoint but never potatoes", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/6mj4Af0kUOQ/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAVxl-FPt878AQXPBhbV1VSGeR8sw", @@ -564,7 +564,7 @@ Channel( VideoItem( id: "1c3axhSJiaQ", name: "I used to hate korean food", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1c3axhSJiaQ/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLBucOEbTsWTDjOOCjNa-fAvz1yxyA", @@ -590,7 +590,7 @@ Channel( VideoItem( id: "F9Vz0m7DPeU", name: "Rating everything I got at 7/11 Hawaii ( ft. Mauna Kea )", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/F9Vz0m7DPeU/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDOoCVL6la3ztUeQ6vP4iL1cEBRjQ", @@ -616,7 +616,7 @@ Channel( VideoItem( id: "Uey7kl56wks", name: "Grabbing Snacks from 7/11 Hawaii", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Uey7kl56wks/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCWmgajinNtIEbiPbqEtDvkC7Ydrg", @@ -642,7 +642,7 @@ Channel( VideoItem( id: "3un2eUAr6Dg", name: "cheesy korean corn balls hit different", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/3un2eUAr6Dg/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLD4LziL6GHd1jg8btMJDIM_RhgE_A", @@ -668,7 +668,7 @@ Channel( VideoItem( id: "rI5tWrGpDJA", name: "hawaiian tajin?!?", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/rI5tWrGpDJA/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAjNiKHdFSKGavBrZRDxi9WdR-gJw", @@ -694,7 +694,7 @@ Channel( VideoItem( id: "WQiGksTxr5g", name: "Rating everything I ate at Hawaiian Supermarket 🌺🏰 pt.2", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/WQiGksTxr5g/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCvzC5xVdTEJX8xtiOqzmeKvmouIg", @@ -720,7 +720,7 @@ Channel( VideoItem( id: "G7aw-QOsagk", name: "Grocery Shopping at Hawaiian Supermarket 🌺🏰 pt.1", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/G7aw-QOsagk/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAoKEkj2lqYU07yW_DU35TNHEOq4w", @@ -746,7 +746,7 @@ Channel( VideoItem( id: "Y_F1_Yf-DKQ", name: "Breakfast at Hawaiian McDonald\'s 🌺", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Y_F1_Yf-DKQ/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLDTLFBwRThZUk0eugFSNxc-CKI_HQ", @@ -772,7 +772,7 @@ Channel( VideoItem( id: "Q_ZMcP8faw4", name: "crab rangoon toast 🦀 🍞", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Q_ZMcP8faw4/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLATLiHTNqLoBKsEKbOckkGjXMvoHA", @@ -798,7 +798,7 @@ Channel( VideoItem( id: "1aedyP3r3D0", name: "my secret hot pot sauce 🧙\u{200d}♀\u{fe0f}🍃", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1aedyP3r3D0/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCh2MpR5k3jCS_wfX-wjtVuIcu7YQ", @@ -824,7 +824,7 @@ Channel( VideoItem( id: "fkPkHZ1yyBU", name: "the good vs the bad", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/fkPkHZ1yyBU/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCMngiRtLrBPppmfPnJwJ-cYMwttA", @@ -850,7 +850,7 @@ Channel( VideoItem( id: "NbQcySLMLmA", name: "cooking with waste?!🗑\u{fe0f}", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/NbQcySLMLmA/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCvxPQo9eqYwjk4cxyBnrHed-tcZg", @@ -876,7 +876,7 @@ Channel( VideoItem( id: "3w_5vzM1Pc4", name: "Shrek burger 🍔🍀👹", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/3w_5vzM1Pc4/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLB64zOKgmhOt7bvQseeIbjKBICDAg", @@ -902,7 +902,7 @@ Channel( VideoItem( id: "girJP2r_zLg", name: "$$$ on food", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/girJP2r_zLg/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBg2hmruZvx30aiP4Jb4dhz03qOZA", @@ -928,7 +928,7 @@ Channel( VideoItem( id: "zHp7sZ5OONM", name: "pumpkin spice churro?! 🎃", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/zHp7sZ5OONM/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLD8ZrcI6mq91ARKnRb_vg-0Qv2raw", @@ -954,7 +954,7 @@ Channel( VideoItem( id: "iqMl3gQEZ0E", name: "3,000,000", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/iqMl3gQEZ0E/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBUC1sw84NlLiyTJTcfnDWFjVC75w", @@ -980,7 +980,7 @@ Channel( VideoItem( id: "glyJWxp7a5g", name: "being smart was my personality trait", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/glyJWxp7a5g/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBbrWwLndPt5ZV5x4dnqmTC_aAhig", @@ -1006,7 +1006,7 @@ Channel( VideoItem( id: "dd1EZIkANYs", name: "the horror maze", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/dd1EZIkANYs/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBlqz2BM3K2VeLlXMPBVwXNXih6vg", @@ -1032,7 +1032,7 @@ Channel( VideoItem( id: "enioc_stRww", name: "furikake bagels with wasabi cream cheese", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/enioc_stRww/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBz9Qo96FWssNsMhQ54DMxdYYwLfQ", @@ -1058,7 +1058,7 @@ Channel( VideoItem( id: "NUM8kCPas5w", name: "simple is best", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/NUM8kCPas5w/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLC8N3YRr9A6-u6L0AtMynct4C_GzQ", @@ -1084,7 +1084,7 @@ Channel( VideoItem( id: "1djkcsFnlYE", name: "edible history lesson!", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1djkcsFnlYE/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBHn_6yOrnRXH_zbxVaAuKzSulcew", @@ -1110,7 +1110,7 @@ Channel( VideoItem( id: "cIYrJtAoftI", name: "and I\'m feeling good", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/cIYrJtAoftI/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLC4q0VcbBZroejhAztDkdlk7Ww5Og", @@ -1136,7 +1136,7 @@ Channel( VideoItem( id: "cCrH8Er5tf4", name: "Rating Korean Convenience Store Milk Flavors 🥛🍼", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/cCrH8Er5tf4/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBwc2ikrGH_gZfcyqTnZDfHjt5LuA", @@ -1162,7 +1162,7 @@ Channel( VideoItem( id: "tav5wsH7pzU", name: "online dating?", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/tav5wsH7pzU/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCheup7XAM_O1UAMEO5Iqup4-lGRQ", @@ -1188,7 +1188,7 @@ Channel( VideoItem( id: "5Vd4_GXjF7o", name: "Creating thumbnails has never been easier with Adobe Express", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/5Vd4_GXjF7o/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCbYkH7INYGHW0IcO3DKip5iD2PCA", @@ -1214,7 +1214,7 @@ Channel( VideoItem( id: "-FN1sEI8HkU", name: "my favorite color is green", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/-FN1sEI8HkU/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCLWKPrR-VCdsXagJ1MIyah7dDdDQ", @@ -1240,7 +1240,7 @@ Channel( VideoItem( id: "viT-dcl2DGE", name: "frodo baggins?", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/viT-dcl2DGE/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDb0oYC_3V79CSR0j-4sR4CuNQekQ", @@ -1266,7 +1266,7 @@ Channel( VideoItem( id: "N5AKQflK1TU", name: "When you impulse buy...", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/N5AKQflK1TU/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDwfPTcuQHyziYsmTrSkg9xi1jnag", @@ -1292,7 +1292,7 @@ Channel( VideoItem( id: "OzIFALQ_YtA", name: "taste testing gam!", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/OzIFALQ_YtA/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBMcyG6Fu4rrXk-JQL5tx0hzSAxlw", @@ -1318,7 +1318,7 @@ Channel( VideoItem( id: "dAcJILbc_0Q", name: "How to: Korean rice wine 🍶 (makgeolli)", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/dAcJILbc_0Q/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAXbHym4PFTTO25GCI4n1tjSaQVCw", @@ -1344,7 +1344,7 @@ Channel( VideoItem( id: "GvutfmW26JQ", name: "👹stay sour 🍋", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/GvutfmW26JQ/oar2.jpg?sqp=-oaymwEaCJUDENAFSFXyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBgCJ06W3wOend0UgkuBKoHOg0eig", 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 c3a1f02..47cf981 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 @@ -70,7 +70,7 @@ Channel( VideoItem( id: "LJAt2RHBhYA", name: "Rating Korean Traditional Desserts out of 10!!!", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/LJAt2RHBhYA/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBs1ulw5vkRkR_SG6pp7Wuy90QK0Q", @@ -96,7 +96,7 @@ Channel( VideoItem( id: "apL97zDoAY0", name: "best bang for your buck", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/apL97zDoAY0/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDTJ5F-kzUTGBPolJgqloUZWve4GQ", @@ -122,7 +122,7 @@ Channel( VideoItem( id: "6au8hFOnUXI", name: "don\'t judge a book by its cover", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/6au8hFOnUXI/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCACe2S2wBTr0KVSFWzGda61k8Epw", @@ -148,7 +148,7 @@ Channel( VideoItem( id: "4wJAOnnPYsI", name: "I ❤\u{fe0f} feet", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/4wJAOnnPYsI/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCwFBUxJXMhuiv1ZevlM6r2x7Wq-Q", @@ -174,7 +174,7 @@ Channel( VideoItem( id: "DDsWN4HcoWQ", name: "Trying North Korean Food 🇰🇵 and Rating it out of 10", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/DDsWN4HcoWQ/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBIBARX0aoleQ1NFxd_DGhhHT4gDg", @@ -200,7 +200,7 @@ Channel( VideoItem( id: "oMIIEp8JMT0", name: "get that bag 💰", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/oMIIEp8JMT0/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBKsO5-KQzqU-bJinHsPDWrEQBIzQ", @@ -226,7 +226,7 @@ Channel( VideoItem( id: "ElEgDnx3Dfk", name: "My Mom\'s 10-step Korean Skincare Routine", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ElEgDnx3Dfk/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLD4uT5fSWvTnjAh_BC6hsW48zoH1w", @@ -252,7 +252,7 @@ Channel( VideoItem( id: "kNpFjW0VAUQ", name: "What Koreans eat on New Year\'s", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/kNpFjW0VAUQ/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBJTK-xhUMSzq8MBJ3s4kSXR7pFlw", @@ -278,7 +278,7 @@ Channel( VideoItem( id: "0_5Y3ZBo5cw", name: "DOOBYMART", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/0_5Y3ZBo5cw/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBlcI8i0DqG2vKRFGDzIQXBEsifFQ", @@ -304,7 +304,7 @@ Channel( VideoItem( id: "VyVs3GCQlG0", name: "I love ogres", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/VyVs3GCQlG0/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBsbPYKlWAAZNphAPobZQReZzk-lA", @@ -330,7 +330,7 @@ Channel( VideoItem( id: "_yMEpzXq3yI", name: "Are you broke?😞📉📉📉", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/_yMEpzXq3yI/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCRyJDCY-7MsSYbsl2ZZoC8DxPkKw", @@ -356,7 +356,7 @@ Channel( VideoItem( id: "sM1jIMnq0M0", name: "best tteokbokki & dark sketchy alleys", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/sM1jIMnq0M0/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCIQyuEFF2m676ZX7UpcK3hVHTzzw", @@ -382,7 +382,7 @@ Channel( VideoItem( id: "nZg_Qoknu_M", name: "moist.", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/nZg_Qoknu_M/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCcXipLuXAs9D8d1nRJbMh-BZkK1Q", @@ -408,7 +408,7 @@ Channel( VideoItem( id: "CgS55gL33nY", name: "Do you have any Korean Friends?", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/CgS55gL33nY/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCVh8B6HRomEnQX6dyDJVbYhE-RGA", @@ -434,7 +434,7 @@ Channel( VideoItem( id: "VOxXkxFNOpM", name: "take my money", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/VOxXkxFNOpM/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAkP1n1_Oe8pBGluy_lyi4I3pO4SQ", @@ -460,7 +460,7 @@ Channel( VideoItem( id: "aZW65r9uUXA", name: "i\'m a mother?", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/aZW65r9uUXA/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDIcJpRgW65hGv0GM8ak-L0PyErUw", @@ -486,7 +486,7 @@ Channel( VideoItem( id: "CnI9or-Ings", name: "moshi moshi (ASMR)", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/CnI9or-Ings/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDIoImzeIOlO25vkY7j92YwUhAOdw", @@ -512,7 +512,7 @@ Channel( VideoItem( id: "oYAp2v4PxdQ", name: "perfect procrastination", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/oYAp2v4PxdQ/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLA3PsooCO5Cot_z-vLFCF1Kdtshtg", @@ -538,7 +538,7 @@ Channel( VideoItem( id: "1ivqsJSGghU", name: "THREE CHILI MAPO TOFU (Vegan)", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1ivqsJSGghU/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCk5IRHy8TmJPzE9yD3M_OGXdww_g", @@ -564,7 +564,7 @@ Channel( VideoItem( id: "s56ctQoFi70", name: "day 1 leaving seoul", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/s56ctQoFi70/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCfn6oYumOdPd33WlDWaqBUZzaEiw", @@ -590,7 +590,7 @@ Channel( VideoItem( id: "8XHcYgsJJjs", name: "I love Korea but", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/8XHcYgsJJjs/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAtj-QeOzONDGPzDWC8IdFGigmKYA", @@ -616,7 +616,7 @@ Channel( VideoItem( id: "DXYbvkJEYzw", name: "demogorgon rice", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/DXYbvkJEYzw/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDd33uW_fC4Dz5JqYlDtGWGdMQn8A", @@ -642,7 +642,7 @@ Channel( VideoItem( id: "3YGVw8RrB3U", name: "Rating Everything I Ate at McDonald\'s Singapore 🇸🇬🤡", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/3YGVw8RrB3U/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAV2y-_1JXq9RecS8ELjyUsoN52NA", @@ -668,7 +668,7 @@ Channel( VideoItem( id: "VWh8hm-GlXw", name: "the magic number: 25", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/VWh8hm-GlXw/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLD1wp7tz9TU3Kx2Oho7mrVoFys8Jw", @@ -694,7 +694,7 @@ Channel( VideoItem( id: "ewpJQHj5jWY", name: "How we started✨ the garden ✨", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ewpJQHj5jWY/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAOw5ntEtOhIgNJy2y1QQCFLUtGBQ", @@ -720,7 +720,7 @@ Channel( VideoItem( id: "SRnHMGMJ6mM", name: "How to Shop at Costco ✨economical milf✨", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/SRnHMGMJ6mM/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDrwe86eXSemFBKB3xLGnRIDcL_qA", @@ -746,7 +746,7 @@ Channel( VideoItem( id: "bGXP83AU3Mc", name: "do u wanna get swole?", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/bGXP83AU3Mc/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBLGuAqqpjhQ_Y81P2pxchz-z971g", @@ -772,7 +772,7 @@ Channel( VideoItem( id: "E52sSgZlgYs", name: "the holy trinity of korean street food", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/E52sSgZlgYs/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAZr5j2o2IdpTLXUoSKT5QK-DFJgw", @@ -798,7 +798,7 @@ Channel( VideoItem( id: "ovaHmfy3O6U", name: "hangover food", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ovaHmfy3O6U/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBg-kG4rAi-BQ8Xkp2hOtOu-oXDLQ", @@ -824,7 +824,7 @@ Channel( VideoItem( id: "FHTQmKTZnlI", name: "pig trotter raguuuuuuuuu 💅", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/FHTQmKTZnlI/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBaPmdp59deKec5AiRRJ_c6oWOpuA", @@ -850,7 +850,7 @@ Channel( VideoItem( id: "1AXB0l_wKMs", name: "what i ate in google japan", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1AXB0l_wKMs/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAwymbQoerZLtr77RuARo1iok4_WQ", @@ -876,7 +876,7 @@ Channel( VideoItem( id: "1ARLtk3HiB0", name: "succumb to your cravings", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1ARLtk3HiB0/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDSjiCiBhM1i7n68LVRv_G5GW5vRw", @@ -902,7 +902,7 @@ Channel( VideoItem( id: "0FfDoDHpaN8", name: "you can\'t let the what ifs rule your life", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/0FfDoDHpaN8/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAJK1Av4zHRIWRBMSEfYRXxpwCSlQ", @@ -928,7 +928,7 @@ Channel( VideoItem( id: "kuT90_RIdF0", name: "duck confit lollipop 🦆🍭", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/kuT90_RIdF0/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCt9L5XUhmlkwuxMuupIt4kCnxctA", @@ -954,7 +954,7 @@ Channel( VideoItem( id: "aPJLhrcM4Yg", name: "HOUSE TOUR", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/aPJLhrcM4Yg/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBCLF6yI6Ke96PIrfo1s5BhYfeWvg", @@ -980,7 +980,7 @@ Channel( VideoItem( id: "DKQrG_hJJX4", name: "how to meal prep like a korean", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/DKQrG_hJJX4/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDZTyFRl919wEGdUg95-XrNIH99mg", @@ -1006,7 +1006,7 @@ Channel( VideoItem( id: "lNizW_P_oVw", name: "Rating Everything I ate at McDonald\'s Japan 🇯🇵", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/lNizW_P_oVw/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAAiwuuJufebYj3P4aTo7wyBjh9Kw", @@ -1032,7 +1032,7 @@ Channel( VideoItem( id: "kbWyJjrCjwA", name: "enemies as fertilizer √(veg)", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/kbWyJjrCjwA/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCItmfFh3UD53WvNCWd9HAItdubgg", @@ -1058,7 +1058,7 @@ Channel( VideoItem( id: "xAp910JTDig", name: "let\'s make some cabbage rolls for lunch", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/xAp910JTDig/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLD0jor2XgDSjgk4IdMhCOGNqv0Vag", @@ -1084,7 +1084,7 @@ Channel( VideoItem( id: "vSL7dhKatEk", name: "Rating Everything I ate at IKEA Korea", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/vSL7dhKatEk/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLD1jtkvWyabnlTD7ktUQCWYvKctFQ", @@ -1110,7 +1110,7 @@ Channel( VideoItem( id: "LZzhUpACXSk", name: "I\'m done being the bigger person", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/LZzhUpACXSk/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBKpbXJ3fj1mWw8YLEGgqqQJFPapw", @@ -1136,7 +1136,7 @@ Channel( VideoItem( id: "5C7nqNDfhis", name: "we\'re cooking a whole bird today", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/5C7nqNDfhis/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAywBcN0oFzKJrq2jxAcYU8Gz5mQQ", @@ -1162,7 +1162,7 @@ Channel( VideoItem( id: "6mj4Af0kUOQ", name: "men will disappoint but never potatoes", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/6mj4Af0kUOQ/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLB3pIz2cfevgV0ccu3bQM4IDaBSKg", @@ -1188,7 +1188,7 @@ Channel( VideoItem( id: "1c3axhSJiaQ", name: "I used to hate korean food", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1c3axhSJiaQ/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLBucOEbTsWTDjOOCjNa-fAvz1yxyA", @@ -1214,7 +1214,7 @@ Channel( VideoItem( id: "F9Vz0m7DPeU", name: "Rating everything I got at 7/11 Hawaii ( ft. Mauna Kea )", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/F9Vz0m7DPeU/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLD1w_8DhU37Mv_R3tQ9Kb6ouIU_VA", @@ -1240,7 +1240,7 @@ Channel( VideoItem( id: "Uey7kl56wks", name: "Grabbing Snacks from 7/11 Hawaii", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Uey7kl56wks/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCybGwQAf9s43HoSQJGvWlOmmLPgw", @@ -1266,7 +1266,7 @@ Channel( VideoItem( id: "3un2eUAr6Dg", name: "cheesy korean corn balls hit different", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/3un2eUAr6Dg/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLC9I2IQJx0hUPF9mcw4lvs1I6Bj4A", @@ -1292,7 +1292,7 @@ Channel( VideoItem( id: "rI5tWrGpDJA", name: "hawaiian tajin?!?", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/rI5tWrGpDJA/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCkg-RG2ToW-gXsSdYwO57sis0DkA", 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 c647559..6f0e23e 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 @@ -122,7 +122,7 @@ Channel( VideoItem( id: "EIcmfSzeaKk", name: "our new normal", - length: Some(1106), + duration: Some(1106), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/EIcmfSzeaKk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAsYqYyFrXWHOkwiw0oqls2tGrKQg", @@ -163,7 +163,7 @@ Channel( VideoItem( id: "9NuhKCv3crg", name: "the end.", - length: Some(982), + duration: Some(982), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/9NuhKCv3crg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDB0KHjIok8E-gjwidP56UeDJy7Bg", @@ -204,7 +204,7 @@ Channel( VideoItem( id: "38Gd6TdmNVs", name: "KOREAN BARBECUE l doob gourmand ep.3", - length: Some(525), + duration: Some(525), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/38Gd6TdmNVs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBRo5niO28TGS9JNluTU9wCLCGBQA", @@ -245,7 +245,7 @@ Channel( VideoItem( id: "l9TiwunjzgA", name: "long distance", - length: Some(1043), + duration: Some(1043), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/l9TiwunjzgA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDjM6SZ7ScyfFRr13QdVmIvWEWWrQ", @@ -286,7 +286,7 @@ Channel( VideoItem( id: "pRVSdUxdsVw", name: "Repairing...", - length: Some(965), + duration: Some(965), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/pRVSdUxdsVw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAQWneuYcJcccgooBfa3WI4LdYF3w", @@ -327,7 +327,7 @@ Channel( VideoItem( id: "2FJVhdOO0F0", name: "a health scare", - length: Some(1238), + duration: Some(1238), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/2FJVhdOO0F0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA5ambaz-euRsB9VG5ANaYFUUSEbg", @@ -368,7 +368,7 @@ Channel( VideoItem( id: "CutR_1SDDzY", name: "feels good to be back", - length: Some(1159), + duration: Some(1159), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/CutR_1SDDzY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAt413Uk4xhHjYwpLI5-DXuOsFouA", @@ -409,7 +409,7 @@ Channel( VideoItem( id: "KUz7oArksR4", name: "running away", - length: Some(1023), + duration: Some(1023), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/KUz7oArksR4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD1NwuIgJuJy2oPAiHqMre6rbcuPA", @@ -450,7 +450,7 @@ Channel( VideoItem( id: "sPb2gyN-hnE", name: "worth fighting for", - length: Some(1232), + duration: Some(1232), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/sPb2gyN-hnE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBidXnS47SJMkvOlqt2DgzHxr6wKQ", @@ -491,7 +491,7 @@ Channel( VideoItem( id: "PXsK9-CFoH4", name: "waiting...", - length: Some(1455), + duration: Some(1455), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/PXsK9-CFoH4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBJ-57qZ-dOIsdFy5H8WT9UsS2W9w", @@ -532,7 +532,7 @@ Channel( VideoItem( id: "r2ye6zW0nbM", name: "a wedding", - length: Some(1207), + duration: Some(1207), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/r2ye6zW0nbM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB3L2DVtMtxaPaFjVPcNnjDHE5Wvw", @@ -573,7 +573,7 @@ Channel( VideoItem( id: "rriwHj8U664", name: "my seoul apartment tour", - length: Some(721), + duration: Some(721), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/rriwHj8U664/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCy6zauLaf2KLJ6R41q0CPM8298PA", @@ -614,7 +614,7 @@ Channel( VideoItem( id: "FKJtrUeol3o", name: "with quantity comes quality", - length: Some(1140), + duration: Some(1140), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/FKJtrUeol3o/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD7U0hZPrEiHZcTVcicymOllR05qw", @@ -655,7 +655,7 @@ Channel( VideoItem( id: "zYHB38UlzE0", name: "Q&A l relationships, burnout, privilege, college advice, living alone, and life after youtube?", - length: Some(775), + duration: Some(775), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/zYHB38UlzE0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDAO5etokCiF7cvyR-7kobN9RhTLA", @@ -696,7 +696,7 @@ Channel( VideoItem( id: "hGbQ2WM9nOo", name: "Why does everything bad for you taste good ㅣ CHILI OIL RAMEN", - length: Some(428), + duration: Some(428), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/hGbQ2WM9nOo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD_bMKoJhW-ifemEiqSBj-6dvEnUg", @@ -737,7 +737,7 @@ Channel( VideoItem( id: "PxGmP4v_A38", name: "Alone and Thriving l late night korean convenience store, muji kitchenware haul, spring cleaning!", - length: Some(1437), + duration: Some(1437), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/PxGmP4v_A38/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLArZRyFU5e71-vMdGZzuxCCroEkww", @@ -778,7 +778,7 @@ Channel( VideoItem( id: "8t-WyYcpEDE", name: "What I hate most", - length: Some(61), + duration: Some(61), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/8t-WyYcpEDE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDsJHHXMP4fUEFqn-LExXU5yPyZ-Q", @@ -819,7 +819,7 @@ Channel( VideoItem( id: "RroYpLxxNjY", name: "I\'m Back. ㅣ cooking korean food, eating alone, working out, and 2M!", - length: Some(1313), + duration: Some(1313), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/RroYpLxxNjY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBYJ_dcqUt2kR-4jOAUu8O0Ja9SLA", @@ -860,7 +860,7 @@ Channel( VideoItem( id: "l47QuudsZ34", name: "We ate our way through Florence (ft. mamadooby)", - length: Some(1109), + duration: Some(1109), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/l47QuudsZ34/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB0Vwc7DhN_hFXSRuDAiivLnGGc2A", @@ -901,7 +901,7 @@ Channel( VideoItem( id: "1VW7iXRIrc8", name: "Alone, in the City of Love", - length: Some(1875), + duration: Some(1875), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1VW7iXRIrc8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBbNxPLmGzJlvJ-3o5Dz9I5LOGu1A", @@ -942,7 +942,7 @@ Channel( VideoItem( id: "6c58-749p6Y", name: "Old Friends & New", - length: Some(774), + duration: Some(774), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/6c58-749p6Y/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLClRrTlOF_Q3feHLoM0T5_DFygbIw", @@ -983,7 +983,7 @@ Channel( VideoItem( id: "Q2G53LuEUaU", name: "Where we stand", - length: Some(858), + duration: Some(858), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Q2G53LuEUaU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC1ppNrqK-xlQ6Sxnn62dp8QXoJBQ", @@ -1024,7 +1024,7 @@ Channel( VideoItem( id: "8rAOeowNQrI", name: "That\'s so last year", - length: Some(1286), + duration: Some(1286), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/8rAOeowNQrI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCSBW_fD0pttfFh4Yc_Kx1UIZHzfg", @@ -1065,7 +1065,7 @@ Channel( VideoItem( id: "0RGIdIKkbSI", name: "The Muffin Man", - length: Some(1052), + duration: Some(1052), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/0RGIdIKkbSI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDo42DBFMfLKVHtXETG5yuU20FVMw", @@ -1106,7 +1106,7 @@ Channel( VideoItem( id: "NudTbo2CJMY", name: "Flying to London", - length: Some(1078), + duration: Some(1078), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/NudTbo2CJMY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDEdvWWmhSaDTTx7b2kJUauMFnQJQ", @@ -1147,7 +1147,7 @@ Channel( VideoItem( id: "8mJk1ncGZig", name: "(not so) Teenage Angst", - length: Some(1376), + duration: Some(1376), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/8mJk1ncGZig/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB1kTcJ6oRyNfaGJbvl6V5UxRhagg", @@ -1188,7 +1188,7 @@ Channel( VideoItem( id: "qvgCi2WpbfE", name: "can\'t smell :s", - length: Some(875), + duration: Some(875), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/qvgCi2WpbfE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBdSLKkLlOTxprZAH9BajRpHiujrw", @@ -1229,7 +1229,7 @@ Channel( VideoItem( id: "Sm4Yqtqr9f8", name: "I have covid", - length: Some(814), + duration: Some(814), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Sm4Yqtqr9f8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDAAWaXioP-Xz_cwkE3APR_5fpkqw", @@ -1270,7 +1270,7 @@ Channel( VideoItem( id: "ZRtf4ksF3qs", name: "Everything I ate in Busan & make up tutorial??", - length: Some(1026), + duration: Some(1026), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ZRtf4ksF3qs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBnRStN9mU3cu7vDQIkUcO3WiyVZw", @@ -1311,7 +1311,7 @@ Channel( VideoItem( id: "oG4Wth1oVBQ", name: "On the other side", - length: Some(1592), + duration: Some(1592), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/oG4Wth1oVBQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDO45Wm2zkuD6ZukxaoxfgGkpuZHg", 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 8d3d608..e4efa91 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 @@ -151,7 +151,7 @@ Channel( VideoItem( id: "4EcQYK_no5M", name: "EEVblog 1506 - History of Electricity with Kathy Loves Physics", - length: Some(6143), + duration: Some(6143), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/4EcQYK_no5M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB9dr9RxHmrRUim7aDSz_mPNrfSKA", @@ -192,7 +192,7 @@ Channel( VideoItem( id: "zEzjVUzNAFA", name: "EEVblog 1505 - 120W Home Phantom Power? Audit Time!", - length: Some(1464), + duration: Some(1464), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/zEzjVUzNAFA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDnSdLCdtqGA1HYCFv4_MeTHWdVpw", @@ -233,7 +233,7 @@ Channel( VideoItem( id: "YIbQ3nudCA0", name: "EEVblog 1504 - The COOL thing you MISSED at Tesla AI Day 2022", - length: Some(1021), + duration: Some(1021), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/YIbQ3nudCA0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDesF0deVLo0ouizZ8ZF_lXolOdrw", @@ -274,7 +274,7 @@ Channel( VideoItem( id: "W1Jl0rMRGSg", name: "EEVblog 1503 - Rigol HDO4000 12bit Oscilloscope TEARDOWN", - length: Some(1798), + duration: Some(1798), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/W1Jl0rMRGSg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBKFi3YtWo1ii8h8FdQN6CkYgzX2A", @@ -315,7 +315,7 @@ Channel( VideoItem( id: "YFKu_emNzpk", name: "EEVblog 1502 - Is Home Battery Storage Financially Viable?", - length: Some(1199), + duration: Some(1199), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/YFKu_emNzpk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLACI3L7nXsK3ZUFD8yK0VAWd32-Uw", @@ -356,7 +356,7 @@ Channel( VideoItem( id: "gremHHvqYTE", name: "EEVblog 1501 - Rigol HDO4000 Low Noise 12bit Oscilloscope Unboxing & First Impression", - length: Some(1794), + duration: Some(1794), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/gremHHvqYTE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBcwR0YIwLjfFam9HkKdkTkqx_gHw", @@ -397,7 +397,7 @@ Channel( VideoItem( id: "WHO8NBfpaO0", name: "eevBLAB 102 - Last Mile Autonomous Robot Deliveries WILL FAIL", - length: Some(742), + duration: Some(742), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/WHO8NBfpaO0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDQPKMF3Aeo9CydEWz9pQWkn1Lu7Q", @@ -438,7 +438,7 @@ Channel( VideoItem( id: "W1Q8CxL95_Y", name: "EEVblog 1500 - Automatic Transfer Switch REVERSE ENGINEERED", - length: Some(1770), + duration: Some(1770), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/W1Q8CxL95_Y/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBIxuct8vahJHOJTLfbOnsMOXnjvw", @@ -479,7 +479,7 @@ Channel( VideoItem( id: "lagxSrPeoYg", name: "EEVblog 1499 - EcoFlow Delta Pro 3.6kWh Portable Battery TEARDOWN!", - length: Some(2334), + duration: Some(2334), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/lagxSrPeoYg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAbAX2gdAF66O7BUCaOVg2vQOsS2Q", @@ -520,7 +520,7 @@ Channel( VideoItem( id: "qTctWW9_FmE", name: "EEVblog 1498 - TransPod Fluxjet Hyperloop $550M Boondoggle!", - length: Some(2399), + duration: Some(2399), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/qTctWW9_FmE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCbnEQaGGI5zD9lCJ8kMmciezX2kA", @@ -561,7 +561,7 @@ Channel( VideoItem( id: "3t9G80wk0pk", name: "eevBLAB 101 - Why Are Tektronix Oscilloscopes So Expensive?", - length: Some(1423), + duration: Some(1423), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/3t9G80wk0pk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDnsVu-VQplpRpc1ZW-yk2byyZjZA", @@ -602,7 +602,7 @@ Channel( VideoItem( id: "7dze5CnZnmk", name: "EEVblog 1497 - RIP Fluke. Thanks Energizer. NOT.", - length: Some(1168), + duration: Some(1168), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/7dze5CnZnmk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAg430MYAmoycM4lbv_57S_d3kZRA", @@ -643,7 +643,7 @@ Channel( VideoItem( id: "6XnrZpPYgBg", name: "EEVblog 1496 - Winning Mailbag", - length: Some(3139), + duration: Some(3139), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/6XnrZpPYgBg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCrBgky13jB1p9xzKbmoUpJ4g0SNQ", @@ -684,7 +684,7 @@ Channel( VideoItem( id: "Psp3ltpFvws", name: "eevBLAB 100 - Reuters Attacks Odysee - LOL", - length: Some(855), + duration: Some(855), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Psp3ltpFvws/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCu8Nu_NmDw5vBHgb7e8JdJR1Dr1Q", @@ -725,7 +725,7 @@ Channel( VideoItem( id: "taVYTYz5vLE", name: "EEVblog 1495 - Quaze Wireless Power (AGAIN!) but for GAMING!", - length: Some(2592), + duration: Some(2592), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/taVYTYz5vLE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAMHngmN8TjWZz327vUD7zjjblYBw", @@ -766,7 +766,7 @@ Channel( VideoItem( id: "Y6cZrieFw-k", name: "EEVblog 1494 - FIVE Ways to Open a CHEAP SAFE!", - length: Some(1194), + duration: Some(1194), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Y6cZrieFw-k/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDsdoJwcvSFZU4e9cwDFbZj3W21Pw", @@ -807,7 +807,7 @@ Channel( VideoItem( id: "Kr2XyhpUdUI", name: "EEVblog 1493 - MacGyver Project - Part 2", - length: Some(1785), + duration: Some(1785), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Kr2XyhpUdUI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDdL3brjOzbABRuyz-yolawtGRsbw", @@ -848,7 +848,7 @@ Channel( VideoItem( id: "rxGafdgkal8", name: "EEVblog 1492 - $5 Oscilloscope Repaired! + Oz GIVEAWAY", - length: Some(1163), + duration: Some(1163), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/rxGafdgkal8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD-p_t0q_Q2oTGyJuFCQJ5z6VPPMQ", @@ -889,7 +889,7 @@ Channel( VideoItem( id: "4yosozyeIP4", name: "EEVblog 1491 - The MacGyver Project - Part 1", - length: Some(1706), + duration: Some(1706), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/4yosozyeIP4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDRNAWkPQfuQirfiOdowD1iQlWrWg", @@ -930,7 +930,7 @@ Channel( VideoItem( id: "06JtC2DC_dQ", name: "EEVblog 1490 - Insane Jaycar Dumpster Sale! 2022", - length: Some(1700), + duration: Some(1700), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/06JtC2DC_dQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDVIvEssIKji_8dyBYGYbpIqen7vQ", @@ -971,7 +971,7 @@ Channel( VideoItem( id: "piquT76w9TI", name: "EEVblog 1489 - Mystery Teardown!", - length: Some(1466), + duration: Some(1466), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/piquT76w9TI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCTzIcGeRDwUyINtik50EQCOTxwiA", @@ -1012,7 +1012,7 @@ Channel( VideoItem( id: "pKuUKT-zU-g", name: "EEVblog 1488 - Tilt Five Augmented Reality AR Glasses - First Reaction!", - length: Some(2152), + duration: Some(2152), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/pKuUKT-zU-g/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCB6Rh4miI20yPy2kJaxul_wA3Now", @@ -1053,7 +1053,7 @@ Channel( VideoItem( id: "_R4wQQNSO6k", name: "EEVblog 1487 - Do Solar Micro Inverters Take Power at Night?", - length: Some(2399), + duration: Some(2399), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/_R4wQQNSO6k/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDEQVZ0yQPLZqwLdQednKWwLWqDmA", @@ -1094,7 +1094,7 @@ Channel( VideoItem( id: "ikp5BorIo_M", name: "EEVblog 1486 - What you DIDN\'T KNOW About Film Capacitor FAILURES!", - length: Some(1792), + duration: Some(1792), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ikp5BorIo_M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBygGB8KC522NC15BhDC1WpuNKsgw", @@ -1135,7 +1135,7 @@ Channel( VideoItem( id: "7O-QckjCXNo", name: "eevBLAB 99 - AI SPAM BOT Youtube Space/Science/Tech Channels? - WTF", - length: Some(592), + duration: Some(592), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/7O-QckjCXNo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBY1cRnrWQCbmlAzP5okMmIYjgdsg", @@ -1176,7 +1176,7 @@ Channel( VideoItem( id: "VutdTxF4E-0", name: "RIP The Old Garage Lab", - length: Some(115), + duration: Some(115), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/VutdTxF4E-0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDlPpT2-UOGfm2A2djTLjCsygeqSw", @@ -1217,7 +1217,7 @@ Channel( VideoItem( id: "o7xfGuRaq94", name: "EEVblog 1485 - PedalCell CadenceX Bike Generator LOL FAIL!", - length: Some(1026), + duration: Some(1026), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/o7xfGuRaq94/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBA7RRL2USBwkYXp9ouWTbtU-JHSg", @@ -1258,7 +1258,7 @@ Channel( VideoItem( id: "3WSIfHOv3fc", name: "EEVblog 1484 - Kaba Mas X-09 High Security Electronic Lock Teardown", - length: Some(1106), + duration: Some(1106), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/3WSIfHOv3fc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLClZroFRo115ZuxYhJ5rcCDO2ZPcQ", @@ -1299,7 +1299,7 @@ Channel( VideoItem( id: "8yXZJZCKImI", name: "EEVblog 1483 - Holy Mailbag Bomb Batman!", - length: Some(3373), + duration: Some(3373), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/8yXZJZCKImI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBym7WfmrvKIjs2ClW-FOLtxbENzw", @@ -1340,7 +1340,7 @@ Channel( VideoItem( id: "vJ4pW6LKJWU", name: "EEVblog 1482 - Mains Capacitor Zener Regulator Circuit", - length: Some(1132), + duration: Some(1132), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/vJ4pW6LKJWU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDaKgfAJ4NAeqoMIPZDavsTw_JD5w", 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 09880ab..a365792 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 @@ -44,7 +44,7 @@ Channel( VideoItem( id: "vFc_pAywtKc", name: "The Murder Capital - Return My Head - Live at Coachella 2023", - length: Some(194), + duration: Some(194), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/vFc_pAywtKc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAPDC5UHtj76ursSNJqBD-jAiSxHg", @@ -85,7 +85,7 @@ Channel( VideoItem( id: "3JprxZgfcHU", name: "BENEE - Supaloney - ft. Gus Dapperton - Live at Coachella 2023", - length: Some(270), + duration: Some(270), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/3JprxZgfcHU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCs4cytf-M3ksr1YZB0Iu22b3_Baw", @@ -126,7 +126,7 @@ Channel( VideoItem( id: "a4QufICobaA", name: "Doechii - What It Is - Live at Coachella 2023", - length: Some(185), + duration: Some(185), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/a4QufICobaA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC1bg4wXk4z0Tcp-PgPodKlRsf8lA", @@ -167,7 +167,7 @@ Channel( VideoItem( id: "QoRm-xhVqYU", name: "Gabriels - Blame - Live at Coachella 2023", - length: Some(170), + duration: Some(170), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/QoRm-xhVqYU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD9H8nfnmu-G2jIfTelbBNbiAWvqw", @@ -208,7 +208,7 @@ Channel( VideoItem( id: "28DbQYSsn1w", name: "Kaytranada - Intimidate - ft H.E.R. - Live at Coachella 2023", - length: Some(252), + duration: Some(252), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/28DbQYSsn1w/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAF_nO2I3hjct93i3p6V3H1Rmadcg", @@ -249,7 +249,7 @@ Channel( VideoItem( id: "nLFZFp3go3o", name: "SG Lewis - Impact - ft. Channel Tres - Live at Coachella 2023", - length: Some(365), + duration: Some(365), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/nLFZFp3go3o/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBgQvHlztxcmQ3pkFNMKQpgvgMusA", @@ -290,7 +290,7 @@ Channel( VideoItem( id: "RWJMmYcPTR4", name: "MUNA - Silk Chiffon - Live at Coachella 2023", - length: Some(220), + duration: Some(220), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/RWJMmYcPTR4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBFk7y7WiMC9pZ9zE1YSlh0TA5o5Q", @@ -331,7 +331,7 @@ Channel( VideoItem( id: "gcrW53SoTKs", name: "Pusha T - Diet Coke - Live at Coachella 2023", - length: Some(175), + duration: Some(175), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/gcrW53SoTKs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAlGMLr4aBbSqb-8HBAPeXGLtkOGg", @@ -372,7 +372,7 @@ Channel( VideoItem( id: "7pYqbVztRtk", name: "Blink 182 - I Miss You - Live at Coachella 2023", - length: Some(267), + duration: Some(267), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/7pYqbVztRtk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD4rIf8atgIc2nEptj4CjgOPqXVWw", @@ -413,7 +413,7 @@ Channel( VideoItem( id: "yzmSlPiaeRU", name: "Blink 182 - Whats My Age Again - Live at Coachella 2023", - length: Some(157), + duration: Some(157), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/yzmSlPiaeRU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAzhu2omZ6arr3cGIEM1IGoIp_i3w", @@ -454,7 +454,7 @@ Channel( VideoItem( id: "r3Kpm4lEXmg", name: "Discover the Mirage, Part 2 - Coachella 2023", - length: Some(96), + duration: Some(96), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/r3Kpm4lEXmg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBLfc6awfa8Mv7I1nTLxfJRY4XUKQ", @@ -495,7 +495,7 @@ Channel( VideoItem( id: "LqrLCWoXR_k", name: "Coachella on YouTube 2023", - length: Some(31), + duration: Some(31), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/LqrLCWoXR_k/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCgX8ylcJLaYZiR3Nvr5WrS_6mw8g", @@ -536,7 +536,7 @@ Channel( VideoItem( id: "J1cmYPtABo0", name: "Discover the Mirage, Part 1 - Coachella 2023", - length: Some(91), + duration: Some(91), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/J1cmYPtABo0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAEDuvdZhNVkmvG-usGm9tmgJt7QQ", @@ -577,7 +577,7 @@ Channel( VideoItem( id: "a0BuUhI3f20", name: "Coachella 2023 featuring Bad Bunny, BLACKPINK, Frank Ocean and more 🌵", - length: Some(31), + duration: Some(31), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/a0BuUhI3f20/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgUCg-MA8=&rs=AOn4CLBDwxWN_SrIR8rCSQVokx1wfe1iqQ", @@ -618,7 +618,7 @@ Channel( VideoItem( id: "G2p-YqRGh80", name: "MEUTE Interview – Coachella Curated 2022", - length: Some(224), + duration: Some(224), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/G2p-YqRGh80/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgSSg-MA8=&rs=AOn4CLBWAFod2tomSeOXcy3y5EOIjimn9g", @@ -659,7 +659,7 @@ Channel( VideoItem( id: "eLZq4l37G7k", name: "Belly - Interview - Coachella 2022", - length: Some(302), + duration: Some(302), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/eLZq4l37G7k/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGHIgPyg6MA8=&rs=AOn4CLBtjJQRABeVsxDVsYK2RwoTETjE8A", @@ -700,7 +700,7 @@ Channel( VideoItem( id: "ViPAf8JpMXY", name: "Still Woozy - Interview - Coachella 2022", - length: Some(304), + duration: Some(304), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ViPAf8JpMXY/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgUyhEMA8=&rs=AOn4CLBFMadm51TmtXHYl-3B3s1DS1NLoQ", @@ -741,7 +741,7 @@ Channel( VideoItem( id: "4PKCIRUOZRE", name: "Slander - Interview - Coachella 2022", - length: Some(259), + duration: Some(259), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/4PKCIRUOZRE/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgUChCMA8=&rs=AOn4CLD6iAmhCyMAwfcKJl18WeC_BrjyFQ", @@ -782,7 +782,7 @@ Channel( VideoItem( id: "0O7abvoOxro", name: "Run The Jewels - Interview Coachella", - length: Some(408), + duration: Some(408), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/0O7abvoOxro/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgXihNMA8=&rs=AOn4CLCYxlSf_-9OXuvGCVfY8caFGVaGeQ", @@ -823,7 +823,7 @@ Channel( VideoItem( id: "z1Q7ahNLU9o", name: "Rina Sawayama - Interview - Coachella 2022", - length: Some(297), + duration: Some(297), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/z1Q7ahNLU9o/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgWCg_MA8=&rs=AOn4CLAFBsN92p3Xd5jd75JOkVQmFpRaOQ", @@ -864,7 +864,7 @@ Channel( VideoItem( id: "VB71WJvcdsM", name: "Rich Brian - Interview - Coachella 2022", - length: Some(371), + duration: Some(371), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/VB71WJvcdsM/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgVyhAMA8=&rs=AOn4CLAnNIA4THR0-WH60GnpECd_KRhUEQ", @@ -905,7 +905,7 @@ Channel( VideoItem( id: "FYr3OasngBI", name: "Masego - Interview - Coachella 2022", - length: Some(323), + duration: Some(323), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/FYr3OasngBI/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGHIgXyg6MA8=&rs=AOn4CLAAT-2gUtrDLaKVDQmsUkKmkE__Lg", @@ -946,7 +946,7 @@ Channel( VideoItem( id: "BwDnV5sbFeU", name: "Louis The Child - Interview - Coachella 2022", - length: Some(360), + duration: Some(360), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/BwDnV5sbFeU/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgWig2MA8=&rs=AOn4CLAXRG17JkByDUun5WIfMdVARqYwtg", @@ -987,7 +987,7 @@ Channel( VideoItem( id: "iH8KFwkMurQ", name: "Kim Petras - Interview - Coachella 2022", - length: Some(294), + duration: Some(294), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/iH8KFwkMurQ/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgVChIMA8=&rs=AOn4CLBzJcKvWEWZmdtorJ8P7tfMT1306A", @@ -1028,7 +1028,7 @@ Channel( VideoItem( id: "NK96m-YTUaE", name: "Joe Kay - Interview - Coachella 2022", - length: Some(189), + duration: Some(189), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/NK96m-YTUaE/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgWyhJMA8=&rs=AOn4CLD6ptJ2_2cwyY2pkGieoYscFjlVpQ", @@ -1069,7 +1069,7 @@ Channel( VideoItem( id: "jnG1qLK0SiI", name: "Japanese Breakfast - Interview - Coachella 2022", - length: Some(312), + duration: Some(312), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/jnG1qLK0SiI/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGHIgWCguMA8=&rs=AOn4CLBTEvxp-kJ7uYZwIaiylaohW_7wGQ", @@ -1110,7 +1110,7 @@ Channel( VideoItem( id: "NdKnb1e9_qA", name: "Idles - Interview - Coachella 2022", - length: Some(395), + duration: Some(395), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/NdKnb1e9_qA/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgWihTMA8=&rs=AOn4CLBEHQoRUkshAo-28mmB520wlFwlxA", @@ -1151,7 +1151,7 @@ Channel( VideoItem( id: "o8LEidp-Dq8", name: "Freddie Gibbs - Interview - Coachella 2022", - length: Some(207), + duration: Some(207), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/o8LEidp-Dq8/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGHIgNyhKMA8=&rs=AOn4CLBqrWHD5sKYIrl_Fj6dTSixhqFAbw", @@ -1192,7 +1192,7 @@ Channel( VideoItem( id: "4-sEy0jxh-U", name: "Epik High - Interview - Coachella 2022", - length: Some(386), + duration: Some(386), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/4-sEy0jxh-U/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgUCg9MA8=&rs=AOn4CLBqn7VHNUlbgYidF-k2x8b_W-_xWQ", @@ -1233,7 +1233,7 @@ Channel( VideoItem( id: "YN5CjIFmx88", name: "Duke Dumont - Interview - Coachella 2022", - length: Some(443), + duration: Some(443), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/YN5CjIFmx88/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGHIgUyhCMA8=&rs=AOn4CLAPYvywgTRHRSLHZaQXLC1-pdsIIg", 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 6d7d1de..42d984e 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 @@ -99,7 +99,7 @@ Channel( VideoItem( id: "BpW_DxGRCRw", name: "EEVblog 1605 - Chasing Fart Noises - JBL Charge 3 \"Repair\"", - length: Some(1676), + duration: Some(1676), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/BpW_DxGRCRw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBHX3HMauysp5rOpOOuhvfEsTxqHQ", @@ -140,7 +140,7 @@ Channel( VideoItem( id: "GRRvGj8OT_A", name: "EEVblog 1604 - BEWARE! Multimeter Burden Voltage", - length: Some(383), + duration: Some(383), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/GRRvGj8OT_A/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGMgYyhjMA8=&rs=AOn4CLByLXyg74bCFFJH8-ZqVMLtFqzniQ", @@ -181,7 +181,7 @@ Channel( VideoItem( id: "Nl9NL1oup3Q", name: "EEVblog 1603 - Colas Wattway Solar Roadways is DEAD", - length: Some(1055), + duration: Some(1055), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Nl9NL1oup3Q/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD8mC5yQTccSI3dqhCBNgbw8D981w", @@ -222,7 +222,7 @@ Channel( VideoItem( id: "u6tuZ7plOa4", name: "EEVblog 1602 - Sony Amplifier REPAIR ADVENTURE", - length: Some(2691), + duration: Some(2691), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/u6tuZ7plOa4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBa5FnB0TzCXbwoequOCmRm_VSIDw", @@ -263,7 +263,7 @@ Channel( VideoItem( id: "gZIRPJt69sM", name: "EEVblog 1601 - How VFD (Vacuum Fluorescent) Displays Work", - length: Some(606), + duration: Some(606), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/gZIRPJt69sM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAgHSw4ma5wo_wloJIzb_3L6-BAaQ", @@ -304,7 +304,7 @@ Channel( VideoItem( id: "SGwHRImfE4E", name: "EEVblog 1600 - Rouute: Road Based Energy BUSTED", - length: Some(1317), + duration: Some(1317), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/SGwHRImfE4E/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAX6ecM7rCaBFym8pyYPrWnYwbGuA", @@ -345,7 +345,7 @@ Channel( VideoItem( id: "XYdmX8w8xwI", name: "EEVblog 1599 - TOP 5 Jellybean Bipolar Transistors", - length: Some(1370), + duration: Some(1370), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/XYdmX8w8xwI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBrEHr6sXxajy0arfVzB9rlF1APVg", @@ -386,7 +386,7 @@ Channel( VideoItem( id: "igQoD_I7Arw", name: "EEVblog 1598 - ANENG AC11 Socket Tester TEARDOWN + SCHEMATIC Reverse Eng", - length: Some(1187), + duration: Some(1187), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/igQoD_I7Arw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDh-14EGoep-9LhQ2xkHz4xkUD3jA", @@ -427,7 +427,7 @@ Channel( VideoItem( id: "kpzNVsSmUu0", name: "EEVblog 1597 - Zoyi ZT-703S $80 2CH 50MHz Oscilloscope/Multimeter Review", - length: Some(1792), + duration: Some(1792), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/kpzNVsSmUu0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAPg-goL1Tq9bpbFq9Ni64B0n3o_A", @@ -468,7 +468,7 @@ Channel( VideoItem( id: "AUsENwVjiDQ", name: "EEVblog 1596 - NEW Digilent Analog Discovery Pro ADP2230 TEARDOWN", - length: Some(1212), + duration: Some(1212), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/AUsENwVjiDQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCfOMU68_jSX9nkY3L8dhS8Cv4kOQ", @@ -509,7 +509,7 @@ Channel( VideoItem( id: "nEmO8DcOap4", name: "EEVblog 1595 - 50 Year Chinese Nuclear Diamond Battery!", - length: Some(1051), + duration: Some(1051), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/nEmO8DcOap4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCajo6A-qIwGioGsM1c0wzSBfiing", @@ -550,7 +550,7 @@ Channel( VideoItem( id: "fIEH4-P2nyQ", name: "EEVblog 1594 - Inside a Quantum Computer! with Andrea Morello", - length: Some(5650), + duration: Some(5650), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/fIEH4-P2nyQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCRMUDhvpmmRPm6XLU21VstvzTzRw", @@ -591,7 +591,7 @@ Channel( VideoItem( id: "cO45J-8qTZ4", name: "EEVblog 1593 - 16kV ESD Tester REPAIR - Part 2", - length: Some(1636), + duration: Some(1636), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/cO45J-8qTZ4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA4xdKXs7GYV215wv6CHdGcgCSKkg", @@ -632,7 +632,7 @@ Channel( VideoItem( id: "AFz0qmkq4LM", name: "EEVblog 1592 - Fluke 287 Multimeter Teardown", - length: Some(1022), + duration: Some(1022), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/AFz0qmkq4LM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA7MqMPizOmrSHoXDsieAhELhYHCg", @@ -673,7 +673,7 @@ Channel( VideoItem( id: "bnQCKa6GNWo", name: "EEVblog 1591 - MORE Colas Wattway Solar Cycleways in the Netherlands!", - length: Some(1343), + duration: Some(1343), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/bnQCKa6GNWo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA71_sOs1fDAGBk2WJtxxOi6R_4KA", @@ -714,7 +714,7 @@ Channel( VideoItem( id: "-g-MD69V0CU", name: "EEVblog 1590 - Cheap $33 Boombox Teardown", - length: Some(1191), + duration: Some(1191), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/-g-MD69V0CU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDjLnRunCSuUYAmnxKgbuSTJHshrA", @@ -755,7 +755,7 @@ Channel( VideoItem( id: "KKMrT2HeRsQ", name: "EEVblog 1589 - CCD Scanner Array", - length: Some(872), + duration: Some(872), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/KKMrT2HeRsQ/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGIgZShbMA8=&rs=AOn4CLBigIAgMdNzHkMH9gB4lgiwfXy-Yg", @@ -796,7 +796,7 @@ Channel( VideoItem( id: "W_W_BDcebao", name: "EEVblog 1588 - Virgin Hyperloop One Goes BUST!", - length: Some(1783), + duration: Some(1783), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/W_W_BDcebao/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAgwPWx85cGEbBtxXot2PtP7Z12bQ", @@ -837,7 +837,7 @@ Channel( VideoItem( id: "FknxWtZkuUE", name: "EEVblog 1587 - Dumpster FAX Teardown", - length: Some(1185), + duration: Some(1185), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/FknxWtZkuUE/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgXChUMA8=&rs=AOn4CLBGke3u13MxDYsi4cLbME7jckVKuw", @@ -878,7 +878,7 @@ Channel( VideoItem( id: "AuFSMpFzAnw", name: "eevBLAB 117 - The Youtube Bot Comment Problem", - length: Some(299), + duration: Some(299), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/AuFSMpFzAnw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCrpv-fSn1pwpshPv-QWXV6jeFCiw", @@ -919,7 +919,7 @@ Channel( VideoItem( id: "WIEb1Zd1NdI", name: "EEVblog 1586 - Stranger Things Decade Resistor Box + Repair", - length: Some(968), + duration: Some(968), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/WIEb1Zd1NdI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD5ndIPZJndQkkrCcT_SbrBWdBXaA", @@ -960,7 +960,7 @@ Channel( VideoItem( id: "PhGPacEg3zw", name: "EEVblog 1585 - SCAM! Portable Kinetic Molecular Heater BUSTED", - length: Some(1166), + duration: Some(1166), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/PhGPacEg3zw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBluu7atTRGHN9p5mhKoCjtJcQCQA", @@ -1001,7 +1001,7 @@ Channel( VideoItem( id: "sisD61ohzK0", name: "EEVblog 1584 - Wireless Freakin\' EV Charging Roads! A $250M Boondoggle", - length: Some(1785), + duration: Some(1785), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/sisD61ohzK0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAX1Q1G-ek-lBZwvIlTXGO6UYPmEA", @@ -1042,7 +1042,7 @@ Channel( VideoItem( id: "1YK_GlnUlI8", name: "EEVblog 1583 - Advanced Oscilloscope Triggering: Glitch/Pulse/Runt/Interval", - length: Some(1339), + duration: Some(1339), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1YK_GlnUlI8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA6wJK1kBMorZs7ba2ny9fNdGA8yQ", @@ -1083,7 +1083,7 @@ Channel( VideoItem( id: "HR6_Lp7fH_c", name: "EEVblog 1582 - FNIRSI DPOX180H 180MHz DPO for $123?", - length: Some(1650), + duration: Some(1650), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/HR6_Lp7fH_c/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA5ywdoHcjG1ge9V3fGZNJdrhDoxg", @@ -1124,7 +1124,7 @@ Channel( VideoItem( id: "m_8jh_MpWBE", name: "EEVblog 1581 - Tesla Roadster now OPEN SOURCE?", - length: Some(1032), + duration: Some(1032), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/m_8jh_MpWBE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDHUvTCcc_XQO0MDCBTBOuXvixyuQ", @@ -1165,7 +1165,7 @@ Channel( VideoItem( id: "eeNKvh2cFPQ", name: "EEVblog 1580 - MacGruber Mailbag", - length: Some(2235), + duration: Some(2235), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/eeNKvh2cFPQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBy8szo9U24ueqgaeinBiQSTiNdcw", @@ -1206,7 +1206,7 @@ Channel( VideoItem( id: "5M5MF6KE-jY", name: "EEVblog 1579 - Nuclear Diamond Battery FRAUD Lawsuit by SEC!", - length: Some(1077), + duration: Some(1077), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/5M5MF6KE-jY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBq8h9yVCll1FPCLA5FdQTAWiaCAg", @@ -1247,7 +1247,7 @@ Channel( VideoItem( id: "IWHS2FDyh7s", name: "EEVblog 1578 - No one can be told what the Metrix is.", - length: Some(1794), + duration: Some(1794), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/IWHS2FDyh7s/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDru0L9uKllbOsCuLX_39XvlAAN5g", @@ -1288,7 +1288,7 @@ Channel( VideoItem( id: "CnJ7mQ_Fo-8", name: "EEVblog 1577 - History of Television & Cathode Ray Tubes with Kathy Loves Physics", - length: Some(4693), + duration: Some(4693), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/CnJ7mQ_Fo-8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCIxRMt80uMLr-xNjaez0XsbalQsA", 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 2d2732d..cbf872c 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 @@ -151,7 +151,7 @@ Channel( VideoItem( id: "gremHHvqYTE", name: "EEVblog 1501 - Rigol HDO4000 Low Noise 12bit Oscilloscope Unboxing & First Impression", - length: Some(1794), + duration: Some(1794), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/gremHHvqYTE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBcwR0YIwLjfFam9HkKdkTkqx_gHw", @@ -192,7 +192,7 @@ Channel( VideoItem( id: "WHO8NBfpaO0", name: "eevBLAB 102 - Last Mile Autonomous Robot Deliveries WILL FAIL", - length: Some(742), + duration: Some(742), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/WHO8NBfpaO0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDQPKMF3Aeo9CydEWz9pQWkn1Lu7Q", @@ -233,7 +233,7 @@ Channel( VideoItem( id: "W1Q8CxL95_Y", name: "EEVblog 1500 - Automatic Transfer Switch REVERSE ENGINEERED", - length: Some(1770), + duration: Some(1770), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/W1Q8CxL95_Y/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBIxuct8vahJHOJTLfbOnsMOXnjvw", @@ -274,7 +274,7 @@ Channel( VideoItem( id: "lagxSrPeoYg", name: "EEVblog 1499 - EcoFlow Delta Pro 3.6kWh Portable Battery TEARDOWN!", - length: Some(2334), + duration: Some(2334), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/lagxSrPeoYg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAbAX2gdAF66O7BUCaOVg2vQOsS2Q", @@ -315,7 +315,7 @@ Channel( VideoItem( id: "qTctWW9_FmE", name: "EEVblog 1498 - TransPod Fluxjet Hyperloop $550M Boondoggle!", - length: Some(2399), + duration: Some(2399), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/qTctWW9_FmE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCbnEQaGGI5zD9lCJ8kMmciezX2kA", @@ -356,7 +356,7 @@ Channel( VideoItem( id: "3t9G80wk0pk", name: "eevBLAB 101 - Why Are Tektronix Oscilloscopes So Expensive?", - length: Some(1423), + duration: Some(1423), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/3t9G80wk0pk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDnsVu-VQplpRpc1ZW-yk2byyZjZA", @@ -397,7 +397,7 @@ Channel( VideoItem( id: "7dze5CnZnmk", name: "EEVblog 1497 - RIP Fluke. Thanks Energizer. NOT.", - length: Some(1168), + duration: Some(1168), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/7dze5CnZnmk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAg430MYAmoycM4lbv_57S_d3kZRA", @@ -438,7 +438,7 @@ Channel( VideoItem( id: "6XnrZpPYgBg", name: "EEVblog 1496 - Winning Mailbag", - length: Some(3139), + duration: Some(3139), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/6XnrZpPYgBg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCrBgky13jB1p9xzKbmoUpJ4g0SNQ", @@ -479,7 +479,7 @@ Channel( VideoItem( id: "Psp3ltpFvws", name: "eevBLAB 100 - Reuters Attacks Odysee - LOL", - length: Some(855), + duration: Some(855), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Psp3ltpFvws/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCu8Nu_NmDw5vBHgb7e8JdJR1Dr1Q", @@ -520,7 +520,7 @@ Channel( VideoItem( id: "taVYTYz5vLE", name: "EEVblog 1495 - Quaze Wireless Power (AGAIN!) but for GAMING!", - length: Some(2592), + duration: Some(2592), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/taVYTYz5vLE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAMHngmN8TjWZz327vUD7zjjblYBw", @@ -561,7 +561,7 @@ Channel( VideoItem( id: "Y6cZrieFw-k", name: "EEVblog 1494 - FIVE Ways to Open a CHEAP SAFE!", - length: Some(1194), + duration: Some(1194), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Y6cZrieFw-k/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDsdoJwcvSFZU4e9cwDFbZj3W21Pw", @@ -602,7 +602,7 @@ Channel( VideoItem( id: "Kr2XyhpUdUI", name: "EEVblog 1493 - MacGyver Project - Part 2", - length: Some(1785), + duration: Some(1785), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Kr2XyhpUdUI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDdL3brjOzbABRuyz-yolawtGRsbw", @@ -643,7 +643,7 @@ Channel( VideoItem( id: "rxGafdgkal8", name: "EEVblog 1492 - $5 Oscilloscope Repaired! + Oz GIVEAWAY", - length: Some(1163), + duration: Some(1163), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/rxGafdgkal8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD-p_t0q_Q2oTGyJuFCQJ5z6VPPMQ", @@ -684,7 +684,7 @@ Channel( VideoItem( id: "4yosozyeIP4", name: "EEVblog 1491 - The MacGyver Project - Part 1", - length: Some(1706), + duration: Some(1706), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/4yosozyeIP4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDRNAWkPQfuQirfiOdowD1iQlWrWg", @@ -725,7 +725,7 @@ Channel( VideoItem( id: "06JtC2DC_dQ", name: "EEVblog 1490 - Insane Jaycar Dumpster Sale! 2022", - length: Some(1700), + duration: Some(1700), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/06JtC2DC_dQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDVIvEssIKji_8dyBYGYbpIqen7vQ", @@ -766,7 +766,7 @@ Channel( VideoItem( id: "piquT76w9TI", name: "EEVblog 1489 - Mystery Teardown!", - length: Some(1466), + duration: Some(1466), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/piquT76w9TI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCTzIcGeRDwUyINtik50EQCOTxwiA", @@ -807,7 +807,7 @@ Channel( VideoItem( id: "pKuUKT-zU-g", name: "EEVblog 1488 - Tilt Five Augmented Reality AR Glasses - First Reaction!", - length: Some(2152), + duration: Some(2152), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/pKuUKT-zU-g/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCB6Rh4miI20yPy2kJaxul_wA3Now", @@ -848,7 +848,7 @@ Channel( VideoItem( id: "_R4wQQNSO6k", name: "EEVblog 1487 - Do Solar Micro Inverters Take Power at Night?", - length: Some(2399), + duration: Some(2399), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/_R4wQQNSO6k/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDEQVZ0yQPLZqwLdQednKWwLWqDmA", @@ -889,7 +889,7 @@ Channel( VideoItem( id: "ikp5BorIo_M", name: "EEVblog 1486 - What you DIDN\'T KNOW About Film Capacitor FAILURES!", - length: Some(1792), + duration: Some(1792), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ikp5BorIo_M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBygGB8KC522NC15BhDC1WpuNKsgw", @@ -930,7 +930,7 @@ Channel( VideoItem( id: "7O-QckjCXNo", name: "eevBLAB 99 - AI SPAM BOT Youtube Space/Science/Tech Channels? - WTF", - length: Some(592), + duration: Some(592), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/7O-QckjCXNo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBY1cRnrWQCbmlAzP5okMmIYjgdsg", @@ -971,7 +971,7 @@ Channel( VideoItem( id: "VutdTxF4E-0", name: "RIP The Old Garage Lab", - length: Some(115), + duration: Some(115), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/VutdTxF4E-0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDlPpT2-UOGfm2A2djTLjCsygeqSw", @@ -1012,7 +1012,7 @@ Channel( VideoItem( id: "o7xfGuRaq94", name: "EEVblog 1485 - PedalCell CadenceX Bike Generator LOL FAIL!", - length: Some(1026), + duration: Some(1026), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/o7xfGuRaq94/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBA7RRL2USBwkYXp9ouWTbtU-JHSg", @@ -1053,7 +1053,7 @@ Channel( VideoItem( id: "3WSIfHOv3fc", name: "EEVblog 1484 - Kaba Mas X-09 High Security Electronic Lock Teardown", - length: Some(1106), + duration: Some(1106), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/3WSIfHOv3fc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLClZroFRo115ZuxYhJ5rcCDO2ZPcQ", @@ -1094,7 +1094,7 @@ Channel( VideoItem( id: "8yXZJZCKImI", name: "EEVblog 1483 - Holy Mailbag Bomb Batman!", - length: Some(3373), + duration: Some(3373), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/8yXZJZCKImI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBym7WfmrvKIjs2ClW-FOLtxbENzw", @@ -1135,7 +1135,7 @@ Channel( VideoItem( id: "vJ4pW6LKJWU", name: "EEVblog 1482 - Mains Capacitor Zener Regulator Circuit", - length: Some(1132), + duration: Some(1132), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/vJ4pW6LKJWU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDaKgfAJ4NAeqoMIPZDavsTw_JD5w", @@ -1176,7 +1176,7 @@ Channel( VideoItem( id: "myqiqUE00fo", name: "EEVblog 1481 - Dodgy Dangerous Heater REPAIR", - length: Some(1622), + duration: Some(1622), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/myqiqUE00fo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB3nqRnunVeYPk1_vdXP7IEv1E1Rg", @@ -1217,7 +1217,7 @@ Channel( VideoItem( id: "xIokNnjuam8", name: "EEVblog 1480 - Lightyear Zero Solar Powered Electric Car", - length: Some(1196), + duration: Some(1196), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/xIokNnjuam8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBRxCpyCftz0LJooMtxBcIWwaF6hw", @@ -1258,7 +1258,7 @@ Channel( VideoItem( id: "S3R4r2xvVYQ", name: "EEVblog 1479 - Is Your Calculator WRONG?", - length: Some(1066), + duration: Some(1066), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/S3R4r2xvVYQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC2ZW-UUXJGrtHphT2E53pFafr-1g", @@ -1299,7 +1299,7 @@ Channel( VideoItem( id: "RlwcdUnRw6w", name: "EEVblog 1478 - Waveform Update Rate Shootout - Tek 2 Series vs Others", - length: Some(1348), + duration: Some(1348), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/RlwcdUnRw6w/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBYaH7c8-BP8807GgNGML2WUNK8pg", @@ -1340,7 +1340,7 @@ Channel( VideoItem( id: "R2fw2g6WFbg", name: "EEVblog 1477 - TEARDOWN! - NEW Tektronix 2 Series Oscilloscope", - length: Some(2718), + duration: Some(2718), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/R2fw2g6WFbg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBwd6wqvFI0HcPpOkDW_XDzWSPH_w", 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 834d87c..4fa906c 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 @@ -135,7 +135,7 @@ Channel( VideoItem( id: "csP93FGy0bs", name: "Chill Out Music Mix • 24/7 Live Radio | Relaxing Deep House, Chillout Lounge, Vocal & Instrumental", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/csP93FGy0bs/hqdefault_live.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDq5TEpXIGH_OHZhn2_Jx7lp2kMUQ", @@ -176,7 +176,7 @@ Channel( VideoItem( id: "19hKXI1ENrY", name: "Deep House Radio | Relaxing & Chill House, Best Summer Mix 2022, Gym & Workout Music", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/19hKXI1ENrY/hqdefault_live.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAmi9jgARxMYdZpIOLw5RhQkRx0Dg", @@ -217,7 +217,7 @@ Channel( VideoItem( id: "CqMUC5eXX7c", name: "Back To School / Work 📚 Deep Focus Chillout Mix | The Good Life Radio #4", - length: Some(4667), + duration: Some(4667), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/CqMUC5eXX7c/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDJglNaF89w0KFxzGn4Y3UAwu9ydg", @@ -258,7 +258,7 @@ Channel( VideoItem( id: "A77SYlXKQEM", name: "Chillout Lounge 🏖\u{fe0f} Calm & Relaxing Background Music | The Good Life Radio #3", - length: Some(1861), + duration: Some(1861), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/A77SYlXKQEM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA6c0iWB5IjXrbncP1JT2gvljTwyw", @@ -299,7 +299,7 @@ Channel( VideoItem( id: "72vkRHQfjbk", name: "Summer Lovers 💖 A Beautiful & Relaxing Chillout Deep House Mix | The Good Life Radio #2", - length: Some(1832), + duration: Some(1832), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/72vkRHQfjbk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBBMAUBpqHTq2IalWplaJugEhf4eQ", @@ -340,7 +340,7 @@ Channel( VideoItem( id: "AMWMDhibROw", name: "Relaxing & Chill House 🌴 Summer \'21 Chill-Out Mix | The Good Life Radio #1", - length: Some(1949), + duration: Some(1949), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/AMWMDhibROw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCDO-i7ZMHpgILmTxjIvtFEDl3fTQ", @@ -381,7 +381,7 @@ Channel( VideoItem( id: "9UMxZofMNbA", name: "Chillout Lounge - Calm & Relaxing Background Music | Study, Work, Sleep, Meditation, Chill", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/9UMxZofMNbA/hqdefault_live.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDc3KEjaAI_syibPmnpLN04x1Wv7g", @@ -422,7 +422,7 @@ Channel( VideoItem( id: "a2sEYVwBvX4", name: "Paratone - Heaven Is A Place On Earth (feat. kaii)", - length: Some(161), + duration: Some(161), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/a2sEYVwBvX4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBwBX3CEEc3ZK1SsP8iUbebtp5hUw", @@ -463,7 +463,7 @@ Channel( VideoItem( id: "JAY-prtJnGY", name: "Joseph Feinstein - Where I Belong", - length: Some(126), + duration: Some(126), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/JAY-prtJnGY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC79uFNaKWCm0lQ8_uxV0s2G0jJ-Q", @@ -504,7 +504,7 @@ Channel( VideoItem( id: "DySa8OrQDi4", name: "LA Vision & Gigi D\'Agostino - Hollywood", - length: Some(200), + duration: Some(200), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/DySa8OrQDi4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAzPj5ZqrnaLQELc8EDtgLlUhDdRQ", @@ -545,7 +545,7 @@ Channel( VideoItem( id: "NqzXULaB8MA", name: "LO - Home", - length: Some(163), + duration: Some(163), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/NqzXULaB8MA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDFvB5JbSQIUtb-pldtNWWHb2Y3SQ", @@ -586,7 +586,7 @@ Channel( VideoItem( id: "UGzy6uhZkmw", name: "Luca - Sunset", - length: Some(153), + duration: Some(153), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/UGzy6uhZkmw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD93d5foF1_yGd6ej5_8t-PM7ZCDw", @@ -627,7 +627,7 @@ Channel( VideoItem( id: "iuvapHKpW8A", name: "nourii - Better Off (feat. BCS)", - length: Some(126), + duration: Some(126), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/iuvapHKpW8A/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCsDj4nWrDpmF-BTY_9REtx8xiHjA", @@ -668,7 +668,7 @@ Channel( VideoItem( id: "n_1Nwht-Gh4", name: "Deep House Covers & Remixes of Popular Songs 2020 🌴 Deep House, G-House, Chill-Out Music Playlist", - length: Some(2940), + duration: Some(2940), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/n_1Nwht-Gh4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAwRnMWNt4fNmmGR4THSsTh-9MiCw", @@ -709,7 +709,7 @@ Channel( VideoItem( id: "6TptI5BtP5U", name: "The Good Life Radio Mix #2 | Summer Memories ☀\u{fe0f} (Chill Music Playlist 2020)", - length: Some(3448), + duration: Some(3448), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/6TptI5BtP5U/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBGvxAmGVff9uk5AOxBij56uB6azw", @@ -750,7 +750,7 @@ Channel( VideoItem( id: "36YnV9STBqc", name: "The Good Life Radio\u{a0}•\u{a0}24/7 Live Radio | Best Relax House, Chillout, Study, Running, Gym, Happy Music", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/36YnV9STBqc/hqdefault_live.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCe7OwcMt2h8bSNHbTTULV9-SST1Q", @@ -791,7 +791,7 @@ Channel( VideoItem( id: "7x6ii2TcsPE", name: "The Good Life Radio Mix #1 | Relaxing & Chill House Music Playlist 2020", - length: Some(2726), + duration: Some(2726), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/7x6ii2TcsPE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC-CNpKCSMnLIscrYKNPX7DRZ0buA", @@ -832,7 +832,7 @@ Channel( VideoItem( id: "mxV5MBZYYDE", name: "Christmas Music with Vocals 🎅 Best Relaxing Christmas Songs 2020", - length: Some(5863), + duration: Some(5863), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/mxV5MBZYYDE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCVUbM3MtN0zZcE_8lY4eyo-Ly5Kw", @@ -873,7 +873,7 @@ Channel( VideoItem( id: "hh2AOoPoAIo", name: "The Good Life Radio Mix 2019 🎅 Winter & Christmas Relax House Playlist [Best of Part 1]", - length: Some(2530), + duration: Some(2530), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/hh2AOoPoAIo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAMmrbiYHz-7STgazeW2PAuGCkCcg", @@ -914,7 +914,7 @@ Channel( VideoItem( id: "aFlvhtWsJ0g", name: "Chillout Playlist | Relaxing Summer Music Mix 2019 [Deep & Tropical House]", - length: Some(2483), + duration: Some(2483), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/aFlvhtWsJ0g/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAvMC2I82wG7eQPDQmnyC3RbUGFWg", @@ -955,7 +955,7 @@ Channel( VideoItem( id: "cD-d7u6fnEI", name: "Chill House Playlist | Relaxing Summer Music 2019", - length: Some(3165), + duration: Some(3165), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/cD-d7u6fnEI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBU_f1nTElkLg9ic2eKjM6luGgVcw", 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 0f8a1cb..46369d0 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 @@ -122,7 +122,7 @@ Channel( VideoItem( id: "JBUZE0mIlg8", name: "small but sure joy", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/JBUZE0mIlg8/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLCRBlyIUBUm_aypWz4tGkrDNJxIZw", @@ -148,7 +148,7 @@ Channel( VideoItem( id: "SRrvxFc2b2c", name: "i don\'t believe in long distance relationships", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/SRrvxFc2b2c/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLA0hJdOfUp-zMI-vW43sYnKgufocA", @@ -174,7 +174,7 @@ Channel( VideoItem( id: "l9TiwunjzgA", name: "long distance", - length: Some(1043), + duration: Some(1043), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/l9TiwunjzgA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDjM6SZ7ScyfFRr13QdVmIvWEWWrQ", @@ -215,7 +215,7 @@ Channel( VideoItem( id: "cNx0ql9gnf4", name: "come over :)", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/cNx0ql9gnf4/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLBvAKRZE2LyKIo6_6prX9pzfiWoVw", @@ -241,7 +241,7 @@ Channel( VideoItem( id: "fGQUWI4o__A", name: "Baskin Robbins in South Korea", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/fGQUWI4o__A/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLDyPuI762qzLAZM0QikxjFKVpoF9w", @@ -267,7 +267,7 @@ Channel( VideoItem( id: "Q73VTjdqVA8", name: "dry hot pot", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Q73VTjdqVA8/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLBfJXtFWfAnyMOvaJfvpYJ5WrhbSA", @@ -293,7 +293,7 @@ Channel( VideoItem( id: "pRVSdUxdsVw", name: "Repairing...", - length: Some(965), + duration: Some(965), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/pRVSdUxdsVw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAQWneuYcJcccgooBfa3WI4LdYF3w", @@ -334,7 +334,7 @@ Channel( VideoItem( id: "gTG2WDbiYGo", name: "time machine", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/gTG2WDbiYGo/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLDw5Lw19mNLJnoIF3aCGkMbxvgILQ", @@ -360,7 +360,7 @@ Channel( VideoItem( id: "y5JK5YFp92g", name: "tiramissu", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/y5JK5YFp92g/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLCR66ytQIBWWw_ajvgyaUdUawHVIg", @@ -386,7 +386,7 @@ Channel( VideoItem( id: "pvSWHm4wlxY", name: "having kids", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/pvSWHm4wlxY/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLDt7ZAwQoObfa5A7gC_hJnU1WH4Ug", @@ -412,7 +412,7 @@ Channel( VideoItem( id: "2FJVhdOO0F0", name: "a health scare", - length: Some(1238), + duration: Some(1238), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/2FJVhdOO0F0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA5ambaz-euRsB9VG5ANaYFUUSEbg", @@ -453,7 +453,7 @@ Channel( VideoItem( id: "CqFGACRrWJE", name: "just do it", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/CqFGACRrWJE/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLDyAIF4S_foRXsyvq16YCPJWNKewQ", @@ -479,7 +479,7 @@ Channel( VideoItem( id: "CutR_1SDDzY", name: "feels good to be back", - length: Some(1159), + duration: Some(1159), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/CutR_1SDDzY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAt413Uk4xhHjYwpLI5-DXuOsFouA", @@ -520,7 +520,7 @@ Channel( VideoItem( id: "DdGr6t2NqKc", name: "coming soon", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/DdGr6t2NqKc/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLDRYfxh25EjK3zuOJORNNahxeBanA", @@ -546,7 +546,7 @@ Channel( VideoItem( id: "jKS44NMWuXw", name: "adult money", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/jKS44NMWuXw/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLAIexckdN7FXJUgkeJvITHyzXw1TQ", @@ -572,7 +572,7 @@ Channel( VideoItem( id: "kx1YtJM_vbI", name: "a fig\'s journey", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/kx1YtJM_vbI/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLAi03nhSbt84LL7PFD2ij8GmaDlLQ", @@ -598,7 +598,7 @@ Channel( VideoItem( id: "Sdbzs-1WWH0", name: "How to.. Mozzarella 🧀", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Sdbzs-1WWH0/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLC8IkwAif4wXhBGxHiosiILbPCSBw", @@ -624,7 +624,7 @@ Channel( VideoItem( id: "9qBHyJIDous", name: "how to drink like a real korean", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/9qBHyJIDous/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLB9Ib_E0siDiRMZ_GVHVxBfMd0Dkw", @@ -650,7 +650,7 @@ Channel( VideoItem( id: "mBeFDb4gp8s", name: "mr. krabs soup", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/mBeFDb4gp8s/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLCzAPzv16WTJLr4ma-sAz6fNkFL0g", @@ -676,7 +676,7 @@ Channel( VideoItem( id: "b38r1UYqoBQ", name: "in five years", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/b38r1UYqoBQ/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLCGB9IpC2Enx5iZ-YCl0vEpMGpo9A", @@ -702,7 +702,7 @@ Channel( VideoItem( id: "KUz7oArksR4", name: "running away", - length: Some(1023), + duration: Some(1023), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/KUz7oArksR4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD1NwuIgJuJy2oPAiHqMre6rbcuPA", @@ -743,7 +743,7 @@ Channel( VideoItem( id: "RdFk4WaifEo", name: "a weeknight dinner", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/RdFk4WaifEo/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLBlKLBjBagaTQj24nYb-HkCQQcWHA", @@ -769,7 +769,7 @@ Channel( VideoItem( id: "GuyGyzZcumI", name: "McDonald\'s Michelin Burger", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/GuyGyzZcumI/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLDtmyilZAgMw8VWNy518etIKi4phA", @@ -795,7 +795,7 @@ Channel( VideoItem( id: "07Zipsb3-qU", name: "cwispy potato pancake", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/07Zipsb3-qU/hq720_2.jpg?sqp=-oaymwEdCJYDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLARXBTZlNStCVemXSkHfAWksRogng", @@ -821,7 +821,7 @@ Channel( VideoItem( id: "3kaePnU6Clo", name: "authenticity is overrated", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/3kaePnU6Clo/hq720_2.jpg?sqp=-oaymwEdCJYDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLDq0MY9dsMvr9Y6yaJ7069fgtdpGA", @@ -847,7 +847,7 @@ Channel( VideoItem( id: "rt4rXMftnpg", name: "you can kimchi anything (T&C applies)", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/rt4rXMftnpg/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLC7WfSTGHkH2FEmn9gQ5E4AqpRtug", @@ -873,7 +873,7 @@ Channel( VideoItem( id: "DTyLUvbf128", name: "egg, soy, and perfect pot rice", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/DTyLUvbf128/hq720_2.jpg?sqp=-oaymwEdCJYDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLAN1AtPya1D1NyiO0XYKOjIZIyhhQ", @@ -899,7 +899,7 @@ Channel( VideoItem( id: "DzjLBgIe_aI", name: "love language", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/DzjLBgIe_aI/hq720_2.jpg?sqp=-oaymwEdCJYDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLDWVkrYrt64LvvxrMRfs29g_lGrNw", @@ -925,7 +925,7 @@ Channel( VideoItem( id: "sPb2gyN-hnE", name: "worth fighting for", - length: Some(1232), + duration: Some(1232), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/sPb2gyN-hnE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBidXnS47SJMkvOlqt2DgzHxr6wKQ", @@ -966,7 +966,7 @@ Channel( VideoItem( id: "9JboRKeJ2m4", name: "Rating Italian McDonald\'s", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/9JboRKeJ2m4/hq720_2.jpg?sqp=-oaymwEdCJYDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLC7xktrbnAqJq2nHH9aDggULsb3Cg", 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 0eb3553..97348c9 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 @@ -139,7 +139,7 @@ Channel( VideoItem( id: "B-KjpyR4n5Q", name: "The Online Manosphere", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/B-KjpyR4n5Q/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC_J9WgOnkXvtw1uUhZASVDLPlrZg", @@ -180,7 +180,7 @@ Channel( VideoItem( id: "umDsCyZ67J0", name: "Ukraine - The Beginning of the End", - length: Some(614), + duration: Some(614), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/umDsCyZ67J0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBih3bLoQ9xphjCDt3lqXTLKtE52g", @@ -221,7 +221,7 @@ Channel( VideoItem( id: "dNgKGL8lQck", name: "Honest Russian Military Recruitment Video", - length: Some(62), + duration: Some(62), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/dNgKGL8lQck/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDrbxxCEBDfZP2wA0bIJpzbtmyARw", @@ -262,7 +262,7 @@ Channel( VideoItem( id: "UVWciFJeFNA", name: "Self-Driving Cars Will Only Make Traffic Worse", - length: Some(458), + duration: Some(458), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/UVWciFJeFNA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDJhcm03VJaYQU5xAIg2w5h0SOaUA", @@ -303,7 +303,7 @@ Channel( VideoItem( id: "vyWaax07_ks", name: "NEOM Is The Parody Of The Future", - length: Some(636), + duration: Some(636), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/vyWaax07_ks/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD-sXnmtClcL6lcjjAR_05F1IpndA", @@ -344,7 +344,7 @@ Channel( VideoItem( id: "onQ0ICkLEJw", name: "I Got An Email From \"The Dubai Sheikh\'s Personal Friend\"", - length: Some(211), + duration: Some(211), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/onQ0ICkLEJw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAmwCI9t6a_pXPPteQ835LNPgcYbw", @@ -385,7 +385,7 @@ Channel( VideoItem( id: "yDEL1pTYOhs", name: "The \"Meritocracy\" Isn\'t Real", - length: Some(385), + duration: Some(385), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/yDEL1pTYOhs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDmKg0HtcuQfJUsjVj_3WIUtOkZDg", @@ -426,7 +426,7 @@ Channel( VideoItem( id: "EnVvlhhqWtw", name: "City Review - Prague: Beautiful and Disappointing", - length: Some(834), + duration: Some(834), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/EnVvlhhqWtw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDFUovL8XJ7tUzOh_sdB1ymKJS4Qg", @@ -467,7 +467,7 @@ Channel( VideoItem( id: "Oxz4oY0T85Y", name: "European International Rail SUCKS, Here\'s Why", - length: Some(810), + duration: Some(810), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Oxz4oY0T85Y/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAdlPQSSzVGixQsH_uXsd1VVsfMcQ", @@ -508,7 +508,7 @@ Channel( VideoItem( id: "lxUEuOkblws", name: "Why the Straddling Bus Failed", - length: Some(614), + duration: Some(614), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/lxUEuOkblws/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAaUchMwc5d_yNfH9BM0VlexxjPtQ", @@ -549,7 +549,7 @@ Channel( VideoItem( id: "UG8jiKOtedk", name: "How Canadian Ukrainian Volunteer Got Exposed", - length: Some(538), + duration: Some(538), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/UG8jiKOtedk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB7OMkifWaF0tbm5qu0IZmxuK7AtA", @@ -590,7 +590,7 @@ Channel( VideoItem( id: "bQld7iJJSyk", name: "Why Roads ALWAYS Fill Up, No Matter How Much We Widen Them", - length: Some(159), + duration: Some(159), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/bQld7iJJSyk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA-9aUtPGBCwAO2wl2JG5JnwWh-iA", @@ -631,7 +631,7 @@ Channel( VideoItem( id: "WUK0K5mdQ_s", name: "Egypt\'s New Capital is an Ozymandian Nightmare", - length: Some(870), + duration: Some(870), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/WUK0K5mdQ_s/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCViMWL1-G3s7PBgMgo1mVdFSx9Rw", @@ -672,7 +672,7 @@ Channel( VideoItem( id: "LB-vsT1Sl68", name: "Why Car-Centric Cities are a GREAT Idea", - length: Some(369), + duration: Some(369), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/LB-vsT1Sl68/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDfLhC6VYMirWX_lL0eXhZCpAYabA", @@ -713,7 +713,7 @@ Channel( VideoItem( id: "p8NiM_p8n5A", name: "HE FIXED TRAFFIC", - length: Some(157), + duration: Some(157), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/p8NiM_p8n5A/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDTl0EgGk8_v6gPMJY0IF5tUvDGAg", @@ -754,7 +754,7 @@ Channel( VideoItem( id: "U9YdnzOf4NQ", name: "Why a Mars Colony is a Stupid and Dangerous Idea", - length: Some(1000), + duration: Some(1000), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/U9YdnzOf4NQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLARNVQBbhiSGasL6fMQUU1ITgHuDQ", @@ -795,7 +795,7 @@ Channel( VideoItem( id: "CH55WpJxF1s", name: "What #Elongate Is Really About", - length: Some(122), + duration: Some(122), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/CH55WpJxF1s/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLACITT6pFDi4KlXA0E6lLB5FHVxbQ", @@ -836,7 +836,7 @@ Channel( VideoItem( id: "PPcsZwUv350", name: "Vladimir Putin\'s Three Choices", - length: Some(505), + duration: Some(505), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/PPcsZwUv350/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBnYUqduIFS2zR6BQwWIdWH0eyIng", @@ -877,7 +877,7 @@ Channel( VideoItem( id: "B78-FgNqdc8", name: "Was I WRONG About Electric Buses?", - length: Some(1536), + duration: Some(1536), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/B78-FgNqdc8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD4r2bdbKCxbgvGoKGauCaZDBp3mw", @@ -918,7 +918,7 @@ Channel( VideoItem( id: "JCXLwOMSDxk", name: "If We Treated Afghanistan Like Ukraine", - length: Some(92), + duration: Some(92), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/JCXLwOMSDxk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBhu3_HO7U63sl-DBLhRbDllmFoRA", @@ -959,7 +959,7 @@ Channel( VideoItem( id: "IpIWswLYAbA", name: "Who\'s Winning the War for Ukraine?", - length: Some(646), + duration: Some(646), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/IpIWswLYAbA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDpoUqVQJOt4bR1niy4QTCpbNo8cg", @@ -1000,7 +1000,7 @@ Channel( VideoItem( id: "NIItoD1Ebh0", name: "Old Habits Die Hard", - length: Some(107), + duration: Some(107), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/NIItoD1Ebh0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBHqsrLzPqmebGr4w1j40V31wgRcQ", @@ -1041,7 +1041,7 @@ Channel( VideoItem( id: "pENUV9DLa2g", name: "Anarcho-Capitalism In Practice III - The Final Attempt", - length: Some(600), + duration: Some(600), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/pENUV9DLa2g/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCmoujwlLKjddw_4xZGN0iY0-uO_g", @@ -1082,7 +1082,7 @@ Channel( VideoItem( id: "gFGQI8P9BMg", name: "How The Gravel Institute Lies To You About Ukraine", - length: Some(2472), + duration: Some(2472), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/gFGQI8P9BMg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBpJDqK5bFk3L2AuDsyN8SrCv4fKA", @@ -1123,7 +1123,7 @@ Channel( VideoItem( id: "AVLevneWvaE", name: "Why Russia Can\'t Achieve Air Supremacy In Ukraine", - length: Some(188), + duration: Some(188), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/AVLevneWvaE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAjh4bMN4kEdZqI94bBJlK60-6WWA", @@ -1164,7 +1164,7 @@ Channel( VideoItem( id: "MfRcY90OccY", name: "Can Ukraine Actually WIN This?", - length: Some(606), + duration: Some(606), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/MfRcY90OccY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCxpbaMlVdngsFBMi1pYqCTkhnk4g", @@ -1205,7 +1205,7 @@ Channel( VideoItem( id: "dQXwreYzJ40", name: "Here\'s What Will Happen To Ukraine [Update: yep, called it]", - length: Some(397), + duration: Some(397), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/dQXwreYzJ40/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBCyh95CRe_cTECmF4XY9oq3jtFjw", @@ -1246,7 +1246,7 @@ Channel( VideoItem( id: "-OO3RiNMDB8", name: "Assessing The Russian Invasion Threat", - length: Some(655), + duration: Some(655), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/-OO3RiNMDB8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAWbC-UhcsGON1ERqF0BToXXwNXdA", @@ -1287,7 +1287,7 @@ Channel( VideoItem( id: "obMTYs30E9A", name: "Ukraine - The Country That Defied Vladimir Putin", - length: Some(2498), + duration: Some(2498), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/obMTYs30E9A/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDsLbeOIYyrq_a3srmaShg1BXt6IA", @@ -1328,7 +1328,7 @@ Channel( VideoItem( id: "4-2bR1iFlhk", name: "\"Wait, Russia isn\'t in NATO?!\" Insane Debate on Ukraine, US Politics, and more!", - length: Some(12151), + duration: Some(12151), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/4-2bR1iFlhk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDi8mzVinfZpO33L7lijfeQJdsVuA", diff --git a/src/client/snapshots/rustypipe__client__pagination__tests__map_channel_videos.snap b/src/client/snapshots/rustypipe__client__pagination__tests__map_channel_videos.snap index cefb6e4..9aa3c44 100644 --- a/src/client/snapshots/rustypipe__client__pagination__tests__map_channel_videos.snap +++ b/src/client/snapshots/rustypipe__client__pagination__tests__map_channel_videos.snap @@ -8,7 +8,7 @@ Paginator( VideoItem( id: "R2fw2g6WFbg", name: "EEVblog 1477 - TEARDOWN! - NEW Tektronix 2 Series Oscilloscope", - length: Some(2718), + duration: Some(2718), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/R2fw2g6WFbg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBwd6wqvFI0HcPpOkDW_XDzWSPH_w", @@ -43,7 +43,7 @@ Paginator( VideoItem( id: "JDXKrXJloSw", name: "EEVblog 1476 - Keithley 515A Wheatstone Bridge TEARDOWN & TUTORIAL", - length: Some(1721), + duration: Some(1721), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/JDXKrXJloSw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCk0u4EnX8f6ud7s704sbv5UGFZug", @@ -78,7 +78,7 @@ Paginator( VideoItem( id: "H8ot_YPi6QU", name: "eevBLAB 98 - The Pressure Youtubers Are Under", - length: Some(431), + duration: Some(431), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/H8ot_YPi6QU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBiimvgnZx6akYlMkU-hxSuIM33Mg", @@ -113,7 +113,7 @@ Paginator( VideoItem( id: "i1Ad5jfk_v4", name: "EEVblog 1475 - What\'s This SMD Part?", - length: Some(1785), + duration: Some(1785), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/i1Ad5jfk_v4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCxhWKrpuy11lTv5po8m7OyQYxbvA", @@ -148,7 +148,7 @@ Paginator( VideoItem( id: "GHbo4v8pahc", name: "eevBLAB 97 - Is Apple Serious About Right To Repair? (The Verge)", - length: Some(1186), + duration: Some(1186), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/GHbo4v8pahc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBKNYL8XTxa9LDJKG6L7unv3CJG9Q", @@ -183,7 +183,7 @@ Paginator( VideoItem( id: "Uds-wLoaZmA", name: "EEVblog 1474 - Can You Measure Capacitors IN Circuit?", - length: Some(1407), + duration: Some(1407), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Uds-wLoaZmA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLASo0gEqEXqljW-KjeCb2jcr8Wxkw", @@ -218,7 +218,7 @@ Paginator( VideoItem( id: "D9J-AmCcf4U", name: "EEVblog 1473 - How Your LCR Meter Works", - length: Some(1183), + duration: Some(1183), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/D9J-AmCcf4U/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBO_KDd4KRJX5K0ea3of2pm_Pp3dw", @@ -253,7 +253,7 @@ Paginator( VideoItem( id: "Eoh-JKVQZwg", name: "EEVblog 1472 - Resistor Cube Problem SOLVED", - length: Some(1196), + duration: Some(1196), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Eoh-JKVQZwg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA7JkB7fkv4gOeXl4-B9VWSSsbkDw", @@ -288,7 +288,7 @@ Paginator( VideoItem( id: "U81glZBDpIg", name: "EEVblog 1471 - Mailbag", - length: Some(2252), + duration: Some(2252), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/U81glZBDpIg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCfgd3GSfLFioa89tLill31Zl7gOg", @@ -323,7 +323,7 @@ Paginator( VideoItem( id: "gLfxznVJ2q0", name: "Petition - Australian Standards Should be FREE", - length: Some(585), + duration: Some(585), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/gLfxznVJ2q0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDCSXOJMOfUPep7AbUFPFEW2e-KFA", @@ -358,7 +358,7 @@ Paginator( VideoItem( id: "GfihUkWPCQQ", name: "EEVblog 1470 - AC Basics Tutorial Part 3 - Complex Numbers are EASY!", - length: Some(1468), + duration: Some(1468), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/GfihUkWPCQQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBTbyr1AEDanXKDJg18zCEDN5YKCg", @@ -393,7 +393,7 @@ Paginator( VideoItem( id: "yEG6pKUdIlg", name: "EEVblog 1469 - AC Basics Tutorial - Part 2 - Phasors", - length: Some(1147), + duration: Some(1147), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/yEG6pKUdIlg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAavMqXRQQP8Qs6jPDdCaZdjj28sw", @@ -428,7 +428,7 @@ Paginator( VideoItem( id: "wPzzPGzxD00", name: "EEVblog 1468 - Electronex Show Tour 2022", - length: Some(2850), + duration: Some(2850), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/wPzzPGzxD00/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA3HoFx0YDm9C54Wn8lPV-hqHmLBA", @@ -463,7 +463,7 @@ Paginator( VideoItem( id: "Tdge8vEODeY", name: "EEVblog 1467 - Stanford Solar Power at Nightime! BUSTED", - length: Some(836), + duration: Some(836), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Tdge8vEODeY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCcLhiajXRRNS9OAmsMeX1ploYVog", @@ -498,7 +498,7 @@ Paginator( VideoItem( id: "ebQ2Im5zfT0", name: "EEVblog 1466 - Dumpster Dive Xeon Server", - length: Some(1138), + duration: Some(1138), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ebQ2Im5zfT0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBfBPfDfHepn92nrxb-l3GoEUJxNg", @@ -533,7 +533,7 @@ Paginator( VideoItem( id: "UrS5ezesA9s", name: "EEVblog 1465 - Your Multimeter Can Measure Inductors", - length: Some(596), + duration: Some(596), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/UrS5ezesA9s/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDhubVMAa4lD0PEkWJwxngLFy2g5A", @@ -568,7 +568,7 @@ Paginator( VideoItem( id: "c5M8P6oe9xY", name: "EEVblog 1464 - TOP 5 Jellybean Comparators", - length: Some(2399), + duration: Some(2399), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/c5M8P6oe9xY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBBbPtmLMOKuiIB4l1Z_VuF8ajH1g", @@ -603,7 +603,7 @@ Paginator( VideoItem( id: "9TDKP9RLlPs", name: "EEVblog 1463 - Mailbag", - length: Some(2664), + duration: Some(2664), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/9TDKP9RLlPs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBC8e8sMlrwsvUamlxaJGvSAB1vAQ", @@ -638,7 +638,7 @@ Paginator( VideoItem( id: "hwggIw2HQuQ", name: "eevBLAB 96 - BUSTED! - Dymo Gets WORSE!", - length: Some(347), + duration: Some(347), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/hwggIw2HQuQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBrARGU_K_yrxFuO5Fx0a2sznKUCA", @@ -673,7 +673,7 @@ Paginator( VideoItem( id: "xzSDJRC0F6c", name: "EEVblog 1462 - Why Dymo Label Printers SUCK!", - length: Some(1353), + duration: Some(1353), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/xzSDJRC0F6c/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAG9svGIbJ61gBv2XurBBjdj7eWaA", @@ -708,7 +708,7 @@ Paginator( VideoItem( id: "9wuyPZjjR9k", name: "EEVblog 1461 - The MOSFET Search CHALLENGE", - length: Some(3505), + duration: Some(3505), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/9wuyPZjjR9k/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBhLudpzPSKR-vnRpUF61-upI5W4A", @@ -743,7 +743,7 @@ Paginator( VideoItem( id: "vyJuMGEFbjQ", name: "EEVblog1460 - REPAIRING a LED Studio Light with a DUMPSTER LAPTOP!", - length: Some(1798), + duration: Some(1798), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/vyJuMGEFbjQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLConLvhiiORxzI4W53cK838-oimWA", @@ -778,7 +778,7 @@ Paginator( VideoItem( id: "_pETMto-9iE", name: "EEVblog 1459 - Is it worth PARTS SALVAGING an Inkjet Printer/Scanner?", - length: Some(1588), + duration: Some(1588), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/_pETMto-9iE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLANwQQorgH71g8SZTkT6gi8SjkDCQ", @@ -813,7 +813,7 @@ Paginator( VideoItem( id: "MvFf9RSJUhk", name: "EEVblog 1458 - Microscope Polarising MAGIC!", - length: Some(942), + duration: Some(942), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/MvFf9RSJUhk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAOkBS4oJiQHsbt_NMdXftPeUaR8A", @@ -848,7 +848,7 @@ Paginator( VideoItem( id: "E6obq3T71vI", name: "EEVblog1457 - Old School Mailbag - ESC Burnout", - length: Some(1552), + duration: Some(1552), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/E6obq3T71vI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA24jAiRp_-m1MJQATFhdbrRqFnHA", @@ -883,7 +883,7 @@ Paginator( VideoItem( id: "ZTwVQmUm6NY", name: "eevBLAB 95 - Why Are Youtube Playlists So BAD?", - length: Some(865), + duration: Some(865), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ZTwVQmUm6NY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAi4YH3QhTYvY5be4zeqST3PZ7EBA", @@ -918,7 +918,7 @@ Paginator( VideoItem( id: "prQinQ4MWmU", name: "EEVblog 1456 - Sega Toys Homestar Planetarium REPAIR", - length: Some(899), + duration: Some(899), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/prQinQ4MWmU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDXaQgmCdFsIkM5Yt0Req7NWHELjQ", @@ -953,7 +953,7 @@ Paginator( VideoItem( id: "yMIzsFAztv4", name: "EEVblog 1455 - Capacitors Produce Current During Reflow Soldering! WTF!", - length: Some(894), + duration: Some(894), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/yMIzsFAztv4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDcBhR3clJQxbrPONzQJ9nUNd_0OA", @@ -988,7 +988,7 @@ Paginator( VideoItem( id: "QtqljdMwRyk", name: "EEVblog 1454 - Water from Air AGAIN! - The Kara Pure", - length: Some(1198), + duration: Some(1198), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/QtqljdMwRyk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDERzxdJPJQ7T_UhqojqFaACgzFvA", @@ -1023,7 +1023,7 @@ Paginator( VideoItem( id: "kcWwAweWjQg", name: "EEVblog 1453 - Elgato Key Light TEARDOWN", - length: Some(1048), + duration: Some(1048), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/kcWwAweWjQg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLASIZUAaqbklehN0AG_xn6QDrREog", 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 4dcbef3..eb0f46c 100644 --- a/src/client/snapshots/rustypipe__client__pagination__tests__map_playlist.snap +++ b/src/client/snapshots/rustypipe__client__pagination__tests__map_playlist.snap @@ -8,7 +8,7 @@ Paginator( VideoItem( id: "zMPIobcM2j0", name: "ZUNA feat. AZET & NOIZY - NUMMER 1 prod. by DJ A-BOOM", - length: Some(212), + duration: Some(212), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/zMPIobcM2j0/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgUSg9MA8=&rs=AOn4CLAuU5Z3UBZEtKPrFsMT8zuSdLpCaQ", @@ -49,7 +49,7 @@ Paginator( VideoItem( id: "f9g6NCHQrcE", name: "AZET ft. ZUNA & NOIZY - KRIMINELL (prod. by DJ A-BOOM)", - length: Some(230), + duration: Some(230), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/f9g6NCHQrcE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAMGepmuIe_XAharqN6EnCXvp0xYw", @@ -90,7 +90,7 @@ Paginator( VideoItem( id: "CAVfEwrwT_o", name: "Rooz x MoTrip - Immer Wieder (eng: Again and Again) (prod SOTT)", - length: Some(227), + duration: Some(227), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/CAVfEwrwT_o/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBUrGnudhiLRS7_j5qb_973rHrTMw", @@ -131,7 +131,7 @@ Paginator( VideoItem( id: "VUr9JZQ8F2g", name: "Kontra K - Zwischen Himmel & Hölle (Official Video)", - length: Some(270), + duration: Some(270), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/VUr9JZQ8F2g/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB_wUNlasFg6HhHNUdiLvaGljPqRg", @@ -172,7 +172,7 @@ Paginator( VideoItem( id: "XQat6rNNbdQ", name: "ZUNA - AYE prod. by LUCRY #KMNSTREET VOL. 7", - length: Some(220), + duration: Some(220), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/XQat6rNNbdQ/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgZShlMA8=&rs=AOn4CLAfXnFLscSl_ts58Ud5Vic-qwrwsg", @@ -213,7 +213,7 @@ Paginator( VideoItem( id: "EQyU6fGDn0c", name: "RAF Camora - CORLEONE (prod. by X-Plosive,The Cratez & RAF Camora)", - length: Some(220), + duration: Some(220), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/EQyU6fGDn0c/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCZtiHGorHDDYBp-sPHB2MACq4XJg", @@ -254,7 +254,7 @@ Paginator( VideoItem( id: "g4poKgQZX6w", name: "Ufo361 - „BEVERLY HILLS“ (prod. von AT Beatz/Jimmy Torrio) [Official HD Video]", - length: Some(219), + duration: Some(219), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/g4poKgQZX6w/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBog509zw2F56xrdDsQkeRiuEC-xg", @@ -295,7 +295,7 @@ Paginator( VideoItem( id: "YTHr7gxwYUQ", name: "DARDAN X LUCIANO - AIRMAX GEGEN KOPF (prod. by Leryk)", - length: Some(167), + duration: Some(167), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/YTHr7gxwYUQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAgyAHaOHTo5EebRbB0J0b6nA_-aA", @@ -336,7 +336,7 @@ Paginator( VideoItem( id: "MfCSDn6q6j4", name: "YONII - DIRECTION prod. by LUCRY (Official 4K Video)", - length: Some(182), + duration: Some(182), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/MfCSDn6q6j4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBEG2udEnlreWP8ezpx5j-1RpYrwg", @@ -377,7 +377,7 @@ Paginator( VideoItem( id: "gx9KFXb5x_o", name: "Anstandslos & Durchgeknallt - Egal ft. Jasmiina (Official Video)", - length: Some(166), + duration: Some(166), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/gx9KFXb5x_o/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCQmzWXiU6YGpce9EAK0b1z2Y_QyQ", @@ -418,7 +418,7 @@ Paginator( VideoItem( id: "d7R7DQ5tlQo", name: "RAF Camora - SAG NIX (Anthrazit RR) #02", - length: Some(205), + duration: Some(205), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/d7R7DQ5tlQo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDeUBwyhvVq_h9-oRTQ82-tcP7cYg", @@ -459,7 +459,7 @@ Paginator( VideoItem( id: "cZPjgcqHSa8", name: "Olexesh - BWA feat. Celo & Abdi, Hanybal (prod. von Drunken Masters) [Official Video]", - length: Some(294), + duration: Some(294), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/cZPjgcqHSa8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDnL4R2RjYxajSHM2MYHHPIGSEbHg", @@ -500,7 +500,7 @@ Paginator( VideoItem( id: "ogDLdREonWY", name: "AZET - KETTEN CARTIER (Beat by zeeko & Veteran / prod. by DJ A-Boom)", - length: Some(198), + duration: Some(198), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ogDLdREonWY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCE-WB-D8k22SnqNqjlGIv3PopaKA", @@ -541,7 +541,7 @@ Paginator( VideoItem( id: "pRQpKprUUPY", name: "Moe Phoenix - Ching Chang Chong (prod. by FL3X & Unik)", - length: Some(226), + duration: Some(226), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/pRQpKprUUPY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC1RCyBcVxcI7USDT0EdCYwzsgYbQ", @@ -582,7 +582,7 @@ Paginator( VideoItem( id: "qZoQw9b4uCo", name: "PAYY x ARDIAN BUJUPI - Handschellen (Prod. by Remoe & Kostas Karagiozidis) [ OFFICIAL VIDEO ]", - length: Some(221), + duration: Some(221), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/qZoQw9b4uCo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD_Yap-tgk3XSsxA3-WPIDbffMP5g", @@ -623,7 +623,7 @@ Paginator( VideoItem( id: "q23qghoF6Nk", name: "AZET - GJYNAH (beat by Lucry) (Official 4K Video)", - length: Some(271), + duration: Some(271), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/q23qghoF6Nk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAon_vcMLc5GY3dZ857wU4_6sM7bQ", @@ -664,7 +664,7 @@ Paginator( VideoItem( id: "yU0aKa7PFBg", name: "Helene Fischer | Herzbeben (Live aus dem Kesselhaus München)", - length: Some(206), + duration: Some(206), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/yU0aKa7PFBg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDmZE8ywbjxjg8l1xwMeSJzMj27Ng", @@ -705,7 +705,7 @@ Paginator( VideoItem( id: "DVCAqvypaCc", name: "DARDAN - JUMP (prod. by Oster)", - length: Some(202), + duration: Some(202), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/DVCAqvypaCc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDzU84UNl1l4W0cTdgmX9xthBVhHw", @@ -746,7 +746,7 @@ Paginator( VideoItem( id: "XdnI7sm6LeQ", name: "RAF Camora - Andere Liga (prod. Beataura & RAF Camora)", - length: Some(240), + duration: Some(240), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/XdnI7sm6LeQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLALhffgTUDPZfO74mZauERCfDWLFw", @@ -787,7 +787,7 @@ Paginator( VideoItem( id: "KcOXNSJtFLg", name: "Sugar MMFK - Trikot von Paris (prod. by Penacho) [4K VIDEO]", - length: Some(255), + duration: Some(255), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/KcOXNSJtFLg/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGDggYyhyMA8=&rs=AOn4CLDP_rdjW8feJ1ZoIRxZT6P218hhdg", @@ -828,7 +828,7 @@ Paginator( VideoItem( id: "K0UxHXZwgsg", name: "FLER ✖\u{fe0f}Pfirsich/Late Check-Out ✖\u{fe0f}► [ official Video ] prod. by Simes Add. Vocals by Mosenu", - length: Some(245), + duration: Some(245), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/K0UxHXZwgsg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD1XTfZEJtsHmu1PYtlGFwz4bAiOw", @@ -869,7 +869,7 @@ Paginator( VideoItem( id: "eyyNwOSQ3Yg", name: "MGP \"BAD BITCH\" (Official Video)", - length: Some(166), + duration: Some(166), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/eyyNwOSQ3Yg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCrGr9LT69Q4tZzNwFIuUzoUAYwSQ", @@ -910,7 +910,7 @@ Paginator( VideoItem( id: "1yskotqNuXI", name: "RIN - Bros (prod. Minhtendo)", - length: Some(219), + duration: Some(219), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1yskotqNuXI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLABT4efReL1QrSECDJwROBI-pRCzw", @@ -951,7 +951,7 @@ Paginator( VideoItem( id: "C03n4AAiL9w", name: "Glasperlenspiel - Geiles Leben (Lyric Video)", - length: Some(211), + duration: Some(211), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/C03n4AAiL9w/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCKvhEqesIgEalpxUZClNFcg65cig", @@ -992,7 +992,7 @@ Paginator( VideoItem( id: "a2wNRTKRusM", name: "Moe Phoenix - Mohammad (prod. by AriBeatz)", - length: Some(197), + duration: Some(197), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/a2wNRTKRusM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBBKdUFUQEPrf091_3-GxUDfOuwzA", @@ -1033,7 +1033,7 @@ Paginator( VideoItem( id: "AIf61iHwWMQ", name: "RAF Camora feat. UFO 361, GZUZ & Bonez MC - WAFFEN (Anthrazit RR) #07", - length: Some(268), + duration: Some(268), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/AIf61iHwWMQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDOB2LLlsczwY-nRhzA0m4rzWF7yg", @@ -1074,7 +1074,7 @@ Paginator( VideoItem( id: "BixqbSRjY2Y", name: "RAF Camora - ALLES PROBIERT feat. BONEZ MC (prod.by Beataura & RAF Camora)", - length: Some(319), + duration: Some(319), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/BixqbSRjY2Y/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgUiheMA8=&rs=AOn4CLBqs2J7SrhDv0y0nukTRhu3nBf0RQ", @@ -1115,7 +1115,7 @@ Paginator( VideoItem( id: "Acgy-3d4P6o", name: "Kontra K - Erfolg ist kein Glück (Official Video)", - length: Some(226), + duration: Some(226), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Acgy-3d4P6o/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGEsgXyhlMA8=&rs=AOn4CLBPlFkfape542W2wqX_C2tcWypxKQ", @@ -1156,7 +1156,7 @@ Paginator( VideoItem( id: "5M_yA9M7yNc", name: "RAF Camora - GOTHAM CITY (Anthrazit RR) #03", - length: Some(156), + duration: Some(156), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/5M_yA9M7yNc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCviCUA-ubhSSDyG7yt8Q1FEbCdtQ", @@ -1197,7 +1197,7 @@ Paginator( VideoItem( id: "PjJuezhos3U", name: "Fard - \"LIEBE MACHT BLIND\" (Official Video) prod.by Abaz & X-Plosive", - length: Some(258), + duration: Some(258), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/PjJuezhos3U/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAulYAOlEdmCEOUhn3IQDk6lWuC5A", @@ -1238,7 +1238,7 @@ Paginator( VideoItem( id: "XMutaJI2-kc", name: "18 Karat ✖\u{fe0f}• MAMA IST NICHT STOLZ •✖\u{fe0f} [ official Video ]", - length: Some(262), + duration: Some(262), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/XMutaJI2-kc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCCJIA4Omo1CkTXkOzYVdNbP0Mkrw", @@ -1279,7 +1279,7 @@ Paginator( VideoItem( id: "Xac6Q7hcZkQ", name: "RIN - Monica Bellucci (prod. Alexis Troy)", - length: Some(228), + duration: Some(228), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Xac6Q7hcZkQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDkwIz_hDDGLXX8i3uaKaWIl9ZH1Q", @@ -1320,7 +1320,7 @@ Paginator( VideoItem( id: "JfwjsjBcDoU", name: "Helene Fischer - Achterbahn", - length: Some(222), + duration: Some(222), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/JfwjsjBcDoU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDMhxxaiLymi4ZQ3WvJpovkdQfqSQ", @@ -1361,7 +1361,7 @@ Paginator( VideoItem( id: "zshiQUV3ohw", name: "MOE PHOENIX feat. VEYSEL - GAUNER (prod. by Ghana Beats)", - length: Some(226), + duration: Some(226), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/zshiQUV3ohw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAqPtA9IBm0Dp_o89aj1F18oYvRnw", @@ -1402,7 +1402,7 @@ Paginator( VideoItem( id: "g1eTAt1_VAM", name: "Nimo - HYPE feat. Celo & Abdi (prod. von Matveï) [Official 4K Video]", - length: Some(303), + duration: Some(303), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/g1eTAt1_VAM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBuGSL6ChVGrfHZvlpcgOnkQmDnkg", @@ -1443,7 +1443,7 @@ Paginator( VideoItem( id: "c3rLrFC8igY", name: "Dame - Auf die guten alten Zeiten [Official HD Video]", - length: Some(252), + duration: Some(252), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/c3rLrFC8igY/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGHIgRig8MA8=&rs=AOn4CLDwPn1CndxsMh6zW-hj5sxAmTVMcA", @@ -1484,7 +1484,7 @@ Paginator( VideoItem( id: "1im4DNEYzEM", name: "Gzuz - Optimal (Jambeatz)", - length: Some(209), + duration: Some(209), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1im4DNEYzEM/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgTyhMMA8=&rs=AOn4CLBx6JS1pZn9Qgq-BchE8fv8lUP6nA", @@ -1525,7 +1525,7 @@ Paginator( VideoItem( id: "8BUxw9ocM2s", name: "EULE aka Jazzy Gudd - Stehaufmädchen (Official Video)", - length: Some(184), + duration: Some(184), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/8BUxw9ocM2s/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD07FNMfJFNvAE1cQaM6d0TKN3thA", @@ -1566,7 +1566,7 @@ Paginator( VideoItem( id: "g4cSpnGbHPE", name: "CAPITAL BRA & KING KHALIL - ZWEISTELLIGE HAFTSTRAFEN (PROD. SAVEN MUSIQ)", - length: Some(201), + duration: Some(201), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/g4cSpnGbHPE/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGHIgWyhCMA8=&rs=AOn4CLDm0FhfKylnfery4UqpUghgot5oaA", @@ -1607,7 +1607,7 @@ Paginator( VideoItem( id: "1Sdj9MiCowQ", name: "187 Strassenbande - 10 Jahre (Jambeatz)", - length: Some(296), + duration: Some(296), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1Sdj9MiCowQ/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgVShMMA8=&rs=AOn4CLAAZTsrfwImW7FvwIYWJ9K0JnNVkA", @@ -1648,7 +1648,7 @@ Paginator( VideoItem( id: "2DbR35g-0ZY", name: "Ufo361 - \"DER PATE\" (prod. von Broke Boys) [Official HD Video]", - length: Some(237), + duration: Some(237), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/2DbR35g-0ZY/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGH8gHig8MA8=&rs=AOn4CLAAOdr62yoknUpc5OIvFP4ewD01dw", @@ -1689,7 +1689,7 @@ Paginator( VideoItem( id: "j09hpp3AxIE", name: "Die Toten Hosen // „Tage wie diese\" [Offizielles Musikvideo]", - length: Some(272), + duration: Some(272), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/j09hpp3AxIE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD9AYFv29sGfmmdT8U1dqKUjY5ALw", @@ -1730,7 +1730,7 @@ Paginator( VideoItem( id: "J3GN6JXjV3g", name: "Wincent Weiss - Frische Luft", - length: Some(200), + duration: Some(200), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/J3GN6JXjV3g/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB66Ro2vGeZvHM0dnqbT6HVGtuQNA", @@ -1771,7 +1771,7 @@ Paginator( VideoItem( id: "pULl-p02upM", name: "Eunique ► CHECK (feat. Xatar) ◄ music by Lucry / prod. by Michael Jackson [Official Video]", - length: Some(240), + duration: Some(240), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/pULl-p02upM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAjH5lXg2mtjBxznFQpauBgpZ6S5g", @@ -1812,7 +1812,7 @@ Paginator( VideoItem( id: "O6By8JeCtQQ", name: "KING KHALIL FT. CELO & ABDI - ALLES RICHTIG SO (PROD.BY THE CRATEZ)", - length: Some(210), + duration: Some(210), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/O6By8JeCtQQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBeEDlx_Qtv47nY5CUFqHFv3eJAJQ", @@ -1853,7 +1853,7 @@ Paginator( VideoItem( id: "NGn3IYQ7M7E", name: "LUCIANO - VORANKOMMEN (prod. by Chryziz Beats)", - length: Some(228), + duration: Some(228), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/NGn3IYQ7M7E/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGDIgYChyMA8=&rs=AOn4CLA2wpgBg-MXTT_iZyBlTP7ur2bZBw", @@ -1894,7 +1894,7 @@ Paginator( VideoItem( id: "o43oI5x86dI", name: "Gzuz feat. LX- Schnapp! (prod. P.M.B.)", - length: Some(166), + duration: Some(166), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/o43oI5x86dI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDeGB5wc8URrV5zjwsfhU2-lAd2Bg", @@ -1935,7 +1935,7 @@ Paginator( VideoItem( id: "7TNqUrINxzs", name: "Veysel - Besser als 50 Cent (OFFICIAL HD VIDEO) prod. by Fonty", - length: Some(197), + duration: Some(197), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/7TNqUrINxzs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDGpJi_1puIgwODMepICvhX3qrmvw", @@ -1976,7 +1976,7 @@ Paginator( VideoItem( id: "f3BD5Zm3cp0", name: "BONEZ MC & RAF CAMORA - PALMEN AUS GOLD", - length: Some(231), + duration: Some(231), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/f3BD5Zm3cp0/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGEUgVihlMA8=&rs=AOn4CLAiVFr5c0yW81qlZDUAapLUrvLF5Q", @@ -2017,7 +2017,7 @@ Paginator( VideoItem( id: "sF4yTDp95Eo", name: "YONII - LAMPEDUSA prod. by LUCRY (Official 4K Video)", - length: Some(203), + duration: Some(203), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/sF4yTDp95Eo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBvg9CIthGa9KJrDHLjeZjkDegElw", @@ -2058,7 +2058,7 @@ Paginator( VideoItem( id: "1EwLNHg6ejY", name: "Mert ft. SOOLKING - AJAJAJ (prod. by ARIBEATZ)", - length: Some(224), + duration: Some(224), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1EwLNHg6ejY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBxADlCvmeGhe-SPNkvZcVQk7wu4g", @@ -2099,7 +2099,7 @@ Paginator( VideoItem( id: "-l75qaSDWe8", name: "SXTN - Bongzimmer (Official Video)", - length: Some(287), + duration: Some(287), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/-l75qaSDWe8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCMJGvaVHhQX1wQsr-3Kd2djDVIRQ", @@ -2140,7 +2140,7 @@ Paginator( VideoItem( id: "7h7ntYLLrfQ", name: "Mark Forster - Kogong", - length: Some(223), + duration: Some(223), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/7h7ntYLLrfQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAtAzQLSNQvigkTqhdfBgz8WSOyTA", @@ -2181,7 +2181,7 @@ Paginator( VideoItem( id: "ApUl3Ops69M", name: "AZET - FAST LIFE (prod. by m3) #KMNSTREET VOL. 1", - length: Some(179), + duration: Some(179), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ApUl3Ops69M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDb2436I_Kp7y4gMe6w7nh_DN0F2Q", @@ -2222,7 +2222,7 @@ Paginator( VideoItem( id: "2YcJ8Wightw", name: "GZUZ - CL500 (Jambeatz)", - length: Some(152), + duration: Some(152), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/2YcJ8Wightw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBafY_AaRX5vaAIfpdctKTL8ZbUqQ", @@ -2263,7 +2263,7 @@ Paginator( VideoItem( id: "W3q8Od5qJio", name: "Rammstein - Du Hast (Official 4K Video)", - length: Some(236), + duration: Some(236), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/W3q8Od5qJio/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBy8BHWAiUz5cUmZdLkDTTIS7w5bA", @@ -2304,7 +2304,7 @@ Paginator( VideoItem( id: "WPFLAjmWCtk", name: "SIDO - Astronaut (feat. Andreas Bourani) OFFICIAL VIDEO", - length: Some(268), + duration: Some(268), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/WPFLAjmWCtk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBA6n25WXYSKiK6KbfsZk-monR1BQ", @@ -2345,7 +2345,7 @@ Paginator( VideoItem( id: "tC76tIp0kBk", name: "MoTrip - So wie du bist (feat. Lary)", - length: Some(312), + duration: Some(312), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/tC76tIp0kBk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBCSXdft-cKXNbKDFWX-UBvjgjeOQ", @@ -2386,7 +2386,7 @@ Paginator( VideoItem( id: "kiMG_JV2gbo", name: "Adel Tawil \"Lieder\" (Official Lyrics Video)", - length: Some(230), + duration: Some(230), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/kiMG_JV2gbo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDuETow7IpKT30ZdSsh-9L6ns1Uww", @@ -2427,7 +2427,7 @@ Paginator( VideoItem( id: "CrYYg_atdtk", name: "Marteria, Yasha, Miss Platnum - Lila Wolken (Official Video)", - length: Some(231), + duration: Some(231), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/CrYYg_atdtk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB_8mGL48FutWtNIFldaMsVmhlhnw", @@ -2468,7 +2468,7 @@ Paginator( VideoItem( id: "XTPGpBBwt1w", name: "K.I.Z. - Hurra die Welt geht unter ft. Henning May (Official Video)", - length: Some(299), + duration: Some(299), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/XTPGpBBwt1w/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAcYXhOsrGetd_0wuibgBFV7YBnIg", @@ -2509,7 +2509,7 @@ Paginator( VideoItem( id: "uC08L4xxjNM", name: "Max Giesinger - 80 Millionen (Offizielles Video)", - length: Some(257), + duration: Some(257), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/uC08L4xxjNM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAOc-MPZ_rsmax81mL3f8AgLsX90Q", @@ -2550,7 +2550,7 @@ Paginator( VideoItem( id: "5fAoV_AAMf0", name: "Mark Forster - Bauch und Kopf (Videoclip)", - length: Some(257), + duration: Some(257), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/5fAoV_AAMf0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDfOpErDWIsYZ61_NlNduG5z2W5Cg", @@ -2591,7 +2591,7 @@ Paginator( VideoItem( id: "u5Vz7obL460", name: "Tim Bendzko - Keine Maschine (Offizielles Video)", - length: Some(202), + duration: Some(202), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/u5Vz7obL460/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGFIgXihlMA8=&rs=AOn4CLC1InTb9tzurJ8KYVVxYlr_mAviGw", @@ -2632,7 +2632,7 @@ Paginator( VideoItem( id: "ZPJlyRv_IGI", name: "Deichkind - Leider Geil (Official Video)", - length: Some(189), + duration: Some(189), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ZPJlyRv_IGI/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-DoACuAiKAgwIABABGH8gLigsMA8=&rs=AOn4CLAsa5xqoVmmalzKDlxm2W274NBygg", @@ -2673,7 +2673,7 @@ Paginator( VideoItem( id: "s2SLbln-JwE", name: "BIBI & TINA \" Jungs gegen Mädchen - MÄDCHEN GEGEN JUNGS - Das offizielle Video!", - length: Some(172), + duration: Some(172), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/s2SLbln-JwE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDURk566C-Rh1vwMamXVandCsnDvQ", @@ -2714,7 +2714,7 @@ Paginator( VideoItem( id: "28xHtRw6pG8", name: "AZET - PATTE FLIESST prod. by LUCRY #KMNSTREET VOL. 5", - length: Some(206), + duration: Some(206), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/28xHtRw6pG8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAZB8XpsXloeCqWZpyZt8YNvV2IxQ", @@ -2755,7 +2755,7 @@ Paginator( VideoItem( id: "joWoKqUTRvc", name: "KC Rebell ► ALLES & NICHTS ◄ [ official Video ]", - length: Some(204), + duration: Some(204), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/joWoKqUTRvc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDAwlxydPxzE_jwb1rNbqmjdMEEoQ", @@ -2796,7 +2796,7 @@ Paginator( VideoItem( id: "XNMFTqhcNrE", name: "Mark Forster - Flash mich (Videoclip)", - length: Some(236), + duration: Some(236), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/XNMFTqhcNrE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBTr_B4ekTBT9hupTStE4MOf52PVw", @@ -2837,7 +2837,7 @@ Paginator( VideoItem( id: "v3vPLgJ9FX8", name: "Cheat Codes - Sex (Official Video)", - length: Some(260), + duration: Some(260), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/v3vPLgJ9FX8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA_hmNsTwTENDy4Bjh6gh__yW3GIQ", @@ -2878,7 +2878,7 @@ Paginator( VideoItem( id: "UFXOd179kOA", name: "GZUZ - EBBE & FLUT (mit Xatar & Hanybal)", - length: Some(213), + duration: Some(213), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/UFXOd179kOA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD-tY05WssNwj08bjU_P1qVrXP3Ag", @@ -2919,7 +2919,7 @@ Paginator( VideoItem( id: "4xRsDnKgHZc", name: "ZUNA feat. NIMO - HOL MIR DEIN COUSIN (Official 4K Video)", - length: Some(206), + duration: Some(206), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/4xRsDnKgHZc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD2YQRMQrDjFZXKHm-HPOKNZY-kmw", @@ -2960,7 +2960,7 @@ Paginator( VideoItem( id: "mE3IjoEqMqY", name: "Hanybal - VANILLA SKY mit Nimo (prod. von Lucry) [Official 4K Video]", - length: Some(211), + duration: Some(211), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/mE3IjoEqMqY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLARArW0ieGDVRQ4Qhp8JWepnfeDtg", @@ -3001,7 +3001,7 @@ Paginator( VideoItem( id: "E7e5vxKerqA", name: "DARDAN FT. ENO - WER MACHT PARA? (Official Video)", - length: Some(195), + duration: Some(195), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/E7e5vxKerqA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBYmNJ23r8Y5wE4xpfNz2ms6i3omw", @@ -3042,7 +3042,7 @@ Paginator( VideoItem( id: "axmZ_5Rx4Go", name: "Adel Tawil \"Zuhause\" (Official Music Video)", - length: Some(210), + duration: Some(210), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/axmZ_5Rx4Go/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDh0E0WIHz_QeECpxh9OcCQgP80Tw", @@ -3083,7 +3083,7 @@ Paginator( VideoItem( id: "44Ig6BsOCYA", name: "Olexesh - PURPLE HAZE (Offizielles Video)", - length: Some(279), + duration: Some(279), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/44Ig6BsOCYA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDAwH-0B_Aadbi2O9ba4EJUr3kyCA", @@ -3124,7 +3124,7 @@ Paginator( VideoItem( id: "3iLBFEJjdN0", name: "SIDO - Löwenzahn feat. Olexesh (prod. by DJ Desue & x-plosive)", - length: Some(242), + duration: Some(242), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/3iLBFEJjdN0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA2pjLj4MppP5puOVVw960xZHlEZQ", @@ -3165,7 +3165,7 @@ Paginator( VideoItem( id: "M-ncq2eHF_k", name: "Philipp Poisel - Ich will nur (Offizielles Video)", - length: Some(233), + duration: Some(233), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/M-ncq2eHF_k/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgUyhAMA8=&rs=AOn4CLAMdawKceSh6Dzs15D6GxrLI5K_rQ", @@ -3206,7 +3206,7 @@ Paginator( VideoItem( id: "cgb-zp9DDHg", name: "Bushido X Shindy - Brot brechen", - length: Some(191), + duration: Some(191), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/cgb-zp9DDHg/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgYShJMA8=&rs=AOn4CLDlEBGR7d_j3XjTUqjAe6Ymzsyb5g", @@ -3247,7 +3247,7 @@ Paginator( VideoItem( id: "Q7ZXg3KQLt0", name: "KOLLEGAH - Genozid (prod. von B-Case & Alexis Troy) (Official HD Video)", - length: Some(407), + duration: Some(407), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Q7ZXg3KQLt0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCntzPVc1exjqTv4dMIRNj9l_fPFA", @@ -3288,7 +3288,7 @@ Paginator( VideoItem( id: "ysAEZOwp5rM", name: "KOLLEGAH - John Gotti (prod. von Alexis Troy) (Official HD Video)", - length: Some(207), + duration: Some(207), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ysAEZOwp5rM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAq4pm6ReaUxi45Ao_rQqFb-zTDqQ", @@ -3329,7 +3329,7 @@ Paginator( VideoItem( id: "m5vfng33SVE", name: "Philipp Dittberner - Das ist dein Leben (Official Video)", - length: Some(282), + duration: Some(282), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/m5vfng33SVE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCy3rZ_vNJbHC6MPjBKfkH9OF4KxQ", @@ -3370,7 +3370,7 @@ Paginator( VideoItem( id: "yMfgjVlGbUE", name: "SpongeBOZZ - SFTB/Apocalyptic Infinity/Payback #forsundiego (Prod. by Digital Drama)", - length: Some(1622), + duration: Some(1622), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/yMfgjVlGbUE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCImbZOtOhsu1n5GRh-mVYWhoCNGA", @@ -3411,7 +3411,7 @@ Paginator( VideoItem( id: "OQIYEPe6DWY", name: "Kraftwerk - Das Model", - length: Some(262), + duration: Some(262), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/OQIYEPe6DWY/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-BIAC6AKKAgwIABABGH8gHSgjMA8=&rs=AOn4CLATOckzhpynBc2knPq7R4_a1tHfVw", @@ -3452,7 +3452,7 @@ Paginator( VideoItem( id: "5FS8RIH7BpI", name: "GENETIKK - Wünsch dir was (Official HD Video)", - length: Some(303), + duration: Some(303), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/5FS8RIH7BpI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAuSraLlm5j-ap1h2ePrD79sxdoNQ", @@ -3493,7 +3493,7 @@ Paginator( VideoItem( id: "zSRKgFB9piY", name: "Keine ist wie Du - Joel Brandenstein & Chrisoula Botsika ( Gregor Meyle Acoustic Cover )", - length: Some(256), + duration: Some(256), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/zSRKgFB9piY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAbaAoyp05Ae7eWUZvCAzFdRN6BMQ", @@ -3534,7 +3534,7 @@ Paginator( VideoItem( id: "e4eHhgwHCME", name: "Kollegah & Farid Bang ✖\u{fe0f}STURMMASKE AUF ✖\u{fe0f} [official video]", - length: Some(275), + duration: Some(275), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/e4eHhgwHCME/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDj3vRRbJlmnPr4rqKRkmZs-JIN7A", @@ -3575,7 +3575,7 @@ Paginator( VideoItem( id: "q3hZvho7jNk", name: "KC Rebell ✖\u{fe0f} PAPER ✖\u{fe0f} [ official Video ] GEE Futuristic, Nikki 3k & Joshimixu", - length: Some(222), + duration: Some(222), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/q3hZvho7jNk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCLwp5luIJpaNOWk7bSXdYfTn0sBA", @@ -3616,7 +3616,7 @@ Paginator( VideoItem( id: "0nWysyj_Z4Y", name: "Nimo - FLOUZ KOMMT FLOUZ GEHT (prod. von Jimmy Torrio) [Official 4K Video]", - length: Some(191), + duration: Some(191), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/0nWysyj_Z4Y/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDQGu4QNzr3EMjQcAiTkPrm3q60nQ", @@ -3657,7 +3657,7 @@ Paginator( VideoItem( id: "aGCcLWU0OVo", name: "SIDO - Gürtel am Arm", - length: Some(218), + duration: Some(218), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/aGCcLWU0OVo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDArDAbvY0RsPSuJPBh4uyPYSr4Bw", @@ -3698,7 +3698,7 @@ Paginator( VideoItem( id: "OQsXLK4MeEA", name: "JBB 2013 - SpongeBOZZ vs. Gio (Finale HR) prod. by Digital Drama", - length: Some(400), + duration: Some(400), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/OQsXLK4MeEA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBZWiGbF4RrO7JLpICvTuC-eHpfuw", @@ -3739,7 +3739,7 @@ Paginator( VideoItem( id: "xm7dxIqOO2M", name: "KURDO - Halbmond (prod. by Amir & Kostas)", - length: Some(272), + duration: Some(272), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/xm7dxIqOO2M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBxxl3-2dozhr306-FrORMGygKXoQ", @@ -3780,7 +3780,7 @@ Paginator( VideoItem( id: "jlaaByab4Zk", name: "Mc Yankoo feat. Milica Todorovic - Ljubi me budalo (official Video)", - length: Some(224), + duration: Some(224), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/jlaaByab4Zk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBG5CJRj0SjU1Vm1l9EIGnWOG1mUQ", @@ -3821,7 +3821,7 @@ Paginator( VideoItem( id: "KG9-jSqXz4U", name: "Oft Gefragt - AnnenMayKantereit (Official Video)", - length: Some(205), + duration: Some(205), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/KG9-jSqXz4U/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgXyhVMA8=&rs=AOn4CLBxjTyoo39W0zf7cntnv35M9-2-Aw", @@ -3862,7 +3862,7 @@ Paginator( VideoItem( id: "7dISZnwsBSA", name: "Prinz Pi - 1,40m (feat. Philipp Dittberner)", - length: Some(284), + duration: Some(284), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/7dISZnwsBSA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA2ZhuSJUc-O8GnUa12UH5Z08qWlA", @@ -3903,7 +3903,7 @@ Paginator( VideoItem( id: "F_PPdS-PB14", name: "Nimo - IDÉAL (prod. von SOTT) [Official 4K Video]", - length: Some(253), + duration: Some(253), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/F_PPdS-PB14/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCIcbTSt6Q1Xo8sqLnyEbbXSuLBcg", @@ -3944,7 +3944,7 @@ Paginator( VideoItem( id: "DMg9idvVY8M", name: "Nimo - BITTER (prod. von Jimmy Torrio) [Official 4K Video]", - length: Some(173), + duration: Some(173), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/DMg9idvVY8M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCIg_8ZAGGj-OC9R8sh4txS_8bQHw", @@ -3985,7 +3985,7 @@ Paginator( VideoItem( id: "DGEmoSFI94Y", name: "SDP - Kurz für immer bleiben", - length: Some(218), + duration: Some(218), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/DGEmoSFI94Y/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB2H8YGPqxgGisgCPfV-svTSrBY3g", @@ -4026,7 +4026,7 @@ Paginator( VideoItem( id: "BtZufymxHvE", name: "LX & Maxwell - Ausser Kontrolle (Jambeatz)", - length: Some(159), + duration: Some(159), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/BtZufymxHvE/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGIgYihiMA8=&rs=AOn4CLBk573xWrbGYjsGZKTLo6inp8DKjw", @@ -4067,7 +4067,7 @@ Paginator( VideoItem( id: "xFnlPF3KUqo", name: "Johannes Oerding - Jemanden wie dich (Musikvideo)", - length: Some(235), + duration: Some(235), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/xFnlPF3KUqo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD3CtkM4WHFt8EfDbOiE2oUbEi91Q", 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 327f062..e7bdd50 100644 --- a/src/client/snapshots/rustypipe__client__pagination__tests__map_recommendations.snap +++ b/src/client/snapshots/rustypipe__client__pagination__tests__map_recommendations.snap @@ -8,7 +8,7 @@ Paginator( Video(VideoItem( id: "WPdWvnAAurg", name: "aespa 에스파 \'Savage\' MV", - length: Some(259), + duration: Some(259), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/WPdWvnAAurg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDQGxlnDkAdMYRm2cdkDmiDbBDpYw", @@ -45,7 +45,7 @@ Paginator( Video(VideoItem( id: "Y8JFxS1HlDo", name: "IVE 아이브 \'LOVE DIVE\' MV", - length: Some(179), + duration: Some(179), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Y8JFxS1HlDo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDf8U7fRH0R-qXbbGwKwpKBCeOa4A", @@ -82,7 +82,7 @@ Paginator( Video(VideoItem( id: "NoYKBAajoyo", name: "EVERGLOW (에버글로우) - DUN DUN MV", - length: Some(209), + duration: Some(209), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/NoYKBAajoyo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC3OhCUbjpIclmjfV8W8T98nVI5pA", @@ -119,7 +119,7 @@ Paginator( Video(VideoItem( id: "yQUU29NwNF4", name: "aespa(에스파) - Black Mamba @인기가요 inkigayo 20201122", - length: Some(213), + duration: Some(213), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/yQUU29NwNF4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA4pIWwOFmVuVU-jZ-j7S4GvgxjKw", @@ -156,7 +156,7 @@ Paginator( Video(VideoItem( id: "NU611fxGyPU", name: "aespa 에스파 \'Black Mamba\' Dance Practice", - length: Some(175), + duration: Some(175), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/NU611fxGyPU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAgKORzcy6WKosI1_PAVWDgcjJ9jA", @@ -193,7 +193,7 @@ Paginator( Video(VideoItem( id: "EaswWiwMVs8", name: "Stray Kids \"소리꾼(Thunderous)\" M/V", - length: Some(199), + duration: Some(199), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/EaswWiwMVs8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC2hrj6yzhYrHdiS7z5i99gt15fNw", @@ -230,7 +230,7 @@ Paginator( Video(VideoItem( id: "Ujb-gvqsoi0", name: "Red Velvet - IRENE & SEULGI \'Monster\' MV", - length: Some(182), + duration: Some(182), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Ujb-gvqsoi0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBrGO-Gkm-UqCln07oFNKfFgioXYQ", @@ -267,7 +267,7 @@ Paginator( Video(VideoItem( id: "gQlMMD8auMs", name: "BLACKPINK - ‘Pink Venom’ M/V", - length: Some(194), + duration: Some(194), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/gQlMMD8auMs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCj78qKZEzgUEGZFed9G0gU30GOLw", @@ -304,7 +304,7 @@ Paginator( Video(VideoItem( id: "BL-aIpCLWnU", name: "Black Mamba", - length: Some(175), + duration: Some(175), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/BL-aIpCLWnU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBFFU1Bs-mHwS-BGXCbvWM2SS41kw", @@ -341,7 +341,7 @@ Paginator( Video(VideoItem( id: "Jh4QFaPmdss", name: "(G)I-DLE - \'TOMBOY\' Official Music Video", - length: Some(198), + duration: Some(198), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Jh4QFaPmdss/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAQf02NuUqxsFasUAqJQYGS6SMDkw", @@ -378,7 +378,7 @@ Paginator( Video(VideoItem( id: "Fc-fa6cAe2c", name: "KAI 카이 \'음 (Mmmh)\' MV", - length: Some(207), + duration: Some(207), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Fc-fa6cAe2c/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDstHiMkONiE2lMJVWO9-yOeF1GkA", @@ -415,7 +415,7 @@ Paginator( Video(VideoItem( id: "dYRITmpFbJ4", name: "aespa 에스파 \'Girls\' MV", - length: Some(269), + duration: Some(269), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/dYRITmpFbJ4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBOxN6ukbZNOPwUBhRZYgG9r23lng", @@ -452,7 +452,7 @@ Paginator( Video(VideoItem( id: "mH0_XpSHkZo", name: "TWICE \"MORE & MORE\" M/V", - length: Some(241), + duration: Some(241), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/mH0_XpSHkZo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCSj0FWw50vVV42c19quxnLJJDg2w", @@ -489,7 +489,7 @@ Paginator( Video(VideoItem( id: "uR8Mrt1IpXg", name: "Red Velvet 레드벨벳 \'Psycho\' MV", - length: Some(216), + duration: Some(216), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/uR8Mrt1IpXg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAnAsLcZaI1uWDB4nag1KnNotAUWw", @@ -526,7 +526,7 @@ Paginator( Video(VideoItem( id: "f5_wn8mexmM", name: "TWICE \"The Feels\" M/V", - length: Some(232), + duration: Some(232), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/f5_wn8mexmM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC-tykU4D6qLBX-nq1pKpdhgUkOFw", @@ -563,7 +563,7 @@ Paginator( Video(VideoItem( id: "Ky5RT5oGg0w", name: "aespa 에스파 \'Black Mamba\' The Debut Stage", - length: Some(287), + duration: Some(287), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Ky5RT5oGg0w/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDJkgSdPQbJFvU3MAgGaK16luJMyQ", @@ -600,7 +600,7 @@ Paginator( Video(VideoItem( id: "gU2HqP4NxUs", name: "BLACKPINK - ‘Pretty Savage’ 1011 SBS Inkigayo", - length: Some(208), + duration: Some(208), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/gU2HqP4NxUs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD_x0P5jlgH-Xg013D6_0HCVjmpEQ", @@ -637,7 +637,7 @@ Paginator( Video(VideoItem( id: "KhTeiaCezwM", name: "[MV] MAMAMOO (마마무) - HIP", - length: Some(211), + duration: Some(211), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/KhTeiaCezwM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCMGgSAC2vrBvhW5_JvAG6-DmNv_Q", @@ -674,7 +674,7 @@ Paginator( Video(VideoItem( id: "uxmP4b2a0uY", name: "EXO 엑소 \'Obsession\' MV", - length: Some(220), + duration: Some(220), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/uxmP4b2a0uY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDBrxdx72hHbvjdKHWiwEHwmBtaQg", 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 41bedad..92b4860 100644 --- a/src/client/snapshots/rustypipe__client__pagination__tests__map_search.snap +++ b/src/client/snapshots/rustypipe__client__pagination__tests__map_search.snap @@ -8,7 +8,7 @@ Paginator( Video(VideoItem( id: "N5AKQflK1TU", name: "When you impulse buy...", - length: Some(60), + duration: Some(60), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/N5AKQflK1TU/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLAsKUEXxvFyA6J9cUPJlYYtRBjxmg", @@ -40,7 +40,7 @@ Paginator( Video(VideoItem( id: "OzIFALQ_YtA", name: "taste testing gam!", - length: Some(60), + duration: Some(60), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/OzIFALQ_YtA/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLD1E-eWjZrzHcfzh-DBWeZ6ewxNNg", @@ -72,7 +72,7 @@ Paginator( Video(VideoItem( id: "zYHB38UlzE0", name: "Q&A l relationships, burnout, privilege, college advice, living alone, and life after youtube?", - length: Some(775), + duration: Some(775), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/zYHB38UlzE0/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD8--BbjAvsTyJg680DxjOYtxPmgw", @@ -109,7 +109,7 @@ Paginator( Video(VideoItem( id: "GvutfmW26JQ", name: "👹stay sour 🍋", - length: Some(52), + duration: Some(52), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/GvutfmW26JQ/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLATzHy4VrMbKmNT14yfqCUBvElmpQ", @@ -141,7 +141,7 @@ Paginator( Video(VideoItem( id: "gK-jLnvVsb0", name: "Contradicting myself", - length: Some(1381), + duration: Some(1381), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/gK-jLnvVsb0/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAuF_YftS_qXHPsyZC38Ghdif_L-A", @@ -178,7 +178,7 @@ Paginator( Video(VideoItem( id: "NudTbo2CJMY", name: "Flying to London", - length: Some(1078), + duration: Some(1078), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/NudTbo2CJMY/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDLD0fdpkRaLvP-wJLtDJKt3QPiTQ", @@ -215,7 +215,7 @@ Paginator( Video(VideoItem( id: "Nc0HzyDRjm0", name: "Stekki-don ㅣ After Hours ep.2", - length: Some(749), + duration: Some(749), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Nc0HzyDRjm0/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAwvID8-W_Ap8qGo17-LcvO2EFXUQ", @@ -252,7 +252,7 @@ Paginator( Video(VideoItem( id: "pvSWHm4wlxY", name: "having kids", - length: Some(60), + duration: Some(60), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/pvSWHm4wlxY/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLDt7ZAwQoObfa5A7gC_hJnU1WH4Ug", @@ -284,7 +284,7 @@ Paginator( Video(VideoItem( id: "fGQUWI4o__A", name: "Baskin Robbins in South Korea", - length: Some(53), + duration: Some(53), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/fGQUWI4o__A/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLDyPuI762qzLAZM0QikxjFKVpoF9w", @@ -316,7 +316,7 @@ Paginator( Video(VideoItem( id: "GuyGyzZcumI", name: "McDonald\'s Michelin Burger", - length: Some(59), + duration: Some(59), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/GuyGyzZcumI/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLDtmyilZAgMw8VWNy518etIKi4phA", @@ -348,7 +348,7 @@ Paginator( Video(VideoItem( id: "6VGG19W08UQ", name: "Nostalgia is a powerful ingredient", - length: Some(52), + duration: Some(52), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/6VGG19W08UQ/hq720_2.jpg?sqp=-oaymwEdCI4CEOADSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLDMwP_7D3vLsNxwKorwHfB3CH8Ufg", @@ -380,7 +380,7 @@ Paginator( Video(VideoItem( id: "p3Xhx6aQEXo", name: "Jjajangmyun ㅣ Doob Gourmand ep.2", - length: Some(664), + duration: Some(664), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/p3Xhx6aQEXo/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBgdlq5Jo12Sh6E6Q5Q7Dt9dcI7Xw", @@ -417,7 +417,7 @@ Paginator( Video(VideoItem( id: "35Gu3Q6qEn4", name: "Deal Breakers", - length: Some(60), + duration: Some(60), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/35Gu3Q6qEn4/hq720_2.jpg?sqp=-oaymwEdCI4CEOADSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLAuZwNttZi9nuuNpt4ddruoeyebHg", @@ -449,7 +449,7 @@ Paginator( Video(VideoItem( id: "JoUdBrUpBN0", name: "Jjambbong, jjajangmyeon\'s biggest rival", - length: Some(56), + duration: Some(56), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/JoUdBrUpBN0/hq720_2.jpg?sqp=-oaymwEdCI4CEOADSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLDgEw8JDViwrHKRTv9wcjolELJgJg", @@ -481,7 +481,7 @@ Paginator( Video(VideoItem( id: "l76ovWsPLi8", name: "Jjagglee, Ricotta Persimmon Toast, Plants, and Pringles! l Home Alone All Day Vlog", - length: Some(673), + duration: Some(673), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/l76ovWsPLi8/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDzoSXa3HTC78qSTARfNPUN3PAomA", @@ -518,7 +518,7 @@ Paginator( Video(VideoItem( id: "zt1Lx9L619w", name: "The biggest privilege my rich friends have", - length: Some(58), + duration: Some(58), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/zt1Lx9L619w/hq720_2.jpg?sqp=-oaymwEdCI4CEOADSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLCqMZy8XJJZH_CVWMBkIeDCC98brw", diff --git a/src/client/snapshots/rustypipe__client__pagination__tests__map_startpage.snap b/src/client/snapshots/rustypipe__client__pagination__tests__map_startpage.snap index 026117e..171c57f 100644 --- a/src/client/snapshots/rustypipe__client__pagination__tests__map_startpage.snap +++ b/src/client/snapshots/rustypipe__client__pagination__tests__map_startpage.snap @@ -8,7 +8,7 @@ Paginator( Video(VideoItem( id: "mRmlXh7Hams", name: "Extra 3 vom 12.10.2022 im NDR | extra 3 | NDR", - length: Some(1839), + duration: Some(1839), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/mRmlXh7Hams/hqdefault.jpg?sqp=-oaymwEcCOADEI4CSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAbO4lI0dDo_r85A1fi9XQS0rNiOQ", @@ -40,7 +40,7 @@ Paginator( Video(VideoItem( id: "LsXC5r64Pvc", name: "Most Rarest Plays In Baseball History", - length: Some(1975), + duration: Some(1975), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/LsXC5r64Pvc/hqdefault.jpg?sqp=-oaymwEcCOADEI4CSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB2KXmgKxrJVUy3Naqi_R-R2X92FA", @@ -72,7 +72,7 @@ Paginator( Video(VideoItem( id: "dwPmd1GqQHE", name: "90S RAP & HIPHOP MIX - Notorious B I G , Dr Dre, 50 Cent, Snoop Dogg, 2Pac, DMX, Lil Jon and more", - length: Some(5457), + duration: Some(5457), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/dwPmd1GqQHE/hqdefault.jpg?sqp=-oaymwEcCOADEI4CSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAAyGcLGzFkfdEmqqohpxZsGOM9Kw", @@ -104,7 +104,7 @@ Paginator( Video(VideoItem( id: "qxI-Ob8lpLE", name: "Schlatt\'s Chips Tier List", - length: Some(1071), + duration: Some(1071), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/qxI-Ob8lpLE/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBtEO5eB17tODb5Ek9GRoQwwVGtvA", @@ -141,7 +141,7 @@ Paginator( Video(VideoItem( id: "qmrzTUmZ4UU", name: "850€ für den Verrat am System - UCS AT-AT LEGO® Star Wars 75313", - length: Some(2043), + duration: Some(2043), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/qmrzTUmZ4UU/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAsI3VS-wxnt1s_zS4M_YbVrV1pAg", @@ -178,7 +178,7 @@ Paginator( Video(VideoItem( id: "4q4vpQCIZ6w", name: "🌉 Manhattan Jazz 💖 l Relaxing Jazz Piano Music l Background Music", - length: Some(23229), + duration: Some(23229), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/4q4vpQCIZ6w/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD4DKjgt5VJBRX2pH_KzI4Ru9AMaQ", @@ -215,7 +215,7 @@ Paginator( Video(VideoItem( id: "Z_k31kqZxaE", name: "1 in 1,000,000 NBA Moments", - length: Some(567), + duration: Some(567), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Z_k31kqZxaE/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCovxnIKW7TCP3XBcG4x-Acw10OBA", @@ -252,7 +252,7 @@ Paginator( Video(VideoItem( id: "zE-a5eqvlv8", name: "Dua Lipa, Coldplay, Martin Garrix & Kygo, The Chainsmokers Style - Feeling Me", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/zE-a5eqvlv8/hq720_live.jpg?sqp=COz4qZoG-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAbIAO-SIuWTC9f2AKu6Yp9nB0BwQ", @@ -289,7 +289,7 @@ Paginator( Video(VideoItem( id: "gNlOk0LXi5M", name: "Soll ich dir 1g GOLD schenken? oder JEMAND anderen DOPPELT?", - length: Some(704), + duration: Some(704), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/gNlOk0LXi5M/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAy3JbiDcqUTwF6NS69UnX715q90w", @@ -326,7 +326,7 @@ Paginator( Video(VideoItem( id: "dbMvZjs8Yc8", name: "Brad Pitt- Die Revanche eines Sexsymbols | Doku HD | ARTE", - length: Some(3137), + duration: Some(3137), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/dbMvZjs8Yc8/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB6HnYSCQFmEQ1V5qlFf5fblOpv-g", @@ -363,7 +363,7 @@ Paginator( Video(VideoItem( id: "mFxi3lOAcFs", name: "Craziest Soviet Machines You Won\'t Believe Exist - Part 1", - length: Some(1569), + duration: Some(1569), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/mFxi3lOAcFs/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCgPz_lsa3ENFNi2sC_uraWrUIuBQ", @@ -400,7 +400,7 @@ Paginator( Video(VideoItem( id: "eu7ubm7g59E", name: "People Hated Me For Using This Slab", - length: Some(1264), + duration: Some(1264), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/eu7ubm7g59E/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCg_b-6U2Pux_tZqAY8jkIa1JoTew", @@ -437,7 +437,7 @@ Paginator( Video(VideoItem( id: "TRGHIN2PGIA", name: "Christian Bale Breaks Down His Most Iconic Characters | GQ", - length: Some(1381), + duration: Some(1381), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/TRGHIN2PGIA/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAMxhmIbADGzAlH1jNl6RN-ZU0eEQ", @@ -474,7 +474,7 @@ Paginator( Video(VideoItem( id: "w3tENzcssDU", name: "NFL Trick Plays But They Get Increasingly Higher IQ", - length: Some(599), + duration: Some(599), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/w3tENzcssDU/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCZHp6o6cV9HNNJXPlI1FKi6S58qg", @@ -511,7 +511,7 @@ Paginator( Video(VideoItem( id: "gUAd2XXzH7w", name: "⚓\u{fe0f}Found ABANDONED SHIP!!! Big CRUISE SHIP on a desert island☠\u{fe0f} Where did the people go?!?", - length: Some(2949), + duration: Some(2949), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/gUAd2XXzH7w/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDaBSyUxw88zjCr_Az868dEnhMrug", @@ -548,7 +548,7 @@ Paginator( Video(VideoItem( id: "YpGjaJ1ettI", name: "[Working BGM] Comfortable music that makes you feel positive -- Morning Mood -- Daily Routine", - length: Some(3651), + duration: Some(3651), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/YpGjaJ1ettI/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDjAMJifo4Bg-vXUdHXyWYRHSf-Sw", @@ -585,7 +585,7 @@ Paginator( Video(VideoItem( id: "rPAhFD8hKxQ", name: "Survival Camping 9ft/3m Under Snow - Giant Winter Bushcraft Shelter and Quinzee", - length: Some(1301), + duration: Some(1301), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/rPAhFD8hKxQ/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCY0Xhznr6RKZ-EG1G5C1M34h8ugA", @@ -622,7 +622,7 @@ Paginator( Video(VideoItem( id: "2rye4u-cCNk", name: "Pink Panther Fights Off Pests | 54 Minute Compilation | The Pink Panther Show", - length: Some(3158), + duration: Some(3158), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/2rye4u-cCNk/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCi4Tt2tz-kk-cumb7SEfzzgixj5A", @@ -659,7 +659,7 @@ Paginator( Video(VideoItem( id: "O0xAlfSaBNQ", name: "FC Nantes vs. SC Freiburg – Highlights & Tore | UEFA Europa League", - length: Some(326), + duration: Some(326), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/O0xAlfSaBNQ/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDe-1NUODMNivJw5r5J5Wd16PMsqA", @@ -696,7 +696,7 @@ Paginator( Video(VideoItem( id: "Mhs9Sbnw19o", name: "Dramatisches Duell: 400 Jahre altes Kästchen erzielt zig-fachen Wunschpreis! | Bares für Rares XXL", - length: Some(744), + duration: Some(744), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Mhs9Sbnw19o/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBkxXdE8JNS0S6_Dhl-aY7FRmbL9g", @@ -733,7 +733,7 @@ Paginator( Video(VideoItem( id: "Bzzp5Cay7DI", name: "Sweet Jazz - Cool autumn Bossa Nova & October Jazz Positive Mood", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Bzzp5Cay7DI/hq720_live.jpg?sqp=COz4qZoG-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAKcYaDyG1yocH1e2_BIyl5FGKWPw", @@ -770,7 +770,7 @@ Paginator( Video(VideoItem( id: "SlskTqc9CEc", name: "The Chick-Fil-A Full Menu Challenge", - length: Some(613), + duration: Some(613), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/SlskTqc9CEc/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBjDpJq0J5r8jvLwIQG2HCvsoj8nw", @@ -807,7 +807,7 @@ Paginator( Video(VideoItem( id: "CwRvM2TfYbs", name: "Gentle healing music of health and to calm the nervous system, deep relaxation! Say Life Yes", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/CwRvM2TfYbs/hq720_live.jpg?sqp=COz4qZoG-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCj3HTq1K0KCuiuZdyh_by4VUZWeA", @@ -844,7 +844,7 @@ Paginator( Video(VideoItem( id: "7jz0pXSe_kI", name: "Craziest \"Fine...I\'ll Do it Myself\" Moments in Sports History (PART 2)", - length: Some(1822), + duration: Some(1822), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/7jz0pXSe_kI/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDEUQzJHcD0s2BgP1znPupwsxf48w", 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 696c919..5b0b4f9 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 @@ -7,7 +7,7 @@ VideoPlayer( id: "pPvd8UxmSbQ", name: "Inspiring Cinematic Uplifting (Creative Commons)", description: Some("► Download Music: http://bit.ly/2QLufeh\nImportant to know! You can download this track for free through Patreon. You will pay only for new tracks! So join others and let\'s make next track together!\n\n► MORE MUSIC: Become my patron and get access to all our music from Patreon library. More Info here: http://bit.ly/2JJDFHb\n\n► Additional edit versions of this track you can download here: http://bit.ly/2WdRinT (5 versions)\n--------------------- \n\n►DESCRIPTION:\nInspiring Cinematic Uplifting Trailer Background - epic music for trailer video project with powerful drums, energetic orchestra and gentle piano melody. This motivational cinematic theme will work as perfect background for beautiful epic moments, landscapes, nature, drone video, motivational products and achievements.\n--------------------- \n\n► LICENSE:\n● If you need a license for your project, you can purchase it here: \nhttps://1.envato.market/ajicu (Audiojungle)\nhttps://bit.ly/3fWZZuI (Pond5)\n--------------------- \n\n► LISTEN ON:\n● Spotify - https://spoti.fi/2sHm3UH\n● Apple Music - https://apple.co/3qBjbUO\n--------------------- \n\n► SUBSCRIBE FOR MORE: \nPatreon: http://bit.ly/2JJDFHb\nYoutube: http://bit.ly/2AYBzfA\nFacebook: http://bit.ly/2T6dTx5\nInstagram: http://bit.ly/2BHJ8rB\nTwitter: http://bit.ly/2MwtOlT\nSoundCloud: http://bit.ly/2IwVVmt\nAudiojungle: https://1.envato.market/ajrsm\nPond5: https://bit.ly/2TLi1rW\n--------------------- \n►Photo by Vittorio Staffolani from Pexels\n--------------------- \n\nFAQ:\n\n► Can I use this music in my videos? \n● Sure! Just download this track and you are ready to use it! We only ask to credit us. \n-------------------- \n\n► What is \"Creative Commons\"? \nCreative Commons is a system that allows you to legally use “some rights reserved” music, movies, images, and other content — all for free. Licensees may copy, distribute, display and perform the work and make derivative works and remixes based on it only if they give the author or licensor the credits.\n-------------------- \n\n► Will I have any copyright issues with this track?\n● No, you should not have any copyright problems with this track!\n-------------------- \n\n► Is it necessary to become your patron?\n● No it\'s not necessary. But we recommend you to become our patron because you will get access to huge library of music. You will download only highest quality files. You will find additional edited versions of every track. You always be tuned with our news. You will find music not only from Roman Senyk but also from another talented authors.\n-------------------- \n\n► Why I received a copyright claim when I used this track?\n● Do not panic! This is very common situation. Content ID fingerprint system can mismatch our music. Just dispute the claim by showing our original track. Or send us the link to your video (romansenykmusic@gmail.com) and attach some screenshot with claim information. Claim will be released until 24 hours!\n\n► How to credit you in my video?\n● Just add to the description of your project information about Author, Name of Song and the link to our original track. Or copy and paste:\n\nMusic Info: Inspiring Cinematic Uplifting by RomanSenykMusic.\nMusic Link: https://youtu.be/pPvd8UxmSbQ\n--------------------- \n\n► If you have any questions, you can write in the comments for this video or by email: romansenykmusic@gmail.com\n--------------------- \n\nStay tuned! The best is yet to come! \nThanks For Listening!\nRoman Senyk"), - length: 163, + duration: 163, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi_webp/pPvd8UxmSbQ/default.webp", 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 8de2d4a..68cd7f6 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 @@ -7,7 +7,7 @@ VideoPlayer( id: "pPvd8UxmSbQ", name: "Inspiring Cinematic Uplifting (Creative Commons)", description: Some("► Download Music: http://bit.ly/2QLufeh\nImportant to know! You can download this track for free through Patreon. You will pay only for new tracks! So join others and let\'s make next track together!\n\n► MORE MUSIC: Become my patron and get access to all our music from Patreon library. More Info here: http://bit.ly/2JJDFHb\n\n► Additional edit versions of this track you can download here: http://bit.ly/2WdRinT (5 versions)\n--------------------- \n\n►DESCRIPTION:\nInspiring Cinematic Uplifting Trailer Background - epic music for trailer video project with powerful drums, energetic orchestra and gentle piano melody. This motivational cinematic theme will work as perfect background for beautiful epic moments, landscapes, nature, drone video, motivational products and achievements.\n--------------------- \n\n► LICENSE:\n● If you need a license for your project, you can purchase it here: \nhttps://1.envato.market/ajicu (Audiojungle)\nhttps://bit.ly/3fWZZuI (Pond5)\n--------------------- \n\n► LISTEN ON:\n● Spotify - https://spoti.fi/2sHm3UH\n● Apple Music - https://apple.co/3qBjbUO\n--------------------- \n\n► SUBSCRIBE FOR MORE: \nPatreon: http://bit.ly/2JJDFHb\nYoutube: http://bit.ly/2AYBzfA\nFacebook: http://bit.ly/2T6dTx5\nInstagram: http://bit.ly/2BHJ8rB\nTwitter: http://bit.ly/2MwtOlT\nSoundCloud: http://bit.ly/2IwVVmt\nAudiojungle: https://1.envato.market/ajrsm\nPond5: https://bit.ly/2TLi1rW\n--------------------- \n►Photo by Vittorio Staffolani from Pexels\n--------------------- \n\nFAQ:\n\n► Can I use this music in my videos? \n● Sure! Just download this track and you are ready to use it! We only ask to credit us. \n-------------------- \n\n► What is \"Creative Commons\"? \nCreative Commons is a system that allows you to legally use “some rights reserved” music, movies, images, and other content — all for free. Licensees may copy, distribute, display and perform the work and make derivative works and remixes based on it only if they give the author or licensor the credits.\n-------------------- \n\n► Will I have any copyright issues with this track?\n● No, you should not have any copyright problems with this track!\n-------------------- \n\n► Is it necessary to become your patron?\n● No it\'s not necessary. But we recommend you to become our patron because you will get access to huge library of music. You will download only highest quality files. You will find additional edited versions of every track. You always be tuned with our news. You will find music not only from Roman Senyk but also from another talented authors.\n-------------------- \n\n► Why I received a copyright claim when I used this track?\n● Do not panic! This is very common situation. Content ID fingerprint system can mismatch our music. Just dispute the claim by showing our original track. Or send us the link to your video (romansenykmusic@gmail.com) and attach some screenshot with claim information. Claim will be released until 24 hours!\n\n► How to credit you in my video?\n● Just add to the description of your project information about Author, Name of Song and the link to our original track. Or copy and paste:\n\nMusic Info: Inspiring Cinematic Uplifting by RomanSenykMusic.\nMusic Link: https://youtu.be/pPvd8UxmSbQ\n--------------------- \n\n► If you have any questions, you can write in the comments for this video or by email: romansenykmusic@gmail.com\n--------------------- \n\nStay tuned! The best is yet to come! \nThanks For Listening!\nRoman Senyk"), - length: 163, + duration: 163, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/pPvd8UxmSbQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBSNHImLtGal2a95M5oyTT_uuTZlw", 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 19b2530..fa9f936 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 @@ -7,7 +7,7 @@ VideoPlayer( id: "pPvd8UxmSbQ", name: "Inspiring Cinematic Uplifting", description: None, - length: 163, + duration: 163, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/pPvd8UxmSbQ/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AOn4CLC-0nIQMyPuy8CtzqTMl6z1rmG_XQ", 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 c5b2870..c068095 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 @@ -7,7 +7,7 @@ VideoPlayer( id: "pPvd8UxmSbQ", name: "Inspiring Cinematic Uplifting (Creative Commons)", description: Some("► Download Music: http://bit.ly/2QLufeh\nImportant to know! You can download this track for free through Patreon. You will pay only for new tracks! So join others and let\'s make next track together!\n\n► MORE MUSIC: Become my patron and get access to all our music from Patreon library. More Info here: http://bit.ly/2JJDFHb\n\n► Additional edit versions of this track you can download here: http://bit.ly/2WdRinT (5 versions)\n--------------------- \n\n►DESCRIPTION:\nInspiring Cinematic Uplifting Trailer Background - epic music for trailer video project with powerful drums, energetic orchestra and gentle piano melody. This motivational cinematic theme will work as perfect background for beautiful epic moments, landscapes, nature, drone video, motivational products and achievements.\n--------------------- \n\n► LICENSE:\n● If you need a license for your project, you can purchase it here: \nhttps://1.envato.market/ajicu (Audiojungle)\nhttps://bit.ly/3fWZZuI (Pond5)\n--------------------- \n\n► LISTEN ON:\n● Spotify - https://spoti.fi/2sHm3UH\n● Apple Music - https://apple.co/3qBjbUO\n--------------------- \n\n► SUBSCRIBE FOR MORE: \nPatreon: http://bit.ly/2JJDFHb\nYoutube: http://bit.ly/2AYBzfA\nFacebook: http://bit.ly/2T6dTx5\nInstagram: http://bit.ly/2BHJ8rB\nTwitter: http://bit.ly/2MwtOlT\nSoundCloud: http://bit.ly/2IwVVmt\nAudiojungle: https://1.envato.market/ajrsm\nPond5: https://bit.ly/2TLi1rW\n--------------------- \n►Photo by Vittorio Staffolani from Pexels\n--------------------- \n\nFAQ:\n\n► Can I use this music in my videos? \n● Sure! Just download this track and you are ready to use it! We only ask to credit us. \n-------------------- \n\n► What is \"Creative Commons\"? \nCreative Commons is a system that allows you to legally use “some rights reserved” music, movies, images, and other content — all for free. Licensees may copy, distribute, display and perform the work and make derivative works and remixes based on it only if they give the author or licensor the credits.\n-------------------- \n\n► Will I have any copyright issues with this track?\n● No, you should not have any copyright problems with this track!\n-------------------- \n\n► Is it necessary to become your patron?\n● No it\'s not necessary. But we recommend you to become our patron because you will get access to huge library of music. You will download only highest quality files. You will find additional edited versions of every track. You always be tuned with our news. You will find music not only from Roman Senyk but also from another talented authors.\n-------------------- \n\n► Why I received a copyright claim when I used this track?\n● Do not panic! This is very common situation. Content ID fingerprint system can mismatch our music. Just dispute the claim by showing our original track. Or send us the link to your video (romansenykmusic@gmail.com) and attach some screenshot with claim information. Claim will be released until 24 hours!\n\n► How to credit you in my video?\n● Just add to the description of your project information about Author, Name of Song and the link to our original track. Or copy and paste:\n\nMusic Info: Inspiring Cinematic Uplifting by RomanSenykMusic.\nMusic Link: https://youtu.be/pPvd8UxmSbQ\n--------------------- \n\n► If you have any questions, you can write in the comments for this video or by email: romansenykmusic@gmail.com\n--------------------- \n\nStay tuned! The best is yet to come! \nThanks For Listening!\nRoman Senyk"), - length: 163, + duration: 163, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/pPvd8UxmSbQ/mqdefault.jpg", diff --git a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_tvhtml5embed.snap b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_tvhtml5embed.snap index ab41d4a..82d769b 100644 --- a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_tvhtml5embed.snap +++ b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_tvhtml5embed.snap @@ -7,7 +7,7 @@ VideoPlayer( id: "pPvd8UxmSbQ", name: "Inspiring Cinematic Uplifting (Creative Commons)", description: Some("► Download Music: http://bit.ly/2QLufeh\nImportant to know! You can download this track for free through Patreon. You will pay only for new tracks! So join others and let\'s make next track together!\n\n► MORE MUSIC: Become my patron and get access to all our music from Patreon library. More Info here: http://bit.ly/2JJDFHb\n\n► Additional edit versions of this track you can download here: http://bit.ly/2WdRinT (5 versions)\n--------------------- \n\n►DESCRIPTION:\nInspiring Cinematic Uplifting Trailer Background - epic music for trailer video project with powerful drums, energetic orchestra and gentle piano melody. This motivational cinematic theme will work as perfect background for beautiful epic moments, landscapes, nature, drone video, motivational products and achievements.\n--------------------- \n\n► LICENSE:\n● If you need a license for your project, you can purchase it here: \nhttps://1.envato.market/ajicu (Audiojungle)\nhttps://bit.ly/3fWZZuI (Pond5)\n--------------------- \n\n► LISTEN ON:\n● Spotify - https://spoti.fi/2sHm3UH\n● Apple Music - https://apple.co/3qBjbUO\n--------------------- \n\n► SUBSCRIBE FOR MORE: \nPatreon: http://bit.ly/2JJDFHb\nYoutube: http://bit.ly/2AYBzfA\nFacebook: http://bit.ly/2T6dTx5\nInstagram: http://bit.ly/2BHJ8rB\nTwitter: http://bit.ly/2MwtOlT\nSoundCloud: http://bit.ly/2IwVVmt\nAudiojungle: https://1.envato.market/ajrsm\nPond5: https://bit.ly/2TLi1rW\n--------------------- \n►Photo by Vittorio Staffolani from Pexels\n--------------------- \n\nFAQ:\n\n► Can I use this music in my videos? \n● Sure! Just download this track and you are ready to use it! We only ask to credit us. \n-------------------- \n\n► What is \"Creative Commons\"? \nCreative Commons is a system that allows you to legally use “some rights reserved” music, movies, images, and other content — all for free. Licensees may copy, distribute, display and perform the work and make derivative works and remixes based on it only if they give the author or licensor the credits.\n-------------------- \n\n► Will I have any copyright issues with this track?\n● No, you should not have any copyright problems with this track!\n-------------------- \n\n► Is it necessary to become your patron?\n● No it\'s not necessary. But we recommend you to become our patron because you will get access to huge library of music. You will download only highest quality files. You will find additional edited versions of every track. You always be tuned with our news. You will find music not only from Roman Senyk but also from another talented authors.\n-------------------- \n\n► Why I received a copyright claim when I used this track?\n● Do not panic! This is very common situation. Content ID fingerprint system can mismatch our music. Just dispute the claim by showing our original track. Or send us the link to your video (romansenykmusic@gmail.com) and attach some screenshot with claim information. Claim will be released until 24 hours!\n\n► How to credit you in my video?\n● Just add to the description of your project information about Author, Name of Song and the link to our original track. Or copy and paste:\n\nMusic Info: Inspiring Cinematic Uplifting by RomanSenykMusic.\nMusic Link: https://youtu.be/pPvd8UxmSbQ\n--------------------- \n\n► If you have any questions, you can write in the comments for this video or by email: romansenykmusic@gmail.com\n--------------------- \n\nStay tuned! The best is yet to come! \nThanks For Listening!\nRoman Senyk"), - length: 163, + duration: 163, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/pPvd8UxmSbQ/default.jpg", diff --git a/src/client/snapshots/rustypipe__client__playlist__tests__map_playlist_cont.snap b/src/client/snapshots/rustypipe__client__playlist__tests__map_playlist_cont.snap index 22d1aa2..2362dd3 100644 --- a/src/client/snapshots/rustypipe__client__playlist__tests__map_playlist_cont.snap +++ b/src/client/snapshots/rustypipe__client__playlist__tests__map_playlist_cont.snap @@ -8,7 +8,7 @@ Paginator( PlaylistVideo( id: "zMPIobcM2j0", name: "ZUNA feat. AZET & NOIZY - NUMMER 1 prod. by DJ A-BOOM", - length: 212, + duration: 212, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/zMPIobcM2j0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCUVzgKNBFY6In3YbZuWpZ60oilnQ", @@ -39,7 +39,7 @@ Paginator( PlaylistVideo( id: "f9g6NCHQrcE", name: "AZET ft. ZUNA & NOIZY - KRIMINELL (prod. by DJ A-BOOM)", - length: 230, + duration: 230, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/f9g6NCHQrcE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAMGepmuIe_XAharqN6EnCXvp0xYw", @@ -70,7 +70,7 @@ Paginator( PlaylistVideo( id: "CAVfEwrwT_o", name: "Rooz x MoTrip - Immer Wieder (eng: Again and Again) (prod SOTT)", - length: 227, + duration: 227, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/CAVfEwrwT_o/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBUrGnudhiLRS7_j5qb_973rHrTMw", @@ -101,7 +101,7 @@ Paginator( PlaylistVideo( id: "VUr9JZQ8F2g", name: "Kontra K - Zwischen Himmel & Hölle (Official Video)", - length: 270, + duration: 270, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/VUr9JZQ8F2g/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB_wUNlasFg6HhHNUdiLvaGljPqRg", @@ -132,7 +132,7 @@ Paginator( PlaylistVideo( id: "XQat6rNNbdQ", name: "ZUNA - AYE prod. by LUCRY #KMNSTREET VOL. 7", - length: 220, + duration: 220, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/XQat6rNNbdQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLALH-TVmccxyBnh-y3ShIBrdDw93g", @@ -163,7 +163,7 @@ Paginator( PlaylistVideo( id: "EQyU6fGDn0c", name: "RAF Camora - CORLEONE (prod. by X-Plosive,The Cratez & RAF Camora)", - length: 220, + duration: 220, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/EQyU6fGDn0c/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCZtiHGorHDDYBp-sPHB2MACq4XJg", @@ -194,7 +194,7 @@ Paginator( PlaylistVideo( id: "g4poKgQZX6w", name: "Ufo361 - „BEVERLY HILLS“ (prod. von AT Beatz/Jimmy Torrio) [Official HD Video]", - length: 219, + duration: 219, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/g4poKgQZX6w/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBog509zw2F56xrdDsQkeRiuEC-xg", @@ -225,7 +225,7 @@ Paginator( PlaylistVideo( id: "YTHr7gxwYUQ", name: "DARDAN X LUCIANO - AIRMAX GEGEN KOPF (prod. by Leryk)", - length: 167, + duration: 167, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/YTHr7gxwYUQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAgyAHaOHTo5EebRbB0J0b6nA_-aA", @@ -256,7 +256,7 @@ Paginator( PlaylistVideo( id: "MfCSDn6q6j4", name: "YONII - DIRECTION prod. by LUCRY (Official 4K Video)", - length: 182, + duration: 182, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/MfCSDn6q6j4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBEG2udEnlreWP8ezpx5j-1RpYrwg", @@ -287,7 +287,7 @@ Paginator( PlaylistVideo( id: "gx9KFXb5x_o", name: "Anstandslos & Durchgeknallt - Egal ft. Jasmiina (Official Video)", - length: 166, + duration: 166, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/gx9KFXb5x_o/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCQmzWXiU6YGpce9EAK0b1z2Y_QyQ", @@ -318,7 +318,7 @@ Paginator( PlaylistVideo( id: "d7R7DQ5tlQo", name: "RAF Camora - SAG NIX (Anthrazit RR) #02", - length: 205, + duration: 205, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/d7R7DQ5tlQo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDeUBwyhvVq_h9-oRTQ82-tcP7cYg", @@ -349,7 +349,7 @@ Paginator( PlaylistVideo( id: "cZPjgcqHSa8", name: "Olexesh - BWA feat. Celo & Abdi, Hanybal (prod. von Drunken Masters) [Official Video]", - length: 294, + duration: 294, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/cZPjgcqHSa8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDnL4R2RjYxajSHM2MYHHPIGSEbHg", @@ -380,7 +380,7 @@ Paginator( PlaylistVideo( id: "ogDLdREonWY", name: "AZET - KETTEN CARTIER (Beat by zeeko & Veteran / prod. by DJ A-Boom)", - length: 198, + duration: 198, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ogDLdREonWY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCE-WB-D8k22SnqNqjlGIv3PopaKA", @@ -411,7 +411,7 @@ Paginator( PlaylistVideo( id: "pRQpKprUUPY", name: "Moe Phoenix - Ching Chang Chong (prod. by FL3X & Unik)", - length: 226, + duration: 226, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/pRQpKprUUPY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC1RCyBcVxcI7USDT0EdCYwzsgYbQ", @@ -442,7 +442,7 @@ Paginator( PlaylistVideo( id: "qZoQw9b4uCo", name: "PAYY x ARDIAN BUJUPI - Handschellen (Prod. by Remoe & Kostas Karagiozidis) [ OFFICIAL VIDEO ]", - length: 221, + duration: 221, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/qZoQw9b4uCo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD_Yap-tgk3XSsxA3-WPIDbffMP5g", @@ -473,7 +473,7 @@ Paginator( PlaylistVideo( id: "q23qghoF6Nk", name: "AZET - GJYNAH (beat by Lucry) (Official 4K Video)", - length: 271, + duration: 271, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/q23qghoF6Nk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAon_vcMLc5GY3dZ857wU4_6sM7bQ", @@ -504,7 +504,7 @@ Paginator( PlaylistVideo( id: "yU0aKa7PFBg", name: "Helene Fischer | Herzbeben (Live aus dem Kesselhaus München)", - length: 206, + duration: 206, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/yU0aKa7PFBg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDmZE8ywbjxjg8l1xwMeSJzMj27Ng", @@ -535,7 +535,7 @@ Paginator( PlaylistVideo( id: "DVCAqvypaCc", name: "DARDAN - JUMP (prod. by Oster)", - length: 202, + duration: 202, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/DVCAqvypaCc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDzU84UNl1l4W0cTdgmX9xthBVhHw", @@ -566,7 +566,7 @@ Paginator( PlaylistVideo( id: "XdnI7sm6LeQ", name: "RAF Camora - Andere Liga (prod. Beataura & RAF Camora)", - length: 240, + duration: 240, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/XdnI7sm6LeQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLALhffgTUDPZfO74mZauERCfDWLFw", @@ -597,7 +597,7 @@ Paginator( PlaylistVideo( id: "KcOXNSJtFLg", name: "Sugar MMFK - Trikot von Paris (prod. by Penacho) [4K VIDEO]", - length: 255, + duration: 255, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/KcOXNSJtFLg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBtf7BnKkQGWA9CJSEwH_-oYzka5w", @@ -628,7 +628,7 @@ Paginator( PlaylistVideo( id: "K0UxHXZwgsg", name: "FLER ✖\u{fe0f}Pfirsich/Late Check-Out ✖\u{fe0f}► [ official Video ] prod. by Simes Add. Vocals by Mosenu", - length: 245, + duration: 245, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/K0UxHXZwgsg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD1XTfZEJtsHmu1PYtlGFwz4bAiOw", @@ -659,7 +659,7 @@ Paginator( PlaylistVideo( id: "eyyNwOSQ3Yg", name: "MGP \"BAD BITCH\" (Official Video)", - length: 166, + duration: 166, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/eyyNwOSQ3Yg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCrGr9LT69Q4tZzNwFIuUzoUAYwSQ", @@ -690,7 +690,7 @@ Paginator( PlaylistVideo( id: "1yskotqNuXI", name: "RIN - Bros (prod. Minhtendo)", - length: 219, + duration: 219, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1yskotqNuXI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLABT4efReL1QrSECDJwROBI-pRCzw", @@ -721,7 +721,7 @@ Paginator( PlaylistVideo( id: "C03n4AAiL9w", name: "Glasperlenspiel - Geiles Leben (Lyric Video)", - length: 211, + duration: 211, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/C03n4AAiL9w/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCKvhEqesIgEalpxUZClNFcg65cig", @@ -752,7 +752,7 @@ Paginator( PlaylistVideo( id: "a2wNRTKRusM", name: "Moe Phoenix - Mohammad (prod. by AriBeatz)", - length: 197, + duration: 197, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/a2wNRTKRusM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBBKdUFUQEPrf091_3-GxUDfOuwzA", @@ -783,7 +783,7 @@ Paginator( PlaylistVideo( id: "AIf61iHwWMQ", name: "RAF Camora feat. UFO 361, GZUZ & Bonez MC - WAFFEN (Anthrazit RR) #07", - length: 268, + duration: 268, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/AIf61iHwWMQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDOB2LLlsczwY-nRhzA0m4rzWF7yg", @@ -814,7 +814,7 @@ Paginator( PlaylistVideo( id: "BixqbSRjY2Y", name: "RAF Camora - ALLES PROBIERT feat. BONEZ MC (prod.by Beataura & RAF Camora)", - length: 319, + duration: 319, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/BixqbSRjY2Y/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDrOaouRgB68UYhr338njl3BEVTdg", @@ -845,7 +845,7 @@ Paginator( PlaylistVideo( id: "Acgy-3d4P6o", name: "Kontra K - Erfolg ist kein Glück (Official Video)", - length: 226, + duration: 226, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Acgy-3d4P6o/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCBOvR8ORBuQ6zpDKCqfjS2CoAFvA", @@ -876,7 +876,7 @@ Paginator( PlaylistVideo( id: "5M_yA9M7yNc", name: "RAF Camora - GOTHAM CITY (Anthrazit RR) #03", - length: 156, + duration: 156, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/5M_yA9M7yNc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCviCUA-ubhSSDyG7yt8Q1FEbCdtQ", @@ -907,7 +907,7 @@ Paginator( PlaylistVideo( id: "PjJuezhos3U", name: "Fard - \"LIEBE MACHT BLIND\" (Official Video) prod.by Abaz & X-Plosive", - length: 258, + duration: 258, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/PjJuezhos3U/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAulYAOlEdmCEOUhn3IQDk6lWuC5A", @@ -938,7 +938,7 @@ Paginator( PlaylistVideo( id: "XMutaJI2-kc", name: "18 Karat ✖\u{fe0f}• MAMA IST NICHT STOLZ •✖\u{fe0f} [ official Video ]", - length: 262, + duration: 262, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/XMutaJI2-kc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCCJIA4Omo1CkTXkOzYVdNbP0Mkrw", @@ -969,7 +969,7 @@ Paginator( PlaylistVideo( id: "Xac6Q7hcZkQ", name: "RIN - Monica Bellucci (prod. Alexis Troy)", - length: 228, + duration: 228, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Xac6Q7hcZkQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDkwIz_hDDGLXX8i3uaKaWIl9ZH1Q", @@ -1000,7 +1000,7 @@ Paginator( PlaylistVideo( id: "JfwjsjBcDoU", name: "Helene Fischer - Achterbahn", - length: 222, + duration: 222, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/JfwjsjBcDoU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDMhxxaiLymi4ZQ3WvJpovkdQfqSQ", @@ -1031,7 +1031,7 @@ Paginator( PlaylistVideo( id: "zshiQUV3ohw", name: "MOE PHOENIX feat. VEYSEL - GAUNER (prod. by Ghana Beats)", - length: 226, + duration: 226, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/zshiQUV3ohw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAqPtA9IBm0Dp_o89aj1F18oYvRnw", @@ -1062,7 +1062,7 @@ Paginator( PlaylistVideo( id: "g1eTAt1_VAM", name: "Nimo - HYPE feat. Celo & Abdi (prod. von Matveï) [Official 4K Video]", - length: 303, + duration: 303, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/g1eTAt1_VAM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBuGSL6ChVGrfHZvlpcgOnkQmDnkg", @@ -1093,7 +1093,7 @@ Paginator( PlaylistVideo( id: "c3rLrFC8igY", name: "Dame - Auf die guten alten Zeiten [Official HD Video]", - length: 252, + duration: 252, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/c3rLrFC8igY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC8th_cJuzgJBvTHkU0F7_1o_EeSg", @@ -1124,7 +1124,7 @@ Paginator( PlaylistVideo( id: "1im4DNEYzEM", name: "Gzuz - Optimal (Jambeatz)", - length: 209, + duration: 209, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1im4DNEYzEM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCK7w05DebTnm9tXPT2AF4BYZQkpg", @@ -1155,7 +1155,7 @@ Paginator( PlaylistVideo( id: "8BUxw9ocM2s", name: "EULE aka Jazzy Gudd - Stehaufmädchen (Official Video)", - length: 184, + duration: 184, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/8BUxw9ocM2s/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD07FNMfJFNvAE1cQaM6d0TKN3thA", @@ -1186,7 +1186,7 @@ Paginator( PlaylistVideo( id: "g4cSpnGbHPE", name: "CAPITAL BRA & KING KHALIL - ZWEISTELLIGE HAFTSTRAFEN (PROD. SAVEN MUSIQ)", - length: 201, + duration: 201, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/g4cSpnGbHPE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAxbM8Us6Xq4TC42SgIawdzsI5kBw", @@ -1217,7 +1217,7 @@ Paginator( PlaylistVideo( id: "1Sdj9MiCowQ", name: "187 Strassenbande - 10 Jahre (Jambeatz)", - length: 296, + duration: 296, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1Sdj9MiCowQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBiHVp4uTcgnNiLXVp8txVAsQLRRg", @@ -1248,7 +1248,7 @@ Paginator( PlaylistVideo( id: "2DbR35g-0ZY", name: "Ufo361 - \"DER PATE\" (prod. von Broke Boys) [Official HD Video]", - length: 237, + duration: 237, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/2DbR35g-0ZY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA5oyx0LTAyq3KN833dpoMqO0pPlQ", @@ -1279,7 +1279,7 @@ Paginator( PlaylistVideo( id: "j09hpp3AxIE", name: "Die Toten Hosen // „Tage wie diese\" [Offizielles Musikvideo]", - length: 272, + duration: 272, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/j09hpp3AxIE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD9AYFv29sGfmmdT8U1dqKUjY5ALw", @@ -1310,7 +1310,7 @@ Paginator( PlaylistVideo( id: "J3GN6JXjV3g", name: "Wincent Weiss - Frische Luft", - length: 200, + duration: 200, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/J3GN6JXjV3g/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB66Ro2vGeZvHM0dnqbT6HVGtuQNA", @@ -1341,7 +1341,7 @@ Paginator( PlaylistVideo( id: "pULl-p02upM", name: "Eunique ► CHECK (feat. Xatar) ◄ music by Lucry / prod. by Michael Jackson [Official Video]", - length: 240, + duration: 240, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/pULl-p02upM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAjH5lXg2mtjBxznFQpauBgpZ6S5g", @@ -1372,7 +1372,7 @@ Paginator( PlaylistVideo( id: "O6By8JeCtQQ", name: "KING KHALIL FT. CELO & ABDI - ALLES RICHTIG SO (PROD.BY THE CRATEZ)", - length: 210, + duration: 210, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/O6By8JeCtQQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBeEDlx_Qtv47nY5CUFqHFv3eJAJQ", @@ -1403,7 +1403,7 @@ Paginator( PlaylistVideo( id: "NGn3IYQ7M7E", name: "LUCIANO - VORANKOMMEN (prod. by Chryziz Beats)", - length: 228, + duration: 228, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/NGn3IYQ7M7E/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB52YZY551SNIySzi-d8PMMx5p4qA", @@ -1434,7 +1434,7 @@ Paginator( PlaylistVideo( id: "o43oI5x86dI", name: "Gzuz feat. LX- Schnapp! (prod. P.M.B.)", - length: 166, + duration: 166, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/o43oI5x86dI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDeGB5wc8URrV5zjwsfhU2-lAd2Bg", @@ -1465,7 +1465,7 @@ Paginator( PlaylistVideo( id: "7TNqUrINxzs", name: "Veysel - Besser als 50 Cent (OFFICIAL HD VIDEO) prod. by Fonty", - length: 197, + duration: 197, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/7TNqUrINxzs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDGpJi_1puIgwODMepICvhX3qrmvw", @@ -1496,7 +1496,7 @@ Paginator( PlaylistVideo( id: "f3BD5Zm3cp0", name: "BONEZ MC & RAF CAMORA - PALMEN AUS GOLD", - length: 231, + duration: 231, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/f3BD5Zm3cp0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDrTx5VwXz29kwhWDvtUqUsMl832Q", @@ -1527,7 +1527,7 @@ Paginator( PlaylistVideo( id: "sF4yTDp95Eo", name: "YONII - LAMPEDUSA prod. by LUCRY (Official 4K Video)", - length: 203, + duration: 203, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/sF4yTDp95Eo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBvg9CIthGa9KJrDHLjeZjkDegElw", @@ -1558,7 +1558,7 @@ Paginator( PlaylistVideo( id: "1EwLNHg6ejY", name: "Mert ft. SOOLKING - AJAJAJ (prod. by ARIBEATZ)", - length: 224, + duration: 224, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1EwLNHg6ejY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBxADlCvmeGhe-SPNkvZcVQk7wu4g", @@ -1589,7 +1589,7 @@ Paginator( PlaylistVideo( id: "-l75qaSDWe8", name: "SXTN - Bongzimmer (Official Video)", - length: 287, + duration: 287, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/-l75qaSDWe8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCMJGvaVHhQX1wQsr-3Kd2djDVIRQ", @@ -1620,7 +1620,7 @@ Paginator( PlaylistVideo( id: "7h7ntYLLrfQ", name: "Mark Forster - Kogong", - length: 223, + duration: 223, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/7h7ntYLLrfQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAtAzQLSNQvigkTqhdfBgz8WSOyTA", @@ -1651,7 +1651,7 @@ Paginator( PlaylistVideo( id: "ApUl3Ops69M", name: "AZET - FAST LIFE (prod. by m3) #KMNSTREET VOL. 1", - length: 179, + duration: 179, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ApUl3Ops69M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDb2436I_Kp7y4gMe6w7nh_DN0F2Q", @@ -1682,7 +1682,7 @@ Paginator( PlaylistVideo( id: "2YcJ8Wightw", name: "GZUZ - CL500 (Jambeatz)", - length: 152, + duration: 152, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/2YcJ8Wightw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBafY_AaRX5vaAIfpdctKTL8ZbUqQ", @@ -1713,7 +1713,7 @@ Paginator( PlaylistVideo( id: "W3q8Od5qJio", name: "Rammstein - Du Hast (Official Video)", - length: 236, + duration: 236, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/W3q8Od5qJio/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBy8BHWAiUz5cUmZdLkDTTIS7w5bA", @@ -1744,7 +1744,7 @@ Paginator( PlaylistVideo( id: "WPFLAjmWCtk", name: "SIDO - Astronaut (feat. Andreas Bourani) OFFICIAL VIDEO", - length: 268, + duration: 268, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/WPFLAjmWCtk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBA6n25WXYSKiK6KbfsZk-monR1BQ", @@ -1775,7 +1775,7 @@ Paginator( PlaylistVideo( id: "tC76tIp0kBk", name: "MoTrip - So wie du bist (feat. Lary)", - length: 312, + duration: 312, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/tC76tIp0kBk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBCSXdft-cKXNbKDFWX-UBvjgjeOQ", @@ -1806,7 +1806,7 @@ Paginator( PlaylistVideo( id: "kiMG_JV2gbo", name: "Adel Tawil \"Lieder\" (Official Lyrics Video)", - length: 230, + duration: 230, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/kiMG_JV2gbo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDuETow7IpKT30ZdSsh-9L6ns1Uww", @@ -1837,7 +1837,7 @@ Paginator( PlaylistVideo( id: "CrYYg_atdtk", name: "Marteria, Yasha, Miss Platnum - Lila Wolken (Official Video)", - length: 231, + duration: 231, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/CrYYg_atdtk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB_8mGL48FutWtNIFldaMsVmhlhnw", @@ -1868,7 +1868,7 @@ Paginator( PlaylistVideo( id: "XTPGpBBwt1w", name: "K.I.Z. - Hurra die Welt geht unter ft. Henning May (Official Video)", - length: 299, + duration: 299, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/XTPGpBBwt1w/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAcYXhOsrGetd_0wuibgBFV7YBnIg", @@ -1899,7 +1899,7 @@ Paginator( PlaylistVideo( id: "uC08L4xxjNM", name: "Max Giesinger - 80 Millionen (Offizielles Video)", - length: 257, + duration: 257, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/uC08L4xxjNM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAOc-MPZ_rsmax81mL3f8AgLsX90Q", @@ -1930,7 +1930,7 @@ Paginator( PlaylistVideo( id: "5fAoV_AAMf0", name: "Mark Forster - Bauch und Kopf (Videoclip)", - length: 257, + duration: 257, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/5fAoV_AAMf0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDfOpErDWIsYZ61_NlNduG5z2W5Cg", @@ -1961,7 +1961,7 @@ Paginator( PlaylistVideo( id: "u5Vz7obL460", name: "Tim Bendzko - Keine Maschine (Offizielles Video)", - length: 202, + duration: 202, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/u5Vz7obL460/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBBUhjoBjfVBzy7k9bgwicb4in_wQ", @@ -1992,7 +1992,7 @@ Paginator( PlaylistVideo( id: "ZPJlyRv_IGI", name: "Deichkind - Leider Geil (Official Video)", - length: 189, + duration: 189, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ZPJlyRv_IGI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD-VCnGYvXMSkYOdKLReH9Dlt8G_A", @@ -2023,7 +2023,7 @@ Paginator( PlaylistVideo( id: "s2SLbln-JwE", name: "BIBI & TINA \" Jungs gegen Mädchen - MÄDCHEN GEGEN JUNGS - Das offizielle Video!", - length: 172, + duration: 172, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/s2SLbln-JwE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDURk566C-Rh1vwMamXVandCsnDvQ", @@ -2054,7 +2054,7 @@ Paginator( PlaylistVideo( id: "28xHtRw6pG8", name: "AZET - PATTE FLIESST prod. by LUCRY #KMNSTREET VOL. 5", - length: 206, + duration: 206, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/28xHtRw6pG8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAZB8XpsXloeCqWZpyZt8YNvV2IxQ", @@ -2085,7 +2085,7 @@ Paginator( PlaylistVideo( id: "joWoKqUTRvc", name: "KC Rebell ► ALLES & NICHTS ◄ [ official Video ]", - length: 204, + duration: 204, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/joWoKqUTRvc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDAwlxydPxzE_jwb1rNbqmjdMEEoQ", @@ -2116,7 +2116,7 @@ Paginator( PlaylistVideo( id: "XNMFTqhcNrE", name: "Mark Forster - Flash mich (Videoclip)", - length: 236, + duration: 236, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/XNMFTqhcNrE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBTr_B4ekTBT9hupTStE4MOf52PVw", @@ -2147,7 +2147,7 @@ Paginator( PlaylistVideo( id: "v3vPLgJ9FX8", name: "Cheat Codes - Sex (Official Video)", - length: 260, + duration: 260, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/v3vPLgJ9FX8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA_hmNsTwTENDy4Bjh6gh__yW3GIQ", @@ -2178,7 +2178,7 @@ Paginator( PlaylistVideo( id: "UFXOd179kOA", name: "GZUZ - EBBE & FLUT (mit Xatar & Hanybal)", - length: 213, + duration: 213, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/UFXOd179kOA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD-tY05WssNwj08bjU_P1qVrXP3Ag", @@ -2209,7 +2209,7 @@ Paginator( PlaylistVideo( id: "4xRsDnKgHZc", name: "ZUNA feat. NIMO - HOL MIR DEIN COUSIN (Official 4K Video)", - length: 206, + duration: 206, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/4xRsDnKgHZc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD2YQRMQrDjFZXKHm-HPOKNZY-kmw", @@ -2240,7 +2240,7 @@ Paginator( PlaylistVideo( id: "mE3IjoEqMqY", name: "Hanybal - VANILLA SKY mit Nimo (prod. von Lucry) [Official 4K Video]", - length: 211, + duration: 211, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/mE3IjoEqMqY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLARArW0ieGDVRQ4Qhp8JWepnfeDtg", @@ -2271,7 +2271,7 @@ Paginator( PlaylistVideo( id: "E7e5vxKerqA", name: "DARDAN FT. ENO - WER MACHT PARA? (Official Video)", - length: 195, + duration: 195, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/E7e5vxKerqA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBYmNJ23r8Y5wE4xpfNz2ms6i3omw", @@ -2302,7 +2302,7 @@ Paginator( PlaylistVideo( id: "axmZ_5Rx4Go", name: "Adel Tawil \"Zuhause\" (Official Music Video)", - length: 210, + duration: 210, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/axmZ_5Rx4Go/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDh0E0WIHz_QeECpxh9OcCQgP80Tw", @@ -2333,7 +2333,7 @@ Paginator( PlaylistVideo( id: "44Ig6BsOCYA", name: "Olexesh - PURPLE HAZE (Offizielles Video)", - length: 279, + duration: 279, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/44Ig6BsOCYA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDAwH-0B_Aadbi2O9ba4EJUr3kyCA", @@ -2364,7 +2364,7 @@ Paginator( PlaylistVideo( id: "3iLBFEJjdN0", name: "SIDO - Löwenzahn feat. Olexesh (prod. by DJ Desue & x-plosive)", - length: 242, + duration: 242, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/3iLBFEJjdN0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA2pjLj4MppP5puOVVw960xZHlEZQ", @@ -2395,7 +2395,7 @@ Paginator( PlaylistVideo( id: "M-ncq2eHF_k", name: "Philipp Poisel - Ich will nur (Offizielles Video)", - length: 233, + duration: 233, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/M-ncq2eHF_k/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDbtYmxd63hnsRbe3Sgr6IEtxaKXg", @@ -2426,7 +2426,7 @@ Paginator( PlaylistVideo( id: "-AJoJ-ggiKI", name: "LX & Maxwell feat. Gzuz - HaifischNikez (Jambeatz)", - length: 215, + duration: 215, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/-AJoJ-ggiKI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDcSPvvf03RP2Q6cd3h3G2Zz42XMQ", @@ -2457,7 +2457,7 @@ Paginator( PlaylistVideo( id: "cgb-zp9DDHg", name: "Bushido X Shindy - Brot brechen", - length: 191, + duration: 191, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/cgb-zp9DDHg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBoszXFG4nQrodmF7kDKDCpBahWnQ", @@ -2488,7 +2488,7 @@ Paginator( PlaylistVideo( id: "Q7ZXg3KQLt0", name: "KOLLEGAH - Genozid (prod. von B-Case & Alexis Troy) (Official HD Video)", - length: 407, + duration: 407, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Q7ZXg3KQLt0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCntzPVc1exjqTv4dMIRNj9l_fPFA", @@ -2519,7 +2519,7 @@ Paginator( PlaylistVideo( id: "ysAEZOwp5rM", name: "KOLLEGAH - John Gotti (prod. von Alexis Troy) (Official HD Video)", - length: 207, + duration: 207, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ysAEZOwp5rM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAq4pm6ReaUxi45Ao_rQqFb-zTDqQ", @@ -2550,7 +2550,7 @@ Paginator( PlaylistVideo( id: "m5vfng33SVE", name: "Philipp Dittberner - Das ist dein Leben (Official Video)", - length: 282, + duration: 282, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/m5vfng33SVE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCy3rZ_vNJbHC6MPjBKfkH9OF4KxQ", @@ -2581,7 +2581,7 @@ Paginator( PlaylistVideo( id: "yMfgjVlGbUE", name: "SpongeBOZZ - SFTB/Apocalyptic Infinity/Payback #forsundiego (Prod. by Digital Drama)", - length: 1622, + duration: 1622, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/yMfgjVlGbUE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCImbZOtOhsu1n5GRh-mVYWhoCNGA", @@ -2612,7 +2612,7 @@ Paginator( PlaylistVideo( id: "OQIYEPe6DWY", name: "Kraftwerk - Das Model", - length: 262, + duration: 262, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/OQIYEPe6DWY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDcpI8_iSbWLFjaRFSoXae9jGhSkQ", @@ -2643,7 +2643,7 @@ Paginator( PlaylistVideo( id: "5FS8RIH7BpI", name: "GENETIKK - Wünsch dir was (Official HD Video)", - length: 303, + duration: 303, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/5FS8RIH7BpI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAuSraLlm5j-ap1h2ePrD79sxdoNQ", @@ -2674,7 +2674,7 @@ Paginator( PlaylistVideo( id: "zSRKgFB9piY", name: "Keine ist wie Du - Joel Brandenstein & Chrisoula Botsika ( Gregor Meyle Acoustic Cover )", - length: 256, + duration: 256, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/zSRKgFB9piY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAbaAoyp05Ae7eWUZvCAzFdRN6BMQ", @@ -2705,7 +2705,7 @@ Paginator( PlaylistVideo( id: "e4eHhgwHCME", name: "Kollegah & Farid Bang ✖\u{fe0f}STURMMASKE AUF ✖\u{fe0f} [official video]", - length: 275, + duration: 275, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/e4eHhgwHCME/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDj3vRRbJlmnPr4rqKRkmZs-JIN7A", @@ -2736,7 +2736,7 @@ Paginator( PlaylistVideo( id: "q3hZvho7jNk", name: "KC Rebell ✖\u{fe0f} PAPER ✖\u{fe0f} [ official Video ] GEE Futuristic, Nikki 3k & Joshimixu", - length: 222, + duration: 222, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/q3hZvho7jNk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCLwp5luIJpaNOWk7bSXdYfTn0sBA", @@ -2767,7 +2767,7 @@ Paginator( PlaylistVideo( id: "0nWysyj_Z4Y", name: "Nimo - FLOUZ KOMMT FLOUZ GEHT (prod. von Jimmy Torrio) [Official 4K Video]", - length: 191, + duration: 191, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/0nWysyj_Z4Y/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDQGu4QNzr3EMjQcAiTkPrm3q60nQ", @@ -2798,7 +2798,7 @@ Paginator( PlaylistVideo( id: "aGCcLWU0OVo", name: "SIDO - Gürtel am Arm", - length: 218, + duration: 218, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/aGCcLWU0OVo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDArDAbvY0RsPSuJPBh4uyPYSr4Bw", @@ -2829,7 +2829,7 @@ Paginator( PlaylistVideo( id: "OQsXLK4MeEA", name: "JBB 2013 - SpongeBOZZ vs. Gio (Finale HR) prod. by Digital Drama", - length: 400, + duration: 400, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/OQsXLK4MeEA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBZWiGbF4RrO7JLpICvTuC-eHpfuw", @@ -2860,7 +2860,7 @@ Paginator( PlaylistVideo( id: "xm7dxIqOO2M", name: "KURDO - Halbmond (prod. by Amir & Kostas)", - length: 272, + duration: 272, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/xm7dxIqOO2M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBxxl3-2dozhr306-FrORMGygKXoQ", @@ -2891,7 +2891,7 @@ Paginator( PlaylistVideo( id: "jlaaByab4Zk", name: "Mc Yankoo feat. Milica Todorovic - Ljubi me budalo (official Video)", - length: 224, + duration: 224, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/jlaaByab4Zk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBG5CJRj0SjU1Vm1l9EIGnWOG1mUQ", @@ -2922,7 +2922,7 @@ Paginator( PlaylistVideo( id: "KG9-jSqXz4U", name: "Oft Gefragt - AnnenMayKantereit (Official Video)", - length: 205, + duration: 205, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/KG9-jSqXz4U/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCdiXgKroQCc_4uA9cgiCKIDKbUYg", @@ -2953,7 +2953,7 @@ Paginator( PlaylistVideo( id: "7dISZnwsBSA", name: "Prinz Pi - 1,40m (feat. Philipp Dittberner)", - length: 284, + duration: 284, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/7dISZnwsBSA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA2ZhuSJUc-O8GnUa12UH5Z08qWlA", @@ -2984,7 +2984,7 @@ Paginator( PlaylistVideo( id: "F_PPdS-PB14", name: "Nimo - IDÉAL (prod. von SOTT) [Official 4K Video]", - length: 253, + duration: 253, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/F_PPdS-PB14/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCIcbTSt6Q1Xo8sqLnyEbbXSuLBcg", @@ -3015,7 +3015,7 @@ Paginator( PlaylistVideo( id: "DMg9idvVY8M", name: "Nimo - BITTER (prod. von Jimmy Torrio) [Official 4K Video]", - length: 173, + duration: 173, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/DMg9idvVY8M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCIg_8ZAGGj-OC9R8sh4txS_8bQHw", @@ -3046,7 +3046,7 @@ Paginator( PlaylistVideo( id: "DGEmoSFI94Y", name: "SDP - Kurz für immer bleiben", - length: 218, + duration: 218, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/DGEmoSFI94Y/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB2H8YGPqxgGisgCPfV-svTSrBY3g", @@ -3077,7 +3077,7 @@ Paginator( PlaylistVideo( id: "BtZufymxHvE", name: "LX & Maxwell - Ausser Kontrolle (Jambeatz)", - length: 159, + duration: 159, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/BtZufymxHvE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCNkUFpFYV3Tnk-NnRMwuHuQlxl-g", 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 004c6f0..9ac46a7 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 @@ -11,7 +11,7 @@ Playlist( VideoItem( id: "G1eQAxaim7I", name: "Bracket Stage Day 6 | MSI 2023", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/G1eQAxaim7I/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAec-R8N3ePlZu5R4vXvQ-b5rDjlw", @@ -52,7 +52,7 @@ Playlist( VideoItem( id: "e2ikfdaqgQw", name: "(REBROADCAST) Brackets Stage Day 5 | MSI 2023", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/e2ikfdaqgQw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBVijuor2a5yElnWqnlONL8bBtadg", @@ -93,7 +93,7 @@ Playlist( VideoItem( id: "eeRJ6gKEdGw", name: "MAD vs. G2 | Bracket Stage Day 5 | MSI 2023", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/eeRJ6gKEdGw/hqdefault_live.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBJnEZdD6DPyuxAirKBBVvf8tf1EA", @@ -134,7 +134,7 @@ Playlist( VideoItem( id: "f6_LVfu4TBM", name: "C9 vs. BLG | Brackets Stage Day 3 | MSI 2023", - length: Some(16296), + duration: Some(16296), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/f6_LVfu4TBM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA3bXUGDK_XN1sd4SpY5uyqKPLcXg", @@ -175,7 +175,7 @@ Playlist( VideoItem( id: "k1T5q5vCseA", name: "MAD vs. T1 | Brackets Stage Day 2 | MSI 2023", - length: Some(14656), + duration: Some(14656), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/k1T5q5vCseA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAKwXBozWNoyoPOTLxU-KTEcPdGNg", @@ -216,7 +216,7 @@ Playlist( VideoItem( id: "SfSRvJAepao", name: "GEN vs. G2 | Brackets Stage Day 1 | MSI 2023", - length: Some(17253), + duration: Some(17253), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/SfSRvJAepao/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAHSVlRBTH5fTkJuZZ1TM023aiRJw", @@ -257,7 +257,7 @@ Playlist( VideoItem( id: "iLh5u7b9cBA", name: "Grand Final | 2021 Mid-Season Invitational", - length: Some(22019), + duration: Some(22019), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/iLh5u7b9cBA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDf-JLHFDDTrEh0PNDOf0YFDC8Gng", @@ -298,7 +298,7 @@ Playlist( VideoItem( id: "H0-Xedaum2M", name: "DK vs. MAD | Semifinals Day 2 | 2021 Mid-Season Invitational | DWG KIA vs. MAD Lions", - length: Some(20799), + duration: Some(20799), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/H0-Xedaum2M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAyxdqkPntzMldI_O4fj7DknKtedg", @@ -339,7 +339,7 @@ Playlist( VideoItem( id: "SfRj_PfmD1o", name: "RNG vs. PSG | Semifinals Day 1 | 2021 Mid-Season Invitational | Royal Never Give Up vs. PSG Talon", - length: Some(17930), + duration: Some(17930), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/SfRj_PfmD1o/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCXykcy-nthXWw7ZJBiXh5k2PRidg", @@ -380,7 +380,7 @@ Playlist( VideoItem( id: "Ey7gCktJKxs", name: "Groups Day 6 | 2021 Mid-Season Invitational", - length: Some(26565), + duration: Some(26565), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Ey7gCktJKxs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLADorMS1EykOI1XejSGx9oZ8fRdsw", @@ -421,7 +421,7 @@ Playlist( VideoItem( id: "A0zFe_YqSmk", name: "(REBROADCAST) LEC/LCS Superstar Showdown | All-Star Event 2020", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/A0zFe_YqSmk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD9AouCkLOruMF-a6GpHbusSO51VA", @@ -462,7 +462,7 @@ Playlist( VideoItem( id: "s1bRE7hHEFQ", name: "(REBROADCAST) LCK/LPL Superstar Showdown | All-Star Event 2020", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/s1bRE7hHEFQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDFE2VvCKI9WbFGauIQjOEpXzJkgw", @@ -503,7 +503,7 @@ Playlist( VideoItem( id: "JyrZr3adP9o", name: "(REBROADCAST) LEC/LCS Underdog Uprising | All-Star Event 2020", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/JyrZr3adP9o/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDDSe8Rt1Z2WVvwWSOwCXPvrlIpGg", @@ -544,7 +544,7 @@ Playlist( VideoItem( id: "_HieTC6XHzg", name: "The Americas | Monuments of Power Seasonal Tournament", - length: Some(24819), + duration: Some(24819), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/_HieTC6XHzg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBXu5atOXzFyrWOHIgEJBIINbNgYw", @@ -585,7 +585,7 @@ Playlist( VideoItem( id: "iDg1__bD4Pg", name: "OG vs. G2 | Playoffs Round 3 | LEC Spring | Origen vs. G2 Esports (2020)", - length: Some(21800), + duration: Some(21800), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/iDg1__bD4Pg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBZ6dTtMZGDgsBGEVIyDASGSEiKiQ", @@ -626,7 +626,7 @@ Playlist( VideoItem( id: "i9lwd0rkKj0", name: "C9 vs. EG | Playoffs Round 2 | LCS Spring Split | Cloud9 vs. Evil Geniuses (2020)", - length: Some(17920), + duration: Some(17920), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/i9lwd0rkKj0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDcU2lnI3YdS8-_n_C_JLPwGsuRlg", @@ -667,7 +667,7 @@ Playlist( VideoItem( id: "Id5lJcI0w5w", name: "FNC vs. MAD | Playoffs Round 2 | LEC Spring | Fnatic vs. MAD Lions (2020)", - length: Some(16280), + duration: Some(16280), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Id5lJcI0w5w/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDdTZD3sa5NQWB0TBqLuHn0uPoYHA", @@ -708,7 +708,7 @@ Playlist( VideoItem( id: "6_jP8fxeiM0", name: "FLY vs. GG | Playoffs Round 1 | LCS Spring Split | FlyQuest vs. Golden Guardians (2020)", - length: Some(15646), + duration: Some(15646), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/6_jP8fxeiM0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAbZuV71R4bD0Qno7bEtiA-VB2qqg", @@ -749,7 +749,7 @@ Playlist( VideoItem( id: "1QgMXWEDNr8", name: "Week 8 Day 1 | LEC Spring Split (2020)", - length: Some(28130), + duration: Some(28130), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1QgMXWEDNr8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDaNPojzZIDSWY0uwV469pql68VmQ", @@ -790,7 +790,7 @@ Playlist( VideoItem( id: "Q0tddAzhBiA", name: "2019 All-Star Event: Day 3", - length: Some(26378), + duration: Some(26378), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Q0tddAzhBiA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAF0R5UdX_lgiUkM5ebll38HarV_g", @@ -831,7 +831,7 @@ Playlist( VideoItem( id: "xFAUCYK0ltI", name: "2019 All-Star Event: Day 2", - length: Some(28589), + duration: Some(28589), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/xFAUCYK0ltI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDm5ZuBI4L0jmMCygrM93wILLj_qQ", @@ -872,7 +872,7 @@ Playlist( VideoItem( id: "u4LNyvbOPMQ", name: "2019 All-Star Event: Day 1", - length: Some(25967), + duration: Some(25967), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/u4LNyvbOPMQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC6_67njGnGOut8X8MltMAfKicA8A", @@ -913,7 +913,7 @@ Playlist( VideoItem( id: "ojes5ULOqhc", name: "G2 vs. FPX | Finals | 2019 World Championship | G2 Esports vs. FunPlus Phoenix", - length: Some(42901), + duration: Some(42901), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ojes5ULOqhc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAstiHqJRwyKG7CTswwMfVY3H1XhQ", @@ -954,7 +954,7 @@ Playlist( VideoItem( id: "prBto1zrirs", name: "Red Bull Rise of the Elements Invitational (Day 2)", - length: Some(22332), + duration: Some(22332), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/prBto1zrirs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDn7-K82Puf2rNIdrM5_esqEYBb1A", @@ -995,7 +995,7 @@ Playlist( VideoItem( id: "sRBHLewK5-0", name: "Red Bull Rise of the Elements Invitational (Day 1)", - length: Some(35261), + duration: Some(35261), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/sRBHLewK5-0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA2j62QeYg43w94lEUIh71_suXppQ", @@ -1036,7 +1036,7 @@ Playlist( VideoItem( id: "euppkm2ztdM", name: "Groups Day 8 | 2019 World Championship", - length: Some(27138), + duration: Some(27138), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/euppkm2ztdM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDUKthHPGA5IQVK1psj53zHWg_O1g", @@ -1077,7 +1077,7 @@ Playlist( VideoItem( id: "FQ0Tw6EuQRk", name: "Groups Day 7 | 2019 World Championship", - length: Some(27869), + duration: Some(27869), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/FQ0Tw6EuQRk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAd0UcTflY5R2FMpYH0ndRYIeB-8A", @@ -1118,7 +1118,7 @@ Playlist( VideoItem( id: "KvcqXRNVH9M", name: "Groups Day 6 | 2019 World Championship", - length: Some(29407), + duration: Some(29407), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/KvcqXRNVH9M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCmqmJPsjuvnBrJaJ79wX4HxnrtRw", @@ -1159,7 +1159,7 @@ Playlist( VideoItem( id: "srFwxG-e5SQ", name: "Groups Day 5 | 2019 World Championship", - length: Some(29310), + duration: Some(29310), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/srFwxG-e5SQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCpamG0koxWwHXEjacOAEKUzRXHOg", @@ -1200,7 +1200,7 @@ Playlist( VideoItem( id: "EN4W4O-leW4", name: "Groups Day 4 | 2019 World Championship", - length: Some(27544), + duration: Some(27544), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/EN4W4O-leW4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCdEWMFaBol4tK-obwLs7-UrbFxYA", @@ -1241,7 +1241,7 @@ Playlist( VideoItem( id: "16O-OqVSj78", name: "Groups Day 3 | 2019 World Championship", - length: Some(27787), + duration: Some(27787), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/16O-OqVSj78/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD6fOlnXog4cAvNq9KBSj1ZVhGt-g", @@ -1282,7 +1282,7 @@ Playlist( VideoItem( id: "2Fa_EnY3AyI", name: "IG vs. JDG | Round 1 | LPL Regional Qualifier | Invictus Gaming vs. JD Gaming (2019)", - length: Some(19872), + duration: Some(19872), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/2Fa_EnY3AyI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAzEvZy2AzjuEwPrc6HEB9bQ_IifQ", @@ -1323,7 +1323,7 @@ Playlist( VideoItem( id: "O4vl13XhEXk", name: "(REBROADCAST) TSM vs. CG | Quarterfinals Day 1 | LCS Summer Split (2019)", - length: Some(13839), + duration: Some(13839), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/O4vl13XhEXk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLApiEn5mhalZEe23902mlEsGZe53A", @@ -1364,7 +1364,7 @@ Playlist( VideoItem( id: "qnz4VC7jaQg", name: "Week 5 Day 2 | LCS Summer Split (2019)", - length: Some(27224), + duration: Some(27224), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/qnz4VC7jaQg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCkiAk6gorlhecUv_Fdu5CZAUS8cA", @@ -1405,7 +1405,7 @@ Playlist( VideoItem( id: "ZXUTMEOkPd8", name: "Week 4 Day 2 | LCS Summer Split (2019)", - length: Some(28136), + duration: Some(28136), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ZXUTMEOkPd8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCl90692Yu6ZCs-EQtjtmNfAqicsw", @@ -1446,7 +1446,7 @@ Playlist( VideoItem( id: "qkurBGLdrYc", name: "Play-In Draw Show | 2019 Mid-Season Invitational", - length: Some(5589), + duration: Some(5589), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/qkurBGLdrYc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAWDbFYHKPPgZWYnpAH_I8NkTIdSw", @@ -1487,7 +1487,7 @@ Playlist( VideoItem( id: "iaZoFqcQauQ", name: "VSG vs. KT - ESS vs. JAG| Round 1 | LCK Summer Promotion (2019)", - length: Some(19229), + duration: Some(19229), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/iaZoFqcQauQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCdgsIUjDiII5xmTBXL0yJ5D_ymUg", @@ -1528,7 +1528,7 @@ Playlist( VideoItem( id: "V5uwgkx-dWw", name: "The Dive Live @ STL | Spring Finals (2019)", - length: Some(10905), + duration: Some(10905), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/V5uwgkx-dWw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBAPOA_Appn-PUvqvP9YtwyOqYjcw", @@ -1569,7 +1569,7 @@ Playlist( VideoItem( id: "twx9WFSWGuI", name: "HLE vs. KT - KZ vs. GRF | Week 10 Day 2 | LCK Spring Split (2019)", - length: Some(17619), + duration: Some(17619), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/twx9WFSWGuI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD2sxbdz5s3atLGJPGFQBcrpFzw7Q", @@ -1610,7 +1610,7 @@ Playlist( VideoItem( id: "PH9u7c_6vkk", name: "(REBROADCAST) 2018 All-Star Event: Day 1", - length: Some(26998), + duration: Some(26998), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/PH9u7c_6vkk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAcet50MJc_TuXxoLTUZWtF_klwqg", @@ -1651,7 +1651,7 @@ Playlist( VideoItem( id: "8yt60WWCyro", name: "(REBROADCAST) 2018 All-Star Event: Day 2", - length: Some(22513), + duration: Some(22513), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/8yt60WWCyro/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAmLmu3C70JM-8OrfgJvXtdGk_yOA", @@ -1692,7 +1692,7 @@ Playlist( VideoItem( id: "ksaG3KvyRuM", name: "(REBROADCAST) FNC vs. IG | Finals | World Championship | Fnatic vs. Invictus Gaming (2018)", - length: Some(17792), + duration: Some(17792), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ksaG3KvyRuM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDtUULLHFN-bDBtejGRQXeqAXKz3Q", @@ -1733,7 +1733,7 @@ Playlist( VideoItem( id: "kLM4Pah5BOg", name: "FNC vs. IG | Finals | World Championship | Fnatic vs. Invictus Gaming (2018)", - length: Some(16909), + duration: Some(16909), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/kLM4Pah5BOg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA_HEPvPOoM-H5cn8eKB3hYTI3qhA", @@ -1774,7 +1774,7 @@ Playlist( VideoItem( id: "178rKXU7JLw", name: "(REBROADCAST) FNC vs. C9 | Semifinal | World Championship | Fnatic vs. Cloud9 (2018)", - length: Some(13676), + duration: Some(13676), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/178rKXU7JLw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAF_nWtAqaiEq5ZhTaQZF7ljzS4Dg", @@ -1815,7 +1815,7 @@ Playlist( VideoItem( id: "K2wc3tvwHPw", name: "(REBROADCAST) G2 vs. IG | Semifinal | World Championship | G2 Esports vs. Invictus Gaming (2018)", - length: Some(12914), + duration: Some(12914), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/K2wc3tvwHPw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAAS64LheAsybx0esJDA64Ia6GgNw", @@ -1856,7 +1856,7 @@ Playlist( VideoItem( id: "6px5QTgCNhA", name: "(REBROADCAST) C9 vs. AFS - FNC vs. EDG | Quarterfinals Day 2 | 2018 World Championship", - length: Some(27422), + duration: Some(27422), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/6px5QTgCNhA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA8a4cryD26Zigkjp2glGZMAzltNQ", @@ -1897,7 +1897,7 @@ Playlist( VideoItem( id: "nljxMmzFK4s", name: "(REBROADCAST) KT vs. IG - RNG vs. G2 | Quarterfinals Day 1 | 2018 World Championship", - length: Some(35934), + duration: Some(35934), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/nljxMmzFK4s/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBdOiwwM_S7VRkZyFl_35lQmOZSLQ", @@ -1938,7 +1938,7 @@ Playlist( VideoItem( id: "q0Z2vytKUQ0", name: "(REBROADCAST) 2018 World Championship: Group Stage Day 8", - length: Some(26434), + duration: Some(26434), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/q0Z2vytKUQ0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCzY2x0VBqkFJTP7bBZLjQrsELMlQ", @@ -1979,7 +1979,7 @@ Playlist( VideoItem( id: "ILjZQp6UFFs", name: "(REBROADCAST) 2018 World Championship: Group Stage Day 7", - length: Some(22695), + duration: Some(22695), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ILjZQp6UFFs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDswF4og8mMHnElcHXmk4fWX_Odfg", @@ -2020,7 +2020,7 @@ Playlist( VideoItem( id: "n4IIRmF7iXs", name: "(REBROADCAST) 2018 World Championship: Group Stage Day 6", - length: Some(29727), + duration: Some(29727), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/n4IIRmF7iXs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAKSijfzAkiRAMND-8pArMptw0R_w", @@ -2061,7 +2061,7 @@ Playlist( VideoItem( id: "sYu_jF6ih3c", name: "(REBROADCAST) 2018 World Championship: Group Stage Day 5", - length: Some(27421), + duration: Some(27421), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/sYu_jF6ih3c/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCf-vBRXhpKHzTUDOwZZW256gSlzg", @@ -2102,7 +2102,7 @@ Playlist( VideoItem( id: "qXG1RCEZoh8", name: "(REBROADCAST) 2018 World Championship: Group Stage Day 4", - length: Some(22957), + duration: Some(22957), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/qXG1RCEZoh8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCxEK00Of3hYUA79k7fy_BoJKm68w", @@ -2143,7 +2143,7 @@ Playlist( VideoItem( id: "wipHTkJcV2g", name: "(REBROADCAST) 2018 World Championship: Group Stage Day 3", - length: Some(10817), + duration: Some(10817), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/wipHTkJcV2g/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD7ENiQeGLBaeEEW5cX_0-QyN6ByA", @@ -2184,7 +2184,7 @@ Playlist( VideoItem( id: "P0EHhWMcEMQ", name: "(REBROADCAST) 2018 World Championship: Group Stage Day 2", - length: Some(26051), + duration: Some(26051), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/P0EHhWMcEMQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLClIWW0SHy1cVFIjCdmNhnf5JIjYA", @@ -2225,7 +2225,7 @@ Playlist( VideoItem( id: "w3hbpaD3zsM", name: "(REBROADCAST) G2 vs. INF - GRX vs. SUP | Play-In Knockouts | 2018 World Championship", - length: Some(32025), + duration: Some(32025), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/w3hbpaD3zsM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBzDVbWhEvklYq6CSTppvlibBqlrw", @@ -2266,7 +2266,7 @@ Playlist( VideoItem( id: "58Lhxzj8DsI", name: "(REBROADCAST) C9 vs. GMB - EDG vs. DFM | Play-In Knockouts | 2018 World Championship", - length: Some(28827), + duration: Some(28827), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/58Lhxzj8DsI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBIjEmr7L55ABPcAdZcRz28uq8Ifw", @@ -2307,7 +2307,7 @@ Playlist( VideoItem( id: "22yDZ5WZpA4", name: "(REBROADCAST) 2018 World Championship: Play-In Day 4", - length: Some(26890), + duration: Some(26890), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/22yDZ5WZpA4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBdlbKelcczYsmECaSiQ2r1mwk6Dw", @@ -2348,7 +2348,7 @@ Playlist( VideoItem( id: "iC6Fz9uUepk", name: "(REBROADCAST) 2018 World Championship: Play-In Day 3", - length: Some(26780), + duration: Some(26780), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/iC6Fz9uUepk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC2tpNtmMiLhKohSZBODekwBuNUnQ", @@ -2389,7 +2389,7 @@ Playlist( VideoItem( id: "bNskvqxedow", name: "(REBROADCAST) 2018 World Championship: Play-In Day 2", - length: Some(23337), + duration: Some(23337), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/bNskvqxedow/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAF5uns6inQftxlGdgjyNT7hOnnFw", @@ -2430,7 +2430,7 @@ Playlist( VideoItem( id: "Sm1LmwghwcA", name: "BTC vs. MVP | Day 4 | LCK Spring Promotion | Team Battlecomics vs. MVP (2019)", - length: Some(14759), + duration: Some(14759), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Sm1LmwghwcA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAaHny-WRN-mXTvaqxo3OQ-GlOmkA", @@ -2471,7 +2471,7 @@ Playlist( VideoItem( id: "mtqnA3Jh3ig", name: "BTC vs. DWG | Day 2 | LCK Spring Promotion | Team Battlecomics vs. DAMWON Gaming (2019)", - length: Some(16587), + duration: Some(16587), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/mtqnA3Jh3ig/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAAa4WUrB19WsutFfEDsIupCFFVlA", @@ -2512,7 +2512,7 @@ Playlist( VideoItem( id: "uQAiGTmAvFQ", name: "(REBROADCAST) S04 vs. G2 | Final | EU LCS Regional Qualifier (2018)", - length: Some(17359), + duration: Some(17359), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/uQAiGTmAvFQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDWUVb2NPq89SrZS7BppKGi8lMYrA", @@ -2553,7 +2553,7 @@ Playlist( VideoItem( id: "WrlWqcawOnE", name: "G2 vs. SPY | Round 2 | EU LCS Regional Qualifier | G2 Esports vs. Splyce (2018)", - length: Some(24439), + duration: Some(24439), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/WrlWqcawOnE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDsCTbEOJrElm7iYgRXVnf4GqDdgg", @@ -2594,7 +2594,7 @@ Playlist( VideoItem( id: "s9lFG8o9a6s", name: "EDG vs. JDG | Round 1 | LPL Regional Qualifier | Edward Gaming vs. JD Gaming (2018)", - length: Some(28081), + duration: Some(28081), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/s9lFG8o9a6s/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLArfENrcbL8BY_f2DyyzbODSOn5FQ", @@ -2635,7 +2635,7 @@ Playlist( VideoItem( id: "Cd5SJe5Pf3M", name: "(REBROADCAST) SPY vs. MSF | Round 1 | EU LCS Regional Qualifier (2018)", - length: Some(20830), + duration: Some(20830), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Cd5SJe5Pf3M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBXpL1gSmWZ0OBajE7mCsHqLpHqoA", @@ -2676,7 +2676,7 @@ Playlist( VideoItem( id: "_hGU5DNRC0Y", name: "SPY vs. MSF | Round 1 | EU LCS Regional Qualifier | Splyce vs. Misfits Gaming (2018)", - length: Some(24359), + duration: Some(24359), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/_hGU5DNRC0Y/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDbFqZhyO-NPJkjPW6TQXgRk8oxCQ", @@ -2717,7 +2717,7 @@ Playlist( VideoItem( id: "fr-yiGaRRao", name: "(REBROADCAST) S04 vs. FNC | Finals | EU LCS Summer (2018)", - length: Some(17878), + duration: Some(17878), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/fr-yiGaRRao/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCr3rI-JP9Tb-RvdaWdQJLclNqqlg", @@ -2758,7 +2758,7 @@ Playlist( VideoItem( id: "3kQc5eEJ0ds", name: "EDG vs. JDG | Round 2 | LPL Summer Playoffs | Edward Gaming vs. JD Gaming (2018)", - length: Some(15156), + duration: Some(15156), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/3kQc5eEJ0ds/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAfntTV9t6PHrClBaGgkRT8njyc5g", @@ -2799,7 +2799,7 @@ Playlist( VideoItem( id: "gynnT1i3TsE", name: "RNG vs. TOP | Round 2 | LPL Summer Playoffs | Royal Never Give Up vs. Topsports Gaming (2018)", - length: Some(15850), + duration: Some(15850), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/gynnT1i3TsE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB4sbHCjzLbp9g8FMaBXcmS7o4LIQ", @@ -2840,7 +2840,7 @@ Playlist( VideoItem( id: "YM2XgQ7OGKI", name: "The Dive: Live from Oakland", - length: Some(7420), + duration: Some(7420), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/YM2XgQ7OGKI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD2Je3-9D5WsxKf0xf8RRsv9NkuOw", @@ -2881,7 +2881,7 @@ Playlist( VideoItem( id: "bcJYNWDWCz8", name: "POV Stream | FNC Hylissang | Semifinals | EU LCS Summer Split (2018)", - length: Some(12719), + duration: Some(12719), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/bcJYNWDWCz8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC3zWItAHRbS2Bv2eBS1Y09NJjTnA", @@ -2922,7 +2922,7 @@ Playlist( VideoItem( id: "6J6oBjmjpvA", name: "FPX vs. EDG - SS vs. WE | Week 11 Day 1 | LPL Summer Split (2018)", - length: Some(22136), + duration: Some(22136), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/6J6oBjmjpvA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAvvdBMr-dm-pbsNXulGJCxF04Pbg", @@ -2963,7 +2963,7 @@ Playlist( VideoItem( id: "cgsJ7SsZdxk", name: "(REBROADCAST) G2 vs. MSF | Quarterfinals | EU LCS Summer (2018)", - length: Some(14319), + duration: Some(14319), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/cgsJ7SsZdxk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBrkh6HD3j7H5vxPunSCcS0WvOTZQ", @@ -3004,7 +3004,7 @@ Playlist( VideoItem( id: "T62zlBmloo8", name: "POV Stream | G2 Perkz | Quarterfinals | EU LCS Summer Split (2018)", - length: Some(10294), + duration: Some(10294), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/T62zlBmloo8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDScrnvnLzThZptM9QrTHLBYsq0IQ", @@ -3045,7 +3045,7 @@ Playlist( VideoItem( id: "NOVxAEtu20U", name: "C9A vs. FLYA | Semifinals | NA Academy Summer Split | C9 Academy vs. FLY Academy (2018)", - length: Some(17701), + duration: Some(17701), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/NOVxAEtu20U/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCqHCRMLW7uj1fkMYO9k8-IDWPwIw", @@ -3086,7 +3086,7 @@ Playlist( VideoItem( id: "mKdQQ44oLa0", name: "POV Stream | SPY Odoamne | Quarterfinals | EU LCS Summer Split (2018)", - length: Some(19451), + duration: Some(19451), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/mKdQQ44oLa0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC6Lnf_nAhaOz9TJj-KxQrraulmaA", @@ -3127,7 +3127,7 @@ Playlist( VideoItem( id: "vHZdBkFRD9Q", name: "SNG vs. VG - JDG vs. IG | Week 10 Day 3| LPL Summer Split (2018)", - length: Some(19755), + duration: Some(19755), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/vHZdBkFRD9Q/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDNNAMpIgYAwxP0ys8a5HUtsWePkQ", @@ -3168,7 +3168,7 @@ Playlist( VideoItem( id: "FmaHvMUxWso", name: "GRF vs. AFS | Round 2 | LCK Summer Playoffs | Griffin vs. Afreeca Freecs (2018)", - length: Some(21819), + duration: Some(21819), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/FmaHvMUxWso/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB94OCuz0M4oYxwqOcpUE8pMJTccQ", @@ -3209,7 +3209,7 @@ Playlist( VideoItem( id: "2kGzzR_vlNM", name: "FPX vs. SS | Week 9 Day 5 | LPL Summer Split (2018)", - length: Some(11244), + duration: Some(11244), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/2kGzzR_vlNM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAAS0zYTOjxMj4pWyPrB0lRu-WRuQ", @@ -3250,7 +3250,7 @@ Playlist( VideoItem( id: "GBa3IM39Hyo", name: "NA Academy Summer Split (2018) | Week 2 Day 2", - length: Some(20037), + duration: Some(20037), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/GBa3IM39Hyo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAGkLqe-martteiLTYH57IztUrPEw", @@ -3291,7 +3291,7 @@ Playlist( VideoItem( id: "KwG0hE485_k", name: "POV Stream | S04 Nukeduck | Week 9 | EU LCS Summer Split (2018)", - length: Some(4157), + duration: Some(4157), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/KwG0hE485_k/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD3v3jjPXRiP_LgbL3lvrqe7fbdXg", @@ -3332,7 +3332,7 @@ Playlist( VideoItem( id: "lr31odgHt2c", name: "VG vs. JDG - LGD vs. IG | Week 9 Day 4 | LPL Summer Split (2018)", - length: Some(20601), + duration: Some(20601), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/lr31odgHt2c/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAkoncTBbDMzTsKPPI7577pdDnTtQ", @@ -3373,7 +3373,7 @@ Playlist( VideoItem( id: "YAe0kfvsQGk", name: "CGA vs. FLYA | Quarterfinals Day 1 | NA Academy Summer Split (2018)", - length: Some(23680), + duration: Some(23680), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/YAe0kfvsQGk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDKy96uTs82fVINHZn1V5pzPOTHew", @@ -3414,7 +3414,7 @@ Playlist( VideoItem( id: "Dr9SRrRWPNo", name: "OMG vs. EDG - FPX vs. WE | Week 9 Day 1 | LPL Summer Split (2018)", - length: Some(19018), + duration: Some(19018), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Dr9SRrRWPNo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAaNS5exSDvr234gLv_lEDHP6eRdw", @@ -3455,7 +3455,7 @@ Playlist( VideoItem( id: "Y3pICd8FHFI", name: "POV Stream | G2 Perkz | Week 8 | EU LCS Summer Split (2018)", - length: Some(3184), + duration: Some(3184), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Y3pICd8FHFI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBXEMAoe4Q7djr2gmrfdyEP8aWhZQ", @@ -3496,7 +3496,7 @@ Playlist( VideoItem( id: "YT1vPiTn1eI", name: "TOP vs. FPX - WE vs. EDG - OMG vs. RW | Week 8 Day 5 | LPL Summer Split (2018)", - length: Some(34489), + duration: Some(34489), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/YT1vPiTn1eI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAY9-6hYO652_UWGVrbbvawGa6s9A", @@ -3537,7 +3537,7 @@ Playlist( VideoItem( id: "oGNm5gCCMGY", name: "(REBROADCAST) EU LCS Summer Split (2018) | Week 8 Day 1", - length: Some(24028), + duration: Some(24028), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/oGNm5gCCMGY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBuyX9FnPq3MFfVdcv7njedQiLjlA", @@ -3578,7 +3578,7 @@ Playlist( VideoItem( id: "gbmTaLw-3i0", name: "WE vs. TOP - FPX vs. OMG | Week 8 Day 1 | LPL Summer Split (2018)", - length: Some(19248), + duration: Some(19248), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/gbmTaLw-3i0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAg51LZ1zbbHd9xLxfuEaIGb4ep4g", @@ -3619,7 +3619,7 @@ Playlist( VideoItem( id: "qq_EhiJoQg4", name: "LGD vs. FPX - BLG vs. WE | Week 7 Day 4 | LPL Summer Split (2018)", - length: Some(21853), + duration: Some(21853), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/qq_EhiJoQg4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDZ2CsPgM6kx4qMGSIJJtCsWA8k4A", @@ -3660,7 +3660,7 @@ Playlist( VideoItem( id: "CzczOzdUfIM", name: "HLE vs. MVP - JAG vs. KT | Week 7 Day 3 | LCK Summer Split (2018)", - length: Some(24106), + duration: Some(24106), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/CzczOzdUfIM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCMcLRoEZSzjuKR_TMztpslGTmY_g", @@ -3701,7 +3701,7 @@ Playlist( VideoItem( id: "TbKELxKkiTw", name: "RW vs. EDG | Week 7 Day 4 | LPL Summer Split (2018)", - length: Some(10205), + duration: Some(10205), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/TbKELxKkiTw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBO0bWOdj-TgOb49fRptDZUAJGCww", @@ -3742,7 +3742,7 @@ Playlist( VideoItem( id: "MeDei67Zr4E", name: "BLG vs. FPX - VG vs. RW | Week 7 Day 1 | LPL Summer Split (2018)", - length: Some(18248), + duration: Some(18248), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/MeDei67Zr4E/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAPsnZgv4WAFI_ULwdjXkIgCoskWg", @@ -3783,7 +3783,7 @@ Playlist( VideoItem( id: "sQP1mk4G9mg", name: "NA LCS Summer (2018) | Week 6 Day 2", - length: Some(25630), + duration: Some(25630), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/sQP1mk4G9mg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCFD_l6CcmfulXBzMtQzuc-ZfrfLA", @@ -3824,7 +3824,7 @@ Playlist( VideoItem( id: "RK4olvfXT5g", name: "POV Stream | S04 Nukeduck | Week 6 | EU LCS Summer Split (2018)", - length: Some(3079), + duration: Some(3079), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/RK4olvfXT5g/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBqcBh47BxOEhoECPaePJuIMOLZoQ", @@ -3865,7 +3865,7 @@ Playlist( VideoItem( id: "YexHW88A5Wg", name: "BBQ vs. HLE - JAG vs. SKT | Week 6 Day 4 | LCK Summer Split (2018)", - length: Some(20830), + duration: Some(20830), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/YexHW88A5Wg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLByMY9DN-kTcbtG9BMF4M2S7dI5uQ", @@ -3906,7 +3906,7 @@ Playlist( VideoItem( id: "UvV0Miw17mU", name: "VG vs. FPX - RNG vs. WE | Week 6 Day 4 | LPL Summer Split (2018)", - length: Some(19509), + duration: Some(19509), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/UvV0Miw17mU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAzWkKXl3h0P068_xdkJDfQSglSGw", @@ -3947,7 +3947,7 @@ Playlist( VideoItem( id: "nvCq0PidTB0", name: "KZ vs. KT - GEN vs. GRF | Week 6 Day 3 | LCK Summer Split (2018)", - length: Some(23704), + duration: Some(23704), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/nvCq0PidTB0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAQc8yz7HNxKrg6Vv--W_xzwdfOnw", @@ -3988,7 +3988,7 @@ Playlist( VideoItem( id: "79cK5C6nQbg", name: "POV Stream | FNC Hylissang | Week 5 | EU LCS Summer Split (2018)", - length: Some(2878), + duration: Some(2878), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/79cK5C6nQbg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDMy7RDVDH6joZbXr0ngfi3Wsr_nQ", @@ -4029,7 +4029,7 @@ Playlist( VideoItem( id: "8DYyu2cW-Ok", name: "GRF vs. KT - SKT vs. HLE | Week 5 Day 5 | LCK Summer Split (2018)", - length: Some(23108), + duration: Some(23108), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/8DYyu2cW-Ok/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAZd_smHTzLcvfVkVXiOsKEIpFPuQ", @@ -4070,7 +4070,7 @@ Playlist( VideoItem( id: "pjJwzd06acg", name: "IG vs. TOP - SNG vs. EDG | Week 5 Day 5 | LPL Summer Split (2018)", - length: Some(19864), + duration: Some(19864), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/pjJwzd06acg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAlt220pFX6dtn2MdNi_l8-QG5c6Q", 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 8ae472e..5be597f 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 @@ -11,7 +11,7 @@ Playlist( VideoItem( id: "Bkj3IVIO2Os", name: "Stereoact feat. Kerstin Ott - Die Immer Lacht (Official Video HD)", - length: Some(216), + duration: Some(216), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Bkj3IVIO2Os/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCdvrHLT_gdx5zxxO6SPig0sRLshQ", @@ -52,7 +52,7 @@ Playlist( VideoItem( id: "8rRj5ZXRNko", name: "Uzzah - Faded Love (Official Lyrics Video)", - length: Some(191), + duration: Some(191), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/8rRj5ZXRNko/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-DoACuAiKAgwIABABGGMgYyhjMA8=&rs=AOn4CLBJHMbtsiMa4OaReWs02k9vxDVU5Q", @@ -93,7 +93,7 @@ Playlist( VideoItem( id: "lHZtcC67yrY", name: "Andreas Gabalier - Hulapalu", - length: Some(188), + duration: Some(188), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/lHZtcC67yrY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDEYbpOXNx1VkAE7MDYQxK30ySK3Q", @@ -134,7 +134,7 @@ Playlist( VideoItem( id: "TSkVVVBS9k8", name: "BAUSA - Was du Liebe nennst (Official Music Video) [prod. von Bausa, Jugglerz & The Cratez]", - length: Some(237), + duration: Some(237), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/TSkVVVBS9k8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCHZwNmGrLnYEsd6H7vzVAl0wDccw", @@ -175,7 +175,7 @@ Playlist( VideoItem( id: "lc-cnCRhE7c", name: "Kay One feat. Pietro Lombardi - Señorita (prod. by Stard Ova)", - length: Some(250), + duration: Some(250), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/lc-cnCRhE7c/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAr2qEMqH5qnJkqLU-CRGFgoDN1DQ", @@ -216,7 +216,7 @@ Playlist( VideoItem( id: "3ryohiCVq3M", name: "Namika - Lieblingsmensch (Official Video)", - length: Some(191), + duration: Some(191), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/3ryohiCVq3M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAnminoxsvobc_U0CE2lgZm9_0qeQ", @@ -257,7 +257,7 @@ Playlist( VideoItem( id: "BNHamTwxJ6Q", name: "Roland Kaiser, Maite Kelly - Warum hast du nicht nein gesagt (Club Mix / Videoclip)", - length: Some(217), + duration: Some(217), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/BNHamTwxJ6Q/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA2EhfLWBk74_06c21rrSdz7tOrGQ", @@ -298,7 +298,7 @@ Playlist( VideoItem( id: "5mqelmYUcI0", name: "Kay One - Louis Louis (prod. by Stard Ova)", - length: Some(218), + duration: Some(218), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/5mqelmYUcI0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCwnyUxowXZ244j5y8alOFPC0vX-Q", @@ -339,7 +339,7 @@ Playlist( VideoItem( id: "k9EYjn5f_nE", name: "Andreas Bourani - Auf uns (Official Video)", - length: Some(244), + duration: Some(244), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/k9EYjn5f_nE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCyAbU3awWGYzOrjTrmQbVV7ifNXg", @@ -380,7 +380,7 @@ Playlist( VideoItem( id: "fkMg_X9lHMc", name: "Marteria - Kids (2 Finger an den Kopf) [Offizielles Video]", - length: Some(230), + duration: Some(230), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/fkMg_X9lHMc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC8Ugdq8rK6ypi11IMafwoaTagQ7Q", @@ -421,7 +421,7 @@ Playlist( VideoItem( id: "4wOoLLDXbDY", name: "CRO - Easy (Official Version)", - length: Some(195), + duration: Some(195), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/4wOoLLDXbDY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB8UXJLvwcuTIhh4Vi5GTeC40Up7w", @@ -462,7 +462,7 @@ Playlist( VideoItem( id: "Z_mf9aCHag8", name: "KC Rebell feat. Moé ► BIST DU REAL ◄ [ official Video 4K ] | Dagi Bee", - length: Some(186), + duration: Some(186), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Z_mf9aCHag8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAo2HLlXaCQEKzkHjBVsS0yqDQexQ", @@ -503,7 +503,7 @@ Playlist( VideoItem( id: "cZ58odQo87A", name: "SDP feat. Adel Tawil - Ich will nur dass du weißt", - length: Some(222), + duration: Some(222), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/cZ58odQo87A/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCO8i1BvBLWn_LuKwvOwyZQNWxZgA", @@ -544,7 +544,7 @@ Playlist( VideoItem( id: "1il3RFk5Okw", name: "Mark Forster - Chöre (Willkommen bei den Hartmanns Version)", - length: Some(209), + duration: Some(209), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1il3RFk5Okw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDy8VAlVslYo3IXr7Cier_CGEh3aA", @@ -585,7 +585,7 @@ Playlist( VideoItem( id: "8WQMBv2deYQ", name: "CRO - Traum (Official Version)", - length: Some(219), + duration: Some(219), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/8WQMBv2deYQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCeZJ96xE-bI9aQybOxIbOOZj8W5g", @@ -626,7 +626,7 @@ Playlist( VideoItem( id: "vGrfFzagzHs", name: "CRO - Whatever (Official Version)", - length: Some(207), + duration: Some(207), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/vGrfFzagzHs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD5eTJevRx2iLio640dzb5l5ViNNA", @@ -667,7 +667,7 @@ Playlist( VideoItem( id: "1gDbpWC_9pE", name: "Sarah Connor - Wie schön Du bist (Official Video)", - length: Some(216), + duration: Some(216), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1gDbpWC_9pE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDLRfYnE54l7T8UX4HYeIQqpkQJYw", @@ -708,7 +708,7 @@ Playlist( VideoItem( id: "p-AWcCCbBHw", name: "Nimo - HEUTE MIT MIR (prod. von PzY) [Official 4K Video]", - length: Some(256), + duration: Some(256), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/p-AWcCCbBHw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC7Mf1odYlMKp9fElxeWX5BZ6I-kQ", @@ -749,7 +749,7 @@ Playlist( VideoItem( id: "RPN88D_HjMU", name: "Xavier Naidoo - Ich kenne nichts (Das so schön ist wie du) [Official Video]", - length: Some(332), + duration: Some(332), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/RPN88D_HjMU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDNkYiCJsMDWsLD8SoTG7fGjA2h1A", @@ -790,7 +790,7 @@ Playlist( VideoItem( id: "5PST7Ld4wWU", name: "Max Giesinger - Wenn sie tanzt (Offizielles Video)", - length: Some(225), + duration: Some(225), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/5PST7Ld4wWU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBd_J44LO8vi882xka68dBcawvkFw", @@ -831,7 +831,7 @@ Playlist( VideoItem( id: "opoDBF_b-fg", name: "ALLIGATOAH - WILLST DU (OFFICIAL HD VERSION AGGRO.TV)", - length: Some(307), + duration: Some(307), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/opoDBF_b-fg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAymd4m1ekevbFUIs-zGRuhlpfI-g", @@ -872,7 +872,7 @@ Playlist( VideoItem( id: "AMT9IOyXmBM", name: "SIDO feat. Mark Forster - Einer dieser Steine (Official Video)", - length: Some(258), + duration: Some(258), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/AMT9IOyXmBM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDvYWerCDxj5Xrgz6bz5j0Xr7-YOQ", @@ -913,7 +913,7 @@ Playlist( VideoItem( id: "VP5B1UmgHfc", name: "SDP feat. Sido - Ne Leiche", - length: Some(328), + duration: Some(328), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/VP5B1UmgHfc/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGH8gFCgUMA8=&rs=AOn4CLCteTEN-lCVEO4GSydpfXRPqxFPUw", @@ -954,7 +954,7 @@ Playlist( VideoItem( id: "vcuQpbs0yT0", name: "KURDO - YA SALAM (prod. by Kostas Karagiozidis & Dj Tuneruno )", - length: Some(224), + duration: Some(224), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/vcuQpbs0yT0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCDn8gtSond6Yn5MLlzZDv_IrS-zQ", @@ -995,7 +995,7 @@ Playlist( VideoItem( id: "LeMLVEJLruQ", name: "Gestört aber GeiL feat. Sebastian Hämer - Ich & Du (Official Video HD)", - length: Some(229), + duration: Some(229), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/LeMLVEJLruQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDDKCM7JzUUlgc-EgWM4lOn3g6qLw", @@ -1036,7 +1036,7 @@ Playlist( VideoItem( id: "MtDPKJSsBgc", name: "Mark Forster - Au Revoir (Videoclip) ft. Sido", - length: Some(227), + duration: Some(227), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/MtDPKJSsBgc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDFPEql4pa1PPNZMBCe0ZHR7nfh1g", @@ -1077,7 +1077,7 @@ Playlist( VideoItem( id: "4tDpYxNYqPg", name: "Kerstin Ott - Scheissmelodie (Offizielles Musikvideo)", - length: Some(209), + duration: Some(209), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/4tDpYxNYqPg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBmM1gywMKE8-hbZ42Wdsul8hlleg", @@ -1118,7 +1118,7 @@ Playlist( VideoItem( id: "EkWjaoH7k6w", name: "Adel Tawil - Ist da jemand (Official Video)", - length: Some(251), + duration: Some(251), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/EkWjaoH7k6w/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC4WbamH3V3SpCVPeC4_Rs3v3tF8w", @@ -1159,7 +1159,7 @@ Playlist( VideoItem( id: "tERRFWuYG48", name: "Barfuß Am Klavier - AnnenMayKantereit", - length: Some(202), + duration: Some(202), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/tERRFWuYG48/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCFhWEwvzfax4dm8E1GnztHWxUYuw", @@ -1200,7 +1200,7 @@ Playlist( VideoItem( id: "wCcJuN47UcY", name: "Revolverheld feat. Marta Jandová - Halt Dich an mir fest (Offizielles Musikvideo)", - length: Some(213), + duration: Some(213), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/wCcJuN47UcY/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AHUBoAC4AOKAgwIABABGGUgZShlMA8=&rs=AOn4CLA5LeFhIoLs3UAwKeDVnoLtwo8K5w", @@ -1241,7 +1241,7 @@ Playlist( VideoItem( id: "qdtLCfEcPL4", name: "Peter Fox - Alles neu (offizielles Video)", - length: Some(272), + duration: Some(272), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/qdtLCfEcPL4/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgZShlMA8=&rs=AOn4CLAC0F0ZEumZfz7z85oUCm7c14Ta3A", @@ -1282,7 +1282,7 @@ Playlist( VideoItem( id: "wjXUBG15eZ8", name: "257ers - Holz (Official HD Video)", - length: Some(214), + duration: Some(214), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/wjXUBG15eZ8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAw3Swj8ibFWFcgpsexNE0N_w_BUQ", @@ -1323,7 +1323,7 @@ Playlist( VideoItem( id: "HBjDZMJUduo", name: "Laserkraft 3D - Nein Mann (official Video)", - length: Some(231), + duration: Some(231), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/HBjDZMJUduo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCOR8giEhNzblFrPfgfUqwQ2UEy7g", @@ -1364,7 +1364,7 @@ Playlist( VideoItem( id: "xkXQQ0IAbk0", name: "MIAMI YACINE - BON VOYAGE prod. by AriBeatz (Official 4K Video)", - length: Some(159), + duration: Some(159), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/xkXQQ0IAbk0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAoi1jtQunAO2qbyn9GXNcSrgSEPg", @@ -1405,7 +1405,7 @@ Playlist( VideoItem( id: "DraA3PUuoQc", name: "Pocahontas - AnnenMayKantereit", - length: Some(192), + duration: Some(192), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/DraA3PUuoQc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDq-oBTOdVzgce4FdS5tHTBe3eKlA", @@ -1446,7 +1446,7 @@ Playlist( VideoItem( id: "wMIGQp4YhuU", name: "Xavier Naidoo - Alles kann besser werden [Official Video]", - length: Some(269), + duration: Some(269), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/wMIGQp4YhuU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAXuvRD27RqHtAyFm48dMnsYrUlbg", @@ -1487,7 +1487,7 @@ Playlist( VideoItem( id: "38lrK74voaI", name: "Olexesh - MAGISCH feat. Edin (prod. von PzY) [Official 4K Video]", - length: Some(270), + duration: Some(270), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/38lrK74voaI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAVoqbTLnv6uPAj7t0HrAn5GAK_Jg", @@ -1528,7 +1528,7 @@ Playlist( VideoItem( id: "2qW9rOSFF1M", name: "BONEZ MC & RAF CAMORA - AN IHNEN VORBEI", - length: Some(220), + duration: Some(220), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/2qW9rOSFF1M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCLHCbKTgchLUipdthOFsHIMos8eA", @@ -1569,7 +1569,7 @@ Playlist( VideoItem( id: "tMILH6UEfPA", name: "Veysel - Kleiner Cabrón (OFFICIAL HD VIDEO) prod. by Macloud", - length: Some(213), + duration: Some(213), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/tMILH6UEfPA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBTUsW-P8-fIzLCRb-Xt-2Ky4I58w", @@ -1610,7 +1610,7 @@ Playlist( VideoItem( id: "izHB2EdMngg", name: "Vanessa Mai - Ich sterb für dich (Official Video)", - length: Some(190), + duration: Some(190), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/izHB2EdMngg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC5CFXBJ0W9DQQZ_tiM6gP12e1aug", @@ -1651,7 +1651,7 @@ Playlist( VideoItem( id: "haECT-SerHk", name: "Helene Fischer - Atemlos durch die Nacht", - length: Some(219), + duration: Some(219), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/haECT-SerHk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB5wAkVuIyWU6lEavR0LDUJ-e9G_w", @@ -1692,7 +1692,7 @@ Playlist( VideoItem( id: "cVikZ8Oe_XA", name: "Falco - Rock Me Amadeus (Official Video)", - length: Some(225), + duration: Some(225), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/cVikZ8Oe_XA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBRKYqET6zOciMAnASNDuj_vEWhHA", @@ -1733,7 +1733,7 @@ Playlist( VideoItem( id: "drFsXLChrWc", name: "257ers - Holland (Official HD Video)", - length: Some(213), + duration: Some(213), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/drFsXLChrWc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDHzQXboNJT9agtNoiAYeGBQT7u9Q", @@ -1774,7 +1774,7 @@ Playlist( VideoItem( id: "1EMFt7m_8yE", name: "SDP - Ich muss immer an dich denken", - length: Some(217), + duration: Some(217), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1EMFt7m_8yE/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGH8gUygTMA8=&rs=AOn4CLBOV1cHPcLmIF0gKSmu5j1RZ9XTtg", @@ -1815,7 +1815,7 @@ Playlist( VideoItem( id: "_yWU0lFghxU", name: "Seeed - Ding (official Video)", - length: Some(211), + duration: Some(211), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/_yWU0lFghxU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBo9Yn5w6pbo5JylVv3XuhFvz_-jw", @@ -1856,7 +1856,7 @@ Playlist( VideoItem( id: "XlD-LO3ogFM", name: "Mark Forster - Wir sind groß (Lyric Video)", - length: Some(204), + duration: Some(204), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/XlD-LO3ogFM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDtxcZ0KznZi1B8TC_zDO4EAhSi2w", @@ -1897,7 +1897,7 @@ Playlist( VideoItem( id: "nAzjWqNfgvc", name: "Gestört aber GeiL & Koby Funk feat. Wincent Weiss - Unter Meiner Haut (Official Video HD)", - length: Some(218), + duration: Some(218), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/nAzjWqNfgvc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAn2zwZvNQZDxYyEakap6O-qscr_w", @@ -1938,7 +1938,7 @@ Playlist( VideoItem( id: "PySC3RGhZJU", name: "CRO - Bad Chick (Official Version)", - length: Some(218), + duration: Some(218), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/PySC3RGhZJU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDNUnL8j0tGJ2fsmqLaE7WMEkYToQ", @@ -1979,7 +1979,7 @@ Playlist( VideoItem( id: "G-iwLoyH6ZE", name: "CAPITAL BRA - NUR NOCH GUCCI (prod. The Cratez x Hoodboyz)", - length: Some(232), + duration: Some(232), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/G-iwLoyH6ZE/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgZShlMA8=&rs=AOn4CLBIe3Gr5VkhHVW2-vmSh7khbpWVUA", @@ -2020,7 +2020,7 @@ Playlist( VideoItem( id: "fgCOUO-s8nY", name: "Jupiter Jones - Still (Videoclip)", - length: Some(238), + duration: Some(238), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/fgCOUO-s8nY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC0_6dsucrR1b1SFRH3mWIW4aG2MA", @@ -2061,7 +2061,7 @@ Playlist( VideoItem( id: "m-Ik3yy728Y", name: "Andreas Bourani - Auf anderen Wegen (Official Video)", - length: Some(245), + duration: Some(245), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/m-Ik3yy728Y/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBdf4h8llXdfJ-OKgHzWj3IOWlnYQ", @@ -2102,7 +2102,7 @@ Playlist( VideoItem( id: "U0_UYW5Y4cM", name: "Andreas Gabalier - I sing a Liad für Di", - length: Some(188), + duration: Some(188), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/U0_UYW5Y4cM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBl8yQKNQcbq4noIXXbagrBI2cuzA", @@ -2143,7 +2143,7 @@ Playlist( VideoItem( id: "rsrDYTEicq8", name: "RAF CAMORA - Primo (prod. X-Plosive & RAF Camora)", - length: Some(214), + duration: Some(214), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/rsrDYTEicq8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAUWuhlHy43NeJWne-7SoaXRm_ctw", @@ -2184,7 +2184,7 @@ Playlist( VideoItem( id: "2aU4wRgl_0E", name: "Ufo361 - \"Nice Girl 2.0\" (prod. von AT Beatz) [Official HD Video]", - length: Some(169), + duration: Some(169), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/2aU4wRgl_0E/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGHIgYigvMA8=&rs=AOn4CLBj0RHC0Whmrzg2QyLRXziGny_rNg", @@ -2225,7 +2225,7 @@ Playlist( VideoItem( id: "FzcJxJAxFtw", name: "VEYSEL & MOZZIK - TI AMO (OFFICIAL VIDEO)", - length: Some(267), + duration: Some(267), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/FzcJxJAxFtw/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGEcgZChlMA8=&rs=AOn4CLAyzFFm0iraqh04myGY7Iwdjaz1Dg", @@ -2266,7 +2266,7 @@ Playlist( VideoItem( id: "2hyibXdOp5w", name: "XAVAS (Xavier Naidoo & Kool Savas) \"Schau nicht mehr zurück\" (Official HD Video 2012)", - length: Some(234), + duration: Some(234), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/2hyibXdOp5w/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAd-py6tq-UGFdYc5FqW5ljYJ8HKw", @@ -2307,7 +2307,7 @@ Playlist( VideoItem( id: "YaKG5cUVB30", name: "Ali Bumaye - Sex ohne Grund feat. Shindy", - length: Some(166), + duration: Some(166), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/YaKG5cUVB30/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGDYgVih_MA8=&rs=AOn4CLB1So27J3KTakO1MV-OkY7KlGu7oQ", @@ -2348,7 +2348,7 @@ Playlist( VideoItem( id: "Ahwc-ouFeTQ", name: "ALLIGATOAH - Willst Du (OFFICIAL VIDEO) \'Triebwerke\' Album (HITBOX)", - length: Some(224), + duration: Some(224), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Ahwc-ouFeTQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCO4zch0lItASVd_nSl1E2_GBr1QQ", @@ -2389,7 +2389,7 @@ Playlist( VideoItem( id: "SoImFhORKpg", name: "Bonez MC & RAF Camora feat. Gzuz & Maxwell - Kontrollieren (prod. by Beataura & RAF Camora)", - length: Some(232), + duration: Some(232), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/SoImFhORKpg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDRnP4vZtk2hUwHQ_hDsfN3iDMe9Q", @@ -2430,7 +2430,7 @@ Playlist( VideoItem( id: "jP4-XrbGt3M", name: "Mark Forster - Sowieso (Official Video)", - length: Some(161), + duration: Some(161), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/jP4-XrbGt3M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAzLDUfpE6upRMnrDEqvp2BZrtCkw", @@ -2471,7 +2471,7 @@ Playlist( VideoItem( id: "Yy2RsG4lnm4", name: "Anna-Maria Zimmermann - 1000 Träume weit (Tornero)", - length: Some(254), + duration: Some(254), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Yy2RsG4lnm4/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgWChSMA8=&rs=AOn4CLCxUywS0PujveirI2Ge3MGi_Omlfw", @@ -2512,7 +2512,7 @@ Playlist( VideoItem( id: "388e_8mu1t4", name: "SDP feat. Sido - Die Nacht von Freitag auf Montag", - length: Some(241), + duration: Some(241), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/388e_8mu1t4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC1op5KQFtiQ3GJv_yt8lcCojrRWw", @@ -2553,7 +2553,7 @@ Playlist( VideoItem( id: "dHHtPi-j7dQ", name: "Wolkenfrei - Wolke 7 (Offizielles Video)", - length: Some(239), + duration: Some(239), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/dHHtPi-j7dQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCZKYNdCzFGKh8z1XPSXT42h8EegQ", @@ -2594,7 +2594,7 @@ Playlist( VideoItem( id: "d8ERTCVXIUE", name: "Ali As feat. Namika – Lass sie tanzen (Square Dance) // prod. ELI", - length: Some(251), + duration: Some(251), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/d8ERTCVXIUE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDRc1pnQEIAdibeOsDU5HUkjq6tEw", @@ -2635,7 +2635,7 @@ Playlist( VideoItem( id: "vQXn3EzzYY4", name: "Frei.Wild - Weil Du mich nur verarscht hast (2011) [Offizieller Videoclip]", - length: Some(208), + duration: Some(208), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/vQXn3EzzYY4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCqfVJX6ABnvqJSkj7Hyw6f4rV2TA", @@ -2676,7 +2676,7 @@ Playlist( VideoItem( id: "zA-BTpC-yvI", name: "AZET feat. RAF CAMORA - QA BONE (Official Audio)", - length: Some(202), + duration: Some(202), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/zA-BTpC-yvI/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGE4gXChlMA8=&rs=AOn4CLBkH-lnzH83AI28xUBWA-ELuE28QQ", @@ -2717,7 +2717,7 @@ Playlist( VideoItem( id: "rnzIN9H_G10", name: "LEA - Leiser (Pseudo Video)", - length: Some(209), + duration: Some(209), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/rnzIN9H_G10/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA2pFb14I8adKkilycBZCpcF0j5xQ", @@ -2758,7 +2758,7 @@ Playlist( VideoItem( id: "fcBbT1GTxqM", name: "Kay One - Ich brech die Herzen", - length: Some(229), + duration: Some(229), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/fcBbT1GTxqM/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-BIAC6AKKAgwIABABGH8gFSgxMA8=&rs=AOn4CLC0M2hJ0_SW5zjBuLh8h96RKHuBvQ", @@ -2799,7 +2799,7 @@ Playlist( VideoItem( id: "wCDsm_dt1cI", name: "KLUBBB3 - Du schaffst das schon (Offizielles Video)", - length: Some(190), + duration: Some(190), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/wCDsm_dt1cI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCJisdr1A-P-lXCyrM0RoJRUyPDAQ", @@ -2840,7 +2840,7 @@ Playlist( VideoItem( id: "4j3AOJV1J8I", name: "23 - Bushido & Sido feat. Peter Maffay - Erwachsen sein", - length: Some(218), + duration: Some(218), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/4j3AOJV1J8I/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBt7kmNDbeo0vtVApiHs2J5zMaylg", @@ -2881,7 +2881,7 @@ Playlist( VideoItem( id: "RtuW08ZIgvg", name: "Söhne Mannheims - Und wenn ein Lied [Official Video]", - length: Some(249), + duration: Some(249), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/RtuW08ZIgvg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDM7u-sy9EvIS8VMTjJ9cLcM47zQA", @@ -2922,7 +2922,7 @@ Playlist( VideoItem( id: "cbTXqKBIQ40", name: "Philipp Poisel - Eiserner Steg (Klavier Version) - Offizielles Video", - length: Some(250), + duration: Some(250), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/cbTXqKBIQ40/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AHUBoAC4AOKAgwIABABGGUgXihUMA8=&rs=AOn4CLAF0HVb8hFfclGtL2LXX-kBxl50Nw", @@ -2963,7 +2963,7 @@ Playlist( VideoItem( id: "oSd0Lph4luY", name: "MIKE SINGER - DEJA VU (Offizielles Video)", - length: Some(229), + duration: Some(229), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/oSd0Lph4luY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDUSdlW64Vrr23hmhIBXoXWA5UuhQ", @@ -3004,7 +3004,7 @@ Playlist( VideoItem( id: "oq0rrYrufYU", name: "JORIS - Herz über Kopf (Official Video)", - length: Some(209), + duration: Some(209), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/oq0rrYrufYU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBYbbtDe_9DmmmA3qpRrk3NphV69Q", @@ -3045,7 +3045,7 @@ Playlist( VideoItem( id: "0-P_YkS0z8s", name: "KC Rebell feat. Summer Cem ► AUGENBLICK ◄ [ official Video ] 4K", - length: Some(208), + duration: Some(208), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/0-P_YkS0z8s/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBo7ZebER3EyU-cxcGJKMYdTZqVXA", @@ -3086,7 +3086,7 @@ Playlist( VideoItem( id: "4BAKb2p450Q", name: "Tim Bendzko - Nur Noch Kurz Die Welt Retten (Offizielles Video)", - length: Some(191), + duration: Some(191), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/4BAKb2p450Q/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-DoACuAiKAgwIABABGGUgXChJMA8=&rs=AOn4CLBQz7BrG-FtU-G_9vRd8aUdskRrVQ", @@ -3127,7 +3127,7 @@ Playlist( VideoItem( id: "yqObMM_QzVQ", name: "Casper - Im Ascheregen", - length: Some(303), + duration: Some(303), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/yqObMM_QzVQ/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGEsgZShZMA8=&rs=AOn4CLBoJTeRO6ARhLifQ_JSzkMpJsbfXA", @@ -3168,7 +3168,7 @@ Playlist( VideoItem( id: "dlvStoOyEzE", name: "Alligatoah - Du bist schön (Official Video)", - length: Some(246), + duration: Some(246), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/dlvStoOyEzE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCfTATo6sXEoKHxikJD9t9Hg3E01g", @@ -3209,7 +3209,7 @@ Playlist( VideoItem( id: "VNttGAaek2U", name: "Revolverheld - Lass Uns Gehen (Offizielles Musikvideo)", - length: Some(214), + duration: Some(214), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/VNttGAaek2U/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCwcuHMTixpi0vJg-4G20w5fbqI4w", @@ -3250,7 +3250,7 @@ Playlist( VideoItem( id: "TxZMfufRJfo", name: "Oft Gefragt - AnnenMayKantereit (Official Video)", - length: Some(189), + duration: Some(189), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/TxZMfufRJfo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBhWEPjvLiv1Khiuod09arTjc8g7A", @@ -3291,7 +3291,7 @@ Playlist( VideoItem( id: "6agT2asF4as", name: "CAPO - MON CHÉRI ft. NIMO (prod. von Zeeko & Veteran) [Official Audio]", - length: Some(230), + duration: Some(230), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/6agT2asF4as/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGH8gGyhXMA8=&rs=AOn4CLBJHfWuSafCA1Ps5tkucBNXDZ47SQ", @@ -3332,7 +3332,7 @@ Playlist( VideoItem( id: "EcW0n83La5A", name: "DIE LOCHIS - LIEBLINGSLIED (Offizielles Video) | BEREIT FÜR @YouAreHero ?", - length: Some(212), + duration: Some(212), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/EcW0n83La5A/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDfc1-Y5K_6Jjjs4e7wJRasjkAvqg", @@ -3373,7 +3373,7 @@ Playlist( VideoItem( id: "_b61hg8UlZM", name: "CAPO – Lambo Diablo GT feat. Nimo (prod. Von SOTT & Veteran & Zeeko) [Official Audio]", - length: Some(285), + duration: Some(285), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/_b61hg8UlZM/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGH8gEygWMA8=&rs=AOn4CLDKZqTZ1RolhUZ6N1TBH_xHISnWGg", @@ -3414,7 +3414,7 @@ Playlist( VideoItem( id: "kDMFranvFuQ", name: "Joel Brandenstein - Diese Liebe (Offizielles Musikvideo)", - length: Some(359), + duration: Some(359), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/kDMFranvFuQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBVFYsYNdvEy9fuONolAtBkZRvc9A", @@ -3455,7 +3455,7 @@ Playlist( VideoItem( id: "1apku0pVDeE", name: "Wincent Weiss - Feuerwerk (Official Video)", - length: Some(213), + duration: Some(213), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1apku0pVDeE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAgkN2roTs3SdVc46CRRd4BIi4k7Q", @@ -3496,7 +3496,7 @@ Playlist( VideoItem( id: "g6JYzOjglBs", name: "Seeed - Aufstehn (official Video)", - length: Some(231), + duration: Some(231), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/g6JYzOjglBs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCkmBTXk2YaRyjaTgjq4bwcpzWWGA", @@ -3537,7 +3537,7 @@ Playlist( VideoItem( id: "GYK-NfOo7b4", name: "Seeed - Dickes B (official Video)", - length: Some(240), + duration: Some(240), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/GYK-NfOo7b4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAavUCF3vlRnCAL2QsfDgMOh5aHaQ", @@ -3578,7 +3578,7 @@ Playlist( VideoItem( id: "omUuR45iU0g", name: "KC Rebell feat. Summer Cem: \"HAYVAN\" [official Video]", - length: Some(291), + duration: Some(291), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/omUuR45iU0g/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBNyuNT14kxJH-TQe-PUes0vkP2bw", @@ -3619,7 +3619,7 @@ Playlist( VideoItem( id: "w7BE3inS-NM", name: "Adel Tawil - Bis hier und noch weiter (Official Video) ft. KC Rebell, Summer Cem", - length: Some(228), + duration: Some(228), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/w7BE3inS-NM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAe887jFMndrO7vV9mifoa6a1Ectg", @@ -3660,7 +3660,7 @@ Playlist( VideoItem( id: "FM-5BPMnhm0", name: "SDP feat. Weekend - Tanz aus der Reihe!", - length: Some(234), + duration: Some(234), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/FM-5BPMnhm0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBUFO3IacA956tmnSO4Tkq_5bJJDg", @@ -3701,7 +3701,7 @@ Playlist( VideoItem( id: "MnNZNfixTOw", name: "Philipp Poisel - Wie soll ein Mensch das ertragen", - length: Some(278), + duration: Some(278), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/MnNZNfixTOw/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AHUBoAC4AOKAgwIABABGGUgWShHMA8=&rs=AOn4CLCuEjvonMHcDqcShO6UJbDrzshyDg", @@ -3742,7 +3742,7 @@ Playlist( VideoItem( id: "qe80EeU8cT8", name: "Xavier Naidoo - Wann (feat. Cassandra Steen) [Official Video]", - length: Some(327), + duration: Some(327), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/qe80EeU8cT8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLATTKLPexjqGruzgsU7M3Kldk0J2w", @@ -3783,7 +3783,7 @@ Playlist( VideoItem( id: "-s2-6KYgqpQ", name: "Alligatoah - Narben (Official Video)", - length: Some(264), + duration: Some(264), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/-s2-6KYgqpQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDWniVg-b300HVTRYrQGrrSK1G8uw", @@ -3824,7 +3824,7 @@ Playlist( VideoItem( id: "RSlp874hESE", name: "Kollegah & Farid Bang - \"ZIEH DEN RUCKSACK AUS\" [ official Video ]", - length: Some(162), + duration: Some(162), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/RSlp874hESE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAU7YZ5dh9VaC9R5wfTKYMChxTplQ", @@ -3865,7 +3865,7 @@ Playlist( VideoItem( id: "oTI3tRQ_-3k", name: "SDP - Wenn ich groß bin", - length: Some(225), + duration: Some(225), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/oTI3tRQ_-3k/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDkk0a9nwy9qYSc-V0ZRSIGS_Wttg", @@ -3906,7 +3906,7 @@ Playlist( VideoItem( id: "_okA84gaEJw", name: "SXTN - Von Party zu Party (Official Video)", - length: Some(221), + duration: Some(221), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/_okA84gaEJw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDA6bykIGVF3WqUx3emOpgnuapb0w", @@ -3947,7 +3947,7 @@ Playlist( VideoItem( id: "pLHnnJRaP7Q", name: "House Rockerz - HerzRasen (Official Video HD)", - length: Some(207), + duration: Some(207), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/pLHnnJRaP7Q/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDFElTxgC4PWAel2yN43ku_gWpLtw", @@ -3988,7 +3988,7 @@ Playlist( VideoItem( id: "H2hGrsExuyc", name: "GZUZ \"Was Hast Du Gedacht\" (WSHH Exclusive - Official Music Video)", - length: Some(188), + duration: Some(188), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/H2hGrsExuyc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB_OAq5Mb2xjIZW5dNyKZRWJ7PLsA", @@ -4029,7 +4029,7 @@ Playlist( VideoItem( id: "RsZvjqG2lec", name: "Tim Bendzko - Wenn Worte meine Sprache wären (Offizielles Video)", - length: Some(196), + duration: Some(196), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/RsZvjqG2lec/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBh5wlp7smaJJU4TQy1iKD1U2sqQQ", @@ -4070,7 +4070,7 @@ Playlist( VideoItem( id: "qYRCiQ6d35w", name: "BONEZ MC & RAF CAMORA feat GZUZ - MÖRDER", - length: Some(240), + duration: Some(240), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/qYRCiQ6d35w/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgWShVMA8=&rs=AOn4CLC2U3dzqvzsZhxZKif1rwtE6vQ8Vg", 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 a2587f1..310c3cd 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 @@ -11,7 +11,7 @@ Playlist( VideoItem( id: "X82TrticM4A", name: "Minecraft SHINE (Trailer)", - length: Some(80), + duration: Some(80), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/X82TrticM4A/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDaqqikBYqqsuVR1SPVW1HPS7a0sA", @@ -52,7 +52,7 @@ Playlist( VideoItem( id: "RPGLMuxkLCs", name: "DAS LAGERFEUERLIED - Minecraft SHINE #001 [Deutsch/HD]", - length: Some(1356), + duration: Some(1356), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/RPGLMuxkLCs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCLYpK285ZyD2y-ipNU2fC_HzhiRg", @@ -93,7 +93,7 @@ Playlist( VideoItem( id: "z-ALpnnQLrk", name: "MAGISCHES FURZMONSTER - Minecraft SHINE #002 [Deutsch/HD]", - length: Some(1039), + duration: Some(1039), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/z-ALpnnQLrk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBLDDABxzfLeE-dQaBBNKG0CJdOWw", @@ -134,7 +134,7 @@ Playlist( VideoItem( id: "_rrbTTv8zcQ", name: "UNTERIRDISCHE RIESENPILZHÖHLEN - Minecraft SHINE #003 [Deutsch/HD]", - length: Some(1447), + duration: Some(1447), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/_rrbTTv8zcQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD0Br8sAmhv9UlFtwHaK6y3PlxIpQ", @@ -175,7 +175,7 @@ Playlist( VideoItem( id: "JE16OKTawLw", name: "BESTE AXT IM SPIEL GEFUNDEN?! - Minecraft SHINE #004 [Deutsch/HD]", - length: Some(1238), + duration: Some(1238), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/JE16OKTawLw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDRk4X8dtihNq68ay7rpARzN9peiQ", @@ -216,7 +216,7 @@ Playlist( VideoItem( id: "RQNY0Wzm7DQ", name: "ERZERAUSCH IM MINENSCHACHT - Minecraft SHINE #005 [Deutsch/HD]", - length: Some(1405), + duration: Some(1405), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/RQNY0Wzm7DQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDMKr2vJvhKw6bxFVsgfR9p5kRuCQ", @@ -257,7 +257,7 @@ Playlist( VideoItem( id: "uhy24PKBkd0", name: "FUSIONSOFEN & ERSTER IM NETHER?! - Minecraft SHINE #006 [Deutsch/HD]", - length: Some(1569), + duration: Some(1569), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/uhy24PKBkd0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA-pynU_AAsgCDh38L8QmHXXryZfg", @@ -298,7 +298,7 @@ Playlist( VideoItem( id: "OL1hQadBHfs", name: "EPISCHER ROGUEDUNGEON - Minecraft SHINE #007 [Deutsch/HD]", - length: Some(1534), + duration: Some(1534), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/OL1hQadBHfs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBeyicluHNPCNdAKEUTLrHE9Rfmtg", @@ -339,7 +339,7 @@ Playlist( VideoItem( id: "Zge_SUfk0r8", name: "DIAMANTZOMBIES auf NETHEREBENE - Minecraft SHINE #008 [Deutsch/HD]", - length: Some(1726), + duration: Some(1726), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Zge_SUfk0r8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD9jHtok-baqRLQPZowWsXeVQBA6Q", @@ -380,7 +380,7 @@ Playlist( VideoItem( id: "yFGIeU_IDE4", name: "HÖLLISCHE SCHLACHT um 2 DIAMANTBLÖCKE - Minecraft SHINE #009 [Deutsch/HD]", - length: Some(1669), + duration: Some(1669), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/yFGIeU_IDE4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCx02JGJneEQtn_YD7K8KOt3vC26w", @@ -421,7 +421,7 @@ Playlist( VideoItem( id: "P6MVqfQzPIg", name: "MAGISCHER OBSIDIANTOTEM?! - Minecraft SHINE #010 [Deutsch/HD]", - length: Some(1526), + duration: Some(1526), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/P6MVqfQzPIg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCLRzxVNwZaMeOU1ls17wlYDsnvZA", @@ -462,7 +462,7 @@ Playlist( VideoItem( id: "9n0pLDn8Z_I", name: "GRÜNER FEUEROGER & WITHERWARZEN - Minecraft SHINE #011 [Deutsch/HD]", - length: Some(1482), + duration: Some(1482), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/9n0pLDn8Z_I/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBq9_4Ov8kvuTP3uuI7ie8kSCySyw", @@ -503,7 +503,7 @@ Playlist( VideoItem( id: "oXbx2YtIkeQ", name: "MYSTERIÖSES Grab & ONYX ohne ENDE!! - Minecraft SHINE #012 [Deutsch/HD]", - length: Some(1518), + duration: Some(1518), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/oXbx2YtIkeQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBaTkueS0xkMnM6mdCK7vVmH0C-XQ", @@ -544,7 +544,7 @@ Playlist( VideoItem( id: "pfBBTTwxo8Q", name: "ATLANTIS ENTDECKT!! - Minecraft SHINE #013 [Deutsch/HD]", - length: Some(1479), + duration: Some(1479), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/pfBBTTwxo8Q/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCAyzmwdAwcL_ryhGWUi1AB59h8lA", @@ -585,7 +585,7 @@ Playlist( VideoItem( id: "WxtRqzxSAh0", name: "ZUSAMMENFASSUNG & Nodop\'s ANGRIFF - Minecraft SHINE #014 [Deutsch/HD]", - length: Some(1902), + duration: Some(1902), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/WxtRqzxSAh0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBqT5FSFwps0oUUjwVYqrDMYhC5Nw", @@ -626,7 +626,7 @@ Playlist( VideoItem( id: "ianUckvxtLw", name: "FRIEDHOFDUNGEON mit NODÖPCHEN - Minecraft SHINE #016 [Deutsch/HD]", - length: Some(1766), + duration: Some(1766), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ianUckvxtLw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBIR3LJOBV1CWi3qKugn4d_x8lAEg", @@ -667,7 +667,7 @@ Playlist( VideoItem( id: "eb2Ghj1g1ic", name: "Die BESTE FALLE aller ZEITEN!! - Minecraft SHINE #015 [Deutsch/HD]", - length: Some(1324), + duration: Some(1324), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/eb2Ghj1g1ic/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDiXr6emf5xDnVWPBJvi3lVWa_Khg", @@ -708,7 +708,7 @@ Playlist( VideoItem( id: "8TpEsyVtCog", name: "MEGAGEMETZEL zu FÜNFT - Minecraft SHINE #017 [Deutsch/HD]", - length: Some(1629), + duration: Some(1629), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/8TpEsyVtCog/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAclomWqvh1OIkMf0TxPEhjNVrSNQ", @@ -749,7 +749,7 @@ Playlist( VideoItem( id: "KD_WAei4LMg", name: "WITHER BOSSFIGHT - Minecraft SHINE #018 [Deutsch/HD]", - length: Some(1645), + duration: Some(1645), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/KD_WAei4LMg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAEQDBO22V46yEk4yBwkE0IuVjEVA", @@ -790,7 +790,7 @@ Playlist( VideoItem( id: "qfpOCrtweKk", name: "LABERSTUNDE mit ArazhulHD - Minecraft SHINE #019 [Deutsch/HD]", - length: Some(1052), + duration: Some(1052), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/qfpOCrtweKk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC9xRR01wPaSTq0vL4_L6G-CS5KVw", @@ -831,7 +831,7 @@ Playlist( VideoItem( id: "6gv3nrOA_bQ", name: "BUSRITUALE & Seltsame LEHRER - Minecraft SHINE #021 [Deutsch/HD]", - length: Some(1769), + duration: Some(1769), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/6gv3nrOA_bQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB43mXOVwQ4mRzqakDHn0kHKoY0qA", @@ -872,7 +872,7 @@ Playlist( VideoItem( id: "waaic6UnkU8", name: "LEHM, LEHM und mehr LEEEHM!! - Minecraft SHINE #022 [Deutsch/HD]", - length: Some(1081), + duration: Some(1081), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/waaic6UnkU8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC1k7ynTJNnCRrfImHqEBaTTi85Kw", @@ -913,7 +913,7 @@ Playlist( VideoItem( id: "lSy4MLC_uV4", name: "Neue DIMENSIONEN?? - Minecraft SHINE #023 [Deutsch/HD]", - length: Some(1682), + duration: Some(1682), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/lSy4MLC_uV4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB2wug5u6lgdChlnqxRHcqFN7l0LA", @@ -954,7 +954,7 @@ Playlist( VideoItem( id: "BuN8-U_quok", name: "DUNGEONSTATUEN - Minecraft SHINE #024 [Deutsch/HD]", - length: Some(1597), + duration: Some(1597), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/BuN8-U_quok/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAJe8jzy_ccxC-Z-k4-rVVTLT4HOw", @@ -995,7 +995,7 @@ Playlist( VideoItem( id: "g_UTG10nzaQ", name: "THYRIUMBOGEN & Dimensional DOORS - Minecraft SHINE #025 [Deutsch/HD]", - length: Some(1852), + duration: Some(1852), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/g_UTG10nzaQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB90DMVKNRWSPO51zupoYxPoFmI8Q", @@ -1036,7 +1036,7 @@ Playlist( VideoItem( id: "kNykFWaDbGw", name: "MEIN ERSTER PVP KILL?! - Minecraft SHINE #026 [Deutsch/HD]", - length: Some(1869), + duration: Some(1869), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/kNykFWaDbGw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA9gJtMx-vjG3LDYC6Mog9JJ62EYw", @@ -1077,7 +1077,7 @@ Playlist( VideoItem( id: "gJF7vxCYTgY", name: "SPELLBOUND FARM - Minecraft SHINE #027 [Deutsch/HD]", - length: Some(2161), + duration: Some(2161), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/gJF7vxCYTgY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBKzKHEYjsk4GnAxw1jhzHI_opNEQ", @@ -1118,7 +1118,7 @@ Playlist( VideoItem( id: "CodZMQ_Anc0", name: "VIEEELE bunte ZAUBERPILZE - Minecraft SHINE #028 [Deutsch/HD]", - length: Some(1768), + duration: Some(1768), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/CodZMQ_Anc0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDNdgtoMcy-lYPmsnYVOcxJnCck8g", @@ -1159,7 +1159,7 @@ Playlist( VideoItem( id: "oKHMTKJdZ_M", name: "STREAMUPDATE & BIOMREISE - Minecraft SHINE #029 [Deutsch/HD]", - length: Some(1771), + duration: Some(1771), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/oKHMTKJdZ_M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDlNghAFoCRrLzfippQtyfBiDtG-A", @@ -1200,7 +1200,7 @@ Playlist( VideoItem( id: "--O_Eyok_eE", name: "AUF NACH TROPICRAFT - Minecraft SHINE #030 [Deutsch/HD]", - length: Some(1661), + duration: Some(1661), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/--O_Eyok_eE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAjgm528b0H8-NGsHGFQSh0AA4GVw", @@ -1241,7 +1241,7 @@ Playlist( VideoItem( id: "2bT3ljKMSo8", name: "SCHATZTRUHE GEFUNDEN!! - Minecraft SHINE #031 [Deutsch/HD]", - length: Some(1429), + duration: Some(1429), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/2bT3ljKMSo8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC_TanSk3-kj26i-m-433iBP893TA", @@ -1282,7 +1282,7 @@ Playlist( VideoItem( id: "YRAX_slrbsI", name: "ZAUBERWALD und TROPISCHER DSCHUNGEL - Minecraft SHINE #032 [Deutsch/HD]", - length: Some(1257), + duration: Some(1257), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/YRAX_slrbsI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCQenXFcDnthdi95vSgMUNontlYhA", @@ -1323,7 +1323,7 @@ Playlist( VideoItem( id: "aRRbCEwUSuw", name: "MESABIOM & JOUSTS - Minecraft SHINE #033 [Deutsch/HD]", - length: Some(1131), + duration: Some(1131), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/aRRbCEwUSuw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDxqJBg6ejA-m-emBnzhKuSw7PH0w", @@ -1364,7 +1364,7 @@ Playlist( VideoItem( id: "5sV8SzTbJS8", name: "Komplette SMELTERY GEFUNDEN!! - Minecraft SHINE #034 [Deutsch/HD]", - length: Some(1405), + duration: Some(1405), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/5sV8SzTbJS8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCQvHJJ0CEAzp9ZOT2Wt84vEFNg8A", @@ -1405,7 +1405,7 @@ Playlist( VideoItem( id: "ZxxZlU2o1TE", name: "ROGUEDUNGEON EXTREME - Minecraft SHINE #035 [Deutsch/HD]", - length: Some(1555), + duration: Some(1555), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ZxxZlU2o1TE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD5Ol6GW-ybn_4pkMWAKhy0ALAMXA", @@ -1446,7 +1446,7 @@ Playlist( VideoItem( id: "gIjo5at4AxE", name: "LEGENDÄRER LOOT - Minecraft SHINE #036 [Deutsch/HD]", - length: Some(1405), + duration: Some(1405), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/gIjo5at4AxE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCBinkghbbcWN5isNzwxekTYfpABQ", @@ -1487,7 +1487,7 @@ Playlist( VideoItem( id: "NSGk7-kyeEU", name: "I BELIEVE I CAN FLY - Minecraft SHINE #037 [Deutsch/HD]", - length: Some(829), + duration: Some(829), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/NSGk7-kyeEU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDzQVO8fGvLFYxX31s1x14XsR2YAw", @@ -1528,7 +1528,7 @@ Playlist( VideoItem( id: "cgJtZ7Otc4Y", name: "ROGUEFRIEDHOF mit WITHERBOSS - Minecraft SHINE #038 [Deutsch/HD]", - length: Some(1392), + duration: Some(1392), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/cgJtZ7Otc4Y/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDK12gzYlhFnRvOaKPfBwCe3ShVCA", @@ -1569,7 +1569,7 @@ Playlist( VideoItem( id: "l5LQu3Q0nWY", name: "MONSTERCALYPSE & RETTUNGSAKTION - Minecraft SHINE #039 [Deutsch/HD]", - length: Some(1580), + duration: Some(1580), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/l5LQu3Q0nWY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAp9sggZ7r8Drcdso3H8mja_pPjOg", @@ -1610,7 +1610,7 @@ Playlist( VideoItem( id: "YX4Z3ZlWUFc", name: "HINTERHALT von GEGNERN!! - Minecraft SHINE #040 [Deutsch/HD]", - length: Some(1847), + duration: Some(1847), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/YX4Z3ZlWUFc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCiPRQyCDwv4Hg1TOyAx_JQbhgYZA", @@ -1651,7 +1651,7 @@ Playlist( VideoItem( id: "LoyvqR41lKw", name: "CARPENTER\'s BLOCKS - Minecraft SHINE #041 [Deutsch/HD]", - length: Some(1524), + duration: Some(1524), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/LoyvqR41lKw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDwYtpWH35Zh5fLrJeDYW0A1GlJUg", @@ -1692,7 +1692,7 @@ Playlist( VideoItem( id: "HbQtMZbtx_Q", name: "DER ETERNAL FROST!! - Minecraft SHINE #043 [Deutsch/HD]", - length: Some(1514), + duration: Some(1514), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/HbQtMZbtx_Q/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLByqCDZ6hojgwcvO8ykf1EKOCAyMw", @@ -1733,7 +1733,7 @@ Playlist( VideoItem( id: "0DHRbP9ecgw", name: "FROSTDUNGEONS in der OVERWORLD!! - Minecraft SHINE #044 [Deutsch/HD]", - length: Some(1567), + duration: Some(1567), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/0DHRbP9ecgw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD9v_vTHy1VOEM3VGQ30lhEJLfmvw", @@ -1774,7 +1774,7 @@ Playlist( VideoItem( id: "rFOFkvk-xus", name: "BOSSRÜSTUNG XXL - Minecraft SHINE #045 [Deutsch/HD]", - length: Some(2050), + duration: Some(2050), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/rFOFkvk-xus/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAOHW34k4C5B4IDkKsphKd7RpKJEw", @@ -1815,7 +1815,7 @@ Playlist( VideoItem( id: "P8zxnSihJ_8", name: "ZAUBERN & TROLLEN mit Nodop - Minecraft SHINE #046 [Deutsch/HD]", - length: Some(1828), + duration: Some(1828), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/P8zxnSihJ_8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDKgLUdVybxHwVoOxNFvVBz2QI0aQ", @@ -1856,7 +1856,7 @@ Playlist( VideoItem( id: "RWgeHl9XkCY", name: "NACHHILFE für BALUI - Minecraft SHINE #047 [Deutsch/HD]", - length: Some(1926), + duration: Some(1926), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/RWgeHl9XkCY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBktMkUzztN_VwIMmZ-icbRUrED3w", @@ -1897,7 +1897,7 @@ Playlist( VideoItem( id: "I1n539enNNY", name: "SPIELER GETÖTET!! - Minecraft SHINE #048 [Deutsch/HD]", - length: Some(1836), + duration: Some(1836), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/I1n539enNNY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA6GMQFFds97Lr4obHmFRuKi5pscQ", @@ -1938,7 +1938,7 @@ Playlist( VideoItem( id: "70VKekyZz5g", name: "VORBEREITUNG auf den DRACHEN - Minecraft SHINE #049 [Deutsch/HD]", - length: Some(1916), + duration: Some(1916), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/70VKekyZz5g/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD7nTUSM_8kz82LsnWCRNjPRv3fvA", @@ -1979,7 +1979,7 @@ Playlist( VideoItem( id: "2OWJ1bwFu6Y", name: "Donnernder ENDERDRACHENKAMPF - Minecraft SHINE #050 [Deutsch/HD]", - length: Some(1718), + duration: Some(1718), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/2OWJ1bwFu6Y/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDj9YAqHRFD2Zwi9Kvr69EjDnVEBw", @@ -2020,7 +2020,7 @@ Playlist( VideoItem( id: "zLiSA2i-niw", name: "Superspitzhacke & Necrotic Bones - Minecraft SHINE #051 [Deutsch/HD]", - length: Some(1253), + duration: Some(1253), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/zLiSA2i-niw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC1WmiMQp3vCS3mPRS5LfmHhDlPpw", @@ -2061,7 +2061,7 @@ Playlist( VideoItem( id: "wyXlw7nMpko", name: "TREMEP, das ENDERAUGE!! - Minecraft SHINE #052 [Deutsch/HD]", - length: Some(1924), + duration: Some(1924), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/wyXlw7nMpko/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDCplxVSv6_-SIcPEPqgudEk5q30A", @@ -2102,7 +2102,7 @@ Playlist( VideoItem( id: "NrU4fhzvFpA", name: "TORNADO & ENDERPOKALYPSE!! - Minecraft SHINE #053 [Deutsch/HD]", - length: Some(1654), + duration: Some(1654), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/NrU4fhzvFpA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDur1k61uW8f9d8UOA6yqSdCNWvfg", @@ -2143,7 +2143,7 @@ Playlist( VideoItem( id: "1xhKegaA1hQ", name: "RIESIGE SMELTERY - Minecraft SHINE #054 [Deutsch/HD]", - length: Some(1796), + duration: Some(1796), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1xhKegaA1hQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCM_UOeSqAu0ykS6gTds3NJ901u8Q", @@ -2184,7 +2184,7 @@ Playlist( VideoItem( id: "9F4lZ8psBtg", name: "TINKER\'s CONSTRUCT - Minecraft SHINE #055 [Deutsch/HD]", - length: Some(1514), + duration: Some(1514), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/9F4lZ8psBtg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBGmpBmXNSZP0X0rQSKWFzlM7DGMw", @@ -2225,7 +2225,7 @@ Playlist( VideoItem( id: "G3uUtejX9to", name: "CUTLASS und HAMMERACTION - Minecraft SHINE #056 [Deutsch/HD]", - length: Some(1615), + duration: Some(1615), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/G3uUtejX9to/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCrz9L2HWwY3_6J01GwQWs-sivnNw", @@ -2266,7 +2266,7 @@ Playlist( VideoItem( id: "-0Xn5pViCss", name: "QUARZFESTIVAL - Minecraft SHINE #057 [Deutsch/HD]", - length: Some(1353), + duration: Some(1353), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/-0Xn5pViCss/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC-QHkwmzqNW4mhuE7oJslYUtReRQ", @@ -2307,7 +2307,7 @@ Playlist( VideoItem( id: "a7u71Fco99I", name: "DUALWITHERKAMPF & EXOSUIT - Minecraft SHINE #058 [Deutsch/HD]", - length: Some(1377), + duration: Some(1377), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/a7u71Fco99I/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC1iNJdmqZHK-ZHSre6MiBKzuPMMw", @@ -2348,7 +2348,7 @@ Playlist( VideoItem( id: "H6uUbvcgKdk", name: "ALLE GETROLLT?! 1. APRIL!! - Minecraft SHINE #060 [Deutsch/HD]", - length: Some(1751), + duration: Some(1751), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/H6uUbvcgKdk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBzSJjNn7zgtAF2kMOHcyBsbS1l-Q", @@ -2389,7 +2389,7 @@ Playlist( VideoItem( id: "tPRTCauHtkw", name: "THAUMELONE - Minecraft SHINE #061 [Deutsch/HD]", - length: Some(1604), + duration: Some(1604), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/tPRTCauHtkw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCbTexd_3GA4grOauyJYk_HY9OQ8Q", @@ -2430,7 +2430,7 @@ Playlist( VideoItem( id: "pMKAQExcarM", name: "ICH BIN EIN MAGIER!! - Minecraft SHINE #062 [Deutsch/HD]", - length: Some(1202), + duration: Some(1202), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/pMKAQExcarM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDd_6WaCpRHtqRugrmQn7gFNo9_LQ", @@ -2471,7 +2471,7 @@ Playlist( VideoItem( id: "7E-z-7KCdBI", name: "ENDER PORTER und SPELLBOUND - Minecraft SHINE #063 [Deutsch/HD]", - length: Some(1715), + duration: Some(1715), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/7E-z-7KCdBI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBGUzE-YGbouV7fglH5XM9xIFS5mA", @@ -2512,7 +2512,7 @@ Playlist( VideoItem( id: "EPtbC0ZVddo", name: "PORTABLE HOLE & Melonenstatuen - Minecraft SHINE #064 [Deutsch/HD]", - length: Some(1696), + duration: Some(1696), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/EPtbC0ZVddo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDGPl3HlQLwqnYRjxskV1EFD3pAvA", @@ -2553,7 +2553,7 @@ Playlist( VideoItem( id: "TpPHng0eGJs", name: "ZUKUNFT des PROJEKTS - Minecraft SHINE #065 [Deutsch/HD]", - length: Some(1215), + duration: Some(1215), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/TpPHng0eGJs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDrapGS714wjdb3XLYg9KsMQBQwig", @@ -2594,7 +2594,7 @@ Playlist( VideoItem( id: "rt2QFQwJYcs", name: "GIGANTISCHER METEOR!! - Minecraft SHINE #066 [Deutsch/HD]", - length: Some(1593), + duration: Some(1593), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/rt2QFQwJYcs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBf_L_ob5qiPVaGJdyQFyoFEwIstg", @@ -2635,7 +2635,7 @@ Playlist( VideoItem( id: "WPyfaztFDQ4", name: "Der EREBUS und die GHAST QUEEN - Minecraft SHINE #067 [Deutsch/HD]", - length: Some(1687), + duration: Some(1687), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/WPyfaztFDQ4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAeaQHeQX9MUHyne6tlJW9JeycB3A", @@ -2676,7 +2676,7 @@ Playlist( VideoItem( id: "5lmumP0DaUw", name: "MINI-BEST OF und KABOOM!! - Minecraft SHINE #069 (Finale) [Deutsch/HD]", - length: Some(1044), + duration: Some(1044), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/5lmumP0DaUw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDys9BQ_BHV7BhDkYphDT72uJBebQ", 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 5271a31..f3dc659 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 @@ -11,7 +11,7 @@ Playlist( VideoItem( id: "nBZlrbrBO1I", name: "Lewis Capaldi - Forget Me (Official Video)", - length: Some(257), + duration: Some(257), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/nBZlrbrBO1I/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDYE-KokyXCncPHIweXZd3jO0FtCg", @@ -52,7 +52,7 @@ Playlist( VideoItem( id: "k6ZoE4RrcDs", name: "Ed Sheeran - Overpass Graffiti [Official Video]", - length: Some(287), + duration: Some(287), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/k6ZoE4RrcDs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLClylvwlo7lJP-guD59zx46AJ-FhA", @@ -93,7 +93,7 @@ Playlist( VideoItem( id: "_JGGLJMpVks", name: "Billie Eilish - TV (Official Lyric Video)", - length: Some(282), + duration: Some(282), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/_JGGLJMpVks/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD2M9JavMUXxkoqzNoTG-W4y8f6ng", @@ -134,7 +134,7 @@ Playlist( VideoItem( id: "2n5GKLdrTfk", name: "Benson Boone - In the Stars (Official Lyric Video)", - length: Some(217), + duration: Some(217), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/2n5GKLdrTfk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBgZfqXCaEvs5iiS7Uf8_th3FHi0Q", @@ -175,7 +175,7 @@ Playlist( VideoItem( id: "psuRGfAaju4", name: "Owl City - Fireflies (Official Music Video)", - length: Some(233), + duration: Some(233), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/psuRGfAaju4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD9bUyhPoTTV2wN8BSQ1GCiZfEHRg", @@ -216,7 +216,7 @@ Playlist( VideoItem( id: "AcTDlsUej2w", name: "Sofia Carson - Come Back Home (From \"Purple Hearts\")", - length: Some(204), + duration: Some(204), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/AcTDlsUej2w/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBZ4neL2CBKzCLMIK_-dU9jcjgU7g", @@ -257,7 +257,7 @@ Playlist( VideoItem( id: "ospQ06jJe-I", name: "Rihanna - Lift Me Up (Visualizer)", - length: Some(197), + duration: Some(197), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ospQ06jJe-I/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDP9VhXSsZyfokzYMG-bPeAtvwPYQ", @@ -298,7 +298,7 @@ Playlist( VideoItem( id: "mqiH0ZSkM9I", name: "James Bay - Hold Back The River", - length: Some(247), + duration: Some(247), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/mqiH0ZSkM9I/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDL1DI86uhS0N-7Iln6wBSdwxzSTw", @@ -339,7 +339,7 @@ Playlist( VideoItem( id: "UAWcs5H-qgQ", name: "Ed Sheeran - The A Team [Official Music Video]", - length: Some(290), + duration: Some(290), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/UAWcs5H-qgQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAQe32l8lKUCEYlEu3qvN61HJfhZQ", @@ -380,7 +380,7 @@ Playlist( VideoItem( id: "c4BLVznuWnU", name: "Ed Sheeran - Lego House [Official Music Video]", - length: Some(246), + duration: Some(246), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/c4BLVznuWnU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCGv3Z17ZP7qUJBjyKS6XqEfd6vFA", @@ -421,7 +421,7 @@ Playlist( VideoItem( id: "ouEezpuPc3A", name: "Andy Grammer - \"Don\'t Give Up On Me\" [Official Video from the Five Feet Apart Film]", - length: Some(216), + duration: Some(216), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ouEezpuPc3A/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLATK7bjvuTcCR3tLGpTByugeeApBw", @@ -462,7 +462,7 @@ Playlist( VideoItem( id: "i-qT5n_5Mys", name: "Jaymes Young - Happiest Year [Official Music Video]", - length: Some(278), + duration: Some(278), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/i-qT5n_5Mys/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBVoIW7CvV2T6J4lKS4ke0oG5T76Q", @@ -503,7 +503,7 @@ Playlist( VideoItem( id: "bqO3Y5e4Dow", name: "Michele Morrone - Hard For Me (Official Music Video)", - length: Some(173), + duration: Some(173), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/bqO3Y5e4Dow/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCP6Zgm-3gvaYxZkCT5OS3GjJM2vQ", @@ -544,7 +544,7 @@ Playlist( VideoItem( id: "VqXYVrsMGnk", name: "Cian Ducrot - I\'ll Be Waiting (Official Video)", - length: Some(186), + duration: Some(186), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/VqXYVrsMGnk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBewlDTtOME4lW9VOPol71lN1frvw", @@ -585,7 +585,7 @@ Playlist( VideoItem( id: "qHm9MG9xw1o", name: "OneRepublic - Secrets (Official Music Video)", - length: Some(233), + duration: Some(233), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/qHm9MG9xw1o/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAEc7ChL1aU4sWnM23BEdbqUfYpoA", @@ -626,7 +626,7 @@ Playlist( VideoItem( id: "-oqAU5VxFWs", name: "Counting Crows - Mr. Jones (Official Music Video)", - length: Some(270), + duration: Some(270), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/-oqAU5VxFWs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAOiV1ty7HPrBwp-3zZq3x_VY9YbQ", @@ -667,7 +667,7 @@ Playlist( VideoItem( id: "XPpTgCho5ZA", name: "Maroon 5 - This Love (Official Music Video)", - length: Some(206), + duration: Some(206), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/XPpTgCho5ZA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAJLr7-wCPWd1_-QSELXsmZxsuUQA", @@ -708,7 +708,7 @@ Playlist( VideoItem( id: "PMGY8fLwess", name: "James Arthur - Falling Like The Stars", - length: Some(256), + duration: Some(256), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/PMGY8fLwess/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCET20Nd4_3twDEy-t_LBeJFI5Lng", @@ -749,7 +749,7 @@ Playlist( VideoItem( id: "vNfgVjZF8_4", name: "OneRepublic - Someday (Official Music Video)", - length: Some(192), + duration: Some(192), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/vNfgVjZF8_4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAiolwWxGplthlYKy2jJkAxw_-u2Q", @@ -790,7 +790,7 @@ Playlist( VideoItem( id: "aNzCDt2eidg", name: "Birdy - Skinny Love (Official Music Video)", - length: Some(214), + duration: Some(214), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/aNzCDt2eidg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB33o_fslw86LZxcC1Jf8Oy8X94tg", @@ -831,7 +831,7 @@ Playlist( VideoItem( id: "1YUBbF24H44", name: "Sabrina Carpenter - because i liked a boy (Official Video)", - length: Some(206), + duration: Some(206), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1YUBbF24H44/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB_FDT3RYF6Db3q5vW9KsL9RCIcUA", @@ -872,7 +872,7 @@ Playlist( VideoItem( id: "A48hOToMuRE", name: "Dermot Kennedy - Outnumbered (Official Music Video)", - length: Some(247), + duration: Some(247), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/A48hOToMuRE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD331J7kou1P60yR_eWHyDtzD6ATQ", @@ -913,7 +913,7 @@ Playlist( VideoItem( id: "c0wUKCekI34", name: "Michele Morrone - Another Day (Official Music Video)", - length: Some(188), + duration: Some(188), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/c0wUKCekI34/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDnIgpAY_IWghMmR2H5lMfpPJhhKQ", @@ -954,7 +954,7 @@ Playlist( VideoItem( id: "CA1VHbdq5hY", name: "Giveon - Lie Again (Official Music Video)", - length: Some(236), + duration: Some(236), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/CA1VHbdq5hY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDxIcgCqYhMN-NtLCF7P9SvaZF5ag", @@ -995,7 +995,7 @@ Playlist( VideoItem( id: "ljXSjIph5ZM", name: "Niall Horan - Too Much To Ask (Official Video)", - length: Some(226), + duration: Some(226), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ljXSjIph5ZM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBswSaH9Elc6hO18X9NQnbcnCTTrw", @@ -1036,7 +1036,7 @@ Playlist( VideoItem( id: "HUAvAYcDBos", name: "Jessie Murph - How Could You (Official Video)", - length: Some(188), + duration: Some(188), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/HUAvAYcDBos/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDMs-vI_VZV6deBCj4gwoQTvwyflg", @@ -1077,7 +1077,7 @@ Playlist( VideoItem( id: "P0N0h_EOS-c", name: "Jess Glynne - Take Me Home [One Shot]", - length: Some(276), + duration: Some(276), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/P0N0h_EOS-c/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgTShXMA8=&rs=AOn4CLDkdQ5y1KrQH72YrAe3H3Azl2nrNw", @@ -1118,7 +1118,7 @@ Playlist( VideoItem( id: "goqqohUitmw", name: "Conan Gray - People Watching (Official Video)", - length: Some(210), + duration: Some(210), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/goqqohUitmw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBctikDTiHTYFwrnwU3twVrMoMg0w", @@ -1159,7 +1159,7 @@ Playlist( VideoItem( id: "EptPhiK_q0E", name: "Coldplay X Selena Gomez - Let Somebody Go (Official Lyric Video)", - length: Some(242), + duration: Some(242), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/EptPhiK_q0E/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGBMgUSh_MA8=&rs=AOn4CLCOd0ATwH2KxF7cfK-rWosCNT3IBA", @@ -1200,7 +1200,7 @@ Playlist( VideoItem( id: "74NhLkjIeMs", name: "Conan Gray - Yours", - length: Some(201), + duration: Some(201), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/74NhLkjIeMs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA2yej0cyHG33At8O7nYsh0W0CjWQ", @@ -1241,7 +1241,7 @@ Playlist( VideoItem( id: "DJFMRLIe-0o", name: "Tate McRae x Ali Gatie - lie to me", - length: Some(191), + duration: Some(191), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/DJFMRLIe-0o/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBxB2LhvsmbZFj8u3HHpZqw_QLQYQ", @@ -1282,7 +1282,7 @@ Playlist( VideoItem( id: "26PAgklYYvo", name: "James Morrison - Broken Strings ft. Nelly Furtado (Official Video)", - length: Some(261), + duration: Some(261), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/26PAgklYYvo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBBWaF5iUZuRhd5CXJczxE_uIhvuQ", @@ -1323,7 +1323,7 @@ Playlist( VideoItem( id: "_LwX7GCE5rI", name: "Miley Cyrus - Slide Away (Audio)", - length: Some(236), + duration: Some(236), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/_LwX7GCE5rI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDARZ6g8GJ5ZQJKLBn_f7EUz5zQbw", @@ -1364,7 +1364,7 @@ Playlist( VideoItem( id: "bO3S8CKafbE", name: "Niall Horan - Put A Little Love On Me (Official Video)", - length: Some(235), + duration: Some(235), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/bO3S8CKafbE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBkGMciyWKUevmBLwdIEfdyEUGtLQ", @@ -1405,7 +1405,7 @@ Playlist( VideoItem( id: "HtNS1afUOnE", name: "OneRepublic - Stop And Stare (Official Music Video)", - length: Some(295), + duration: Some(295), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/HtNS1afUOnE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAxlKe00QtM12L4lSRNPFQwpSMyVA", @@ -1446,7 +1446,7 @@ Playlist( VideoItem( id: "tMsbeyeTtpk", name: "Michael Bublé - I\'ll Never Not Love You (Official Music Video)", - length: Some(245), + duration: Some(245), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/tMsbeyeTtpk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDAr49jYgSm566rAeQY2EDCJf8TiA", @@ -1487,7 +1487,7 @@ Playlist( VideoItem( id: "K9qu2QMBguw", name: "I See Fire (From \"The Hobbit - The Desolation Of Smaug\")", - length: Some(301), + duration: Some(301), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/K9qu2QMBguw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCws9zOceVajoYy1goACyhUMpUp0A", @@ -1528,7 +1528,7 @@ Playlist( VideoItem( id: "uWeqeQkjLto", name: "James Blunt - 1973 (Official Music Video)", - length: Some(234), + duration: Some(234), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/uWeqeQkjLto/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGFQgZShhMA8=&rs=AOn4CLAs8gUVPdNh55dqwd900xx-5wDFZg", @@ -1569,7 +1569,7 @@ Playlist( VideoItem( id: "44u7_wQ1s0g", name: "John Legend - Wonder Woman (Official Music Video)", - length: Some(167), + duration: Some(167), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/44u7_wQ1s0g/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBkfXiCxIPRshRfnR2iyQwi4ygCvw", @@ -1610,7 +1610,7 @@ Playlist( VideoItem( id: "7TCncxWNcPU", name: "David Kushner - Mr. Forgettable [Official Music Video]", - length: Some(188), + duration: Some(188), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/7TCncxWNcPU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBUjrfYGwMuSGUQXZ8S5NpzULk04A", @@ -1651,7 +1651,7 @@ Playlist( VideoItem( id: "7Lna4Hu4-AQ", name: "MAX & Ali Gatie - Butterflies (Official Music Video)", - length: Some(195), + duration: Some(195), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/7Lna4Hu4-AQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCwk82yvmb0b2bT2LQdLDCm7AdPVw", @@ -1692,7 +1692,7 @@ Playlist( VideoItem( id: "mHeK0Cwr9sg", name: "Family of the Year - Hero (Official Music Video)", - length: Some(197), + duration: Some(197), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/mHeK0Cwr9sg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBNQKaAvQ3wiH3m5VvXJqLq7evrcw", @@ -1733,7 +1733,7 @@ Playlist( VideoItem( id: "0Bf3CJZ4hvg", name: "James TW - When You Love Someone (Official Video)", - length: Some(227), + duration: Some(227), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/0Bf3CJZ4hvg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDcZtU4lYU7SoyX-KWmY83qSZpKNA", @@ -1774,7 +1774,7 @@ Playlist( VideoItem( id: "PxNYvk_0Onw", name: "Gabrielle Aplin - Please Don\'t Say You Love Me (Official Video)", - length: Some(208), + duration: Some(208), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/PxNYvk_0Onw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAzBncBZkxQA-sIftjEl-so3MFXDQ", @@ -1815,7 +1815,7 @@ Playlist( VideoItem( id: "E0WRQpjckYg", name: "5 Seconds of Summer - Older (feat. Sierra Deaton) [Official Music Video]", - length: Some(197), + duration: Some(197), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/E0WRQpjckYg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBBqsOulvLGwgBYkEMsWZrn9t5z5Q", @@ -1856,7 +1856,7 @@ Playlist( VideoItem( id: "X_ZOGHUWwqE", name: "Sam Smith - Kids Again (Official Music Video)", - length: Some(214), + duration: Some(214), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/X_ZOGHUWwqE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA07XEXQDNHBEgYBzrUaFeuuOhgYw", @@ -1897,7 +1897,7 @@ Playlist( VideoItem( id: "fvXn3rmhdc4", name: "Benson Boone - Better Alone (Official Music Video)", - length: Some(209), + duration: Some(209), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/fvXn3rmhdc4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBXyC7NRsIpcSf-3xM6lJpRjufFBg", @@ -1938,7 +1938,7 @@ Playlist( VideoItem( id: "WLoWBe9BRP4", name: "Mimi Webb - Good Without (Official Music Video)", - length: Some(187), + duration: Some(187), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/WLoWBe9BRP4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCXfMk1yjQeGOIv-JWTLz_Sv-fneA", @@ -1979,7 +1979,7 @@ Playlist( VideoItem( id: "1XYLKoEETVA", name: "Zoe Wees - Hold Me Like You Used To", - length: Some(193), + duration: Some(193), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1XYLKoEETVA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA1vOD1X-dWXRvJME8Rbamezkj3zQ", @@ -2020,7 +2020,7 @@ Playlist( VideoItem( id: "7aF4epqLMPs", name: "Dermot Kennedy - One Life (Sonder Lyric Video)", - length: Some(238), + duration: Some(238), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/7aF4epqLMPs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDZepQgbOdk9xu0Umpn8ydSn92qeQ", @@ -2061,7 +2061,7 @@ Playlist( VideoItem( id: "ufbDvPaVrzs", name: "Dermot Kennedy - Innocence and Sadness (Live From Mission Sound Studios, Brooklyn)", - length: Some(252), + duration: Some(252), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ufbDvPaVrzs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAMZEWQx_Mzyg0dDRx35B8WBh7rWQ", @@ -2102,7 +2102,7 @@ Playlist( VideoItem( id: "Ghl_vkEV3tc", name: "Noah Cyrus - Mr. Percocet (Official Video)", - length: Some(193), + duration: Some(193), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Ghl_vkEV3tc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDoZ_f8kKEnHOjHUaQOuGK_2rFEzA", @@ -2143,7 +2143,7 @@ Playlist( VideoItem( id: "hCjcgoubkPM", name: "Amy Shark - Mess Her Up (Official Video)", - length: Some(226), + duration: Some(226), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/hCjcgoubkPM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCJ7TmHDCPS_O4TuOcjvPGrH9uQig", @@ -2184,7 +2184,7 @@ Playlist( VideoItem( id: "5qHRMFQ0pLg", name: "Dermot Kennedy - Dreamer", - length: Some(182), + duration: Some(182), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/5qHRMFQ0pLg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA0CeUiMuMAYUlwd6OSvfGbV2fiyA", @@ -2225,7 +2225,7 @@ Playlist( VideoItem( id: "nwXlRq_QyTI", name: "JP Saxe - A Little Bit Yours (Official Music Video)", - length: Some(246), + duration: Some(246), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/nwXlRq_QyTI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAeMKBjb-xLVknOBO0jnBI0nKGRrw", @@ -2266,7 +2266,7 @@ Playlist( VideoItem( id: "7KHPC-kEQOA", name: "Rosa Linn, Duncan Laurence - WDIA (Would Do It Again) (Official Lyric Video)", - length: Some(193), + duration: Some(193), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/7KHPC-kEQOA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLChepS9Al_mePp9OUSvU3KCfiqT-Q", @@ -2307,7 +2307,7 @@ Playlist( VideoItem( id: "ZdsER1S3t8k", name: "Noah Kahan - Hurt Somebody (Official Video)", - length: Some(175), + duration: Some(175), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ZdsER1S3t8k/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCMXZbK3xM4AVAHT-1INttn80orFg", @@ -2348,7 +2348,7 @@ Playlist( VideoItem( id: "fyrsExw_LUg", name: "James Bay - Bad", - length: Some(243), + duration: Some(243), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/fyrsExw_LUg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAIYoOZeb6YLJs-k7q7gUYDyEw5hQ", @@ -2389,7 +2389,7 @@ Playlist( VideoItem( id: "X-vispdELDo", name: "Ashley Kutcher - Survive My Own Mind (Official Music Video)", - length: Some(199), + duration: Some(199), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/X-vispdELDo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCNjK3LA0b0HcekazbiyJw79ZV0zQ", @@ -2430,7 +2430,7 @@ Playlist( VideoItem( id: "2p4n7JgdCsc", name: "a-ha - As If (Official Video)", - length: Some(336), + duration: Some(336), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/2p4n7JgdCsc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLClrUza7VFr3E5Vm_N3l-8uXzlTwg", @@ -2471,7 +2471,7 @@ Playlist( VideoItem( id: "BS4t017LSoA", name: "Bad Habits (Acoustic Version)", - length: Some(233), + duration: Some(233), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/BS4t017LSoA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAoxqVY-e_4hIjPTQ2FLvQTy2e5KQ", @@ -2512,7 +2512,7 @@ Playlist( VideoItem( id: "0AYzzzBaPBI", name: "flora cash - They Own This Town (Official Video)", - length: Some(246), + duration: Some(246), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/0AYzzzBaPBI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDw2F7ryxqDLcERqtiIuz0pokrhcQ", @@ -2553,7 +2553,7 @@ Playlist( VideoItem( id: "zM0K3LC7Aak", name: "James Arthur - Avalanche (Live Session)", - length: Some(220), + duration: Some(220), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/zM0K3LC7Aak/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLACABCozlS3B9tiR0oHa3A13tsKzg", @@ -2594,7 +2594,7 @@ Playlist( VideoItem( id: "-uxeu0MbNR0", name: "Jeremy Zucker - oh, mexico (Official Lyric Video)", - length: Some(191), + duration: Some(191), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/-uxeu0MbNR0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAh2ApdiwlYs3vSs_rNVURKcwVjOw", @@ -2635,7 +2635,7 @@ Playlist( VideoItem( id: "ELD3aRzbVQg", name: "Tom Gregory - Run To You (Official Video HD)", - length: Some(201), + duration: Some(201), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ELD3aRzbVQg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA9S7vhfJ0vZ9jFNIPnuhZ47IV5VA", @@ -2676,7 +2676,7 @@ Playlist( VideoItem( id: "RdFaKz71-5M", name: "Ruel - LET THE GRASS GROW (Visualizer)", - length: Some(181), + duration: Some(181), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/RdFaKz71-5M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB2vXg0jRY42m1wZOLaDw8uhUIUvQ", @@ -2717,7 +2717,7 @@ Playlist( VideoItem( id: "H1_icnjg6MY", name: "Sigrid - Blue (Official Audio)", - length: Some(207), + duration: Some(207), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/H1_icnjg6MY/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGHIgSSgkMA8=&rs=AOn4CLB6_p8MIO4i6qW1jroGhnYOm859MQ", @@ -2758,7 +2758,7 @@ Playlist( VideoItem( id: "il_L6c_fOvs", name: "amnesia - Camylio (Visualizer)", - length: Some(173), + duration: Some(173), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/il_L6c_fOvs/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgZShlMA8=&rs=AOn4CLAyT-vzu4WOeAaDksDfPYhIZro4Gg", @@ -2799,7 +2799,7 @@ Playlist( VideoItem( id: "R3Wo_4tMlhQ", name: "Dean Lewis - All For You (Official Lyric Video)", - length: Some(226), + duration: Some(226), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/R3Wo_4tMlhQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAtJ6woo9TtO2c8S5_3-3Aml0fQug", @@ -2840,7 +2840,7 @@ Playlist( VideoItem( id: "1le0xDbrVj8", name: "Oh Wonder - True Romance", - length: Some(244), + duration: Some(244), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1le0xDbrVj8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLACfT_oOjcoB51P7qdJBdRJqMk6Bg", @@ -2881,7 +2881,7 @@ Playlist( VideoItem( id: "35VK8yonvsc", name: "James Bay - Everybody Needs Someone (Official Lyric Video)", - length: Some(216), + duration: Some(216), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/35VK8yonvsc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBm5zTCEBdVI4kL94VNJsrVw_D7Sg", @@ -2922,7 +2922,7 @@ Playlist( VideoItem( id: "T05TN5RYvLk", name: "Jessica Darrow - A Little More", - length: Some(185), + duration: Some(185), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/T05TN5RYvLk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAnYNLEBPA_1w-VjM6VQ64WSpoRew", @@ -2963,7 +2963,7 @@ Playlist( VideoItem( id: "NjW1S0WIiJw", name: "John Legend - Free (Official Lyric Video)", - length: Some(223), + duration: Some(223), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/NjW1S0WIiJw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCoe2g-AJhPWV6uGi_Cb5BgOA9ggA", @@ -3004,7 +3004,7 @@ Playlist( VideoItem( id: "KUKt_LbaBnM", name: "Oh Wonder - Better Now (Official Audio)", - length: Some(200), + duration: Some(200), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/KUKt_LbaBnM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBqi7ONpAild4T_KUgenSVpZnINJQ", @@ -3045,7 +3045,7 @@ Playlist( VideoItem( id: "BxqtS-7GxFM", name: "TONES AND I - NEVER SEEN THE RAIN (ALTERNATE VERSION)", - length: Some(296), + duration: Some(296), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/BxqtS-7GxFM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAzNbc2LI1u0U7MJeDbYJ7CGcRsOg", @@ -3086,7 +3086,7 @@ Playlist( VideoItem( id: "BD7HwXv18aU", name: "Blue - Magnetic (packshot video)", - length: Some(192), + duration: Some(192), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/BD7HwXv18aU/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGGUgZShlMA8=&rs=AOn4CLAm0onEcUfS8OL06MztPxxW0haT9Q", @@ -3127,7 +3127,7 @@ Playlist( VideoItem( id: "WJJLfUwIVR4", name: "christina perri - home [official audio]", - length: Some(219), + duration: Some(219), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/WJJLfUwIVR4/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGFogNyh_MA8=&rs=AOn4CLAHxpiqOgT9nMZImsynQmXC57ccrw", @@ -3168,7 +3168,7 @@ Playlist( VideoItem( id: "bhL7A8k6kU8", name: "Anderson East - Madelyn (Official Video)", - length: Some(203), + duration: Some(203), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/bhL7A8k6kU8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDjFwOL3uhYgUyn9Y_lCG9Obu_VLw", @@ -3209,7 +3209,7 @@ Playlist( VideoItem( id: "-4szr0EMrgk", name: "Låpsley - 32 Floors (Official Audio)", - length: Some(185), + duration: Some(185), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/-4szr0EMrgk/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGE0gRyhZMA8=&rs=AOn4CLC8esxHISkHu2sudY4BhImbxCCF9A", @@ -3250,7 +3250,7 @@ Playlist( VideoItem( id: "mUN36hFtazE", name: "LÉON – All My Heroes (Official Audio)", - length: Some(206), + duration: Some(206), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/mUN36hFtazE/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYACzgWKAgwIABABGH8gLigsMA8=&rs=AOn4CLAY7-0ugMLVK_gKfpJNSIWx81o0aQ", @@ -3291,7 +3291,7 @@ Playlist( VideoItem( id: "dcBZP_pt0uY", name: "Tom Grennan - Little Bit Of Love (Strings) [Audio]", - length: Some(231), + duration: Some(231), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/dcBZP_pt0uY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCkKdl0vdveGOQRTVcDQSjM39eaNA", @@ -3332,7 +3332,7 @@ Playlist( VideoItem( id: "m342B1Vv3tM", name: "Matt Simons ft. Betty Who - Dust (Official Lyric Video)", - length: Some(202), + duration: Some(202), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/m342B1Vv3tM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCtlnYdNrjQmFoSByaqszmoizosdw", @@ -3373,7 +3373,7 @@ Playlist( VideoItem( id: "N_5RiRBvPSk", name: "SHIVERS (image of you)", - length: Some(178), + duration: Some(178), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/N_5RiRBvPSk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCHvtumFR7-GUGlU31AlGM0NA775A", @@ -3414,7 +3414,7 @@ Playlist( VideoItem( id: "iOZj0Y8bAb8", name: "Rhys Lewis - The Middle", - length: Some(196), + duration: Some(196), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/iOZj0Y8bAb8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBxyTmcXXOFV5zDI-K8PTF7DbZqqg", @@ -3455,7 +3455,7 @@ Playlist( VideoItem( id: "7OfB_8rrtug", name: "Grace (We All Try)", - length: Some(206), + duration: Some(206), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/7OfB_8rrtug/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC007M9IO9aWRv-SNVJkBxaGXzm-w", @@ -3496,7 +3496,7 @@ Playlist( VideoItem( id: "ufxjiU7BgR4", name: "Fall Into Me", - length: Some(225), + duration: Some(225), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ufxjiU7BgR4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCukjpfKjBu1BlRU6okhJcCeO33vQ", @@ -3537,7 +3537,7 @@ Playlist( VideoItem( id: "QDULTFB8gSY", name: "Words as Weapons", - length: Some(199), + duration: Some(199), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/QDULTFB8gSY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCfNJGl46bsXtx8TaG9S1dGBP5CSg", @@ -3578,7 +3578,7 @@ Playlist( VideoItem( id: "Q5kH0wg_sKo", name: "Will You Love Me Tomorrow", - length: Some(173), + duration: Some(173), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Q5kH0wg_sKo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBqza1PqIiUCIgWRUkjX6LwsWdlBA", 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 c6b46c9..e0ac9fd 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 @@ -29,7 +29,7 @@ SearchResult( Video(VideoItem( id: "1VW7iXRIrc8", name: "Alone, in the City of Love", - length: Some(1875), + duration: Some(1875), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1VW7iXRIrc8/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBdlRr8SU9QxUy0_CXzgn5PYD9E5Q", @@ -66,7 +66,7 @@ SearchResult( Video(VideoItem( id: "9NuhKCv3crg", name: "the end.", - length: Some(982), + duration: Some(982), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/9NuhKCv3crg/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB3RO6rSdCdoNvVoOIuXHuQLMAhjg", @@ -103,7 +103,7 @@ SearchResult( Video(VideoItem( id: "hGbQ2WM9nOo", name: "Why does everything bad for you taste good ㅣ CHILI OIL RAMEN", - length: Some(428), + duration: Some(428), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/hGbQ2WM9nOo/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAOyCCH9z6eP1GgeAkYz8w-63YPKA", @@ -140,7 +140,7 @@ SearchResult( Video(VideoItem( id: "PxGmP4v_A38", name: "Alone and Thriving l late night korean convenience store, muji kitchenware haul, spring cleaning!", - length: Some(1437), + duration: Some(1437), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/PxGmP4v_A38/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAcoPhpadTc4MxMtIo_nT0sbVqQ_w", @@ -177,7 +177,7 @@ SearchResult( Video(VideoItem( id: "38Gd6TdmNVs", name: "KOREAN BARBECUE l doob gourmand ep.3", - length: Some(525), + duration: Some(525), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/38Gd6TdmNVs/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDsNWReQCqk65JFrXXAd6rxMUI_Bw", @@ -214,7 +214,7 @@ SearchResult( Video(VideoItem( id: "CutR_1SDDzY", name: "feels good to be back", - length: Some(1159), + duration: Some(1159), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/CutR_1SDDzY/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLActl8nkhmxksu9VFzaIinmds9zvQ", @@ -251,7 +251,7 @@ SearchResult( Video(VideoItem( id: "pRVSdUxdsVw", name: "Repairing...", - length: Some(965), + duration: Some(965), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/pRVSdUxdsVw/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDjxOs7PhXWFUYxRlk8H0iePAG4Pw", @@ -288,7 +288,7 @@ SearchResult( Video(VideoItem( id: "KUz7oArksR4", name: "running away", - length: Some(1023), + duration: Some(1023), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/KUz7oArksR4/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBvRKSTlrOAc272yvOsjQ1caVy0dA", @@ -325,7 +325,7 @@ SearchResult( Video(VideoItem( id: "sPb2gyN-hnE", name: "worth fighting for", - length: Some(1232), + duration: Some(1232), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/sPb2gyN-hnE/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCXfFs1qOH7gsqSVzQSIeP_67Gq6w", @@ -362,7 +362,7 @@ SearchResult( Video(VideoItem( id: "rriwHj8U664", name: "my seoul apartment tour", - length: Some(721), + duration: Some(721), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/rriwHj8U664/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDa_ru_rgqDr335K9nP7qBEIEeWjA", @@ -399,7 +399,7 @@ SearchResult( Video(VideoItem( id: "PXsK9-CFoH4", name: "waiting...", - length: Some(1455), + duration: Some(1455), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/PXsK9-CFoH4/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDFtuK-YLnwmTSGBRv1GtqpR5Nuzw", @@ -436,7 +436,7 @@ SearchResult( Video(VideoItem( id: "bXbmYelTnhw", name: "Doobydobap rates British desserts!", - length: Some(865), + duration: Some(865), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/bXbmYelTnhw/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAOc_H4uGBccduXeIp86h5chvyvsw", @@ -473,7 +473,7 @@ SearchResult( Video(VideoItem( id: "0onVbAuBGWI", name: "Out of Control", - length: Some(1125), + duration: Some(1125), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/0onVbAuBGWI/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCAHfsahg69zS8R10N6NZcTn2Aibw", @@ -510,7 +510,7 @@ SearchResult( Video(VideoItem( id: "FKJtrUeol3o", name: "with quantity comes quality", - length: Some(1140), + duration: Some(1140), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/FKJtrUeol3o/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD9BLc2eY9aOByv7rTBF4hnVrK-Ww", @@ -547,7 +547,7 @@ SearchResult( Video(VideoItem( id: "dkMtSrjDLO0", name: "How to make Naruto\'s favorite ramen", - length: Some(802), + duration: Some(802), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/dkMtSrjDLO0/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB5ZCCaLPq5uWkYWwLDCezSjm6V0A", @@ -584,7 +584,7 @@ SearchResult( Video(VideoItem( id: "r2ye6zW0nbM", name: "a wedding", - length: Some(1207), + duration: Some(1207), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/r2ye6zW0nbM/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAkTW6MZa4f7I1Q8JDN6gswxbZLMA", @@ -621,7 +621,7 @@ SearchResult( Video(VideoItem( id: "NudTbo2CJMY", name: "Flying to London", - length: Some(1078), + duration: Some(1078), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/NudTbo2CJMY/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDLD0fdpkRaLvP-wJLtDJKt3QPiTQ", @@ -658,7 +658,7 @@ SearchResult( Video(VideoItem( id: "gK-jLnvVsb0", name: "Contradicting myself", - length: Some(1381), + duration: Some(1381), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/gK-jLnvVsb0/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAuF_YftS_qXHPsyZC38Ghdif_L-A", @@ -695,7 +695,7 @@ SearchResult( Video(VideoItem( id: "fAFFTOpUNWo", name: "Come Grocery Shopping with Me", - length: Some(1126), + duration: Some(1126), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/fAFFTOpUNWo/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD1YGxKpUH8Jt18Oz_YpSZHzY2_ng", diff --git a/src/client/snapshots/rustypipe__client__trends__tests__map_startpage.snap b/src/client/snapshots/rustypipe__client__trends__tests__map_startpage.snap index 35e6dfd..a6ec599 100644 --- a/src/client/snapshots/rustypipe__client__trends__tests__map_startpage.snap +++ b/src/client/snapshots/rustypipe__client__trends__tests__map_startpage.snap @@ -8,7 +8,7 @@ Paginator( VideoItem( id: "_cyJhGsXDDM", name: "Ultimate Criminal Canal Found Magnet Fishing! Police on the Hunt", - length: Some(1096), + duration: Some(1096), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/_cyJhGsXDDM/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBBz_ErMMfhKLRZRfcAPTlMTujziw", @@ -45,7 +45,7 @@ Paginator( VideoItem( id: "36YnV9STBqc", name: "The Good Life Radio\u{a0}•\u{a0}24/7 Live Radio | Best Relax House, Chillout, Study, Running, Gym, Happy Music", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/36YnV9STBqc/hq720_live.jpg?sqp=COjxqZoG-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLASUZkzmRJDiyIJmcsAdcDGan805Q", @@ -82,7 +82,7 @@ Paginator( VideoItem( id: "YYD1qgH5qC4", name: "چند شنبه با سینــا | فصل چهـارم | قسمت 5 | با حضور نازنین انصاری مدیر روزنامه کیهان لندن", - length: Some(3261), + duration: Some(3261), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/YYD1qgH5qC4/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBkvD-kVL12hteMVVLRZvJHOdlPzQ", @@ -119,7 +119,7 @@ Paginator( VideoItem( id: "BeJqgI6rw9k", name: "your city is full of fake buildings, here\'s why", - length: Some(725), + duration: Some(725), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/BeJqgI6rw9k/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAvkJGHa6h2vzXrG1ueGQA8JysqEg", @@ -156,7 +156,7 @@ Paginator( VideoItem( id: "ma28eWd1oyA", name: "Post Malone, Maroon 5, Adele, Taylor Swift, Ed Sheeran, Shawn Mendes, Pop Hits 2020 Part 6", - length: Some(29989), + duration: Some(29989), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ma28eWd1oyA/hqdefault.jpg?sqp=-oaymwEcCOADEI4CSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCznoPDMo_F1NCRBWoD4Ps5IjctxQ", @@ -188,7 +188,7 @@ Paginator( VideoItem( id: "mL2LBRM5GBI", name: "Salahs 6-Minuten-Hattrick & Firmino-Gala: Rangers - FC Liverpool 1:7 | UEFA Champions League | DAZN", - length: Some(355), + duration: Some(355), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/mL2LBRM5GBI/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBhsDaEALJodPurmS3DywUoRRwzwg", @@ -225,7 +225,7 @@ Paginator( VideoItem( id: "Ang18qz2IeQ", name: "Satisfying Videos of Workers Doing Their Job Perfectly", - length: Some(1186), + duration: Some(1186), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Ang18qz2IeQ/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA3Cd49wYUuSEXz2MwhO2aqCMq5ZA", @@ -262,7 +262,7 @@ Paginator( VideoItem( id: "fjHN4jsJnEU", name: "I Made 200 Players Simulate Survival Island in Minecraft...", - length: Some(2361), + duration: Some(2361), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/fjHN4jsJnEU/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDwTosIfmAhNHIzU1sSXrTKT8vjNQ", @@ -299,7 +299,7 @@ Paginator( VideoItem( id: "FI1XrdBJIUI", name: "Epic Construction Fails | Expensive Fails Compilation | FailArmy", - length: Some(631), + duration: Some(631), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/FI1XrdBJIUI/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBe2jCnLhTsXmZQefyAe-WqImk6-g", @@ -336,7 +336,7 @@ Paginator( VideoItem( id: "MXdplejK8vU", name: "Chilly autumn Jazz ☕ Smooth September Jazz & Bossa Nova for a great relaxing weekend", - length: Some(86403), + duration: Some(86403), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/MXdplejK8vU/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAIOe93l-1elIK0DfMLk0f3nDWgSA", @@ -373,7 +373,7 @@ Paginator( VideoItem( id: "Jri4_9vBFiQ", name: "Top 100 Best Classic Rock Songs Of All Time 🔥 R.E.M, Queen, Metallica,Guns N’ Roses,Bon Jovi, U2,CCR", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Jri4_9vBFiQ/hq720_live.jpg?sqp=COjxqZoG-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA1ZqDfSLi3Mf5qvpUFSYyDIODNQw", @@ -410,7 +410,7 @@ Paginator( VideoItem( id: "ll4d5Lt-Ie8", name: "Relaxing Music Healing Stress, Anxiety and Depressive States Heal Mind, Body and Soul | Sleep music", - length: Some(42896), + duration: Some(42896), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ll4d5Lt-Ie8/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAqdY2bQaQ3JHl5FYoTPuZFxXRKIQ", @@ -447,7 +447,7 @@ Paginator( VideoItem( id: "Dx2wbKLokuQ", name: "W. Putin: Die Sehnsucht nach dem Imperium | Mit offenen Karten | ARTE", - length: Some(729), + duration: Some(729), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Dx2wbKLokuQ/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBHQXnaEYo6frjkJ3FFuAPkAyOCKQ", @@ -484,7 +484,7 @@ Paginator( VideoItem( id: "jfKfPfyJRdk", name: "lofi hip hop radio - beats to relax/study to", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/jfKfPfyJRdk/hq720_live.jpg?sqp=COjxqZoG-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCR-bHqcvOP14sSUsNt9PTuf3ZI4Q", @@ -521,7 +521,7 @@ Paginator( VideoItem( id: "qmrzTUmZ4UU", name: "850€ für den Verrat am System - UCS AT-AT LEGO® Star Wars 75313", - length: Some(2043), + duration: Some(2043), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/qmrzTUmZ4UU/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAsI3VS-wxnt1s_zS4M_YbVrV1pAg", @@ -558,7 +558,7 @@ Paginator( VideoItem( id: "t0Q2otsqC4I", name: "Tom & Jerry | Tom & Jerry in Full Screen | Classic Cartoon Compilation | WB Kids", - length: Some(1298), + duration: Some(1298), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/t0Q2otsqC4I/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCFcrz2zM6mPUmJiCsC7c7suOzSug", @@ -595,7 +595,7 @@ Paginator( VideoItem( id: "zE-a5eqvlv8", name: "Dua Lipa, Coldplay, Martin Garrix & Kygo, The Chainsmokers Style - Feeling Me", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/zE-a5eqvlv8/hq720_live.jpg?sqp=COjxqZoG-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCDyvujcpz62sEsL9Ke4ADBpXWqOA", @@ -632,7 +632,7 @@ Paginator( VideoItem( id: "HxCcKzRAGWk", name: "(Music for Man ) Relaxing Whiskey Blues Music - Modern Electric Guitar Blues - JAZZ & BLUES", - length: Some(42899), + duration: Some(42899), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/HxCcKzRAGWk/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD5CNX5XaQAKrLpPq0nxmyUjP5yUw", @@ -669,7 +669,7 @@ Paginator( VideoItem( id: "HlHYOdZePSE", name: "Healing Music for Anxiety Disorders, Fears, Depression and Eliminate Negative Thoughts", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/HlHYOdZePSE/hq720_live.jpg?sqp=COjxqZoG-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBeqmmnli6rVdK1k7vcHlwE3kiNaw", @@ -706,7 +706,7 @@ Paginator( VideoItem( id: "CJ2AH3LJeic", name: "Coldplay Greatest Hits Full Album 2022 New Songs of Coldplay 2022", - length: Some(7781), + duration: Some(7781), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/CJ2AH3LJeic/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC3A9sBlWQZmFUI9BYe5KzvATqiqw", @@ -743,7 +743,7 @@ Paginator( VideoItem( id: "KJwzKxQ81iA", name: "Handmade Candy Making Collection / 수제 사탕 만들기 모음 / Korean Candy Store", - length: Some(3152), + duration: Some(3152), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/KJwzKxQ81iA/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCtm3YNbp3mK6RjsACZuz7fs-TUYA", 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 db4551c..37e1a8a 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 @@ -6,7 +6,7 @@ expression: map_res.c VideoItem( id: "OLcdyDte2e8", name: "THE EQUALIZER 3 Trailer German Deutsch (2023)", - length: Some(159), + duration: Some(159), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/OLcdyDte2e8/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDSQWUCHxZpKpiaN87tETWCmwq3Gw", @@ -48,7 +48,7 @@ expression: map_res.c VideoItem( id: "bV031nK_ipg", name: "Yalı Çapkını 30. Bölüm 1. Fragmanı | Olacaklara Hazır Ol!", - length: Some(48), + duration: Some(48), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/bV031nK_ipg/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCst780fpKDVMFjc1199-x0du0ySA", @@ -90,7 +90,7 @@ expression: map_res.c VideoItem( id: "Mk4vH7xWBKs", name: "\u{200b}Kızılcık Şerbeti 24. Bölüm 1. Fragman | \"Hayatımın o karanlık dönemi sona erdi...\"", - length: Some(55), + duration: Some(55), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Mk4vH7xWBKs/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDwAUm72bW_iLbmchMYfmhVyRodSw", @@ -132,7 +132,7 @@ expression: map_res.c VideoItem( id: "WonRyXzq89w", name: "Camdaki Kız 77. Bölüm Fragmanı | Bittim Artık Ben!", - length: Some(43), + duration: Some(43), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/WonRyXzq89w/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAkp3CwjmEyEZdqthocRMQXyBIicg", @@ -174,7 +174,7 @@ expression: map_res.c VideoItem( id: "2_OBxvKRYns", name: "Gülcemal 5. Bölüm 1. Fragmanı", - length: Some(55), + duration: Some(55), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/2_OBxvKRYns/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC4O5boUqlYlIsDZwbo6fnsanCl7Q", @@ -216,7 +216,7 @@ expression: map_res.c VideoItem( id: "EUlC8ue8NFI", name: "The Witcher: Season 3 | Official Teaser | Netflix", - length: Some(72), + duration: Some(72), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/EUlC8ue8NFI/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD4D9fynrZqM2a13VlyRgsiuok4iw", @@ -258,7 +258,7 @@ expression: map_res.c VideoItem( id: "RDE6Uz73A7g", name: "The Hunger Games: The Ballad of Songbirds & Snakes (2023) Official Trailer", - length: Some(169), + duration: Some(169), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/RDE6Uz73A7g/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDfw5gszhsKfBDVKANGxvbjYqUrMA", @@ -300,7 +300,7 @@ expression: map_res.c VideoItem( id: "W-h9kvKG2KA", name: "Aile 9. Bölüm 2. Fragman", - length: Some(87), + duration: Some(87), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/W-h9kvKG2KA/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBxWt_mjWojiOncMWNHGatqWikccQ", @@ -342,7 +342,7 @@ expression: map_res.c VideoItem( id: "wvijjwnljVU", name: "Yargı 63. Bölüm Fragman (Sezon Finali)", - length: Some(64), + duration: Some(64), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/wvijjwnljVU/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBOq9xG0GL3g1KrGSPG4aMtl8X-aA", @@ -384,7 +384,7 @@ expression: map_res.c VideoItem( id: "vMYWPpJAbvc", name: "Gülcemal 5. Bölüm 1. Fragmanı | Kimse Gülcemal\'i Aptal Yerine Koyamaz!", - length: Some(40), + duration: Some(40), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/vMYWPpJAbvc/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB2g7wt5xFM0vB8U3rMGAabwrYlNg", @@ -426,7 +426,7 @@ expression: map_res.c VideoItem( id: "PdhjMlyPjCU", name: "Kuruluş Osman 124.Bölüm Fragmanı", - length: Some(48), + duration: Some(48), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/PdhjMlyPjCU/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC_lGSiNFJ8e8e_Ch0yeeuWiCoBXQ", @@ -468,7 +468,7 @@ expression: map_res.c VideoItem( id: "19ikl8vy4zs", name: "THE EQUALIZER 3 - Official Red Band Trailer (HD)", - length: Some(183), + duration: Some(183), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/19ikl8vy4zs/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAu8SQ-1bqOwsfayIuxkXoAgIXCpQ", @@ -510,7 +510,7 @@ expression: map_res.c VideoItem( id: "HnzNZ0Mdx4I", name: "Ahsoka | Teaser Trailer | Disney+", - length: Some(112), + duration: Some(112), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/HnzNZ0Mdx4I/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBtihmDSlK3fAkKe_XDCkc45aGLbw", @@ -552,7 +552,7 @@ expression: map_res.c VideoItem( id: "Qz_yH-06Yi8", name: "Gönül Dağı 96. Bölüm Fragmanı", - length: Some(50), + duration: Some(50), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Qz_yH-06Yi8/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLARf_E6GKdpN8mKH5Zlx_CB46hsbw", @@ -594,7 +594,7 @@ expression: map_res.c VideoItem( id: "c9YhvwuFZyk", name: "DUNE: PART TWO – First Trailer (2023) Warner Bros. Pictures & Max", - length: Some(82), + duration: Some(82), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/c9YhvwuFZyk/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDS3E7kp_6wZ0s6nQmaMzt4AbWrsA", @@ -636,7 +636,7 @@ expression: map_res.c VideoItem( id: "iuk77TjvfmE", name: "Marvel Studios’ The Marvels | Teaser Trailer", - length: Some(117), + duration: Some(117), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/iuk77TjvfmE/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLANzHhP5yCjp4Vi6_sbR7eUIJSxQg", @@ -678,7 +678,7 @@ expression: map_res.c VideoItem( id: "itnqEauWQZM", name: "Transformers: Rise of the Beasts | Official Trailer (2023 Movie)", - length: Some(153), + duration: Some(153), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/itnqEauWQZM/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBq7T9kux2hDE86LXKo0CVuOOvRXQ", @@ -720,7 +720,7 @@ expression: map_res.c VideoItem( id: "0RPBk5awAIg", name: "Ben Bu Cihana Sığmazam 28. Bölüm Fragmanı | \'\'Kurbanı takip edeceksin...\'\' @atvturkiye", - length: Some(51), + duration: Some(51), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/0RPBk5awAIg/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDrlh_mZMpdQNJu3agq1lq7NqrT5Q", @@ -762,7 +762,7 @@ expression: map_res.c VideoItem( id: "_Hz5t58ePKs", name: "Üç Kız Kardeş 48. Bölüm Fragmanı | Türkan, gerçekleri Somer\'in yüzüne vuruyor!", - length: Some(56), + duration: Some(56), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/_Hz5t58ePKs/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAlr1DQooJjngcDHKtrnc5O3cGjfg", @@ -804,7 +804,7 @@ expression: map_res.c VideoItem( id: "lLMEejtqb0Q", name: "Kuruluş Osman 124. Bölüm Fragmanı | \"Yenişehir\'e saldıracak\" @atvturkiye", - length: Some(67), + duration: Some(67), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/lLMEejtqb0Q/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBw4qDswxhGwWZThSUiFGXbbDOltQ", @@ -846,7 +846,7 @@ expression: map_res.c VideoItem( id: "ZsrahE6znRA", name: "THE EQUALIZER 3 Official Trailer (2023)", - length: Some(200), + duration: Some(200), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ZsrahE6znRA/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLASkb818kKUEwexK0a_Jk6l3kYLQA", @@ -888,7 +888,7 @@ expression: map_res.c VideoItem( id: "GRyt3Ov4zz0", name: "Barbie | Teaser Trailer 2", - length: Some(105), + duration: Some(105), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/GRyt3Ov4zz0/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAnUrsc1AVHZ-RebWj2AQY_5EJx6g", @@ -930,7 +930,7 @@ expression: map_res.c VideoItem( id: "-fjqPyZPNB4", name: "Kraliçe 6. Bölüm 2. Fragmanı | Artık Kolay Kurtulamazsın", - length: Some(41), + duration: Some(41), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/-fjqPyZPNB4/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBYi8YOTivyUau0HXZhD7z8V_807g", @@ -972,7 +972,7 @@ expression: map_res.c VideoItem( id: "qUsGi4CSy-I", name: "Ömer 14. Bölüm 1. Fragmanı | Beni Sevdiğini Biliyorum!", - length: Some(54), + duration: Some(54), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/qUsGi4CSy-I/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD-yc6Yw6YsqqMsfPnd1pd1c-PqYQ", @@ -1014,7 +1014,7 @@ expression: map_res.c VideoItem( id: "cDPY7R2Hfrs", name: "Yalı Çapkını 31. Bölüm Fragmanı | \"Seyran\'ı Yıkan Haber\"", - length: Some(61), + duration: Some(61), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/cDPY7R2Hfrs/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLClKfy6N0I_csMaicmSRIhLYdn4Hg", @@ -1056,7 +1056,7 @@ expression: map_res.c VideoItem( id: "RJbR1MzR3k8", name: "Ömer 15. Bölüm 2. Fragman", - length: Some(56), + duration: Some(56), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/RJbR1MzR3k8/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDQ1TQ81aBzwvebUorA_ePbHx-G7Q", @@ -1098,7 +1098,7 @@ expression: map_res.c VideoItem( id: "iv6Bx_JwY_k", name: "Aldatmak 28. Bölüm Fragmanı | \'\'Ben boşanmak istemiyorum, Güzide affet beni\"", - length: Some(51), + duration: Some(51), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/iv6Bx_JwY_k/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC6diXarynpK0dUNRN2SbykWjavLA", @@ -1140,7 +1140,7 @@ expression: map_res.c VideoItem( id: "vrK13rVnVa8", name: "Aile 9. Bölüm 1. Fragman | “İlyas Koruzade oğlunu öldürdüğümüzü öğrenirse…”", - length: Some(68), + duration: Some(68), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/vrK13rVnVa8/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD6SVQaSpsjHzT0I8-3gPxvvH4Zvw", @@ -1182,7 +1182,7 @@ expression: map_res.c VideoItem( id: "iOG94aAeh9U", name: "Çöp Adam 18. Bölüm 2. Fragmanı | Kapat Beni!", - length: Some(63), + duration: Some(63), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/iOG94aAeh9U/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBr6zymASMNB8xszHbQwt2b1bMY_g", @@ -1224,7 +1224,7 @@ expression: map_res.c VideoItem( id: "7cuBIM5culc", name: "Tetikçinin Oğlu 4. Bölüm Fragmanı | \"Cenazeden Sonra Başlatırız...\"", - length: Some(54), + duration: Some(54), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/7cuBIM5culc/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCZCNzleOQsQFHIi-vGQr_x4p5ltw", 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 6830709..d78269f 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 @@ -6,7 +6,7 @@ expression: map_res.c VideoItem( id: "6T67I2w1G2U", name: "Extreme $1,000,000 Minecraft Challenge!", - length: Some(643), + duration: Some(643), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/6T67I2w1G2U/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB3pX_5AAn1wpsBoaAOycfn0VTKFw", @@ -48,7 +48,7 @@ expression: map_res.c VideoItem( id: "8TzH0ayIcdo", name: "The Darkest Story I\'ve Ever Read", - length: Some(4383), + duration: Some(4383), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/8TzH0ayIcdo/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCA_OSaK05YpZIF5EdSLzLT0YU58g", @@ -90,7 +90,7 @@ expression: map_res.c VideoItem( id: "s9PzYuVwCSE", name: "Lil Yachty - Poland (Directed by Cole Bennett)", - length: Some(89), + duration: Some(89), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/s9PzYuVwCSE/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBAAmFE81Aur-4JT0tewcUo2_9I8g", @@ -132,7 +132,7 @@ expression: map_res.c VideoItem( id: "y8qhSduN6sk", name: "PC Games on Console - Scott The Woz", - length: Some(1912), + duration: Some(1912), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/y8qhSduN6sk/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAKr5KTGdpoHjcP4E_wswYN46eDFA", @@ -174,7 +174,7 @@ expression: map_res.c VideoItem( id: "U9HAaHc3wnc", name: "Guess Iono’s Partner Pokémon! 🤔 | Pokémon Scarlet and Pokémon Violet", - length: Some(211), + duration: Some(211), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/U9HAaHc3wnc/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBN7eQhGDi_EFbN4jlcxln2ZM_lFw", @@ -216,7 +216,7 @@ expression: map_res.c VideoItem( id: "MBzi6hRrkww", name: "Celebrating Tito Puente", - length: Some(65), + duration: Some(65), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/MBzi6hRrkww/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCHXUw09LPtzYbP4SesBrr18DapJA", @@ -258,7 +258,7 @@ expression: map_res.c VideoItem( id: "DvkTX-AquQo", name: "Impossible 0.00001% Odds!", - length: Some(481), + duration: Some(481), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/DvkTX-AquQo/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBDyzgTEw_hcJsgbdkES1jpVf5JRQ", @@ -300,7 +300,7 @@ expression: map_res.c VideoItem( id: "T-8fCPT-ZKI", name: "DDG - Bulletproof Maybach (Official Music Video) ft. Offset", - length: Some(189), + duration: Some(189), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/T-8fCPT-ZKI/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDDUSR0YqD6Z3cqOnGQQ-BOToWQYg", @@ -342,7 +342,7 @@ expression: map_res.c VideoItem( id: "dFlDRhvM4L0", name: "『チェンソーマン』ノンクレジットオープニング / CHAINSAW MAN Opening│米津玄師 「KICK BACK」", - length: Some(90), + duration: Some(90), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/dFlDRhvM4L0/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBEBYFDdOM1Ozmr3W9LOopJxN_P0A", @@ -384,7 +384,7 @@ expression: map_res.c VideoItem( id: "G9W8CSckzAc", name: "why I disappeared", - length: Some(461), + duration: Some(461), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/G9W8CSckzAc/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDq0swwcUrhHDtJHYuMTVU8IIoQew", @@ -426,7 +426,7 @@ expression: map_res.c VideoItem( id: "PuOUI2kwftA", name: "Brooklyn\'s Wedding Day Vlog | Behind the Scenes", - length: Some(1265), + duration: Some(1265), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/PuOUI2kwftA/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBmzQC0d4E9Pi1ZmpbY9bWm0IdRbA", @@ -468,7 +468,7 @@ expression: map_res.c VideoItem( id: "lkOGhJX6LKU", name: "Social Security payments set for big increase; here’s what you need to know", - length: Some(120), + duration: Some(120), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/lkOGhJX6LKU/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCBjZbCrftL5Cs0RtJZSo4sWEtyCg", @@ -510,7 +510,7 @@ expression: map_res.c VideoItem( id: "zkvIzKwzYNc", name: "Kep1er 케플러 | ‘We Fresh\' M/V", - length: Some(225), + duration: Some(225), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/zkvIzKwzYNc/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAAz9DC0biWYPzEq5jaKrIKmNQQqQ", @@ -552,7 +552,7 @@ expression: map_res.c VideoItem( id: "foMQG_Bpcag", name: "*After 4* DESTROYED my last brain cell", - length: Some(2169), + duration: Some(2169), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/foMQG_Bpcag/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBGs9GSfJIKNbMnAjys9wM3lHZuUg", @@ -594,7 +594,7 @@ expression: map_res.c VideoItem( id: "iquXFFSEKyE", name: "NLE Choppa - Do It Again (ft. 2Rare) [HipHop Dance Musical] MEMPHIS EDITION", - length: Some(239), + duration: Some(239), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/iquXFFSEKyE/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC_lsIMgQGkprvJ2XNrzzYmJwDR6A", @@ -636,7 +636,7 @@ expression: map_res.c VideoItem( id: "ijj_hheGEi0", name: "Queen - Face It Alone (Official Lyric Video)", - length: Some(257), + duration: Some(257), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ijj_hheGEi0/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCZg5Tsu_SO-83YbNiH2xZhsRcCJw", @@ -678,7 +678,7 @@ expression: map_res.c VideoItem( id: "nwMxp7mRbx4", name: "Dimension 20: Neverafter Trailer", - length: Some(154), + duration: Some(154), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/nwMxp7mRbx4/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDOW_yf8647tavIGT5QD2GEl4a6Pw", @@ -720,7 +720,7 @@ expression: map_res.c VideoItem( id: "7IGD5URBGZ8", name: "We Got Engaged", - length: Some(1325), + duration: Some(1325), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/7IGD5URBGZ8/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLArNHqdfOCsU-_-O9g4hGna9iKODw", @@ -762,7 +762,7 @@ expression: map_res.c VideoItem( id: "eKAIQDxai9Y", name: "I remade every mob into Rainbow Friends in Minecraft", - length: Some(811), + duration: Some(811), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/eKAIQDxai9Y/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDhMxh2lEFEwSprWt_yuU7hkMZM-Q", @@ -804,7 +804,7 @@ expression: map_res.c VideoItem( id: "5sRVxb2wkGM", name: "We Bought Every Weird Ad We Saw", - length: Some(1602), + duration: Some(1602), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/5sRVxb2wkGM/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAXej_beyPyWOtxMGWzPqyqZTqoTA", @@ -846,7 +846,7 @@ expression: map_res.c VideoItem( id: "9gbScp1JVN4", name: "Making Renaissance Costumes IN ONE DAY[ish]", - length: Some(1317), + duration: Some(1317), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/9gbScp1JVN4/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAJBAPNoEovYX80iONt3IzuOVuA6Q", @@ -888,7 +888,7 @@ expression: map_res.c VideoItem( id: "qRao6FARFRo", name: "TURN THE TIDES - Harbor Agent Trailer // VALORANT", - length: Some(228), + duration: Some(228), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/qRao6FARFRo/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDsDWarEGRn1W9V3MLrVO7d3WY-IQ", @@ -930,7 +930,7 @@ expression: map_res.c VideoItem( id: "F8sGGKxSYNM", name: "Chares Oliveira: I’ll shock the world vs. Islam Makhachev at UFC 280 | ESPN MMA", - length: Some(231), + duration: Some(231), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/F8sGGKxSYNM/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDyGsylKlErNaV715pyvBrZauSkeA", @@ -972,7 +972,7 @@ expression: map_res.c VideoItem( id: "ZnQP13rYpUY", name: "Rochy RD, Tivi Gunz , Harryson, Onguito Wa, El Perrote Wz - Lokisla (Video Oficial) @Izy Music", - length: Some(265), + duration: Some(265), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ZnQP13rYpUY/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC7ChfY-IfOWPIkxa1xWoyLk0xYbg", @@ -1014,7 +1014,7 @@ expression: map_res.c VideoItem( id: "WArWsWRmdJw", name: "I made GeoGuessr in Among Us to challenge my friends...", - length: Some(1340), + duration: Some(1340), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/WArWsWRmdJw/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBYZitzXsjECJhDvadhWwuWOVwZag", @@ -1056,7 +1056,7 @@ expression: map_res.c VideoItem( id: "wP9zsx04fWY", name: "WE ARE COMING! to a city near you!", - length: Some(59), + duration: Some(59), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/wP9zsx04fWY/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBIjDcaW7ckphUnayl-n6pzlAYFjg", @@ -1098,7 +1098,7 @@ expression: map_res.c VideoItem( id: "Wz0Gb4_Q5rM", name: "Mariners vs. Astros ALDS Game 1 Highlights (10/11/22) | MLB Highlights", - length: Some(584), + duration: Some(584), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Wz0Gb4_Q5rM/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB3PeeIiEOIsG032IQ3Px9SR_jiBQ", @@ -1140,7 +1140,7 @@ expression: map_res.c VideoItem( id: "ICULY_gTngs", name: "The MCU Has Been Taking Us For Granted.", - length: Some(1025), + duration: Some(1025), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ICULY_gTngs/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD2bUs7W_ix398D2rVgylzSIBnFGA", @@ -1182,7 +1182,7 @@ expression: map_res.c VideoItem( id: "bunhaERjxmE", name: "Frog Slime 🐸✨ | Ep. 11 | Minecraft Empires S2 1.19", - length: Some(608), + duration: Some(608), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/bunhaERjxmE/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBY6YgyyGN7BI_IeutMirrxP5QUGQ", @@ -1224,7 +1224,7 @@ expression: map_res.c VideoItem( id: "tDhfNCUqZDs", name: "Bandmanrill x Sha Ek - “Jiggy In Jersey Pt2” (Shot by @RARI DIGITAL)", - length: Some(110), + duration: Some(110), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/tDhfNCUqZDs/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC6lvjmM55o1L6INcwpSPLeFCzaQQ", @@ -1266,7 +1266,7 @@ expression: map_res.c VideoItem( id: "MEZe4chAeZA", name: "Dog and Chainsaw | Chainsawman Ep 1 Reaction", - length: Some(1077), + duration: Some(1077), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/MEZe4chAeZA/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDYfqfJ9h6UWtybU8JFDtzUXJuV5w", @@ -1308,7 +1308,7 @@ expression: map_res.c VideoItem( id: "NMA_isZYsYQ", name: "KICK BACK", - length: Some(194), + duration: Some(194), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/NMA_isZYsYQ/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAU2OWhYt6nZn7kbdr6cs_PPjbDJQ", @@ -1350,7 +1350,7 @@ expression: map_res.c VideoItem( id: "qe6Oy8oEOhI", name: "Top 50 Amazon Prime Day October 2022 Deals (DAY 2!) 🔥 Better Deals Than Yesterday?!", - length: Some(752), + duration: Some(752), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/qe6Oy8oEOhI/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDd34j8LOCJih9Fsnu-WS-M3qngVg", @@ -1392,7 +1392,7 @@ expression: map_res.c VideoItem( id: "odWKEfp2QMY", name: "Måneskin - THE LONELIEST (Official Video)", - length: Some(288), + duration: Some(288), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/odWKEfp2QMY/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD7SeHmB9MNWYkX8nDeCdXoAKZ6Yg", @@ -1434,7 +1434,7 @@ expression: map_res.c VideoItem( id: "BRb4U99OU80", name: "M3GAN - official trailer", - length: Some(148), + duration: Some(148), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/BRb4U99OU80/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAw-yFnWg5tK761MdrhmJOdMuMDGQ", @@ -1476,7 +1476,7 @@ expression: map_res.c VideoItem( id: "F-7rQBY8uIQ", name: "Lil Baby - Heyy (Official Video)", - length: Some(193), + duration: Some(193), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/F-7rQBY8uIQ/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDY7ymysPG8lRSheq3-W4MbhtRmBg", @@ -1518,7 +1518,7 @@ expression: map_res.c VideoItem( id: "3sPxvgrKwEg", name: "Overwatch 2 - SEASON 1 HERO TIER LIST", - length: Some(1183), + duration: Some(1183), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/3sPxvgrKwEg/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBA6xO6RKysWCSeACOsc3C1SBxPfA", @@ -1560,7 +1560,7 @@ expression: map_res.c VideoItem( id: "_akEYecFdyM", name: "Overwatch 2 is free but I still feel scammed", - length: Some(904), + duration: Some(904), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/_akEYecFdyM/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBbbuGm0P2mw1kuXHeVE2F0hFx7Yg", @@ -1602,7 +1602,7 @@ expression: map_res.c VideoItem( id: "6MKcY5wTcpY", name: "LEE CHAE YEON (이채연) - HUSH RUSH MV", - length: Some(221), + duration: Some(221), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/6MKcY5wTcpY/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD_0r3q7jLRcKOUvJGLeRjArMovGQ", @@ -1644,7 +1644,7 @@ expression: map_res.c VideoItem( id: "xIeYK9w03i4", name: "『チェンソーマン』第1話スペシャルエンディング / CHAINSAW MAN #1 Ending│Vaundy 「CHAINSAW BLOOD」", - length: Some(92), + duration: Some(92), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/xIeYK9w03i4/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDWY5s8vA9p6_XE8aRRmVRuvHOqBw", @@ -1686,7 +1686,7 @@ expression: map_res.c VideoItem( id: "s4y_kzpCthQ", name: "Blaqbonez - Back In Uni (Official Music Video)", - length: Some(209), + duration: Some(209), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/s4y_kzpCthQ/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBPk5VXjRm8aE7lX1CVMAxIrWzapA", @@ -1728,7 +1728,7 @@ expression: map_res.c VideoItem( id: "_SKVFtLtJws", name: "Charli D\'Amelio and Mark Ballas Jazz (Week 4) | Dancing With The Stars on Disney+", - length: Some(92), + duration: Some(92), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/_SKVFtLtJws/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDRpcP_LvuCOJdrLUwX8lnxrR2YmQ", @@ -1770,7 +1770,7 @@ expression: map_res.c VideoItem( id: "BtJPMqyhj_M", name: "Money Man - Armed & Dangerous (Official Video)", - length: Some(110), + duration: Some(110), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/BtJPMqyhj_M/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAKQaUzq6QdywoVb9EkcReN98vaWg", @@ -1812,7 +1812,7 @@ expression: map_res.c VideoItem( id: "rge0deYBVv0", name: "Top 50 Amazon Prime Day October 2022 Deals 🤑 (Updated Hourly!!)", - length: Some(780), + duration: Some(780), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/rge0deYBVv0/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAzmN2M4RTZM-dvs0bL5T4kTJ0lLg", @@ -1854,7 +1854,7 @@ expression: map_res.c VideoItem( id: "luXUJ9LJcy0", name: "Sounds from the Sideline: Week 5 at LAR | 2022", - length: Some(432), + duration: Some(432), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/luXUJ9LJcy0/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCCpmvZp_lVu3h3X6-6ABP1Nc-PCQ", @@ -1896,7 +1896,7 @@ expression: map_res.c VideoItem( id: "avUEfUTGbhM", name: "Welding an excavator bucket and digging pond", - length: Some(1756), + duration: Some(1756), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/avUEfUTGbhM/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLANh1l5mzaeB_Y3b7VdTwMCBT3Crw", @@ -1938,7 +1938,7 @@ expression: map_res.c VideoItem( id: "bqEgXmTU2SI", name: "NEW 5-5-5 ACE PARAGON - The Goliath Doomship! (Bloons TD 6)", - length: Some(950), + duration: Some(950), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/bqEgXmTU2SI/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDTLMyn3TvV9ujsk_FCwTb7gLmLsA", @@ -1980,7 +1980,7 @@ expression: map_res.c VideoItem( id: "xhYj9JJnLHM", name: "DDG 25th SURPRISE BIRTHDAY PARTY!!", - length: Some(3252), + duration: Some(3252), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/xhYj9JJnLHM/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCGD3YlTctkj1ph4cwE3vVHXtb5Ag", @@ -2022,7 +2022,7 @@ expression: map_res.c VideoItem( id: "RlbajBvxR0M", name: "Werewolf by Night - The MCU Tries to Be Creative Again", - length: Some(366), + duration: Some(366), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/RlbajBvxR0M/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDrKJhTwLFv537H7iODNIm-rdJAaA", @@ -2064,7 +2064,7 @@ expression: map_res.c VideoItem( id: "yX_DwPnkycc", name: "THE BEST RESULTS I\'VE SEEN YET! (PROGRESS UPDATE)", - length: Some(906), + duration: Some(906), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/yX_DwPnkycc/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAPXdY5LCTadxPxXkG17mX25xiqoA", @@ -2106,7 +2106,7 @@ expression: map_res.c VideoItem( id: "CtpdMkKvB6U", name: "hi, I\'m Dream.", - length: Some(342), + duration: Some(342), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/CtpdMkKvB6U/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCQqAxmXw6s3xgVPE4f9--KO_vctQ", @@ -2148,7 +2148,7 @@ expression: map_res.c VideoItem( id: "t6fIp7mMJ90", name: "what happened.", - length: Some(332), + duration: Some(332), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/t6fIp7mMJ90/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAU4FUfZhmWVoLFj0XTx8S9qa40xw", @@ -2190,7 +2190,7 @@ expression: map_res.c VideoItem( id: "dFlDRhvM4L0", name: "『チェンソーマン』ノンクレジットオープニング / CHAINSAW MAN Opening│米津玄師 「KICK BACK」", - length: Some(90), + duration: Some(90), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/dFlDRhvM4L0/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBEBYFDdOM1Ozmr3W9LOopJxN_P0A", @@ -2232,7 +2232,7 @@ expression: map_res.c VideoItem( id: "6T67I2w1G2U", name: "Extreme $1,000,000 Minecraft Challenge!", - length: Some(643), + duration: Some(643), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/6T67I2w1G2U/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB3pX_5AAn1wpsBoaAOycfn0VTKFw", @@ -2274,7 +2274,7 @@ expression: map_res.c VideoItem( id: "DvkTX-AquQo", name: "Impossible 0.00001% Odds!", - length: Some(481), + duration: Some(481), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/DvkTX-AquQo/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBDyzgTEw_hcJsgbdkES1jpVf5JRQ", @@ -2316,7 +2316,7 @@ expression: map_res.c VideoItem( id: "F-7rQBY8uIQ", name: "Lil Baby - Heyy (Official Video)", - length: Some(193), + duration: Some(193), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/F-7rQBY8uIQ/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDY7ymysPG8lRSheq3-W4MbhtRmBg", @@ -2358,7 +2358,7 @@ expression: map_res.c VideoItem( id: "atwHMKZ0SLU", name: "Boosie in the trap!", - length: Some(9879), + duration: Some(9879), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/atwHMKZ0SLU/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBwEo-0SV6JIHJv5C570MVj8NOF0g", @@ -2400,7 +2400,7 @@ expression: map_res.c VideoItem( id: "Ut68FBnWbAI", name: "ok, let\'s talk about it. - The TryPod Ep. 181", - length: Some(4226), + duration: Some(4226), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Ut68FBnWbAI/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBYyU_Bn4adi0X5zYDC4SiLWvbBgw", @@ -2442,7 +2442,7 @@ expression: map_res.c VideoItem( id: "_Z3QKkl1WyM", name: "Marvel Studios’ Black Panther: Wakanda Forever | Official Trailer", - length: Some(131), + duration: Some(131), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/_Z3QKkl1WyM/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA4FKEkGFypg_-RKBiNwaYebu2-Ag", @@ -2484,7 +2484,7 @@ expression: map_res.c VideoItem( id: "nMPCXuvL8EM", name: "The Super Mario Bros. Movie Direct", - length: Some(482), + duration: Some(482), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/nMPCXuvL8EM/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBYYByVEhQgy1LwCBhwJQI0yTRt-A", @@ -2526,7 +2526,7 @@ expression: map_res.c VideoItem( id: "SS7HXxy3_2c", name: "Try Guys - SNL", - length: Some(352), + duration: Some(352), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/SS7HXxy3_2c/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD82-aIeAntzTzLV2B2r_DxDZsspw", @@ -2568,7 +2568,7 @@ expression: map_res.c VideoItem( id: "rvInpw0WGLc", name: "Town Hall 15 Is Here! Clash of Clans New Update Available Now!", - length: Some(71), + duration: Some(71), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/rvInpw0WGLc/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCQvtDnFgRNeKVUdta-byfT-GB5Zg", @@ -2610,7 +2610,7 @@ expression: map_res.c VideoItem( id: "etV_nxVU6l8", name: "Wedding Stereotypes", - length: Some(676), + duration: Some(676), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/etV_nxVU6l8/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAnKF_WbQvYdKrkG8ATtN_vXzJxYg", @@ -2652,7 +2652,7 @@ expression: map_res.c VideoItem( id: "i7ytY9Onf9o", name: "I Met Dream In Real Life", - length: Some(569), + duration: Some(569), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/i7ytY9Onf9o/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDBZtBV46pYtkX9iYznLGYBDV2sTg", @@ -2694,7 +2694,7 @@ expression: map_res.c VideoItem( id: "jYSlpC6Ud2A", name: "Stray Kids \"CASE 143\" M/V", - length: Some(221), + duration: Some(221), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/jYSlpC6Ud2A/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD2-XAcmCTxdI3vOWaftHv6XoRIjA", @@ -2736,7 +2736,7 @@ expression: map_res.c VideoItem( id: "XKRW1zgkCVc", name: "Where Animals\' Scientific Names Come From", - length: Some(581), + duration: Some(581), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/XKRW1zgkCVc/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDMs2hX0Ck9rFu-oRkmrL0eHM71qw", @@ -2778,7 +2778,7 @@ expression: map_res.c VideoItem( id: "Th_O5kayAM0", name: "Que Vas A Hacer - Nivel Codiciado X Jose Mejia (Video Oficial)", - length: Some(189), + duration: Some(189), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Th_O5kayAM0/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBgHmQpwmdauYj6wsz55dkPM39TAA", @@ -2820,7 +2820,7 @@ expression: map_res.c VideoItem( id: "O-mtWoF8umw", name: "Yahritza Y Su Esencia & Ivan Cornejo - Inseparables (Official Video)", - length: Some(178), + duration: Some(178), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/O-mtWoF8umw/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCtdQW2CJyeeztP1cI0vepZg97Hig", @@ -2862,7 +2862,7 @@ expression: map_res.c VideoItem( id: "rFO1iqDpMZU", name: "I Collected Every Illegal Item In Minecraft Hardcore", - length: Some(1402), + duration: Some(1402), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/rFO1iqDpMZU/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCcLAY1WamnInJO-1Nboej_DM9-6A", @@ -2904,7 +2904,7 @@ expression: map_res.c VideoItem( id: "-1vsm5bhoyE", name: "Grupo Frontera - No Se Va (Letra Oficial)", - length: Some(192), + duration: Some(192), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/-1vsm5bhoyE/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDD0Coytauq-4Xhp5W4b864_CsLpQ", @@ -2946,7 +2946,7 @@ expression: map_res.c VideoItem( id: "XQUiabixHzo", name: "I Speedran the $0.01 Challenge", - length: Some(933), + duration: Some(933), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/XQUiabixHzo/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAKl4svV224P1eNszwLKSlbVjp5ug", @@ -2988,7 +2988,7 @@ expression: map_res.c VideoItem( id: "8TzH0ayIcdo", name: "The Darkest Story I\'ve Ever Read", - length: Some(4383), + duration: Some(4383), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/8TzH0ayIcdo/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCA_OSaK05YpZIF5EdSLzLT0YU58g", @@ -3030,7 +3030,7 @@ expression: map_res.c VideoItem( id: "xkwc5TZmdIs", name: "GloRilla Glows Up In Every Way With Performance Of \"Tomorrow!\" & \"F.N.F.\" | Hip Hop Awards \'22", - length: Some(146), + duration: Some(146), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/xkwc5TZmdIs/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCAvkSqlB9LUtsH5VyLSR-wRYcl6w", @@ -3072,7 +3072,7 @@ expression: map_res.c VideoItem( id: "eJPLiT1kCSM", name: "Museums: Last Week Tonight with John Oliver (HBO)", - length: Some(2049), + duration: Some(2049), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/eJPLiT1kCSM/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBN3_gN9YEBvh7PwVYx3KysJjhuxg", @@ -3114,7 +3114,7 @@ expression: map_res.c VideoItem( id: "zwa7NzNBQig", name: "GloRilla, Cardi B - Tomorrow 2 (Official Music Video)", - length: Some(214), + duration: Some(214), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/zwa7NzNBQig/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAPmMVF2V__0t_FLFknkZ-bUtDklA", @@ -3156,7 +3156,7 @@ expression: map_res.c VideoItem( id: "BHFcF0zcCgA", name: "Hurricane Ian Destroyed My Hometown!", - length: Some(647), + duration: Some(647), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/BHFcF0zcCgA/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB8rqMEm3EvFYXSRQoYAWJ_NIQCAQ", @@ -3198,7 +3198,7 @@ expression: map_res.c VideoItem( id: "xhYj9JJnLHM", name: "DDG 25th SURPRISE BIRTHDAY PARTY!!", - length: Some(3252), + duration: Some(3252), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/xhYj9JJnLHM/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCGD3YlTctkj1ph4cwE3vVHXtb5Ag", @@ -3240,7 +3240,7 @@ expression: map_res.c VideoItem( id: "9YsEQaW0f2c", name: "Eddie Robinson Jr. goes off on Deion Sanders and Coach Prime responds", - length: Some(439), + duration: Some(439), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/9YsEQaW0f2c/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDfutvJ5xzE0mXHpl-ND0ejlF7GSQ", @@ -3282,7 +3282,7 @@ expression: map_res.c VideoItem( id: "m-SB3cpzLUU", name: "i\'m sorry.", - length: Some(322), + duration: Some(322), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/m-SB3cpzLUU/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLADeuenvZbbzaLfUD76EmkqoK2XqQ", @@ -3324,7 +3324,7 @@ expression: map_res.c VideoItem( id: "TRGHIN2PGIA", name: "Christian Bale Breaks Down His Most Iconic Characters | GQ", - length: Some(1381), + duration: Some(1381), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/TRGHIN2PGIA/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDPK6QNVDxrPskvyPbELvgi5ER-9Q", @@ -3366,7 +3366,7 @@ expression: map_res.c VideoItem( id: "U9HAaHc3wnc", name: "Guess Iono’s Partner Pokémon! 🤔 | Pokémon Scarlet and Pokémon Violet", - length: Some(211), + duration: Some(211), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/U9HAaHc3wnc/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBN7eQhGDi_EFbN4jlcxln2ZM_lFw", @@ -3408,7 +3408,7 @@ expression: map_res.c VideoItem( id: "4ywb2pXRYZI", name: "Quavo & Takeoff - To The Bone feat. YoungBoy Never Broke Again (Official visualizer)", - length: Some(284), + duration: Some(284), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/4ywb2pXRYZI/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDmcKY4axF-lri29VZdveVQ-PnhoQ", @@ -3450,7 +3450,7 @@ expression: map_res.c VideoItem( id: "wP9zsx04fWY", name: "WE ARE COMING! to a city near you!", - length: Some(59), + duration: Some(59), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/wP9zsx04fWY/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBIjDcaW7ckphUnayl-n6pzlAYFjg", @@ -3492,7 +3492,7 @@ expression: map_res.c VideoItem( id: "9acxn7qAST4", name: "Overwatch 2 Animated Short | “Kiriko”", - length: Some(587), + duration: Some(587), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/9acxn7qAST4/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDdF-kdruGuT-XY8lfOvcyuHICr0g", @@ -3534,7 +3534,7 @@ expression: map_res.c VideoItem( id: "8-tQKwB3RKw", name: "Big Boogie - Backend (Remix) Shot by @Camera Gawd", - length: Some(164), + duration: Some(164), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/8-tQKwB3RKw/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC_ya-jo9iSbGcwaV4bcKKpnuNUcw", @@ -3576,7 +3576,7 @@ expression: map_res.c VideoItem( id: "5HNy7b6bz4g", name: "I Tried Out for an NBA Team and This Happened…", - length: Some(805), + duration: Some(805), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/5HNy7b6bz4g/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBFGg1F188jylbs7w7_LC1vIGmrHA", @@ -3618,7 +3618,7 @@ expression: map_res.c VideoItem( id: "Uq9gPaIzbe8", name: "Sam Smith, Kim Petras - Unholy", - length: Some(276), + duration: Some(276), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Uq9gPaIzbe8/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB20DY1i0dGRazj2X17cJ9ac2B_ZA", @@ -3660,7 +3660,7 @@ expression: map_res.c VideoItem( id: "78sCR9mwBV4", name: "How Draymond Green Was after hitting Jordan Poole in practice", - length: Some(76), + duration: Some(76), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/78sCR9mwBV4/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBjPBTgNYle-y44-wEwqvCuR81VUw", @@ -3702,7 +3702,7 @@ expression: map_res.c VideoItem( id: "2U9kNnHvE8o", name: "LAKERS at WARRIORS | NBA PRESEASON FULL GAME HIGHLIGHTS | October 9, 2022", - length: Some(585), + duration: Some(585), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/2U9kNnHvE8o/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAio7KicdLbL_aj4CxCaxBZ6NtYkA", @@ -3744,7 +3744,7 @@ expression: map_res.c VideoItem( id: "xXGFb19rLtE", name: "Bray Wyatt returns to WWE: WWE Extreme Rules 2022 (WWE Network Exclusive)", - length: Some(106), + duration: Some(106), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/xXGFb19rLtE/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBb72TJR1vnUOrlV2LA4_bJjmi_5A", @@ -3786,7 +3786,7 @@ expression: map_res.c VideoItem( id: "7IGD5URBGZ8", name: "We Got Engaged", - length: Some(1325), + duration: Some(1325), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/7IGD5URBGZ8/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLArNHqdfOCsU-_-O9g4hGna9iKODw", @@ -3828,7 +3828,7 @@ expression: map_res.c VideoItem( id: "5sRVxb2wkGM", name: "We Bought Every Weird Ad We Saw", - length: Some(1602), + duration: Some(1602), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/5sRVxb2wkGM/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAXej_beyPyWOtxMGWzPqyqZTqoTA", @@ -3870,7 +3870,7 @@ expression: map_res.c VideoItem( id: "4YEEDqke-D0", name: "Jump into a Paldean Journey | Pokémon Scarlet and Pokémon Violet", - length: Some(847), + duration: Some(847), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/4YEEDqke-D0/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDSK4tHB8wlTj2l2WVLtwX_ybVr6Q", @@ -3912,7 +3912,7 @@ expression: map_res.c VideoItem( id: "rYjmxcV1se4", name: "Film Theory: Dora is CURSED! (Dora The Explorer)", - length: Some(1085), + duration: Some(1085), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/rYjmxcV1se4/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA-U-oTzZlg6Tw4UDUaUdLuqbVpHQ", @@ -3954,7 +3954,7 @@ expression: map_res.c VideoItem( id: "y8qhSduN6sk", name: "PC Games on Console - Scott The Woz", - length: Some(1912), + duration: Some(1912), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/y8qhSduN6sk/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAKr5KTGdpoHjcP4E_wswYN46eDFA", @@ -3996,7 +3996,7 @@ expression: map_res.c VideoItem( id: "yTLzGSJJ5ts", name: "I Spent 50 Hours Customizing The World\'s Largest Xbox!", - length: Some(886), + duration: Some(886), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/yTLzGSJJ5ts/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD_jLg-SFII8oghifvKnU8q_witGA", @@ -4038,7 +4038,7 @@ expression: map_res.c VideoItem( id: "x1u8-i2pWg0", name: "Witness Hurricane Ian As It Hits My Home In Cape Coral, FL And View The Aftermath", - length: Some(855), + duration: Some(855), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/x1u8-i2pWg0/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB1rjvuJLU6f3DpFqIoA6tFDQJvGg", @@ -4080,7 +4080,7 @@ expression: map_res.c VideoItem( id: "FfWtIaDtfYk", name: "Let’s Travel to The Most Extreme Place in The Universe", - length: Some(766), + duration: Some(766), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/FfWtIaDtfYk/hqdefault.jpg?sqp=-oaymwEbCNIBEHZIVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBvWiqbrr3zFTch1lCD52GIojWf8Q", 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 a360227..6efe469 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 @@ -149,7 +149,7 @@ VideoDetails( VideoItem( id: "aRpkasmB6so", name: "18 de setembro de 2022", - length: Some(184), + duration: Some(184), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/aRpkasmB6so/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBeNO-THn7_jo4Qy5uA9y_3ilD2TA", @@ -186,7 +186,7 @@ VideoDetails( VideoItem( id: "lCXqNCd0m10", name: "aespa(エスパ) Savage + Next Level + Black Mamba💕Stage Mix Compilation🔥에스파 무대모음 KBS Music Bank", - length: Some(898), + duration: Some(898), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/lCXqNCd0m10/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAHH0ng9zLs0Vy4d6oTsahpPFj31w", @@ -223,7 +223,7 @@ VideoDetails( VideoItem( id: "tDukIfFzX18", name: "[MV] Hwa Sa(화사) _ Maria(마리아)", - length: Some(231), + duration: Some(231), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/tDukIfFzX18/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA0F06QIAvjOJc_7TmQYcfKN5Zfaw", @@ -260,7 +260,7 @@ VideoDetails( VideoItem( id: "e-ORhEE9VVg", name: "Taylor Swift - Blank Space", - length: Some(273), + duration: Some(273), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/e-ORhEE9VVg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBK6z4g715U9cgNRnG2IZ4wEQZBkA", @@ -297,7 +297,7 @@ VideoDetails( VideoItem( id: "qfVuRQX0ydQ", name: "[MV] Weeekly(위클리) _ After School", - length: Some(225), + duration: Some(225), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/qfVuRQX0ydQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLArxgEVeqsLChXxDMe7SmFGnesqmQ", @@ -334,7 +334,7 @@ VideoDetails( VideoItem( id: "tyrVtwE8Gv0", name: "NCT U 엔시티 유 \'Make A Wish (Birthday Song)\' MV", - length: Some(249), + duration: Some(249), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/tyrVtwE8Gv0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDjumgWjrKFVPhKG0HyX9aEdP203g", @@ -371,7 +371,7 @@ VideoDetails( VideoItem( id: "X-uJtV8ScYk", name: "Stray Kids \"Back Door\" M/V", - length: Some(218), + duration: Some(218), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/X-uJtV8ScYk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDTw325wBimEPkWb6vRUPSj2b13gw", @@ -408,7 +408,7 @@ VideoDetails( VideoItem( id: "MjCZfZfucEc", name: "ITZY “LOCO” M/V @ITZY", - length: Some(233), + duration: Some(233), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/MjCZfZfucEc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB6oWVmDxMyArxL6GuaFhT_vwg_nA", @@ -445,7 +445,7 @@ VideoDetails( VideoItem( id: "2FzSv66c7TQ", name: "A E S P A (에스파) ALL SONGS PLAYLIST 2022 | 에스파 노래 모음", - length: Some(3441), + duration: Some(3441), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/2FzSv66c7TQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBJl1tQDODos5G6RJlpg4R-pvWNZA", @@ -482,7 +482,7 @@ VideoDetails( VideoItem( id: "CevxZvSJLk8", name: "Katy Perry - Roar (Official)", - length: Some(270), + duration: Some(270), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/CevxZvSJLk8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCEgRARw7Hrci5d3vmqm-ZWYOe-zA", @@ -519,7 +519,7 @@ VideoDetails( VideoItem( id: "bwmSjveL3Lc", name: "BLACKPINK - \'붐바야 (BOOMBAYAH)\' M/V", - length: Some(244), + duration: Some(244), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/bwmSjveL3Lc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDRzdujtL9QM0RZ8elD00oS2fXMhg", @@ -556,7 +556,7 @@ VideoDetails( VideoItem( id: "CM4CkVFmTds", name: "TWICE \"I CAN\'T STOP ME\" M/V", - length: Some(221), + duration: Some(221), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/CM4CkVFmTds/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBfd7QADIduQSR2ESLIp1k5gxxNDg", @@ -593,7 +593,7 @@ VideoDetails( VideoItem( id: "ioNng23DkIM", name: "BLACKPINK - \'How You Like That\' M/V", - length: Some(184), + duration: Some(184), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ioNng23DkIM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLANTO784ijwW2y4bhZaWcfKzEe9iQ", @@ -630,7 +630,7 @@ VideoDetails( VideoItem( id: "BL-aIpCLWnU", name: "Black Mamba", - length: Some(175), + duration: Some(175), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/BL-aIpCLWnU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBFFU1Bs-mHwS-BGXCbvWM2SS41kw", @@ -667,7 +667,7 @@ VideoDetails( VideoItem( id: "Jh4QFaPmdss", name: "(G)I-DLE - \'TOMBOY\' Official Music Video", - length: Some(198), + duration: Some(198), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Jh4QFaPmdss/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAQf02NuUqxsFasUAqJQYGS6SMDkw", @@ -704,7 +704,7 @@ VideoDetails( VideoItem( id: "WPdWvnAAurg", name: "aespa 에스파 \'Savage\' MV", - length: Some(259), + duration: Some(259), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/WPdWvnAAurg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDQGxlnDkAdMYRm2cdkDmiDbBDpYw", @@ -741,7 +741,7 @@ VideoDetails( VideoItem( id: "Z7yNvMzz2zg", name: "Red Velvet 레드벨벳 \'Psycho\' Performance Video", - length: Some(216), + duration: Some(216), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Z7yNvMzz2zg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD2ES19GaWF-U_La_tC7pFwGAL2fQ", 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 68e704d..1310e6a 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 @@ -149,7 +149,7 @@ VideoDetails( VideoItem( id: "WPdWvnAAurg", name: "aespa 에스파 \'Savage\' MV", - length: Some(259), + duration: Some(259), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/WPdWvnAAurg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDQGxlnDkAdMYRm2cdkDmiDbBDpYw", @@ -186,7 +186,7 @@ VideoDetails( VideoItem( id: "4TWR90KJl84", name: "aespa 에스파 \'Next Level\' MV", - length: Some(236), + duration: Some(236), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/4TWR90KJl84/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBYCGc-AKsDC6UpJgIZw2_VsqjVWA", @@ -223,7 +223,7 @@ VideoDetails( VideoItem( id: "uR8Mrt1IpXg", name: "Red Velvet 레드벨벳 \'Psycho\' MV", - length: Some(216), + duration: Some(216), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/uR8Mrt1IpXg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAnAsLcZaI1uWDB4nag1KnNotAUWw", @@ -260,7 +260,7 @@ VideoDetails( VideoItem( id: "UUUWIGx3hDE", name: "ITZY \"WANNABE\" Performance Video", - length: Some(198), + duration: Some(198), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/UUUWIGx3hDE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAe05b8SVKrrSU0MSOcxluyp1R_aA", @@ -297,7 +297,7 @@ VideoDetails( VideoItem( id: "NoYKBAajoyo", name: "EVERGLOW (에버글로우) - DUN DUN MV", - length: Some(209), + duration: Some(209), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/NoYKBAajoyo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC3OhCUbjpIclmjfV8W8T98nVI5pA", @@ -334,7 +334,7 @@ VideoDetails( VideoItem( id: "32si5cfrCNc", name: "BLACKPINK - \'How You Like That\' DANCE PERFORMANCE VIDEO", - length: Some(181), + duration: Some(181), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/32si5cfrCNc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBjimPvMxDwTmPBlKX8Buo9EjMeOg", @@ -371,7 +371,7 @@ VideoDetails( VideoItem( id: "CM4CkVFmTds", name: "TWICE \"I CAN\'T STOP ME\" M/V", - length: Some(221), + duration: Some(221), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/CM4CkVFmTds/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBfd7QADIduQSR2ESLIp1k5gxxNDg", @@ -408,7 +408,7 @@ VideoDetails( VideoItem( id: "UZPZyd5vE1c", name: "Shut Down", - length: Some(176), + duration: Some(176), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/UZPZyd5vE1c/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD0elXCfbeIuNyk1C4xJkfSUZrJPg", @@ -445,7 +445,7 @@ VideoDetails( VideoItem( id: "CKZvWhCqx1s", name: "ROSÉ - \'On The Ground\' M/V", - length: Some(189), + duration: Some(189), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/CKZvWhCqx1s/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC4uq8-ViYtFE0-2feawfW_IEADxg", @@ -482,7 +482,7 @@ VideoDetails( VideoItem( id: "fE2h3lGlOsk", name: "ITZY \"WANNABE\" M/V @ITZY", - length: Some(219), + duration: Some(219), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/fE2h3lGlOsk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC44Q0lpu5a8rltgTMxi0X2QA6jnQ", @@ -519,7 +519,7 @@ VideoDetails( VideoItem( id: "Y8JFxS1HlDo", name: "IVE 아이브 \'LOVE DIVE\' MV", - length: Some(179), + duration: Some(179), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Y8JFxS1HlDo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDf8U7fRH0R-qXbbGwKwpKBCeOa4A", @@ -556,7 +556,7 @@ VideoDetails( VideoItem( id: "dNCWe_6HAM8", name: "LISA - \'MONEY\' EXCLUSIVE PERFORMANCE VIDEO", - length: Some(171), + duration: Some(171), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/dNCWe_6HAM8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDdT1JD7bbEJ3z7fsQQ59tWeQUwkw", @@ -593,7 +593,7 @@ VideoDetails( VideoItem( id: "tyrVtwE8Gv0", name: "NCT U 엔시티 유 \'Make A Wish (Birthday Song)\' MV", - length: Some(249), + duration: Some(249), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/tyrVtwE8Gv0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDjumgWjrKFVPhKG0HyX9aEdP203g", @@ -630,7 +630,7 @@ VideoDetails( VideoItem( id: "gU2HqP4NxUs", name: "BLACKPINK - ‘Pretty Savage’ 1011 SBS Inkigayo", - length: Some(208), + duration: Some(208), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/gU2HqP4NxUs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD_x0P5jlgH-Xg013D6_0HCVjmpEQ", @@ -667,7 +667,7 @@ VideoDetails( VideoItem( id: "Ujb-gvqsoi0", name: "Red Velvet - IRENE & SEULGI \'Monster\' MV", - length: Some(182), + duration: Some(182), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Ujb-gvqsoi0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBrGO-Gkm-UqCln07oFNKfFgioXYQ", @@ -704,7 +704,7 @@ VideoDetails( VideoItem( id: "KhTeiaCezwM", name: "[MV] MAMAMOO (마마무) - HIP", - length: Some(211), + duration: Some(211), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/KhTeiaCezwM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCMGgSAC2vrBvhW5_JvAG6-DmNv_Q", @@ -741,7 +741,7 @@ VideoDetails( VideoItem( id: "XJDPzNzQ3RE", name: "Run BTS! 2022 Special Episode - Fly BTS Fly Part 1", - length: Some(2070), + duration: Some(2070), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/XJDPzNzQ3RE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDLdeTJMU0EXsKD20_m1oPEHNfJig", @@ -778,7 +778,7 @@ VideoDetails( VideoItem( id: "0lXwMdnpoFQ", name: "aespa 에스파 \'도깨비불 (Illusion)\' Dance Practice", - length: Some(210), + duration: Some(210), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/0lXwMdnpoFQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDvTjZu5GC9ZxiNY88whzTOHX-g1Q", @@ -815,7 +815,7 @@ VideoDetails( VideoItem( id: "IHNzOHi8sJs", name: "BLACKPINK - ‘뚜두뚜두 (DDU-DU DDU-DU)’ M/V", - length: Some(216), + duration: Some(216), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/IHNzOHi8sJs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCzBqBp42z958fkbmx3yCOebx3aaA", 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 b91086b..a33cd1a 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 @@ -633,7 +633,7 @@ VideoDetails( VideoItem( id: "t03rmc-prJo", name: "This PC took 600 HOURS to Build!", - length: Some(1505), + duration: Some(1505), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/t03rmc-prJo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDCfqUXpZWf6Gv320YOu1UW02Sv5Q", @@ -670,7 +670,7 @@ VideoDetails( VideoItem( id: "4ozYlgOuYis", name: "They told me I was stupid - heating my pool with computers", - length: Some(691), + duration: Some(691), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/4ozYlgOuYis/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA4mG_tVV8TLuMJDGCGvTmjfwtddQ", @@ -707,7 +707,7 @@ VideoDetails( VideoItem( id: "THxkY59_xko", name: "Is the fastest GPU ALWAYS the best?", - length: Some(979), + duration: Some(979), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/THxkY59_xko/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCmaBvFJBMIkBuT8khxFcTtfaZ2XA", @@ -744,7 +744,7 @@ VideoDetails( VideoItem( id: "UJ-KZzVUV7U", name: "This toaster cost HOW MUCH?? - Revolution InstaGLO R270 Toaster", - length: Some(880), + duration: Some(880), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/UJ-KZzVUV7U/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBurQQ2fWpDYmCQ4aqgowGEBfWEYg", @@ -781,7 +781,7 @@ VideoDetails( VideoItem( id: "yayAQAC1XiE", name: "Intel PLEASE let me Overclock this!", - length: Some(799), + duration: Some(799), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/yayAQAC1XiE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAZerWHd_ctrAd3FaOyCFXvh-N5-A", @@ -818,7 +818,7 @@ VideoDetails( VideoItem( id: "y4T374GtKLI", name: "When The Grid Goes Down: How To Power Essential Devices (i.e., Refrigerator)", - length: Some(1239), + duration: Some(1239), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/y4T374GtKLI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDzlGsbn7uLQb0yPGGU8kTLU4kPJg", @@ -855,7 +855,7 @@ VideoDetails( VideoItem( id: "b3x28s61q3c", name: "The most EXPENSIVE thing I own.", - length: Some(887), + duration: Some(887), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/b3x28s61q3c/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAWb5ZrdRdn4SCsBxY_w8QILUmdbA", @@ -892,7 +892,7 @@ VideoDetails( VideoItem( id: "LQ95XJAwaoc", name: "My favorite car (sucks) - Lucid Air GT", - length: Some(1162), + duration: Some(1162), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/LQ95XJAwaoc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCipJpt-2zTzIpJu3bTaXsTai4Avw", @@ -929,7 +929,7 @@ VideoDetails( VideoItem( id: "WVjtK71qqXU", name: "I bought a SECOND GPU… but NOT for gaming…", - length: Some(754), + duration: Some(754), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/WVjtK71qqXU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDKEZ4b5LpUceHDgWzrKoASZh8WYA", @@ -966,7 +966,7 @@ VideoDetails( VideoItem( id: "vtvFVH9JdNI", name: "I bought every Nintendo Console EVER.", - length: Some(1381), + duration: Some(1381), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/vtvFVH9JdNI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCztBNH12-uuinjoT7QXyYAHJaWpg", @@ -1003,7 +1003,7 @@ VideoDetails( VideoItem( id: "J6Ga4wciA2k", name: "THIS Wish.com Gaming PC is WORSE!", - length: Some(1545), + duration: Some(1545), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/J6Ga4wciA2k/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB6GXKbOi7UeTFxMZvVU2v4Mefzaw", @@ -1040,7 +1040,7 @@ VideoDetails( VideoItem( id: "CsoKWsZ-Tyw", name: "The Personal Gaming Theater - HOLY $H!T Samsung Odyssey Ark", - length: Some(1182), + duration: Some(1182), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/CsoKWsZ-Tyw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDY9DPUvV7_iZ4Q_Vs5aH04-D1Wiw", @@ -1077,7 +1077,7 @@ VideoDetails( VideoItem( id: "9T98VsMe3oo", name: "How are we going to do this?", - length: Some(1124), + duration: Some(1124), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/9T98VsMe3oo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLARsAavwhjYXofUNZb9CHY-F2GyVg", @@ -1114,7 +1114,7 @@ VideoDetails( VideoItem( id: "5Hxr9k5Vdc4", name: "Building the $1,000,000 Computer", - length: Some(1659), + duration: Some(1659), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/5Hxr9k5Vdc4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAWGQOhyUyIkDDwX1V0dSNuvKVvTw", @@ -1151,7 +1151,7 @@ VideoDetails( VideoItem( id: "12Hcbx33Rb4", name: "BREAKING NEWS! - EVGA will no longer do business with NVIDIA", - length: Some(1262), + duration: Some(1262), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/12Hcbx33Rb4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAM7iCw78-SfuzT5AgSv6ACOVDelQ", @@ -1188,7 +1188,7 @@ VideoDetails( VideoItem( id: "EHkkwCjQzsc", name: "Prepper (2016) | Full Post-Apocalyptic Thriller Movie HD", - length: Some(5982), + duration: Some(5982), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/EHkkwCjQzsc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDSjdCyfQ-R4ButwCMS4bFpYZn3VA", @@ -1225,7 +1225,7 @@ VideoDetails( VideoItem( id: "AOdp09SYhCc", name: "This Is So Embarrassing! - Building a PC with My Sister", - length: Some(1063), + duration: Some(1063), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/AOdp09SYhCc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBfBYl-n346B6prZx03Mm7Ww5KNzQ", @@ -1262,7 +1262,7 @@ VideoDetails( VideoItem( id: "CTIpNtHWVtQ", name: "Why Pay $1000 for a 25 year old PC! - NIXSYS Windows 98 PC", - length: Some(1112), + duration: Some(1112), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/CTIpNtHWVtQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAgegiq7MYL_WWdEFX2psylbO2KHw", @@ -1299,7 +1299,7 @@ VideoDetails( VideoItem( id: "3RIp7CwkBeA", name: "I Hope You Have a LOT of Money... RTX 4000 Announced", - length: Some(569), + duration: Some(569), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/3RIp7CwkBeA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA0yHfBWVDIOWz5wFNO6A6xwHDl8A", @@ -1336,7 +1336,7 @@ VideoDetails( VideoItem( id: "HZiaHEmE9PQ", name: "Buying a Chromebook was a BIG MISTAKE", - length: Some(880), + duration: Some(880), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/HZiaHEmE9PQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBXXl872fFTYsfwBvUbF0oBvsZSrw", 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 2ef29b3..cbd5b80 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 @@ -149,7 +149,7 @@ VideoDetails( VideoItem( id: "4TWR90KJl84", name: "aespa 에스파 \'Next Level\' MV", - length: Some(236), + duration: Some(236), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/4TWR90KJl84/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBYCGc-AKsDC6UpJgIZw2_VsqjVWA", @@ -186,7 +186,7 @@ VideoDetails( VideoItem( id: "yQUU29NwNF4", name: "aespa(에스파) - Black Mamba @인기가요 inkigayo 20201122", - length: Some(213), + duration: Some(213), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/yQUU29NwNF4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA4pIWwOFmVuVU-jZ-j7S4GvgxjKw", @@ -223,7 +223,7 @@ VideoDetails( VideoItem( id: "mTmm0y73ZtM", name: "Secret Missions: 7 Thrilling Spy and Secret Agent Stories", - length: Some(6811), + duration: Some(6811), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/mTmm0y73ZtM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDz3aKv3IbWrI5GmtWjWl2br6h7jw", @@ -260,7 +260,7 @@ VideoDetails( VideoItem( id: "xBnSq8JKlZw", name: "16 Eylül 2023", - length: Some(7971), + duration: Some(7971), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/xBnSq8JKlZw/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-BIAC6AKKAgwIABABGGUgUChFMA8=&rs=AOn4CLDBvW0PORHHExpND8qbAa0OCr5MMw", @@ -297,7 +297,7 @@ VideoDetails( VideoItem( id: "fE2h3lGlOsk", name: "ITZY \"WANNABE\" M/V @ITZY", - length: Some(219), + duration: Some(219), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/fE2h3lGlOsk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC44Q0lpu5a8rltgTMxi0X2QA6jnQ", @@ -334,7 +334,7 @@ VideoDetails( VideoItem( id: "NU611fxGyPU", name: "aespa 에스파 \'Black Mamba\' Dance Practice", - length: Some(175), + duration: Some(175), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/NU611fxGyPU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAgKORzcy6WKosI1_PAVWDgcjJ9jA", @@ -371,7 +371,7 @@ VideoDetails( VideoItem( id: "dYRITmpFbJ4", name: "aespa 에스파 \'Girls\' MV", - length: Some(269), + duration: Some(269), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/dYRITmpFbJ4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBOxN6ukbZNOPwUBhRZYgG9r23lng", @@ -408,7 +408,7 @@ VideoDetails( VideoItem( id: "jiFBY6gk3Lk", name: "BLACKPINK x AESPA – Pink Venom / Black Mamba MASHUP (feat. Next Level)", - length: Some(240), + duration: Some(240), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/jiFBY6gk3Lk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLARhXJ8KOxiWpj430QpyKF2m3LJFQ", @@ -445,7 +445,7 @@ VideoDetails( VideoItem( id: "CM4CkVFmTds", name: "TWICE \"I CAN\'T STOP ME\" M/V", - length: Some(221), + duration: Some(221), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/CM4CkVFmTds/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBfd7QADIduQSR2ESLIp1k5gxxNDg", @@ -482,7 +482,7 @@ VideoDetails( VideoItem( id: "WPdWvnAAurg", name: "aespa 에스파 \'Savage\' MV", - length: Some(259), + duration: Some(259), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/WPdWvnAAurg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDQGxlnDkAdMYRm2cdkDmiDbBDpYw", @@ -519,7 +519,7 @@ VideoDetails( VideoItem( id: "OgabtEgG_kg", name: "[ FULL ALBUM ] IVE (아이브) — IVE The 1st EP \' I\'VE MINE TRACKLIST", - length: Some(1034), + duration: Some(1034), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/OgabtEgG_kg/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-BIAC6AKKAgwIABABGGkgaShpMA8=&rs=AOn4CLBF1lxbztXMyXmem4owNAWZRqvnBA", @@ -556,7 +556,7 @@ VideoDetails( VideoItem( id: "cSqOY5nktfg", name: "BLACKPINK THE GAME - ‘THE GIRLS’ MV", - length: Some(164), + duration: Some(164), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/cSqOY5nktfg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDkx-bmEWvYbs8ju1cETIRE1AczFQ", @@ -593,7 +593,7 @@ VideoDetails( VideoItem( id: "i8fRCkq5tbw", name: "aespa 에스파 ‘ep.2 Next Level’ – SM Culture Universe", - length: Some(1040), + duration: Some(1040), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/i8fRCkq5tbw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBGcGKSQOqvI_5ZONNturhZZmkysQ", @@ -630,7 +630,7 @@ VideoDetails( VideoItem( id: "erCzl8x9Zuo", name: "에스파(AESPA) 2023 lotte family concert Full Ver. (Black Mamba +thirsty + Illusion+next level+ Spicy)", - length: Some(1192), + duration: Some(1192), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/erCzl8x9Zuo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBF18qnuz8guk309k2UUh4xnLuazg", @@ -667,7 +667,7 @@ VideoDetails( VideoItem( id: "7HDeem-JaSY", name: "(여자)아이들((G)I-DLE) - \'퀸카 (Queencard)\' Official Music Video", - length: Some(211), + duration: Some(211), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/7HDeem-JaSY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC_jASE2yooEXAN64rj8-1_AJZl6A", @@ -704,7 +704,7 @@ VideoDetails( VideoItem( id: "9JFi7MmjtGA", name: "VIVIZ (비비지) - \'MANIAC\' MV", - length: Some(197), + duration: Some(197), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/9JFi7MmjtGA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLALaqiHHm-fnm1TQHpD9PG-zGd-hg", @@ -741,7 +741,7 @@ VideoDetails( VideoItem( id: "NoYKBAajoyo", name: "EVERGLOW (에버글로우) - DUN DUN MV", - length: Some(209), + duration: Some(209), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/NoYKBAajoyo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC3OhCUbjpIclmjfV8W8T98nVI5pA", @@ -778,7 +778,7 @@ VideoDetails( VideoItem( id: "pyf8cbqyfPs", name: "LE SSERAFIM (르세라핌) \'ANTIFRAGILE\' OFFICIAL M/V", - length: Some(232), + duration: Some(232), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/pyf8cbqyfPs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAu-V-1EWwbHjZTNTO-vuP_O_WB3Q", @@ -815,7 +815,7 @@ VideoDetails( VideoItem( id: "32si5cfrCNc", name: "BLACKPINK - \'How You Like That\' DANCE PERFORMANCE VIDEO", - length: Some(181), + duration: Some(181), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/32si5cfrCNc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBjimPvMxDwTmPBlKX8Buo9EjMeOg", @@ -852,7 +852,7 @@ VideoDetails( VideoItem( id: "bwmSjveL3Lc", name: "BLACKPINK - \'붐바야 (BOOMBAYAH)\' M/V", - length: Some(244), + duration: Some(244), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/bwmSjveL3Lc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDRzdujtL9QM0RZ8elD00oS2fXMhg", 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 9f51720..418b6fc 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 @@ -60,7 +60,7 @@ VideoDetails( VideoItem( id: "-YpwsdRKt8Q", name: "SpiegelMining – Reverse Engineering von Spiegel-Online (33c3)", - length: Some(3526), + duration: Some(3526), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/-YpwsdRKt8Q/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAitMEufI5dstlwxmzUBy5R55YqvA", @@ -97,7 +97,7 @@ VideoDetails( VideoItem( id: "4z3mu63yxII", name: "Gregor Gysi & Martin Sonneborn", - length: Some(5272), + duration: Some(5272), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/4z3mu63yxII/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDreV7oQC-p3dvg_goG62wPliIS9Q", @@ -134,7 +134,7 @@ VideoDetails( VideoItem( id: "WhgRRpA3b2c", name: "36C3 - Verkehrswende selber hacken", - length: Some(3176), + duration: Some(3176), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/WhgRRpA3b2c/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDvqwVUjB6Xurm8rFTueHcWHuPfZA", @@ -171,7 +171,7 @@ VideoDetails( VideoItem( id: "5qNHtdN07FM", name: "GPN16: Wie baut man eigentlich Raumschiffe (urs)", - length: Some(5172), + duration: Some(5172), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/5qNHtdN07FM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDpjJM0fDLemesPUcU3VcN_gv9lHQ", @@ -208,7 +208,7 @@ VideoDetails( VideoItem( id: "7FeqF1-Z1g0", name: "David Kriesel: Traue keinem Scan, den du nicht selbst gefälscht hast", - length: Some(3820), + duration: Some(3820), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/7FeqF1-Z1g0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDlpdGFYSadvgkHzSGulKmjV3wokQ", @@ -245,7 +245,7 @@ VideoDetails( VideoItem( id: "1vcP9UWrWBI", name: "Easterhegg 2019 - Kernreaktoren", - length: Some(7263), + duration: Some(7263), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1vcP9UWrWBI/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBUQVIIaiRE6GWywG8JwHDYAJpnZg", @@ -282,7 +282,7 @@ VideoDetails( VideoItem( id: "jnp1veXQf7U", name: "Blockchain - Ein außer Kontrolle geratenes Laborexperiment? #GPN19", - length: Some(3362), + duration: Some(3362), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/jnp1veXQf7U/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAPdUkK2Ck1bwqQKZyMKKtAP4AMdA", @@ -319,7 +319,7 @@ VideoDetails( VideoItem( id: "77OlKRkaixo", name: "leyrer, MacLemon: E-Mail. Hässlich, aber es funktioniert #eh16", - length: Some(6998), + duration: Some(6998), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/77OlKRkaixo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD4xyH2Wm3PRfFNYPGKLO69SFfcYw", @@ -356,7 +356,7 @@ VideoDetails( VideoItem( id: "u29--YNGMyg", name: "Physikalisches Kolloquium 22. Juli 2011 - Vortrag von Prof. Dr. Harald Lesch", - length: Some(6715), + duration: Some(6715), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/u29--YNGMyg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCykSwmdalE18JSUKAH4PLZ54YpzQ", @@ -393,7 +393,7 @@ VideoDetails( VideoItem( id: "urt2_ACal9A", name: "CCC-Jahresrückblick 2016 (33c3)", - length: Some(8170), + duration: Some(8170), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/urt2_ACal9A/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLChs8FeQ4a0ab1PeF0yFI58lHD2Ew", @@ -430,7 +430,7 @@ VideoDetails( VideoItem( id: "PnBs9oH2Lx8", name: "Easterhegg 2019 - Wie ich die Regierung gehackt habe", - length: Some(3147), + duration: Some(3147), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/PnBs9oH2Lx8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDCYEqGF-6ovzXSwysiuU3EPQPBBQ", @@ -467,7 +467,7 @@ VideoDetails( VideoItem( id: "yaCiVvBD-xc", name: "Mathias Dalheimer: Wie man einen Blackout verursacht", - length: Some(3748), + duration: Some(3748), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/yaCiVvBD-xc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD0kgmNW_38RP2zrFbHZ8yMaeltXw", @@ -504,7 +504,7 @@ VideoDetails( VideoItem( id: "1PJnEwoFSXo", name: "Das Geheimnis der Hieroglyphen | Doku HD | ARTE", - length: Some(5541), + duration: Some(5541), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1PJnEwoFSXo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBECHmEUHzkloG0szufbTTPeQxJcg", @@ -541,7 +541,7 @@ VideoDetails( VideoItem( id: "iIDZ8pJKLZA", name: "36C3 ChaosWest: Bahn API Chaos", - length: Some(3056), + duration: Some(3056), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/iIDZ8pJKLZA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD4Yav7T6P0SXZSw0mhg9jL1aot7A", @@ -578,7 +578,7 @@ VideoDetails( VideoItem( id: "PhUQN6fd5O4", name: "35C3 - Jahresrückblick des CCC 2018", - length: Some(8102), + duration: Some(8102), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/PhUQN6fd5O4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAO_0bZOBr6aGmQdiA-5bUOxNeTaQ", @@ -615,7 +615,7 @@ VideoDetails( VideoItem( id: "bzr0c8qzQoc", name: "GPN19 - Beton", - length: Some(3972), + duration: Some(3972), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/bzr0c8qzQoc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCY6DB5oe1CQxUXIc9wpl_WyB9REA", @@ -652,7 +652,7 @@ VideoDetails( VideoItem( id: "IeX1F-Jjq9E", name: "Lars “Pylon” Weiler (DC4LW): Weltraumkommunikation", - length: Some(5075), + duration: Some(5075), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/IeX1F-Jjq9E/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDHnqHZmt01FMVG1lPBXYtZXWWY9Q", @@ -689,7 +689,7 @@ VideoDetails( VideoItem( id: "gsnL4m57MCM", name: "David Kriesel: SpiegelMining – Reverse Engineering von Spiegel-Online", - length: Some(3526), + duration: Some(3526), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/gsnL4m57MCM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAzdNK5qr49otzmiOcFYQGCAcoIBA", @@ -726,7 +726,7 @@ VideoDetails( VideoItem( id: "uEEHq6f8RsM", name: "Leyrer: Moderne Linux Kommandozeilenwerkzeuge - Edition \"Allein zu Haus\"", - length: Some(3716), + duration: Some(3716), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/uEEHq6f8RsM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAEBt4P-qj4seCLNwABBxmHbSjFXQ", 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 187bff9..6207b1d 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 @@ -606,7 +606,7 @@ VideoDetails( VideoItem( id: "AOdp09SYhCc", name: "This Is So Embarrassing!", - length: Some(1063), + duration: Some(1063), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/AOdp09SYhCc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBfBYl-n346B6prZx03Mm7Ww5KNzQ", @@ -643,7 +643,7 @@ VideoDetails( VideoItem( id: "CY3OQh-7wIk", name: "The Computer I Would Actually BUY", - length: Some(6478), + duration: Some(6478), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/CY3OQh-7wIk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBIWrkhu20Ak_TnmZIE4ZNnwwJjxg", @@ -680,7 +680,7 @@ VideoDetails( VideoItem( id: "LQ95XJAwaoc", name: "My favorite car (sucks)", - length: Some(1162), + duration: Some(1162), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/LQ95XJAwaoc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCipJpt-2zTzIpJu3bTaXsTai4Avw", @@ -717,7 +717,7 @@ VideoDetails( VideoItem( id: "mhMQeJ5Qmp0", name: "The Apple Newton MessagePad.", - length: Some(758), + duration: Some(758), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/mhMQeJ5Qmp0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBUv25424vMzv7t_u2JaFGBUFyzLQ", @@ -754,7 +754,7 @@ VideoDetails( VideoItem( id: "1ctXiZsN6ac", name: "The Reviewer Got Reviewed - WAN Show September 9, 2022", - length: Some(10265), + duration: Some(10265), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1ctXiZsN6ac/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD9wu_ZcDUUeXLmcHsQlyFk2ZGz8w", @@ -791,7 +791,7 @@ VideoDetails( VideoItem( id: "CMR9z9Xr8GM", name: "Storing Solar Power on my ROOF!!!", - length: Some(1028), + duration: Some(1028), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/CMR9z9Xr8GM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDHV3LspFbeyp3aKgDaga_48rKnhg", @@ -828,7 +828,7 @@ VideoDetails( VideoItem( id: "fT2KhJ8W-Kg", name: "How gas pumps know when to turn themselves off", - length: Some(836), + duration: Some(836), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/fT2KhJ8W-Kg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAtidUhcZzKU4a3ojinamyCP33ing", @@ -865,7 +865,7 @@ VideoDetails( VideoItem( id: "12Hcbx33Rb4", name: "BREAKING NEWS! - EVGA will no longer do business with NVIDIA", - length: Some(1262), + duration: Some(1262), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/12Hcbx33Rb4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAM7iCw78-SfuzT5AgSv6ACOVDelQ", @@ -902,7 +902,7 @@ VideoDetails( VideoItem( id: "QW1SsqmaIuE", name: "I Surprised My Subscriber with his Dream Gaming Setup! - Season 8", - length: Some(2177), + duration: Some(2177), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/QW1SsqmaIuE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLArhaU2nMbylc2HtPaCCFwJmbFduQ", @@ -939,7 +939,7 @@ VideoDetails( VideoItem( id: "JAcSNL1T3OA", name: "Why Did I Drill 1756 Holes in This?", - length: Some(1293), + duration: Some(1293), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/JAcSNL1T3OA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAVN2pIRLDii6QneiJiH7SuohQLLw", @@ -976,7 +976,7 @@ VideoDetails( VideoItem( id: "ZVtOss1U7_s", name: "VW Beetle converted to electric in a day", - length: Some(826), + duration: Some(826), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ZVtOss1U7_s/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD4hPp1mBczpO6sO6vWdZQYakxwyg", @@ -1013,7 +1013,7 @@ VideoDetails( VideoItem( id: "2kJDTzFtUr4", name: "How ASML, TSMC And Intel Dominate The Chip Market | CNBC Marathon", - length: Some(3399), + duration: Some(3399), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/2kJDTzFtUr4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA6X3e701I0PwLNZJamLICU4oJsxg", @@ -1050,7 +1050,7 @@ VideoDetails( VideoItem( id: "0rCbfsuKdYw", name: "I bought every Playstation Ever.", - length: Some(1046), + duration: Some(1046), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/0rCbfsuKdYw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAQvrfQzF3A7fsTrp6uVnunsFrjIA", @@ -1087,7 +1087,7 @@ VideoDetails( VideoItem( id: "sbdU7AkH6QM", name: "Reviewing Free Energy Generators. A Response to My Video \"Nikola Tesla\'s Greatest Invention\"- 102", - length: Some(1387), + duration: Some(1387), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/sbdU7AkH6QM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBDpUTKGdp0-KWb06jcJ1nBcyO6Dw", @@ -1124,7 +1124,7 @@ VideoDetails( VideoItem( id: "zcchDu7KoYs", name: "AMD’s Victory Lap - HOLY $H!T Threadripper Pro 5995WX", - length: Some(872), + duration: Some(872), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/zcchDu7KoYs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAo1iXQgQA0Vdil-2ka_mG7maCGMg", @@ -1161,7 +1161,7 @@ VideoDetails( VideoItem( id: "pd6DsSjqhFE", name: "Top Gear Satisfaction Survey Compilation", - length: Some(986), + duration: Some(986), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/pd6DsSjqhFE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA5XluAGur-H4y64PT8dtddYidDfQ", @@ -1198,7 +1198,7 @@ VideoDetails( VideoItem( id: "2K5Gqp1cEcM", name: "Why our Screwdriver took 3 YEARS", - length: Some(1752), + duration: Some(1752), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/2K5Gqp1cEcM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBVNWWFKgajHVbNYGFdRXXNTH7aEg", @@ -1235,7 +1235,7 @@ VideoDetails( VideoItem( id: "t03rmc-prJo", name: "This PC took 600 HOURS to Build!", - length: Some(1505), + duration: Some(1505), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/t03rmc-prJo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDCfqUXpZWf6Gv320YOu1UW02Sv5Q", @@ -1272,7 +1272,7 @@ VideoDetails( VideoItem( id: "QTH9m6MDIfc", name: "One Year Ago I Built an Ecosystem, This Happened", - length: Some(485), + duration: Some(485), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/QTH9m6MDIfc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD3ZF3LguKP_5_qUVgX3_FXSA6ABA", 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 62979ec..0e047c3 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 @@ -104,7 +104,7 @@ VideoDetails( VideoItem( id: "SGP6Y0Pnhe4", name: "HOW IT WORKS: The International Space Station", - length: Some(1738), + duration: Some(1738), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/SGP6Y0Pnhe4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAChuc2Ih-sBZQC5x7o0gghn85nJw", @@ -141,7 +141,7 @@ VideoDetails( VideoItem( id: "ddZu_1Z3BAc", name: "NASA LIVE Stream From The ISS - Live Earth & Space Station Views & Audio", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ddZu_1Z3BAc/hqdefault_live.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCi5eV9lF_2VW5JPzM1Vk5UUNqkHQ", @@ -178,7 +178,7 @@ VideoDetails( VideoItem( id: "oDXBMjg9HKU", name: "APOD: 2022-09-20 - Star Forming Region NGC 3582 without Stars (Narrated by Amy)", - length: Some(124), + duration: Some(124), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/oDXBMjg9HKU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDQx56iTlsHGslGMkJ74MTqRDD1Og", @@ -215,7 +215,7 @@ VideoDetails( VideoItem( id: "aU0vNvVHXa8", name: "🌎 LIVE ASTEROID Watch Tracking", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/aU0vNvVHXa8/hqdefault_live.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBK26DJlPwe8sxoySl9hGivR0svQQ", @@ -252,7 +252,7 @@ VideoDetails( VideoItem( id: "6scCF_8YN70", name: "Dramatic footage of the tsunami that hit Japan", - length: Some(133), + duration: Some(133), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/6scCF_8YN70/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA5oP2ObSoxifqGHzx7OfEzpnFHIA", @@ -289,7 +289,7 @@ VideoDetails( VideoItem( id: "n4IhCSMkADc", name: "EARTH FROM SPACE: Like You\'ve Never Seen Before", - length: Some(766), + duration: Some(766), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/n4IhCSMkADc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAhEA9mKd5lvhDnmtV5xXY22Zjfdg", @@ -326,7 +326,7 @@ VideoDetails( VideoItem( id: "bgbH4FAmAA0", name: "Winter Cab View from two of the most SCENIC RAILWAYS in the WORLD", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/bgbH4FAmAA0/hqdefault_live.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDK5dHaUNVD62cFE9pVq-zw4N8Qkw", @@ -363,7 +363,7 @@ VideoDetails( VideoItem( id: "uD4izuDMUQA", name: "TIMELAPSE OF THE FUTURE: A Journey to the End of Time (4K)", - length: Some(1761), + duration: Some(1761), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/uD4izuDMUQA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDjQYM5oXPQlFF0E-qc9n3mGlDRJQ", @@ -400,7 +400,7 @@ VideoDetails( VideoItem( id: "Z6DpPQ8QdLg", name: "Earthrise - Planet Earth Seen From The Moon - Real Time Journey Across The Lunar Surface", - length: Some(241), + duration: Some(241), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Z6DpPQ8QdLg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAOLBguftqGZ-KSwoUPACRpCVwOGQ", @@ -437,7 +437,7 @@ VideoDetails( VideoItem( id: "1hNF3Wuw0LI", name: "New York City Walk 24/7 Chat Stream", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/1hNF3Wuw0LI/hqdefault_live.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLD-mGKGIK69-Ozcl3h9LAdqTpNE9A", @@ -474,7 +474,7 @@ VideoDetails( VideoItem( id: "ZEyAs3NWH4A", name: "New: Mars In 4K", - length: Some(609), + duration: Some(609), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ZEyAs3NWH4A/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAdzoD50ree_56JKW0-yPFWKnpTUw", @@ -511,7 +511,7 @@ VideoDetails( VideoItem( id: "NF4LQaWJRDg", name: "Hiroshima: Dropping the Bomb", - length: Some(276), + duration: Some(276), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/NF4LQaWJRDg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDhvEsHXRIBs2CuAXkqHh07B4CDeg", @@ -548,7 +548,7 @@ VideoDetails( VideoItem( id: "qhOe_PxiNo8", name: "Imagens, Talvez Inéditas do Tsunami no Japão", - length: Some(1202), + duration: Some(1202), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/qhOe_PxiNo8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDqvJn8j2qyzBpIwpchGDhU449YtA", @@ -585,7 +585,7 @@ VideoDetails( VideoItem( id: "zf3bDpdhUNc", name: "Astronauts accidentally lose a shield in space (GoPro 8K)", - length: Some(566), + duration: Some(566), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/zf3bDpdhUNc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAg0e6zMCEA7X4dx2H7uWmL6DuTfQ", @@ -622,7 +622,7 @@ VideoDetails( VideoItem( id: "mJxsj51d-Pk", name: "Record breaking space jump - free fall faster than speed of sound - Red Bull Stratos.", - length: Some(503), + duration: Some(503), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/mJxsj51d-Pk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBmhCf2s6IuaCOzdRvSI-qnlR33xA", @@ -659,7 +659,7 @@ VideoDetails( VideoItem( id: "fr_hXLDLc38", name: "Horizons mission - Soyuz: launch to orbit", - length: Some(607), + duration: Some(607), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/fr_hXLDLc38/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCtdCzVkOkNo2YAzImB4VdRi5mbgQ", @@ -696,7 +696,7 @@ VideoDetails( VideoItem( id: "Jh-qzwdiAGY", name: "The Earth 4K - Incredible 4K / UHD Video of Earth From Space", - length: Some(3594), + duration: Some(3594), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Jh-qzwdiAGY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDxyeDTGe_ou8OatbRvZJjocjvEfw", @@ -733,7 +733,7 @@ VideoDetails( VideoItem( id: "EPyl1LgNtoQ", name: "The View from Space - Earth\'s Countries and Coastlines", - length: Some(227), + duration: Some(227), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/EPyl1LgNtoQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA7DtUC7ZI8nVXddLnRs2hCDAW6PA", @@ -770,7 +770,7 @@ VideoDetails( VideoItem( id: "7KXGZAEWzn0", name: "ORBIT - Journey Around Earth in Real Time // 4K Remastered", - length: Some(5560), + duration: Some(5560), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/7KXGZAEWzn0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC18tscsYVoOweHeG46RxP93pExiA", @@ -807,7 +807,7 @@ VideoDetails( VideoItem( id: "KTUa9rG08go", name: "NASA Artemis I Mon Rocket Testing and Inspection LIVE From Launch Complex 39B", - length: None, + duration: None, thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/KTUa9rG08go/hqdefault_live.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDONYcbg3bgmkGnu5k4koV9aPgy2g", 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 2e65156..b4f3326 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 @@ -46,7 +46,7 @@ VideoDetails( VideoItem( id: "XtV_HGppS6A", name: "Vergiss mein nicht", - length: Some(263), + duration: Some(263), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/XtV_HGppS6A/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC4oeSAhTiX-CO6nISLrR5b-c-lwQ", @@ -83,7 +83,7 @@ VideoDetails( VideoItem( id: "BcqM8Qshx7U", name: "Kuliko Jana - Eine neue Zeit", - length: Some(210), + duration: Some(210), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/BcqM8Qshx7U/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCTOMybYKiZ2jPlKUFcoYLngroaJw", @@ -120,7 +120,7 @@ VideoDetails( VideoItem( id: "IUFUIgZOcow", name: "Silmaril - Schöner als die Sterne", - length: Some(205), + duration: Some(205), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/IUFUIgZOcow/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDraypAb-39OjGj6XeSxb5ZWuCntQ", @@ -157,7 +157,7 @@ VideoDetails( VideoItem( id: "UtP9J88Jzg0", name: "Ruinen im Sand", - length: Some(195), + duration: Some(195), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/UtP9J88Jzg0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCmkebFxTlBZCOUHBFkMHv0DodLFQ", @@ -194,7 +194,7 @@ VideoDetails( VideoItem( id: "sg6j-zfUF_A", name: "Eldamar", - length: Some(223), + duration: Some(223), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/sg6j-zfUF_A/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDk_V_5woDmnABodJnokWXNeyUulg", @@ -231,7 +231,7 @@ VideoDetails( VideoItem( id: "u2XCC1rKxV0", name: "Faolan", - length: Some(256), + duration: Some(256), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/u2XCC1rKxV0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDd4Q0v9znAMTV6GLYt4Jq40MWX0w", @@ -268,7 +268,7 @@ VideoDetails( VideoItem( id: "oOBBBl3fywU", name: "Aeria - Vom Wind", - length: Some(260), + duration: Some(260), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/oOBBBl3fywU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDCGpN0DnijJM8UhMKcFsTC6CFNEA", @@ -305,7 +305,7 @@ VideoDetails( VideoItem( id: "pI0Rancanz0", name: "Vergiss mein nicht", - length: Some(263), + duration: Some(263), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/pI0Rancanz0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC_VG_5tF7ygcOE7baJcqsqyo_Ygw", @@ -342,7 +342,7 @@ VideoDetails( VideoItem( id: "DsviLYh1CB0", name: "Eldamar", - length: Some(222), + duration: Some(222), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/DsviLYh1CB0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAc_WXeia9Pd2hK1PwTpTaGCKtlgA", @@ -379,7 +379,7 @@ VideoDetails( VideoItem( id: "Ctpe9kafn78", name: "So still mein Herz", - length: Some(259), + duration: Some(259), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Ctpe9kafn78/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDJqIxVeJPDgMFXTavr1aaYBuaY6w", @@ -416,7 +416,7 @@ VideoDetails( VideoItem( id: "y252630WbIk", name: "Oonagh und Santiano: Vergiss mein nicht (mit lyrics)", - length: Some(260), + duration: Some(260), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/y252630WbIk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCgH4BN_8psoaGXUedP2Rr98O7OiA", @@ -453,7 +453,7 @@ VideoDetails( VideoItem( id: "YgUZtELr_jw", name: "Aulë und Yavanna", - length: Some(216), + duration: Some(216), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/YgUZtELr_jw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA8840OzkwuDCpmkn_HS2w3EnlPwA", @@ -490,7 +490,7 @@ VideoDetails( VideoItem( id: "ABKSs0aU4C0", name: "Gäa (Akustik Version)", - length: Some(235), + duration: Some(235), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ABKSs0aU4C0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBtmUrTNQYkg0ATqAkPyvUPHzf9Gg", @@ -527,7 +527,7 @@ VideoDetails( VideoItem( id: "O0I3rJsHikA", name: "Orome (A-Class Remix)", - length: Some(199), + duration: Some(199), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/O0I3rJsHikA/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBLWSYj7yLNMsJkr2Hs4JOx2Rfpqg", 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 3442496..dd2747a 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 @@ -149,7 +149,7 @@ VideoDetails( VideoItem( id: "4TWR90KJl84", name: "aespa 에스파 \'Next Level\' MV", - length: Some(236), + duration: Some(236), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/4TWR90KJl84/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBYCGc-AKsDC6UpJgIZw2_VsqjVWA", @@ -186,7 +186,7 @@ VideoDetails( VideoItem( id: "WPdWvnAAurg", name: "aespa 에스파 \'Savage\' MV", - length: Some(259), + duration: Some(259), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/WPdWvnAAurg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDQGxlnDkAdMYRm2cdkDmiDbBDpYw", @@ -223,7 +223,7 @@ VideoDetails( VideoItem( id: "NoYKBAajoyo", name: "EVERGLOW (에버글로우) - DUN DUN MV", - length: Some(209), + duration: Some(209), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/NoYKBAajoyo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC3OhCUbjpIclmjfV8W8T98nVI5pA", @@ -260,7 +260,7 @@ VideoDetails( VideoItem( id: "KhTeiaCezwM", name: "[MV] MAMAMOO (마마무) - HIP", - length: Some(211), + duration: Some(211), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/KhTeiaCezwM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCMGgSAC2vrBvhW5_JvAG6-DmNv_Q", @@ -297,7 +297,7 @@ VideoDetails( VideoItem( id: "Jh4QFaPmdss", name: "(G)I-DLE - \'TOMBOY\' Official Music Video", - length: Some(198), + duration: Some(198), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Jh4QFaPmdss/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAQf02NuUqxsFasUAqJQYGS6SMDkw", @@ -334,7 +334,7 @@ VideoDetails( VideoItem( id: "CM4CkVFmTds", name: "TWICE \"I CAN\'T STOP ME\" M/V", - length: Some(221), + duration: Some(221), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/CM4CkVFmTds/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBfd7QADIduQSR2ESLIp1k5gxxNDg", @@ -371,7 +371,7 @@ VideoDetails( VideoItem( id: "uR8Mrt1IpXg", name: "Red Velvet 레드벨벳 \'Psycho\' MV", - length: Some(216), + duration: Some(216), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/uR8Mrt1IpXg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAnAsLcZaI1uWDB4nag1KnNotAUWw", @@ -408,7 +408,7 @@ VideoDetails( VideoItem( id: "QslJYDX3o8s", name: "Red Velvet 레드벨벳 \'러시안 룰렛 (Russian Roulette)\' MV", - length: Some(212), + duration: Some(212), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/QslJYDX3o8s/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAsWKGsqhHRSd2Q5s0Gh-PrmOywIA", @@ -445,7 +445,7 @@ VideoDetails( VideoItem( id: "EaswWiwMVs8", name: "Stray Kids \"소리꾼(Thunderous)\" M/V", - length: Some(199), + duration: Some(199), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/EaswWiwMVs8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC2hrj6yzhYrHdiS7z5i99gt15fNw", @@ -482,7 +482,7 @@ VideoDetails( VideoItem( id: "pNfTK39k55U", name: "ITZY \"달라달라(DALLA DALLA)\" M/V @ITZY", - length: Some(227), + duration: Some(227), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/pNfTK39k55U/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDnW6UNp_Ny3hCIowtq-42AopJc7Q", @@ -519,7 +519,7 @@ VideoDetails( VideoItem( id: "dYRITmpFbJ4", name: "aespa 에스파 \'Girls\' MV", - length: Some(269), + duration: Some(269), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/dYRITmpFbJ4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBOxN6ukbZNOPwUBhRZYgG9r23lng", @@ -556,7 +556,7 @@ VideoDetails( VideoItem( id: "ioNng23DkIM", name: "BLACKPINK - \'How You Like That\' M/V", - length: Some(184), + duration: Some(184), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/ioNng23DkIM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLANTO784ijwW2y4bhZaWcfKzEe9iQ", @@ -593,7 +593,7 @@ VideoDetails( VideoItem( id: "Ujb-gvqsoi0", name: "Red Velvet - IRENE & SEULGI \'Monster\' MV", - length: Some(182), + duration: Some(182), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Ujb-gvqsoi0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBrGO-Gkm-UqCln07oFNKfFgioXYQ", @@ -630,7 +630,7 @@ VideoDetails( VideoItem( id: "bwmSjveL3Lc", name: "BLACKPINK - \'붐바야 (BOOMBAYAH)\' M/V", - length: Some(244), + duration: Some(244), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/bwmSjveL3Lc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDRzdujtL9QM0RZ8elD00oS2fXMhg", @@ -667,7 +667,7 @@ VideoDetails( VideoItem( id: "6uJf2IT2Zh8", name: "Red Velvet 레드벨벳 \'피카부 (Peek-A-Boo)\' MV", - length: Some(230), + duration: Some(230), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/6uJf2IT2Zh8/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA8MvitHoGOKv_kHXY3RqkB7qr7tw", @@ -704,7 +704,7 @@ VideoDetails( VideoItem( id: "Y8JFxS1HlDo", name: "IVE 아이브 \'LOVE DIVE\' MV", - length: Some(179), + duration: Some(179), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/Y8JFxS1HlDo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDf8U7fRH0R-qXbbGwKwpKBCeOa4A", @@ -741,7 +741,7 @@ VideoDetails( VideoItem( id: "2FzSv66c7TQ", name: "A E S P A (에스파) ALL SONGS PLAYLIST 2022 | 에스파 노래 모음", - length: Some(3441), + duration: Some(3441), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/2FzSv66c7TQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBJl1tQDODos5G6RJlpg4R-pvWNZA", @@ -778,7 +778,7 @@ VideoDetails( VideoItem( id: "NU611fxGyPU", name: "aespa 에스파 \'Black Mamba\' Dance Practice", - length: Some(175), + duration: Some(175), thumbnail: [ Thumbnail( url: "https://i.ytimg.com/vi/NU611fxGyPU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAgKORzcy6WKosI1_PAVWDgcjJ9jA", diff --git a/src/model/mod.rs b/src/model/mod.rs index 1a6029d..3407f7b 100644 --- a/src/model/mod.rs +++ b/src/model/mod.rs @@ -157,10 +157,10 @@ pub struct VideoPlayerDetails { pub name: String, /// Video description in plaintext format pub description: Option, - /// Video length in seconds + /// Video duration in seconds /// /// Is zero for livestreams - pub length: u32, + pub duration: u32, /// Video thumbnail pub thumbnail: Vec, /// Channel of the video @@ -837,10 +837,10 @@ pub struct VideoItem { pub id: String, /// Video title pub name: String, - /// Video length in seconds. + /// Video duration in seconds. /// /// Is [`None`] for livestreams. - pub length: Option, + pub duration: Option, /// Video thumbnail pub thumbnail: Vec, /// Channel of the video diff --git a/testfiles/player_model/hdr.json b/testfiles/player_model/hdr.json index d9b1f83..d9feb68 100644 --- a/testfiles/player_model/hdr.json +++ b/testfiles/player_model/hdr.json @@ -3,7 +3,7 @@ "id": "LXb3EKWsInQ", "name": "COSTA RICA IN 4K 60fps HDR (ULTRA HD)", "description": "We've re-mastered and re-uploaded our favorite video in HDR!\n\nCHECK OUT OUR MOST POPULAR VIDEO: https://youtu.be/tO01J-M3g0U\n► INSTAGRAM: http://www.instagram.com/mysterybox\n► INSTAGRAM: http://www.instagram.com/jacobschwarz\n►WEBSITE: http://www.mysterybox.us\n►FACEBOOK: https://www.facebook.com/mysteryboxdi...\n\nMake sure to follow us on Instagram for BTS and sneak-peaks at upcoming projects. \n\nLICENSING & BUSINESS INQUIRIES\n► contact@mysterybox.us\n\nCHECK OUT OUR VIDEO PRODUCTION COMPANY\n► https://www.mysterybox.us\n\n4K PLAYLISTS\n► https://www.youtube.com/playlist?list...\n\nBLOG Check out our blog for great information on working in HDR and 8K. \n► http://www.mysterybox.us/blog\n\nSUBSCRIBE FOR MORE VIDS\n►https://www.youtube.com/user/jacobsch...\n\nMUSIC\n► Storyworks Music \"Promise of Dawn\"\nhttps://soundcloud.com/joshuapeterson/promise-of-dawn\nwww.storyworksmusic.com\n\n► SHOT ON\nRed Weapon LE w/Helium 8K s35 sensor (Stormtrooper33)\nCanon 16-35mm III \nCanon 24-70mm II\nSigma 150-500mm\nZeiss Classic 15mm\nMOVI M10\nAdobe Premiere and DaVinci Resolve\n\n\n\nLICENSING & BUSINESS INQUIRIES\n► contact@mysterybox.us\n\nThis video is subject to copyright owned by Mystery Box LLC. Any reproduction or republication of all or part of this video is expressly prohibited, unless Mystery Box has explicitly granted its prior written consent. All other rights reserved.\n\nCopyright © 2017 Mystery Box, LLC. All Rights Reserved.", - "length": 314, + "duration": 314, "thumbnail": [ { "url": "https://i.ytimg.com/vi/LXb3EKWsInQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC0YPk1n3EyXOsJxvBcJsAgR1umog", diff --git a/testfiles/player_model/multilanguage.json b/testfiles/player_model/multilanguage.json index f1cb210..7f6e1de 100644 --- a/testfiles/player_model/multilanguage.json +++ b/testfiles/player_model/multilanguage.json @@ -3,7 +3,7 @@ "id": "tVWWp1PqDus", "name": "100 Boys Vs 100 Girls For $500,000", "description": "Giving away $25k on Current! Sign up and use my code “BEAST250” for a chance to win*: https://www.current.com/beast250\n\nSUBSCRIBE OR I TAKE YOUR DOG\n╔═╦╗╔╦╗╔═╦═╦╦╦╦╗╔═╗\n║╚╣║║║╚╣╚╣╔╣╔╣║╚╣═╣ \n╠╗║╚╝║║╠╗║╚╣║║║║║═╣\n╚═╩══╩═╩═╩═╩╝╚╩═╩═╝\n\n----------------------------------------------------------------\nfollow all of these or i will kick you\n• TikTok - https://www.tiktok.com/@mrbeast\n• Twitter - https://twitter.com/MrBeast\n• Instagram - https://www.instagram.com/mrbeast\n• Facebook - https://www.facebook.com/MrBeast6000/\n• Official Merch - https://www.shopmrbeast.com/\n• Beast Philanthropy - https://www.beastphilanthropy.org/\n\nText me @ +1 (917) 259-6364\nI'm Hiring! - https://www.mrbeastjobs.com/\nOrder a beast burger 🍔 - https://mrbeastburger.com\nChocolate 🍫 Win a Tesla or be in a MrBeast video - Buy now ▸ https://feastables.com\n-----------------------------------------------------------------—\n\nCurrent is a financial technology company, not a bank. Banking services provided by Choice Financial Group, Member FDIC. The Current Visa Debit Card is issued by Choice Financial Group pursuant to a license from Visa U.S.A. Inc. and may be used everywhere Visa debit cards are accepted.\n\n*NO PURCHASE OR PAYMENT NECESSARY TO ENTER OR WIN. Open to legal residents of the 50 U.S./D.C., age 18+ (19+ in AL and NE, 21+ in MS). Void outside the 50 U.S./D.C. and where prohibited. Sweepstakes starts at 12:00:01 AM ET on 7/9/22; ends at 11:59:59 PM ET on 10/9/22. Odds of winning will depend upon the number of eligible entries received. For full Official Rules and how to enter without becoming a Current member, visit https://www.current.com/beast250. Sponsor: Finco Services, Inc. d/b/a Current, 30 Cooper Square, Floor 4, New York, NY 10003.", - "length": 1013, + "duration": 1013, "thumbnail": [ { "url": "https://i.ytimg.com/vi/tVWWp1PqDus/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBg0pFmrd-KeoxX0Hb_lF9mvekfsw", diff --git a/tests/youtube.rs b/tests/youtube.rs index 6f0451e..8620981 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -55,7 +55,7 @@ async fn get_player_from_client(#[case] client_type: ClientType, rp: RustyPipe) "NCS (NoCopyrightSounds): Empowering Creators through Copyright / Royalty Free Music" )); } - assert_eq!(player_data.details.length, 259); + assert_eq!(player_data.details.duration, 259); assert!(!player_data.details.thumbnail.is_empty()); assert_eq!(player_data.details.channel.id, "UC_aEa8K-EOJ3D6gOs7HcyNg"); assert_eq!(player_data.details.channel.name, "NoCopyrightSounds"); @@ -227,7 +227,7 @@ async fn get_player( #[case] id: &str, #[case] name: &str, #[case] description: &str, - #[case] length: u32, + #[case] duration: u32, #[case] channel_id: &str, #[case] channel_name: &str, #[case] views: u64, @@ -242,7 +242,7 @@ async fn get_player( assert_eq!(details.name, name); let desc = details.description.expect("description"); assert!(desc.contains(description), "description: {desc}"); - assert_eq!(details.length, length); + assert_eq!(details.duration, duration); assert_eq!(details.channel.id, channel_id); assert_eq!(details.channel.name, channel_name); assert_gte(details.view_count, views, "views"); From 792e3b31e0101087a167935baad39a2e3b4296d0 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 16 Jun 2024 22:57:55 +0200 Subject: [PATCH 055/347] feat: add YtEntity trait --- src/model/traits.rs | 66 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/src/model/traits.rs b/src/model/traits.rs index e64c5b2..329a01d 100644 --- a/src/model/traits.rs +++ b/src/model/traits.rs @@ -4,7 +4,7 @@ use std::ops::Range; pub use super::{convert::FromYtItem, ordering::QualityOrd}; -use super::{AudioFormat, AudioStream, VideoFormat, VideoStream}; +use super::*; /// Trait for YouTube streams (video and audio) pub trait YtStream { @@ -128,3 +128,67 @@ impl FileFormat for AudioFormat { } } } + +/// Trait for YouTube entities (Videos, Channels, Playlists) +pub trait YtEntity { + /// ID + fn id(&self) -> &str; + /// Name + fn name(&self) -> &str; +} + +macro_rules! yt_entity { + ($entity_type:ty) => { + impl YtEntity for $entity_type { + fn id(&self) -> &str { + &self.id + } + + fn name(&self) -> &str { + &self.name + } + } + }; +} + +impl YtEntity for VideoPlayer { + fn id(&self) -> &str { + &self.details.id + } + + fn name(&self) -> &str { + &self.details.name + } +} + +impl YtEntity for Channel { + fn id(&self) -> &str { + &self.id + } + + fn name(&self) -> &str { + &self.name + } +} + +yt_entity! {VideoPlayerDetails} +yt_entity! {Playlist} +yt_entity! {ChannelId} +yt_entity! {VideoDetails} +yt_entity! {ChannelTag} +yt_entity! {ChannelRss} +yt_entity! {ChannelRssVideo} +yt_entity! {VideoItem} +yt_entity! {ChannelItem} +yt_entity! {PlaylistItem} +yt_entity! {VideoId} +yt_entity! {TrackItem} +yt_entity! {ArtistItem} +yt_entity! {AlbumItem} +yt_entity! {MusicPlaylistItem} +yt_entity! {AlbumId} +yt_entity! {MusicPlaylist} +yt_entity! {MusicAlbum} +yt_entity! {MusicArtist} +yt_entity! {MusicGenreItem} +yt_entity! {MusicGenre} From 12fe93084a25a962522489cc2f618b12e5f9d44a Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 18 Jun 2024 16:10:27 +0200 Subject: [PATCH 056/347] test: fix tests --- src/client/mod.rs | 1 - .../youtube__music_album_one_artist.snap | 16 +--------------- tests/youtube.rs | 3 +-- 3 files changed, 2 insertions(+), 18 deletions(-) diff --git a/src/client/mod.rs b/src/client/mod.rs index 7eb83d1..c428139 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -304,7 +304,6 @@ impl DefaultOpt { /// - [`music_search_albums`](RustyPipeQuery::music_search_albums) /// - [`music_search_artists`](RustyPipeQuery::music_search_artists) /// - [`music_search_playlists`](RustyPipeQuery::music_search_playlists) -/// - [`music_search_playlists_filter`](RustyPipeQuery::music_search_playlists_filter) /// - [`music_search_suggestion`](RustyPipeQuery::music_search_suggestion) /// - **Radio** /// - [`music_radio`](RustyPipeQuery::music_radio) diff --git a/tests/snapshots/youtube__music_album_one_artist.snap b/tests/snapshots/youtube__music_album_one_artist.snap index a44ac2d..b42f786 100644 --- a/tests/snapshots/youtube__music_album_one_artist.snap +++ b/tests/snapshots/youtube__music_album_one_artist.snap @@ -16,21 +16,7 @@ MusicAlbum( artist_id: Some("UCwem2sj-QUJCiWiPAo9JuAw"), description: Some(RichText([ Text( - text: "Unbroken is the third studio album by American singer Demi Lovato. It was released on September 20, 2011, by Hollywood Records. Primarily a pop record, Lovato described the album as \"more mature\" and with more R&B elements than her previous material, citing Rihanna as the major influence. While some of the album\'s lyrical content was heavily influenced by Lovato\'s personal struggles, it also deals with lighter subjects, such as love, self-empowerment, and having fun. Contributions to the album\'s production came from a wide range of producers, including Toby Gad, Ryan Tedder, Timbaland, Jim Beanz and Rock Mafia.\nLovato initially began recording her third studio album in 2010 before going on tour with the Jonas Brothers on their Live in Concert Tour. After withdrawing from the tour to seek treatment for physical and emotional issues, Lovato continued work on the album and described the recording process as therapeutic. She collaborated with artists such as Missy Elliott, Timbaland, Dev, Iyaz, and Jason Derulo on several tracks.\n\nFrom Wikipedia (", - ), - Web( - text: "https://en.wikipedia.org/wiki/Unbroke...", - url: "https://en.wikipedia.org/wiki/Unbroken_(Demi_Lovato_album)", - ), - Text( - text: ") under Creative Commons Attribution CC-BY-SA 3.0 (", - ), - Web( - text: "https://creativecommons.org/licenses/...", - url: "https://creativecommons.org/licenses/by-sa/3.0/legalcode", - ), - Text( - text: ")", + text: "Unbroken is the third studio album by American singer Demi Lovato. It was released on September 20, 2011, by Hollywood Records. Primarily a pop record, Lovato described the album as \"more mature\" and with more R&B elements than her previous material, citing Rihanna as the major influence. While some of the album\'s lyrical content was heavily influenced by Lovato\'s personal struggles, it also deals with lighter subjects, such as love and self empowerment. Contributions to the album\'s production came from a wide range of producers, including Toby Gad, Ryan Tedder, Timbaland, Jim Beanz and Rock Mafia.\nLovato initially began recording her third studio album in 2010 before going on tour with the Jonas Brothers on their Live in Concert Tour. After withdrawing from the tour to seek treatment for physical and emotional issues, Lovato continued work on the album and described the recording process as therapeutic. She collaborated with artists such as Missy Elliott, Timbaland, Dev, Iyaz, and Jason Derulo on several tracks.\n\nFrom Wikipedia (https://en.wikipedia.org/wiki/Unbroken_(Demi_Lovato_album)) under Creative Commons Attribution CC-BY-SA 3.0 (https://creativecommons.org/licenses/by-sa/3.0/legalcode)", ), ])), album_type: Album, diff --git a/tests/youtube.rs b/tests/youtube.rs index 8620981..5153015 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -1592,8 +1592,7 @@ async fn music_album(#[case] name: &str, #[case] id: &str, rp: RustyPipe, unloca assert!(!album.cover.is_empty(), "got no cover"); - // TODO: check full snapshot if A/B#13 is stabilized - if unlocalized && name != "one_artist" { + if unlocalized { insta::assert_ron_snapshot!(format!("music_album_{name}"), album, {".cover" => "[cover]", ".tracks[].view_count" => "[view_count]"} ); From 66460789449be0d5984cbdb6ec372e69323b7a88 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 27 Jun 2024 02:11:20 +0200 Subject: [PATCH 057/347] docs: add logo --- README.md | 4 +- notes/logo.svg | 110 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+), 2 deletions(-) create mode 100644 notes/logo.svg diff --git a/README.md b/README.md index 0f74703..b26b85f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# RustyPipe +# ![RustyPipe](https://code.thetadev.de/ThetaDev/rustypipe/raw/branch/main/notes/logo.svg) -Client for the public YouTube / YouTube Music API (Innertube), inspired by +Rust client for the public YouTube / YouTube Music API (Innertube), inspired by [NewPipe](https://github.com/TeamNewPipe/NewPipeExtractor). ## Features diff --git a/notes/logo.svg b/notes/logo.svg new file mode 100644 index 0000000..b26ae18 --- /dev/null +++ b/notes/logo.svg @@ -0,0 +1,110 @@ + + + + From 9f7b8405a77c4c19d8df5813c40bc678b30f824e Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 27 Jun 2024 03:13:59 +0200 Subject: [PATCH 058/347] test: fix tests --- Justfile | 8 +-- README.md | 1 + .../youtube__music_album_one_artist.snap | 16 ++++- .../youtube__music_artist_basic.snap | 68 +++++++++---------- .../youtube__music_artist_basic_intl.snap | 66 +++++++++--------- tests/youtube.rs | 13 ++-- 6 files changed, 95 insertions(+), 77 deletions(-) diff --git a/Justfile b/Justfile index 72d9880..0e34434 100644 --- a/Justfile +++ b/Justfile @@ -1,15 +1,15 @@ test: # cargo test --features=rss - cargo nextest run --features=rss --no-fail-fast --failure-output final + cargo nextest run --features=rss --no-fail-fast --failure-output final --retries 1 unittest: cargo nextest run --features=rss --no-fail-fast --failure-output final --lib testyt: - cargo nextest run --features=rss --no-fail-fast --failure-output final --test youtube + cargo nextest run --features=rss --no-fail-fast --failure-output final --retries 1 --test youtube testyt-localized: - YT_LANG=th cargo nextest run --features=rss --no-fail-fast --failure-output final --test youtube + YT_LANG=th cargo nextest run --features=rss --no-fail-fast --failure-output final --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 test --test youtube -- --test-threads 4 --skip resolve; then + 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 echo "--- $YT_LANG COMPLETED ---" else echo "--- $YT_LANG FAILED ---" diff --git a/README.md b/README.md index b26b85f..432fa4c 100644 --- a/README.md +++ b/README.md @@ -159,6 +159,7 @@ Subscribers: 1780000 - 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) diff --git a/tests/snapshots/youtube__music_album_one_artist.snap b/tests/snapshots/youtube__music_album_one_artist.snap index b42f786..a417bc4 100644 --- a/tests/snapshots/youtube__music_album_one_artist.snap +++ b/tests/snapshots/youtube__music_album_one_artist.snap @@ -16,7 +16,21 @@ MusicAlbum( artist_id: Some("UCwem2sj-QUJCiWiPAo9JuAw"), description: Some(RichText([ Text( - text: "Unbroken is the third studio album by American singer Demi Lovato. It was released on September 20, 2011, by Hollywood Records. Primarily a pop record, Lovato described the album as \"more mature\" and with more R&B elements than her previous material, citing Rihanna as the major influence. While some of the album\'s lyrical content was heavily influenced by Lovato\'s personal struggles, it also deals with lighter subjects, such as love and self empowerment. Contributions to the album\'s production came from a wide range of producers, including Toby Gad, Ryan Tedder, Timbaland, Jim Beanz and Rock Mafia.\nLovato initially began recording her third studio album in 2010 before going on tour with the Jonas Brothers on their Live in Concert Tour. After withdrawing from the tour to seek treatment for physical and emotional issues, Lovato continued work on the album and described the recording process as therapeutic. She collaborated with artists such as Missy Elliott, Timbaland, Dev, Iyaz, and Jason Derulo on several tracks.\n\nFrom Wikipedia (https://en.wikipedia.org/wiki/Unbroken_(Demi_Lovato_album)) under Creative Commons Attribution CC-BY-SA 3.0 (https://creativecommons.org/licenses/by-sa/3.0/legalcode)", + text: "Unbroken is the third studio album by American singer Demi Lovato. It was released on September 20, 2011, by Hollywood Records. Primarily a pop record, Lovato described the album as \"more mature\" and with more R&B elements than her previous material, citing Rihanna as the major influence. While some of the album\'s lyrical content was heavily influenced by Lovato\'s personal struggles, it also deals with lighter subjects, such as love and self empowerment. Contributions to the album\'s production came from a wide range of producers, including Toby Gad, Ryan Tedder, Timbaland, Jim Beanz and Rock Mafia.\nLovato initially began recording her third studio album in 2010 before going on tour with the Jonas Brothers on their Live in Concert Tour. After withdrawing from the tour to seek treatment for physical and emotional issues, Lovato continued work on the album and described the recording process as therapeutic. She collaborated with artists such as Missy Elliott, Timbaland, Dev, Iyaz, and Jason Derulo on several tracks.\n\nFrom Wikipedia (", + ), + Web( + text: "https://en.wikipedia.org/wiki/Unbroke...", + url: "https://en.wikipedia.org/wiki/Unbroken_(Demi_Lovato_album)", + ), + Text( + text: ") under Creative Commons Attribution CC-BY-SA 3.0 (", + ), + Web( + text: "https://creativecommons.org/licenses/...", + url: "https://creativecommons.org/licenses/by-sa/3.0/legalcode", + ), + Text( + text: ")", ), ])), album_type: Album, diff --git a/tests/snapshots/youtube__music_artist_basic.snap b/tests/snapshots/youtube__music_artist_basic.snap index c88198a..a0f9c9f 100644 --- a/tests/snapshots/youtube__music_artist_basic.snap +++ b/tests/snapshots/youtube__music_artist_basic.snap @@ -42,8 +42,8 @@ MusicArtist( by_va: false, ), AlbumItem( - id: "MPREb_6PEkIQE7sWY", - name: "An deiner Seite (Online Version)", + id: "MPREb_HrCgErOdgCv", + name: "Freiheit", cover: "[cover]", artists: [ ArtistId( @@ -52,8 +52,8 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Ep, - year: Some(2008), + album_type: Album, + year: Some(2004), by_va: false, ), AlbumItem( @@ -101,21 +101,6 @@ MusicArtist( year: Some(2012), by_va: false, ), - AlbumItem( - id: "MPREb_QyGCcLWExXj", - name: "Als wär\'s das erste Mal (Exklusive Piano Version)", - cover: "[cover]", - artists: [ - ArtistId( - id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - name: "Unheilig", - ), - ], - artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Single, - year: Some(2014), - by_va: false, - ), AlbumItem( id: "MPREb_R3p5kDRIGKL", name: "Astronaut", @@ -206,6 +191,21 @@ MusicArtist( year: Some(2021), by_va: false, ), + AlbumItem( + id: "MPREb_bUKkpmkyv9M", + name: "Als wär\'s das erste Mal", + cover: "[cover]", + artists: [ + ArtistId( + id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), + name: "Unheilig", + ), + ], + artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), + album_type: Single, + year: Some(2014), + by_va: false, + ), AlbumItem( id: "MPREb_f4MhYbccbPi", name: "Moderne Zeiten", @@ -251,6 +251,21 @@ MusicArtist( year: Some(2015), by_va: false, ), + AlbumItem( + id: "MPREb_ohcGTZrqKPZ", + name: "Zelluloid", + cover: "[cover]", + artists: [ + ArtistId( + id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), + name: "Unheilig", + ), + ], + artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), + album_type: Album, + year: Some(2004), + by_va: false, + ), AlbumItem( id: "MPREb_pWpeXxATZYb", name: "Wir sind alle wie eins", @@ -266,21 +281,6 @@ MusicArtist( year: Some(2014), by_va: false, ), - AlbumItem( - id: "MPREb_rHhaDLqalbT", - name: "Winter (EP)", - cover: "[cover]", - artists: [ - ArtistId( - id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - name: "Unheilig", - ), - ], - artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Ep, - year: Some(2010), - by_va: false, - ), AlbumItem( id: "MPREb_saXgTKNPaSu", name: "Zeit zu gehen", diff --git a/tests/snapshots/youtube__music_artist_basic_intl.snap b/tests/snapshots/youtube__music_artist_basic_intl.snap index 8a3d210..48f2a25 100644 --- a/tests/snapshots/youtube__music_artist_basic_intl.snap +++ b/tests/snapshots/youtube__music_artist_basic_intl.snap @@ -42,7 +42,7 @@ MusicArtist( by_va: false, ), AlbumItem( - id: "MPREb_6PEkIQE7sWY", + id: "MPREb_HrCgErOdgCv", name: "[name]", cover: "[cover]", artists: [ @@ -52,8 +52,8 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Ep, - year: Some(2008), + album_type: Album, + year: Some(2004), by_va: false, ), AlbumItem( @@ -101,21 +101,6 @@ MusicArtist( year: Some(2012), by_va: false, ), - AlbumItem( - id: "MPREb_QyGCcLWExXj", - name: "[name]", - cover: "[cover]", - artists: [ - ArtistId( - id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - name: "[name]", - ), - ], - artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Single, - year: Some(2014), - by_va: false, - ), AlbumItem( id: "MPREb_R3p5kDRIGKL", name: "[name]", @@ -206,6 +191,21 @@ MusicArtist( year: Some(2021), by_va: false, ), + AlbumItem( + id: "MPREb_bUKkpmkyv9M", + name: "[name]", + cover: "[cover]", + artists: [ + ArtistId( + id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), + name: "[name]", + ), + ], + artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), + album_type: Single, + year: Some(2014), + by_va: false, + ), AlbumItem( id: "MPREb_f4MhYbccbPi", name: "[name]", @@ -251,6 +251,21 @@ MusicArtist( year: Some(2015), by_va: false, ), + AlbumItem( + id: "MPREb_ohcGTZrqKPZ", + name: "[name]", + cover: "[cover]", + artists: [ + ArtistId( + id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), + name: "[name]", + ), + ], + artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), + album_type: Album, + year: Some(2004), + by_va: false, + ), AlbumItem( id: "MPREb_pWpeXxATZYb", name: "[name]", @@ -266,21 +281,6 @@ MusicArtist( year: Some(2014), by_va: false, ), - AlbumItem( - id: "MPREb_rHhaDLqalbT", - name: "[name]", - cover: "[cover]", - artists: [ - ArtistId( - id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - name: "[name]", - ), - ], - artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Ep, - year: Some(2010), - by_va: false, - ), AlbumItem( id: "MPREb_saXgTKNPaSu", name: "[name]", diff --git a/tests/youtube.rs b/tests/youtube.rs index 5153015..2106c8d 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -352,7 +352,7 @@ async fn get_player_error_paid(rp: RustyPipe) { #[rstest] #[case::long( "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", - "Die schönsten deutschen Lieder | Beliebteste Lieder | Beste Deutsche Musik 2022", + "Die schönsten deutschen Lieder | Beliebteste Lieder | Beste Deutsche Musik 2020 2022", true, None, Some(("UCIekuFeMaV78xYfvpmoCnPg", "Best Music")), @@ -1464,7 +1464,7 @@ async fn trending(rp: RustyPipe) { #[rstest] #[case::long( "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ", - "Die schönsten deutschen Lieder | Beliebteste Lieder | Beste Deutsche Musik 2022", + "Die schönsten deutschen Lieder | Beliebteste Lieder | Beste Deutsche Musik 2020 2022", true, None, Some(("UCIekuFeMaV78xYfvpmoCnPg", "Best Music")), @@ -1630,7 +1630,7 @@ async fn music_album_not_found(rp: RustyPipe) { #[rstest] #[case::basic_all("basic_all", "UCFKUUtHjT4iq3p0JJA13SOA", true, 15, 1)] -#[case::basic("basic", "UC7cl4MmM6ZZ2TcFyMk_b4pg", false, 15, 2)] +#[case::basic("basic", "UC7cl4MmM6ZZ2TcFyMk_b4pg", false, 15, 0)] #[case::no_more_albums("no_more_albums", "UCOR4_bSVIXPsGa4BbCSt60Q", true, 15, 0)] #[case::only_singles("only_singles", "UCfwCE5VhPMGxNPFxtVv7lRw", false, 13, 0)] #[case::no_artist("no_artist", "UCh8gHdtzO2tXd593_bjErWg", false, 0, 0)] @@ -2187,7 +2187,8 @@ async fn music_search_genre_radio(rp: RustyPipe) { } #[rstest] -#[case::default("ed sheer", Some("ed sheeran"), Some("UClmXPfaYhXOYsNn_QUyheWQ"))] +// TODO: reenable when music search suggestions work again +// #[case::default("ed sheer", Some("ed sheeran"), Some("UClmXPfaYhXOYsNn_QUyheWQ"))] #[case::empty("reujbhevmfndxnjrze", None, None)] #[tokio::test] async fn music_search_suggestion( @@ -2548,7 +2549,9 @@ async fn music_genres(rp: RustyPipe, unlocalized: bool) { .iter() .find(|g| g.id == "ggMPOg1uX1lMbVZmbzl6NlJ3" || g.id == "ggMPOg1uX1BmNzc2V2p0YXJ5") .expect("genre: Pop"); - assert_eq!(pop.name, "Pop"); + if unlocalized { + assert_eq!(pop.name, "Pop"); + } assert!(!pop.is_mood); for g in &genres { From 85751b35edc875ebca8314749fec9e468a7eef67 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 27 Jun 2024 03:14:27 +0200 Subject: [PATCH 059/347] ci: create Artifactview PR comments --- .gitea/workflows/ci.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml index e695d65..46c460f 100644 --- a/.gitea/workflows/ci.yaml +++ b/.gitea/workflows/ci.yaml @@ -28,3 +28,10 @@ jobs: with: name: test path: target/nextest/ci/junit.xml + + - name: 🔗 Artifactview PR comment + if: ${{ always() && github.event_name == 'pull_request' }} + run: | + 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 }}}' From 041ce2d08f6021c88e8890034f551f7e01b2f012 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 27 Jun 2024 03:14:58 +0200 Subject: [PATCH 060/347] fix: parsing audiobook type in European Portuguese --- src/util/dictionary.rs | 8 ++++---- testfiles/dict/album_type_samples.json | 2 +- testfiles/dict/dictionary.json | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/util/dictionary.rs b/src/util/dictionary.rs index eee7f6e..f2fbe2a 100644 --- a/src/util/dictionary.rs +++ b/src/util/dictionary.rs @@ -5418,16 +5418,16 @@ pub(crate) fn entry(lang: Language) -> Entry { ], }, album_types: ::phf::Map { - key: 12913932095322966823, + key: 15467950696543387533, disps: &[ - (1, 0), + (2, 0), ], entries: &[ ("álbum", AlbumType::Album), - ("single", AlbumType::Single), ("ep", AlbumType::Ep), + ("single", AlbumType::Single), ("programa", AlbumType::Show), - ("livro áudio", AlbumType::Audiobook), + ("audiolivro", AlbumType::Audiobook), ], }, }, diff --git a/testfiles/dict/album_type_samples.json b/testfiles/dict/album_type_samples.json index c3869d3..9b3af4e 100644 --- a/testfiles/dict/album_type_samples.json +++ b/testfiles/dict/album_type_samples.json @@ -423,7 +423,7 @@ "Album": "Álbum", "Ep": "EP", "Single": "Single", - "Audiobook": "Livro áudio", + "Audiobook": "Audiolivro", "Show": "Programa" }, "ro": { diff --git a/testfiles/dict/dictionary.json b/testfiles/dict/dictionary.json index 66a6671..0a7032e 100644 --- a/testfiles/dict/dictionary.json +++ b/testfiles/dict/dictionary.json @@ -3184,7 +3184,7 @@ "number_nd_tokens": {}, "album_types": { "álbum": "Album", - "livro áudio": "Audiobook", + "audiolivro": "Audiobook", "ep": "Ep", "programa": "Show", "single": "Single" From 15f0c5b2050ce8b744889b1b93055fe25dd7f31c Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 27 Jun 2024 04:26:51 +0200 Subject: [PATCH 061/347] test: fix tests --- .../youtube__music_artist_basic.snap | 76 +++++++++---------- .../youtube__music_artist_basic_intl.snap | 70 ++++++++--------- 2 files changed, 73 insertions(+), 73 deletions(-) diff --git a/tests/snapshots/youtube__music_artist_basic.snap b/tests/snapshots/youtube__music_artist_basic.snap index a0f9c9f..27a6839 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 was a German band that featured a variety of influences, including various pop and electronic styles as well as harder, nihilistic hard rock. The band was founded 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)"), wikipedia_url: Some("https://en.wikipedia.org/wiki/Unheilig"), subscriber_count: "[subscriber_count]", tracks: "[tracks]", @@ -42,8 +42,8 @@ MusicArtist( by_va: false, ), AlbumItem( - id: "MPREb_HrCgErOdgCv", - name: "Freiheit", + id: "MPREb_6PEkIQE7sWY", + name: "An deiner Seite (Online Version)", cover: "[cover]", artists: [ ArtistId( @@ -52,8 +52,23 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Album, - year: Some(2004), + album_type: Ep, + year: Some(2008), + by_va: false, + ), + AlbumItem( + id: "MPREb_88p7e6nBtgz", + name: "Lichter der Stadt", + cover: "[cover]", + artists: [ + ArtistId( + id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), + name: "Unheilig", + ), + ], + artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), + album_type: Single, + year: Some(2012), by_va: false, ), AlbumItem( @@ -87,8 +102,8 @@ MusicArtist( by_va: false, ), AlbumItem( - id: "MPREb_QEClJsuO9xM", - name: "So wie Du warst", + id: "MPREb_QyGCcLWExXj", + name: "Als wär\'s das erste Mal (Exklusive Piano Version)", cover: "[cover]", artists: [ ArtistId( @@ -98,7 +113,7 @@ MusicArtist( ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), album_type: Single, - year: Some(2012), + year: Some(2014), by_va: false, ), AlbumItem( @@ -191,21 +206,6 @@ MusicArtist( year: Some(2021), by_va: false, ), - AlbumItem( - id: "MPREb_bUKkpmkyv9M", - name: "Als wär\'s das erste Mal", - cover: "[cover]", - artists: [ - ArtistId( - id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - name: "Unheilig", - ), - ], - artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Single, - year: Some(2014), - by_va: false, - ), AlbumItem( id: "MPREb_f4MhYbccbPi", name: "Moderne Zeiten", @@ -251,21 +251,6 @@ MusicArtist( year: Some(2015), by_va: false, ), - AlbumItem( - id: "MPREb_ohcGTZrqKPZ", - name: "Zelluloid", - cover: "[cover]", - artists: [ - ArtistId( - id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - name: "Unheilig", - ), - ], - artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Album, - year: Some(2004), - by_va: false, - ), AlbumItem( id: "MPREb_pWpeXxATZYb", name: "Wir sind alle wie eins", @@ -281,6 +266,21 @@ MusicArtist( year: Some(2014), by_va: false, ), + AlbumItem( + id: "MPREb_rHhaDLqalbT", + name: "Winter (EP)", + cover: "[cover]", + artists: [ + ArtistId( + id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), + name: "Unheilig", + ), + ], + artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), + album_type: Ep, + year: Some(2010), + by_va: false, + ), AlbumItem( id: "MPREb_saXgTKNPaSu", name: "Zeit zu gehen", diff --git a/tests/snapshots/youtube__music_artist_basic_intl.snap b/tests/snapshots/youtube__music_artist_basic_intl.snap index 48f2a25..056a221 100644 --- a/tests/snapshots/youtube__music_artist_basic_intl.snap +++ b/tests/snapshots/youtube__music_artist_basic_intl.snap @@ -42,7 +42,7 @@ MusicArtist( by_va: false, ), AlbumItem( - id: "MPREb_HrCgErOdgCv", + id: "MPREb_6PEkIQE7sWY", name: "[name]", cover: "[cover]", artists: [ @@ -52,8 +52,23 @@ MusicArtist( ), ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Album, - year: Some(2004), + album_type: Ep, + year: Some(2008), + by_va: false, + ), + AlbumItem( + id: "MPREb_88p7e6nBtgz", + name: "[name]", + cover: "[cover]", + artists: [ + ArtistId( + id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), + name: "[name]", + ), + ], + artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), + album_type: Single, + year: Some(2012), by_va: false, ), AlbumItem( @@ -87,7 +102,7 @@ MusicArtist( by_va: false, ), AlbumItem( - id: "MPREb_QEClJsuO9xM", + id: "MPREb_QyGCcLWExXj", name: "[name]", cover: "[cover]", artists: [ @@ -98,7 +113,7 @@ MusicArtist( ], artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), album_type: Single, - year: Some(2012), + year: Some(2014), by_va: false, ), AlbumItem( @@ -191,21 +206,6 @@ MusicArtist( year: Some(2021), by_va: false, ), - AlbumItem( - id: "MPREb_bUKkpmkyv9M", - name: "[name]", - cover: "[cover]", - artists: [ - ArtistId( - id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - name: "[name]", - ), - ], - artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Single, - year: Some(2014), - by_va: false, - ), AlbumItem( id: "MPREb_f4MhYbccbPi", name: "[name]", @@ -251,21 +251,6 @@ MusicArtist( year: Some(2015), by_va: false, ), - AlbumItem( - id: "MPREb_ohcGTZrqKPZ", - name: "[name]", - cover: "[cover]", - artists: [ - ArtistId( - id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - name: "[name]", - ), - ], - artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Album, - year: Some(2004), - by_va: false, - ), AlbumItem( id: "MPREb_pWpeXxATZYb", name: "[name]", @@ -281,6 +266,21 @@ MusicArtist( year: Some(2014), by_va: false, ), + AlbumItem( + id: "MPREb_rHhaDLqalbT", + name: "[name]", + cover: "[cover]", + artists: [ + ArtistId( + id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), + name: "[name]", + ), + ], + artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), + album_type: Ep, + year: Some(2010), + by_va: false, + ), AlbumItem( id: "MPREb_saXgTKNPaSu", name: "[name]", From 260575f94bfd619ba2f6a2adc120b13eff45e129 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 27 Jun 2024 04:46:52 +0200 Subject: [PATCH 062/347] ci: add renovate action --- {.gitea => .forgejo}/workflows/ci.yaml | 0 {.gitea => .forgejo}/workflows/release.yaml | 0 .forgejo/workflows/renovate.yaml | 59 +++++++++++++++++++++ 3 files changed, 59 insertions(+) rename {.gitea => .forgejo}/workflows/ci.yaml (100%) rename {.gitea => .forgejo}/workflows/release.yaml (100%) create mode 100644 .forgejo/workflows/renovate.yaml diff --git a/.gitea/workflows/ci.yaml b/.forgejo/workflows/ci.yaml similarity index 100% rename from .gitea/workflows/ci.yaml rename to .forgejo/workflows/ci.yaml diff --git a/.gitea/workflows/release.yaml b/.forgejo/workflows/release.yaml similarity index 100% rename from .gitea/workflows/release.yaml rename to .forgejo/workflows/release.yaml diff --git a/.forgejo/workflows/renovate.yaml b/.forgejo/workflows/renovate.yaml new file mode 100644 index 0000000..309a7c8 --- /dev/null +++ b/.forgejo/workflows/renovate.yaml @@ -0,0 +1,59 @@ +name: renovate + +on: + push: + branches: ["main"] + paths: [".forgejo/workflows/renovate.yaml"] + schedule: + - cron: "0 0 * * *" + +env: + RENOVATE_REPOSITORIES: ${{ github.repository }} + +jobs: + renovate: + runs-on: docker + container: + image: ghcr.io/visualon/renovate:latest + + steps: + - name: Load renovate repo cache + uses: actions/cache/restore@v4 + with: + path: | + .tmp/cache/renovate/repository + .tmp/cache/renovate/renovate-cache-sqlite + .tmp/osv + key: repo-cache-${{ github.run_id }} + restore-keys: | + repo-cache- + + - name: Run renovate + run: renovate + env: + LOG_LEVEL: debug + RENOVATE_BASE_DIR: ${{ github.workspace }}/.tmp + RENOVATE_ENDPOINT: ${{ github.server_url }} + RENOVATE_PLATFORM: gitea + RENOVATE_REPOSITORY_CACHE: 'enabled' + RENOVATE_TOKEN: ${{ secrets.FORGEJO_CI_TOKEN }} + RENOVATE_GIT_AUTHOR: 'Renovate Bot ' + + RENOVATE_X_SQLITE_PACKAGE_CACHE: true + + GIT_AUTHOR_NAME: 'Renovate Bot' + GIT_AUTHOR_EMAIL: 'forgejo-renovate-action@forgejo.org' + GIT_COMMITTER_NAME: 'Renovate Bot' + GIT_COMMITTER_EMAIL: 'forgejo-renovate-action@forgejo.org' + + OSV_OFFLINE_ROOT_DIR: ${{ github.workspace }}/.tmp/osv + + - name: Save renovate repo cache + if: always() && env.RENOVATE_DRY_RUN != 'full' + uses: actions/cache/save@v4 + with: + path: | + .tmp/cache/renovate/repository + .tmp/cache/renovate/renovate-cache-sqlite + .tmp/osv + key: repo-cache-${{ github.run_id }} From 2bf8ea00c5ab8b3d92a5ad42aa4dc701415fe938 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 27 Jun 2024 04:50:46 +0200 Subject: [PATCH 063/347] ci: fix revovate image version --- .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 309a7c8..0819ed3 100644 --- a/.forgejo/workflows/renovate.yaml +++ b/.forgejo/workflows/renovate.yaml @@ -14,7 +14,7 @@ jobs: renovate: runs-on: docker container: - image: ghcr.io/visualon/renovate:latest + image: ghcr.io/visualon/renovate:37.420.0 steps: - name: Load renovate repo cache From 913cadea0c684a6842fed1b14ac6b3883667f20d Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 27 Jun 2024 04:52:49 +0200 Subject: [PATCH 064/347] ci: change renovate docker image --- .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 0819ed3..87b3859 100644 --- a/.forgejo/workflows/renovate.yaml +++ b/.forgejo/workflows/renovate.yaml @@ -14,7 +14,7 @@ jobs: renovate: runs-on: docker container: - image: ghcr.io/visualon/renovate:37.420.0 + image: renovate/renovate:latest steps: - name: Load renovate repo cache From e0759ebce32a5520245bb2c0cb920734b04ee7dc Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 27 Jun 2024 04:58:18 +0200 Subject: [PATCH 065/347] fix: renovate ci token --- .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 87b3859..d1e0b35 100644 --- a/.forgejo/workflows/renovate.yaml +++ b/.forgejo/workflows/renovate.yaml @@ -36,7 +36,7 @@ jobs: RENOVATE_ENDPOINT: ${{ github.server_url }} RENOVATE_PLATFORM: gitea RENOVATE_REPOSITORY_CACHE: 'enabled' - RENOVATE_TOKEN: ${{ secrets.FORGEJO_CI_TOKEN }} + RENOVATE_TOKEN: ${{ secrets.FORGEJO_CI_BOT_TOKEN }} RENOVATE_GIT_AUTHOR: 'Renovate Bot ' RENOVATE_X_SQLITE_PACKAGE_CACHE: true From 938e5773371ef271ae843bfb2f7eb592e9497b45 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 27 Jun 2024 05:16:57 +0200 Subject: [PATCH 066/347] test: fix tests --- .../youtube__music_artist_basic.snap | 32 +++++++++---------- .../youtube__music_artist_basic_intl.snap | 30 ++++++++--------- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/tests/snapshots/youtube__music_artist_basic.snap b/tests/snapshots/youtube__music_artist_basic.snap index 27a6839..c88198a 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 was a German band that featured a variety of influences, including various pop and electronic styles as well as harder, nihilistic hard rock. The band was founded 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 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)"), wikipedia_url: Some("https://en.wikipedia.org/wiki/Unheilig"), subscriber_count: "[subscriber_count]", tracks: "[tracks]", @@ -56,21 +56,6 @@ MusicArtist( year: Some(2008), by_va: false, ), - AlbumItem( - id: "MPREb_88p7e6nBtgz", - name: "Lichter der Stadt", - cover: "[cover]", - artists: [ - ArtistId( - id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - name: "Unheilig", - ), - ], - artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Single, - year: Some(2012), - by_va: false, - ), AlbumItem( id: "MPREb_Md2aZrjaqHX", name: "Stille Winternacht", @@ -101,6 +86,21 @@ MusicArtist( year: Some(2018), by_va: false, ), + AlbumItem( + id: "MPREb_QEClJsuO9xM", + name: "So wie Du warst", + cover: "[cover]", + artists: [ + ArtistId( + id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), + name: "Unheilig", + ), + ], + artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), + album_type: Single, + year: Some(2012), + by_va: false, + ), AlbumItem( id: "MPREb_QyGCcLWExXj", name: "Als wär\'s das erste Mal (Exklusive Piano Version)", diff --git a/tests/snapshots/youtube__music_artist_basic_intl.snap b/tests/snapshots/youtube__music_artist_basic_intl.snap index 056a221..8a3d210 100644 --- a/tests/snapshots/youtube__music_artist_basic_intl.snap +++ b/tests/snapshots/youtube__music_artist_basic_intl.snap @@ -56,21 +56,6 @@ MusicArtist( year: Some(2008), by_va: false, ), - AlbumItem( - id: "MPREb_88p7e6nBtgz", - name: "[name]", - cover: "[cover]", - artists: [ - ArtistId( - id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - name: "[name]", - ), - ], - artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), - album_type: Single, - year: Some(2012), - by_va: false, - ), AlbumItem( id: "MPREb_Md2aZrjaqHX", name: "[name]", @@ -101,6 +86,21 @@ MusicArtist( year: Some(2018), by_va: false, ), + AlbumItem( + id: "MPREb_QEClJsuO9xM", + name: "[name]", + cover: "[cover]", + artists: [ + ArtistId( + id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), + name: "[name]", + ), + ], + artist_id: Some("UC7cl4MmM6ZZ2TcFyMk_b4pg"), + album_type: Single, + year: Some(2012), + by_va: false, + ), AlbumItem( id: "MPREb_QyGCcLWExXj", name: "[name]", From 44c2debea61f70c24ad6d827987e85e2132ed3d1 Mon Sep 17 00:00:00 2001 From: Forgejo Actions Date: Thu, 27 Jun 2024 05:26:32 +0200 Subject: [PATCH 067/347] chore: Configure Renovate (#3) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Welcome to [Renovate](https://github.com/renovatebot/renovate)! This is an onboarding PR to help you understand and configure settings before regular Pull Requests begin. 🚦 To activate Renovate, merge this Pull Request. To disable Renovate, simply close this Pull Request unmerged. --- ### Detected Package Files * `Cargo.toml` (cargo) * `cli/Cargo.toml` (cargo) * `codegen/Cargo.toml` (cargo) * `downloader/Cargo.toml` (cargo) * `.forgejo/workflows/ci.yaml` (github-actions) * `.forgejo/workflows/release.yaml` (github-actions) * `.forgejo/workflows/renovate.yaml` (github-actions) * `testfiles/dict/cldr_data/package.json` (npm) * `.woodpecker.yml` (woodpecker) ### What to Expect With your current configuration, Renovate will create 4 Pull Requests:
chore(deps): update rust crate quick-xml to 0.34.0 - Schedule: ["at any time"] - Branch name: `renovate/quick-xml-0.x` - Merge into: `main` - Upgrade [quick-xml](https://github.com/tafia/quick-xml) to `0.34.0`
chore(deps): update rust crate rstest to 0.21.0 - Schedule: ["at any time"] - Branch name: `renovate/rstest-0.x` - Merge into: `main` - Upgrade [rstest](https://github.com/la10736/rstest) to `0.21.0`
chore(deps): update dependency cldr-dates-modern to v45 - Schedule: ["at any time"] - Branch name: `renovate/cldr-dates-modern-45.x` - Merge into: `main` - Upgrade [cldr-dates-modern](https://github.com/unicode-cldr/cldr-json) to `^45.0.0`
chore(deps): update dependency cldr-numbers-modern to v45 - Schedule: ["at any time"] - Branch name: `renovate/cldr-numbers-modern-45.x` - Merge into: `main` - Upgrade [cldr-numbers-modern](https://github.com/unicode-cldr/cldr-json) to `^45.0.0`
🚸 Branch creation will be limited to maximum 2 per hour, so it doesn't swamp any CI resources or overwhelm the project. See docs for `prhourlylimit` for details. --- ❓ Got questions? Check out Renovate's [Docs](https://docs.renovatebot.com/), particularly the Getting Started section. If you need any further assistance then you can also [request help here](https://github.com/renovatebot/renovate/discussions). --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). Co-authored-by: Renovate Bot Co-authored-by: ThetaDev Reviewed-on: https://code.thetadev.de/ThetaDev/rustypipe/pulls/3 Co-authored-by: Forgejo Actions Co-committed-by: Forgejo Actions --- renovate.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 renovate.json diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000..38312ca --- /dev/null +++ b/renovate.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "config:best-practices", + ":approveMajorUpdates", + ":maintainLockFilesWeekly", + "schedule:daily" + ], + "semanticCommits": "enabled", + "automergeStrategy": "squash", + "osvVulnerabilityAlerts": true, + "labels": ["dependency-upgrade"], + "enabledManagers": ["cargo"] +} From 1914e51aff820c8e76eb0a140c388d144547c642 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 27 Jun 2024 05:29:00 +0200 Subject: [PATCH 068/347] ci: improve Artifactview PR comment --- .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 46c460f..4239b3a 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -34,4 +34,4 @@ jobs: run: | 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 }}}' + --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 abfe217807bb63c124dbdb868120ec74a7230783 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 27 Jun 2024 05:30:46 +0200 Subject: [PATCH 069/347] ci: update renovate action --- .forgejo/workflows/renovate.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.forgejo/workflows/renovate.yaml b/.forgejo/workflows/renovate.yaml index d1e0b35..514ea38 100644 --- a/.forgejo/workflows/renovate.yaml +++ b/.forgejo/workflows/renovate.yaml @@ -3,7 +3,9 @@ name: renovate on: push: branches: ["main"] - paths: [".forgejo/workflows/renovate.yaml"] + paths: + - ".forgejo/workflows/renovate.yaml" + - "renovate.json" schedule: - cron: "0 0 * * *" From 263b87330608adcec20a8f4fdc72ac4f37bda6a7 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 27 Jun 2024 05:43:56 +0200 Subject: [PATCH 070/347] ci: update renovate config, add GH token --- .forgejo/workflows/renovate.yaml | 1 + renovate.json | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.forgejo/workflows/renovate.yaml b/.forgejo/workflows/renovate.yaml index 514ea38..837138e 100644 --- a/.forgejo/workflows/renovate.yaml +++ b/.forgejo/workflows/renovate.yaml @@ -39,6 +39,7 @@ jobs: RENOVATE_PLATFORM: gitea RENOVATE_REPOSITORY_CACHE: 'enabled' RENOVATE_TOKEN: ${{ secrets.FORGEJO_CI_BOT_TOKEN }} + GITHUB_COM_TOKEN: ${{ secrets.GH_PUBLIC_TOKEN }} RENOVATE_GIT_AUTHOR: 'Renovate Bot ' RENOVATE_X_SQLITE_PACKAGE_CACHE: true diff --git a/renovate.json b/renovate.json index 38312ca..4a55492 100644 --- a/renovate.json +++ b/renovate.json @@ -10,5 +10,6 @@ "automergeStrategy": "squash", "osvVulnerabilityAlerts": true, "labels": ["dependency-upgrade"], - "enabledManagers": ["cargo"] + "enabledManagers": ["cargo"], + "prHourlyLimit": 5 } From e3de94c2a7914a7bce97eb673db7ff73fd480e56 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 27 Jun 2024 05:47:47 +0200 Subject: [PATCH 071/347] ci: renovate: disable lockfile maintenance --- renovate.json | 1 - 1 file changed, 1 deletion(-) diff --git a/renovate.json b/renovate.json index 4a55492..f21e62f 100644 --- a/renovate.json +++ b/renovate.json @@ -3,7 +3,6 @@ "extends": [ "config:best-practices", ":approveMajorUpdates", - ":maintainLockFilesWeekly", "schedule:daily" ], "semanticCommits": "enabled", From ce3ec34337b8acac41410ea39264aab7423d5801 Mon Sep 17 00:00:00 2001 From: Forgejo Actions Date: Thu, 27 Jun 2024 05:52:36 +0200 Subject: [PATCH 072/347] chore(deps): update rust crate tokio to 1.20.4 [security] (#4) Reviewed-on: https://code.thetadev.de/ThetaDev/rustypipe/pulls/4 Co-authored-by: Forgejo Actions Co-committed-by: Forgejo Actions --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 4203e8e..9e5b2fa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,7 +33,7 @@ fancy-regex = "0.13.0" thiserror = "1.0.36" url = "2.2.2" reqwest = { version = "0.12.0", default-features = false } -tokio = "1.20.0" +tokio = "1.20.4" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0.82" serde_with = { version = "3.0.0", default-features = false, features = [ From 1e8a1af08c873cee7feadf63c2eff62753a78f64 Mon Sep 17 00:00:00 2001 From: Forgejo Actions Date: Thu, 27 Jun 2024 05:52:54 +0200 Subject: [PATCH 073/347] chore(deps): update rust crate quick-xml to 0.34.0 (#5) Reviewed-on: https://code.thetadev.de/ThetaDev/rustypipe/pulls/5 Co-authored-by: Forgejo Actions Co-committed-by: Forgejo Actions --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 9e5b2fa..bfd278f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -53,7 +53,7 @@ phf = "0.11.1" phf_codegen = "0.11.1" base64 = "0.22.0" urlencoding = "2.1.2" -quick-xml = { version = "0.31.0", features = ["serialize"] } +quick-xml = { version = "0.34.0", features = ["serialize"] } tracing = { version = "0.1.37", features = ["log"] } # CLI From c3af918ba53c6230c0e4aef822a0cb2cf120bf3f Mon Sep 17 00:00:00 2001 From: Forgejo Actions Date: Thu, 27 Jun 2024 05:53:08 +0200 Subject: [PATCH 074/347] chore(deps): update rust crate rstest to 0.21.0 (#7) Reviewed-on: https://code.thetadev.de/ThetaDev/rustypipe/pulls/7 Co-authored-by: Forgejo Actions Co-committed-by: Forgejo Actions --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index bfd278f..6425769 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -66,7 +66,7 @@ dirs = "5.0.0" filenamify = "0.1.0" # Testing -rstest = "0.19.0" +rstest = "0.21.0" tokio-test = "0.4.2" insta = { version = "1.17.1", features = ["ron", "redactions"] } path_macro = "1.0.0" From d9d2c22aeaaac5626165977bd22ea9f2d6ea807f Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 27 Jun 2024 13:21:28 +0200 Subject: [PATCH 075/347] ci: fix release workflow --- .forgejo/workflows/release.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/release.yaml b/.forgejo/workflows/release.yaml index f43c70d..042e1e9 100644 --- a/.forgejo/workflows/release.yaml +++ b/.forgejo/workflows/release.yaml @@ -26,7 +26,7 @@ jobs: - name: 📤 Publish crate on code.thetadev.de run: | mkdir -p ~/.cargo - printf '[registries.thetadev]\nindex = "https://code.thetadev.de/ThetaDev/_cargo-index.git"\ntoken = "Bearer ${{ secrets.TOKEN_GITEA }}"\n' >> ~/.cargo/config.toml + printf '\n\n[registries.thetadev]\nindex = "https://code.thetadev.de/ThetaDev/_cargo-index.git"\ntoken = "Bearer ${{ secrets.FORGEJO_CI_TOKEN }}"\n' >> ~/.cargo/config.toml sed -i "s/^rustypipe.*=\s*{/\0 registry = \"thetadev\",/g" Cargo.toml cargo publish --registry thetadev --allow-dirty --package "${{ env.CRATE }}" git restore Cargo.toml From ea5df007bc862e8d689531133c5d63987b9a4659 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 27 Jun 2024 13:36:39 +0200 Subject: [PATCH 076/347] chore(release): release rustypipe v0.2.0 --- CHANGELOG.md | 38 ++++++++++++++++++++++++++++++++++++++ Cargo.toml | 4 ++-- Justfile | 2 +- 3 files changed, 41 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c0d074..4375f57 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,44 @@ All notable changes to this project will be documented in this file. + +## [v0.2.0](https://code.thetadev.de/ThetaDev/rustypipe/compare/rustypipe/v0.1.3..rustypipe/v0.2.0) - 2024-06-27 + +### 🚀 Features + +- Add text formatting (bold/italic/strikethrough) - ([b8825f9](https://code.thetadev.de/ThetaDev/rustypipe/commit/b8825f9199365c873a4f0edd98a435e986b8daa2)) +- Prefix chip-style web links (social media) with the service name - ([6c41ef2](https://code.thetadev.de/ThetaDev/rustypipe/commit/6c41ef2fb2531e10a12c271e2d48504510a3b0bf)) +- Make get_visitor_data() public - ([da1d1bd](https://code.thetadev.de/ThetaDev/rustypipe/commit/da1d1bd2a0b214da10436ae221c90a0f88697b9a)) +- Add UnavailabilityReason: IpBan - ([401d4e8](https://code.thetadev.de/ThetaDev/rustypipe/commit/401d4e8255b1e86444319fed6d114dfbd0f80bbd)) +- Add YtEntity trait - ([792e3b3](https://code.thetadev.de/ThetaDev/rustypipe/commit/792e3b31e0101087a167935baad39a2e3b4296d0)) + +### 🐛 Bug Fixes + +- Remove Innertube API keys, update android player params - ([a8fb337](https://code.thetadev.de/ThetaDev/rustypipe/commit/a8fb337fae9cb0112e0152f9a0a19ebae49c2a4d)) +- Parsing error when no `music_related` content available - ([8fbd6b9](https://code.thetadev.de/ThetaDev/rustypipe/commit/8fbd6b95b6f01108b46f53fe60a56b0c561e40c1)) +- Parsing audiobook type in European Portuguese - ([041ce2d](https://code.thetadev.de/ThetaDev/rustypipe/commit/041ce2d08f6021c88e8890034f551f7e01b2f012)) +- Renovate ci token - ([e0759eb](https://code.thetadev.de/ThetaDev/rustypipe/commit/e0759ebce32a5520245bb2c0cb920734b04ee7dc)) + +### 🚜 Refactor + +- [**breaking**] Rename VideoItem/VideoPlayerDetails.length to duration for consistency - ([94e8d24](https://code.thetadev.de/ThetaDev/rustypipe/commit/94e8d24c6848b8bfca70dd03a7d89547ba9d6051)) + +### 📚 Documentation + +- Add logo - ([6646078](https://code.thetadev.de/ThetaDev/rustypipe/commit/66460789449be0d5984cbdb6ec372e69323b7a88)) + +### ⚙️ Miscellaneous Tasks + +- Changelog: fix incorrect version URLs - ([97b6f07](https://code.thetadev.de/ThetaDev/rustypipe/commit/97b6f07399e80e00a6c015d013e744568be125dd)) +- Update rstest to v0.19.0 - ([50fd1f0](https://code.thetadev.de/ThetaDev/rustypipe/commit/50fd1f08caf39c1298654e06059cc393543e925b)) +- Introduce MSRV - ([5dbb288](https://code.thetadev.de/ThetaDev/rustypipe/commit/5dbb288a496d53a299effa2026f5258af7b1f176)) +- Fix clippy lints - ([45b9f2a](https://code.thetadev.de/ThetaDev/rustypipe/commit/45b9f2a627b4e7075ba0b1c5f16efcc19aef7922)) +- Vscode: enable rss feature by default - ([e75ffbb](https://code.thetadev.de/ThetaDev/rustypipe/commit/e75ffbb5da6198086385ea96383ab9d0791592a5)) +- Configure Renovate (#3) - ([44c2deb](https://code.thetadev.de/ThetaDev/rustypipe/commit/44c2debea61f70c24ad6d827987e85e2132ed3d1)) +- *(deps)* Update rust crate tokio to 1.20.4 [security] (#4) - ([ce3ec34](https://code.thetadev.de/ThetaDev/rustypipe/commit/ce3ec34337b8acac41410ea39264aab7423d5801)) +- *(deps)* Update rust crate quick-xml to 0.34.0 (#5) - ([1e8a1af](https://code.thetadev.de/ThetaDev/rustypipe/commit/1e8a1af08c873cee7feadf63c2eff62753a78f64)) +- *(deps)* Update rust crate rstest to 0.21.0 (#7) - ([c3af918](https://code.thetadev.de/ThetaDev/rustypipe/commit/c3af918ba53c6230c0e4aef822a0cb2cf120bf3f)) + ## [v0.1.3](https://code.thetadev.de/ThetaDev/rustypipe/compare/rustypipe/v0.1.2..rustypipe/v0.1.3) - 2024-04-01 ### 🐛 Bug Fixes diff --git a/Cargo.toml b/Cargo.toml index 6425769..f257a00 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe" -version = "0.1.3" +version = "0.2.0" rust-version = "1.67.1" edition.workspace = true authors.workspace = true @@ -72,7 +72,7 @@ insta = { version = "1.17.1", features = ["ron", "redactions"] } path_macro = "1.0.0" # Included crates -rustypipe = { path = ".", version = "0.1.0", default-features = false } +rustypipe = { path = ".", version = "0.2.0", default-features = false } rustypipe-downloader = { path = "./downloader", version = "0.1.0", default-features = false } [features] diff --git a/Justfile b/Justfile index 0e34434..5fd6b75 100644 --- a/Justfile +++ b/Justfile @@ -79,7 +79,7 @@ release crate="rustypipe": editor "$CHANGELOG" - git add "$CHANGELOG" + git add . git commit -m "chore(release): release $CRATE v$VERSION" awk 'BEGIN{RS="(^|\n)## [^\n]+\n*"} NR==2 { print }' "$CHANGELOG" | git tag -as -F - --cleanup whitespace "$TAG" From 3aff55c76cce8596b6def5773a6a3ffbccae5599 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 27 Jun 2024 13:44:37 +0200 Subject: [PATCH 077/347] ci: fix release changelog extraction --- .forgejo/workflows/release.yaml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.forgejo/workflows/release.yaml b/.forgejo/workflows/release.yaml index 042e1e9..e53c7c0 100644 --- a/.forgejo/workflows/release.yaml +++ b/.forgejo/workflows/release.yaml @@ -10,16 +10,17 @@ jobs: steps: - name: 📦 Checkout repository uses: actions/checkout@v4 - with: - fetch-depth: 0 - name: Get variables run: | - echo "CRATE=$(echo '${{ github.ref_name }}' | awk 'BEGIN{RS="/"} NR==1{print}')" >> "$GITHUB_ENV" + CRATE=$(echo '${{ github.ref_name }}' | awk 'BEGIN{RS="/"} NR==1{print}') + echo "CRATE=$CRATE" >> "$GITHUB_ENV" echo "CRATE_VERSION=$(echo '${{ github.ref_name }}' | awk 'BEGIN{RS="/"} NR==2{print}')" >> "$GITHUB_ENV" + CL_PATH="CHANGELOG.md" + if [[ "$CRATE" != "rustypipe" ]]; then pfx="rustypipe-"; CL_PATH="${CRATE#"$pfx"}/$CL_PATH"; fi { echo 'CHANGELOG<> "$GITHUB_ENV" From 4f06b51138563716ce283fb1d7eebab9b6b00c25 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 27 Jun 2024 14:00:55 +0200 Subject: [PATCH 078/347] chore(release): release rustypipe-downloader v0.1.1 --- downloader/CHANGELOG.md | 18 ++++++++++++++++++ downloader/Cargo.toml | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/downloader/CHANGELOG.md b/downloader/CHANGELOG.md index f5ac11c..9912915 100644 --- a/downloader/CHANGELOG.md +++ b/downloader/CHANGELOG.md @@ -2,6 +2,24 @@ All notable changes to this project will be documented in this file. + +## [v0.1.1](https://code.thetadev.de/ThetaDev/rustypipe/compare/rustypipe-downloader/v0.1.0..rustypipe-downloader/v0.1.1) - 2024-06-27 + +### 📚 Documentation + +- Add logo - ([6646078](https://code.thetadev.de/ThetaDev/rustypipe/commit/66460789449be0d5984cbdb6ec372e69323b7a88)) + +### ⚙️ Miscellaneous Tasks + +- Changelog: fix incorrect version URLs - ([97b6f07](https://code.thetadev.de/ThetaDev/rustypipe/commit/97b6f07399e80e00a6c015d013e744568be125dd)) +- Update rstest to v0.19.0 - ([50fd1f0](https://code.thetadev.de/ThetaDev/rustypipe/commit/50fd1f08caf39c1298654e06059cc393543e925b)) +- Introduce MSRV - ([5dbb288](https://code.thetadev.de/ThetaDev/rustypipe/commit/5dbb288a496d53a299effa2026f5258af7b1f176)) +- Fix clippy lints - ([45b9f2a](https://code.thetadev.de/ThetaDev/rustypipe/commit/45b9f2a627b4e7075ba0b1c5f16efcc19aef7922)) +- *(deps)* Update rust crate tokio to 1.20.4 [security] (#4) - ([ce3ec34](https://code.thetadev.de/ThetaDev/rustypipe/commit/ce3ec34337b8acac41410ea39264aab7423d5801)) +- *(deps)* Update rust crate quick-xml to 0.34.0 (#5) - ([1e8a1af](https://code.thetadev.de/ThetaDev/rustypipe/commit/1e8a1af08c873cee7feadf63c2eff62753a78f64)) +- *(deps)* Update rust crate rstest to 0.21.0 (#7) - ([c3af918](https://code.thetadev.de/ThetaDev/rustypipe/commit/c3af918ba53c6230c0e4aef822a0cb2cf120bf3f)) +- Update rustypipe to 0.2.0 + ## [v0.1.0](https://code.thetadev.de/ThetaDev/rustypipe/commits/tag/rustypipe-downloader/v0.1.0) - 2024-03-22 Initial release diff --git a/downloader/Cargo.toml b/downloader/Cargo.toml index 7f0190d..c48fbe8 100644 --- a/downloader/Cargo.toml +++ b/downloader/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe-downloader" -version = "0.1.0" +version = "0.1.1" rust-version = "1.67.1" edition.workspace = true authors.workspace = true From 618a24c120c8c446109c117fce32179e3ba78e6d Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 27 Jun 2024 14:07:08 +0200 Subject: [PATCH 079/347] chore(release): release rustypipe-cli v0.1.1 --- cli/CHANGELOG.md | 26 ++++++++++++++++++++++++++ cli/Cargo.toml | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md index 057a9d8..4d0aee1 100644 --- a/cli/CHANGELOG.md +++ b/cli/CHANGELOG.md @@ -2,6 +2,32 @@ All notable changes to this project will be documented in this file. + +## [v0.1.1](https://code.thetadev.de/ThetaDev/rustypipe/compare/rustypipe-cli/v0.1.0..rustypipe-cli/v0.1.1) - 2024-06-27 + +### 🚀 Features + +- CLI: setting player type - ([16e0e28](https://code.thetadev.de/ThetaDev/rustypipe/commit/16e0e28c4866bb69d8e4c06eef94176f329a1c27)) + +### 🐛 Bug Fixes + +- Clippy warning - ([8420c2f](https://code.thetadev.de/ThetaDev/rustypipe/commit/8420c2f8dbd2791b524ceca2e19fb68e5b918bfa)) + +### 📚 Documentation + +- Add logo - ([6646078](https://code.thetadev.de/ThetaDev/rustypipe/commit/66460789449be0d5984cbdb6ec372e69323b7a88)) + +### ⚙️ Miscellaneous Tasks + +- Changelog: fix incorrect version URLs - ([97b6f07](https://code.thetadev.de/ThetaDev/rustypipe/commit/97b6f07399e80e00a6c015d013e744568be125dd)) +- Update rstest to v0.19.0 - ([50fd1f0](https://code.thetadev.de/ThetaDev/rustypipe/commit/50fd1f08caf39c1298654e06059cc393543e925b)) +- Introduce MSRV - ([5dbb288](https://code.thetadev.de/ThetaDev/rustypipe/commit/5dbb288a496d53a299effa2026f5258af7b1f176)) +- Fix clippy lints - ([45b9f2a](https://code.thetadev.de/ThetaDev/rustypipe/commit/45b9f2a627b4e7075ba0b1c5f16efcc19aef7922)) +- *(deps)* Update rust crate tokio to 1.20.4 [security] (#4) - ([ce3ec34](https://code.thetadev.de/ThetaDev/rustypipe/commit/ce3ec34337b8acac41410ea39264aab7423d5801)) +- *(deps)* Update rust crate quick-xml to 0.34.0 (#5) - ([1e8a1af](https://code.thetadev.de/ThetaDev/rustypipe/commit/1e8a1af08c873cee7feadf63c2eff62753a78f64)) +- *(deps)* Update rust crate rstest to 0.21.0 (#7) - ([c3af918](https://code.thetadev.de/ThetaDev/rustypipe/commit/c3af918ba53c6230c0e4aef822a0cb2cf120bf3f)) +- Update rustypipe to 0.2.0 + ## [v0.1.0](https://code.thetadev.de/ThetaDev/rustypipe/commits/tag/rustypipe-cli/v0.1.0) - 2024-03-22 Initial release diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 722079e..c5021aa 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe-cli" -version = "0.1.0" +version = "0.1.1" rust-version = "1.70.0" edition.workspace = true authors.workspace = true From 298e4def93d1595fba91be103f014aa645a08937 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 1 Jul 2024 23:34:58 +0200 Subject: [PATCH 080/347] fix(deps): update quick-xml to v0.35.0 --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index f257a00..10853cb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -53,7 +53,7 @@ phf = "0.11.1" phf_codegen = "0.11.1" base64 = "0.22.0" urlencoding = "2.1.2" -quick-xml = { version = "0.34.0", features = ["serialize"] } +quick-xml = { version = "0.35.0", features = ["serialize"] } tracing = { version = "0.1.37", features = ["log"] } # CLI From 182826a3ac31368da658a3561a2b2617f97510e9 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 1 Jul 2024 23:37:02 +0200 Subject: [PATCH 081/347] chore(release): release rustypipe v0.2.1 --- CHANGELOG.md | 7 +++++++ Cargo.toml | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4375f57..7201d5f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file. +## [v0.2.1](https://code.thetadev.de/ThetaDev/rustypipe/compare/rustypipe/v0.2.0..rustypipe/v0.2.1) - 2024-07-01 + +### 🐛 Bug Fixes + +- *(deps)* Update quick-xml to v0.35.0 - ([298e4de](https://code.thetadev.de/ThetaDev/rustypipe/commit/298e4def93d1595fba91be103f014aa645a08937)) + + ## [v0.2.0](https://code.thetadev.de/ThetaDev/rustypipe/compare/rustypipe/v0.1.3..rustypipe/v0.2.0) - 2024-06-27 ### 🚀 Features diff --git a/Cargo.toml b/Cargo.toml index 10853cb..2eac990 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe" -version = "0.2.0" +version = "0.2.1" rust-version = "1.67.1" edition.workspace = true authors.workspace = true From dd0565ba98acb3289ed220fd2a3aaf86bb8b0788 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 15 Jul 2024 20:41:20 +0200 Subject: [PATCH 082/347] fix!: extracting nsig function, remove field `throttled` from Video/Audio stream model --- src/client/player.rs | 247 +++++++----------- ...layer__tests__map_player_data_android.snap | 16 -- ...layer__tests__map_player_data_desktop.snap | 20 -- ...__tests__map_player_data_desktopmusic.snap | 14 - ...t__player__tests__map_player_data_ios.snap | 4 - ...__tests__map_player_data_tvhtml5embed.snap | 20 -- src/deobfuscate.rs | 77 +++--- src/model/mod.rs | 6 - tests/youtube.rs | 10 +- 9 files changed, 140 insertions(+), 274 deletions(-) diff --git a/src/client/player.rs b/src/client/player.rs index 03ac1e8..3c7536c 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -277,26 +277,19 @@ impl MapResponse for response::Player { } match (f.is_video(), f.is_audio()) { - (true, true) => { - let mut map_res = map_video_stream(f, &deobf, &mut last_nsig); - warnings.append(&mut map_res.warnings); - if let Some(c) = map_res.c { - video_streams.push(c); - }; - } - (true, false) => { - let mut map_res = map_video_stream(f, &deobf, &mut last_nsig); - warnings.append(&mut map_res.warnings); - if let Some(c) = map_res.c { - video_only_streams.push(c); - }; - } + (true, true) => match map_video_stream(f, &deobf, &mut last_nsig) { + Ok(c) => video_streams.push(c), + Err(e) => warnings.push(e.to_string()), + }, + (true, false) => match map_video_stream(f, &deobf, &mut last_nsig) { + Ok(c) => video_only_streams.push(c), + Err(e) => warnings.push(e.to_string()), + }, (false, true) => { - let mut map_res = map_audio_stream(f, &deobf, &mut last_nsig); - warnings.append(&mut map_res.warnings); - if let Some(c) = map_res.c { - audio_streams.push(c); - }; + match map_audio_stream(f, &deobf, &mut last_nsig, &mut warnings) { + Ok(c) => audio_streams.push(c), + Err(e) => warnings.push(e.to_string()), + } } (false, false) => warnings.push(format!("invalid stream: itag {}", f.itag)), } @@ -441,7 +434,6 @@ fn deobf_nsig( struct UrlMapRes { url: String, - throttled: bool, xtags: Option, } @@ -450,157 +442,115 @@ fn map_url( signature_cipher: &Option, deobf: &Deobfuscator, last_nsig: &mut [String; 2], -) -> MapResult> { - let x = match url { - Some(url) => util::url_to_params(url).map_err(|_| format!("Could not parse url `{url}`")), +) -> Result { + let (url_base, mut url_params) = match url { + Some(url) => util::url_to_params(url).map_err(|_| { + ExtractionError::InvalidData(format!("Could not parse url `{url}`").into()) + }), None => match signature_cipher { Some(signature_cipher) => cipher_to_url_params(signature_cipher, deobf).map_err(|e| { - format!("Could not deobfuscate signatureCipher `{signature_cipher}`: {e}") + ExtractionError::InvalidData( + format!("Could not deobfuscate signatureCipher `{signature_cipher}`: {e}") + .into(), + ) }), - None => Err("stream contained neither url or cipher".to_owned()), + None => Err(ExtractionError::InvalidData( + "stream contained neither url or cipher".into(), + )), }, - }; + }?; - let (url_base, mut url_params) = match x { - Ok(x) => x, - Err(e) => { - return MapResult { - c: None, - warnings: vec![e], - } - } - }; + deobf_nsig(&mut url_params, deobf, last_nsig)?; + let url = Url::parse_with_params(url_base.as_str(), url_params.iter()) + .map_err(|_| ExtractionError::InvalidData("could not combine URL".into()))?; - let mut warnings = vec![]; - let mut throttled = false; - deobf_nsig(&mut url_params, deobf, last_nsig).unwrap_or_else(|e| { - warnings.push(format!( - "Could not deobfuscate nsig (params: {url_params:?}): {e}" - )); - throttled = true; - }); - - match Url::parse_with_params(url_base.as_str(), url_params.iter()) { - Ok(url) => MapResult { - c: Some(UrlMapRes { - url: url.to_string(), - throttled, - xtags: url_params.get("xtags").cloned(), - }), - warnings, - }, - Err(_) => MapResult { - c: None, - warnings: vec![format!( - "url could not be joined. url: `{url_base}` params: {url_params:?}" - )], - }, - } + Ok(UrlMapRes { + url: url.to_string(), + xtags: url_params.get("xtags").cloned(), + }) } fn map_video_stream( f: player::Format, deobf: &Deobfuscator, last_nsig: &mut [String; 2], -) -> MapResult> { +) -> Result { let Some((mtype, codecs)) = parse_mime(&f.mime_type) else { - return MapResult { - c: None, - warnings: vec![format!( + return Err(ExtractionError::InvalidData( + format!( "Invalid mime type `{}` in video format {:?}", &f.mime_type, &f - )], - }; + ) + .into(), + )); }; let Some(format) = get_video_format(mtype) else { - return MapResult { - c: None, - warnings: vec![format!("invalid video format. itag: {}", f.itag)], - }; + return Err(ExtractionError::InvalidData( + format!("invalid video format. itag: {}", f.itag).into(), + )); }; - let map_res = map_url(&f.url, &f.signature_cipher, deobf, last_nsig); + let map_res = map_url(&f.url, &f.signature_cipher, deobf, last_nsig)?; - match map_res.c { - Some(url) => MapResult { - c: Some(VideoStream { - url: url.url, - itag: f.itag, - bitrate: f.bitrate, - average_bitrate: f.average_bitrate.unwrap_or(f.bitrate), - size: f.content_length, - index_range: f.index_range, - init_range: f.init_range, - duration_ms: f.approx_duration_ms, - // Note that the format has already been verified using - // is_video(), so these unwraps are safe - width: f.width.unwrap(), - height: f.height.unwrap(), - fps: f.fps.unwrap(), - quality: f.quality_label.unwrap(), - hdr: f.color_info.unwrap_or_default().primaries - == player::Primaries::ColorPrimariesBt2020, - format, - codec: get_video_codec(codecs), - mime: f.mime_type, - throttled: url.throttled, - }), - warnings: map_res.warnings, - }, - None => MapResult { - c: None, - warnings: map_res.warnings, - }, - } + Ok(VideoStream { + url: map_res.url, + itag: f.itag, + bitrate: f.bitrate, + average_bitrate: f.average_bitrate.unwrap_or(f.bitrate), + size: f.content_length, + index_range: f.index_range, + init_range: f.init_range, + duration_ms: f.approx_duration_ms, + // Note that the format has already been verified using + // is_video(), so these unwraps are safe + width: f.width.unwrap(), + height: f.height.unwrap(), + fps: f.fps.unwrap(), + quality: f.quality_label.unwrap(), + hdr: f.color_info.unwrap_or_default().primaries == player::Primaries::ColorPrimariesBt2020, + format, + codec: get_video_codec(codecs), + mime: f.mime_type, + }) } fn map_audio_stream( f: player::Format, deobf: &Deobfuscator, last_nsig: &mut [String; 2], -) -> MapResult> { + warnings: &mut Vec, +) -> Result { let Some((mtype, codecs)) = parse_mime(&f.mime_type) else { - return MapResult { - c: None, - warnings: vec![format!( + return Err(ExtractionError::InvalidData( + format!( "Invalid mime type `{}` in video format {:?}", &f.mime_type, &f - )], - }; + ) + .into(), + )); }; - let Some(format) = get_audio_format(mtype) else { - return MapResult { - c: None, - warnings: vec![format!("invalid audio format. itag: {}", f.itag)], - }; - }; - let map_res = map_url(&f.url, &f.signature_cipher, deobf, last_nsig); - let mut warnings = map_res.warnings; + let format = get_audio_format(mtype).ok_or_else(|| { + ExtractionError::InvalidData(format!("invalid audio format. itag: {}", f.itag).into()) + })?; + let map_res = map_url(&f.url, &f.signature_cipher, deobf, last_nsig)?; - match map_res.c { - Some(url) => MapResult { - c: Some(AudioStream { - url: url.url, - itag: f.itag, - bitrate: f.bitrate, - average_bitrate: f.average_bitrate.unwrap_or(f.bitrate), - size: f.content_length.unwrap(), - index_range: f.index_range, - init_range: f.init_range, - duration_ms: f.approx_duration_ms, - format, - codec: get_audio_codec(codecs), - mime: f.mime_type, - channels: f.audio_channels, - loudness_db: f.loudness_db, - throttled: url.throttled, - track: f - .audio_track - .map(|t| map_audio_track(t, url.xtags, &mut warnings)), - }), - warnings, - }, - None => MapResult { c: None, warnings }, - } + Ok(AudioStream { + url: map_res.url, + itag: f.itag, + bitrate: f.bitrate, + average_bitrate: f.average_bitrate.unwrap_or(f.bitrate), + size: f.content_length.unwrap(), + index_range: f.index_range, + init_range: f.init_range, + duration_ms: f.approx_duration_ms, + format, + codec: get_audio_codec(codecs), + mime: f.mime_type, + channels: f.audio_channels, + loudness_db: f.loudness_db, + track: f + .audio_track + .map(|t| map_audio_track(t, map_res.xtags, warnings)), + }) } fn parse_mime(mime: &str) -> Option<(&str, Vec<&str>)> { @@ -757,20 +707,15 @@ mod tests { 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 last_nsig: [String; 2] = [String::new(), String::new()]; let deobf = Deobfuscator::new(&DEOBF_DATA).unwrap(); - let map_res = map_url( + let url = map_url( &None, &Some(signature_cipher.to_owned()), &deobf, &mut last_nsig, - ); - let url = map_res.c.unwrap(); + ) + .unwrap() + .url; - assert_eq!(url.url, "https://rr5---sn-h0jelnez.googlevideo.com/videoplayback?c=WEB&clen=3781277&dur=229.301&ei=vb7nYvH5BMK8gAfBj7ToBQ&expire=1659376413&fexp=24001373%2C24007246&fvip=5&gir=yes&id=o-AB_BABwrXZJN428ZwDxq5ScPn2AbcGODnRlTVhCQ3mj2&initcwndbps=1588750&ip=2003%3Ade%3Aaf06%3A6300%3Ac750%3A1b77%3Ac74a%3A80e3&itag=251&keepalive=yes&lmt=1655510291473933&lsig=AG3C_xAwRQIgCKCGJ1iu4wlaGXy3jcJyU3inh9dr1FIfqYOZEG_MdmACIQCbungkQYFk7EhD6K2YvLaHFMjKOFWjw001_tLb0lPDtg%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=hH&mime=audio%2Fwebm&mm=31%2C26&mn=sn-h0jelnez%2Csn-4g5ednsl&ms=au%2Conr&mt=1659354538&mv=m&mvi=5&n=XzXGSfGusw6OCQ&ns=b_Mq_qlTFcSGlG9RpwpM9xQH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAPIsKd7-xi4xVHEC9gb__dU4hzfzsHEj9ytd3nt0gEceAiACJWBcw-wFEq9qir35bwKHJZxtQ9mOL7SKiVkLQNDa6A%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-Khi831z8dTejFIRCvCEwx_6romtM&txp=4532434&vprv=1"); - assert!(!url.throttled); - assert!( - map_res.warnings.is_empty(), - "deserialization/mapping warnings: {:?}", - map_res.warnings - ); + assert_eq!(url, "https://rr5---sn-h0jelnez.googlevideo.com/videoplayback?c=WEB&clen=3781277&dur=229.301&ei=vb7nYvH5BMK8gAfBj7ToBQ&expire=1659376413&fexp=24001373%2C24007246&fvip=5&gir=yes&id=o-AB_BABwrXZJN428ZwDxq5ScPn2AbcGODnRlTVhCQ3mj2&initcwndbps=1588750&ip=2003%3Ade%3Aaf06%3A6300%3Ac750%3A1b77%3Ac74a%3A80e3&itag=251&keepalive=yes&lmt=1655510291473933&lsig=AG3C_xAwRQIgCKCGJ1iu4wlaGXy3jcJyU3inh9dr1FIfqYOZEG_MdmACIQCbungkQYFk7EhD6K2YvLaHFMjKOFWjw001_tLb0lPDtg%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=hH&mime=audio%2Fwebm&mm=31%2C26&mn=sn-h0jelnez%2Csn-4g5ednsl&ms=au%2Conr&mt=1659354538&mv=m&mvi=5&n=XzXGSfGusw6OCQ&ns=b_Mq_qlTFcSGlG9RpwpM9xQH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAPIsKd7-xi4xVHEC9gb__dU4hzfzsHEj9ytd3nt0gEceAiACJWBcw-wFEq9qir35bwKHJZxtQ9mOL7SKiVkLQNDa6A%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-Khi831z8dTejFIRCvCEwx_6romtM&txp=4532434&vprv=1"); } } 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 5b0b4f9..9dda7eb 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 @@ -79,7 +79,6 @@ VideoPlayer( mime: "video/3gpp; codecs=\"mp4v.20.3, mp4a.40.2\"", format: r#3gp, codec: mp4v, - throttled: false, ), 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", @@ -98,7 +97,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.42001E, mp4a.40.2\"", format: mp4, codec: avc1, - throttled: false, ), ], video_only_streams: [ @@ -125,7 +123,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"av01.0.00M.08\"", format: mp4, codec: av01, - throttled: false, ), 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", @@ -150,7 +147,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"av01.0.00M.08\"", format: mp4, codec: av01, - throttled: false, ), 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", @@ -175,7 +171,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.4d401e\"", format: mp4, codec: avc1, - throttled: false, ), 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", @@ -200,7 +195,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"av01.0.01M.08\"", format: mp4, codec: av01, - throttled: false, ), 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", @@ -225,7 +219,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"av01.0.04M.08\"", format: mp4, codec: av01, - throttled: false, ), 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", @@ -244,7 +237,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.64001F, mp4a.40.2\"", format: mp4, codec: avc1, - throttled: false, ), 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", @@ -269,7 +261,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"av01.0.08M.08\"", format: mp4, codec: av01, - throttled: false, ), 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", @@ -294,7 +285,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.64002a\"", format: mp4, codec: avc1, - throttled: false, ), 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", @@ -319,7 +309,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"av01.0.09M.08\"", format: mp4, codec: av01, - throttled: false, ), ], audio_streams: [ @@ -343,7 +332,6 @@ VideoPlayer( codec: mp4a, channels: Some(2), loudness_db: None, - throttled: false, track: None, ), AudioStream( @@ -366,7 +354,6 @@ VideoPlayer( codec: opus, channels: Some(2), loudness_db: None, - throttled: false, track: None, ), AudioStream( @@ -389,7 +376,6 @@ VideoPlayer( codec: opus, channels: Some(2), loudness_db: None, - throttled: false, track: None, ), AudioStream( @@ -412,7 +398,6 @@ VideoPlayer( codec: mp4a, channels: Some(2), loudness_db: None, - throttled: false, track: None, ), AudioStream( @@ -435,7 +420,6 @@ VideoPlayer( codec: opus, channels: Some(2), loudness_db: None, - throttled: false, track: None, ), ], 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 68cd7f6..ffafe4c 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 @@ -84,7 +84,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.42001E, mp4a.40.2\"", format: mp4, codec: avc1, - throttled: false, ), ], video_only_streams: [ @@ -111,7 +110,6 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, - throttled: false, ), 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", @@ -136,7 +134,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"av01.0.00M.08\"", format: mp4, codec: av01, - throttled: false, ), 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", @@ -161,7 +158,6 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, - throttled: false, ), 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", @@ -186,7 +182,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"av01.0.00M.08\"", format: mp4, codec: av01, - throttled: false, ), 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", @@ -211,7 +206,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.4d401e\"", format: mp4, codec: avc1, - throttled: false, ), 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", @@ -236,7 +230,6 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, - throttled: false, ), 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", @@ -261,7 +254,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"av01.0.01M.08\"", format: mp4, codec: av01, - throttled: false, ), 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", @@ -286,7 +278,6 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, - throttled: false, ), 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", @@ -311,7 +302,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"av01.0.04M.08\"", format: mp4, codec: av01, - throttled: false, ), 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", @@ -336,7 +326,6 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, - throttled: false, ), 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", @@ -361,7 +350,6 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, - throttled: false, ), 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", @@ -386,7 +374,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"av01.0.08M.08\"", format: mp4, codec: av01, - throttled: false, ), 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", @@ -411,7 +398,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.64002a\"", format: mp4, codec: avc1, - throttled: false, ), 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", @@ -436,7 +422,6 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, - throttled: false, ), 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", @@ -461,7 +446,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"av01.0.09M.08\"", format: mp4, codec: av01, - throttled: false, ), ], audio_streams: [ @@ -485,7 +469,6 @@ VideoPlayer( codec: opus, channels: Some(2), loudness_db: Some(5.2200003), - throttled: false, track: None, ), AudioStream( @@ -508,7 +491,6 @@ VideoPlayer( codec: opus, channels: Some(2), loudness_db: Some(5.2200003), - throttled: false, track: None, ), AudioStream( @@ -531,7 +513,6 @@ VideoPlayer( codec: mp4a, channels: Some(2), loudness_db: Some(5.2159004), - throttled: false, track: None, ), AudioStream( @@ -554,7 +535,6 @@ VideoPlayer( codec: opus, channels: Some(2), loudness_db: Some(5.2200003), - throttled: false, track: None, ), ], 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 fa9f936..05f522b 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 @@ -52,7 +52,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.42001E, mp4a.40.2\"", format: mp4, codec: avc1, - throttled: false, ), ], video_only_streams: [ @@ -79,7 +78,6 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, - throttled: false, ), 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", @@ -104,7 +102,6 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, - throttled: false, ), 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", @@ -129,7 +126,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.4d401e\"", format: mp4, codec: avc1, - throttled: false, ), 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", @@ -154,7 +150,6 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, - throttled: false, ), 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", @@ -179,7 +174,6 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, - throttled: false, ), 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", @@ -204,7 +198,6 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, - throttled: false, ), 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", @@ -229,7 +222,6 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, - throttled: false, ), 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", @@ -254,7 +246,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.64002a\"", format: mp4, codec: avc1, - throttled: false, ), 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", @@ -279,7 +270,6 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, - throttled: false, ), ], audio_streams: [ @@ -303,7 +293,6 @@ VideoPlayer( codec: opus, channels: Some(2), loudness_db: Some(0.0006532669), - throttled: false, track: None, ), AudioStream( @@ -326,7 +315,6 @@ VideoPlayer( codec: opus, channels: Some(2), loudness_db: Some(0.0006532669), - throttled: false, track: None, ), AudioStream( @@ -349,7 +337,6 @@ VideoPlayer( codec: mp4a, channels: Some(2), loudness_db: Some(-0.003446579), - throttled: false, track: None, ), AudioStream( @@ -372,7 +359,6 @@ VideoPlayer( codec: opus, channels: Some(2), loudness_db: Some(0.0006532669), - throttled: false, track: None, ), ], 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 c068095..416ecca 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 @@ -81,7 +81,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.4D401E\"", format: mp4, codec: avc1, - throttled: false, ), 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", @@ -106,7 +105,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.64002A\"", format: mp4, codec: avc1, - throttled: false, ), ], audio_streams: [ @@ -130,7 +128,6 @@ VideoPlayer( codec: mp4a, channels: Some(2), loudness_db: Some(5.2159004), - throttled: false, track: None, ), AudioStream( @@ -153,7 +150,6 @@ VideoPlayer( codec: mp4a, channels: Some(2), loudness_db: Some(5.2159004), - throttled: false, track: None, ), ], diff --git a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_tvhtml5embed.snap b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_tvhtml5embed.snap index 82d769b..0e48f31 100644 --- a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_tvhtml5embed.snap +++ b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_tvhtml5embed.snap @@ -84,7 +84,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.42001E, mp4a.40.2\"", format: mp4, codec: avc1, - throttled: false, ), ], video_only_streams: [ @@ -111,7 +110,6 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, - throttled: false, ), 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=TVHTML5_SIMPLY_EMBEDDED_PLAYER&clen=1224002&dur=163.029&ei=q1jpYv-eJ9uF6dsPhvyH8As&expire=1659481355&fexp=24001373%2C24007246&fvip=5&gir=yes&id=o-AKkOKYSoYWWfNLdrt3aQbxbIwHh4mMVyXLb2mtjc0uXQ&initcwndbps=1527500&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=394&keepalive=yes&lmt=1608045375671513&lsig=AG3C_xAwRgIhAIWRo8U-MB6jhlipPec3A3m5-StMaX64EEGBEE3LWaNiAiEA_8QPrTStO0ISMA5Jex-G2JfPpqyw-vltC8nAFXyPz98%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&n=U0g9MK69PQnuYQ&ns=h4nQ-PcvhL4hLZwTU9i7QAoH&otfp=1&pcm2=yes&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAKyA5SE5VppKcNlosTsDsa4s039Ia-Qymp9zS3hAlScmAiBzo8tirHhDQVcMHejguHQ3F5rglFmjjy1hFlopVpNe-A%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cpcm2%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&txp=1311222&vprv=1", @@ -136,7 +134,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"av01.0.00M.08\"", format: mp4, codec: av01, - throttled: false, ), 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=TVHTML5_SIMPLY_EMBEDDED_PLAYER&clen=2973283&dur=163.029&ei=q1jpYv-eJ9uF6dsPhvyH8As&expire=1659481355&fexp=24001373%2C24007246&fvip=5&gir=yes&id=o-AKkOKYSoYWWfNLdrt3aQbxbIwHh4mMVyXLb2mtjc0uXQ&initcwndbps=1527500&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=242&keepalive=yes&lmt=1608509388282028&lsig=AG3C_xAwRgIhAIWRo8U-MB6jhlipPec3A3m5-StMaX64EEGBEE3LWaNiAiEA_8QPrTStO0ISMA5Jex-G2JfPpqyw-vltC8nAFXyPz98%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelnez%2Csn-h0jeenek&ms=au%2Crdu&mt=1659459429&mv=m&mvi=4&n=U0g9MK69PQnuYQ&ns=h4nQ-PcvhL4hLZwTU9i7QAoH&otfp=1&pcm2=yes&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgN7FPp-_Ay_e78kvW7bcBceUhHDnpgXSZKxxn-x34DTgCIEqr4KN5E3R9ZVzCFV3HGaTr6YZEGeNDRxS4ne7JFDRN&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cpcm2%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&txp=1311222&vprv=1", @@ -161,7 +158,6 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, - throttled: false, ), 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=TVHTML5_SIMPLY_EMBEDDED_PLAYER&clen=2238952&dur=163.029&ei=q1jpYv-eJ9uF6dsPhvyH8As&expire=1659481355&fexp=24001373%2C24007246&fvip=5&gir=yes&id=o-AKkOKYSoYWWfNLdrt3aQbxbIwHh4mMVyXLb2mtjc0uXQ&initcwndbps=1527500&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=395&keepalive=yes&lmt=1608045728968690&lsig=AG3C_xAwRgIhAIWRo8U-MB6jhlipPec3A3m5-StMaX64EEGBEE3LWaNiAiEA_8QPrTStO0ISMA5Jex-G2JfPpqyw-vltC8nAFXyPz98%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&n=U0g9MK69PQnuYQ&ns=h4nQ-PcvhL4hLZwTU9i7QAoH&otfp=1&pcm2=yes&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAKBPl7ZiI0t6SteLZUEX96zhu1FVKBLZz6GP-_6K-nJMAiBcWq7zKq-fNeSJbMaGcrgU8tshLKzNu2Mv0b1pFrPbMw%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cpcm2%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&txp=1311222&vprv=1", @@ -186,7 +182,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"av01.0.00M.08\"", format: mp4, codec: av01, - throttled: false, ), 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=TVHTML5_SIMPLY_EMBEDDED_PLAYER&clen=7808990&dur=163.029&ei=q1jpYv-eJ9uF6dsPhvyH8As&expire=1659481355&fexp=24001373%2C24007246&fvip=5&gir=yes&id=o-AKkOKYSoYWWfNLdrt3aQbxbIwHh4mMVyXLb2mtjc0uXQ&initcwndbps=1527500&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=134&keepalive=yes&lmt=1580005649163759&lsig=AG3C_xAwRgIhAIWRo8U-MB6jhlipPec3A3m5-StMaX64EEGBEE3LWaNiAiEA_8QPrTStO0ISMA5Jex-G2JfPpqyw-vltC8nAFXyPz98%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&n=U0g9MK69PQnuYQ&ns=h4nQ-PcvhL4hLZwTU9i7QAoH&otfp=1&pcm2=yes&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgLnuMRsG-Huz0E9KzrpsLbN8akn6slETHnYESZLtoJXgCIFXPrk4JyA2KRZnD8EVn7c1JRqFNUV1acExNy0Z6wfeX&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cpcm2%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&txp=2211222&vprv=1", @@ -211,7 +206,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.4d401e\"", format: mp4, codec: avc1, - throttled: false, ), 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=TVHTML5_SIMPLY_EMBEDDED_PLAYER&clen=5169510&dur=163.029&ei=q1jpYv-eJ9uF6dsPhvyH8As&expire=1659481355&fexp=24001373%2C24007246&fvip=5&gir=yes&id=o-AKkOKYSoYWWfNLdrt3aQbxbIwHh4mMVyXLb2mtjc0uXQ&initcwndbps=1527500&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=243&keepalive=yes&lmt=1608509388282405&lsig=AG3C_xAwRgIhAIWRo8U-MB6jhlipPec3A3m5-StMaX64EEGBEE3LWaNiAiEA_8QPrTStO0ISMA5Jex-G2JfPpqyw-vltC8nAFXyPz98%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelnez%2Csn-h0jeenek&ms=au%2Crdu&mt=1659459429&mv=m&mvi=4&n=U0g9MK69PQnuYQ&ns=h4nQ-PcvhL4hLZwTU9i7QAoH&otfp=1&pcm2=yes&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRgIhANJoH9RPIFwd08jukBbSBYSH-gmli5NIdZRVDZD8StFiAiEAtjCXNscOn1rgndc2QQQYV97sWCCYPwWvO0tgkUjRm74%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cpcm2%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&txp=1311222&vprv=1", @@ -236,7 +230,6 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, - throttled: false, ), 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=TVHTML5_SIMPLY_EMBEDDED_PLAYER&clen=4130385&dur=163.029&ei=q1jpYv-eJ9uF6dsPhvyH8As&expire=1659481355&fexp=24001373%2C24007246&fvip=5&gir=yes&id=o-AKkOKYSoYWWfNLdrt3aQbxbIwHh4mMVyXLb2mtjc0uXQ&initcwndbps=1527500&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=396&keepalive=yes&lmt=1608045761576250&lsig=AG3C_xAwRgIhAIWRo8U-MB6jhlipPec3A3m5-StMaX64EEGBEE3LWaNiAiEA_8QPrTStO0ISMA5Jex-G2JfPpqyw-vltC8nAFXyPz98%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&n=U0g9MK69PQnuYQ&ns=h4nQ-PcvhL4hLZwTU9i7QAoH&otfp=1&pcm2=yes&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIgcVEF2GELVbjio4lbmnBkFmi2HT4gkRQyM-SU3Tv-bMgCIQDs8WhxxNLSj3K-0ccvv6wzpWweOuwhdj9hjCXa0-9PnQ%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cpcm2%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&txp=1311222&vprv=1", @@ -261,7 +254,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"av01.0.01M.08\"", format: mp4, codec: av01, - throttled: false, ), 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=TVHTML5_SIMPLY_EMBEDDED_PLAYER&clen=8890590&dur=163.029&ei=q1jpYv-eJ9uF6dsPhvyH8As&expire=1659481355&fexp=24001373%2C24007246&fvip=5&gir=yes&id=o-AKkOKYSoYWWfNLdrt3aQbxbIwHh4mMVyXLb2mtjc0uXQ&initcwndbps=1527500&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=244&keepalive=yes&lmt=1608509388284632&lsig=AG3C_xAwRgIhAIWRo8U-MB6jhlipPec3A3m5-StMaX64EEGBEE3LWaNiAiEA_8QPrTStO0ISMA5Jex-G2JfPpqyw-vltC8nAFXyPz98%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelnez%2Csn-h0jeenek&ms=au%2Crdu&mt=1659459429&mv=m&mvi=4&n=U0g9MK69PQnuYQ&ns=h4nQ-PcvhL4hLZwTU9i7QAoH&otfp=1&pcm2=yes&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgEC-9_1jHyfgc_Vtpe7vuWTJYd2S_MrJaSDfYfx8cCQcCIEIPWqkLyLh3yLlAM-ZPpySBXCS9Z9Hs1Mk_dVLsnBhY&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cpcm2%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&txp=1311222&vprv=1", @@ -286,7 +278,6 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, - throttled: false, ), 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=TVHTML5_SIMPLY_EMBEDDED_PLAYER&clen=6873325&dur=163.029&ei=q1jpYv-eJ9uF6dsPhvyH8As&expire=1659481355&fexp=24001373%2C24007246&fvip=5&gir=yes&id=o-AKkOKYSoYWWfNLdrt3aQbxbIwHh4mMVyXLb2mtjc0uXQ&initcwndbps=1527500&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=397&keepalive=yes&lmt=1608045990917419&lsig=AG3C_xAwRgIhAIWRo8U-MB6jhlipPec3A3m5-StMaX64EEGBEE3LWaNiAiEA_8QPrTStO0ISMA5Jex-G2JfPpqyw-vltC8nAFXyPz98%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&n=U0g9MK69PQnuYQ&ns=h4nQ-PcvhL4hLZwTU9i7QAoH&otfp=1&pcm2=yes&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRgIhAK8Grn-QuhjptRGaHT2NYU97O15VoIXwX0EYKhl4FIFIAiEA9152IGHn7QbRCGRfk1Q0Yqfpr9Hhjp-u4e8L8vhuXtk%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cpcm2%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&txp=1311222&vprv=1", @@ -311,7 +302,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"av01.0.04M.08\"", format: mp4, codec: av01, - throttled: false, ), 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=TVHTML5_SIMPLY_EMBEDDED_PLAYER&clen=16547577&dur=163.029&ei=q1jpYv-eJ9uF6dsPhvyH8As&expire=1659481355&fexp=24001373%2C24007246&fvip=5&gir=yes&id=o-AKkOKYSoYWWfNLdrt3aQbxbIwHh4mMVyXLb2mtjc0uXQ&initcwndbps=1527500&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=247&keepalive=yes&lmt=1608509388326822&lsig=AG3C_xAwRgIhAIWRo8U-MB6jhlipPec3A3m5-StMaX64EEGBEE3LWaNiAiEA_8QPrTStO0ISMA5Jex-G2JfPpqyw-vltC8nAFXyPz98%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelnez%2Csn-h0jeenek&ms=au%2Crdu&mt=1659459429&mv=m&mvi=4&n=U0g9MK69PQnuYQ&ns=h4nQ-PcvhL4hLZwTU9i7QAoH&otfp=1&pcm2=yes&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIgFVGnmP4_M__D1Lga0s1av1aEBTmW54m9NdJY5I88xaECIQDMMIOCWFm-Aje4sHxWihE_tFpg1qrfS0qlbGRtouR1zA%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cpcm2%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&txp=1311222&vprv=1", @@ -336,7 +326,6 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, - throttled: false, ), 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=TVHTML5_SIMPLY_EMBEDDED_PLAYER&clen=35955780&dur=163.046&ei=q1jpYv-eJ9uF6dsPhvyH8As&expire=1659481355&fexp=24001373%2C24007246&fvip=5&gir=yes&id=o-AKkOKYSoYWWfNLdrt3aQbxbIwHh4mMVyXLb2mtjc0uXQ&initcwndbps=1527500&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=302&keepalive=yes&lmt=1608509234088626&lsig=AG3C_xAwRgIhAIWRo8U-MB6jhlipPec3A3m5-StMaX64EEGBEE3LWaNiAiEA_8QPrTStO0ISMA5Jex-G2JfPpqyw-vltC8nAFXyPz98%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelnez%2Csn-h0jeenek&ms=au%2Crdu&mt=1659459429&mv=m&mvi=4&n=U0g9MK69PQnuYQ&ns=h4nQ-PcvhL4hLZwTU9i7QAoH&otfp=1&pcm2=yes&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRgIhAKDysUcBDLlWx0vZ8CifiOcjQWBo4uc9JlogYR4z1cX0AiEA6Jgek2vwU6z3zM-aiQDh7GZXX2f19HPPKxwhZLvkshE%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cpcm2%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&txp=1311222&vprv=1", @@ -361,7 +350,6 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, - throttled: false, ), 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=TVHTML5_SIMPLY_EMBEDDED_PLAYER&clen=22365208&dur=163.046&ei=q1jpYv-eJ9uF6dsPhvyH8As&expire=1659481355&fexp=24001373%2C24007246&fvip=5&gir=yes&id=o-AKkOKYSoYWWfNLdrt3aQbxbIwHh4mMVyXLb2mtjc0uXQ&initcwndbps=1527500&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=398&keepalive=yes&lmt=1608048380553749&lsig=AG3C_xAwRgIhAIWRo8U-MB6jhlipPec3A3m5-StMaX64EEGBEE3LWaNiAiEA_8QPrTStO0ISMA5Jex-G2JfPpqyw-vltC8nAFXyPz98%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&n=U0g9MK69PQnuYQ&ns=h4nQ-PcvhL4hLZwTU9i7QAoH&otfp=1&pcm2=yes&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgcHUn_ogkBtSQLpq8m-l4IqLlx7EKsddusFPuwvMlLuoCIDF1FiMdigJzd_H5xIgglkW7GaS3CG5Sx9aC2O5pAtUG&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cpcm2%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&txp=1311222&vprv=1", @@ -386,7 +374,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"av01.0.08M.08\"", format: mp4, codec: av01, - throttled: false, ), 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=TVHTML5_SIMPLY_EMBEDDED_PLAYER&clen=65400181&dur=163.046&ei=q1jpYv-eJ9uF6dsPhvyH8As&expire=1659481355&fexp=24001373%2C24007246&fvip=5&gir=yes&id=o-AKkOKYSoYWWfNLdrt3aQbxbIwHh4mMVyXLb2mtjc0uXQ&initcwndbps=1527500&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=299&keepalive=yes&lmt=1580005649161486&lsig=AG3C_xAwRgIhAIWRo8U-MB6jhlipPec3A3m5-StMaX64EEGBEE3LWaNiAiEA_8QPrTStO0ISMA5Jex-G2JfPpqyw-vltC8nAFXyPz98%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&n=U0g9MK69PQnuYQ&ns=h4nQ-PcvhL4hLZwTU9i7QAoH&otfp=1&pcm2=yes&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRAIgRoFTJHusyDU4PA4tIpFb7cNHxwiKOH_C5FGDdcx16ScCIC2SlCLt3gTJ2mUuTbav41TnZ5pVEAbiLxuY6pMV4stE&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cpcm2%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&txp=2211222&vprv=1", @@ -411,7 +398,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"avc1.64002a\"", format: mp4, codec: avc1, - throttled: false, ), 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=TVHTML5_SIMPLY_EMBEDDED_PLAYER&clen=62993617&dur=163.046&ei=q1jpYv-eJ9uF6dsPhvyH8As&expire=1659481355&fexp=24001373%2C24007246&fvip=5&gir=yes&id=o-AKkOKYSoYWWfNLdrt3aQbxbIwHh4mMVyXLb2mtjc0uXQ&initcwndbps=1527500&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=303&keepalive=yes&lmt=1608509371758331&lsig=AG3C_xAwRgIhAIWRo8U-MB6jhlipPec3A3m5-StMaX64EEGBEE3LWaNiAiEA_8QPrTStO0ISMA5Jex-G2JfPpqyw-vltC8nAFXyPz98%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2Fwebm&mm=31%2C29&mn=sn-h0jelnez%2Csn-h0jeenek&ms=au%2Crdu&mt=1659459429&mv=m&mvi=4&n=U0g9MK69PQnuYQ&ns=h4nQ-PcvhL4hLZwTU9i7QAoH&otfp=1&pcm2=yes&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIgIChm15WPOCXfBDCY0W_4Ul3wdL8YRia4knFoPl_u8AsCIQCTSOnu_bi5-FkCPiOM0P8WTDaXo9hGJuYmxguzxbF88A%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cpcm2%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&txp=1311222&vprv=1", @@ -436,7 +422,6 @@ VideoPlayer( mime: "video/webm; codecs=\"vp9\"", format: webm, codec: vp9, - throttled: false, ), 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=TVHTML5_SIMPLY_EMBEDDED_PLAYER&clen=42567727&dur=163.046&ei=q1jpYv-eJ9uF6dsPhvyH8As&expire=1659481355&fexp=24001373%2C24007246&fvip=5&gir=yes&id=o-AKkOKYSoYWWfNLdrt3aQbxbIwHh4mMVyXLb2mtjc0uXQ&initcwndbps=1527500&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&itag=399&keepalive=yes&lmt=1608052932785283&lsig=AG3C_xAwRgIhAIWRo8U-MB6jhlipPec3A3m5-StMaX64EEGBEE3LWaNiAiEA_8QPrTStO0ISMA5Jex-G2JfPpqyw-vltC8nAFXyPz98%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&n=U0g9MK69PQnuYQ&ns=h4nQ-PcvhL4hLZwTU9i7QAoH&otfp=1&pcm2=yes&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIgO3omBCES-iEOIeuiy9Jsz9wB_QfRkCuRCiCQ-N5KdqoCIQDANFWf0zfBSm1qGjA7jYJEti7hiM9klZHFZjC2CN9r9A%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cpcm2%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&txp=1311222&vprv=1", @@ -461,7 +446,6 @@ VideoPlayer( mime: "video/mp4; codecs=\"av01.0.09M.08\"", format: mp4, codec: av01, - throttled: false, ), ], audio_streams: [ @@ -485,7 +469,6 @@ VideoPlayer( codec: opus, channels: Some(2), loudness_db: Some(5.2200003), - throttled: false, track: None, ), AudioStream( @@ -508,7 +491,6 @@ VideoPlayer( codec: opus, channels: Some(2), loudness_db: Some(5.2200003), - throttled: false, track: None, ), AudioStream( @@ -531,7 +513,6 @@ VideoPlayer( codec: mp4a, channels: Some(2), loudness_db: Some(5.2159004), - throttled: false, track: None, ), AudioStream( @@ -554,7 +535,6 @@ VideoPlayer( codec: opus, channels: Some(2), loudness_db: Some(5.2200003), - throttled: false, track: None, ), ], diff --git a/src/deobfuscate.rs b/src/deobfuscate.rs index 776d221..59c5f99 100644 --- a/src/deobfuscate.rs +++ b/src/deobfuscate.rs @@ -57,7 +57,7 @@ impl DeobfData { res } - fn extract_fns(js_url: &str, player_js: &str) -> Result { + pub fn extract_fns(js_url: &str, player_js: &str) -> Result { let sig_fn = get_sig_fn(player_js)?; let nsig_fn = get_nsig_fn(player_js)?; let sts = get_sts(player_js)?; @@ -181,46 +181,53 @@ fn get_sig_fn(player_js: &str) -> Result { } fn get_nsig_fn_name(player_js: &str) -> Result { - static FUNCTION_NAME_REGEX: Lazy = Lazy::new(|| { - Regex::new( - r#"\.get\("n"\)\)&&\([a-zA-Z0-9$_]=([a-zA-Z0-9$_]+)(?:\[(\d+)])?\([a-zA-Z0-9$_]\)"#, - ) - .unwrap() + static FUNCTION_REGEXES: Lazy<[FancyRegex; 2]> = Lazy::new(|| { + [ + FancyRegex::new( + r#"\((?[a-zA-Z0-9$_])=String\.fromCharCode\(110\),[a-zA-Z0-9$_]=[a-zA-Z0-9$_]\.get\(\k\)\)&&\([a-zA-Z0-9$_]=(?[a-zA-Z0-9$_]+)(?:\[(?\d+)])?\([a-zA-Z0-9$_]\)"#, + ) + .unwrap(), + FancyRegex::new( + r#"\.get\("n"\)\)&&\([a-zA-Z0-9$_]=(?[a-zA-Z0-9$_]+)(?:\[(?\d+)])?\([a-zA-Z0-9$_]\)"#, + ) + .unwrap(), + ] }); - let fname_match = FUNCTION_NAME_REGEX - .captures(player_js) + let fname_match = FUNCTION_REGEXES + .iter() + .find_map(|pattern| pattern.captures(player_js).ok().flatten()) .ok_or(DeobfError::Extraction("n_deobf function"))?; - let function_name = fname_match.get(1).unwrap().as_str(); + let function_name = fname_match.name("fname").unwrap().as_str(); - if fname_match.len() == 1 { - return Ok(function_name.to_owned()); + match fname_match.name("idx") { + Some(idx) => { + let array_num = idx + .as_str() + .parse::() + .or(Err(DeobfError::Other("could not parse array_num")))?; + let array_pattern_str = + format!(r#"var {}\s*=\s*\[(.+?)]"#, regex::escape(function_name)); + let array_pattern = Regex::new(&array_pattern_str).or(Err(DeobfError::Other( + "could not parse helper pattern regex", + )))?; + + let array_str = array_pattern + .captures(player_js) + .ok_or(DeobfError::Extraction("n_deobf array_str"))? + .get(1) + .unwrap() + .as_str(); + + let mut names = array_str.split(','); + let name = names + .nth(array_num) + .ok_or(DeobfError::Extraction("n_deobf function name"))?; + Ok(name.to_owned()) + } + None => Ok(function_name.to_owned()), } - - let array_num = fname_match - .get(2) - .unwrap() - .as_str() - .parse::() - .or(Err(DeobfError::Other("could not parse array_num")))?; - let array_pattern_str = format!(r#"var {}\s*=\s*\[(.+?)]"#, regex::escape(function_name)); - let array_pattern = Regex::new(&array_pattern_str).or(Err(DeobfError::Other( - "could not parse helper pattern regex", - )))?; - - let array_str = array_pattern - .captures(player_js) - .ok_or(DeobfError::Extraction("n_deobf array_str"))? - .get(1) - .unwrap() - .as_str(); - - let mut names = array_str.split(','); - let name = names - .nth(array_num) - .ok_or(DeobfError::Extraction("n_deobf function name"))?; - Ok(name.to_owned()) } fn extract_js_fn(js: &str, name: &str) -> Result { diff --git a/src/model/mod.rs b/src/model/mod.rs index 3407f7b..e79728d 100644 --- a/src/model/mod.rs +++ b/src/model/mod.rs @@ -211,9 +211,6 @@ pub struct VideoStream { pub format: VideoFormat, /// Video codec pub codec: VideoCodec, - /// True if the deobfuscation of the nsig url parameter failed - /// and the stream will be throttled - pub throttled: bool, } /// Audio stream @@ -259,9 +256,6 @@ pub struct AudioStream { /// /// The loudness parameter is not available when using the Android client. pub loudness_db: Option, - /// True if the deobfuscation of the nsig url parameter failed - /// and the stream will be throttled - pub throttled: bool, /// Audio track information /// /// Videos can have multiple audio tracks (different languages). diff --git a/tests/youtube.rs b/tests/youtube.rs index 2106c8d..fec085a 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -120,7 +120,6 @@ async fn get_player_from_client(#[case] client_type: ClientType, rp: RustyPipe) assert_eq!(video.mime, "video/mp4; codecs=\"av01.0.05M.08\""); assert_eq!(video.format, VideoFormat::Mp4); assert_eq!(video.codec, VideoCodec::Av01); - assert!(!video.throttled); assert_approx(audio.bitrate, 142_718); assert_approx(audio.average_bitrate, 130_708); @@ -128,7 +127,6 @@ async fn get_player_from_client(#[case] client_type: ClientType, rp: RustyPipe) assert_eq!(audio.mime, "audio/webm; codecs=\"opus\""); assert_eq!(audio.format, AudioFormat::Webm); assert_eq!(audio.codec, AudioCodec::Opus); - assert!(!audio.throttled); check_video_stream(video).await; check_video_stream(audio).await; @@ -1266,11 +1264,7 @@ mod channel_rss { #[rstest] #[tokio::test] async fn search(rp: RustyPipe, unlocalized: bool) { - let result = rp - .query() - .search::("doobydoobap") - .await - .unwrap(); + let result = rp.query().search::("testt").await.unwrap(); assert_gteo( result.items.count, @@ -1279,7 +1273,7 @@ async fn search(rp: RustyPipe, unlocalized: bool) { ); if unlocalized { - assert_eq!(result.corrected_query.as_deref(), Some("doobydobap")); + assert_eq!(result.corrected_query.as_deref(), Some("test")); } assert_next(result.items, rp.query(), 10, 2, true).await; From 90540c6aaad658d4ce24ed41450d8509bac711bd Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 27 Jul 2024 02:30:24 +0200 Subject: [PATCH 083/347] feat: add client_type to VideoPlayer, simplify MapResponse trait The MapResponse trait needed too many arguments, so I added the MapRespCtx object. Also added the client_type to the context, so it can be added to the extracted player data. This is necessary to be able to download videos with the correct user agent --- src/client/channel.rs | 79 ++++++++----------- src/client/mod.rs | 69 +++++++++------- src/client/music_artist.rs | 53 +++++-------- src/client/music_charts.rs | 20 ++--- src/client/music_details.rs | 55 +++++-------- src/client/music_genres.rs | 27 +++---- src/client/music_new.rs | 25 +++--- src/client/music_playlist.rs | 44 +++++------ src/client/music_search.rs | 36 ++++----- src/client/pagination.rs | 29 +++---- src/client/player.rs | 42 +++++----- src/client/playlist.rs | 29 +++---- src/client/search.rs | 16 ++-- ...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 + ...__tests__map_player_data_tvhtml5embed.snap | 1 + src/client/trends.rs | 33 +++----- src/client/url_resolver.rs | 11 +-- src/client/video_details.rs | 52 ++++++------ src/model/mod.rs | 10 ++- testfiles/player_model/hdr.json | 3 +- testfiles/player_model/multilanguage.json | 3 +- 24 files changed, 273 insertions(+), 368 deletions(-) diff --git a/src/client/channel.rs b/src/client/channel.rs index 9a4ea00..254a39f 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, MapResponse, QContinuation, RustyPipeQuery, YTContext}; +use super::{ + response, ClientType, MapRespCtx, MapResponse, QContinuation, RustyPipeQuery, YTContext, +}; #[derive(Debug, Serialize)] #[serde(rename_all = "camelCase")] @@ -201,16 +203,13 @@ impl RustyPipeQuery { impl MapResponse>> for response::Channel { fn map_response( self, - id: &str, - lang: Language, - _deobf: Option<&crate::deobfuscate::DeobfData>, - vdata: Option<&str>, + ctx: &MapRespCtx<'_>, ) -> Result>>, ExtractionError> { - let content = map_channel_content(id, self.contents, self.alerts)?; + let content = map_channel_content(ctx.id, self.contents, self.alerts)?; let visitor_data = self .response_context .visitor_data - .or_else(|| vdata.map(str::to_owned)); + .or_else(|| ctx.visitor_data.map(str::to_owned)); let channel_data = map_channel( MapChannelData { @@ -221,12 +220,11 @@ impl MapResponse>> for response::Channel { has_shorts: content.has_shorts, has_live: content.has_live, }, - id, - lang, + ctx, )?; let mut mapper = response::YouTubeListMapper::::with_channel( - lang, + ctx.lang, &channel_data.c, channel_data.warnings, ); @@ -249,16 +247,13 @@ impl MapResponse>> for response::Channel { impl MapResponse>> for response::Channel { fn map_response( self, - id: &str, - lang: Language, - _deobf: Option<&crate::deobfuscate::DeobfData>, - vdata: Option<&str>, + ctx: &MapRespCtx<'_>, ) -> Result>>, ExtractionError> { - let content = map_channel_content(id, self.contents, self.alerts)?; + let content = map_channel_content(ctx.id, self.contents, self.alerts)?; let visitor_data = self .response_context .visitor_data - .or_else(|| vdata.map(str::to_owned)); + .or_else(|| ctx.visitor_data.map(str::to_owned)); let channel_data = map_channel( MapChannelData { @@ -269,12 +264,11 @@ impl MapResponse>> for response::Channel { has_shorts: content.has_shorts, has_live: content.has_live, }, - id, - lang, + ctx, )?; let mut mapper = response::YouTubeListMapper::::with_channel( - lang, + ctx.lang, &channel_data.c, channel_data.warnings, ); @@ -289,13 +283,7 @@ impl MapResponse>> for response::Channel { } impl MapResponse for response::ChannelAbout { - fn map_response( - self, - id: &str, - _lang: Language, - _deobf: Option<&crate::deobfuscate::DeobfData>, - _visitor_data: Option<&str>, - ) -> Result, ExtractionError> { + fn map_response(self, ctx: &MapRespCtx<'_>) -> Result, ExtractionError> { // Channel info is always fetched in English. There is no localized data there // and it allows parsing the country name. let lang = Language::En; @@ -309,7 +297,7 @@ impl MapResponse for response::ChannelAbout { .ok_or(ExtractionError::InvalidData("no received endpoint".into()))?, response::ChannelAbout::Content { contents } => { // Handle errors (e.g. age restriction) when regular channel content was returned - map_channel_content(id, contents, None)?; + map_channel_content(ctx.id, contents, None)?; return Err(ExtractionError::InvalidData( "could not extract aboutData".into(), )); @@ -388,36 +376,35 @@ struct MapChannelData { fn map_channel( d: MapChannelData, - id: &str, - lang: Language, + ctx: &MapRespCtx<'_>, ) -> Result>, ExtractionError> { let header = d.header.ok_or_else(|| ExtractionError::NotFound { - id: id.to_owned(), + id: ctx.id.to_owned(), msg: "no header".into(), })?; let metadata = d .metadata .ok_or_else(|| ExtractionError::NotFound { - id: id.to_owned(), + id: ctx.id.to_owned(), msg: "no metadata".into(), })? .channel_metadata_renderer; let microformat = d.microformat.ok_or_else(|| ExtractionError::NotFound { - id: id.to_owned(), + id: ctx.id.to_owned(), msg: "no microformat".into(), })?; - if metadata.external_id != id { + if metadata.external_id != ctx.id { return Err(ExtractionError::WrongResult(format!( "got wrong channel id {}, expected {}", - metadata.external_id, id + metadata.external_id, ctx.id ))); } let vanity_url = metadata .vanity_channel_url .as_ref() - .and_then(|url| map_vanity_url(url, id)); + .and_then(|url| map_vanity_url(url, ctx.id)); let mut warnings = Vec::new(); Ok(MapResult { @@ -425,9 +412,9 @@ fn map_channel( response::channel::Header::C4TabbedHeaderRenderer(header) => Channel { id: metadata.external_id, name: metadata.title, - subscriber_count: header - .subscriber_count_text - .and_then(|txt| util::parse_large_numstr_or_warn(&txt, lang, &mut warnings)), + subscriber_count: header.subscriber_count_text.and_then(|txt| { + util::parse_large_numstr_or_warn(&txt, ctx.lang, &mut warnings) + }), avatar: header.avatar.into(), verification: header.badges.into(), description: metadata.description, @@ -458,7 +445,7 @@ fn map_channel( name: metadata.title, subscriber_count: hdata.as_ref().and_then(|hdata| { hdata.0.as_ref().and_then(|txt| { - util::parse_large_numstr_or_warn(txt, lang, &mut warnings) + util::parse_large_numstr_or_warn(txt, ctx.lang, &mut warnings) }) }), avatar: hdata.map(|hdata| hdata.1.into()).unwrap_or_default(), @@ -487,7 +474,7 @@ fn map_channel( md_rows.first().and_then(|md| md.metadata_parts.get(1)) }; let subscriber_count = sub_part.and_then(|t| { - util::parse_large_numstr_or_warn::(&t.text, lang, &mut warnings) + util::parse_large_numstr_or_warn::(&t.text, ctx.lang, &mut warnings) }); Channel { @@ -697,10 +684,10 @@ mod tests { use rstest::rstest; use crate::{ - client::{response, MapResponse}, + client::{response, MapRespCtx, MapResponse}, error::{ExtractionError, UnavailabilityReason}, model::{paginator::Paginator, Channel, ChannelInfo, PlaylistItem, VideoItem}, - param::{ChannelOrder, ChannelVideoTab, Language}, + param::{ChannelOrder, ChannelVideoTab}, serializer::MapResult, util::tests::TESTFILES, }; @@ -728,7 +715,7 @@ mod tests { let channel: response::Channel = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult>> = - channel.map_response(id, Language::En, None, None).unwrap(); + channel.map_response(&MapRespCtx::test(id)).unwrap(); assert!( map_res.warnings.is_empty(), @@ -755,7 +742,7 @@ mod tests { let channel: response::Channel = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let res: Result>>, ExtractionError> = - channel.map_response("UCbfnHqxXs_K3kvaH-WlNlig", Language::En, None, None); + channel.map_response(&MapRespCtx::test("UCbfnHqxXs_K3kvaH-WlNlig")); if let Err(ExtractionError::Unavailable { reason, msg }) = res { assert_eq!(reason, UnavailabilityReason::AgeRestricted); assert!(msg.starts_with("Laphroaig Whisky: ")); @@ -772,7 +759,7 @@ mod tests { let channel: response::Channel = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult>> = channel - .map_response("UC2DjFE7Xf11URZqWBigcVOQ", Language::En, None, None) + .map_response(&MapRespCtx::test("UC2DjFE7Xf11URZqWBigcVOQ")) .unwrap(); assert!( @@ -791,7 +778,7 @@ mod tests { let channel: response::ChannelAbout = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult = channel - .map_response("UC2DjFE7Xf11U-RZqWBigcVOQ", Language::En, None, None) + .map_response(&MapRespCtx::test("UC2DjFE7Xf11U-RZqWBigcVOQ")) .unwrap(); assert!( diff --git a/src/client/mod.rs b/src/client/mod.rs index c428139..3091db6 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -432,7 +432,7 @@ impl Default for RustyPipeBuilder { } impl RustyPipeBuilder { - /// Return a new `RustyPipeBuilder`. + /// Create a new [`RustyPipeBuilder`]. /// /// This is the same as [`RustyPipe::builder`] #[must_use] @@ -448,12 +448,12 @@ impl RustyPipeBuilder { } } - /// Return a new, configured RustyPipe instance. + /// Create a new, configured [`RustyPipe`] instance. pub fn build(self) -> Result { self.build_with_client(ClientBuilder::new()) } - /// Return a new, configured RustyPipe instance using a Reqwest client builder. + /// Create a new, configured RustyPipe instance using a Reqwest client builder. pub fn build_with_client(self, mut client_builder: ClientBuilder) -> Result { client_builder = client_builder .user_agent(self.user_agent.unwrap_or_else(|| DEFAULT_UA.to_owned())) @@ -1268,9 +1268,7 @@ impl RustyPipeQuery { async fn yt_request_attempt + Debug, M>( &self, request: &Request, - id: &str, - visitor_data: Option<&str>, - deobf: Option<&DeobfData>, + ctx: &MapRespCtx<'_>, ) -> Result, Error> { let response = self .client @@ -1289,7 +1287,7 @@ impl RustyPipeQuery { Err(match status { StatusCode::NOT_FOUND => Error::Extraction(ExtractionError::NotFound { - id: id.to_owned(), + id: ctx.id.to_owned(), msg: error_msg.unwrap_or("404".into()), }), StatusCode::BAD_REQUEST => { @@ -1299,12 +1297,7 @@ impl RustyPipeQuery { }) } else { match serde_json::from_str::(&body) { - Ok(deserialized) => match deserialized.map_response( - id, - self.opts.lang, - deobf, - self.opts.visitor_data.as_deref().or(visitor_data), - ) { + Ok(deserialized) => match deserialized.map_response(ctx) { Ok(mapres) => Ok(mapres), Err(e) => Err(e.into()), }, @@ -1320,15 +1313,11 @@ impl RustyPipeQuery { async fn yt_request + Debug, M>( &self, request: &Request, - id: &str, - visitor_data: Option<&str>, - deobf: Option<&DeobfData>, + ctx: &MapRespCtx<'_>, ) -> Result, Error> { let mut last_resp = None; for n in 0..=self.client.inner.n_http_retries { - let resp = self - .yt_request_attempt::(request, id, visitor_data, deobf) - .await?; + let resp = self.yt_request_attempt::(request, ctx).await?; let err = match &resp.res { Ok(_) => return Ok(resp), @@ -1394,9 +1383,15 @@ impl RustyPipeQuery { .json(body) .build()?; - let req_res = self - .yt_request::(&request, id, visitor_data, deobf) - .await?; + let ctx = MapRespCtx { + id, + lang: self.opts.lang, + deobf, + visitor_data, + client_type: ctype, + }; + + let req_res = self.yt_request::(&request, &ctx).await?; // Uncomment to debug response text // println!("{}", &req_res.body); @@ -1553,6 +1548,28 @@ impl AsRef for RustyPipeQuery { } } +struct MapRespCtx<'a> { + id: &'a str, + lang: Language, + deobf: Option<&'a DeobfData>, + visitor_data: Option<&'a str>, + client_type: ClientType, +} + +impl<'a> MapRespCtx<'a> { + /// Create a [`MapRespCtx`] for testing + #[cfg(test)] + fn test(id: &'a str) -> Self { + Self { + id, + lang: Language::En, + deobf: None, + visitor_data: None, + client_type: ClientType::Desktop, + } + } +} + /// Implement this for YouTube API response structs that need to be mapped to /// RustyPipe models. trait MapResponse { @@ -1569,13 +1586,7 @@ trait MapResponse { /// - `lang`: Language of the request. Used for mapping localized information like dates. /// - `deobf`: Deobfuscator (if passed to the `execute_request_deobf` method) /// - `visitor_data`: Visitor data option of the client - fn map_response( - self, - id: &str, - lang: Language, - deobf: Option<&DeobfData>, - visitor_data: Option<&str>, - ) -> Result, ExtractionError>; + fn map_response(self, ctx: &MapRespCtx<'_>) -> Result, ExtractionError>; } fn validate_country(country: Country) -> Country { diff --git a/src/client/music_artist.rs b/src/client/music_artist.rs index bd1ca76..9009644 100644 --- a/src/client/music_artist.rs +++ b/src/client/music_artist.rs @@ -14,7 +14,7 @@ use crate::{ use super::{ response::{self, music_item::MusicListMapper, url_endpoint::PageType}, - ClientType, MapResponse, QBrowse, RustyPipeQuery, + ClientType, MapRespCtx, MapResponse, QBrowse, RustyPipeQuery, }; impl RustyPipeQuery { @@ -92,14 +92,8 @@ impl RustyPipeQuery { } impl MapResponse for response::MusicArtist { - fn map_response( - self, - id: &str, - lang: crate::param::Language, - _deobf: Option<&crate::deobfuscate::DeobfData>, - _vdata: Option<&str>, - ) -> Result, ExtractionError> { - let mapped = map_artist_page(self, id, lang, false)?; + fn map_response(self, ctx: &MapRespCtx<'_>) -> Result, ExtractionError> { + let mapped = map_artist_page(self, ctx, false)?; Ok(MapResult { c: mapped.c.0, warnings: mapped.warnings, @@ -110,19 +104,15 @@ impl MapResponse for response::MusicArtist { impl MapResponse<(MusicArtist, bool)> for response::MusicArtist { fn map_response( self, - id: &str, - lang: crate::param::Language, - _deobf: Option<&crate::deobfuscate::DeobfData>, - _vdata: Option<&str>, + ctx: &MapRespCtx<'_>, ) -> Result, ExtractionError> { - map_artist_page(self, id, lang, true) + map_artist_page(self, ctx, true) } } fn map_artist_page( res: response::MusicArtist, - id: &str, - lang: crate::param::Language, + ctx: &MapRespCtx<'_>, skip_extendables: bool, ) -> Result, ExtractionError> { // dbg!(&res); @@ -138,7 +128,7 @@ fn map_artist_page( .and_then(|pb| util::string_from_pb(pb, 3)); if let Some(share_channel_id) = share_channel_id { - if share_channel_id != id { + if share_channel_id != ctx.id { return Err(ExtractionError::Redirect(share_channel_id)); } } @@ -155,9 +145,9 @@ fn map_artist_page( .unwrap_or_default(); let mut mapper = MusicListMapper::with_artist( - lang, + ctx.lang, ArtistId { - id: Some(id.to_owned()), + id: Some(ctx.id.to_owned()), name: header.title.clone(), }, ); @@ -264,7 +254,7 @@ fn map_artist_page( Ok(MapResult { c: ( MusicArtist { - id: id.to_owned(), + id: ctx.id.to_owned(), name: header.title, header_image: header.thumbnail.into(), description: header.description, @@ -272,7 +262,7 @@ fn map_artist_page( subscriber_count: header.subscription_button.and_then(|btn| { util::parse_large_numstr_or_warn( &btn.subscribe_button_renderer.subscriber_count_text, - lang, + ctx.lang, &mut mapped.warnings, ) }), @@ -293,16 +283,13 @@ fn map_artist_page( impl MapResponse> for response::MusicArtistAlbums { fn map_response( self, - id: &str, - lang: crate::param::Language, - _deobf: Option<&crate::deobfuscate::DeobfData>, - _vdata: Option<&str>, + ctx: &MapRespCtx<'_>, ) -> Result>, ExtractionError> { // dbg!(&self); let Some(header) = self.header else { return Err(ExtractionError::NotFound { - id: id.into(), + id: ctx.id.into(), msg: "no header".into(), }); }; @@ -320,9 +307,9 @@ impl MapResponse> for response::MusicArtistAlbums { .contents; let mut mapper = MusicListMapper::with_artist( - lang, + ctx.lang, ArtistId { - id: Some(id.to_owned()), + id: Some(ctx.id.to_owned()), name: header.music_header_renderer.title, }, ); @@ -347,7 +334,7 @@ mod tests { use path_macro::path; use rstest::rstest; - use crate::{param::Language, util::tests::TESTFILES}; + use crate::util::tests::TESTFILES; use super::*; @@ -369,7 +356,7 @@ mod tests { let resp: response::MusicArtist = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult<(MusicArtist, bool)> = - resp.map_response(id, Language::En, None, None).unwrap(); + resp.map_response(&MapRespCtx::test(id)).unwrap(); let (mut artist, can_fetch_more) = map_res.c; assert!( @@ -384,7 +371,7 @@ mod tests { let resp: response::MusicArtistAlbums = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let mut map_res: MapResult> = - resp.map_response(id, Language::En, None, None).unwrap(); + resp.map_response(&MapRespCtx::test(id)).unwrap(); assert!( map_res.warnings.is_empty(), @@ -405,7 +392,7 @@ mod tests { let artist: response::MusicArtist = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult = artist - .map_response("UClmXPfaYhXOYsNn_QUyheWQ", Language::En, None, None) + .map_response(&MapRespCtx::test("UClmXPfaYhXOYsNn_QUyheWQ")) .unwrap(); assert!( @@ -424,7 +411,7 @@ mod tests { let artist: response::MusicArtist = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let res: Result, ExtractionError> = - artist.map_response("UCLkAepWjdylmXSltofFvsYQ", Language::En, None, None); + artist.map_response(&MapRespCtx::test("UCLkAepWjdylmXSltofFvsYQ")); let e = res.unwrap_err(); match e { diff --git a/src/client/music_charts.rs b/src/client/music_charts.rs index 27ac005..1075913 100644 --- a/src/client/music_charts.rs +++ b/src/client/music_charts.rs @@ -11,7 +11,7 @@ use crate::{ use super::{ response::{self, music_item::MusicListMapper, url_endpoint::MusicPageType}, - ClientType, MapResponse, RustyPipeQuery, YTContext, + ClientType, MapRespCtx, MapResponse, RustyPipeQuery, YTContext, }; #[derive(Debug, Serialize)] @@ -56,13 +56,7 @@ impl RustyPipeQuery { } impl MapResponse for response::MusicCharts { - fn map_response( - self, - _id: &str, - lang: crate::param::Language, - _deobf: Option<&crate::deobfuscate::DeobfData>, - _vdata: Option<&str>, - ) -> Result, crate::error::ExtractionError> { + fn map_response(self, ctx: &MapRespCtx<'_>) -> Result, ExtractionError> { let countries = self .framework_updates .map(|fwu| { @@ -77,9 +71,9 @@ impl MapResponse for response::MusicCharts { let mut top_playlist_id = None; let mut trending_playlist_id = None; - let mut mapper_top = MusicListMapper::new(lang); - let mut mapper_trending = MusicListMapper::new(lang); - let mut mapper_other = MusicListMapper::new(lang); + let mut mapper_top = MusicListMapper::new(ctx.lang); + let mut mapper_trending = MusicListMapper::new(ctx.lang); + let mut mapper_other = MusicListMapper::new(ctx.lang); self.contents .single_column_browse_results_renderer @@ -151,7 +145,6 @@ mod tests { use rstest::rstest; use super::*; - use crate::param::Language; #[rstest] #[case::default("global")] @@ -163,8 +156,7 @@ mod tests { let charts: response::MusicCharts = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res: MapResult = - charts.map_response("", Language::En, None, None).unwrap(); + let map_res: MapResult = charts.map_response(&MapRespCtx::test("")).unwrap(); assert!( map_res.warnings.is_empty(), diff --git a/src/client/music_details.rs b/src/client/music_details.rs index 0459389..919b07f 100644 --- a/src/client/music_details.rs +++ b/src/client/music_details.rs @@ -8,7 +8,6 @@ use crate::{ paginator::{ContinuationEndpoint, Paginator}, ArtistId, Lyrics, MusicRelated, TrackDetails, TrackItem, }, - param::Language, serializer::MapResult, }; @@ -17,7 +16,7 @@ use super::{ self, music_item::{map_queue_item, MusicListMapper}, }, - ClientType, MapResponse, QBrowse, RustyPipeQuery, YTContext, + ClientType, MapRespCtx, MapResponse, QBrowse, RustyPipeQuery, YTContext, }; #[derive(Debug, Serialize)] @@ -170,10 +169,7 @@ impl RustyPipeQuery { impl MapResponse for response::MusicDetails { fn map_response( self, - id: &str, - lang: Language, - _deobf: Option<&crate::deobfuscate::DeobfData>, - _vdata: Option<&str>, + ctx: &MapRespCtx<'_>, ) -> Result, ExtractionError> { let tabs = self .contents @@ -211,7 +207,7 @@ impl MapResponse for response::MusicDetails { } let content = content.ok_or_else(|| ExtractionError::NotFound { - id: id.to_owned(), + id: ctx.id.to_owned(), msg: "no content".into(), })?; let track_item = content @@ -225,7 +221,7 @@ impl MapResponse for response::MusicDetails { response::music_item::PlaylistPanelVideo::None => None, }) .ok_or(ExtractionError::InvalidData(Cow::Borrowed("no video item")))?; - let mut track = map_queue_item(track_item, lang); + let mut track = map_queue_item(track_item, ctx.lang); let mut warnings = content.contents.warnings; warnings.append(&mut track.warnings); @@ -244,10 +240,7 @@ impl MapResponse for response::MusicDetails { impl MapResponse> for response::MusicDetails { fn map_response( self, - id: &str, - lang: Language, - _deobf: Option<&crate::deobfuscate::DeobfData>, - _vdata: Option<&str>, + ctx: &MapRespCtx<'_>, ) -> Result>, ExtractionError> { let tabs = self .contents @@ -260,7 +253,7 @@ impl MapResponse> for response::MusicDetails { .into_iter() .find_map(|t| t.tab_renderer.content) .ok_or_else(|| ExtractionError::NotFound { - id: id.to_owned(), + id: ctx.id.to_owned(), msg: "no content".into(), })? .music_queue_renderer @@ -275,7 +268,7 @@ impl MapResponse> for response::MusicDetails { .into_iter() .filter_map(|item| match item { response::music_item::PlaylistPanelVideo::PlaylistPanelVideoRenderer(item) => { - let mut track = map_queue_item(item, lang); + let mut track = map_queue_item(item, ctx.lang); warnings.append(&mut track.warnings); Some(track.c) } @@ -297,18 +290,12 @@ impl MapResponse> for response::MusicDetails { } impl MapResponse for response::MusicLyrics { - fn map_response( - self, - id: &str, - _lang: Language, - _deobf: Option<&crate::deobfuscate::DeobfData>, - _vdata: Option<&str>, - ) -> Result, ExtractionError> { + fn map_response(self, ctx: &MapRespCtx<'_>) -> Result, ExtractionError> { let lyrics = self .contents .into_res() .map_err(|msg| ExtractionError::NotFound { - id: id.to_owned(), + id: ctx.id.to_owned(), msg: msg.into(), })? .into_iter() @@ -328,16 +315,13 @@ impl MapResponse for response::MusicLyrics { impl MapResponse for response::MusicRelated { fn map_response( self, - id: &str, - lang: Language, - _deobf: Option<&crate::deobfuscate::DeobfData>, - _vdata: Option<&str>, + ctx: &MapRespCtx<'_>, ) -> Result, ExtractionError> { let contents = self .contents .into_res() .map_err(|msg| ExtractionError::NotFound { - id: id.to_owned(), + id: ctx.id.to_owned(), msg: msg.into(), })?; @@ -362,10 +346,10 @@ impl MapResponse for response::MusicRelated { _ => None, }); - let mut mapper_tracks = MusicListMapper::new(lang); + let mut mapper_tracks = MusicListMapper::new(ctx.lang); let mut mapper = match artist_id { - Some(artist_id) => MusicListMapper::with_artist(lang, artist_id), - None => MusicListMapper::new(lang), + Some(artist_id) => MusicListMapper::with_artist(ctx.lang, artist_id), + None => MusicListMapper::new(ctx.lang), }; let mut sections = contents.into_iter(); @@ -412,7 +396,7 @@ mod tests { use rstest::rstest; use super::*; - use crate::{model, param::Language, util::tests::TESTFILES}; + use crate::{model, util::tests::TESTFILES}; #[rstest] #[case::mv("mv", "ZeerrnuLi5E")] @@ -424,7 +408,7 @@ mod tests { let details: response::MusicDetails = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult = - details.map_response(id, Language::En, None, None).unwrap(); + details.map_response(&MapRespCtx::test(id)).unwrap(); assert!( map_res.warnings.is_empty(), @@ -444,7 +428,7 @@ mod tests { let radio: response::MusicDetails = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult> = - radio.map_response(id, Language::En, None, None).unwrap(); + radio.map_response(&MapRespCtx::test(id)).unwrap(); assert!( map_res.warnings.is_empty(), @@ -461,7 +445,7 @@ mod tests { let lyrics: response::MusicLyrics = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res: MapResult = lyrics.map_response("", Language::En, None, None).unwrap(); + let map_res: MapResult = lyrics.map_response(&MapRespCtx::test("")).unwrap(); assert!( map_res.warnings.is_empty(), @@ -478,8 +462,7 @@ mod tests { let lyrics: response::MusicRelated = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res: MapResult = - lyrics.map_response("", Language::En, None, None).unwrap(); + let map_res: MapResult = lyrics.map_response(&MapRespCtx::test("")).unwrap(); assert!( map_res.warnings.is_empty(), diff --git a/src/client/music_genres.rs b/src/client/music_genres.rs index 7fc2511..16f3b53 100644 --- a/src/client/music_genres.rs +++ b/src/client/music_genres.rs @@ -8,7 +8,7 @@ use crate::{ use super::{ response::{self, music_item::MusicListMapper, url_endpoint::NavigationEndpoint}, - ClientType, MapResponse, QBrowse, QBrowseParams, RustyPipeQuery, + ClientType, MapRespCtx, MapResponse, QBrowse, QBrowseParams, RustyPipeQuery, }; impl RustyPipeQuery { @@ -59,11 +59,8 @@ impl RustyPipeQuery { impl MapResponse> for response::MusicGenres { fn map_response( self, - _id: &str, - _lang: crate::param::Language, - _deobf: Option<&crate::deobfuscate::DeobfData>, - _vdata: Option<&str>, - ) -> Result>, ExtractionError> { + _ctx: &MapRespCtx<'_>, + ) -> Result>, ExtractionError> { let content = self .contents .single_column_browse_results_renderer @@ -111,13 +108,7 @@ impl MapResponse> for response::MusicGenres { } impl MapResponse for response::MusicGenre { - fn map_response( - self, - id: &str, - lang: crate::param::Language, - _deobf: Option<&crate::deobfuscate::DeobfData>, - _vdata: Option<&str>, - ) -> Result, ExtractionError> { + fn map_response(self, ctx: &MapRespCtx<'_>) -> Result, ExtractionError> { // dbg!(&self); let content = self @@ -179,7 +170,7 @@ impl MapResponse for response::MusicGenre { _ => return None, }; - let mut mapper = MusicListMapper::new(lang); + let mut mapper = MusicListMapper::new(ctx.lang); mapper.map_response(items); let mut mapped = mapper.conv_items(); warnings.append(&mut mapped.warnings); @@ -194,7 +185,7 @@ impl MapResponse for response::MusicGenre { Ok(MapResult { c: MusicGenre { - id: id.to_owned(), + id: ctx.id.to_owned(), name: self.header.music_header_renderer.title, sections, }, @@ -211,7 +202,7 @@ mod tests { use rstest::rstest; use super::*; - use crate::{model, param::Language, util::tests::TESTFILES}; + use crate::{model, util::tests::TESTFILES}; #[test] fn map_music_genres() { @@ -221,7 +212,7 @@ mod tests { let playlist: response::MusicGenres = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult> = - playlist.map_response("", Language::En, None, None).unwrap(); + playlist.map_response(&MapRespCtx::test("")).unwrap(); assert!( map_res.warnings.is_empty(), @@ -241,7 +232,7 @@ mod tests { let playlist: response::MusicGenre = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult = - playlist.map_response(id, Language::En, None, None).unwrap(); + playlist.map_response(&MapRespCtx::test(id)).unwrap(); assert!( map_res.warnings.is_empty(), diff --git a/src/client/music_new.rs b/src/client/music_new.rs index c5cfc5f..68251e6 100644 --- a/src/client/music_new.rs +++ b/src/client/music_new.rs @@ -4,9 +4,10 @@ use crate::{ client::response::music_item::MusicListMapper, error::{Error, ExtractionError}, model::{traits::FromYtItem, AlbumItem, TrackItem}, + serializer::MapResult, }; -use super::{response, ClientType, MapResponse, QBrowse, RustyPipeQuery}; +use super::{response, ClientType, MapRespCtx, MapResponse, QBrowse, RustyPipeQuery}; impl RustyPipeQuery { /// Get the new albums that were released on YouTube Music @@ -49,13 +50,7 @@ impl RustyPipeQuery { } impl MapResponse> for response::MusicNew { - fn map_response( - self, - _id: &str, - lang: crate::param::Language, - _deobf: Option<&crate::deobfuscate::DeobfData>, - _vdata: Option<&str>, - ) -> Result>, ExtractionError> { + fn map_response(self, ctx: &MapRespCtx<'_>) -> Result>, ExtractionError> { let items = self .contents .single_column_browse_results_renderer @@ -73,7 +68,7 @@ impl MapResponse> for response::MusicNew { .grid_renderer .items; - let mut mapper = MusicListMapper::new(lang); + let mut mapper = MusicListMapper::new(ctx.lang); mapper.map_response(items); Ok(mapper.conv_items()) @@ -88,7 +83,7 @@ mod tests { use rstest::rstest; use super::*; - use crate::{param::Language, serializer::MapResult, util::tests::TESTFILES}; + use crate::{serializer::MapResult, util::tests::TESTFILES}; #[rstest] #[case::default("default")] @@ -98,9 +93,8 @@ mod tests { let new_albums: response::MusicNew = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res: MapResult> = new_albums - .map_response("", Language::En, None, None) - .unwrap(); + let map_res: MapResult> = + new_albums.map_response(&MapRespCtx::test("")).unwrap(); assert!( map_res.warnings.is_empty(), @@ -119,9 +113,8 @@ mod tests { let new_videos: response::MusicNew = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res: MapResult> = new_videos - .map_response("", Language::En, None, None) - .unwrap(); + let map_res: MapResult> = + new_videos.map_response(&MapRespCtx::test("")).unwrap(); assert!( map_res.warnings.is_empty(), diff --git a/src/client/music_playlist.rs b/src/client/music_playlist.rs index 8c2d29f..8261b2b 100644 --- a/src/client/music_playlist.rs +++ b/src/client/music_playlist.rs @@ -17,7 +17,7 @@ use super::{ self, music_item::{map_album_type, map_artist_id, map_artists, MusicListMapper}, }, - ClientType, MapResponse, QBrowse, RustyPipeQuery, + ClientType, MapRespCtx, MapResponse, QBrowse, RustyPipeQuery, }; impl RustyPipeQuery { @@ -138,10 +138,7 @@ impl RustyPipeQuery { impl MapResponse for response::MusicPlaylist { fn map_response( self, - id: &str, - lang: crate::param::Language, - _deobf: Option<&crate::deobfuscate::DeobfData>, - vdata: Option<&str>, + ctx: &MapRespCtx<'_>, ) -> Result, ExtractionError> { // dbg!(&self); @@ -186,14 +183,15 @@ impl MapResponse for response::MusicPlaylist { )))?; if let Some(playlist_id) = shelf.playlist_id { - if playlist_id != id { + if playlist_id != ctx.id { return Err(ExtractionError::WrongResult(format!( - "got wrong playlist id {playlist_id}, expected {id}" + "got wrong playlist id {}, expected {}", + playlist_id, ctx.id ))); } } - let mut mapper = MusicListMapper::new(lang); + let mut mapper = MusicListMapper::new(ctx.lang); mapper.map_response(shelf.contents); let map_res = mapper.conv_items(); @@ -273,7 +271,7 @@ impl MapResponse for response::MusicPlaylist { Ok(MapResult { c: MusicPlaylist { - id: id.to_owned(), + id: ctx.id.to_owned(), name, thumbnail, channel, @@ -284,14 +282,14 @@ impl MapResponse for response::MusicPlaylist { track_count, map_res.c, ctoken, - vdata.map(str::to_owned), + ctx.visitor_data.map(str::to_owned), ContinuationEndpoint::MusicBrowse, ), related_playlists: Paginator::new_ext( None, Vec::new(), related_ctoken, - vdata.map(str::to_owned), + ctx.visitor_data.map(str::to_owned), ContinuationEndpoint::MusicBrowse, ), }, @@ -301,13 +299,7 @@ impl MapResponse for response::MusicPlaylist { } impl MapResponse for response::MusicPlaylist { - fn map_response( - self, - id: &str, - lang: crate::param::Language, - _deobf: Option<&crate::deobfuscate::DeobfData>, - _vdata: Option<&str>, - ) -> Result, ExtractionError> { + fn map_response(self, ctx: &MapRespCtx<'_>) -> Result, ExtractionError> { // dbg!(&self); let (header, sections) = match self.contents { @@ -401,7 +393,7 @@ impl MapResponse for response::MusicPlaylist { .map(|part| part.to_string()) .unwrap_or_default(); - let album_type = map_album_type(album_type_txt.as_str(), lang); + let album_type = map_album_type(album_type_txt.as_str(), ctx.lang); let year = year_txt.and_then(|txt| util::parse_numeric(&txt).ok()); fn map_playlist_id(ep: &NavigationEndpoint) -> Option { @@ -448,11 +440,11 @@ impl MapResponse for response::MusicPlaylist { let artist_id = artist_id.or_else(|| artists.first().and_then(|a| a.id.clone())); let mut mapper = MusicListMapper::with_album( - lang, + ctx.lang, artists.clone(), by_va, AlbumId { - id: id.to_owned(), + id: ctx.id.to_owned(), name: header.title.clone(), }, ); @@ -460,7 +452,7 @@ impl MapResponse for response::MusicPlaylist { let tracks_res = mapper.conv_items(); let mut warnings = tracks_res.warnings; - let mut variants_mapper = MusicListMapper::new(lang); + let mut variants_mapper = MusicListMapper::new(ctx.lang); if let Some(res) = album_variants { variants_mapper.map_response(res); } @@ -469,7 +461,7 @@ impl MapResponse for response::MusicPlaylist { Ok(MapResult { c: MusicAlbum { - id: id.to_owned(), + id: ctx.id.to_owned(), playlist_id, name: header.title, cover: header.thumbnail.into(), @@ -497,7 +489,7 @@ mod tests { use rstest::rstest; use super::*; - use crate::{model, param::Language, util::tests::TESTFILES}; + use crate::{model, util::tests::TESTFILES}; #[rstest] #[case::short("short", "RDCLAK5uy_kFQXdnqMaQCVx2wpUM4ZfbsGCDibZtkJk")] @@ -512,7 +504,7 @@ mod tests { let playlist: response::MusicPlaylist = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult = - playlist.map_response(id, Language::En, None, None).unwrap(); + playlist.map_response(&MapRespCtx::test(id)).unwrap(); assert!( map_res.warnings.is_empty(), @@ -539,7 +531,7 @@ mod tests { let playlist: response::MusicPlaylist = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult = - playlist.map_response(id, Language::En, None, None).unwrap(); + playlist.map_response(&MapRespCtx::test(id)).unwrap(); assert!( map_res.warnings.is_empty(), diff --git a/src/client/music_search.rs b/src/client/music_search.rs index 2216171..f443229 100644 --- a/src/client/music_search.rs +++ b/src/client/music_search.rs @@ -15,7 +15,7 @@ use crate::{ serializer::MapResult, }; -use super::{response, ClientType, MapResponse, RustyPipeQuery, YTContext}; +use super::{response, ClientType, MapRespCtx, MapResponse, RustyPipeQuery, YTContext}; #[derive(Debug, Serialize)] #[serde(rename_all = "camelCase")] @@ -152,10 +152,7 @@ impl RustyPipeQuery { impl MapResponse> for response::MusicSearch { fn map_response( self, - _id: &str, - lang: crate::param::Language, - _deobf: Option<&crate::deobfuscate::DeobfData>, - vdata: Option<&str>, + ctx: &MapRespCtx<'_>, ) -> Result>, ExtractionError> { // dbg!(&self); @@ -171,7 +168,7 @@ impl MapResponse> for response::MusicSearch let mut corrected_query = None; let mut ctoken = None; - let mut mapper = MusicListMapper::new(lang); + let mut mapper = MusicListMapper::new(ctx.lang); sections.into_iter().for_each(|section| match section { response::music_search::ItemSection::MusicShelfRenderer(shelf) => { @@ -199,7 +196,7 @@ impl MapResponse> for response::MusicSearch None, map_res.c, ctoken, - vdata.map(str::to_owned), + ctx.visitor_data.map(str::to_owned), ContinuationEndpoint::MusicSearch, ), corrected_query, @@ -212,12 +209,9 @@ impl MapResponse> for response::MusicSearch impl MapResponse for response::MusicSearchSuggestion { fn map_response( self, - _id: &str, - lang: crate::param::Language, - _deobf: Option<&crate::deobfuscate::DeobfData>, - _vdata: Option<&str>, + ctx: &MapRespCtx<'_>, ) -> Result, ExtractionError> { - let mut mapper = MusicListMapper::new_search_suggest(lang); + let mut mapper = MusicListMapper::new_search_suggest(ctx.lang); let mut terms = Vec::new(); for section in self.contents { @@ -256,12 +250,11 @@ mod tests { use rstest::rstest; use crate::{ - client::{response, MapResponse}, + client::{response, MapRespCtx, MapResponse}, model::{ AlbumItem, ArtistItem, MusicItem, MusicPlaylistItem, MusicSearchResult, MusicSearchSuggestion, TrackItem, }, - param::Language, serializer::MapResult, util::tests::TESTFILES, }; @@ -278,7 +271,7 @@ mod tests { let search: response::MusicSearch = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult> = - search.map_response("", Language::En, None, None).unwrap(); + search.map_response(&MapRespCtx::test("")).unwrap(); assert!( map_res.warnings.is_empty(), @@ -301,7 +294,7 @@ mod tests { let search: response::MusicSearch = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult> = - search.map_response("", Language::En, None, None).unwrap(); + search.map_response(&MapRespCtx::test("")).unwrap(); assert!( map_res.warnings.is_empty(), @@ -320,7 +313,7 @@ mod tests { let search: response::MusicSearch = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult> = - search.map_response("", Language::En, None, None).unwrap(); + search.map_response(&MapRespCtx::test("")).unwrap(); assert!( map_res.warnings.is_empty(), @@ -339,7 +332,7 @@ mod tests { let search: response::MusicSearch = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult> = - search.map_response("", Language::En, None, None).unwrap(); + search.map_response(&MapRespCtx::test("")).unwrap(); assert!( map_res.warnings.is_empty(), @@ -360,7 +353,7 @@ mod tests { let search: response::MusicSearch = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult> = - search.map_response("", Language::En, None, None).unwrap(); + search.map_response(&MapRespCtx::test("")).unwrap(); assert!( map_res.warnings.is_empty(), @@ -380,9 +373,8 @@ mod tests { let suggestion: response::MusicSearchSuggestion = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res: MapResult = suggestion - .map_response("", Language::En, None, None) - .unwrap(); + let map_res: MapResult = + suggestion.map_response(&MapRespCtx::test("")).unwrap(); assert!( map_res.warnings.is_empty(), diff --git a/src/client/pagination.rs b/src/client/pagination.rs index 20ce792..94c44e8 100644 --- a/src/client/pagination.rs +++ b/src/client/pagination.rs @@ -10,7 +10,7 @@ use crate::model::{ use crate::serializer::MapResult; use super::response::music_item::{map_queue_item, MusicListMapper, PlaylistPanelVideo}; -use super::{response, ClientType, MapResponse, QContinuation, RustyPipeQuery}; +use super::{response, ClientType, MapRespCtx, MapResponse, QContinuation, RustyPipeQuery}; impl RustyPipeQuery { /// Get more YouTube items from the given continuation token and endpoint @@ -103,10 +103,7 @@ fn map_ytm_paginator( impl MapResponse> for response::Continuation { fn map_response( self, - _id: &str, - lang: crate::param::Language, - _deobf: Option<&crate::deobfuscate::DeobfData>, - _vdata: Option<&str>, + ctx: &MapRespCtx<'_>, ) -> Result>, ExtractionError> { let items = self .on_response_received_actions @@ -126,7 +123,7 @@ impl MapResponse> for response::Continuation { }) .unwrap_or_default(); - let mut mapper = response::YouTubeListMapper::::new(lang); + let mut mapper = response::YouTubeListMapper::::new(ctx.lang); mapper.map_response(items); Ok(MapResult { @@ -139,12 +136,9 @@ impl MapResponse> for response::Continuation { impl MapResponse> for response::MusicContinuation { fn map_response( self, - _id: &str, - lang: crate::param::Language, - _deobf: Option<&crate::deobfuscate::DeobfData>, - _vdata: Option<&str>, + ctx: &MapRespCtx<'_>, ) -> Result>, ExtractionError> { - let mut mapper = MusicListMapper::new(lang); + let mut mapper = MusicListMapper::new(ctx.lang); let mut continuations = Vec::new(); match self.continuation_contents { @@ -173,7 +167,7 @@ impl MapResponse> for response::MusicContinuation { mapper.add_warnings(&mut panel.contents.warnings); panel.contents.c.into_iter().for_each(|item| { if let PlaylistPanelVideo::PlaylistPanelVideoRenderer(item) = item { - let mut track = map_queue_item(item, lang); + let mut track = map_queue_item(item, ctx.lang); mapper.add_item(MusicItem::Track(track.c)); mapper.add_warnings(&mut track.warnings); } @@ -356,7 +350,6 @@ mod tests { use super::*; use crate::{ model::{MusicPlaylistItem, PlaylistItem, TrackItem, VideoItem}, - param::Language, util::tests::TESTFILES, }; @@ -371,7 +364,7 @@ mod tests { let items: response::Continuation = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult> = - items.map_response("", Language::En, None, None).unwrap(); + items.map_response(&MapRespCtx::test("")).unwrap(); assert!( map_res.warnings.is_empty(), @@ -393,7 +386,7 @@ mod tests { let items: response::Continuation = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult> = - items.map_response("", Language::En, None, None).unwrap(); + items.map_response(&MapRespCtx::test("")).unwrap(); let paginator: Paginator = map_yt_paginator(map_res.c, None, ContinuationEndpoint::Browse); @@ -416,7 +409,7 @@ mod tests { let items: response::Continuation = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult> = - items.map_response("", Language::En, None, None).unwrap(); + items.map_response(&MapRespCtx::test("")).unwrap(); let paginator: Paginator = map_yt_paginator(map_res.c, None, ContinuationEndpoint::Browse); @@ -439,7 +432,7 @@ mod tests { let items: response::MusicContinuation = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult> = - items.map_response("", Language::En, None, None).unwrap(); + items.map_response(&MapRespCtx::test("")).unwrap(); let paginator: Paginator = map_ytm_paginator(map_res.c, None, ContinuationEndpoint::MusicBrowse); @@ -460,7 +453,7 @@ mod tests { let items: response::MusicContinuation = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult> = - items.map_response("", Language::En, None, None).unwrap(); + items.map_response(&MapRespCtx::test("")).unwrap(); let paginator: Paginator = map_ytm_paginator(map_res.c, None, ContinuationEndpoint::MusicBrowse); diff --git a/src/client/player.rs b/src/client/player.rs index 3c7536c..e7a0751 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -16,13 +16,12 @@ use crate::{ traits::QualityOrd, AudioCodec, AudioFormat, AudioStream, AudioTrack, ChannelId, Frameset, Subtitle, VideoCodec, VideoFormat, VideoPlayer, VideoPlayerDetails, VideoStream, }, - param::Language, util, }; use super::{ response::{self, player}, - ClientType, MapResponse, MapResult, RustyPipeQuery, YTContext, + ClientType, MapRespCtx, MapResponse, MapResult, RustyPipeQuery, YTContext, }; #[derive(Debug, Serialize)] @@ -149,12 +148,9 @@ impl RustyPipeQuery { impl MapResponse for response::Player { fn map_response( self, - id: &str, - _lang: Language, - deobf: Option<&crate::deobfuscate::DeobfData>, - vdata: Option<&str>, + ctx: &MapRespCtx<'_>, ) -> Result, ExtractionError> { - let deobf = Deobfuscator::new(deobf.unwrap())?; + let deobf = Deobfuscator::new(ctx.deobf.unwrap())?; let mut warnings = vec![]; // Check playability status @@ -235,10 +231,10 @@ impl MapResponse for response::Player { "no video details", )))?; - if video_details.video_id != id { + if video_details.video_id != ctx.id { return Err(ExtractionError::WrongResult(format!( "video id {}, expected {}", - video_details.video_id, id + video_details.video_id, ctx.id ))); } @@ -375,10 +371,11 @@ impl MapResponse for response::Player { hls_manifest_url: streaming_data.hls_manifest_url, dash_manifest_url: streaming_data.dash_manifest_url, preview_frames, + client_type: ctx.client_type, visitor_data: self .response_context .visitor_data - .or_else(|| vdata.map(str::to_owned)), + .or_else(|| ctx.visitor_data.map(str::to_owned)), }, warnings, }) @@ -657,7 +654,7 @@ mod tests { use rstest::rstest; use super::*; - use crate::{deobfuscate::DeobfData, util::tests::TESTFILES}; + use crate::{deobfuscate::DeobfData, param::Language, util::tests::TESTFILES}; static DEOBF_DATA: Lazy = Lazy::new(|| { DeobfData { @@ -669,18 +666,27 @@ mod tests { }); #[rstest] - #[case::desktop("desktop")] - #[case::desktop_music("desktopmusic")] - #[case::tv_html5_embed("tvhtml5embed")] - #[case::android("android")] - #[case::ios("ios")] - fn map_player_data(#[case] name: &str) { + #[case::desktop(ClientType::Desktop)] + #[case::desktop_music(ClientType::DesktopMusic)] + #[case::tv_html5_embed(ClientType::TvHtml5Embed)] + #[case::android(ClientType::Android)] + #[case::ios(ClientType::Ios)] + fn map_player_data(#[case] client_type: ClientType) { + let name = serde_plain::to_string(&client_type) + .unwrap() + .replace('_', ""); let json_path = path!(*TESTFILES / "player" / format!("{name}_video.json")); let json_file = File::open(json_path).unwrap(); let resp: response::Player = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res = resp - .map_response("pPvd8UxmSbQ", Language::En, Some(&DEOBF_DATA), None) + .map_response(&MapRespCtx { + id: "pPvd8UxmSbQ", + lang: Language::En, + deobf: Some(&DEOBF_DATA), + visitor_data: None, + client_type, + }) .unwrap(); assert!( diff --git a/src/client/playlist.rs b/src/client/playlist.rs index ce198f5..ecbf205 100644 --- a/src/client/playlist.rs +++ b/src/client/playlist.rs @@ -13,7 +13,7 @@ use crate::{ util::{self, timeago, TryRemove}, }; -use super::{response, ClientType, MapResponse, MapResult, QBrowse, RustyPipeQuery}; +use super::{response, ClientType, MapRespCtx, MapResponse, MapResult, QBrowse, RustyPipeQuery}; impl RustyPipeQuery { /// Get a YouTube playlist @@ -47,15 +47,9 @@ impl RustyPipeQuery { } impl MapResponse for response::Playlist { - fn map_response( - self, - id: &str, - lang: crate::param::Language, - _deobf: Option<&crate::deobfuscate::DeobfData>, - vdata: Option<&str>, - ) -> Result, ExtractionError> { + fn map_response(self, ctx: &MapRespCtx<'_>) -> Result, ExtractionError> { let (Some(contents), Some(header)) = (self.contents, self.header) else { - return Err(response::alerts_to_err(id, self.alerts)); + return Err(response::alerts_to_err(ctx.id, self.alerts)); }; let video_items = contents @@ -85,7 +79,7 @@ impl MapResponse for response::Playlist { .playlist_video_list_renderer .contents; - let mut mapper = response::YouTubeListMapper::::new(lang); + let mut mapper = response::YouTubeListMapper::::new(ctx.lang); mapper.map_response(video_items); let (description, thumbnails, last_update_txt) = match self.sidebar { @@ -144,9 +138,10 @@ impl MapResponse for response::Playlist { }; let playlist_id = header.playlist_header_renderer.playlist_id; - if playlist_id != id { + if playlist_id != ctx.id { return Err(ExtractionError::WrongResult(format!( - "got wrong playlist id {playlist_id}, expected {id}" + "got wrong playlist id {}, expected {}", + playlist_id, ctx.id ))); } @@ -165,7 +160,7 @@ impl MapResponse for response::Playlist { .and_then(|link| ChannelId::try_from(link).ok()); let last_update = last_update_txt.as_ref().and_then(|txt| { - timeago::parse_textual_date_or_warn(lang, txt, &mut mapper.warnings) + timeago::parse_textual_date_or_warn(ctx.lang, txt, &mut mapper.warnings) .map(OffsetDateTime::date) }); @@ -177,7 +172,7 @@ impl MapResponse for response::Playlist { Some(n_videos), mapper.items, mapper.ctoken, - vdata.map(str::to_owned), + ctx.visitor_data.map(str::to_owned), ContinuationEndpoint::Browse, ), video_count: n_videos, @@ -189,7 +184,7 @@ impl MapResponse for response::Playlist { visitor_data: self .response_context .visitor_data - .or_else(|| vdata.map(str::to_owned)), + .or_else(|| ctx.visitor_data.map(str::to_owned)), }, warnings: mapper.warnings, }) @@ -203,7 +198,7 @@ mod tests { use path_macro::path; use rstest::rstest; - use crate::{param::Language, util::tests::TESTFILES}; + use crate::util::tests::TESTFILES; use super::*; @@ -218,7 +213,7 @@ mod tests { let playlist: response::Playlist = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res = playlist.map_response(id, Language::En, None, None).unwrap(); + let map_res = playlist.map_response(&MapRespCtx::test(id)).unwrap(); assert!( map_res.warnings.is_empty(), diff --git a/src/client/search.rs b/src/client/search.rs index b99066b..03529f4 100644 --- a/src/client/search.rs +++ b/src/client/search.rs @@ -12,7 +12,7 @@ use crate::{ param::search_filter::SearchFilter, }; -use super::{response, ClientType, MapResponse, MapResult, RustyPipeQuery, YTContext}; +use super::{response, ClientType, MapRespCtx, MapResponse, MapResult, RustyPipeQuery, YTContext}; #[derive(Debug, Serialize)] #[serde(rename_all = "camelCase")] @@ -103,10 +103,7 @@ impl RustyPipeQuery { impl MapResponse> for response::Search { fn map_response( self, - _id: &str, - lang: crate::param::Language, - _deobf: Option<&crate::deobfuscate::DeobfData>, - vdata: Option<&str>, + ctx: &MapRespCtx<'_>, ) -> Result>, ExtractionError> { let items = self .contents @@ -115,7 +112,7 @@ impl MapResponse> for response::Search { .section_list_renderer .contents; - let mut mapper = response::YouTubeListMapper::::new(lang); + let mut mapper = response::YouTubeListMapper::::new(ctx.lang); mapper.map_response(items); Ok(MapResult { @@ -135,7 +132,7 @@ impl MapResponse> for response::Search { visitor_data: self .response_context .visitor_data - .or_else(|| vdata.map(str::to_owned)), + .or_else(|| ctx.visitor_data.map(str::to_owned)), }, warnings: mapper.warnings, }) @@ -150,9 +147,8 @@ mod tests { use rstest::rstest; use crate::{ - client::{response, MapResponse}, + client::{response, MapRespCtx, MapResponse}, model::{SearchResult, YouTubeItem}, - param::Language, serializer::MapResult, util::tests::TESTFILES, }; @@ -168,7 +164,7 @@ mod tests { let search: response::Search = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult> = - search.map_response("", Language::En, None, None).unwrap(); + search.map_response(&MapRespCtx::test("")).unwrap(); assert!( map_res.warnings.is_empty(), 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 9dda7eb..02798cc 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 @@ -466,5 +466,6 @@ VideoPlayer( frames_per_page_y: 5, ), ], + 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 ffafe4c..ec4ae26 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 @@ -581,5 +581,6 @@ VideoPlayer( frames_per_page_y: 5, ), ], + 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 05f522b..8ea0e63 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 @@ -405,5 +405,6 @@ VideoPlayer( frames_per_page_y: 5, ), ], + 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 416ecca..dcad31b 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 @@ -196,5 +196,6 @@ VideoPlayer( frames_per_page_y: 5, ), ], + client_type: ios, visitor_data: Some("Cgs4TXV4dk13WVEyWSirsaWXBg%3D%3D"), ) diff --git a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_tvhtml5embed.snap b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_tvhtml5embed.snap index 0e48f31..ee018d8 100644 --- a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_tvhtml5embed.snap +++ b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_tvhtml5embed.snap @@ -581,5 +581,6 @@ VideoPlayer( frames_per_page_y: 5, ), ], + client_type: tv_html5_embed, visitor_data: Some("CgtacUJOMG81dTI3cyirsaWXBg%3D%3D"), ) diff --git a/src/client/trends.rs b/src/client/trends.rs index 8b6f3b8..0a46bc5 100644 --- a/src/client/trends.rs +++ b/src/client/trends.rs @@ -10,7 +10,9 @@ use crate::{ serializer::MapResult, }; -use super::{response, ClientType, MapResponse, QBrowse, QBrowseParams, RustyPipeQuery}; +use super::{ + response, ClientType, MapRespCtx, MapResponse, QBrowse, QBrowseParams, RustyPipeQuery, +}; impl RustyPipeQuery { /// Get the videos from the YouTube startpage @@ -56,10 +58,7 @@ impl RustyPipeQuery { impl MapResponse> for response::Startpage { fn map_response( self, - _id: &str, - lang: crate::param::Language, - _deobf: Option<&crate::deobfuscate::DeobfData>, - vdata: Option<&str>, + ctx: &MapRespCtx<'_>, ) -> Result>, ExtractionError> { let grid = self .contents @@ -75,10 +74,10 @@ impl MapResponse> for response::Startpage { Ok(map_startpage_videos( grid, - lang, + ctx.lang, self.response_context .visitor_data - .or_else(|| vdata.map(str::to_owned)), + .or_else(|| ctx.visitor_data.map(str::to_owned)), )) } } @@ -86,10 +85,7 @@ impl MapResponse> for response::Startpage { impl MapResponse> for response::Trending { fn map_response( self, - _id: &str, - lang: crate::param::Language, - _deobf: Option<&crate::deobfuscate::DeobfData>, - _vdata: Option<&str>, + ctx: &MapRespCtx<'_>, ) -> Result>, ExtractionError> { let items = self .contents @@ -103,7 +99,7 @@ impl MapResponse> for response::Trending { .section_list_renderer .contents; - let mut mapper = response::YouTubeListMapper::::new(lang); + let mut mapper = response::YouTubeListMapper::::new(ctx.lang); mapper.map_response(items); Ok(MapResult { @@ -141,9 +137,8 @@ mod tests { use rstest::rstest; use crate::{ - client::{response, MapResponse}, + client::{response, MapRespCtx, MapResponse}, model::{paginator::Paginator, VideoItem}, - param::Language, serializer::MapResult, util::tests::TESTFILES, }; @@ -155,9 +150,8 @@ mod tests { let startpage: response::Startpage = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res: MapResult> = startpage - .map_response("", Language::En, None, None) - .unwrap(); + let map_res: MapResult> = + startpage.map_response(&MapRespCtx::test("")).unwrap(); assert!( map_res.warnings.is_empty(), @@ -179,9 +173,8 @@ mod tests { let startpage: response::Trending = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res: MapResult> = startpage - .map_response("", Language::En, None, None) - .unwrap(); + let map_res: MapResult> = + startpage.map_response(&MapRespCtx::test("")).unwrap(); assert!( map_res.warnings.is_empty(), diff --git a/src/client/url_resolver.rs b/src/client/url_resolver.rs index b9b0a0b..ab69903 100644 --- a/src/client/url_resolver.rs +++ b/src/client/url_resolver.rs @@ -5,14 +5,13 @@ use serde::Serialize; use crate::{ error::{Error, ExtractionError}, model::UrlTarget, - param::Language, serializer::MapResult, util, }; use super::{ response::{self, url_endpoint::NavigationEndpoint}, - ClientType, MapResponse, RustyPipeQuery, YTContext, + ClientType, MapRespCtx, MapResponse, RustyPipeQuery, YTContext, }; #[derive(Debug, Serialize)] @@ -325,13 +324,7 @@ impl RustyPipeQuery { } impl MapResponse for response::ResolvedUrl { - fn map_response( - self, - _id: &str, - _lang: Language, - _deobf: Option<&crate::deobfuscate::DeobfData>, - _vdata: Option<&str>, - ) -> Result, ExtractionError> { + fn map_response(self, _ctx: &MapRespCtx<'_>) -> Result, ExtractionError> { let pt = self.endpoint.page_type(); if let NavigationEndpoint::Browse { browse_endpoint, .. diff --git a/src/client/video_details.rs b/src/client/video_details.rs index d08d0a2..1d8a9db 100644 --- a/src/client/video_details.rs +++ b/src/client/video_details.rs @@ -15,7 +15,7 @@ use crate::{ use super::{ response::{self, video_details::Payload, IconType}, - ClientType, MapResponse, QContinuation, RustyPipeQuery, YTContext, + ClientType, MapRespCtx, MapResponse, QContinuation, RustyPipeQuery, YTContext, }; #[derive(Debug, Serialize)] @@ -89,28 +89,26 @@ impl RustyPipeQuery { impl MapResponse for response::VideoDetails { fn map_response( self, - id: &str, - lang: Language, - _deobf: Option<&crate::deobfuscate::DeobfData>, - vdata: Option<&str>, + ctx: &MapRespCtx<'_>, ) -> Result, ExtractionError> { let mut warnings = Vec::new(); let contents = self.contents.ok_or_else(|| ExtractionError::NotFound { - id: id.to_owned(), + id: ctx.id.to_owned(), msg: "no content".into(), })?; let current_video_endpoint = self.current_video_endpoint .ok_or_else(|| ExtractionError::NotFound { - id: id.to_owned(), + id: ctx.id.to_owned(), msg: "no current_video_endpoint".into(), })?; let video_id = current_video_endpoint.watch_endpoint.video_id; - if id != video_id { + if ctx.id != video_id { return Err(ExtractionError::WrongResult(format!( - "got wrong video id {video_id}, expected {id}" + "got wrong video id {}, expected {}", + video_id, ctx.id ))); } @@ -120,7 +118,7 @@ impl MapResponse for response::VideoDetails { .results .contents .ok_or_else(|| ExtractionError::NotFound { - id: id.into(), + id: ctx.id.into(), msg: "no primary_results".into(), })?; warnings.append(&mut primary_results.warnings); @@ -189,7 +187,7 @@ 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(lang, txt, &mut warnings) + timeago::parse_textual_date_or_warn(ctx.lang, txt, &mut warnings) }), date_text, view_count @@ -207,7 +205,7 @@ impl MapResponse for response::VideoDetails { let comment_count = comment_count_section.and_then(|s| { util::parse_large_numstr_or_warn::( &s.comments_entry_point_header_renderer.comment_count, - lang, + ctx.lang, &mut warnings, ) }); @@ -275,7 +273,7 @@ impl MapResponse for response::VideoDetails { let visitor_data = self .response_context .visitor_data - .or_else(|| vdata.map(str::to_owned)); + .or_else(|| ctx.visitor_data.map(str::to_owned)); let recommended = contents .two_column_watch_next_results .secondary_results @@ -285,7 +283,7 @@ impl MapResponse for response::VideoDetails { r, sr.secondary_results.continuations, visitor_data.clone(), - lang, + ctx.lang, ); warnings.append(&mut res.warnings); res.c @@ -350,7 +348,7 @@ impl MapResponse for response::VideoDetails { avatar: owner.thumbnail.into(), verification: owner.badges.into(), subscriber_count: owner.subscriber_count_text.and_then(|txt| { - util::parse_large_numstr_or_warn(&txt, lang, &mut warnings) + util::parse_large_numstr_or_warn(&txt, ctx.lang, &mut warnings) }), }, view_count, @@ -385,10 +383,7 @@ impl MapResponse for response::VideoDetails { impl MapResponse> for response::VideoComments { fn map_response( self, - _id: &str, - lang: Language, - _deobf: Option<&crate::deobfuscate::DeobfData>, - _vdata: Option<&str>, + ctx: &MapRespCtx<'_>, ) -> Result>, ExtractionError> { let received_endpoints = self.on_response_received_endpoints; let mut warnings = Vec::new(); @@ -415,7 +410,7 @@ impl MapResponse> for response::VideoComments { comment.comment_renderer, Some(thread.replies), thread.rendering_priority, - lang, + ctx.lang, &mut warnings, )); } else if let Some(vm) = thread.comment_view_model { @@ -424,7 +419,7 @@ impl MapResponse> for response::VideoComments { &mut mutations, Some(thread.replies), thread.rendering_priority, - lang, + ctx.lang, &mut warnings, ) { comments.push(c); @@ -440,7 +435,7 @@ impl MapResponse> for response::VideoComments { comment, None, response::video_details::CommentPriority::RenderingPriorityUnknown, - lang, + ctx.lang, &mut warnings, )); } @@ -450,7 +445,7 @@ impl MapResponse> for response::VideoComments { &mut mutations, None, response::video_details::CommentPriority::RenderingPriorityUnknown, - lang, + ctx.lang, &mut warnings, ) { comments.push(c); @@ -654,8 +649,7 @@ mod tests { use rstest::rstest; use crate::{ - client::{response, MapResponse}, - param::Language, + client::{response, MapRespCtx, MapResponse}, util::tests::TESTFILES, }; @@ -676,7 +670,7 @@ mod tests { let details: response::VideoDetails = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res = details.map_response(id, Language::En, None, None).unwrap(); + let map_res = details.map_response(&MapRespCtx::test(id)).unwrap(); assert!( map_res.warnings.is_empty(), @@ -696,9 +690,7 @@ mod tests { let details: response::VideoDetails = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let err = details - .map_response("", Language::En, None, None) - .unwrap_err(); + let err = details.map_response(&MapRespCtx::test("")).unwrap_err(); assert!(matches!( err, crate::error::ExtractionError::NotFound { .. } @@ -716,7 +708,7 @@ mod tests { let comments: response::VideoComments = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res = comments.map_response("", Language::En, None, None).unwrap(); + let map_res = comments.map_response(&MapRespCtx::test("")).unwrap(); assert!( map_res.warnings.is_empty(), diff --git a/src/model/mod.rs b/src/model/mod.rs index e79728d..99744ec 100644 --- a/src/model/mod.rs +++ b/src/model/mod.rs @@ -15,7 +15,7 @@ use serde::{Deserialize, Serialize}; use time::{Date, OffsetDateTime}; use self::{paginator::Paginator, richtext::RichText}; -use crate::{error::Error, param::Country, validate}; +use crate::{client::ClientType, error::Error, param::Country, validate}; /* #COMMON @@ -143,6 +143,8 @@ pub struct VideoPlayer { pub dash_manifest_url: Option, /// Video frames for seek preview pub preview_frames: Vec, + /// Client type with which the player was fetched + pub client_type: ClientType, /// YouTube visitor data cookie pub visitor_data: Option, } @@ -823,7 +825,7 @@ pub enum YouTubeItem { Channel(ChannelItem), } -/// YouTube video list item +/// YouTube video list item (from search results, recommendations, playlists) #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] #[non_exhaustive] pub struct VideoItem { @@ -862,7 +864,7 @@ pub struct VideoItem { pub short_description: Option, } -/// YouTube channel list item +/// YouTube channel list item (from search results) #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] #[non_exhaustive] pub struct ChannelItem { @@ -884,7 +886,7 @@ pub struct ChannelItem { pub short_description: String, } -/// YouTube playlist list item +/// YouTube playlist list item (from search results) #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] #[non_exhaustive] pub struct PlaylistItem { diff --git a/testfiles/player_model/hdr.json b/testfiles/player_model/hdr.json index d9feb68..61c3192 100644 --- a/testfiles/player_model/hdr.json +++ b/testfiles/player_model/hdr.json @@ -1125,5 +1125,6 @@ "expires_in_seconds": 21540, "hls_manifest_url": null, "dash_manifest_url": null, - "preview_frames": [] + "preview_frames": [], + "client_type": "desktop" } diff --git a/testfiles/player_model/multilanguage.json b/testfiles/player_model/multilanguage.json index 7f6e1de..d36f102 100644 --- a/testfiles/player_model/multilanguage.json +++ b/testfiles/player_model/multilanguage.json @@ -2120,5 +2120,6 @@ "hls_manifest_url": null, "dash_manifest_url": null, "preview_frames": [], - "visitor_data": "CgtGWDFCUllrcTdxayjo1_OiBg%3D%3D" + "visitor_data": "CgtGWDFCUllrcTdxayjo1_OiBg%3D%3D", + "client_type": "desktop" } From 3d6de5354599ea691351e0ca161154e53f2e0b41 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 27 Jul 2024 02:36:45 +0200 Subject: [PATCH 084/347] feat: add http_client method to RustyPipe and user_agent method to RustyPipeQuery For downloading, the http client as well as the user agent used by RustyPipe should be available. --- src/client/mod.rs | 67 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 50 insertions(+), 17 deletions(-) diff --git a/src/client/mod.rs b/src/client/mod.rs index 3091db6..e6761e8 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -225,6 +225,7 @@ struct RustyPipeRef { n_http_retries: u32, cache: CacheHolder, default_opts: RustyPipeOpts, + user_agent: Cow<'static, str>, } #[derive(Clone)] @@ -455,8 +456,13 @@ impl RustyPipeBuilder { /// Create a new, configured RustyPipe instance using a Reqwest client builder. pub fn build_with_client(self, mut client_builder: ClientBuilder) -> Result { + let user_agent = self + .user_agent + .map(Cow::Owned) + .unwrap_or(Cow::Borrowed(DEFAULT_UA)); + client_builder = client_builder - .user_agent(self.user_agent.unwrap_or_else(|| DEFAULT_UA.to_owned())) + .user_agent(user_agent.as_ref()) .gzip(true) .brotli(true) .redirect(reqwest::redirect::Policy::none()); @@ -503,6 +509,7 @@ impl RustyPipeBuilder { deobf: RwLock::new(cdata.deobf), }, default_opts: self.default_opts, + user_agent, }), }) } @@ -710,6 +717,14 @@ impl RustyPipe { } } + /// Get the internal HTTP client + /// + /// Can be used for downloading videos or custom YT requests. + #[must_use] + pub fn http_client(&self) -> &Client { + &self.inner.http + } + /// Execute the given http request. async fn http_request(&self, request: &Request) -> Result { let mut last_resp = None; @@ -963,7 +978,14 @@ impl RustyPipe { /// 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).send().await?; + 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() @@ -972,7 +994,10 @@ impl RustyPipe { .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()); + return after + .split_once(';') + .map(|s| s.0.to_owned()) + .filter(|s| !s.is_empty()); } } None @@ -1065,6 +1090,27 @@ impl RustyPipeQuery { self } + /// Get the user agent for the given client type + /// + /// This can be used for additional HTTP requests (e.g. downloading/streaming) + pub fn user_agent(&self, ctype: ClientType) -> Cow<'_, str> { + match ctype { + ClientType::Desktop | ClientType::DesktopMusic | ClientType::TvHtml5Embed => { + Cow::Borrowed(&self.client.inner.user_agent) + } + ClientType::Android => format!( + "com.google.android.youtube/{} (Linux; U; Android 12; {}) gzip", + MOBILE_CLIENT_VERSION, self.opts.country + ) + .into(), + ClientType::Ios => format!( + "com.google.ios.youtube/{} ({}; U; CPU iOS 15_4 like Mac OS X; {})", + MOBILE_CLIENT_VERSION, IOS_DEVICE_MODEL, self.opts.country + ) + .into(), + } + } + /// Create a new context object, which is included in every request to /// the YouTube API and contains language, country and device parameters. /// @@ -1227,13 +1273,6 @@ impl RustyPipeQuery { .post(format!( "{YOUTUBEI_V1_GAPIS_URL}{endpoint}?{DISABLE_PRETTY_PRINT_PARAMETER}" )) - .header( - header::USER_AGENT, - format!( - "com.google.android.youtube/{} (Linux; U; Android 12; {}) gzip", - MOBILE_CLIENT_VERSION, self.opts.country - ), - ) .header("X-Goog-Api-Format-Version", "2"), ClientType::Ios => self .client @@ -1242,15 +1281,9 @@ impl RustyPipeQuery { .post(format!( "{YOUTUBEI_V1_GAPIS_URL}{endpoint}?{DISABLE_PRETTY_PRINT_PARAMETER}" )) - .header( - header::USER_AGENT, - format!( - "com.google.ios.youtube/{} ({}; U; CPU iOS 15_4 like Mac OS X; {})", - MOBILE_CLIENT_VERSION, IOS_DEVICE_MODEL, self.opts.country - ), - ) .header("X-Goog-Api-Format-Version", "2"), }; + r = r.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); } From bbbe9b4b322c6b5b30764772e282c6823aeea524 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 27 Jul 2024 02:41:05 +0200 Subject: [PATCH 085/347] feat: add channel_id and channel_name getters to YtEntity trait --- src/model/traits.rs | 118 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 108 insertions(+), 10 deletions(-) diff --git a/src/model/traits.rs b/src/model/traits.rs index 329a01d..e493f4f 100644 --- a/src/model/traits.rs +++ b/src/model/traits.rs @@ -135,6 +135,14 @@ pub trait YtEntity { fn id(&self) -> &str; /// Name fn name(&self) -> &str; + /// Channel id + /// + /// `None` if the entity does not belong to a channel + fn channel_id(&self) -> Option<&str>; + /// Channel name + /// + /// `None` if the entity does not belong to a channel + fn channel_name(&self) -> Option<&str>; } macro_rules! yt_entity { @@ -147,6 +155,80 @@ macro_rules! yt_entity { fn name(&self) -> &str { &self.name } + + fn channel_id(&self) -> Option<&str> { + None + } + + fn channel_name(&self) -> Option<&str> { + None + } + } + }; +} + +macro_rules! yt_entity_owner { + ($entity_type:ty) => { + impl YtEntity for $entity_type { + fn id(&self) -> &str { + &self.id + } + + fn name(&self) -> &str { + &self.name + } + + fn channel_id(&self) -> Option<&str> { + Some(&self.channel.id) + } + + fn channel_name(&self) -> Option<&str> { + Some(&self.channel.name) + } + } + }; +} + +macro_rules! yt_entity_owner_opt { + ($entity_type:ty) => { + impl YtEntity for $entity_type { + fn id(&self) -> &str { + &self.id + } + + fn name(&self) -> &str { + &self.name + } + + fn channel_id(&self) -> Option<&str> { + self.channel.as_ref().map(|c| c.id.as_str()) + } + + fn channel_name(&self) -> Option<&str> { + self.channel.as_ref().map(|c| c.name.as_str()) + } + } + }; +} + +macro_rules! yt_entity_owner_music { + ($entity_type:ty) => { + impl YtEntity for $entity_type { + fn id(&self) -> &str { + &self.id + } + + fn name(&self) -> &str { + &self.name + } + + fn channel_id(&self) -> Option<&str> { + self.artists.first().and_then(|a| a.id.as_deref()) + } + + fn channel_name(&self) -> Option<&str> { + self.artists.first().map(|a| a.name.as_str()) + } } }; } @@ -159,6 +241,14 @@ impl YtEntity for VideoPlayer { fn name(&self) -> &str { &self.details.name } + + fn channel_id(&self) -> Option<&str> { + Some(&self.details.channel.id) + } + + fn channel_name(&self) -> Option<&str> { + Some(&self.details.channel.name) + } } impl YtEntity for Channel { @@ -169,26 +259,34 @@ impl YtEntity for Channel { fn name(&self) -> &str { &self.name } + + fn channel_id(&self) -> Option<&str> { + None + } + + fn channel_name(&self) -> Option<&str> { + None + } } -yt_entity! {VideoPlayerDetails} -yt_entity! {Playlist} +yt_entity_owner! {VideoPlayerDetails} +yt_entity_owner_opt! {Playlist} yt_entity! {ChannelId} -yt_entity! {VideoDetails} +yt_entity_owner! {VideoDetails} yt_entity! {ChannelTag} yt_entity! {ChannelRss} yt_entity! {ChannelRssVideo} -yt_entity! {VideoItem} +yt_entity_owner_opt! {VideoItem} yt_entity! {ChannelItem} -yt_entity! {PlaylistItem} +yt_entity_owner_opt! {PlaylistItem} yt_entity! {VideoId} -yt_entity! {TrackItem} +yt_entity_owner_music! {TrackItem} yt_entity! {ArtistItem} -yt_entity! {AlbumItem} -yt_entity! {MusicPlaylistItem} +yt_entity_owner_music! {AlbumItem} +yt_entity_owner_opt! {MusicPlaylistItem} yt_entity! {AlbumId} -yt_entity! {MusicPlaylist} -yt_entity! {MusicAlbum} +yt_entity_owner_opt! {MusicPlaylist} +yt_entity_owner_music! {MusicAlbum} yt_entity! {MusicArtist} yt_entity! {MusicGenreItem} yt_entity! {MusicGenre} From 821984bbd51d65cf96b1d14087417ef968eaf9b2 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 27 Jul 2024 03:21:48 +0200 Subject: [PATCH 086/347] feat!: make StreamFilter use Vec internally, remove lifetime --- src/param/stream_filter.rs | 61 +++++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 28 deletions(-) diff --git a/src/param/stream_filter.rs b/src/param/stream_filter.rs index 44c92b2..401f494 100644 --- a/src/param/stream_filter.rs +++ b/src/param/stream_filter.rs @@ -9,15 +9,15 @@ use crate::model::{ /// The StreamFilter is used for selecting audio/video streams from an extracted video #[derive(Debug, Default, Clone)] -pub struct StreamFilter<'a> { +pub struct StreamFilter { audio_max_bitrate: Option, - audio_formats: Option<&'a [AudioFormat]>, - audio_codecs: Option<&'a [AudioCodec]>, - audio_language: Option<&'a str>, + audio_formats: Option>, + audio_codecs: Option>, + audio_language: Option, video_max_res: Option, video_max_fps: Option, - video_formats: Option<&'a [VideoFormat]>, - video_codecs: Option<&'a [VideoCodec]>, + video_formats: Option>, + video_codecs: Option>, video_hdr: bool, video_none: bool, } @@ -64,7 +64,7 @@ impl FilterResult { } } -impl<'a> StreamFilter<'a> { +impl StreamFilter { /// Create a new [`StreamFilter`] #[must_use] pub fn new() -> Self { @@ -90,8 +90,8 @@ impl<'a> StreamFilter<'a> { /// Set the supported audio container formats #[must_use] - pub fn audio_formats(mut self, formats: &'a [AudioFormat]) -> Self { - self.audio_formats = Some(formats); + pub fn audio_formats>>(mut self, formats: F) -> Self { + self.audio_formats = Some(formats.into()); self } @@ -104,8 +104,8 @@ impl<'a> StreamFilter<'a> { /// Set the supported audio codecs #[must_use] - pub fn audio_codecs(mut self, codecs: &'a [AudioCodec]) -> Self { - self.audio_codecs = Some(codecs); + pub fn audio_codecs>>(mut self, codecs: C) -> Self { + self.audio_codecs = Some(codecs.into()); self } @@ -123,8 +123,8 @@ impl<'a> StreamFilter<'a> { /// If this filter is unset or no stream matches, /// the filter returns the default audio stream. #[must_use] - pub fn audio_language(mut self, language: &'a str) -> Self { - self.audio_language = Some(language); + pub fn audio_language>(mut self, language: S) -> Self { + self.audio_language = Some(language.into()); self } @@ -184,8 +184,8 @@ impl<'a> StreamFilter<'a> { /// Set the supported video container formats #[must_use] - pub fn video_formats(mut self, formats: &'a [VideoFormat]) -> Self { - self.video_formats = Some(formats); + pub fn video_formats>>(mut self, formats: F) -> Self { + self.video_formats = Some(formats.into()); self } @@ -198,8 +198,8 @@ impl<'a> StreamFilter<'a> { /// Set the supported video codecs #[must_use] - pub fn video_codecs(mut self, codecs: &'a [VideoCodec]) -> Self { - self.video_codecs = Some(codecs); + pub fn video_codecs>>(mut self, codecs: C) -> Self { + self.video_codecs = Some(codecs.into()); self } @@ -250,6 +250,11 @@ impl<'a> StreamFilter<'a> { ), ) } + + /// Return true if no video stream should be selected + pub fn is_video_none(&self) -> bool { + self.video_none + } } impl VideoPlayer { @@ -373,13 +378,13 @@ mod tests { #[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::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)] + #[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); @@ -395,10 +400,10 @@ mod tests { #[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::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)] + #[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); @@ -415,12 +420,12 @@ mod tests { 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::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"), 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::default().audio_formats([]).clone(), 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 )] @@ -429,7 +434,7 @@ mod tests { 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::default().audio_formats([]).video_formats([]).clone(), None, None)] fn t_select_video_audio_stream( #[case] filter: StreamFilter, #[case] expect_video_url: Option<&str>, From fb7af3b96698b452b6b24d1e094ba13a245cb83c Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 27 Jul 2024 03:23:09 +0200 Subject: [PATCH 087/347] fix: make nsig_fn regex more generic --- src/deobfuscate.rs | 73 ++++++++++++++++++++-------------------------- 1 file changed, 32 insertions(+), 41 deletions(-) diff --git a/src/deobfuscate.rs b/src/deobfuscate.rs index 59c5f99..8efada3 100644 --- a/src/deobfuscate.rs +++ b/src/deobfuscate.rs @@ -181,53 +181,44 @@ fn get_sig_fn(player_js: &str) -> Result { } fn get_nsig_fn_name(player_js: &str) -> Result { - static FUNCTION_REGEXES: Lazy<[FancyRegex; 2]> = Lazy::new(|| { - [ - FancyRegex::new( - r#"\((?[a-zA-Z0-9$_])=String\.fromCharCode\(110\),[a-zA-Z0-9$_]=[a-zA-Z0-9$_]\.get\(\k\)\)&&\([a-zA-Z0-9$_]=(?[a-zA-Z0-9$_]+)(?:\[(?\d+)])?\([a-zA-Z0-9$_]\)"#, - ) - .unwrap(), - FancyRegex::new( - r#"\.get\("n"\)\)&&\([a-zA-Z0-9$_]=(?[a-zA-Z0-9$_]+)(?:\[(?\d+)])?\([a-zA-Z0-9$_]\)"#, - ) - .unwrap(), - ] + static FUNCTION_NAME_REGEX: Lazy = Lazy::new(|| { + // x.get( .. y=functionName[array_num](z) .. x.set( + Regex::new(r#"\w\.get\(.+\w=(\w{2,})\[(\d+)\]\(\w\).+\w\.set\("#).unwrap() }); - let fname_match = FUNCTION_REGEXES - .iter() - .find_map(|pattern| pattern.captures(player_js).ok().flatten()) + let fname_match = FUNCTION_NAME_REGEX + .captures(player_js) .ok_or(DeobfError::Extraction("n_deobf function"))?; - let function_name = fname_match.name("fname").unwrap().as_str(); + let function_name = fname_match.get(1).unwrap().as_str(); - match fname_match.name("idx") { - Some(idx) => { - let array_num = idx - .as_str() - .parse::() - .or(Err(DeobfError::Other("could not parse array_num")))?; - let array_pattern_str = - format!(r#"var {}\s*=\s*\[(.+?)]"#, regex::escape(function_name)); - let array_pattern = Regex::new(&array_pattern_str).or(Err(DeobfError::Other( - "could not parse helper pattern regex", - )))?; - - let array_str = array_pattern - .captures(player_js) - .ok_or(DeobfError::Extraction("n_deobf array_str"))? - .get(1) - .unwrap() - .as_str(); - - let mut names = array_str.split(','); - let name = names - .nth(array_num) - .ok_or(DeobfError::Extraction("n_deobf function name"))?; - Ok(name.to_owned()) - } - None => Ok(function_name.to_owned()), + if fname_match.len() == 1 { + return Ok(function_name.to_owned()); } + + let array_num = fname_match + .get(2) + .unwrap() + .as_str() + .parse::() + .or(Err(DeobfError::Other("could not parse array_num")))?; + let array_pattern_str = format!(r#"var {}\s*=\s*\[(.+?)]"#, regex::escape(function_name)); + let array_pattern = Regex::new(&array_pattern_str).or(Err(DeobfError::Other( + "could not parse helper pattern regex", + )))?; + + let array_str = array_pattern + .captures(player_js) + .ok_or(DeobfError::Extraction("n_deobf array_str"))? + .get(1) + .unwrap() + .as_str(); + + let mut names = array_str.split(','); + let name = names + .nth(array_num) + .ok_or(DeobfError::Extraction("n_deobf function name"))?; + Ok(name.to_owned()) } fn extract_js_fn(js: &str, name: &str) -> Result { From 11a00383502917cd98245c3da349107289ba3aa9 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 27 Jul 2024 04:00:11 +0200 Subject: [PATCH 088/347] feat: overhauled downloader --- Cargo.toml | 2 +- cli/Cargo.toml | 1 + cli/src/main.rs | 369 +++++++++---------- downloader/src/lib.rs | 792 +++++++++++++++++++++++++++++++++-------- downloader/src/util.rs | 12 +- 5 files changed, 839 insertions(+), 337 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 2eac990..a5257ff 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -60,7 +60,7 @@ tracing = { version = "0.1.37", features = ["log"] } indicatif = "0.17.0" anyhow = "1.0" clap = { version = "4.0.29", features = ["derive"] } -tracing-subscriber = "0.3.17" +tracing-subscriber = { version = "0.3.17", features = ["env-filter"] } serde_yaml = "0.9.19" dirs = "5.0.0" filenamify = "0.1.0" diff --git a/cli/Cargo.toml b/cli/Cargo.toml index c5021aa..a4cfc9d 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -52,6 +52,7 @@ serde_json.workspace = true indicatif.workspace = true anyhow.workspace = true clap.workspace = true +tracing.workspace = true tracing-subscriber.workspace = true serde_yaml.workspace = true dirs.workspace = true diff --git a/cli/src/main.rs b/cli/src/main.rs index 138e915..cd5c6fe 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -1,18 +1,19 @@ #![warn(clippy::todo, clippy::dbg_macro)] -use std::{path::PathBuf, str::FromStr, time::Duration}; +use std::{path::PathBuf, str::FromStr}; -use anyhow::{Context, Result}; use clap::{Parser, Subcommand, ValueEnum}; use futures::stream::{self, StreamExt}; use indicatif::{MultiProgress, ProgressBar, ProgressStyle}; -use reqwest::{Client, ClientBuilder}; use rustypipe::{ client::{ClientType, RustyPipe}, model::{UrlTarget, VideoId, YouTubeItem}, param::{search_filter, ChannelVideoTab, Country, Language, StreamFilter}, }; +use rustypipe_downloader::{DownloadQuery, DownloaderBuilder}; use serde::Serialize; +use tracing::level_filters::LevelFilter; +use tracing_subscriber::{fmt::MakeWriter, EnvFilter}; #[derive(Parser)] #[clap(author, version, about, long_about = None)] @@ -33,6 +34,41 @@ struct Cli { country: Option, } +#[derive(Parser)] +#[group(multiple = false)] +struct DownloadTarget { + #[clap(short, long)] + output: Option, + #[clap(long)] + output_file: Option, + #[clap(long)] + template: Option, +} + +impl DownloadTarget { + fn assert_dir(&self) { + if self.output_file.is_some() { + panic!("Cannot download multiple videos to a single file") + } else if let Some(template) = &self.template { + if !template.contains("{id}") && !template.contains("{title}") { + panic!("Template must contain {{id}} or {{title}} variables") + } + } + } + + fn apply(&self, q: DownloadQuery) -> DownloadQuery { + if let Some(output_file) = &self.output_file { + q.to_file(output_file) + } else if let Some(output) = &self.output { + q.to_dir(output) + } else if let Some(template) = &self.template { + q.to_template(template) + } else { + q + } + } +} + #[derive(Subcommand)] enum Commands { /// Download a video, playlist, album or channel @@ -40,18 +76,22 @@ enum Commands { Download { /// ID or URL id: String, - /// Output path - #[clap(short, default_value = ".")] - output: PathBuf, + #[clap(flatten)] + target: DownloadTarget, /// Video resolution (e.g. 720, 1080). Set to 0 for audio-only. #[clap(short, long)] resolution: Option, /// Number of videos downloaded in parallel #[clap(short, long, default_value_t = 8)] parallel: usize, + /// Use YouTube Music for downloading playlists + #[clap(long)] + music: bool, /// Limit the number of videos to download #[clap(long, default_value_t = 1000)] limit: usize, + #[clap(long)] + player_type: Option, }, /// Extract video, playlist, album or channel data Get { @@ -116,6 +156,7 @@ enum Commands { #[clap(long)] music: Option, }, + Vdata, } #[derive(Copy, Clone, ValueEnum)] @@ -252,64 +293,6 @@ impl From for ClientType { } } -#[allow(clippy::too_many_arguments)] -async fn download_single_video( - video_id: &str, - video_title: &str, - output_dir: &str, - output_fname: Option, - resolution: Option, - ffmpeg: &str, - rp: &RustyPipe, - http: Client, - multi: MultiProgress, - main: Option, -) -> Result<()> { - let pb = multi.add(ProgressBar::new(1)); - pb.set_style(ProgressStyle::with_template("{msg}\n{spinner:.green} [{elapsed_precise}] [{wide_bar:.cyan/blue}] {bytes}/{total_bytes} ({bytes_per_sec}, {eta})").unwrap() - .progress_chars("#>-")); - pb.set_message(format!("Fetching player data for {video_title}")); - - let res = async { - let player_data = rp - .query() - .player(video_id) - .await - .context(format!("Failed to fetch player data for video {video_id}"))?; - - let mut filter = StreamFilter::new(); - if let Some(res) = resolution { - if res == 0 { - filter = filter.no_video(); - } else { - filter = filter.video_max_res(res); - } - } - - rustypipe_downloader::download_video( - &player_data, - output_dir, - output_fname, - None, - &filter, - ffmpeg, - http, - pb, - ) - .await - .context(format!( - "Failed to download video '{}' [{}]", - player_data.details.name, video_id - )) - } - .await; - - if let Some(main) = main { - main.inc(1); - } - res -} - fn print_data(data: &T, format: Format, pretty: bool) { let stdout = std::io::stdout().lock(); match format { @@ -327,55 +310,59 @@ fn print_data(data: &T, format: Format, pretty: bool) { async fn download_video( rp: &RustyPipe, id: &str, - output_dir: &str, - output_fname: Option, + target: &DownloadTarget, resolution: Option, + player_type: Option, + multi: MultiProgress, ) { - let http = ClientBuilder::new() - .user_agent("Mozilla/5.0 (Windows NT 10.0; Win64; rv:107.0) Gecko/20100101 Firefox/107.0") - .gzip(true) - .brotli(true) - .timeout(Duration::from_secs(10)) - .build() - .expect("unable to build the HTTP client"); - - // Indicatif setup - let multi = MultiProgress::new(); - - download_single_video( - id, - id, - output_dir, - output_fname, - resolution, - "ffmpeg", - rp, - http, - multi, - None, - ) - .await - .unwrap_or_else(|e| println!("ERROR: {e:?}")); + let mut filter = StreamFilter::new(); + if let Some(res) = resolution { + if res == 0 { + filter = filter.no_video(); + } else { + filter = filter.video_max_res(res); + } + } + let dl = DownloaderBuilder::new() + .client(rp) + .stream_filter(filter) + .progress_bar(multi) + .build(); + let mut q = target.apply(dl.download_id(id)); + if let Some(player_type) = player_type { + q = q.player_type(player_type.into()); + } + let res = q.download().await; + if let Err(e) = res { + tracing::error!("{e}") + } } async fn download_videos( rp: &RustyPipe, videos: &[VideoId], - output_dir: &str, - output_fname: Option, + target: &DownloadTarget, resolution: Option, parallel: usize, + player_type: Option, + multi: MultiProgress, ) { - let http = ClientBuilder::new() - .user_agent("Mozilla/5.0 (Windows NT 10.0; Win64; rv:107.0) Gecko/20100101 Firefox/107.0") - .gzip(true) - .brotli(true) - .timeout(Duration::from_secs(10)) - .build() - .expect("unable to build the HTTP client"); + let mut filter = StreamFilter::new(); + if let Some(res) = resolution { + if res == 0 { + filter = filter.no_video(); + } else { + filter = filter.video_max_res(res); + } + } + let dl = DownloaderBuilder::new() + .client(rp) + .stream_filter(filter) + .progress_bar(multi.clone()) + .path_precheck() + .build(); // Indicatif setup - let multi = MultiProgress::new(); let main = multi.add(ProgressBar::new( videos.len().try_into().unwrap_or_default(), )); @@ -389,38 +376,61 @@ async fn download_videos( main.tick(); stream::iter(videos) - .map(|video| { - download_single_video( - &video.id, - &video.name, - output_dir, - output_fname.clone(), - resolution, - "ffmpeg", - rp, - http.clone(), - multi.clone(), - Some(main.clone()), - ) - }) - .buffer_unordered(parallel) - .collect::>() - .await - .into_iter() - .for_each(|res| match res { - Ok(_) => {} - Err(e) => { - println!("ERROR: {e:?}"); + .for_each_concurrent(parallel, |video| { + let dl = dl.clone(); + let main = main.clone(); + + let mut q = target.apply(dl.download_entity(video)); + if let Some(player_type) = player_type { + q = q.player_type(player_type.into()); } - }); + + async move { + if let Err(e) = q.download().await { + tracing::error!("{e:?}"); + } else { + main.inc(1); + } + } + }) + .await; +} + +/// Stderr writer that suspends the progress bars before printing logs +#[derive(Clone)] +struct ProgWriter(MultiProgress); + +impl<'a> MakeWriter<'a> for ProgWriter { + type Writer = ProgWriter; + + fn make_writer(&'a self) -> Self::Writer { + self.clone() + } +} + +impl std::io::Write for ProgWriter { + fn write(&mut self, buf: &[u8]) -> std::io::Result { + self.0.suspend(|| std::io::stderr().write(buf)) + } + + fn flush(&mut self) -> std::io::Result<()> { + std::io::stderr().flush() + } } #[tokio::main] async fn main() { - // env_logger::builder().format_timestamp_micros().init(); - tracing_subscriber::fmt::init(); - let cli = Cli::parse(); + let multi = MultiProgress::new(); + + tracing_subscriber::fmt::SubscriberBuilder::default() + .with_env_filter( + EnvFilter::builder() + .with_default_directive(LevelFilter::INFO.into()) + .from_env_lossy(), + ) + .with_writer(ProgWriter(multi.clone())) + .init(); let mut rp = RustyPipe::builder().visitor_data_opt(cli.vdata); if cli.report { @@ -442,48 +452,20 @@ async fn main() { match cli.command { Commands::Download { id, - output, + target, resolution, parallel, + music, limit, + player_type, } => { - // Cases: Existing folder, non-existing file with existing parent folder, - // Error cases: non-existing parent folder, existing file - let output_path = std::fs::canonicalize(output).unwrap(); - if output_path.is_file() { - println!("Output file already exists"); - return; - } - let (output_dir, output_fname) = if output_path.is_dir() { - (output_path.to_string_lossy().to_string(), None) - } else { - let output_dir_parent = output_path.parent().unwrap(); - if !output_dir_parent.is_dir() { - println!( - "Parent folder {} does not exist", - output_dir_parent.to_string_lossy() - ); - return; - } - - ( - output_dir_parent.to_string_lossy().to_string(), - Some( - output_path - .file_name() - .unwrap() - .to_string_lossy() - .to_string(), - ), - ) - }; - - let target = rp.query().resolve_string(&id, false).await.unwrap(); - match target { + let url_target = rp.query().resolve_string(&id, false).await.unwrap(); + match url_target { UrlTarget::Video { id, .. } => { - download_video(&rp, &id, &output_dir, output_fname, resolution).await; + download_video(&rp, &id, &target, resolution, player_type, multi).await; } UrlTarget::Channel { id } => { + target.assert_dir(); let mut channel = rp.query().channel_videos(id).await.unwrap(); channel .content @@ -500,38 +482,58 @@ async fn main() { download_videos( &rp, &videos, - &output_dir, - output_fname, + &target, resolution, parallel, + player_type, + multi, ) .await; } UrlTarget::Playlist { id } => { - let mut playlist = rp.query().playlist(id).await.unwrap(); - playlist - .videos - .extend_limit(&rp.query(), limit) - .await - .unwrap(); - let videos: Vec = playlist - .videos - .items - .into_iter() - .take(limit) - .map(VideoId::from) - .collect(); + target.assert_dir(); + let videos: Vec = if music { + let mut playlist = rp.query().music_playlist(id).await.unwrap(); + playlist + .tracks + .extend_limit(&rp.query(), limit) + .await + .unwrap(); + playlist + .tracks + .items + .into_iter() + .take(limit) + .map(VideoId::from) + .collect() + } else { + let mut playlist = rp.query().playlist(id).await.unwrap(); + playlist + .videos + .extend_limit(&rp.query(), limit) + .await + .unwrap(); + playlist + .videos + .items + .into_iter() + .take(limit) + .map(VideoId::from) + .collect() + }; download_videos( &rp, &videos, - &output_dir, - output_fname, + &target, resolution, parallel, + player_type, + multi, ) .await; } UrlTarget::Album { id } => { + target.assert_dir(); let album = rp.query().music_album(id).await.unwrap(); let videos: Vec = album .tracks @@ -542,10 +544,11 @@ async fn main() { download_videos( &rp, &videos, - &output_dir, - output_fname, + &target, resolution, parallel, + player_type, + multi, ) .await; } @@ -740,5 +743,9 @@ async fn main() { print_data(&res, format, pretty); } }, + Commands::Vdata => { + let vd = rp.query().get_visitor_data().await.unwrap(); + println!("{vd}"); + } }; } diff --git a/downloader/src/lib.rs b/downloader/src/lib.rs index a706c3c..0429ef2 100644 --- a/downloader/src/lib.rs +++ b/downloader/src/lib.rs @@ -1,19 +1,31 @@ -#![warn(clippy::todo, clippy::dbg_macro)] +#![warn(missing_docs, clippy::todo, clippy::dbg_macro)] //! # YouTube audio/video downloader mod util; -use std::{borrow::Cow, cmp::Ordering, ffi::OsString, ops::Range, path::PathBuf, time::Duration}; +use std::{ + borrow::Cow, + cmp::Ordering, + ffi::OsString, + ops::Range, + path::{Path, PathBuf}, + sync::Arc, + time::Duration, +}; use futures::stream::{self, StreamExt}; -use indicatif::{ProgressBar, ProgressStyle}; +use indicatif::{MultiProgress, ProgressBar, ProgressStyle}; use once_cell::sync::Lazy; use rand::Rng; use regex::Regex; -use reqwest::{header, Client}; +use reqwest::{header, Client, StatusCode}; use rustypipe::{ - model::{traits::FileFormat, AudioCodec, VideoCodec, VideoPlayer}, + client::{ClientType, RustyPipe}, + model::{ + traits::{FileFormat, YtEntity}, + AudioCodec, VideoCodec, VideoPlayer, + }, param::StreamFilter, }; use tokio::{ @@ -21,7 +33,6 @@ use tokio::{ io::AsyncWriteExt, process::Command, }; -use tracing::{debug, info}; use util::DownloadError; @@ -30,6 +41,569 @@ type Result = core::result::Result; const CHUNK_SIZE_MIN: u64 = 9_000_000; const CHUNK_SIZE_MAX: u64 = 10_000_000; +/// RustyPipe audio/video downloader +/// +/// The downloader uses an [`Arc`] internally, so if you are using the client +/// at multiple locations, you can just clone it. +#[derive(Clone)] +pub struct Downloader { + i: Arc, +} + +/// Builder to construct a new downloader +pub struct DownloaderBuilder { + rp: Option, + ffmpeg: String, + multi: Option, + filter: StreamFilter, + video_format: DownloadVideoFormat, + n_retries: u32, + path_precheck: bool, +} + +struct DownloaderInner { + /// YT client + rp: RustyPipe, + /// Path to the ffmpeg binary + ffmpeg: String, + /// Global progress + multi: Option, + /// Default stream filter + filter: StreamFilter, + /// Default video format + video_format: DownloadVideoFormat, + /// Number of retries in case of 403 error + n_retries: u32, + /// Check if destination path exists before player is fetched + path_precheck: bool, +} + +/// Download query +pub struct DownloadQuery { + /// RustyPipe Downloader + dl: Downloader, + /// Video to download + video: DownloadVideo, + /// Destination + dest: DownloadDest, + /// Progress bar + multi: Option, + /// Stream filter + filter: Option, + /// Target video format + video_format: Option, + /// ClientType type for fetching videos + player_type: Option, +} + +#[derive(Default)] +struct DownloadVideo { + id: String, + name: Option, + channel_id: Option, + channel_name: Option, +} + +impl DownloadVideo { + fn from_video(video: &impl YtEntity) -> Self { + DownloadVideo { + id: video.id().to_owned(), + name: Some(video.name().to_owned()), + channel_id: video.channel_id().map(str::to_owned), + channel_name: video + .channel_name() + .map(|n| n.strip_suffix(" - Topic").unwrap_or(n).to_owned()), + } + } +} + +#[derive(Clone)] +enum DownloadDest { + Default, + File(PathBuf), + Dir(PathBuf), + Template(PathBuf), +} + +fn video_filename(v: &DownloadVideo) -> String { + filenamify_lim(&format!( + "{} [{}]", + v.name.as_deref().unwrap_or_default(), + v.id + )) +} + +/// Video container format for downloading +#[derive(Default, Debug, Copy, Clone, PartialEq, Eq)] +pub enum DownloadVideoFormat { + /// .mp4 + #[default] + Mp4, + /// .mkv + Mkv, + /// .webm + Webm, +} + +impl DownloadVideoFormat { + /// Get the video format file extension + pub fn extension(&self) -> &'static str { + match self { + DownloadVideoFormat::Mp4 => "mp4", + DownloadVideoFormat::Mkv => "mkv", + DownloadVideoFormat::Webm => "webm", + } + } + + /// Get the video format from the given file extension + pub fn from_extension(ext: &str) -> Option { + match ext { + "mp4" => Some(Self::Mp4), + "mkv" => Some(Self::Mkv), + "webm" => Some(Self::Webm), + _ => None, + } + } +} + +impl DownloadDest { + fn get_dest_path(&self, v: &DownloadVideo) -> PathBuf { + match self { + DownloadDest::Default => PathBuf::from(video_filename(v)), + DownloadDest::File(p) => p.clone(), + DownloadDest::Dir(p) => p.join(video_filename(v)), + DownloadDest::Template(t) => t + .iter() + .map(|part| { + let s = part.to_string_lossy(); + let mut s = s.replace("{id}", &v.id); + if let Some(name) = &v.name { + s = s.replace("{title}", name) + } + if let Some(channel) = &v.channel_name { + s = s.replace("{channel}", channel) + } + if let Some(id) = &v.channel_id { + s = s.replace("{channelId}", id); + } + filenamify_lim(&s) + }) + .collect(), + } + } +} + +impl Default for DownloaderBuilder { + fn default() -> Self { + Self { + rp: None, + ffmpeg: "ffmpeg".to_owned(), + multi: None, + filter: StreamFilter::new(), + video_format: DownloadVideoFormat::Mp4, + n_retries: 3, + path_precheck: false, + } + } +} + +impl DownloaderBuilder { + /// Create a new [`DownloaderBuilder`] + /// + /// This is the same as [`Downloader::builder`] + pub fn new() -> Self { + Self::default() + } + + /// Use a custom [`RustyPipe`] client + #[must_use] + pub fn client(mut self, rp: &RustyPipe) -> Self { + self.rp = Some(rp.clone()); + self + } + + /// Set the path to ffmpeg, used to join video and audio files + /// + /// The default system-wide `ffmpeg` binary is used by default. + #[must_use] + pub fn ffmpeg>(mut self, ffmpeg: S) -> Self { + self.ffmpeg = ffmpeg.into(); + self + } + + /// Set the indicatif [`MultiProgress`] used to show download progress + /// for all downloads + #[must_use] + pub fn progress_bar(mut self, progress: MultiProgress) -> Self { + self.multi = Some(progress); + self + } + + /// Set the default [`StreamFilter`] for all downloads. + /// + /// The filter can be overridden for individual download queries. + #[must_use] + pub fn stream_filter(mut self, filter: StreamFilter) -> Self { + self.filter = filter; + self + } + + /// Set the [`VideoFormat`] of downloaded videos + #[must_use] + pub fn video_format(mut self, video_format: DownloadVideoFormat) -> Self { + self.video_format = video_format; + self + } + + /// Set the number of retries in case a download fails with a 403 error + #[must_use] + pub fn n_retries(mut self, n_retries: u32) -> Self { + self.n_retries = n_retries; + self + } + + /// Enable path precheck + /// + /// The downloader will check if the destination path + /// (predicted from the entity to download and the StreamFilter) exists and + /// skips the download with [`DownloadError::Exists`] without fetching any player data. + /// + /// This allows fast resumption of playlist downloads. + #[must_use] + pub fn path_precheck(mut self) -> Self { + self.path_precheck = true; + self + } + + /// Create a new, configured [`Downloader`] instance + pub fn build(self) -> Downloader { + Downloader { + i: Arc::new(DownloaderInner { + rp: self.rp.unwrap_or_default(), + ffmpeg: self.ffmpeg, + multi: self.multi, + filter: self.filter, + video_format: self.video_format, + n_retries: self.n_retries, + path_precheck: self.path_precheck, + }), + } + } +} + +impl Default for Downloader { + fn default() -> Self { + DownloaderBuilder::new().build() + } +} + +impl Downloader { + /// Create a new [`Downloader`] using the given [`RustyPipe`] instance + pub fn new(rp: &RustyPipe) -> Self { + DownloaderBuilder::new().client(rp).build() + } + + /// Create a new [`DownloaderBuilder`] + /// + /// This is the same as [`DownloaderBuilder::new`] + pub fn builder() -> DownloaderBuilder { + DownloaderBuilder::default() + } + + fn query(&self, video: DownloadVideo) -> DownloadQuery { + DownloadQuery { + dl: self.clone(), + video, + dest: DownloadDest::Default, + multi: None, + filter: None, + video_format: None, + player_type: None, + } + } + + /// Download a video with the given ID + pub fn download_id>(&self, video_id: S) -> DownloadQuery { + self.query(DownloadVideo { + id: video_id.into(), + ..Default::default() + }) + } + + /// Download a video from a [`YtEntity`] object (e.g. playlist/channel video) + /// + /// 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. + pub fn download_entity(&self, video: &impl YtEntity) -> DownloadQuery { + self.query(DownloadVideo::from_video(video)) + } +} + +/// Output data from downloading a video +pub struct DownloadResult { + /// Download destination path + pub dest: PathBuf, + /// Fetched vvideo player data + pub player_data: VideoPlayer, +} + +impl DownloadQuery { + /// Update the video format from the given path extension + /// + /// The video format is not updated if it was already manually set + fn update_video_format(&mut self, path: &Path) { + if self.video_format.is_none() { + self.video_format = path + .extension() + .and_then(|ext| ext.to_str()) + .and_then(DownloadVideoFormat::from_extension); + } + } + + /// Download to the given file + /// + /// Note that the file extension may be changed to fit the reuested video/audio format. + /// Refer to the [`DownloadResult`] to get the actual path after downloading. + pub fn to_file>(mut self, file: P) -> Self { + let file = file.into(); + self.update_video_format(&file); + self.dest = DownloadDest::File(file); + self + } + + /// Download to the given directory + /// + /// The filename is created by this template: `{title} [{id}]`. + /// + /// You can use a custom filename template using [`DownloadQuery::to_template`] + pub fn to_dir>(mut self, dir: P) -> Self { + self.dest = DownloadDest::Dir(dir.into()); + self + } + + /// Download to the given filename template + /// + /// Templates are paths that may contain variables for video metadata. + /// + /// ## Variables + /// - `{id}` Video ID + /// - `{title}` Video title + /// - `{channel}` Channel name + /// - `{channel_id}` Channel ID + /// + /// Note that the file extension may be changed to fit the reuested video/audio format. + /// Refer to the [`DownloadResult`] to get the actual path after downloading. + pub fn to_template>(mut self, tmpl: P) -> Self { + let tmpl = tmpl.into(); + self.update_video_format(&tmpl); + self.dest = DownloadDest::Template(tmpl); + self + } + + /// Use a [`MultiProgress`] progress bar for all downloads + pub fn progress_bar(mut self, progress: MultiProgress) -> Self { + self.multi = Some(progress); + self + } + + /// Set a [`StreamFilter`] for choosing a stream to be downloaded + pub fn stream_filter(mut self, filter: StreamFilter) -> Self { + self.filter = Some(filter); + self + } + + /// Set the [`VideoFormat`] of downloaded videos + pub fn video_format(mut self, video_format: DownloadVideoFormat) -> Self { + self.video_format = Some(video_format); + self + } + + /// Set the [`ClientType`] used to fetch the YT player + pub fn player_type(mut self, player_type: ClientType) -> Self { + self.player_type = Some(player_type); + self + } + + /// Download the video + #[tracing::instrument(skip(self), fields(id = self.video.id))] + pub async fn download(&self) -> Result { + let mut last_err = None; + + // Progress bar + let multi = self.multi.clone().or_else(|| self.dl.i.multi.clone()); + let pb = multi.map(|m| { + let pb = ProgressBar::new(1); + pb.set_style(ProgressStyle::with_template("{msg}\n{spinner:.green} [{elapsed_precise}] [{wide_bar:.cyan/blue}] {bytes}/{total_bytes} ({bytes_per_sec}, {eta})").unwrap() + .progress_chars("#>-")); + m.add(pb) + }); + + for n in 0..=self.dl.i.n_retries { + let err = match self.download_attempt(&pb, n).await { + Ok(res) => return Ok(res), + Err(DownloadError::Http(e)) => { + if e.status() != Some(StatusCode::FORBIDDEN) { + return Err(DownloadError::Http(e)); + } + DownloadError::Http(e) + } + Err(e) => return Err(e), + }; + + if n != self.dl.i.n_retries { + tracing::warn!("Retry attempt #{}. Error: {}", n + 1, err); + tokio::time::sleep(Duration::from_secs(1)).await; + } + last_err = Some(err); + } + Err(last_err.unwrap()) + } + + async fn download_attempt(&self, pb: &Option, n: u32) -> Result { + let filter = self.filter.as_ref().unwrap_or(&self.dl.i.filter); + let video_format = self.video_format.unwrap_or(self.dl.i.video_format); + + // Check if already downloaded + if self.video.name.is_some() && self.dl.i.path_precheck { + let op = self.dest.get_dest_path(&self.video); + + if filter.is_video_none() { + for ext in ["m4a", "opus"] { + let p = op.with_extension(ext); + if p.is_file() { + return Err(DownloadError::Exists(p)); + } + } + } else { + let p = op.with_extension(video_format.extension()); + if p.is_file() { + return Err(DownloadError::Exists(p)); + } + } + } + + let attempt_suffix = if n > 0 { + format!(" (retry #{n})") + } else { + String::new() + }; + if let Some(pb) = pb { + pb.set_message(format!( + "Fetching player data for {}{}", + self.video.name.as_deref().unwrap_or_default(), + attempt_suffix + )) + } + + let q = self.dl.i.rp.query(); + let player_data = match self.player_type { + Some(player_type) => q.player_from_client(&self.video.id, player_type).await?, + None => q.player(&self.video.id).await?, + }; + let user_agent = q.user_agent(player_data.client_type); + + // Select streams to download + let (video, audio) = player_data.select_video_audio_stream(filter); + + if video.is_none() && audio.is_none() { + return Err(DownloadError::Input("no stream found".into())); + } + + let extension = match video { + Some(_) => video_format.extension(), + None => match audio { + Some(audio) => match audio.codec { + AudioCodec::Mp4a => "m4a", + AudioCodec::Opus => "opus", + _ => return Err(DownloadError::Input("unknown audio codec".into())), + }, + None => unreachable!(), + }, + }; + + let pv = DownloadVideo::from_video(&player_data); + let output_path = self.dest.get_dest_path(&pv).with_extension(extension); + + if output_path.exists() { + return Err(DownloadError::Exists(output_path)); + } + if let Some(parent) = output_path.parent() { + std::fs::create_dir_all(parent)?; + } + + let mut downloads: Vec = Vec::new(); + + if let Some(v) = video { + downloads.push(StreamDownload { + file: output_path.with_extension(format!("video{}", v.format.extension())), + url: v.url.clone(), + video_codec: Some(v.codec), + audio_codec: None, + }); + } + if let Some(a) = audio { + downloads.push(StreamDownload { + file: output_path.with_extension(format!("audio{}", a.format.extension())), + url: a.url.clone(), + video_codec: None, + audio_codec: Some(a.codec), + }); + } + + if let Some(pb) = pb { + pb.set_message(format!( + "Downloading {}{}", + player_data.name(), + attempt_suffix + )) + } + download_streams( + &downloads, + self.dl.i.rp.http_client(), + &user_agent, + pb.clone(), + ) + .await?; + + if let Some(pb) = &pb { + pb.set_message(format!("Converting {}", player_data.name())); + pb.set_style( + ProgressStyle::with_template("{msg}\n{spinner:.green} [{elapsed_precise}]") + .unwrap(), + ); + pb.enable_steady_tick(Duration::from_millis(500)); + } + + convert_streams( + &downloads, + &output_path, + &self.dl.i.ffmpeg, + player_data.name(), + ) + .await?; + if let Some(pb) = pb { + pb.disable_steady_tick(); + } + + // Delete original files + stream::iter(&downloads) + .map(|d| fs::remove_file(d.file.clone())) + .buffer_unordered(downloads.len()) + .collect::>() + .await + .into_iter() + .collect::>()?; + + if let Some(pb) = pb { + pb.finish_and_clear(); + } + Ok(DownloadResult { + dest: output_path, + player_data, + }) + } +} + fn get_download_range(offset: u64, size: Option) -> Range { let mut rng = rand::thread_rng(); let chunk_size = rng.gen_range(CHUNK_SIZE_MIN..CHUNK_SIZE_MAX); @@ -64,11 +638,26 @@ fn parse_cr_header(cr_header: &str) -> Result<(u64, u64)> { )) } +fn filenamify_lim(name: &str) -> String { + let lim = 200; + let n = filenamify::filenamify(name); + + if n.len() > lim { + n.char_indices() + .take_while(|(i, _)| i < &lim) + .map(|(_, c)| c) + .collect::() + } else { + n + } +} + async fn download_single_file>( url: &str, output: P, - http: Client, - pb: ProgressBar, + http: &Client, + user_agent: &str, + pb: Option, ) -> Result<()> { // Check if file is already downloaded let output_path: PathBuf = output.into(); @@ -99,6 +688,7 @@ async fn download_single_file>( let res = http .head(url.to_owned()) + .header(header::USER_AGENT, user_agent) .header(header::RANGE, "bytes=0-0") .send() .await? @@ -125,8 +715,10 @@ async fn download_single_file>( size = Some(original_size); offset = file_size; - pb.inc_length(original_size); - pb.inc(offset); + if let Some(pb) = &pb { + pb.inc_length(original_size); + pb.inc(offset); + } } Ordering::Equal => { // Already downloaded @@ -153,9 +745,10 @@ async fn download_single_file>( .await?; if is_gvideo && size.is_some() { - download_chunks_by_param(http, &mut file, url, size.unwrap(), offset, pb).await?; + download_chunks_by_param(http, &mut file, url, size.unwrap(), offset, user_agent, pb) + .await?; } else { - download_chunks_by_header(http, &mut file, url, size, offset, pb).await?; + download_chunks_by_header(http, &mut file, url, size, offset, user_agent, pb).await?; } fs::rename(&output_path_tmp, &output_path).await?; @@ -166,22 +759,24 @@ async fn download_single_file>( // This is the standardized method that works on all web servers, // but I have observed throttling using this method. async fn download_chunks_by_header( - http: Client, + http: &Client, file: &mut File, url: &str, size: Option, offset: u64, - pb: ProgressBar, + user_agent: &str, + pb: Option, ) -> Result<()> { let mut offset = offset; let mut size = size; loop { let range = get_download_range(offset, size); - debug!("Fetching range {}-{}", range.start, range.end); + tracing::debug!("Fetching range {}-{}", range.start, range.end); let res = http .get(url.to_owned()) + .header(header::USER_AGENT, user_agent) .header(header::ORIGIN, "https://www.youtube.com") .header(header::REFERER, "https://www.youtube.com/") .header( @@ -211,15 +806,19 @@ async fn download_chunks_by_header( offset = parsed_offset + 1; if size.is_none() { size = Some(parsed_size); - pb.inc_length(parsed_size); + if let Some(pb) = &pb { + pb.inc_length(parsed_size); + } } - debug!("Retrieving chunks..."); + tracing::debug!("Retrieving chunks..."); let mut stream = res.bytes_stream(); while let Some(item) = stream.next().await { // Retrieve chunk. let mut chunk = item?; - pb.inc(chunk.len() as u64); + if let Some(pb) = &pb { + pb.inc(chunk.len() as u64); + } file.write_all_buf(&mut chunk).await?; } @@ -234,22 +833,26 @@ async fn download_chunks_by_header( // This ist used by YouTube's web player. The file size // must be known beforehand (it is included in the stream url). async fn download_chunks_by_param( - http: Client, + http: &Client, file: &mut File, url: &str, size: u64, offset: u64, - pb: ProgressBar, + user_agent: &str, + pb: Option, ) -> Result<()> { let mut offset = offset; - pb.inc_length(size); + if let Some(pb) = &pb { + pb.inc_length(size); + } loop { let range = get_download_range(offset, Some(size)); - debug!("Fetching range {}-{}", range.start, range.end); + tracing::debug!("Fetching range {}-{}", range.start, range.end); let res = http .get(format!("{}&range={}-{}", url, range.start, range.end)) + .header(header::USER_AGENT, user_agent) .header(header::ORIGIN, "https://www.youtube.com") .header(header::REFERER, "https://www.youtube.com/") .send() @@ -258,17 +861,19 @@ async fn download_chunks_by_param( let clen = res.content_length().unwrap(); - debug!("Retrieving chunks..."); + tracing::debug!("Retrieving chunks..."); let mut stream = res.bytes_stream(); while let Some(item) = stream.next().await { // Retrieve chunk. let mut chunk = item?; - pb.inc(chunk.len() as u64); + if let Some(pb) = &pb { + pb.inc(chunk.len() as u64); + } file.write_all_buf(&mut chunk).await?; } offset += clen; - debug!("offset inc by {}, new: {}", clen, offset); + tracing::debug!("offset inc by {}, new: {}", clen, offset); if offset >= size { break; } @@ -279,146 +884,21 @@ async fn download_chunks_by_param( #[allow(dead_code)] struct StreamDownload { file: PathBuf, - // track_name: String TODO: add for multiple audio languages, url: String, audio_codec: Option, video_codec: Option, } -#[allow(clippy::too_many_arguments)] -pub async fn download_video( - player_data: &VideoPlayer, - output_dir: &str, - output_fname: Option, - output_format: Option, - filter: &StreamFilter<'_>, - ffmpeg: &str, - http: Client, - pb: ProgressBar, -) -> Result<()> { - // Download filepath - let download_dir = PathBuf::from(output_dir); - let title = player_data.details.name.clone(); - let output_fname_set = output_fname.is_some(); - let output_fname = output_fname.unwrap_or_else(|| { - filenamify::filenamify(format!("{} [{}]", title, player_data.details.id)) - }); - - // Select streams to download - let (video, audio) = player_data.select_video_audio_stream(filter); - - if video.is_none() && audio.is_none() { - return Err(DownloadError::Input("no stream found".into())); - } - - let format = output_format.unwrap_or( - match video { - Some(_) => "mp4", - None => match audio { - Some(audio) => match audio.codec { - AudioCodec::Mp4a => "m4a", - AudioCodec::Opus => "opus", - _ => return Err(DownloadError::Input("unknown audio codec".into())), - }, - None => unreachable!(), - }, - } - .to_owned(), - ); - - let output_path = download_dir.join(&output_fname).with_extension(&format); - if output_path.exists() { - // If the downloaded video already exists, only error if the download path was - // chosen explicitly. - if output_fname_set { - return Err(DownloadError::Input( - format!("File {} already exists", output_path.to_string_lossy()).into(), - ))?; - } - info!( - "Downloaded video {} already exists", - output_path.to_string_lossy() - ); - return Ok(()); - } - - match (video, audio) { - // Downloading combined video/audio stream (no conversion) - (Some(video), None) => { - pb.set_message(format!("Downloading {title}")); - download_single_file( - &video.url, - download_dir.join(output_fname).with_extension(&format), - http, - pb.clone(), - ) - .await?; - } - // Downloading split video/audio streams (requires conversion with ffmpeg) - _ => { - let mut downloads: Vec = Vec::new(); - - if let Some(v) = video { - downloads.push(StreamDownload { - file: download_dir.join(format!( - "{}.video{}", - output_fname, - v.format.extension() - )), - url: v.url.clone(), - video_codec: Some(v.codec), - audio_codec: None, - }); - } - if let Some(a) = audio { - downloads.push(StreamDownload { - file: download_dir.join(format!( - "{}.audio{}", - output_fname, - a.format.extension() - )), - url: a.url.clone(), - video_codec: None, - audio_codec: Some(a.codec), - }); - } - - pb.set_message(format!("Downloading {title}")); - download_streams(&downloads, http, pb.clone()).await?; - - pb.set_message(format!("Converting {title}")); - pb.set_style( - ProgressStyle::with_template("{msg}\n{spinner:.green} [{elapsed_precise}]") - .unwrap(), - ); - pb.enable_steady_tick(Duration::from_millis(100)); - convert_streams(&downloads, output_path, ffmpeg).await?; - pb.disable_steady_tick(); - - // Delete original files - stream::iter(&downloads) - .map(|d| fs::remove_file(d.file.clone())) - .buffer_unordered(downloads.len()) - .collect::>() - .await - .into_iter() - .collect::>()?; - } - } - - pb.finish_and_clear(); - Ok(()) -} - async fn download_streams( downloads: &Vec, - http: Client, - pb: ProgressBar, + http: &Client, + user_agent: &str, + pb: Option, ) -> Result<()> { let n = downloads.len(); stream::iter(downloads) - .map(|d| download_single_file(&d.url, d.file.clone(), http.clone(), pb.clone())) + .map(|d| download_single_file(&d.url, d.file.clone(), http, user_agent, pb.clone())) .buffer_unordered(n) .collect::>() .await @@ -432,6 +912,7 @@ async fn convert_streams>( downloads: &[StreamDownload], output: P, ffmpeg: &str, + title: &str, ) -> Result<()> { let output_path: PathBuf = output.into(); @@ -451,6 +932,9 @@ async fn convert_streams>( args.push("-c".into()); args.push("copy".into()); + args.push("-metadata".into()); + args.push(format!("title={title}").into()); + args.push(output_path.into()); let res = Command::new(ffmpeg).args(args).output().await?; diff --git a/downloader/src/util.rs b/downloader/src/util.rs index c805afd..d95b8f0 100644 --- a/downloader/src/util.rs +++ b/downloader/src/util.rs @@ -1,4 +1,4 @@ -use std::{borrow::Cow, collections::BTreeMap}; +use std::{borrow::Cow, collections::BTreeMap, path::PathBuf}; use reqwest::Url; @@ -6,18 +6,28 @@ use reqwest::Url; #[derive(thiserror::Error, Debug)] #[non_exhaustive] pub enum DownloadError { + /// RustyPipe error + #[error("{0}")] + RustyPipe(#[from] rustypipe::error::Error), /// Error from the HTTP client #[error("http error: {0}")] Http(#[from] reqwest::Error), /// File IO error #[error(transparent)] Io(#[from] std::io::Error), + /// FFmpeg returned an error #[error("FFmpeg error: {0}")] Ffmpeg(Cow<'static, str>), + /// Error parsing ranges for progressive download #[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>), + /// Download target already exists + #[error("file {0} already exists")] + Exists(PathBuf), + /// Other error #[error("error: {0}")] Other(Cow<'static, str>), } From 8152ce6b088b57be9b8419b754aca93805e5f34d Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 29 Jul 2024 14:45:52 +0200 Subject: [PATCH 089/347] fix: improve deobfuscator (support multiple nsig name matches, error if mapping all streams fails) Since YouTube keeps changing the nsig function signature and a generic regex may match at multiple places, I changed the extraction logic to search for multiple matches if necessary and test the extracted deobfuscation functions. I also found out that if the deobfuscation fails for all streams, fetching the player still returns a successful result with no streams, suggesting that the video is not available. So I changed the mapper to throw an ExtractionError if no streams are mapped successfully. --- Cargo.toml | 2 + src/client/player.rs | 547 +++++++++++++++++++++++-------------------- src/deobfuscate.rs | 155 ++++++------ src/util/mod.rs | 41 ++++ 4 files changed, 414 insertions(+), 331 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index a5257ff..44b96ac 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -70,6 +70,7 @@ rstest = "0.21.0" tokio-test = "0.4.2" insta = { version = "1.17.1", features = ["ron", "redactions"] } path_macro = "1.0.0" +tracing-test = "0.2.5" # Included crates rustypipe = { path = ".", version = "0.2.0", default-features = false } @@ -115,3 +116,4 @@ rstest.workspace = true tokio-test.workspace = true insta.workspace = true path_macro.workspace = true +tracing-test.workspace = true diff --git a/src/client/player.rs b/src/client/player.rs index e7a0751..dbe68bf 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -20,7 +20,10 @@ use crate::{ }; use super::{ - response::{self, player}, + response::{ + self, + player::{self, Format}, + }, ClientType, MapRespCtx, MapResponse, MapResult, RustyPipeQuery, YTContext, }; @@ -150,7 +153,6 @@ impl MapResponse for response::Player { self, ctx: &MapRespCtx<'_>, ) -> Result, ExtractionError> { - let deobf = Deobfuscator::new(ctx.deobf.unwrap())?; let mut warnings = vec![]; // Check playability status @@ -220,7 +222,7 @@ impl MapResponse for response::Player { } }; - let mut streaming_data = + let streaming_data = self.streaming_data .ok_or(ExtractionError::InvalidData(Cow::Borrowed( "no streaming data", @@ -254,47 +256,16 @@ impl MapResponse for response::Player { is_live_content: video_details.is_live_content, }; - let mut formats = streaming_data.formats.c; - formats.append(&mut streaming_data.adaptive_formats.c); - - let mut video_streams: Vec = Vec::new(); - let mut video_only_streams: Vec = Vec::new(); - let mut audio_streams: Vec = Vec::new(); - - if !is_live { - let mut last_nsig: [String; 2] = [String::new(), String::new()]; - - warnings.append(&mut streaming_data.formats.warnings); - warnings.append(&mut streaming_data.adaptive_formats.warnings); - - for f in formats { - if f.format_type == player::FormatType::FormatStreamTypeOtf { - continue; - } - - match (f.is_video(), f.is_audio()) { - (true, true) => match map_video_stream(f, &deobf, &mut last_nsig) { - Ok(c) => video_streams.push(c), - Err(e) => warnings.push(e.to_string()), - }, - (true, false) => match map_video_stream(f, &deobf, &mut last_nsig) { - Ok(c) => video_only_streams.push(c), - Err(e) => warnings.push(e.to_string()), - }, - (false, true) => { - match map_audio_stream(f, &deobf, &mut last_nsig, &mut warnings) { - Ok(c) => audio_streams.push(c), - Err(e) => warnings.push(e.to_string()), - } - } - (false, false) => warnings.push(format!("invalid stream: itag {}", f.itag)), - } - } - } - - video_streams.sort_by(QualityOrd::quality_cmp); - video_only_streams.sort_by(QualityOrd::quality_cmp); - audio_streams.sort_by(QualityOrd::quality_cmp); + let streams = if !is_live { + let mut mapper = StreamsMapper::new(Deobfuscator::new(ctx.deobf.unwrap())?); + mapper.map_streams(streaming_data.formats); + mapper.map_streams(streaming_data.adaptive_formats); + let mut res = mapper.output()?; + warnings.append(&mut res.warnings); + res.c + } else { + Streams::default() + }; let subtitles = self.captions.map_or(Vec::new(), |captions| { captions @@ -363,9 +334,9 @@ impl MapResponse for response::Player { Ok(MapResult { c: VideoPlayer { details: video_info, - video_streams, - video_only_streams, - audio_streams, + video_streams: streams.video_streams, + video_only_streams: streams.video_only_streams, + audio_streams: streams.audio_streams, subtitles, expires_in_seconds: streaming_data.expires_in_seconds, hls_manifest_url: streaming_data.hls_manifest_url, @@ -382,51 +353,283 @@ impl MapResponse for response::Player { } } -fn cipher_to_url_params( - signature_cipher: &str, - deobf: &Deobfuscator, -) -> Result<(Url, BTreeMap), DeobfError> { - let params: HashMap, Cow> = - url::form_urlencoded::parse(signature_cipher.as_bytes()).collect(); - - // Parameters: - // `s`: Obfuscated signature - // `sp`: Signature parameter - // `url`: URL that is missing the signature parameter - - let sig = params.get("s").ok_or(DeobfError::Extraction("s param"))?; - let sp = params.get("sp").ok_or(DeobfError::Extraction("sp param"))?; - let raw_url = params - .get("url") - .ok_or(DeobfError::Extraction("no url param"))?; - let (url_base, mut url_params) = - util::url_to_params(raw_url).or(Err(DeobfError::Extraction("url params")))?; - - let deobf_sig = deobf.deobfuscate_sig(sig)?; - url_params.insert(sp.to_string(), deobf_sig); - - Ok((url_base, url_params)) +struct StreamsMapper { + deobf: Deobfuscator, + streams: Streams, + warnings: Vec, + /// First stream mapping error + first_err: Option, + /// Last obfuscated nsig parameter (cache) + last_nsig: String, + /// Last deobfuscated nsig parameter + last_nsig_deobf: String, } -fn deobf_nsig( - url_params: &mut BTreeMap, - deobf: &Deobfuscator, - last_nsig: &mut [String; 2], -) -> Result<(), DeobfError> { - let nsig: String; - if let Some(n) = url_params.get("n") { - nsig = if n == &last_nsig[0] { - last_nsig[1].clone() - } else { - let nsig = deobf.deobfuscate_nsig(n)?; - last_nsig[0] = n.to_string(); - last_nsig[1].clone_from(&nsig); - nsig +#[derive(Default)] +struct Streams { + video_streams: Vec, + video_only_streams: Vec, + audio_streams: Vec, +} + +impl StreamsMapper { + fn new(deobf: Deobfuscator) -> Self { + 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>) { + self.warnings.append(&mut streams.warnings); + + let map_e = |m: &mut Self, e: ExtractionError| { + m.warnings.push(e.to_string()); + if m.first_err.is_none() { + m.first_err = Some(e); + } }; - url_params.insert("n".to_owned(), nsig); - }; - Ok(()) + for f in streams.c { + if f.format_type == player::FormatType::FormatStreamTypeOtf { + continue; + } + + match (f.is_video(), f.is_audio()) { + (true, true) => match self.map_video_stream(f) { + Ok(c) => self.streams.video_streams.push(c), + Err(e) => map_e(self, e), + }, + (true, false) => match self.map_video_stream(f) { + Ok(c) => self.streams.video_only_streams.push(c), + Err(e) => map_e(self, e), + }, + (false, true) => match self.map_audio_stream(f) { + Ok(c) => self.streams.audio_streams.push(c), + Err(e) => map_e(self, e), + }, + (false, false) => self + .warnings + .push(format!("invalid stream: itag {}", f.itag)), + } + } + } + + fn output(mut self) -> Result, ExtractionError> { + // If we did not extract any streams and there were mapping errors, fail with the first error + if self.streams.video_streams.is_empty() + && (self.streams.video_only_streams.is_empty() || self.streams.audio_streams.is_empty()) + { + if let Some(e) = self.first_err { + return Err(e); + } + } + + self.streams.video_streams.sort_by(QualityOrd::quality_cmp); + self.streams + .video_only_streams + .sort_by(QualityOrd::quality_cmp); + self.streams.audio_streams.sort_by(QualityOrd::quality_cmp); + + Ok(MapResult { + c: self.streams, + warnings: self.warnings, + }) + } + + fn cipher_to_url_params( + &self, + signature_cipher: &str, + ) -> Result<(Url, BTreeMap), DeobfError> { + let params: HashMap, Cow> = + url::form_urlencoded::parse(signature_cipher.as_bytes()).collect(); + + // Parameters: + // `s`: Obfuscated signature + // `sp`: Signature parameter + // `url`: URL that is missing the signature parameter + + let sig = params.get("s").ok_or(DeobfError::Extraction("s param"))?; + let sp = params.get("sp").ok_or(DeobfError::Extraction("sp param"))?; + let raw_url = params + .get("url") + .ok_or(DeobfError::Extraction("no url param"))?; + 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)?; + url_params.insert(sp.to_string(), deobf_sig); + + Ok((url_base, url_params)) + } + + fn deobf_nsig(&mut self, url_params: &mut BTreeMap) -> Result<(), DeobfError> { + if let Some(n) = url_params.get("n") { + let nsig = if n == &self.last_nsig { + self.last_nsig_deobf.to_owned() + } else { + let nsig = self.deobf.deobfuscate_nsig(n)?; + self.last_nsig.clone_from(n); + self.last_nsig_deobf.clone_from(&nsig); + nsig + }; + + url_params.insert("n".to_owned(), nsig); + }; + Ok(()) + } + + fn map_url( + &mut self, + url: &Option, + signature_cipher: &Option, + ) -> Result { + let (url_base, mut url_params) = + match url { + Some(url) => util::url_to_params(url).map_err(|_| { + ExtractionError::InvalidData(format!("Could not parse url `{url}`").into()) + }), + None => match signature_cipher { + Some(signature_cipher) => { + self.cipher_to_url_params(signature_cipher).map_err(|e| { + ExtractionError::InvalidData( + format!("Could not deobfuscate signatureCipher `{signature_cipher}`: {e}") + .into(), + ) + }) + } + None => Err(ExtractionError::InvalidData( + "stream contained neither url or cipher".into(), + )), + }, + }?; + + self.deobf_nsig(&mut url_params)?; + let url = Url::parse_with_params(url_base.as_str(), url_params.iter()) + .map_err(|_| ExtractionError::InvalidData("could not combine URL".into()))?; + + Ok(UrlMapRes { + url: url.to_string(), + xtags: url_params.get("xtags").cloned(), + }) + } + + fn map_video_stream(&mut self, f: player::Format) -> Result { + let Some((mtype, codecs)) = parse_mime(&f.mime_type) else { + return Err(ExtractionError::InvalidData( + format!( + "Invalid mime type `{}` in video format {:?}", + &f.mime_type, &f + ) + .into(), + )); + }; + let Some(format) = get_video_format(mtype) else { + return Err(ExtractionError::InvalidData( + format!("invalid video format. itag: {}", f.itag).into(), + )); + }; + let map_res = self.map_url(&f.url, &f.signature_cipher)?; + + Ok(VideoStream { + url: map_res.url, + itag: f.itag, + bitrate: f.bitrate, + average_bitrate: f.average_bitrate.unwrap_or(f.bitrate), + size: f.content_length, + index_range: f.index_range, + init_range: f.init_range, + duration_ms: f.approx_duration_ms, + // Note that the format has already been verified using + // is_video(), so these unwraps are safe + width: f.width.unwrap(), + height: f.height.unwrap(), + fps: f.fps.unwrap(), + quality: f.quality_label.unwrap(), + hdr: f.color_info.unwrap_or_default().primaries + == player::Primaries::ColorPrimariesBt2020, + format, + codec: get_video_codec(codecs), + mime: f.mime_type, + }) + } + + fn map_audio_stream(&mut self, f: player::Format) -> Result { + let Some((mtype, codecs)) = parse_mime(&f.mime_type) else { + return Err(ExtractionError::InvalidData( + format!( + "Invalid mime type `{}` in video format {:?}", + &f.mime_type, &f + ) + .into(), + )); + }; + let format = get_audio_format(mtype).ok_or_else(|| { + ExtractionError::InvalidData(format!("invalid audio format. itag: {}", f.itag).into()) + })?; + let map_res = self.map_url(&f.url, &f.signature_cipher)?; + + Ok(AudioStream { + url: map_res.url, + itag: f.itag, + bitrate: f.bitrate, + average_bitrate: f.average_bitrate.unwrap_or(f.bitrate), + size: f.content_length.unwrap(), + index_range: f.index_range, + init_range: f.init_range, + duration_ms: f.approx_duration_ms, + format, + codec: get_audio_codec(codecs), + mime: f.mime_type, + channels: f.audio_channels, + loudness_db: f.loudness_db, + track: f + .audio_track + .map(|t| self.map_audio_track(t, map_res.xtags)), + }) + } + + fn map_audio_track( + &mut self, + track: response::player::AudioTrack, + xtags: Option, + ) -> AudioTrack { + let mut lang = None; + let mut track_type = None; + + if let Some(xtags) = xtags { + xtags + .split(':') + .filter_map(|param| param.split_once('=')) + .for_each(|(k, v)| match k { + "lang" => { + lang = Some(v.to_owned()); + } + "acont" => match serde_plain::from_str(v) { + Ok(v) => { + track_type = Some(v); + } + Err(_) => { + self.warnings + .push(format!("could not parse audio track type `{v}`")); + } + }, + _ => {} + }); + } + + AudioTrack { + id: track.id, + lang, + lang_name: track.display_name, + is_default: track.audio_is_default, + track_type, + } + } } struct UrlMapRes { @@ -434,122 +637,6 @@ struct UrlMapRes { xtags: Option, } -fn map_url( - url: &Option, - signature_cipher: &Option, - deobf: &Deobfuscator, - last_nsig: &mut [String; 2], -) -> Result { - let (url_base, mut url_params) = match url { - Some(url) => util::url_to_params(url).map_err(|_| { - ExtractionError::InvalidData(format!("Could not parse url `{url}`").into()) - }), - None => match signature_cipher { - Some(signature_cipher) => cipher_to_url_params(signature_cipher, deobf).map_err(|e| { - ExtractionError::InvalidData( - format!("Could not deobfuscate signatureCipher `{signature_cipher}`: {e}") - .into(), - ) - }), - None => Err(ExtractionError::InvalidData( - "stream contained neither url or cipher".into(), - )), - }, - }?; - - deobf_nsig(&mut url_params, deobf, last_nsig)?; - let url = Url::parse_with_params(url_base.as_str(), url_params.iter()) - .map_err(|_| ExtractionError::InvalidData("could not combine URL".into()))?; - - Ok(UrlMapRes { - url: url.to_string(), - xtags: url_params.get("xtags").cloned(), - }) -} - -fn map_video_stream( - f: player::Format, - deobf: &Deobfuscator, - last_nsig: &mut [String; 2], -) -> Result { - let Some((mtype, codecs)) = parse_mime(&f.mime_type) else { - return Err(ExtractionError::InvalidData( - format!( - "Invalid mime type `{}` in video format {:?}", - &f.mime_type, &f - ) - .into(), - )); - }; - let Some(format) = get_video_format(mtype) else { - return Err(ExtractionError::InvalidData( - format!("invalid video format. itag: {}", f.itag).into(), - )); - }; - let map_res = map_url(&f.url, &f.signature_cipher, deobf, last_nsig)?; - - Ok(VideoStream { - url: map_res.url, - itag: f.itag, - bitrate: f.bitrate, - average_bitrate: f.average_bitrate.unwrap_or(f.bitrate), - size: f.content_length, - index_range: f.index_range, - init_range: f.init_range, - duration_ms: f.approx_duration_ms, - // Note that the format has already been verified using - // is_video(), so these unwraps are safe - width: f.width.unwrap(), - height: f.height.unwrap(), - fps: f.fps.unwrap(), - quality: f.quality_label.unwrap(), - hdr: f.color_info.unwrap_or_default().primaries == player::Primaries::ColorPrimariesBt2020, - format, - codec: get_video_codec(codecs), - mime: f.mime_type, - }) -} - -fn map_audio_stream( - f: player::Format, - deobf: &Deobfuscator, - last_nsig: &mut [String; 2], - warnings: &mut Vec, -) -> Result { - let Some((mtype, codecs)) = parse_mime(&f.mime_type) else { - return Err(ExtractionError::InvalidData( - format!( - "Invalid mime type `{}` in video format {:?}", - &f.mime_type, &f - ) - .into(), - )); - }; - let format = get_audio_format(mtype).ok_or_else(|| { - ExtractionError::InvalidData(format!("invalid audio format. itag: {}", f.itag).into()) - })?; - let map_res = map_url(&f.url, &f.signature_cipher, deobf, last_nsig)?; - - Ok(AudioStream { - url: map_res.url, - itag: f.itag, - bitrate: f.bitrate, - average_bitrate: f.average_bitrate.unwrap_or(f.bitrate), - size: f.content_length.unwrap(), - index_range: f.index_range, - init_range: f.init_range, - duration_ms: f.approx_duration_ms, - format, - codec: get_audio_codec(codecs), - mime: f.mime_type, - channels: f.audio_channels, - loudness_db: f.loudness_db, - track: f - .audio_track - .map(|t| map_audio_track(t, map_res.xtags, warnings)), - }) -} - fn parse_mime(mime: &str) -> Option<(&str, Vec<&str>)> { static PATTERN: Lazy = Lazy::new(|| Regex::new(r#"(\w+/\w+);\scodecs="([a-zA-Z-0-9.,\s]*)""#).unwrap()); @@ -609,43 +696,6 @@ fn get_audio_codec(codecs: Vec<&str>) -> AudioCodec { AudioCodec::Unknown } -fn map_audio_track( - track: response::player::AudioTrack, - xtags: Option, - warnings: &mut Vec, -) -> AudioTrack { - let mut lang = None; - let mut track_type = None; - - if let Some(xtags) = xtags { - xtags - .split(':') - .filter_map(|param| param.split_once('=')) - .for_each(|(k, v)| match k { - "lang" => { - lang = Some(v.to_owned()); - } - "acont" => match serde_plain::from_str(v) { - Ok(v) => { - track_type = Some(v); - } - Err(_) => { - warnings.push(format!("could not parse audio track type `{v}`")); - } - }, - _ => {} - }); - } - - AudioTrack { - id: track.id, - lang, - lang_name: track.display_name, - is_default: track.audio_is_default, - track_type, - } -} - #[cfg(test)] mod tests { use std::{fs::File, io::BufReader}; @@ -711,16 +761,11 @@ 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 last_nsig: [String; 2] = [String::new(), String::new()]; - let deobf = Deobfuscator::new(&DEOBF_DATA).unwrap(); - let url = map_url( - &None, - &Some(signature_cipher.to_owned()), - &deobf, - &mut last_nsig, - ) - .unwrap() - .url; + let mut mapper = StreamsMapper::new(Deobfuscator::new(&DEOBF_DATA).unwrap()); + let url = mapper + .map_url(&None, &Some(signature_cipher.to_owned())) + .unwrap() + .url; assert_eq!(url, "https://rr5---sn-h0jelnez.googlevideo.com/videoplayback?c=WEB&clen=3781277&dur=229.301&ei=vb7nYvH5BMK8gAfBj7ToBQ&expire=1659376413&fexp=24001373%2C24007246&fvip=5&gir=yes&id=o-AB_BABwrXZJN428ZwDxq5ScPn2AbcGODnRlTVhCQ3mj2&initcwndbps=1588750&ip=2003%3Ade%3Aaf06%3A6300%3Ac750%3A1b77%3Ac74a%3A80e3&itag=251&keepalive=yes&lmt=1655510291473933&lsig=AG3C_xAwRQIgCKCGJ1iu4wlaGXy3jcJyU3inh9dr1FIfqYOZEG_MdmACIQCbungkQYFk7EhD6K2YvLaHFMjKOFWjw001_tLb0lPDtg%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=hH&mime=audio%2Fwebm&mm=31%2C26&mn=sn-h0jelnez%2Csn-4g5ednsl&ms=au%2Conr&mt=1659354538&mv=m&mvi=5&n=XzXGSfGusw6OCQ&ns=b_Mq_qlTFcSGlG9RpwpM9xQH&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAPIsKd7-xi4xVHEC9gb__dU4hzfzsHEj9ytd3nt0gEceAiACJWBcw-wFEq9qir35bwKHJZxtQ9mOL7SKiVkLQNDa6A%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&spc=lT-Khi831z8dTejFIRCvCEwx_6romtM&txp=4532434&vprv=1"); } diff --git a/src/deobfuscate.rs b/src/deobfuscate.rs index 8efada3..58e2924 100644 --- a/src/deobfuscate.rs +++ b/src/deobfuscate.rs @@ -84,28 +84,19 @@ impl Deobfuscator { /// 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, vec![sig])?; + let res = self.ctx.call_function(DEOBF_SIG_FUNC_NAME, [sig])?; - res.as_str().map_or( - Err(DeobfError::Other("sig deobfuscation func returned null")), - |res| { - tracing::debug!("deobfuscated sig"); - Ok(res.to_owned()) - }, - ) + res.into_string() + .ok_or(DeobfError::Other("sig deobfuscation fn returned no string")) } /// 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, vec![nsig])?; + let res = self.ctx.call_function(DEOBF_NSIG_FUNC_NAME, [nsig])?; - res.as_str().map_or( - Err(DeobfError::Other("nsig deobfuscation func returned null")), - |res| { - tracing::debug!("deobfuscated nsig"); - Ok(res.to_owned()) - }, - ) + res.into_string().ok_or(DeobfError::Other( + "nsig deobfuscation fn returned no string", + )) } } @@ -144,12 +135,9 @@ fn get_sig_fn(player_js: &str) -> Result { let deobfuscate_function = format!( "var {};", - function_pattern + &function_pattern .captures(player_js) - .ok_or(DeobfError::Extraction("deobf function"))? - .get(1) - .unwrap() - .as_str() + .ok_or(DeobfError::Extraction("deobf function"))?[1] ); static HELPER_OBJECT_NAME_REGEX: Lazy = @@ -168,57 +156,37 @@ fn get_sig_fn(player_js: &str) -> Result { let helper_pattern = Regex::new(&helper_pattern_str) .map_err(|_| DeobfError::Other("could not parse helper pattern regex"))?; let player_js_nonl = player_js.replace('\n', ""); - let helper_object = helper_pattern + let helper_object = &helper_pattern .captures(&player_js_nonl) - .ok_or(DeobfError::Extraction("helper object"))? - .get(1) - .unwrap() - .as_str(); + .ok_or(DeobfError::Extraction("helper object"))?[1]; - Ok(helper_object.to_owned() + let js_fn = helper_object.to_owned() + &deobfuscate_function - + &caller_function(DEOBF_SIG_FUNC_NAME, &dfunc_name)) + + &caller_function(DEOBF_SIG_FUNC_NAME, &dfunc_name); + verify_fn(&js_fn, DEOBF_SIG_FUNC_NAME)?; + + Ok(js_fn) } -fn get_nsig_fn_name(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\(.+\w=(\w{2,})\[(\d+)\]\(\w\).+\w\.set\("#).unwrap() }); - let fname_match = FUNCTION_NAME_REGEX - .captures(player_js) - .ok_or(DeobfError::Extraction("n_deobf function"))?; + FUNCTION_NAME_REGEX + .captures_iter(player_js) + .filter_map(|fname_match| { + let function_name = &fname_match[1]; - let function_name = fname_match.get(1).unwrap().as_str(); + 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()?; - if fname_match.len() == 1 { - return Ok(function_name.to_owned()); - } - - let array_num = fname_match - .get(2) - .unwrap() - .as_str() - .parse::() - .or(Err(DeobfError::Other("could not parse array_num")))?; - let array_pattern_str = format!(r#"var {}\s*=\s*\[(.+?)]"#, regex::escape(function_name)); - let array_pattern = Regex::new(&array_pattern_str).or(Err(DeobfError::Other( - "could not parse helper pattern regex", - )))?; - - let array_str = array_pattern - .captures(player_js) - .ok_or(DeobfError::Extraction("n_deobf array_str"))? - .get(1) - .unwrap() - .as_str(); - - let mut names = array_str.split(','); - let name = names - .nth(array_num) - .ok_or(DeobfError::Extraction("n_deobf function name"))?; - Ok(name.to_owned()) + let array_str = &array_pattern.captures(player_js)?[1]; + array_str.split(',').nth(array_num).map(str::to_owned) + }) } fn extract_js_fn(js: &str, name: &str) -> Result { @@ -273,13 +241,44 @@ fn extract_js_fn(js: &str, name: &str) -> Result { Ok(js[start..end].to_owned()) } -fn get_nsig_fn(player_js: &str) -> Result { - let function_name = get_nsig_fn_name(player_js)?; - let function_base = function_name.clone() + "=function"; - let offset = player_js.find(&function_base).unwrap_or_default(); +/// 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 res = ctx + .call_function(fn_name, [util::generate_content_playback_nonce()])? + .into_string() + .ok_or(DeobfError::Other("deobfuscation fn returned no string"))?; + if res.is_empty() { + return Err(DeobfError::Other("deobfuscation fn returned empty string")); + } + Ok(()) +} - extract_js_fn(&player_js[offset..], &function_name) - .map(|s| s + ";" + &caller_function(DEOBF_NSIG_FUNC_NAME, &function_name)) +fn get_nsig_fn(player_js: &str) -> Result { + let extract_fn = |name: &str| -> Result { + let function_base = format!("{name}=function"); + let offset = player_js + .find(&function_base) + .ok_or(DeobfError::Extraction("could not find function base"))?; + + let js_fn = extract_js_fn(&player_js[offset..], name) + .map(|s| s + ";" + &caller_function(DEOBF_NSIG_FUNC_NAME, name))?; + verify_fn(&js_fn, DEOBF_NSIG_FUNC_NAME)?; + tracing::info!("Successfully extracted nsig fn `{name}`"); + Ok(js_fn) + }; + + util::find_map_or_last_err( + get_nsig_fn_names(player_js), + DeobfError::Extraction("no nsig fn name found"), + |name| { + extract_fn(&name).map_err(|e| { + tracing::warn!("Failed to extract nsig fn `{name}`: {e}"); + e + }) + }, + ) } async fn get_player_js_url(http: &Client) -> Result { @@ -293,12 +292,9 @@ async fn get_player_js_url(http: &Client) -> Result { 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 = &PLAYER_HASH_PATTERN .captures(&text) - .ok_or(DeobfError::Extraction("player hash"))? - .get(1) - .unwrap() - .as_str(); + .ok_or(DeobfError::Extraction("player hash"))?[1]; Ok(format!( "https://www.youtube.com/s/player/{player_hash}/player_ias.vflset/en_US/base.js" @@ -316,10 +312,7 @@ fn get_sts(player_js: &str) -> Result { Ok(STS_PATTERN .captures(player_js) - .ok_or(DeobfError::Extraction("sts"))? - .get(1) - .unwrap() - .as_str() + .ok_or(DeobfError::Extraction("sts"))?[1] .to_owned()) } @@ -329,6 +322,7 @@ mod tests { use crate::util::tests::TESTFILES; use path_macro::path; use rstest::{fixture, rstest}; + use tracing_test::traced_test; static TEST_JS: Lazy = Lazy::new(|| { let js_path = path!(*TESTFILES / "deobf" / "dummy_player.js"); @@ -380,9 +374,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_get_nsig_fn_name() { - let name = get_nsig_fn_name(&TEST_JS).unwrap(); - assert_eq!(name, "Vo"); + fn t_get_nsig_fn_names() { + let names = get_nsig_fn_names(&TEST_JS).collect::>(); + assert_eq!(names, ["Vo"]); } #[test] @@ -433,14 +427,15 @@ 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 } #[tokio::test] + #[traced_test] async fn t_update() { let client = Client::new(); 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(); - println!("{deobf_sig}"); + assert!(deobf_sig.len() >= 100); let deobf_nsig = deobf.deobfuscate_nsig("WHbZ-Nj2TSJxder").unwrap(); - println!("{deobf_nsig}"); + assert!(deobf_nsig.len() >= 10); } } diff --git a/src/util/mod.rs b/src/util/mod.rs index 75dcb00..013ccdd 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -551,6 +551,24 @@ impl<'a> Iterator for SplitTokens<'a> { } } +/// Applies function to the elements of iterator and returns the first successful result +/// or the last error if the function fails on all elements. If the iterator is empty, e_empty +/// is returned. +pub fn find_map_or_last_err(mut iter: I, e_empty: E, mut f: P) -> Result +where + I: Iterator, + P: FnMut(T) -> Result, +{ + let res = iter.try_fold(e_empty, |_, itm| match f(itm) { + Ok(o) => Err(o), + Err(e) => Ok(e), + }); + match res { + Ok(e) => Err(e), + Err(o) => Ok(o), + } +} + #[cfg(test)] pub(crate) mod tests { use std::{fs::File, io::BufReader, path::PathBuf}; @@ -730,4 +748,27 @@ pub(crate) mod tests { let res = country_from_name(name); assert_eq!(res, expect); } + + #[test] + fn t_find_map_or_last_err() { + // Success + let res = find_map_or_last_err([1, 2, 3].into_iter(), 0, |x: i32| { + if x > 2 { + Ok(true) + } else { + Err(x) + } + }); + assert_eq!(res, Ok(true)); + + // Error + let res = find_map_or_last_err([1, 2, 3].into_iter(), 0, |x: i32| Err::<(), _>(x)); + assert_eq!(res, Err(3)); + + // Empty iterator + assert_eq!( + find_map_or_last_err(std::iter::empty(), 0, |_: i32| Ok(true)), + Err(0) + ); + } } From 72b5dfec69ec25445b94cb0976662416a5df56ef Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 29 Jul 2024 18:03:31 +0200 Subject: [PATCH 090/347] feat: add player_from_clients function to specify client order --- src/client/player.rs | 59 +++++++++++++++++++++++++++++--------------- 1 file changed, 39 insertions(+), 20 deletions(-) diff --git a/src/client/player.rs b/src/client/player.rs index dbe68bf..8cccc97 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -64,33 +64,52 @@ struct QContentPlaybackContext<'a> { impl RustyPipeQuery { /// Get YouTube player data (video/audio streams + basic metadata) - #[tracing::instrument(skip(self))] pub async fn player + Debug>(&self, video_id: S) -> Result { + self.player_from_clients(video_id, &[ClientType::Desktop, ClientType::TvHtml5Embed]) + .await + } + + /// Get YouTube player data (video/audio streams + basic metadata) using a list of clients. + /// + /// The clients are used in the given order. If a client cannot fetch the requested video, + /// an attempt is made with the next one. + pub async fn player_from_clients + Debug>( + &self, + video_id: S, + clients: &[ClientType], + ) -> Result { let video_id = video_id.as_ref(); - let desktop_res = self.player_from_client(video_id, ClientType::Desktop).await; + let mut last_e = Error::Other("no clients".into()); + // Prefer to output age restriction error (e.g. if video cannot be played + // by Desktop because of age restriction and by TvHtml5Embed because it is non-embeddable) + let mut age_restricted_e = None; - match desktop_res { - Ok(res) => Ok(res), - Err(Error::Extraction(e)) => { - if e.switch_client() { - let tv_res = self - .player_from_client(video_id, ClientType::TvHtml5Embed) - .await; - - match tv_res { - // Output desktop client error if the tv client is unsupported - Err(Error::Extraction(ExtractionError::Unavailable { - reason: UnavailabilityReason::UnsupportedClient, - .. - })) => Err(Error::Extraction(e)), - _ => tv_res, + for client in clients { + let res = self.player_from_client(video_id, *client).await; + match res { + Ok(res) => return Ok(res), + Err(Error::Extraction(e)) => { + if e.switch_client() { + if let ExtractionError::Unavailable { + reason: UnavailabilityReason::AgeRestricted, + msg, + } = &e + { + age_restricted_e = + Some(Error::Extraction(ExtractionError::Unavailable { + reason: UnavailabilityReason::AgeRestricted, + msg: msg.to_owned(), + })); + } + last_e = Error::Extraction(e); + } else { + return Err(Error::Extraction(e)); } - } else { - Err(Error::Extraction(e)) } + Err(e) => return Err(e), } - Err(e) => Err(e), } + Err(age_restricted_e.unwrap_or(last_e)) } /// Get YouTube player data (video/audio streams + basic metadata) using the specified client From 2c7a3fb5cc153ff0b8b5e79234ae497d916e471c Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 29 Jul 2024 18:06:35 +0200 Subject: [PATCH 091/347] fix: cli: print video ID when logging errors --- cli/src/main.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cli/src/main.rs b/cli/src/main.rs index cd5c6fe..5011a13 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -334,7 +334,7 @@ async fn download_video( } let res = q.download().await; if let Err(e) = res { - tracing::error!("{e}") + tracing::error!("[{id}]: {e}") } } @@ -379,6 +379,7 @@ async fn download_videos( .for_each_concurrent(parallel, |video| { let dl = dl.clone(); let main = main.clone(); + let id = &video.id; let mut q = target.apply(dl.download_entity(video)); if let Some(player_type) = player_type { @@ -387,7 +388,7 @@ async fn download_videos( async move { if let Err(e) = q.download().await { - tracing::error!("{e:?}"); + tracing::error!("[{id}]: {e}"); } else { main.inc(1); } From 37a14aa9ce1573febdb025dcccfb47cf1b10bd92 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 29 Jul 2024 18:10:10 +0200 Subject: [PATCH 092/347] test: fix tests --- tests/snapshots/youtube__music_album_no_artist.snap | 4 ++-- tests/snapshots/youtube__music_album_no_artist_intl.snap | 4 ++-- tests/youtube.rs | 8 ++++++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/tests/snapshots/youtube__music_album_no_artist.snap b/tests/snapshots/youtube__music_album_no_artist.snap index 11818a7..e7b9f2e 100644 --- a/tests/snapshots/youtube__music_album_no_artist.snap +++ b/tests/snapshots/youtube__music_album_no_artist.snap @@ -201,11 +201,11 @@ MusicAlbum( cover: [], artists: [ ArtistId( - id: Some("UCxByvsK9hDZk2MnnF9jsFGw"), + id: Some("UCzXI_RZ1Uqy8L8TiurTFTIg"), name: "Herbrido", ), ], - artist_id: Some("UCxByvsK9hDZk2MnnF9jsFGw"), + artist_id: Some("UCzXI_RZ1Uqy8L8TiurTFTIg"), album: Some(AlbumId( id: "MPREb_Z81wHtF9fhC", name: "June Compilation", diff --git a/tests/snapshots/youtube__music_album_no_artist_intl.snap b/tests/snapshots/youtube__music_album_no_artist_intl.snap index 4eb19bc..b57f39f 100644 --- a/tests/snapshots/youtube__music_album_no_artist_intl.snap +++ b/tests/snapshots/youtube__music_album_no_artist_intl.snap @@ -201,11 +201,11 @@ MusicAlbum( cover: [], artists: [ ArtistId( - id: Some("UCxByvsK9hDZk2MnnF9jsFGw"), + id: Some("UCzXI_RZ1Uqy8L8TiurTFTIg"), name: "[name]", ), ], - artist_id: Some("UCxByvsK9hDZk2MnnF9jsFGw"), + artist_id: Some("UCzXI_RZ1Uqy8L8TiurTFTIg"), album: Some(AlbumId( id: "MPREb_Z81wHtF9fhC", name: "[name]", diff --git a/tests/youtube.rs b/tests/youtube.rs index fec085a..f157d99 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -1264,7 +1264,11 @@ mod channel_rss { #[rstest] #[tokio::test] async fn search(rp: RustyPipe, unlocalized: bool) { - let result = rp.query().search::("testt").await.unwrap(); + let result = rp + .query() + .search::("arudino") + .await + .unwrap(); assert_gteo( result.items.count, @@ -1273,7 +1277,7 @@ async fn search(rp: RustyPipe, unlocalized: bool) { ); if unlocalized { - assert_eq!(result.corrected_query.as_deref(), Some("test")); + assert_eq!(result.corrected_query.as_deref(), Some("arduino")); } assert_next(result.items, rp.query(), 10, 2, true).await; From 4743f9d8e101b58ad6a43548495da9f4f381b9f4 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 29 Jul 2024 18:10:45 +0200 Subject: [PATCH 093/347] chore: renovate: disable approveMajorUpdates --- renovate.json | 1 - 1 file changed, 1 deletion(-) diff --git a/renovate.json b/renovate.json index f21e62f..cb7e66a 100644 --- a/renovate.json +++ b/renovate.json @@ -2,7 +2,6 @@ "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": [ "config:best-practices", - ":approveMajorUpdates", "schedule:daily" ], "semanticCommits": "enabled", From 015bd6fcbf04163565fcb190b163ecfdb5664e11 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 29 Jul 2024 18:17:35 +0200 Subject: [PATCH 094/347] chore: renovate: disable scheduleDaily --- renovate.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/renovate.json b/renovate.json index cb7e66a..becafff 100644 --- a/renovate.json +++ b/renovate.json @@ -1,8 +1,7 @@ { "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": [ - "config:best-practices", - "schedule:daily" + "config:best-practices" ], "semanticCommits": "enabled", "automergeStrategy": "squash", From 882abc53ca894229ee78ec0edaa723d9ea61bbcb Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 29 Jul 2024 18:20:11 +0200 Subject: [PATCH 095/347] chore: renovate: enable automerge --- renovate.json | 1 + 1 file changed, 1 insertion(+) diff --git a/renovate.json b/renovate.json index becafff..3ff20b1 100644 --- a/renovate.json +++ b/renovate.json @@ -4,6 +4,7 @@ "config:best-practices" ], "semanticCommits": "enabled", + "automerge": true, "automergeStrategy": "squash", "osvVulnerabilityAlerts": true, "labels": ["dependency-upgrade"], From b6bc05c1f39da9a846b2e3d1d24bcbccb031203b Mon Sep 17 00:00:00 2001 From: Forgejo Actions Date: Mon, 29 Jul 2024 18:20:51 +0200 Subject: [PATCH 096/347] chore(deps): update rust crate quick-xml to 0.36.0 (#8) Reviewed-on: https://code.thetadev.de/ThetaDev/rustypipe/pulls/8 Co-authored-by: Forgejo Actions Co-committed-by: Forgejo Actions --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 44b96ac..ee401fd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -53,7 +53,7 @@ phf = "0.11.1" phf_codegen = "0.11.1" base64 = "0.22.0" urlencoding = "2.1.2" -quick-xml = { version = "0.35.0", features = ["serialize"] } +quick-xml = { version = "0.36.0", features = ["serialize"] } tracing = { version = "0.1.37", features = ["log"] } # CLI From e608811e5f5615416241e67561671330097092cb Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 30 Jul 2024 01:55:24 +0200 Subject: [PATCH 097/347] feat!: add TV client --- cli/src/main.rs | 23 +- codegen/src/download_testfiles.rs | 3 +- downloader/src/lib.rs | 77 +- src/client/mod.rs | 90 +- src/client/player.rs | 11 +- src/client/response/player.rs | 8 +- ...layer__tests__map_player_data_android.snap | 10 +- ...layer__tests__map_player_data_desktop.snap | 10 +- ...__tests__map_player_data_desktopmusic.snap | 10 +- ...t__player__tests__map_player_data_ios.snap | 10 +- ...nt__player__tests__map_player_data_tv.snap | 518 +++ ...__tests__map_player_data_tvhtml5embed.snap | 10 +- src/model/mod.rs | 10 +- src/model/traits.rs | 25 +- testfiles/player/tv_video.json | 3150 +++++++++++++++++ testfiles/player_model/hdr.json | 3 +- testfiles/player_model/multilanguage.json | 6 +- tests/youtube.rs | 45 +- 18 files changed, 3887 insertions(+), 132 deletions(-) create mode 100644 src/client/snapshots/rustypipe__client__player__tests__map_player_data_tv.snap create mode 100644 testfiles/player/tv_video.json diff --git a/cli/src/main.rs b/cli/src/main.rs index 5011a13..484c51b 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -1,6 +1,6 @@ #![warn(clippy::todo, clippy::dbg_macro)] -use std::{path::PathBuf, str::FromStr}; +use std::{path::PathBuf, str::FromStr, time::Duration}; use clap::{Parser, Subcommand, ValueEnum}; use futures::stream::{self, StreamExt}; @@ -10,7 +10,7 @@ use rustypipe::{ model::{UrlTarget, VideoId, YouTubeItem}, param::{search_filter, ChannelVideoTab, Country, Language, StreamFilter}, }; -use rustypipe_downloader::{DownloadQuery, DownloaderBuilder}; +use rustypipe_downloader::{DownloadError, DownloadQuery, DownloaderBuilder}; use serde::Serialize; use tracing::level_filters::LevelFilter; use tracing_subscriber::{fmt::MakeWriter, EnvFilter}; @@ -236,6 +236,7 @@ enum MusicSearchCategory { enum PlayerType { Desktop, Tv, + TvEmbed, Android, Ios, } @@ -286,7 +287,8 @@ impl From for ClientType { fn from(value: PlayerType) -> Self { match value { PlayerType::Desktop => Self::Desktop, - PlayerType::Tv => Self::TvHtml5Embed, + PlayerType::TvEmbed => Self::TvHtml5Embed, + PlayerType::Tv => Self::Tv, PlayerType::Android => Self::Android, PlayerType::Ios => Self::Ios, } @@ -324,7 +326,7 @@ async fn download_video( } } let dl = DownloaderBuilder::new() - .client(rp) + .rustypipe(rp) .stream_filter(filter) .progress_bar(multi) .build(); @@ -356,7 +358,7 @@ async fn download_videos( } } let dl = DownloaderBuilder::new() - .client(rp) + .rustypipe(rp) .stream_filter(filter) .progress_bar(multi.clone()) .path_precheck() @@ -388,10 +390,11 @@ async fn download_videos( async move { if let Err(e) = q.download().await { - tracing::error!("[{id}]: {e}"); - } else { - main.inc(1); + if !matches!(e, DownloadError::Exists(_)) { + tracing::error!("[{id}]: {e}"); + } } + main.inc(1); } }) .await; @@ -433,7 +436,9 @@ async fn main() { .with_writer(ProgWriter(multi.clone())) .init(); - let mut rp = RustyPipe::builder().visitor_data_opt(cli.vdata); + let mut rp = RustyPipe::builder() + .visitor_data_opt(cli.vdata) + .timeout(Duration::from_secs(15)); if cli.report { rp = rp.report(); } else { diff --git a/codegen/src/download_testfiles.rs b/codegen/src/download_testfiles.rs index 9fafa11..d5fd42e 100644 --- a/codegen/src/download_testfiles.rs +++ b/codegen/src/download_testfiles.rs @@ -66,9 +66,10 @@ pub async fn download_testfiles() { music_genre().await; } -const CLIENT_TYPES: [ClientType; 5] = [ +const CLIENT_TYPES: [ClientType; 6] = [ ClientType::Desktop, ClientType::DesktopMusic, + ClientType::Tv, ClientType::TvHtml5Embed, ClientType::Android, ClientType::Ios, diff --git a/downloader/src/lib.rs b/downloader/src/lib.rs index 0429ef2..6e9cfdf 100644 --- a/downloader/src/lib.rs +++ b/downloader/src/lib.rs @@ -34,7 +34,7 @@ use tokio::{ process::Command, }; -use util::DownloadError; +pub use util::DownloadError; type Result = core::result::Result; @@ -64,6 +64,8 @@ pub struct DownloaderBuilder { struct DownloaderInner { /// YT client rp: RustyPipe, + /// HTTP client + http: Client, /// Path to the ffmpeg binary ffmpeg: String, /// Global progress @@ -217,7 +219,7 @@ impl DownloaderBuilder { /// Use a custom [`RustyPipe`] client #[must_use] - pub fn client(mut self, rp: &RustyPipe) -> Self { + pub fn rustypipe(mut self, rp: &RustyPipe) -> Self { self.rp = Some(rp.clone()); self } @@ -277,9 +279,20 @@ impl DownloaderBuilder { /// Create a new, configured [`Downloader`] instance pub fn build(self) -> Downloader { + self.build_with_client( + Client::builder() + .timeout(Duration::from_secs(20)) + .build() + .expect("http client"), + ) + } + + /// Create a new, configured [`Downloader`] instance using a custom Reqwest [`Client`] + pub fn build_with_client(self, http_client: Client) -> Downloader { Downloader { i: Arc::new(DownloaderInner { rp: self.rp.unwrap_or_default(), + http: http_client, ffmpeg: self.ffmpeg, multi: self.multi, filter: self.filter, @@ -300,7 +313,7 @@ impl Default for Downloader { impl Downloader { /// Create a new [`Downloader`] using the given [`RustyPipe`] instance pub fn new(rp: &RustyPipe) -> Self { - DownloaderBuilder::new().client(rp).build() + DownloaderBuilder::new().rustypipe(rp).build() } /// Create a new [`DownloaderBuilder`] @@ -442,7 +455,7 @@ impl DownloadQuery { let err = match self.download_attempt(&pb, n).await { Ok(res) => return Ok(res), Err(DownloadError::Http(e)) => { - if e.status() != Some(StatusCode::FORBIDDEN) { + if !e.is_timeout() && e.status() != Some(StatusCode::FORBIDDEN) { return Err(DownloadError::Http(e)); } DownloadError::Http(e) @@ -521,7 +534,24 @@ impl DownloadQuery { }, }; - let pv = DownloadVideo::from_video(&player_data); + let (name, details) = match &player_data.details.name { + Some(n) => (n.to_owned(), None), + None => { + let details = self.dl.i.rp.query().video_details(&self.video.id).await?; + (details.name.to_owned(), Some(details)) + } + }; + + let pv = DownloadVideo { + id: player_data.details.id.to_owned(), + name: Some(name.to_owned()), + channel_id: Some(player_data.details.channel_id.to_owned()), + channel_name: player_data + .details + .channel_name + .clone() + .or(details.map(|d| d.channel.name)), + }; let output_path = self.dest.get_dest_path(&pv).with_extension(extension); if output_path.exists() { @@ -551,22 +581,12 @@ impl DownloadQuery { } if let Some(pb) = pb { - pb.set_message(format!( - "Downloading {}{}", - player_data.name(), - attempt_suffix - )) + pb.set_message(format!("Downloading {name}{attempt_suffix}")) } - download_streams( - &downloads, - self.dl.i.rp.http_client(), - &user_agent, - pb.clone(), - ) - .await?; + download_streams(&downloads, &self.dl.i.http, &user_agent, pb.clone()).await?; if let Some(pb) = &pb { - pb.set_message(format!("Converting {}", player_data.name())); + pb.set_message(format!("Converting {name}")); pb.set_style( ProgressStyle::with_template("{msg}\n{spinner:.green} [{elapsed_precise}]") .unwrap(), @@ -574,13 +594,7 @@ impl DownloadQuery { pb.enable_steady_tick(Duration::from_millis(500)); } - convert_streams( - &downloads, - &output_path, - &self.dl.i.ffmpeg, - player_data.name(), - ) - .await?; + convert_streams(&downloads, &output_path, &self.dl.i.ffmpeg, &name).await?; if let Some(pb) = pb { pb.disable_steady_tick(); } @@ -787,6 +801,12 @@ async fn download_chunks_by_header( .await? .error_for_status()?; + if res.content_length().unwrap_or_default() == 0 { + return Err(DownloadError::Progressive( + format!("empty chunk {}-{}", range.start, range.end).into(), + )); + } + // Content-Range: bytes 0-100/451368980 let cr_header = res .headers() @@ -859,7 +879,12 @@ async fn download_chunks_by_param( .await? .error_for_status()?; - let clen = res.content_length().unwrap(); + let clen = res.content_length().unwrap_or_default(); + if clen == 0 { + return Err(DownloadError::Progressive( + format!("empty chunk {}-{}", range.start, range.end).into(), + )); + } tracing::debug!("Retrieving chunks..."); let mut stream = res.bytes_stream(); diff --git a/src/client/mod.rs b/src/client/mod.rs index e6761e8..a8bd5d4 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -61,6 +61,8 @@ pub enum ClientType { /// /// can access age-restricted videos, cannot access non-embeddable videos TvHtml5Embed, + /// Client used by youtube.com/tv + Tv, /// Client used by the Android app /// /// no obfuscated stream URLs, includes lower resolution audio streams @@ -74,7 +76,10 @@ pub enum ClientType { impl ClientType { fn is_web(self) -> bool { match self { - ClientType::Desktop | ClientType::DesktopMusic | ClientType::TvHtml5Embed => true, + ClientType::Desktop + | ClientType::DesktopMusic + | ClientType::TvHtml5Embed + | ClientType::Tv => true, ClientType::Android | ClientType::Ios => false, } } @@ -183,6 +188,7 @@ struct QContinuation<'a> { } const DEFAULT_UA: &str = "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.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"; const CONSENT_COOKIE: &str = "SOCS=CAISAiAD"; @@ -191,12 +197,14 @@ 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 YOUTUBE_HOME_URL: &str = "https://www.youtube.com/"; const YOUTUBE_MUSIC_HOME_URL: &str = "https://music.youtube.com/"; +const YOUTUBE_TV_URL: &str = "https://www.youtube.com/tv"; const DISABLE_PRETTY_PRINT_PARAMETER: &str = "prettyPrint=false"; // Desktop client const DESKTOP_CLIENT_VERSION: &str = "2.20230126.00.00"; const TVHTML5_CLIENT_VERSION: &str = "2.0"; +const TV_CLIENT_VERSION: &str = "7.20240724.13.00"; const DESKTOP_MUSIC_CLIENT_VERSION: &str = "1.20230123.01.01"; // Mobile client @@ -454,7 +462,7 @@ impl RustyPipeBuilder { self.build_with_client(ClientBuilder::new()) } - /// Create a new, configured RustyPipe instance using a Reqwest client builder. + /// Create a new, configured RustyPipe instance using a Reqwest [`ClientBuilder`]. pub fn build_with_client(self, mut client_builder: ClientBuilder) -> Result { let user_agent = self .user_agent @@ -717,31 +725,33 @@ impl RustyPipe { } } - /// Get the internal HTTP client - /// - /// Can be used for downloading videos or custom YT requests. - #[must_use] - pub fn http_client(&self) -> &Client { - &self.inner.http - } - /// 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 { - let resp = self - .inner - .http - .execute(request.try_clone().unwrap()) - .await?; + let resp = self.inner.http.execute(request.try_clone().unwrap()).await; - let status = resp.status(); - // Immediately return in case of success or unrecoverable status code - if status.is_success() - || (!status.is_server_error() && status != StatusCode::TOO_MANY_REQUESTS) - { - return Ok(resp); - } + let err = match resp { + Ok(resp) => { + let status = resp.status(); + // Immediately return in case of success or unrecoverable status code + if status.is_success() + || (!status.is_server_error() && status != StatusCode::TOO_MANY_REQUESTS) + { + return Ok(resp); + } + last_resp = Some(Ok(resp)); + status.to_string() + } + Err(e) => { + // Retry in case of a timeout error + if !e.is_timeout() { + return Err(e); + } + last_resp = Some(Err(e)); + "timeout".to_string() + } + }; // Retry in case of a recoverable status code (server err, too many requests) if n != self.inner.n_http_retries { @@ -749,15 +759,13 @@ impl RustyPipe { tracing::warn!( "Retry attempt #{}. Error: {}. Waiting {} ms", n + 1, - status, + err, ms ); tokio::time::sleep(Duration::from_millis(ms.into())).await; } - - last_resp = Some(resp); } - Ok(last_resp.unwrap()) + last_resp.unwrap() } /// Execute the given http request, returning an error in case of a @@ -1098,6 +1106,7 @@ impl RustyPipeQuery { ClientType::Desktop | ClientType::DesktopMusic | ClientType::TvHtml5Embed => { Cow::Borrowed(&self.client.inner.user_agent) } + ClientType::Tv => TV_UA.into(), ClientType::Android => format!( "com.google.android.youtube/{} (Linux; U; Android 12; {}) gzip", MOBILE_CLIENT_VERSION, self.opts.country @@ -1178,6 +1187,24 @@ impl RustyPipeQuery { embed_url: YOUTUBE_HOME_URL, }), }, + ClientType::Tv => YTContext { + client: ClientInfo { + client_name: "TVHTML5", + client_version: Cow::Borrowed(TV_CLIENT_VERSION), + client_screen: Some("WATCH"), + platform: "TV", + device_model: Some("SmartTV"), + visitor_data, + hl, + gl, + ..Default::default() + }, + request: Some(RequestYT::default()), + user: User::default(), + third_party: Some(ThirdParty { + embed_url: YOUTUBE_TV_URL, + }), + }, ClientType::Android => YTContext { client: ClientInfo { client_name: "ANDROID", @@ -1266,6 +1293,17 @@ impl RustyPipeQuery { .header(header::REFERER, YOUTUBE_HOME_URL) .header("X-YouTube-Client-Name", "1") .header("X-YouTube-Client-Version", TVHTML5_CLIENT_VERSION), + ClientType::Tv => self + .client + .inner + .http + .post(format!( + "{YOUTUBEI_V1_URL}{endpoint}?{DISABLE_PRETTY_PRINT_PARAMETER}" + )) + .header(header::ORIGIN, YOUTUBE_HOME_URL) + .header(header::REFERER, YOUTUBE_TV_URL) + .header("X-YouTube-Client-Name", "7") + .header("X-YouTube-Client-Version", TV_CLIENT_VERSION), ClientType::Android => self .client .inner diff --git a/src/client/player.rs b/src/client/player.rs index 8cccc97..b763bb5 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -13,8 +13,8 @@ use crate::{ deobfuscate::Deobfuscator, error::{internal::DeobfError, Error, ExtractionError, UnavailabilityReason}, model::{ - traits::QualityOrd, AudioCodec, AudioFormat, AudioStream, AudioTrack, ChannelId, Frameset, - Subtitle, VideoCodec, VideoFormat, VideoPlayer, VideoPlayerDetails, VideoStream, + traits::QualityOrd, AudioCodec, AudioFormat, AudioStream, AudioTrack, Frameset, Subtitle, + VideoCodec, VideoFormat, VideoPlayer, VideoPlayerDetails, VideoStream, }, util, }; @@ -265,10 +265,8 @@ impl MapResponse for response::Player { description: video_details.short_description, duration: video_details.length_seconds, thumbnail: video_details.thumbnail.into(), - channel: ChannelId { - id: video_details.channel_id, - name: video_details.author, - }, + channel_id: video_details.channel_id, + channel_name: video_details.author, view_count: video_details.view_count, keywords: video_details.keywords, is_live, @@ -737,6 +735,7 @@ mod tests { #[rstest] #[case::desktop(ClientType::Desktop)] #[case::desktop_music(ClientType::DesktopMusic)] + #[case::tv(ClientType::Tv)] #[case::tv_html5_embed(ClientType::TvHtml5Embed)] #[case::android(ClientType::Android)] #[case::ios(ClientType::Ios)] diff --git a/src/client/response/player.rs b/src/client/response/player.rs index f3ae15e..fa9a295 100644 --- a/src/client/response/player.rs +++ b/src/client/response/player.rs @@ -236,7 +236,7 @@ pub(crate) struct CaptionTrack { #[serde(rename_all = "camelCase")] pub(crate) struct VideoDetails { pub video_id: String, - pub title: String, + pub title: Option, #[serde_as(as = "DisplayFromStr")] pub length_seconds: u32, #[serde(default)] @@ -245,9 +245,9 @@ pub(crate) struct VideoDetails { pub short_description: Option, #[serde(default)] pub thumbnail: Thumbnails, - #[serde_as(as = "DisplayFromStr")] - pub view_count: u64, - pub author: String, + #[serde_as(as = "Option")] + pub view_count: Option, + pub author: Option, pub is_live_content: 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 02798cc..5875d9f 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 @@ -5,7 +5,7 @@ expression: map_res.c VideoPlayer( details: VideoPlayerDetails( id: "pPvd8UxmSbQ", - name: "Inspiring Cinematic Uplifting (Creative Commons)", + name: Some("Inspiring Cinematic Uplifting (Creative Commons)"), description: Some("► Download Music: http://bit.ly/2QLufeh\nImportant to know! You can download this track for free through Patreon. You will pay only for new tracks! So join others and let\'s make next track together!\n\n► MORE MUSIC: Become my patron and get access to all our music from Patreon library. More Info here: http://bit.ly/2JJDFHb\n\n► Additional edit versions of this track you can download here: http://bit.ly/2WdRinT (5 versions)\n--------------------- \n\n►DESCRIPTION:\nInspiring Cinematic Uplifting Trailer Background - epic music for trailer video project with powerful drums, energetic orchestra and gentle piano melody. This motivational cinematic theme will work as perfect background for beautiful epic moments, landscapes, nature, drone video, motivational products and achievements.\n--------------------- \n\n► LICENSE:\n● If you need a license for your project, you can purchase it here: \nhttps://1.envato.market/ajicu (Audiojungle)\nhttps://bit.ly/3fWZZuI (Pond5)\n--------------------- \n\n► LISTEN ON:\n● Spotify - https://spoti.fi/2sHm3UH\n● Apple Music - https://apple.co/3qBjbUO\n--------------------- \n\n► SUBSCRIBE FOR MORE: \nPatreon: http://bit.ly/2JJDFHb\nYoutube: http://bit.ly/2AYBzfA\nFacebook: http://bit.ly/2T6dTx5\nInstagram: http://bit.ly/2BHJ8rB\nTwitter: http://bit.ly/2MwtOlT\nSoundCloud: http://bit.ly/2IwVVmt\nAudiojungle: https://1.envato.market/ajrsm\nPond5: https://bit.ly/2TLi1rW\n--------------------- \n►Photo by Vittorio Staffolani from Pexels\n--------------------- \n\nFAQ:\n\n► Can I use this music in my videos? \n● Sure! Just download this track and you are ready to use it! We only ask to credit us. \n-------------------- \n\n► What is \"Creative Commons\"? \nCreative Commons is a system that allows you to legally use “some rights reserved” music, movies, images, and other content — all for free. Licensees may copy, distribute, display and perform the work and make derivative works and remixes based on it only if they give the author or licensor the credits.\n-------------------- \n\n► Will I have any copyright issues with this track?\n● No, you should not have any copyright problems with this track!\n-------------------- \n\n► Is it necessary to become your patron?\n● No it\'s not necessary. But we recommend you to become our patron because you will get access to huge library of music. You will download only highest quality files. You will find additional edited versions of every track. You always be tuned with our news. You will find music not only from Roman Senyk but also from another talented authors.\n-------------------- \n\n► Why I received a copyright claim when I used this track?\n● Do not panic! This is very common situation. Content ID fingerprint system can mismatch our music. Just dispute the claim by showing our original track. Or send us the link to your video (romansenykmusic@gmail.com) and attach some screenshot with claim information. Claim will be released until 24 hours!\n\n► How to credit you in my video?\n● Just add to the description of your project information about Author, Name of Song and the link to our original track. Or copy and paste:\n\nMusic Info: Inspiring Cinematic Uplifting by RomanSenykMusic.\nMusic Link: https://youtu.be/pPvd8UxmSbQ\n--------------------- \n\n► If you have any questions, you can write in the comments for this video or by email: romansenykmusic@gmail.com\n--------------------- \n\nStay tuned! The best is yet to come! \nThanks For Listening!\nRoman Senyk"), duration: 163, thumbnail: [ @@ -30,11 +30,9 @@ VideoPlayer( height: 480, ), ], - channel: ChannelId( - id: "UCbxxEi-ImPlbLx5F-fHetEg", - name: "RomanSenykMusic - Royalty Free Music", - ), - view_count: 426567, + channel_id: "UCbxxEi-ImPlbLx5F-fHetEg", + channel_name: Some("RomanSenykMusic - Royalty Free Music"), + view_count: Some(426567), keywords: [ "no copyright music", "background music", 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 ec4ae26..97fdd93 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 @@ -5,7 +5,7 @@ expression: map_res.c VideoPlayer( details: VideoPlayerDetails( id: "pPvd8UxmSbQ", - name: "Inspiring Cinematic Uplifting (Creative Commons)", + name: Some("Inspiring Cinematic Uplifting (Creative Commons)"), description: Some("► Download Music: http://bit.ly/2QLufeh\nImportant to know! You can download this track for free through Patreon. You will pay only for new tracks! So join others and let\'s make next track together!\n\n► MORE MUSIC: Become my patron and get access to all our music from Patreon library. More Info here: http://bit.ly/2JJDFHb\n\n► Additional edit versions of this track you can download here: http://bit.ly/2WdRinT (5 versions)\n--------------------- \n\n►DESCRIPTION:\nInspiring Cinematic Uplifting Trailer Background - epic music for trailer video project with powerful drums, energetic orchestra and gentle piano melody. This motivational cinematic theme will work as perfect background for beautiful epic moments, landscapes, nature, drone video, motivational products and achievements.\n--------------------- \n\n► LICENSE:\n● If you need a license for your project, you can purchase it here: \nhttps://1.envato.market/ajicu (Audiojungle)\nhttps://bit.ly/3fWZZuI (Pond5)\n--------------------- \n\n► LISTEN ON:\n● Spotify - https://spoti.fi/2sHm3UH\n● Apple Music - https://apple.co/3qBjbUO\n--------------------- \n\n► SUBSCRIBE FOR MORE: \nPatreon: http://bit.ly/2JJDFHb\nYoutube: http://bit.ly/2AYBzfA\nFacebook: http://bit.ly/2T6dTx5\nInstagram: http://bit.ly/2BHJ8rB\nTwitter: http://bit.ly/2MwtOlT\nSoundCloud: http://bit.ly/2IwVVmt\nAudiojungle: https://1.envato.market/ajrsm\nPond5: https://bit.ly/2TLi1rW\n--------------------- \n►Photo by Vittorio Staffolani from Pexels\n--------------------- \n\nFAQ:\n\n► Can I use this music in my videos? \n● Sure! Just download this track and you are ready to use it! We only ask to credit us. \n-------------------- \n\n► What is \"Creative Commons\"? \nCreative Commons is a system that allows you to legally use “some rights reserved” music, movies, images, and other content — all for free. Licensees may copy, distribute, display and perform the work and make derivative works and remixes based on it only if they give the author or licensor the credits.\n-------------------- \n\n► Will I have any copyright issues with this track?\n● No, you should not have any copyright problems with this track!\n-------------------- \n\n► Is it necessary to become your patron?\n● No it\'s not necessary. But we recommend you to become our patron because you will get access to huge library of music. You will download only highest quality files. You will find additional edited versions of every track. You always be tuned with our news. You will find music not only from Roman Senyk but also from another talented authors.\n-------------------- \n\n► Why I received a copyright claim when I used this track?\n● Do not panic! This is very common situation. Content ID fingerprint system can mismatch our music. Just dispute the claim by showing our original track. Or send us the link to your video (romansenykmusic@gmail.com) and attach some screenshot with claim information. Claim will be released until 24 hours!\n\n► How to credit you in my video?\n● Just add to the description of your project information about Author, Name of Song and the link to our original track. Or copy and paste:\n\nMusic Info: Inspiring Cinematic Uplifting by RomanSenykMusic.\nMusic Link: https://youtu.be/pPvd8UxmSbQ\n--------------------- \n\n► If you have any questions, you can write in the comments for this video or by email: romansenykmusic@gmail.com\n--------------------- \n\nStay tuned! The best is yet to come! \nThanks For Listening!\nRoman Senyk"), duration: 163, thumbnail: [ @@ -35,11 +35,9 @@ VideoPlayer( height: 1080, ), ], - channel: ChannelId( - id: "UCbxxEi-ImPlbLx5F-fHetEg", - name: "RomanSenykMusic - Royalty Free Music", - ), - view_count: 426567, + channel_id: "UCbxxEi-ImPlbLx5F-fHetEg", + channel_name: Some("RomanSenykMusic - Royalty Free Music"), + view_count: Some(426567), keywords: [ "no copyright music", "background music", 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 8ea0e63..8a2e061 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 @@ -5,7 +5,7 @@ expression: map_res.c VideoPlayer( details: VideoPlayerDetails( id: "pPvd8UxmSbQ", - name: "Inspiring Cinematic Uplifting", + name: Some("Inspiring Cinematic Uplifting"), description: None, duration: 163, thumbnail: [ @@ -25,11 +25,9 @@ VideoPlayer( height: 480, ), ], - channel: ChannelId( - id: "UCbxxEi-ImPlbLx5F-fHetEg", - name: "Romansenykmusic", - ), - view_count: 426583, + channel_id: "UCbxxEi-ImPlbLx5F-fHetEg", + channel_name: Some("Romansenykmusic"), + view_count: Some(426583), keywords: [], is_live: false, is_live_content: false, 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 dcad31b..3156f55 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 @@ -5,7 +5,7 @@ expression: map_res.c VideoPlayer( details: VideoPlayerDetails( id: "pPvd8UxmSbQ", - name: "Inspiring Cinematic Uplifting (Creative Commons)", + name: Some("Inspiring Cinematic Uplifting (Creative Commons)"), description: Some("► Download Music: http://bit.ly/2QLufeh\nImportant to know! You can download this track for free through Patreon. You will pay only for new tracks! So join others and let\'s make next track together!\n\n► MORE MUSIC: Become my patron and get access to all our music from Patreon library. More Info here: http://bit.ly/2JJDFHb\n\n► Additional edit versions of this track you can download here: http://bit.ly/2WdRinT (5 versions)\n--------------------- \n\n►DESCRIPTION:\nInspiring Cinematic Uplifting Trailer Background - epic music for trailer video project with powerful drums, energetic orchestra and gentle piano melody. This motivational cinematic theme will work as perfect background for beautiful epic moments, landscapes, nature, drone video, motivational products and achievements.\n--------------------- \n\n► LICENSE:\n● If you need a license for your project, you can purchase it here: \nhttps://1.envato.market/ajicu (Audiojungle)\nhttps://bit.ly/3fWZZuI (Pond5)\n--------------------- \n\n► LISTEN ON:\n● Spotify - https://spoti.fi/2sHm3UH\n● Apple Music - https://apple.co/3qBjbUO\n--------------------- \n\n► SUBSCRIBE FOR MORE: \nPatreon: http://bit.ly/2JJDFHb\nYoutube: http://bit.ly/2AYBzfA\nFacebook: http://bit.ly/2T6dTx5\nInstagram: http://bit.ly/2BHJ8rB\nTwitter: http://bit.ly/2MwtOlT\nSoundCloud: http://bit.ly/2IwVVmt\nAudiojungle: https://1.envato.market/ajrsm\nPond5: https://bit.ly/2TLi1rW\n--------------------- \n►Photo by Vittorio Staffolani from Pexels\n--------------------- \n\nFAQ:\n\n► Can I use this music in my videos? \n● Sure! Just download this track and you are ready to use it! We only ask to credit us. \n-------------------- \n\n► What is \"Creative Commons\"? \nCreative Commons is a system that allows you to legally use “some rights reserved” music, movies, images, and other content — all for free. Licensees may copy, distribute, display and perform the work and make derivative works and remixes based on it only if they give the author or licensor the credits.\n-------------------- \n\n► Will I have any copyright issues with this track?\n● No, you should not have any copyright problems with this track!\n-------------------- \n\n► Is it necessary to become your patron?\n● No it\'s not necessary. But we recommend you to become our patron because you will get access to huge library of music. You will download only highest quality files. You will find additional edited versions of every track. You always be tuned with our news. You will find music not only from Roman Senyk but also from another talented authors.\n-------------------- \n\n► Why I received a copyright claim when I used this track?\n● Do not panic! This is very common situation. Content ID fingerprint system can mismatch our music. Just dispute the claim by showing our original track. Or send us the link to your video (romansenykmusic@gmail.com) and attach some screenshot with claim information. Claim will be released until 24 hours!\n\n► How to credit you in my video?\n● Just add to the description of your project information about Author, Name of Song and the link to our original track. Or copy and paste:\n\nMusic Info: Inspiring Cinematic Uplifting by RomanSenykMusic.\nMusic Link: https://youtu.be/pPvd8UxmSbQ\n--------------------- \n\n► If you have any questions, you can write in the comments for this video or by email: romansenykmusic@gmail.com\n--------------------- \n\nStay tuned! The best is yet to come! \nThanks For Listening!\nRoman Senyk"), duration: 163, thumbnail: [ @@ -25,11 +25,9 @@ VideoPlayer( height: 480, ), ], - channel: ChannelId( - id: "UCbxxEi-ImPlbLx5F-fHetEg", - name: "RomanSenykMusic - Royalty Free Music", - ), - view_count: 426567, + channel_id: "UCbxxEi-ImPlbLx5F-fHetEg", + channel_name: Some("RomanSenykMusic - Royalty Free Music"), + view_count: Some(426567), keywords: [ "no copyright music", "background music", 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 new file mode 100644 index 0000000..0fba144 --- /dev/null +++ b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_tv.snap @@ -0,0 +1,518 @@ +--- +source: src/client/player.rs +expression: map_res.c +--- +VideoPlayer( + details: VideoPlayerDetails( + id: "pPvd8UxmSbQ", + name: None, + description: None, + duration: 163, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/pPvd8UxmSbQ/hqdefault.jpg", + width: 480, + height: 360, + ), + ], + channel_id: "UCbxxEi-ImPlbLx5F-fHetEg", + channel_name: None, + view_count: None, + keywords: [], + is_live: false, + is_live_content: false, + ), + video_streams: [ + VideoStream( + url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?bui=AXc671IT4iUCpJNJWUitTMgIi6njuKSsi3MNed1Szyf0qysTX0v1Nf6AyCvjIGbek5Fn50kuBrGtRJ5q&c=TVHTML5&clen=10262148&dur=163.096&ei=viioZtTdKteHi9oPl42KsAg&expire=1722318110&fvip=4&gir=yes&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&initcwndbps=1957500&ip=93.235.183.158&itag=18&lmt=1700885551970466&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=BMzwItzIOB1HhmG&ns=YmgbZhlLp0C-9ilsQWGAyUAQ&pl=26&ratebypass=yes&requiressl=yes&rqh=1&sefc=1&sig=AJfQdSswRAIgUah4qH8RqPzmo75ExCWSiRYlUlsAk0v9gl638LitVNICICxFs5lK3CsmOAja0bsXavXkyykzpdhHZKGXOZQYT1f8&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=1318224&vprv=1&xpc=EgVo2aDSNQ%3D%3D", + itag: 18, + bitrate: 503574, + average_bitrate: 503367, + size: Some(10262148), + index_range: None, + init_range: None, + duration_ms: Some(163096), + width: 640, + height: 360, + fps: 30, + quality: "360p", + hdr: false, + mime: "video/mp4; codecs=\"avc1.42001E, mp4a.40.2\"", + format: mp4, + codec: avc1, + ), + ], + video_only_streams: [ + 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=2273274&dur=163.029&ei=viioZtTdKteHi9oPl42KsAg&expire=1722318110&fvip=4&gir=yes&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&initcwndbps=1957500&ip=93.235.183.158&itag=160&keepalive=yes&lmt=1705967288821438&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=AJfQdSswRAIgb8eXnQ6MSJ3PuvFVBdYIWTnFobH8mTC9zbZpBNxLbBYCICkPLKEm3gNbW5HIFXs7bwF5rSqUKHHnXNK91qMslQog&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: 160, + bitrate: 114816, + average_bitrate: 111551, + size: Some(2273274), + index_range: Some(Range( + start: 738, + end: 1165, + )), + init_range: Some(Range( + start: 0, + end: 737, + )), + duration_ms: Some(163029), + width: 256, + height: 144, + fps: 30, + quality: "144p", + hdr: false, + mime: "video/mp4; codecs=\"avc1.4d400c\"", + format: mp4, + codec: avc1, + ), + 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", + itag: 278, + bitrate: 70630, + average_bitrate: 56524, + size: Some(1151892), + index_range: Some(Range( + start: 218, + end: 767, + )), + init_range: Some(Range( + start: 0, + end: 217, + )), + duration_ms: Some(163029), + width: 256, + height: 144, + fps: 30, + quality: "144p", + hdr: false, + mime: "video/webm; codecs=\"vp9\"", + format: webm, + codec: vp9, + ), + 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", + itag: 133, + bitrate: 257417, + average_bitrate: 246656, + size: Some(5026513), + index_range: Some(Range( + start: 739, + end: 1166, + )), + init_range: Some(Range( + start: 0, + end: 738, + )), + duration_ms: Some(163029), + width: 426, + height: 240, + fps: 30, + quality: "240p", + hdr: false, + mime: "video/mp4; codecs=\"avc1.4d4015\"", + format: mp4, + codec: avc1, + ), + 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", + itag: 242, + bitrate: 149589, + average_bitrate: 124706, + size: Some(2541351), + index_range: Some(Range( + start: 219, + end: 768, + )), + init_range: Some(Range( + start: 0, + end: 218, + )), + duration_ms: Some(163029), + width: 426, + height: 240, + fps: 30, + quality: "240p", + hdr: false, + mime: "video/webm; codecs=\"vp9\"", + format: webm, + codec: vp9, + ), + 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", + itag: 134, + bitrate: 537902, + average_bitrate: 383290, + size: Some(7810925), + index_range: Some(Range( + start: 740, + end: 1167, + )), + init_range: Some(Range( + start: 0, + end: 739, + )), + duration_ms: Some(163029), + width: 640, + height: 360, + fps: 30, + quality: "360p", + hdr: false, + mime: "video/mp4; codecs=\"avc1.4d401e\"", + format: mp4, + codec: avc1, + ), + 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", + itag: 243, + bitrate: 248858, + average_bitrate: 205556, + size: Some(4188954), + index_range: Some(Range( + start: 220, + end: 770, + )), + init_range: Some(Range( + start: 0, + end: 219, + )), + duration_ms: Some(163029), + width: 640, + height: 360, + fps: 30, + quality: "360p", + hdr: false, + mime: "video/webm; codecs=\"vp9\"", + format: webm, + codec: vp9, + ), + 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", + itag: 135, + bitrate: 978945, + average_bitrate: 722499, + size: Some(14723538), + index_range: Some(Range( + start: 740, + end: 1167, + )), + init_range: Some(Range( + start: 0, + end: 739, + )), + duration_ms: Some(163029), + width: 854, + height: 480, + fps: 30, + quality: "480p", + hdr: false, + mime: "video/mp4; codecs=\"avc1.4d401f\"", + format: mp4, + codec: avc1, + ), + 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", + itag: 244, + bitrate: 467884, + average_bitrate: 382209, + size: Some(7788899), + index_range: Some(Range( + start: 220, + end: 770, + )), + init_range: Some(Range( + start: 0, + end: 219, + )), + duration_ms: Some(163029), + width: 854, + height: 480, + fps: 30, + quality: "480p", + hdr: false, + mime: "video/webm; codecs=\"vp9\"", + format: webm, + codec: vp9, + ), + 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", + itag: 136, + bitrate: 1560439, + average_bitrate: 1207947, + size: Some(24616305), + index_range: Some(Range( + start: 739, + end: 1166, + )), + init_range: Some(Range( + start: 0, + end: 738, + )), + duration_ms: Some(163029), + width: 1280, + height: 720, + fps: 30, + quality: "720p", + hdr: false, + mime: "video/mp4; codecs=\"avc1.4d401f\"", + format: mp4, + codec: avc1, + ), + 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, + ), + 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, + bitrate: 929607, + average_bitrate: 722521, + size: Some(14723992), + index_range: Some(Range( + start: 220, + end: 770, + )), + init_range: Some(Range( + start: 0, + end: 219, + )), + duration_ms: Some(163029), + width: 1280, + height: 720, + fps: 30, + quality: "720p", + hdr: false, + mime: "video/webm; codecs=\"vp9\"", + format: webm, + codec: vp9, + ), + 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, + bitrate: 2250391, + average_bitrate: 1482051, + size: Some(30205331), + index_range: Some(Range( + start: 219, + end: 786, + )), + init_range: Some(Range( + start: 0, + end: 218, + )), + duration_ms: Some(163046), + width: 1280, + height: 720, + fps: 60, + quality: "720p60", + hdr: false, + mime: "video/webm; codecs=\"vp9\"", + format: webm, + codec: vp9, + ), + 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", + itag: 299, + bitrate: 3926810, + average_bitrate: 3044926, + size: Some(62057888), + index_range: Some(Range( + start: 740, + end: 1167, + )), + init_range: Some(Range( + start: 0, + end: 739, + )), + duration_ms: Some(163046), + width: 1920, + height: 1080, + fps: 60, + quality: "1080p60", + hdr: false, + mime: "video/mp4; codecs=\"avc1.64002a\"", + format: mp4, + codec: avc1, + ), + 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", + itag: 303, + bitrate: 3473307, + average_bitrate: 2713348, + size: Some(55300085), + index_range: Some(Range( + start: 219, + end: 792, + )), + init_range: Some(Range( + start: 0, + end: 218, + )), + duration_ms: Some(163046), + width: 1920, + height: 1080, + fps: 60, + quality: "1080p60", + hdr: false, + mime: "video/webm; codecs=\"vp9\"", + format: webm, + codec: vp9, + ), + ], + audio_streams: [ + AudioStream( + url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&c=TVHTML5&clen=934750&dur=163.061&ei=viioZtTdKteHi9oPl42KsAg&expire=1722318110&fvip=4&gir=yes&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&initcwndbps=1957500&ip=93.235.183.158&itag=249&keepalive=yes&lmt=1714877357172339&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=AJfQdSswRQIhAItfaWkRs94vqyae7GR4M1xHoQO2lduvNRFugRSf0h-IAiA9fdLOJMwPI8vAO2C13igyv2qGSpOlKQptS4sN6p5Ffw%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", + itag: 249, + bitrate: 53073, + average_bitrate: 45860, + size: 934750, + index_range: Some(Range( + start: 266, + end: 551, + )), + init_range: Some(Range( + start: 0, + end: 265, + )), + duration_ms: Some(163061), + mime: "audio/webm; codecs=\"opus\"", + format: webm, + codec: opus, + channels: Some(2), + loudness_db: Some(5.21), + track: None, + ), + 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", + itag: 250, + bitrate: 71197, + average_bitrate: 61109, + size: 1245582, + index_range: Some(Range( + start: 266, + end: 551, + )), + init_range: Some(Range( + start: 0, + end: 265, + )), + duration_ms: Some(163061), + mime: "audio/webm; codecs=\"opus\"", + format: webm, + codec: opus, + channels: Some(2), + loudness_db: Some(5.21), + track: None, + ), + 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", + itag: 140, + bitrate: 130268, + average_bitrate: 129508, + size: 2640283, + index_range: Some(Range( + start: 632, + end: 867, + )), + init_range: Some(Range( + start: 0, + end: 631, + )), + duration_ms: Some(163096), + mime: "audio/mp4; codecs=\"mp4a.40.2\"", + format: m4a, + codec: mp4a, + channels: Some(2), + loudness_db: Some(5.2200003), + track: None, + ), + 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", + itag: 251, + bitrate: 140833, + average_bitrate: 121691, + size: 2480393, + index_range: Some(Range( + start: 266, + end: 551, + )), + init_range: Some(Range( + start: 0, + end: 265, + )), + duration_ms: Some(163061), + mime: "audio/webm; codecs=\"opus\"", + format: webm, + codec: opus, + channels: Some(2), + loudness_db: Some(5.21), + track: None, + ), + ], + subtitles: [ + Subtitle( + url: "https://www.youtube.com/api/timedtext?v=pPvd8UxmSbQ&ei=viioZtTdKteHi9oPl42KsAg&caps=asr&opi=112496729&exp=xbt&xoaf=5&hl=en&ip=0.0.0.0&ipbits=0&expire=1722321710&sparams=ip,ipbits,expire,v,ei,caps,opi,exp,xoaf&signature=7B002D0C2B79781E0E46F374D5BB53C6059A5252.E7B05ECC8D799DB96F3C21B727A0161E0032CDFA&key=yt8&lang=en", + lang: "en", + lang_name: "English", + auto_generated: false, + ), + ], + expires_in_seconds: 21540, + hls_manifest_url: None, + dash_manifest_url: None, + preview_frames: [ + Frameset( + url_template: "https://i.ytimg.com/sb/pPvd8UxmSbQ/storyboard3_L0/default.jpg?sqp=-oaymwGbA0g48quKqQOSA4gBAZUBAAAEQpgBMqABPKgBBLABELABDbABDLABELABFbABH7ABJrABLbABDrABDrABD7ABErABF7ABK7ABLLABKbABD7ABDrABELABFbABH7ABKrABMrABKbABD7ABEbABFLABGLABJrABPbABOLABLbABEbABFLABHrABKrABMbABS7ABR7ABNrABFbABHLABKbABLrABObABR7ABTbABP7ABJbABLrABN7ABPbABR7ABUrABUbABRbABM7ABQLABQrABQ7ABTLABRLABRrABQ7gBEbgBEbgBFbgBI7gBRLgBQ7gBQ7gBQ7gBEbgBE7gBFrgBL7gBQ7gBQ7gBQ7gBQ7gBFbgBFrgBKbgBQ7gBQ7gBQ7gBQ7gBQ7gBI7gBL7gBQ7gBQ7gBQ7gBQ7gBQ7gBQ7gBRLgBQ7gBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQ7gBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQrgBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQrgBQrgBQ7gBQ7gBQ7gBQrgBQrgBQrgBQrgBQqLzl_8DBgjf8LPxBQ==&sigh=rs$AOn4CLCsCT8Lprh2S0ptmCRsWH7VtDl3YQ", + 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, + ), + Frameset( + url_template: "https://i.ytimg.com/sb/pPvd8UxmSbQ/storyboard3_L1/M$M.jpg?sqp=-oaymwGbA0g48quKqQOSA4gBAZUBAAAEQpgBMqABPKgBBLABELABDbABDLABELABFbABH7ABJrABLbABDrABDrABD7ABErABF7ABK7ABLLABKbABD7ABDrABELABFbABH7ABKrABMrABKbABD7ABEbABFLABGLABJrABPbABOLABLbABEbABFLABHrABKrABMbABS7ABR7ABNrABFbABHLABKbABLrABObABR7ABTbABP7ABJbABLrABN7ABPbABR7ABUrABUbABRbABM7ABQLABQrABQ7ABTLABRLABRrABQ7gBEbgBEbgBFbgBI7gBRLgBQ7gBQ7gBQ7gBEbgBE7gBFrgBL7gBQ7gBQ7gBQ7gBQ7gBFbgBFrgBKbgBQ7gBQ7gBQ7gBQ7gBQ7gBI7gBL7gBQ7gBQ7gBQ7gBQ7gBQ7gBQ7gBRLgBQ7gBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQ7gBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQrgBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQrgBQrgBQ7gBQ7gBQ7gBQrgBQrgBQrgBQrgBQqLzl_8DBgjf8LPxBQ==&sigh=rs$AOn4CLBXrdgfuYV1WLnTGXqZtSAUm8oZCA", + frame_width: 80, + frame_height: 45, + page_count: 1, + total_count: 83, + duration_per_frame: 2000, + frames_per_page_x: 10, + frames_per_page_y: 10, + ), + Frameset( + url_template: "https://i.ytimg.com/sb/pPvd8UxmSbQ/storyboard3_L2/M$M.jpg?sqp=-oaymwGbA0g48quKqQOSA4gBAZUBAAAEQpgBMqABPKgBBLABELABDbABDLABELABFbABH7ABJrABLbABDrABDrABD7ABErABF7ABK7ABLLABKbABD7ABDrABELABFbABH7ABKrABMrABKbABD7ABEbABFLABGLABJrABPbABOLABLbABEbABFLABHrABKrABMbABS7ABR7ABNrABFbABHLABKbABLrABObABR7ABTbABP7ABJbABLrABN7ABPbABR7ABUrABUbABRbABM7ABQLABQrABQ7ABTLABRLABRrABQ7gBEbgBEbgBFbgBI7gBRLgBQ7gBQ7gBQ7gBEbgBE7gBFrgBL7gBQ7gBQ7gBQ7gBQ7gBFbgBFrgBKbgBQ7gBQ7gBQ7gBQ7gBQ7gBI7gBL7gBQ7gBQ7gBQ7gBQ7gBQ7gBQ7gBRLgBQ7gBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQ7gBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQrgBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQrgBQrgBQ7gBQ7gBQ7gBQrgBQrgBQrgBQrgBQqLzl_8DBgjf8LPxBQ==&sigh=rs$AOn4CLCRazj84zMuwJLaCCc_PiUakX_YdQ", + frame_width: 160, + frame_height: 90, + page_count: 4, + total_count: 83, + duration_per_frame: 2000, + frames_per_page_x: 5, + frames_per_page_y: 5, + ), + ], + client_type: tv, + visitor_data: Some("CgtrbXRsWU4wUEtXbyi-0aC1BjIKCgJERRIEEgAgZg%3D%3D"), +) diff --git a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_tvhtml5embed.snap b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_tvhtml5embed.snap index ee018d8..0edfbfa 100644 --- a/src/client/snapshots/rustypipe__client__player__tests__map_player_data_tvhtml5embed.snap +++ b/src/client/snapshots/rustypipe__client__player__tests__map_player_data_tvhtml5embed.snap @@ -5,7 +5,7 @@ expression: map_res.c VideoPlayer( details: VideoPlayerDetails( id: "pPvd8UxmSbQ", - name: "Inspiring Cinematic Uplifting (Creative Commons)", + name: Some("Inspiring Cinematic Uplifting (Creative Commons)"), description: Some("► Download Music: http://bit.ly/2QLufeh\nImportant to know! You can download this track for free through Patreon. You will pay only for new tracks! So join others and let\'s make next track together!\n\n► MORE MUSIC: Become my patron and get access to all our music from Patreon library. More Info here: http://bit.ly/2JJDFHb\n\n► Additional edit versions of this track you can download here: http://bit.ly/2WdRinT (5 versions)\n--------------------- \n\n►DESCRIPTION:\nInspiring Cinematic Uplifting Trailer Background - epic music for trailer video project with powerful drums, energetic orchestra and gentle piano melody. This motivational cinematic theme will work as perfect background for beautiful epic moments, landscapes, nature, drone video, motivational products and achievements.\n--------------------- \n\n► LICENSE:\n● If you need a license for your project, you can purchase it here: \nhttps://1.envato.market/ajicu (Audiojungle)\nhttps://bit.ly/3fWZZuI (Pond5)\n--------------------- \n\n► LISTEN ON:\n● Spotify - https://spoti.fi/2sHm3UH\n● Apple Music - https://apple.co/3qBjbUO\n--------------------- \n\n► SUBSCRIBE FOR MORE: \nPatreon: http://bit.ly/2JJDFHb\nYoutube: http://bit.ly/2AYBzfA\nFacebook: http://bit.ly/2T6dTx5\nInstagram: http://bit.ly/2BHJ8rB\nTwitter: http://bit.ly/2MwtOlT\nSoundCloud: http://bit.ly/2IwVVmt\nAudiojungle: https://1.envato.market/ajrsm\nPond5: https://bit.ly/2TLi1rW\n--------------------- \n►Photo by Vittorio Staffolani from Pexels\n--------------------- \n\nFAQ:\n\n► Can I use this music in my videos? \n● Sure! Just download this track and you are ready to use it! We only ask to credit us. \n-------------------- \n\n► What is \"Creative Commons\"? \nCreative Commons is a system that allows you to legally use “some rights reserved” music, movies, images, and other content — all for free. Licensees may copy, distribute, display and perform the work and make derivative works and remixes based on it only if they give the author or licensor the credits.\n-------------------- \n\n► Will I have any copyright issues with this track?\n● No, you should not have any copyright problems with this track!\n-------------------- \n\n► Is it necessary to become your patron?\n● No it\'s not necessary. But we recommend you to become our patron because you will get access to huge library of music. You will download only highest quality files. You will find additional edited versions of every track. You always be tuned with our news. You will find music not only from Roman Senyk but also from another talented authors.\n-------------------- \n\n► Why I received a copyright claim when I used this track?\n● Do not panic! This is very common situation. Content ID fingerprint system can mismatch our music. Just dispute the claim by showing our original track. Or send us the link to your video (romansenykmusic@gmail.com) and attach some screenshot with claim information. Claim will be released until 24 hours!\n\n► How to credit you in my video?\n● Just add to the description of your project information about Author, Name of Song and the link to our original track. Or copy and paste:\n\nMusic Info: Inspiring Cinematic Uplifting by RomanSenykMusic.\nMusic Link: https://youtu.be/pPvd8UxmSbQ\n--------------------- \n\n► If you have any questions, you can write in the comments for this video or by email: romansenykmusic@gmail.com\n--------------------- \n\nStay tuned! The best is yet to come! \nThanks For Listening!\nRoman Senyk"), duration: 163, thumbnail: [ @@ -35,11 +35,9 @@ VideoPlayer( height: 1080, ), ], - channel: ChannelId( - id: "UCbxxEi-ImPlbLx5F-fHetEg", - name: "RomanSenykMusic - Royalty Free Music", - ), - view_count: 426567, + channel_id: "UCbxxEi-ImPlbLx5F-fHetEg", + channel_name: Some("RomanSenykMusic - Royalty Free Music"), + view_count: Some(426567), keywords: [ "no copyright music", "background music", diff --git a/src/model/mod.rs b/src/model/mod.rs index 99744ec..e54ab60 100644 --- a/src/model/mod.rs +++ b/src/model/mod.rs @@ -156,7 +156,7 @@ pub struct VideoPlayerDetails { /// Unique YouTube video ID pub id: String, /// Video title - pub name: String, + pub name: Option, /// Video description in plaintext format pub description: Option, /// Video duration in seconds @@ -165,10 +165,12 @@ pub struct VideoPlayerDetails { pub duration: u32, /// Video thumbnail pub thumbnail: Vec, - /// Channel of the video - pub channel: ChannelId, + /// Channel ID of the video + pub channel_id: String, + /// Channel name of the video + pub channel_name: Option, /// Number of views / current viewers in case of a livestream. - pub view_count: u64, + pub view_count: Option, /// List of words that describe the topic of the video pub keywords: Vec, /// True if the video is an active livestream diff --git a/src/model/traits.rs b/src/model/traits.rs index e493f4f..950de5d 100644 --- a/src/model/traits.rs +++ b/src/model/traits.rs @@ -233,6 +233,7 @@ macro_rules! yt_entity_owner_music { }; } +/* impl YtEntity for VideoPlayer { fn id(&self) -> &str { &self.details.id @@ -243,14 +244,33 @@ impl YtEntity for VideoPlayer { } fn channel_id(&self) -> Option<&str> { - Some(&self.details.channel.id) + Some(&self.details.channel_id) } fn channel_name(&self) -> Option<&str> { - Some(&self.details.channel.name) + self.details.channel_name.as_deref() } } +impl YtEntity for VideoPlayerDetails { + fn id(&self) -> &str { + &self.channel_id + } + + fn name(&self) -> &str { + &self.name + } + + fn channel_id(&self) -> Option<&str> { + Some(&self.channel_id) + } + + fn channel_name(&self) -> Option<&str> { + self.channel_name.as_deref() + } +} +*/ + impl YtEntity for Channel { fn id(&self) -> &str { &self.id @@ -269,7 +289,6 @@ impl YtEntity for Channel { } } -yt_entity_owner! {VideoPlayerDetails} yt_entity_owner_opt! {Playlist} yt_entity! {ChannelId} yt_entity_owner! {VideoDetails} diff --git a/testfiles/player/tv_video.json b/testfiles/player/tv_video.json new file mode 100644 index 0000000..d50167b --- /dev/null +++ b/testfiles/player/tv_video.json @@ -0,0 +1,3150 @@ +{ + "adBreakHeartbeatParams": "Q0FBJTNE", + "adPlacements": [ + { + "adPlacementRenderer": { + "adSlotLoggingData": { + "serializedSlotAdServingDataEntry": "ChMIhK_hvbbNhwMV4mxBAh1Ajg-_Gh8Y____________AVgDYhBYbUZTaGNKbXg2SWFhT0tZ" + }, + "config": { + "adPlacementConfig": { + "adTimeOffset": { + "offsetEndMilliseconds": "-1", + "offsetStartMilliseconds": "-1" + }, + "hideCueRangeMarker": false, + "kind": "AD_PLACEMENT_KIND_END" + } + }, + "renderer": { + "adBreakServiceRenderer": { + "getAdBreakUrl": "https://www.youtube.com/get_midroll_info?ei=viioZtTdKteHi9oPl42KsAg&m_pos=-1&token=AOmNmeXu52UnUG2QWIKbTcSU5IN7aRqAD7AnsGputWN5MjijreEB0a3_FqdUUcqrujBE8UFbNhaOeTK0_Cl0Ijyx4zKw2_wJ9lJUtspoyG47zJMGQ6-Xp3xepASy8pa2BmjiETHWLiDCsI1Vji3p7ag3Ofz8nfqwdPVn_tarHzGQk2iTVmkcg-nIWjHX-_LH7iiTjRyOtlPwKmbzkJ5BoYA4pb1_pUk04oVMIoxOYmBS1VqMtpUfeNV4gL4yTNsNRHMHAqXx-oBArC6hDp-Xd-mawCeCaEMmAZHUf-LG7wYT9Brd33MqT3lx6UvIgX3deBnYZbvWpkYjMKea6Kdxwis5QLKUkEnCjw&index=1&cpn=[CPN]&lact=[LACT]&vis=[VIS]&ad_block=[AD_BLOCK]&tsla=[TSLA]&bid=[BISCOTTI_ID]&dt=[DT]&flash=[FLASH]&frm=[FRM]&ca_type=[CA_TYPE]&u_tz=[U_TZ]&u_his=[U_HIS]&u_java=[U_JAVA]&u_h=[U_H]&u_w=[U_W]&u_ah=[U_AH]&u_aw=[U_AW]&u_cd=[U_CD]&u_nplug=[U_NPLUG]&u_nmime=[U_NMIME]&p_w=[P_W]&p_h=[P_H]&c=TVHTML5&cver=7.20240724.13.00&m_pos_ms=-1", + "prefetchMilliseconds": "10000" + } + } + } + } + ], + "adSlots": [ + { + "adSlotRenderer": { + "adSlotMetadata": { + "adSlotLoggingData": { + "serializedSlotAdServingDataEntry": "ChMIhK_hvbbNhwMV4mxBAh1Ajg-_GhgQAUgBWAFiEGhZaXp6VWxTSHZwVW5aVGU=" + }, + "slotId": "hYizzUlSHvpUnZTe", + "slotType": "SLOT_TYPE_PLAYER_BYTES", + "triggerEvent": "SLOT_TRIGGER_EVENT_BEFORE_CONTENT" + }, + "fulfillmentContent": { + "fulfilledLayout": { + "playerBytesAdLayoutRenderer": { + "adLayoutMetadata": { + "adLayoutLoggingData": { + "serializedAdServingDataEntry": "IBAwAjgGShMIhK_hvbbNhwMV4mxBAh1Ajg-_UgYQAUgBWAFoAXAs" + }, + "layoutId": "qLYvxrzZ3iSfwRkS", + "layoutType": "LAYOUT_TYPE_MEDIA" + }, + "layoutExitMuteTriggers": [ + { + "id": "67c0ba89-0000-2697-a1b9-14223bb5ae26", + "skipRequestedTrigger": { + "triggeringLayoutId": "bj8kp31ew2buiJZs" + } + } + ], + "layoutExitNormalTriggers": [ + { + "id": "67c0ba88-0000-2697-a1b9-14223bb5ae26", + "onLayoutSelfExitRequestedTrigger": { + "triggeringLayoutId": "qLYvxrzZ3iSfwRkS" + } + } + ], + "renderingContent": { + "instreamVideoAdRenderer": { + "adLayoutLoggingData": { + "serializedAdServingDataEntry": "IBAwAjgGShMIhK_hvbbNhwMV4mxBAh1Ajg-_UgYQAUgBWAFoAXAs" + }, + "csiParameters": [ + { + "key": "ad_at", + "value": "15_2" + } + ], + "elementId": "qLYvxrzZ3iSfwRkS", + "externalVideoId": "1AurP5pjb6Y", + "layoutId": "qLYvxrzZ3iSfwRkS", + "pings": { + "abandonPings": [ + { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=video_abandon&ad_mt=%5BAD_MT%5D&ad_tos=%5BAD_TOS%5D&ad_wat=%5BAD_WAT%5D&final=%5BFINAL%5D&acvw=%5BVIEWABILITY%5D&gv=%5BGOOGLE_VIEWABILITY%5D" + }, + { + "baseUrl": "https://ade.googlesyndication.com/ddm/activity_ext/dc_pubid=2;dc_exteid=6023305135921294682;met=1;ecn1=1;etm1=0;eid1=22;acvw=[VIEWABILITY];gv=[GOOGLE_VIEWABILITY];dc_eps=AHas8cCjm-RBWPebucHZvU1e-tGArdH0XoHBQYENAX3Vl_wAXLRA3Tepms5-odM4CZvmICkeg-q4ZbKHOPy80OIz6Q;dc_oe=CgwIABUAAAAAHQAAAABIAFjddWiB9LK-AYIBNAoMCAAVAAAAAB0AAAAAEgwIABUAAAAAHQAAAAAiFAjyk8fwT6gCprCUmwOwAsfXjeUDQDuKAYoBaHR0cHM6Ly93d3cuYW1hem9uLmRlL3N0b3Jlcy9wYWdlLzk1NEFFNzAxLUZDOUEtNDUyRi1BQjUzLTg3QzNBNUVGNkU0OT9pbmdyZXNzPTImdmlzaXRJZD1hM2Y5YjYwOS0yOTdhLTQ1MDktOTA2ZS1kNjQ5ZmI4YTUwMjImcmVmXz1hc3RfYmxu?" + } + ], + "activeViewFullyViewableAudibleHalfDurationPings": [ + { + "baseUrl": "https://www.youtube.com/pcs/activeview?xai=AKAOjsuYvygzKdiimSKQnMRy2Y1aBUXaMkl9VlWBeRBhjHMe4hRGx3l1u1Lhk6PgQ7ucL6KC3uNKqeGQ1DX-BZZn5VFfxI86UlbnIcJn2sQRGSTU_CQcLbjM6pXKCFJaiIYptF8obGu3d4HPZaAheJsqM6gTdMqhbQDZ0Q&sig=Cg0ArKJSzC1Qew4CuMi_EAE&ad_cpn=%5BAD_CPN%5D&id=lidarv&acvw=%5BVIEWABILITY%5D&gv=%5BGOOGLE_VIEWABILITY%5D&avgm=1" + }, + { + "baseUrl": "https://pagead2.googlesyndication.com/activeview_ext?id=lidarv&dc_pubid=2&dc_exteid=6023305135921294682&acvw=[VIEWABILITY]&gv=[GOOGLE_VIEWABILITY]&dc_eps=AHas8cCjm-RBWPebucHZvU1e-tGArdH0XoHBQYENAX3Vl_wAXLRA3Tepms5-odM4CZvmICkeg-q4ZbKHOPy80OIz6Q&" + } + ], + "activeViewMeasurablePings": [ + { + "baseUrl": "https://www.youtube.com/pcs/activeview?xai=AKAOjsuYvygzKdiimSKQnMRy2Y1aBUXaMkl9VlWBeRBhjHMe4hRGx3l1u1Lhk6PgQ7ucL6KC3uNKqeGQ1DX-BZZn5VFfxI86UlbnIcJn2sQRGSTU_CQcLbjM6pXKCFJaiIYptF8obGu3d4HPZaAheJsqM6gTdMqhbQDZ0Q&sig=Cg0ArKJSzC1Qew4CuMi_EAE&ad_cpn=%5BAD_CPN%5D&id=lidarv&acvw=%5BVIEWABILITY%5D&gv=%5BGOOGLE_VIEWABILITY%5D&avm=1" + }, + { + "baseUrl": "https://pagead2.googlesyndication.com/activeview_ext?id=lidarv&avm=1&dc_pubid=2&dc_exteid=6023305135921294682&acvw=[VIEWABILITY]&gv=[GOOGLE_VIEWABILITY]&dc_eps=AHas8cCjm-RBWPebucHZvU1e-tGArdH0XoHBQYENAX3Vl_wAXLRA3Tepms5-odM4CZvmICkeg-q4ZbKHOPy80OIz6Q&" + } + ], + "activeViewTracking": { + "identifier": "2fdb9672-b24d-44e7-89dd-bb2380d0102e", + "trafficType": "ACTIVE_VIEW_TRAFFIC_TYPE_VIDEO" + }, + "activeViewViewablePings": [ + { + "baseUrl": "https://www.youtube.com/pcs/activeview?xai=AKAOjsuYvygzKdiimSKQnMRy2Y1aBUXaMkl9VlWBeRBhjHMe4hRGx3l1u1Lhk6PgQ7ucL6KC3uNKqeGQ1DX-BZZn5VFfxI86UlbnIcJn2sQRGSTU_CQcLbjM6pXKCFJaiIYptF8obGu3d4HPZaAheJsqM6gTdMqhbQDZ0Q&sig=Cg0ArKJSzC1Qew4CuMi_EAE&ad_cpn=%5BAD_CPN%5D&id=lidarv&acvw=%5BVIEWABILITY%5D&gv=%5BGOOGLE_VIEWABILITY%5D" + }, + { + "baseUrl": "https://pagead2.googlesyndication.com/activeview_ext?id=lidarv&dc_pubid=2&dc_exteid=6023305135921294682&acvw=[VIEWABILITY]&gv=[GOOGLE_VIEWABILITY]&dc_eps=AHas8cCjm-RBWPebucHZvU1e-tGArdH0XoHBQYENAX3Vl_wAXLRA3Tepms5-odM4CZvmICkeg-q4ZbKHOPy80OIz6Q&" + } + ], + "clickthroughPings": [ + { + "baseUrl": "https://ad.doubleclick.net/ddm/trackclk/N1633547.2503905DBM-YOUTUBE/B32141750.399292929;dc_trk_aid=590851777;dc_trk_cid=217560393;dc_dbm_token=ALenVzUAAAA8CjQKDAgAFQAAAAAdAAAAABIMCAAVAAAAAB0AAAAAIhQI8pPH8E-oAqawlJsDsALH143lA0A7EPnOvZADLdvaf_mHXQGCW8FGOebj0Q==;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;tfua=;ltd=;dc_tdv=1;dc_transparent=1;;ord=2078724836;dc_rui=1;dc_exteid=6219084455947688155;dc_av=0;dc_sk=0;dc_ctype=87;dc_eps=AHas8cByi8LQENSFYgdLQE02cdpUD8KkvsaR7gAU972qS_vYdcDWHOUHOoAWME2uq_nIE9dGk4G_lUNrC7l3D7xTFA;dc_pubid=2;dc_btype=3?gclid=EAIaIQobChMIhK_hvbbNhwMV4mxBAh1Ajg-_EAEYASAAEgJsmvD_BwE" + } + ], + "closePings": [ + { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=adclose&ad_mt=%5BAD_MT%5D&acvw=%5BVIEWABILITY%5D&gv=%5BGOOGLE_VIEWABILITY%5D" + } + ], + "completePings": [ + { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=videoplaytime100&ad_mt=%5BAD_MT%5D&acvw=%5BVIEWABILITY%5D&gv=%5BGOOGLE_VIEWABILITY%5D" + }, + { + "baseUrl": "https://ade.googlesyndication.com/ddm/activity_ext/dc_pubid=2;dc_exteid=6023305135921294682;met=1;ecn1=1;etm1=0;eid1=13;acvw=[VIEWABILITY];gv=[GOOGLE_VIEWABILITY];dc_eps=AHas8cCjm-RBWPebucHZvU1e-tGArdH0XoHBQYENAX3Vl_wAXLRA3Tepms5-odM4CZvmICkeg-q4ZbKHOPy80OIz6Q;dc_oe=CgwIABUAAAAAHQAAAABIAFjddWiB9LK-AYIBNAoMCAAVAAAAAB0AAAAAEgwIABUAAAAAHQAAAAAiFAjyk8fwT6gCprCUmwOwAsfXjeUDQDuKAYoBaHR0cHM6Ly93d3cuYW1hem9uLmRlL3N0b3Jlcy9wYWdlLzk1NEFFNzAxLUZDOUEtNDUyRi1BQjUzLTg3QzNBNUVGNkU0OT9pbmdyZXNzPTImdmlzaXRJZD1hM2Y5YjYwOS0yOTdhLTQ1MDktOTA2ZS1kNjQ5ZmI4YTUwMjImcmVmXz1hc3RfYmxu?" + } + ], + "errorPings": [ + { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=videoplayfailed%5BERRORCODE%5D" + } + ], + "firstQuartilePings": [ + { + "baseUrl": "https://ade.googlesyndication.com/ddm/activity_ext/dc_pubid=2;dc_exteid=6023305135921294682;met=1;ecn1=1;etm1=0;eid1=960584;acvw=[VIEWABILITY];gv=[GOOGLE_VIEWABILITY];dc_eps=AHas8cCjm-RBWPebucHZvU1e-tGArdH0XoHBQYENAX3Vl_wAXLRA3Tepms5-odM4CZvmICkeg-q4ZbKHOPy80OIz6Q?" + } + ], + "fullscreenPings": [ + { + "baseUrl": "https://ade.googlesyndication.com/ddm/activity_ext/dc_pubid=2;dc_exteid=6023305135921294682;met=1;ecn1=1;etm1=0;eid1=19;acvw=[VIEWABILITY];gv=[GOOGLE_VIEWABILITY];dc_eps=AHas8cCjm-RBWPebucHZvU1e-tGArdH0XoHBQYENAX3Vl_wAXLRA3Tepms5-odM4CZvmICkeg-q4ZbKHOPy80OIz6Q?" + } + ], + "impressionPings": [ + { + "baseUrl": "https://ad.doubleclick.net/ddm/trackimp/N1633547.2503905DBM-YOUTUBE/B32141750.399292929;dc_trk_aid=590851777;dc_trk_cid=217560393;dc_dbm_token=ALenVzUAAAA8CjQKDAgAFQAAAAAdAAAAABIMCAAVAAAAAB0AAAAAIhQI8pPH8E-oAqawlJsDsALH143lA0A7EPnOvZADLdvaf_mHXQGCW8FGOebj0Q==;ord=1584798438;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;tfua=;ltd=;dc_tdv=1;dc_rui=1;dc_exteid=6023305135921294682;dc_av=536;dc_sk=0;dc_ctype=87;dc_ref=http://www.youtube.com/video/pPvd8UxmSbQ;dc_eps=AHas8cByi8LQENSFYgdLQE02cdpUD8KkvsaR7gAU972qS_vYdcDWHOUHOoAWME2uq_nIE9dGk4G_lUNrC7l3D7xTFA;dc_pubid=2;dc_btype=23?gclid=EAIaIQobChMIhK_hvbbNhwMV4mxBAh1Ajg-_EAEYASAAEgJsmvD_BwE" + }, + { + "baseUrl": "https://www.youtube.com/pagead/adview?ai=CSODsviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEogNP0EGoGWEphKm2zAXuMFqKT-k5rj_lTq_4eqLXXh_fNB42OSq6scXOPRfDCe932D2dJxReIkY3y3mWs162f6lCoX0EhM3MNFywuPDXy8eWyatBkocJ-a3y9A-_WINkovnP-kxvVh-EpSXzSEVJIBKTjZ_sRmEnGmAv_sNHw2_9O8viQpFUa3ylJHFHmOVPPienp-3r4hNx1Evp3oMsDRq53GFTkFuKSXYREj2kKoHSZQ9r8Q_Zkqlx9GrmyB0EGYa_QP0jnnucYWCTWgouUab7FqeGTWv6969-YbFtfQ4bZjrRXD0N_pgmpjHDZFF95ltCgoTdfk3hf4kBq5ESC_I47_oVM-oLLvedgKuiVglXztxuIDIQF64nA4jZAXBtTuBg72L4C5HyROwUIKf6lwpmqC0FETCPrw1Pbv3H0N7XMVSjnVzw-CpNyHmJIrFbrz7F5cGuAYObSFdv0jU2s8fG0kSB1oERHOQCwGhyviuffgTSq3SYxy51vNiNGPiuZFLeY5tDuxFjmUF6o1liaOrDbarOMGcrlXBGrYxqO3IPS7ZrwAS_yJbw4ASIBfKTx_BPkgUECAMQBKAGV9gGBYAHjNzimAOQBwSoB-u2sQKoB_mxsQKoB4C6sQKoB-edsQKoB-idsQKoB-q3sQKoB6e1sQKoB--1sQKoB_C1sQKoB4KqsQKoB4QIqAeo0huoB7YHqAekmrECqAeRn7ECqAewm7ECqAeusbECqAfmvLECqAemqrECqAfmt7ECqAfKurECqAfswLECqAf9srECqAf3uLECqAf4uLECqAfbxbECqAeBxhuoB_yvsQKoB6vFG6gH49kbqAe3qbECqAeXurECqAfpq7ECkggLMUF1clA1cGpiNlnSCDAIgMGAEBABGF4yB6KCgOCfgA06DIDCgICAEICAgICAEEjZoNI1UBRY8P7gvbbNhwPyCB9jYS15dC1ob3N0LXB1Yi05MzQ4MTA1NjA1NTM1MzM0yAkZyAmxAaELwVo0H77w5FC6C0YIARABGAYgAigBMBBAB0gBYABoAHABiAEAmAEBogESCgAYACAAWAFgAHABqAIE2AIBqAEB2AEDgAIBiAIHqAIAtQKhdL5CsBO73bcYuBP___________8BsBQBwBWJgIBAkBYBqBYBihcYCAMYASABKAEwATgBQAFIAVABWAFgAnABoBcBuhcEKAAwANIXCRIC4k4YVyIBAA&sigh=RT6riC-jhQI&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&ad_cpn=%5BAD_CPN%5D&lact=%5BLACT%5D" + }, + { + "baseUrl": "https://www.youtube.com/api/stats/ads?ver=2&ns=1&event=2&device=7&content_v=pPvd8UxmSbQ&el=leanback&ei=viioZtTdKteHi9oPl42KsAg&devicever=7.20240724.13.00&bti=16047576&format=15_2_0&break_type=1&conn=[CONN]&cpn=[CPN]&lact=[LACT]&m_pos=0&mt=[MT]&p_h=[P_H]&p_w=[P_W]&rwt=[RWT]&sdkv=h.3.0.0&slot_pos=0&vis=[VIS]&vol=[VOL]&wt=[WT]&ad_cpn=[AD_CPN]&ad_id=%2C642615623253&ad_len=15000&ad_mt=[AD_MT]&ad_sys=YT%3AAdSense-Viral%2CAdSense-Viral&ad_v=1AurP5pjb6Y&aqi=viioZoTYLOLZhcIPwJy--As&ad_rmp=1&sli=1&slfs=1&loginael=1" + } + ], + "mutePings": [ + { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=admute&ad_mt=%5BAD_MT%5D&acvw=%5BVIEWABILITY%5D&gv=%5BGOOGLE_VIEWABILITY%5D" + }, + { + "baseUrl": "https://ade.googlesyndication.com/ddm/activity_ext/dc_pubid=2;dc_exteid=6023305135921294682;met=1;ecn1=1;etm1=0;eid1=16;acvw=[VIEWABILITY];gv=[GOOGLE_VIEWABILITY];dc_eps=AHas8cCjm-RBWPebucHZvU1e-tGArdH0XoHBQYENAX3Vl_wAXLRA3Tepms5-odM4CZvmICkeg-q4ZbKHOPy80OIz6Q?" + } + ], + "pausePings": [ + { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=adpause&ad_mt=%5BAD_MT%5D&acvw=%5BVIEWABILITY%5D&gv=%5BGOOGLE_VIEWABILITY%5D" + }, + { + "baseUrl": "https://ade.googlesyndication.com/ddm/activity_ext/dc_pubid=2;dc_exteid=6023305135921294682;met=1;ecn1=1;etm1=0;eid1=15;acvw=[VIEWABILITY];gv=[GOOGLE_VIEWABILITY];dc_eps=AHas8cCjm-RBWPebucHZvU1e-tGArdH0XoHBQYENAX3Vl_wAXLRA3Tepms5-odM4CZvmICkeg-q4ZbKHOPy80OIz6Q?" + } + ], + "resumePings": [ + { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=adresume&ad_mt=%5BAD_MT%5D&acvw=%5BVIEWABILITY%5D&gv=%5BGOOGLE_VIEWABILITY%5D" + }, + { + "baseUrl": "https://ade.googlesyndication.com/ddm/activity_ext/dc_pubid=2;dc_exteid=6023305135921294682;met=1;ecn1=1;etm1=0;eid1=17;acvw=[VIEWABILITY];gv=[GOOGLE_VIEWABILITY];dc_eps=AHas8cCjm-RBWPebucHZvU1e-tGArdH0XoHBQYENAX3Vl_wAXLRA3Tepms5-odM4CZvmICkeg-q4ZbKHOPy80OIz6Q?" + } + ], + "rewindPings": [ + { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=adrewind&ad_mt=%5BAD_MT%5D&acvw=%5BVIEWABILITY%5D&gv=%5BGOOGLE_VIEWABILITY%5D" + } + ], + "secondQuartilePings": [ + { + "baseUrl": "https://ade.googlesyndication.com/ddm/activity_ext/dc_pubid=2;dc_exteid=6023305135921294682;met=1;ecn1=1;etm1=0;eid1=18;acvw=[VIEWABILITY];gv=[GOOGLE_VIEWABILITY];dc_eps=AHas8cCjm-RBWPebucHZvU1e-tGArdH0XoHBQYENAX3Vl_wAXLRA3Tepms5-odM4CZvmICkeg-q4ZbKHOPy80OIz6Q?" + } + ], + "startPings": [ + { + "baseUrl": "https://ade.googlesyndication.com/ddm/activity_ext/dc_pubid=2;dc_exteid=6023305135921294682;met=1;ecn1=1;etm1=0;eid1=11;acvw=[VIEWABILITY];gv=[GOOGLE_VIEWABILITY];dc_eps=AHas8cCjm-RBWPebucHZvU1e-tGArdH0XoHBQYENAX3Vl_wAXLRA3Tepms5-odM4CZvmICkeg-q4ZbKHOPy80OIz6Q?" + } + ], + "thirdQuartilePings": [ + { + "baseUrl": "https://ade.googlesyndication.com/ddm/activity_ext/dc_pubid=2;dc_exteid=6023305135921294682;met=1;ecn1=1;etm1=0;eid1=960585;acvw=[VIEWABILITY];gv=[GOOGLE_VIEWABILITY];dc_eps=AHas8cCjm-RBWPebucHZvU1e-tGArdH0XoHBQYENAX3Vl_wAXLRA3Tepms5-odM4CZvmICkeg-q4ZbKHOPy80OIz6Q?" + } + ], + "unmutePings": [ + { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=adunmute&ad_mt=%5BAD_MT%5D&acvw=%5BVIEWABILITY%5D&gv=%5BGOOGLE_VIEWABILITY%5D" + }, + { + "baseUrl": "https://ade.googlesyndication.com/ddm/activity_ext/dc_pubid=2;dc_exteid=6023305135921294682;met=1;ecn1=1;etm1=0;eid1=149645;acvw=[VIEWABILITY];gv=[GOOGLE_VIEWABILITY];dc_eps=AHas8cCjm-RBWPebucHZvU1e-tGArdH0XoHBQYENAX3Vl_wAXLRA3Tepms5-odM4CZvmICkeg-q4ZbKHOPy80OIz6Q?" + } + ] + }, + "playerVars": "suppress_creator_endscreen=1&is_trueview_action=1&length_seconds=15&video_id=1AurP5pjb6Y&encoded_ad_playback_context=CA8QAioLcFB2ZDhVeG1TYlFCF3ZpaW9ab1RZTE9MWmhjSVB3SnktLUFzYAF1yvVwP4ABmHWKAycgEDACOAZKEwiEr-G9ts2HAxXibEECHUCOD79SBhABSAFYAWgBcCyQA9X8gPfZEg%253D%253D&ad_query_id=viioZoTYLOLZhcIPwJy--As&break_type=1&adformat=15_2&player_response=%7B%22responseContext%22%3A%7B%22serviceTrackingParams%22%3A%5B%7B%22service%22%3A%22GFEEDBACK%22%2C%22params%22%3A%5B%7B%22key%22%3A%22ipcc%22%2C%22value%22%3A%220%22%7D%2C%7B%22key%22%3A%22is_alc_surface%22%2C%22value%22%3A%22false%22%7D%2C%7B%22key%22%3A%22is_viewed_live%22%2C%22value%22%3A%22False%22%7D%2C%7B%22key%22%3A%22logged_in%22%2C%22value%22%3A%220%22%7D%2C%7B%22key%22%3A%22e%22%2C%22value%22%3A%229405981%2C23804281%2C23885487%2C23943651%2C23946420%2C23966208%2C23998056%2C24004644%2C24077241%2C24166867%2C24181174%2C24241378%2C24290971%2C24299875%2C24378828%2C24439361%2C24456089%2C24468724%2C24542367%2C24548629%2C24566687%2C39326848%2C39326916%2C51009781%2C51010235%2C51016856%2C51017346%2C51020570%2C51025415%2C51030101%2C51037342%2C51037351%2C51041512%2C51043998%2C51050361%2C51053689%2C51057842%2C51057855%2C51060353%2C51063643%2C51064835%2C51089007%2C51091331%2C51098297%2C51098299%2C51101049%2C51107657%2C51111738%2C51113658%2C51113661%2C51114642%2C51115164%2C51115184%2C51116067%2C51124104%2C51131427%2C51133103%2C51138233%2C51139379%2C51140712%2C51144925%2C51146484%2C51148688%2C51149607%2C51152050%2C51153492%2C51157838%2C51158470%2C51158514%2C51160545%2C51162170%2C51163637%2C51165467%2C51165568%2C51169118%2C51172672%2C51172686%2C51172691%2C51172700%2C51172709%2C51172714%2C51172721%2C51172730%2C51174143%2C51176511%2C51176608%2C51177818%2C51178312%2C51178327%2C51178340%2C51178770%2C51178982%2C51182274%2C51183909%2C51184022%2C51189826%2C51190057%2C51190075%2C51190078%2C51190085%2C51190200%2C51190211%2C51190220%2C51190229%2C51190652%2C51191447%2C51193717%2C51195231%2C51196181%2C51196808%2C51197687%2C51197690%2C51197697%2C51197704%2C51199193%2C51200251%2C51200260%2C51200293%2C51200298%2C51200569%2C51201352%2C51201365%2C51201372%2C51201383%2C51201430%2C51201435%2C51201440%2C51201449%2C51203200%2C51204329%2C51207176%2C51207193%2C51207200%2C51207207%2C51209049%2C51209172%2C51211864%2C51212456%2C51212466%2C51212555%2C51212571%2C51213807%2C51217274%2C51217504%2C51217581%2C51217769%2C51219800%2C51221011%2C51221152%2C51223962%2C51224747%2C51227263%2C51227776%2C51227881%2C51228202%2C51228349%2C51228352%2C51228765%2C51228774%2C51228781%2C51228796%2C51228803%2C51228812%2C51230478%2C51230492%2C51231813%2C51231864%2C51231866%2C51234844%2C51234852%2C51236017%2C51236253%2C51236268%2C51237841%2C51238486%2C51238569%2C51238737%2C51240629%2C51241028%2C51241600%2C51242448%2C51243941%2C51245246%2C51246266%2C51246283%2C51246303%2C51246799%2C51248255%2C51251436%2C51251509%2C51251850%22%7D%5D%7D%5D%2C%22maxAgeSeconds%22%3A0%7D%2C%22playabilityStatus%22%3A%7B%22status%22%3A%22OK%22%2C%22playableInEmbed%22%3Atrue%2C%22audioOnlyPlayability%22%3A%7B%22audioOnlyPlayabilityRenderer%22%3A%7B%22trackingParams%22%3A%22CAEQx2kiEwjcs%2B69ts2HAxXXw0IFHZeGAoY%3D%22%2C%22audioOnlyAvailability%22%3A%22FEATURE_AVAILABILITY_ALLOWED%22%7D%7D%2C%22miniplayer%22%3A%7B%22miniplayerRenderer%22%3A%7B%22playbackMode%22%3A%22PLAYBACK_MODE_ALLOW%22%7D%7D%2C%22contextParams%22%3A%22Q0FFU0FnZ0M%3D%22%7D%2C%22streamingData%22%3A%7B%22expiresInSeconds%22%3A21540%2C%22formats%22%3A%5B%7B%22itag%22%3A18%2C%22url%22%3A%22https%3A%2F%2Frr5---sn-h0jeln7e.googlevideo.com%2Fvideoplayback%3Fexpire%3D1722318110%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026ip%3D93.235.183.158%5Cu0026id%3Do-AOT151Lw5IRApOBym6QRDN4NqeNkLPOGW3TDb3_xVd7Q%5Cu0026itag%3D18%5Cu0026source%3Dyoutube%5Cu0026requiressl%3Dyes%5Cu0026xpc%3DEgVo2aDSNQ%253D%253D%5Cu0026mh%3DRk%5Cu0026mm%3D31%252C26%5Cu0026mn%3Dsn-h0jeln7e%252Csn-4g5ednd7%5Cu0026ms%3Dau%252Conr%5Cu0026mv%3Dm%5Cu0026mvi%3D5%5Cu0026pl%3D26%5Cu0026ctier%3DL%5Cu0026initcwndbps%3D1957500%5Cu0026bui%3DAXc671KHzb3hO4uznBYBETdQ0H1xPZ0ZRglmege7YqK22FHIVy5-9oNthvQ9_X5ZKBgVtRDhXEP-efX2%5Cu0026vprv%3D1%5Cu0026svpuc%3D1%5Cu0026mime%3Dvideo%252Fmp4%5Cu0026ns%3Dnd9nu0LM8JtDtlAo0brMUq0Q%5Cu0026rqh%3D1%5Cu0026gir%3Dyes%5Cu0026clen%3D729606%5Cu0026ratebypass%3Dyes%5Cu0026dur%3D15.069%5Cu0026lmt%3D1721310031613233%5Cu0026mt%3D1722295996%5Cu0026fvip%3D2%5Cu0026lmw%3D1%5Cu0026c%3DTVHTML5%5Cu0026sefc%3D1%5Cu0026txp%3D5538434%5Cu0026n%3D83oaZkedBcQRjpu6p%5Cu0026sparams%3Dexpire%252Cei%252Cip%252Cid%252Citag%252Csource%252Crequiressl%252Cxpc%252Cctier%252Cbui%252Cvprv%252Csvpuc%252Cmime%252Cns%252Crqh%252Cgir%252Cclen%252Cratebypass%252Cdur%252Clmt%5Cu0026sig%3DAJfQdSswRAIgRuKD4nbfQAcvF2lLtrzeXfZFPBqAUJ0pOEI8Uub1DOUCIGde1H0ZenNoU2mJ7cIXETDJkLxgF_rzJzlxvj2FLISX%5Cu0026lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%5Cu0026lsig%3DAGtxev0wRAIgOkmRy7RSThJGxtogLFgCTlpda6qeKYWlqIfjdRZNQyQCIChab2SPRG2KMMf1cKKFsf9scaC0_ZGjJyNGxok41QsK%22%2C%22mimeType%22%3A%22video%2Fmp4%3B+codecs%3D%5C%22avc1.42001E%2C+mp4a.40.2%5C%22%22%2C%22bitrate%22%3A388734%2C%22width%22%3A640%2C%22height%22%3A360%2C%22lastModified%22%3A1721310031613233%2C%22contentLength%22%3A729606%2C%22quality%22%3A%22medium%22%2C%22fps%22%3A24%2C%22qualityLabel%22%3A%22360p%22%2C%22projectionType%22%3A%22RECTANGULAR%22%2C%22averageBitrate%22%3A387341%2C%22audioQuality%22%3A%22AUDIO_QUALITY_LOW%22%2C%22approxDurationMs%22%3A15069%2C%22audioSampleRate%22%3A44100%2C%22audioChannels%22%3A2%7D%5D%2C%22adaptiveFormats%22%3A%5B%7B%22itag%22%3A137%2C%22url%22%3A%22https%3A%2F%2Frr5---sn-h0jeln7e.googlevideo.com%2Fvideoplayback%3Fexpire%3D1722318110%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026ip%3D93.235.183.158%5Cu0026id%3Do-AOT151Lw5IRApOBym6QRDN4NqeNkLPOGW3TDb3_xVd7Q%5Cu0026itag%3D137%5Cu0026aitags%3D133%252C134%252C135%252C136%252C137%252C160%252C242%252C243%252C244%252C247%252C248%252C278%252C394%252C395%252C396%252C397%252C398%252C399%5Cu0026source%3Dyoutube%5Cu0026requiressl%3Dyes%5Cu0026xpc%3DEgVo2aDSNQ%253D%253D%5Cu0026mh%3DRk%5Cu0026mm%3D31%252C26%5Cu0026mn%3Dsn-h0jeln7e%252Csn-4g5ednd7%5Cu0026ms%3Dau%252Conr%5Cu0026mv%3Dm%5Cu0026mvi%3D5%5Cu0026pl%3D26%5Cu0026ctier%3DL%5Cu0026initcwndbps%3D1957500%5Cu0026bui%3DAXc671ICTQW9za4L4fUvI6iB5Xb7eqfThgEChPCJdCVam18bfvfY9U9dJWBA8yxmehdpP6WumZUisN4c%5Cu0026vprv%3D1%5Cu0026svpuc%3D1%5Cu0026mime%3Dvideo%252Fmp4%5Cu0026ns%3DtkuggsHhRMGoMXpWHzLtizcQ%5Cu0026rqh%3D1%5Cu0026gir%3Dyes%5Cu0026clen%3D2036683%5Cu0026dur%3D15.014%5Cu0026lmt%3D1721310625305104%5Cu0026mt%3D1722295996%5Cu0026fvip%3D2%5Cu0026keepalive%3Dyes%5Cu0026lmw%3D1%5Cu0026c%3DTVHTML5%5Cu0026sefc%3D1%5Cu0026txp%3D5535434%5Cu0026n%3DiC9X4DjTIDghkZ-R2%5Cu0026sparams%3Dexpire%252Cei%252Cip%252Cid%252Caitags%252Csource%252Crequiressl%252Cxpc%252Cctier%252Cbui%252Cvprv%252Csvpuc%252Cmime%252Cns%252Crqh%252Cgir%252Cclen%252Cdur%252Clmt%5Cu0026sig%3DAJfQdSswRQIgBWAZWGfJLItDzAVtH7IsesaEKBs2kQx64EFnZ2r0r-ECIQCTXLR0Lcyb_eqo8EOOK7l8QoJpJa86E6E96Agmt2vevQ%253D%253D%5Cu0026lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%5Cu0026lsig%3DAGtxev0wRAIgOkmRy7RSThJGxtogLFgCTlpda6qeKYWlqIfjdRZNQyQCIChab2SPRG2KMMf1cKKFsf9scaC0_ZGjJyNGxok41QsK%22%2C%22mimeType%22%3A%22video%2Fmp4%3B+codecs%3D%5C%22avc1.640028%5C%22%22%2C%22bitrate%22%3A1380057%2C%22width%22%3A1920%2C%22height%22%3A1080%2C%22initRange%22%3A%7B%22start%22%3A0%2C%22end%22%3A740%7D%2C%22indexRange%22%3A%7B%22start%22%3A741%2C%22end%22%3A808%7D%2C%22lastModified%22%3A1721310625305104%2C%22contentLength%22%3A2036683%2C%22quality%22%3A%22hd1080%22%2C%22fps%22%3A24%2C%22qualityLabel%22%3A%221080p%22%2C%22projectionType%22%3A%22RECTANGULAR%22%2C%22averageBitrate%22%3A1085218%2C%22approxDurationMs%22%3A15014%7D%2C%7B%22itag%22%3A248%2C%22url%22%3A%22https%3A%2F%2Frr5---sn-h0jeln7e.googlevideo.com%2Fvideoplayback%3Fexpire%3D1722318110%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026ip%3D93.235.183.158%5Cu0026id%3Do-AOT151Lw5IRApOBym6QRDN4NqeNkLPOGW3TDb3_xVd7Q%5Cu0026itag%3D248%5Cu0026aitags%3D133%252C134%252C135%252C136%252C137%252C160%252C242%252C243%252C244%252C247%252C248%252C278%252C394%252C395%252C396%252C397%252C398%252C399%5Cu0026source%3Dyoutube%5Cu0026requiressl%3Dyes%5Cu0026xpc%3DEgVo2aDSNQ%253D%253D%5Cu0026mh%3DRk%5Cu0026mm%3D31%252C26%5Cu0026mn%3Dsn-h0jeln7e%252Csn-4g5ednd7%5Cu0026ms%3Dau%252Conr%5Cu0026mv%3Dm%5Cu0026mvi%3D5%5Cu0026pl%3D26%5Cu0026ctier%3DL%5Cu0026initcwndbps%3D1957500%5Cu0026bui%3DAXc671ICTQW9za4L4fUvI6iB5Xb7eqfThgEChPCJdCVam18bfvfY9U9dJWBA8yxmehdpP6WumZUisN4c%5Cu0026vprv%3D1%5Cu0026svpuc%3D1%5Cu0026mime%3Dvideo%252Fwebm%5Cu0026ns%3DtkuggsHhRMGoMXpWHzLtizcQ%5Cu0026rqh%3D1%5Cu0026gir%3Dyes%5Cu0026clen%3D1410200%5Cu0026dur%3D15.014%5Cu0026lmt%3D1721311087081599%5Cu0026mt%3D1722295996%5Cu0026fvip%3D2%5Cu0026keepalive%3Dyes%5Cu0026lmw%3D1%5Cu0026c%3DTVHTML5%5Cu0026sefc%3D1%5Cu0026txp%3D5535434%5Cu0026n%3DiC9X4DjTIDghkZ-R2%5Cu0026sparams%3Dexpire%252Cei%252Cip%252Cid%252Caitags%252Csource%252Crequiressl%252Cxpc%252Cctier%252Cbui%252Cvprv%252Csvpuc%252Cmime%252Cns%252Crqh%252Cgir%252Cclen%252Cdur%252Clmt%5Cu0026sig%3DAJfQdSswRQIhALcFwvWdas7LGYcSS0Ii9MsWBQDKBTUelgrYG40GEMpQAiA0ZoK4Ts3GHtqotxhhGA6cuXXQtVUFZXkjB6KXrNZmWw%253D%253D%5Cu0026lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%5Cu0026lsig%3DAGtxev0wRAIgOkmRy7RSThJGxtogLFgCTlpda6qeKYWlqIfjdRZNQyQCIChab2SPRG2KMMf1cKKFsf9scaC0_ZGjJyNGxok41QsK%22%2C%22mimeType%22%3A%22video%2Fwebm%3B+codecs%3D%5C%22vp9%5C%22%22%2C%22bitrate%22%3A963122%2C%22width%22%3A1920%2C%22height%22%3A1080%2C%22initRange%22%3A%7B%22start%22%3A0%2C%22end%22%3A218%7D%2C%22indexRange%22%3A%7B%22start%22%3A219%2C%22end%22%3A268%7D%2C%22lastModified%22%3A1721311087081599%2C%22contentLength%22%3A1410200%2C%22quality%22%3A%22hd1080%22%2C%22fps%22%3A24%2C%22qualityLabel%22%3A%221080p%22%2C%22projectionType%22%3A%22RECTANGULAR%22%2C%22averageBitrate%22%3A751405%2C%22colorInfo%22%3A%7B%22primaries%22%3A%22COLOR_PRIMARIES_BT709%22%2C%22transferCharacteristics%22%3A%22COLOR_TRANSFER_CHARACTERISTICS_BT709%22%2C%22matrixCoefficients%22%3A%22COLOR_MATRIX_COEFFICIENTS_BT709%22%7D%2C%22approxDurationMs%22%3A15014%7D%2C%7B%22itag%22%3A399%2C%22url%22%3A%22https%3A%2F%2Frr5---sn-h0jeln7e.googlevideo.com%2Fvideoplayback%3Fexpire%3D1722318110%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026ip%3D93.235.183.158%5Cu0026id%3Do-AOT151Lw5IRApOBym6QRDN4NqeNkLPOGW3TDb3_xVd7Q%5Cu0026itag%3D399%5Cu0026aitags%3D133%252C134%252C135%252C136%252C137%252C160%252C242%252C243%252C244%252C247%252C248%252C278%252C394%252C395%252C396%252C397%252C398%252C399%5Cu0026source%3Dyoutube%5Cu0026requiressl%3Dyes%5Cu0026xpc%3DEgVo2aDSNQ%253D%253D%5Cu0026mh%3DRk%5Cu0026mm%3D31%252C26%5Cu0026mn%3Dsn-h0jeln7e%252Csn-4g5ednd7%5Cu0026ms%3Dau%252Conr%5Cu0026mv%3Dm%5Cu0026mvi%3D5%5Cu0026pl%3D26%5Cu0026ctier%3DL%5Cu0026initcwndbps%3D1957500%5Cu0026bui%3DAXc671ICTQW9za4L4fUvI6iB5Xb7eqfThgEChPCJdCVam18bfvfY9U9dJWBA8yxmehdpP6WumZUisN4c%5Cu0026vprv%3D1%5Cu0026svpuc%3D1%5Cu0026mime%3Dvideo%252Fmp4%5Cu0026ns%3DtkuggsHhRMGoMXpWHzLtizcQ%5Cu0026rqh%3D1%5Cu0026gir%3Dyes%5Cu0026clen%3D1002244%5Cu0026dur%3D15.014%5Cu0026lmt%3D1721310927233835%5Cu0026mt%3D1722295996%5Cu0026fvip%3D2%5Cu0026keepalive%3Dyes%5Cu0026lmw%3D1%5Cu0026c%3DTVHTML5%5Cu0026sefc%3D1%5Cu0026txp%3D5537434%5Cu0026n%3DiC9X4DjTIDghkZ-R2%5Cu0026sparams%3Dexpire%252Cei%252Cip%252Cid%252Caitags%252Csource%252Crequiressl%252Cxpc%252Cctier%252Cbui%252Cvprv%252Csvpuc%252Cmime%252Cns%252Crqh%252Cgir%252Cclen%252Cdur%252Clmt%5Cu0026sig%3DAJfQdSswRQIhAKn_uZFh-NHhleycaxahvgBdeiT9hzLrlZkGR2t50TXJAiBm3ZFGC8dCzAMPnIVvHMExcyZsVKyiAEFTrnTaQOIkOQ%253D%253D%5Cu0026lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%5Cu0026lsig%3DAGtxev0wRAIgOkmRy7RSThJGxtogLFgCTlpda6qeKYWlqIfjdRZNQyQCIChab2SPRG2KMMf1cKKFsf9scaC0_ZGjJyNGxok41QsK%22%2C%22mimeType%22%3A%22video%2Fmp4%3B+codecs%3D%5C%22av01.0.08M.08%5C%22%22%2C%22bitrate%22%3A663133%2C%22width%22%3A1920%2C%22height%22%3A1080%2C%22initRange%22%3A%7B%22start%22%3A0%2C%22end%22%3A699%7D%2C%22indexRange%22%3A%7B%22start%22%3A700%2C%22end%22%3A767%7D%2C%22lastModified%22%3A1721310927233835%2C%22contentLength%22%3A1002244%2C%22quality%22%3A%22hd1080%22%2C%22fps%22%3A24%2C%22qualityLabel%22%3A%221080p%22%2C%22projectionType%22%3A%22RECTANGULAR%22%2C%22averageBitrate%22%3A534031%2C%22colorInfo%22%3A%7B%22primaries%22%3A%22COLOR_PRIMARIES_BT709%22%2C%22transferCharacteristics%22%3A%22COLOR_TRANSFER_CHARACTERISTICS_BT709%22%2C%22matrixCoefficients%22%3A%22COLOR_MATRIX_COEFFICIENTS_BT709%22%7D%2C%22approxDurationMs%22%3A15014%7D%2C%7B%22itag%22%3A136%2C%22url%22%3A%22https%3A%2F%2Frr5---sn-h0jeln7e.googlevideo.com%2Fvideoplayback%3Fexpire%3D1722318110%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026ip%3D93.235.183.158%5Cu0026id%3Do-AOT151Lw5IRApOBym6QRDN4NqeNkLPOGW3TDb3_xVd7Q%5Cu0026itag%3D136%5Cu0026aitags%3D133%252C134%252C135%252C136%252C137%252C160%252C242%252C243%252C244%252C247%252C248%252C278%252C394%252C395%252C396%252C397%252C398%252C399%5Cu0026source%3Dyoutube%5Cu0026requiressl%3Dyes%5Cu0026xpc%3DEgVo2aDSNQ%253D%253D%5Cu0026mh%3DRk%5Cu0026mm%3D31%252C26%5Cu0026mn%3Dsn-h0jeln7e%252Csn-4g5ednd7%5Cu0026ms%3Dau%252Conr%5Cu0026mv%3Dm%5Cu0026mvi%3D5%5Cu0026pl%3D26%5Cu0026ctier%3DL%5Cu0026initcwndbps%3D1957500%5Cu0026bui%3DAXc671ICTQW9za4L4fUvI6iB5Xb7eqfThgEChPCJdCVam18bfvfY9U9dJWBA8yxmehdpP6WumZUisN4c%5Cu0026vprv%3D1%5Cu0026svpuc%3D1%5Cu0026mime%3Dvideo%252Fmp4%5Cu0026ns%3DtkuggsHhRMGoMXpWHzLtizcQ%5Cu0026rqh%3D1%5Cu0026gir%3Dyes%5Cu0026clen%3D539761%5Cu0026dur%3D15.014%5Cu0026lmt%3D1721310628372416%5Cu0026mt%3D1722295996%5Cu0026fvip%3D2%5Cu0026keepalive%3Dyes%5Cu0026lmw%3D1%5Cu0026c%3DTVHTML5%5Cu0026sefc%3D1%5Cu0026txp%3D5535434%5Cu0026n%3DiC9X4DjTIDghkZ-R2%5Cu0026sparams%3Dexpire%252Cei%252Cip%252Cid%252Caitags%252Csource%252Crequiressl%252Cxpc%252Cctier%252Cbui%252Cvprv%252Csvpuc%252Cmime%252Cns%252Crqh%252Cgir%252Cclen%252Cdur%252Clmt%5Cu0026sig%3DAJfQdSswRAIgEgh1KXvgEF2vfFGSHSaUXKIReCky49g6uigGw6ws-lwCIAhqO4TAroewj45fqtfDsOo2ONBtSzaXvZzGaAgefYeK%5Cu0026lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%5Cu0026lsig%3DAGtxev0wRAIgOkmRy7RSThJGxtogLFgCTlpda6qeKYWlqIfjdRZNQyQCIChab2SPRG2KMMf1cKKFsf9scaC0_ZGjJyNGxok41QsK%22%2C%22mimeType%22%3A%22video%2Fmp4%3B+codecs%3D%5C%22avc1.4d401f%5C%22%22%2C%22bitrate%22%3A383784%2C%22width%22%3A1280%2C%22height%22%3A720%2C%22initRange%22%3A%7B%22start%22%3A0%2C%22end%22%3A738%7D%2C%22indexRange%22%3A%7B%22start%22%3A739%2C%22end%22%3A806%7D%2C%22lastModified%22%3A1721310628372416%2C%22contentLength%22%3A539761%2C%22quality%22%3A%22hd720%22%2C%22fps%22%3A24%2C%22qualityLabel%22%3A%22720p%22%2C%22projectionType%22%3A%22RECTANGULAR%22%2C%22averageBitrate%22%3A287604%2C%22approxDurationMs%22%3A15014%7D%2C%7B%22itag%22%3A247%2C%22url%22%3A%22https%3A%2F%2Frr5---sn-h0jeln7e.googlevideo.com%2Fvideoplayback%3Fexpire%3D1722318110%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026ip%3D93.235.183.158%5Cu0026id%3Do-AOT151Lw5IRApOBym6QRDN4NqeNkLPOGW3TDb3_xVd7Q%5Cu0026itag%3D247%5Cu0026aitags%3D133%252C134%252C135%252C136%252C137%252C160%252C242%252C243%252C244%252C247%252C248%252C278%252C394%252C395%252C396%252C397%252C398%252C399%5Cu0026source%3Dyoutube%5Cu0026requiressl%3Dyes%5Cu0026xpc%3DEgVo2aDSNQ%253D%253D%5Cu0026mh%3DRk%5Cu0026mm%3D31%252C26%5Cu0026mn%3Dsn-h0jeln7e%252Csn-4g5ednd7%5Cu0026ms%3Dau%252Conr%5Cu0026mv%3Dm%5Cu0026mvi%3D5%5Cu0026pl%3D26%5Cu0026ctier%3DL%5Cu0026initcwndbps%3D1957500%5Cu0026bui%3DAXc671ICTQW9za4L4fUvI6iB5Xb7eqfThgEChPCJdCVam18bfvfY9U9dJWBA8yxmehdpP6WumZUisN4c%5Cu0026vprv%3D1%5Cu0026svpuc%3D1%5Cu0026mime%3Dvideo%252Fwebm%5Cu0026ns%3DtkuggsHhRMGoMXpWHzLtizcQ%5Cu0026rqh%3D1%5Cu0026gir%3Dyes%5Cu0026clen%3D551600%5Cu0026dur%3D15.014%5Cu0026lmt%3D1721311223382645%5Cu0026mt%3D1722295996%5Cu0026fvip%3D2%5Cu0026keepalive%3Dyes%5Cu0026lmw%3D1%5Cu0026c%3DTVHTML5%5Cu0026sefc%3D1%5Cu0026txp%3D5535434%5Cu0026n%3DiC9X4DjTIDghkZ-R2%5Cu0026sparams%3Dexpire%252Cei%252Cip%252Cid%252Caitags%252Csource%252Crequiressl%252Cxpc%252Cctier%252Cbui%252Cvprv%252Csvpuc%252Cmime%252Cns%252Crqh%252Cgir%252Cclen%252Cdur%252Clmt%5Cu0026sig%3DAJfQdSswRAIgfTa0vXZ8vgdSGRzQZ4WG8v22NrVJW3cbUUAri3ZnLsQCIAWEE3xAdMf15CvgXn3v1khjF6YcHl8Du3S-6TUVC5y1%5Cu0026lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%5Cu0026lsig%3DAGtxev0wRAIgOkmRy7RSThJGxtogLFgCTlpda6qeKYWlqIfjdRZNQyQCIChab2SPRG2KMMf1cKKFsf9scaC0_ZGjJyNGxok41QsK%22%2C%22mimeType%22%3A%22video%2Fwebm%3B+codecs%3D%5C%22vp9%5C%22%22%2C%22bitrate%22%3A391339%2C%22width%22%3A1280%2C%22height%22%3A720%2C%22initRange%22%3A%7B%22start%22%3A0%2C%22end%22%3A218%7D%2C%22indexRange%22%3A%7B%22start%22%3A219%2C%22end%22%3A268%7D%2C%22lastModified%22%3A1721311223382645%2C%22contentLength%22%3A551600%2C%22quality%22%3A%22hd720%22%2C%22fps%22%3A24%2C%22qualityLabel%22%3A%22720p%22%2C%22projectionType%22%3A%22RECTANGULAR%22%2C%22averageBitrate%22%3A293912%2C%22colorInfo%22%3A%7B%22primaries%22%3A%22COLOR_PRIMARIES_BT709%22%2C%22transferCharacteristics%22%3A%22COLOR_TRANSFER_CHARACTERISTICS_BT709%22%2C%22matrixCoefficients%22%3A%22COLOR_MATRIX_COEFFICIENTS_BT709%22%7D%2C%22approxDurationMs%22%3A15014%7D%2C%7B%22itag%22%3A398%2C%22url%22%3A%22https%3A%2F%2Frr5---sn-h0jeln7e.googlevideo.com%2Fvideoplayback%3Fexpire%3D1722318110%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026ip%3D93.235.183.158%5Cu0026id%3Do-AOT151Lw5IRApOBym6QRDN4NqeNkLPOGW3TDb3_xVd7Q%5Cu0026itag%3D398%5Cu0026aitags%3D133%252C134%252C135%252C136%252C137%252C160%252C242%252C243%252C244%252C247%252C248%252C278%252C394%252C395%252C396%252C397%252C398%252C399%5Cu0026source%3Dyoutube%5Cu0026requiressl%3Dyes%5Cu0026xpc%3DEgVo2aDSNQ%253D%253D%5Cu0026mh%3DRk%5Cu0026mm%3D31%252C26%5Cu0026mn%3Dsn-h0jeln7e%252Csn-4g5ednd7%5Cu0026ms%3Dau%252Conr%5Cu0026mv%3Dm%5Cu0026mvi%3D5%5Cu0026pl%3D26%5Cu0026ctier%3DL%5Cu0026initcwndbps%3D1957500%5Cu0026bui%3DAXc671ICTQW9za4L4fUvI6iB5Xb7eqfThgEChPCJdCVam18bfvfY9U9dJWBA8yxmehdpP6WumZUisN4c%5Cu0026vprv%3D1%5Cu0026svpuc%3D1%5Cu0026mime%3Dvideo%252Fmp4%5Cu0026ns%3DtkuggsHhRMGoMXpWHzLtizcQ%5Cu0026rqh%3D1%5Cu0026gir%3Dyes%5Cu0026clen%3D599127%5Cu0026dur%3D15.014%5Cu0026lmt%3D1721310494875574%5Cu0026mt%3D1722295996%5Cu0026fvip%3D2%5Cu0026keepalive%3Dyes%5Cu0026lmw%3D1%5Cu0026c%3DTVHTML5%5Cu0026sefc%3D1%5Cu0026txp%3D5537434%5Cu0026n%3DiC9X4DjTIDghkZ-R2%5Cu0026sparams%3Dexpire%252Cei%252Cip%252Cid%252Caitags%252Csource%252Crequiressl%252Cxpc%252Cctier%252Cbui%252Cvprv%252Csvpuc%252Cmime%252Cns%252Crqh%252Cgir%252Cclen%252Cdur%252Clmt%5Cu0026sig%3DAJfQdSswRAIgSDy2dhDjQY8nlehC_jkoyDfUnuSMXzWTsXpF49bxDfsCIHS5gbNx1CaN8PB2SICWKSXYXL0SUpSv4UVcijO4TWRQ%5Cu0026lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%5Cu0026lsig%3DAGtxev0wRAIgOkmRy7RSThJGxtogLFgCTlpda6qeKYWlqIfjdRZNQyQCIChab2SPRG2KMMf1cKKFsf9scaC0_ZGjJyNGxok41QsK%22%2C%22mimeType%22%3A%22video%2Fmp4%3B+codecs%3D%5C%22av01.0.05M.08%5C%22%22%2C%22bitrate%22%3A389958%2C%22width%22%3A1280%2C%22height%22%3A720%2C%22initRange%22%3A%7B%22start%22%3A0%2C%22end%22%3A699%7D%2C%22indexRange%22%3A%7B%22start%22%3A700%2C%22end%22%3A767%7D%2C%22lastModified%22%3A1721310494875574%2C%22contentLength%22%3A599127%2C%22quality%22%3A%22hd720%22%2C%22fps%22%3A24%2C%22qualityLabel%22%3A%22720p%22%2C%22projectionType%22%3A%22RECTANGULAR%22%2C%22averageBitrate%22%3A319236%2C%22colorInfo%22%3A%7B%22primaries%22%3A%22COLOR_PRIMARIES_BT709%22%2C%22transferCharacteristics%22%3A%22COLOR_TRANSFER_CHARACTERISTICS_BT709%22%2C%22matrixCoefficients%22%3A%22COLOR_MATRIX_COEFFICIENTS_BT709%22%7D%2C%22approxDurationMs%22%3A15014%7D%2C%7B%22itag%22%3A135%2C%22url%22%3A%22https%3A%2F%2Frr5---sn-h0jeln7e.googlevideo.com%2Fvideoplayback%3Fexpire%3D1722318110%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026ip%3D93.235.183.158%5Cu0026id%3Do-AOT151Lw5IRApOBym6QRDN4NqeNkLPOGW3TDb3_xVd7Q%5Cu0026itag%3D135%5Cu0026aitags%3D133%252C134%252C135%252C136%252C137%252C160%252C242%252C243%252C244%252C247%252C248%252C278%252C394%252C395%252C396%252C397%252C398%252C399%5Cu0026source%3Dyoutube%5Cu0026requiressl%3Dyes%5Cu0026xpc%3DEgVo2aDSNQ%253D%253D%5Cu0026mh%3DRk%5Cu0026mm%3D31%252C26%5Cu0026mn%3Dsn-h0jeln7e%252Csn-4g5ednd7%5Cu0026ms%3Dau%252Conr%5Cu0026mv%3Dm%5Cu0026mvi%3D5%5Cu0026pl%3D26%5Cu0026ctier%3DL%5Cu0026initcwndbps%3D1957500%5Cu0026bui%3DAXc671ICTQW9za4L4fUvI6iB5Xb7eqfThgEChPCJdCVam18bfvfY9U9dJWBA8yxmehdpP6WumZUisN4c%5Cu0026vprv%3D1%5Cu0026svpuc%3D1%5Cu0026mime%3Dvideo%252Fmp4%5Cu0026ns%3DtkuggsHhRMGoMXpWHzLtizcQ%5Cu0026rqh%3D1%5Cu0026gir%3Dyes%5Cu0026clen%3D304025%5Cu0026dur%3D15.014%5Cu0026lmt%3D1721310630368031%5Cu0026mt%3D1722295996%5Cu0026fvip%3D2%5Cu0026keepalive%3Dyes%5Cu0026lmw%3D1%5Cu0026c%3DTVHTML5%5Cu0026sefc%3D1%5Cu0026txp%3D5535434%5Cu0026n%3DiC9X4DjTIDghkZ-R2%5Cu0026sparams%3Dexpire%252Cei%252Cip%252Cid%252Caitags%252Csource%252Crequiressl%252Cxpc%252Cctier%252Cbui%252Cvprv%252Csvpuc%252Cmime%252Cns%252Crqh%252Cgir%252Cclen%252Cdur%252Clmt%5Cu0026sig%3DAJfQdSswRQIgVg0KJTLeBU8Ks8GNHqMKb0ad9yIWQF4gGpzlpJASa4UCIQDEIxvqpS_2znOTrLHA-n4O2iNMolk0j0gMTOFSN9__qw%253D%253D%5Cu0026lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%5Cu0026lsig%3DAGtxev0wRAIgOkmRy7RSThJGxtogLFgCTlpda6qeKYWlqIfjdRZNQyQCIChab2SPRG2KMMf1cKKFsf9scaC0_ZGjJyNGxok41QsK%22%2C%22mimeType%22%3A%22video%2Fmp4%3B+codecs%3D%5C%22avc1.4d401e%5C%22%22%2C%22bitrate%22%3A216654%2C%22width%22%3A854%2C%22height%22%3A480%2C%22initRange%22%3A%7B%22start%22%3A0%2C%22end%22%3A738%7D%2C%22indexRange%22%3A%7B%22start%22%3A739%2C%22end%22%3A806%7D%2C%22lastModified%22%3A1721310630368031%2C%22contentLength%22%3A304025%2C%22quality%22%3A%22large%22%2C%22fps%22%3A24%2C%22qualityLabel%22%3A%22480p%22%2C%22projectionType%22%3A%22RECTANGULAR%22%2C%22averageBitrate%22%3A161995%2C%22approxDurationMs%22%3A15014%7D%2C%7B%22itag%22%3A244%2C%22url%22%3A%22https%3A%2F%2Frr5---sn-h0jeln7e.googlevideo.com%2Fvideoplayback%3Fexpire%3D1722318110%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026ip%3D93.235.183.158%5Cu0026id%3Do-AOT151Lw5IRApOBym6QRDN4NqeNkLPOGW3TDb3_xVd7Q%5Cu0026itag%3D244%5Cu0026aitags%3D133%252C134%252C135%252C136%252C137%252C160%252C242%252C243%252C244%252C247%252C248%252C278%252C394%252C395%252C396%252C397%252C398%252C399%5Cu0026source%3Dyoutube%5Cu0026requiressl%3Dyes%5Cu0026xpc%3DEgVo2aDSNQ%253D%253D%5Cu0026mh%3DRk%5Cu0026mm%3D31%252C26%5Cu0026mn%3Dsn-h0jeln7e%252Csn-4g5ednd7%5Cu0026ms%3Dau%252Conr%5Cu0026mv%3Dm%5Cu0026mvi%3D5%5Cu0026pl%3D26%5Cu0026ctier%3DL%5Cu0026initcwndbps%3D1957500%5Cu0026bui%3DAXc671ICTQW9za4L4fUvI6iB5Xb7eqfThgEChPCJdCVam18bfvfY9U9dJWBA8yxmehdpP6WumZUisN4c%5Cu0026vprv%3D1%5Cu0026svpuc%3D1%5Cu0026mime%3Dvideo%252Fwebm%5Cu0026ns%3DtkuggsHhRMGoMXpWHzLtizcQ%5Cu0026rqh%3D1%5Cu0026gir%3Dyes%5Cu0026clen%3D379990%5Cu0026dur%3D15.014%5Cu0026lmt%3D1721311223530966%5Cu0026mt%3D1722295996%5Cu0026fvip%3D2%5Cu0026keepalive%3Dyes%5Cu0026lmw%3D1%5Cu0026c%3DTVHTML5%5Cu0026sefc%3D1%5Cu0026txp%3D5535434%5Cu0026n%3DiC9X4DjTIDghkZ-R2%5Cu0026sparams%3Dexpire%252Cei%252Cip%252Cid%252Caitags%252Csource%252Crequiressl%252Cxpc%252Cctier%252Cbui%252Cvprv%252Csvpuc%252Cmime%252Cns%252Crqh%252Cgir%252Cclen%252Cdur%252Clmt%5Cu0026sig%3DAJfQdSswRQIhANHriMCIr3nzEdgDNdSbfG0f3sxY2s7E0wc5HGMilTj0AiAvHqNDJSBu1R0qn2Hubi7k6ZADVni-e23HaZmihuJ-kA%253D%253D%5Cu0026lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%5Cu0026lsig%3DAGtxev0wRAIgOkmRy7RSThJGxtogLFgCTlpda6qeKYWlqIfjdRZNQyQCIChab2SPRG2KMMf1cKKFsf9scaC0_ZGjJyNGxok41QsK%22%2C%22mimeType%22%3A%22video%2Fwebm%3B+codecs%3D%5C%22vp9%5C%22%22%2C%22bitrate%22%3A256800%2C%22width%22%3A854%2C%22height%22%3A480%2C%22initRange%22%3A%7B%22start%22%3A0%2C%22end%22%3A218%7D%2C%22indexRange%22%3A%7B%22start%22%3A219%2C%22end%22%3A267%7D%2C%22lastModified%22%3A1721311223530966%2C%22contentLength%22%3A379990%2C%22quality%22%3A%22large%22%2C%22fps%22%3A24%2C%22qualityLabel%22%3A%22480p%22%2C%22projectionType%22%3A%22RECTANGULAR%22%2C%22averageBitrate%22%3A202472%2C%22colorInfo%22%3A%7B%22primaries%22%3A%22COLOR_PRIMARIES_BT709%22%2C%22transferCharacteristics%22%3A%22COLOR_TRANSFER_CHARACTERISTICS_BT709%22%2C%22matrixCoefficients%22%3A%22COLOR_MATRIX_COEFFICIENTS_BT709%22%7D%2C%22approxDurationMs%22%3A15014%7D%2C%7B%22itag%22%3A397%2C%22url%22%3A%22https%3A%2F%2Frr5---sn-h0jeln7e.googlevideo.com%2Fvideoplayback%3Fexpire%3D1722318110%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026ip%3D93.235.183.158%5Cu0026id%3Do-AOT151Lw5IRApOBym6QRDN4NqeNkLPOGW3TDb3_xVd7Q%5Cu0026itag%3D397%5Cu0026aitags%3D133%252C134%252C135%252C136%252C137%252C160%252C242%252C243%252C244%252C247%252C248%252C278%252C394%252C395%252C396%252C397%252C398%252C399%5Cu0026source%3Dyoutube%5Cu0026requiressl%3Dyes%5Cu0026xpc%3DEgVo2aDSNQ%253D%253D%5Cu0026mh%3DRk%5Cu0026mm%3D31%252C26%5Cu0026mn%3Dsn-h0jeln7e%252Csn-4g5ednd7%5Cu0026ms%3Dau%252Conr%5Cu0026mv%3Dm%5Cu0026mvi%3D5%5Cu0026pl%3D26%5Cu0026ctier%3DL%5Cu0026initcwndbps%3D1957500%5Cu0026bui%3DAXc671ICTQW9za4L4fUvI6iB5Xb7eqfThgEChPCJdCVam18bfvfY9U9dJWBA8yxmehdpP6WumZUisN4c%5Cu0026vprv%3D1%5Cu0026svpuc%3D1%5Cu0026mime%3Dvideo%252Fmp4%5Cu0026ns%3DtkuggsHhRMGoMXpWHzLtizcQ%5Cu0026rqh%3D1%5Cu0026gir%3Dyes%5Cu0026clen%3D353666%5Cu0026dur%3D15.014%5Cu0026lmt%3D1721310345621548%5Cu0026mt%3D1722295996%5Cu0026fvip%3D2%5Cu0026keepalive%3Dyes%5Cu0026lmw%3D1%5Cu0026c%3DTVHTML5%5Cu0026sefc%3D1%5Cu0026txp%3D5537434%5Cu0026n%3DiC9X4DjTIDghkZ-R2%5Cu0026sparams%3Dexpire%252Cei%252Cip%252Cid%252Caitags%252Csource%252Crequiressl%252Cxpc%252Cctier%252Cbui%252Cvprv%252Csvpuc%252Cmime%252Cns%252Crqh%252Cgir%252Cclen%252Cdur%252Clmt%5Cu0026sig%3DAJfQdSswRAIgFso4AAh8uhn1S1pjGIHqLW-reZeEZblvG7rBRps5HlYCIFHNYGHmzTWMhvDjB2__2-TnCWklj7SGwzrG3Q39i_Ib%5Cu0026lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%5Cu0026lsig%3DAGtxev0wRAIgOkmRy7RSThJGxtogLFgCTlpda6qeKYWlqIfjdRZNQyQCIChab2SPRG2KMMf1cKKFsf9scaC0_ZGjJyNGxok41QsK%22%2C%22mimeType%22%3A%22video%2Fmp4%3B+codecs%3D%5C%22av01.0.04M.08%5C%22%22%2C%22bitrate%22%3A228564%2C%22width%22%3A854%2C%22height%22%3A480%2C%22initRange%22%3A%7B%22start%22%3A0%2C%22end%22%3A699%7D%2C%22indexRange%22%3A%7B%22start%22%3A700%2C%22end%22%3A767%7D%2C%22lastModified%22%3A1721310345621548%2C%22contentLength%22%3A353666%2C%22quality%22%3A%22large%22%2C%22fps%22%3A24%2C%22qualityLabel%22%3A%22480p%22%2C%22projectionType%22%3A%22RECTANGULAR%22%2C%22averageBitrate%22%3A188445%2C%22colorInfo%22%3A%7B%22primaries%22%3A%22COLOR_PRIMARIES_BT709%22%2C%22transferCharacteristics%22%3A%22COLOR_TRANSFER_CHARACTERISTICS_BT709%22%2C%22matrixCoefficients%22%3A%22COLOR_MATRIX_COEFFICIENTS_BT709%22%7D%2C%22approxDurationMs%22%3A15014%7D%2C%7B%22itag%22%3A134%2C%22url%22%3A%22https%3A%2F%2Frr5---sn-h0jeln7e.googlevideo.com%2Fvideoplayback%3Fexpire%3D1722318110%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026ip%3D93.235.183.158%5Cu0026id%3Do-AOT151Lw5IRApOBym6QRDN4NqeNkLPOGW3TDb3_xVd7Q%5Cu0026itag%3D134%5Cu0026aitags%3D133%252C134%252C135%252C136%252C137%252C160%252C242%252C243%252C244%252C247%252C248%252C278%252C394%252C395%252C396%252C397%252C398%252C399%5Cu0026source%3Dyoutube%5Cu0026requiressl%3Dyes%5Cu0026xpc%3DEgVo2aDSNQ%253D%253D%5Cu0026mh%3DRk%5Cu0026mm%3D31%252C26%5Cu0026mn%3Dsn-h0jeln7e%252Csn-4g5ednd7%5Cu0026ms%3Dau%252Conr%5Cu0026mv%3Dm%5Cu0026mvi%3D5%5Cu0026pl%3D26%5Cu0026ctier%3DL%5Cu0026initcwndbps%3D1957500%5Cu0026bui%3DAXc671ICTQW9za4L4fUvI6iB5Xb7eqfThgEChPCJdCVam18bfvfY9U9dJWBA8yxmehdpP6WumZUisN4c%5Cu0026vprv%3D1%5Cu0026svpuc%3D1%5Cu0026mime%3Dvideo%252Fmp4%5Cu0026ns%3DtkuggsHhRMGoMXpWHzLtizcQ%5Cu0026rqh%3D1%5Cu0026gir%3Dyes%5Cu0026clen%3D206317%5Cu0026dur%3D15.014%5Cu0026lmt%3D1721310628266079%5Cu0026mt%3D1722295996%5Cu0026fvip%3D2%5Cu0026keepalive%3Dyes%5Cu0026lmw%3D1%5Cu0026c%3DTVHTML5%5Cu0026sefc%3D1%5Cu0026txp%3D5535434%5Cu0026n%3DiC9X4DjTIDghkZ-R2%5Cu0026sparams%3Dexpire%252Cei%252Cip%252Cid%252Caitags%252Csource%252Crequiressl%252Cxpc%252Cctier%252Cbui%252Cvprv%252Csvpuc%252Cmime%252Cns%252Crqh%252Cgir%252Cclen%252Cdur%252Clmt%5Cu0026sig%3DAJfQdSswRQIgF85HmJFhDM_8Rg5KAsNKnzKU6lceHGTdXgXJzKWxlP0CIQCbZ5dUxtIEUKPkDl2pz5xSbXQ-Vh030WCnwV6VeBfK3w%253D%253D%5Cu0026lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%5Cu0026lsig%3DAGtxev0wRAIgOkmRy7RSThJGxtogLFgCTlpda6qeKYWlqIfjdRZNQyQCIChab2SPRG2KMMf1cKKFsf9scaC0_ZGjJyNGxok41QsK%22%2C%22mimeType%22%3A%22video%2Fmp4%3B+codecs%3D%5C%22avc1.4d401e%5C%22%22%2C%22bitrate%22%3A147137%2C%22width%22%3A640%2C%22height%22%3A360%2C%22initRange%22%3A%7B%22start%22%3A0%2C%22end%22%3A738%7D%2C%22indexRange%22%3A%7B%22start%22%3A739%2C%22end%22%3A806%7D%2C%22lastModified%22%3A1721310628266079%2C%22contentLength%22%3A206317%2C%22quality%22%3A%22medium%22%2C%22fps%22%3A24%2C%22qualityLabel%22%3A%22360p%22%2C%22projectionType%22%3A%22RECTANGULAR%22%2C%22averageBitrate%22%3A109933%2C%22highReplication%22%3Atrue%2C%22approxDurationMs%22%3A15014%7D%2C%7B%22itag%22%3A243%2C%22url%22%3A%22https%3A%2F%2Frr5---sn-h0jeln7e.googlevideo.com%2Fvideoplayback%3Fexpire%3D1722318110%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026ip%3D93.235.183.158%5Cu0026id%3Do-AOT151Lw5IRApOBym6QRDN4NqeNkLPOGW3TDb3_xVd7Q%5Cu0026itag%3D243%5Cu0026aitags%3D133%252C134%252C135%252C136%252C137%252C160%252C242%252C243%252C244%252C247%252C248%252C278%252C394%252C395%252C396%252C397%252C398%252C399%5Cu0026source%3Dyoutube%5Cu0026requiressl%3Dyes%5Cu0026xpc%3DEgVo2aDSNQ%253D%253D%5Cu0026mh%3DRk%5Cu0026mm%3D31%252C26%5Cu0026mn%3Dsn-h0jeln7e%252Csn-4g5ednd7%5Cu0026ms%3Dau%252Conr%5Cu0026mv%3Dm%5Cu0026mvi%3D5%5Cu0026pl%3D26%5Cu0026ctier%3DL%5Cu0026initcwndbps%3D1957500%5Cu0026bui%3DAXc671ICTQW9za4L4fUvI6iB5Xb7eqfThgEChPCJdCVam18bfvfY9U9dJWBA8yxmehdpP6WumZUisN4c%5Cu0026vprv%3D1%5Cu0026svpuc%3D1%5Cu0026mime%3Dvideo%252Fwebm%5Cu0026ns%3DtkuggsHhRMGoMXpWHzLtizcQ%5Cu0026rqh%3D1%5Cu0026gir%3Dyes%5Cu0026clen%3D277857%5Cu0026dur%3D15.014%5Cu0026lmt%3D1721311223535451%5Cu0026mt%3D1722295996%5Cu0026fvip%3D2%5Cu0026keepalive%3Dyes%5Cu0026lmw%3D1%5Cu0026c%3DTVHTML5%5Cu0026sefc%3D1%5Cu0026txp%3D5535434%5Cu0026n%3DiC9X4DjTIDghkZ-R2%5Cu0026sparams%3Dexpire%252Cei%252Cip%252Cid%252Caitags%252Csource%252Crequiressl%252Cxpc%252Cctier%252Cbui%252Cvprv%252Csvpuc%252Cmime%252Cns%252Crqh%252Cgir%252Cclen%252Cdur%252Clmt%5Cu0026sig%3DAJfQdSswRQIhAPXU55dExXE2Vj6yn1MoL1w2AFSSwJetWdBaDtTUQ6fPAiBFmE-nXF5-7f5ki4PlcPHP_mAofbTvZX-DuVWRkf-eVw%253D%253D%5Cu0026lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%5Cu0026lsig%3DAGtxev0wRAIgOkmRy7RSThJGxtogLFgCTlpda6qeKYWlqIfjdRZNQyQCIChab2SPRG2KMMf1cKKFsf9scaC0_ZGjJyNGxok41QsK%22%2C%22mimeType%22%3A%22video%2Fwebm%3B+codecs%3D%5C%22vp9%5C%22%22%2C%22bitrate%22%3A186036%2C%22width%22%3A640%2C%22height%22%3A360%2C%22initRange%22%3A%7B%22start%22%3A0%2C%22end%22%3A218%7D%2C%22indexRange%22%3A%7B%22start%22%3A219%2C%22end%22%3A267%7D%2C%22lastModified%22%3A1721311223535451%2C%22contentLength%22%3A277857%2C%22quality%22%3A%22medium%22%2C%22fps%22%3A24%2C%22qualityLabel%22%3A%22360p%22%2C%22projectionType%22%3A%22RECTANGULAR%22%2C%22averageBitrate%22%3A148052%2C%22colorInfo%22%3A%7B%22primaries%22%3A%22COLOR_PRIMARIES_BT709%22%2C%22transferCharacteristics%22%3A%22COLOR_TRANSFER_CHARACTERISTICS_BT709%22%2C%22matrixCoefficients%22%3A%22COLOR_MATRIX_COEFFICIENTS_BT709%22%7D%2C%22approxDurationMs%22%3A15014%7D%2C%7B%22itag%22%3A396%2C%22url%22%3A%22https%3A%2F%2Frr5---sn-h0jeln7e.googlevideo.com%2Fvideoplayback%3Fexpire%3D1722318110%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026ip%3D93.235.183.158%5Cu0026id%3Do-AOT151Lw5IRApOBym6QRDN4NqeNkLPOGW3TDb3_xVd7Q%5Cu0026itag%3D396%5Cu0026aitags%3D133%252C134%252C135%252C136%252C137%252C160%252C242%252C243%252C244%252C247%252C248%252C278%252C394%252C395%252C396%252C397%252C398%252C399%5Cu0026source%3Dyoutube%5Cu0026requiressl%3Dyes%5Cu0026xpc%3DEgVo2aDSNQ%253D%253D%5Cu0026mh%3DRk%5Cu0026mm%3D31%252C26%5Cu0026mn%3Dsn-h0jeln7e%252Csn-4g5ednd7%5Cu0026ms%3Dau%252Conr%5Cu0026mv%3Dm%5Cu0026mvi%3D5%5Cu0026pl%3D26%5Cu0026ctier%3DL%5Cu0026initcwndbps%3D1957500%5Cu0026bui%3DAXc671ICTQW9za4L4fUvI6iB5Xb7eqfThgEChPCJdCVam18bfvfY9U9dJWBA8yxmehdpP6WumZUisN4c%5Cu0026vprv%3D1%5Cu0026svpuc%3D1%5Cu0026mime%3Dvideo%252Fmp4%5Cu0026ns%3DtkuggsHhRMGoMXpWHzLtizcQ%5Cu0026rqh%3D1%5Cu0026gir%3Dyes%5Cu0026clen%3D234319%5Cu0026dur%3D15.014%5Cu0026lmt%3D1721310031574237%5Cu0026mt%3D1722295996%5Cu0026fvip%3D2%5Cu0026keepalive%3Dyes%5Cu0026lmw%3D1%5Cu0026c%3DTVHTML5%5Cu0026sefc%3D1%5Cu0026txp%3D5537434%5Cu0026n%3DiC9X4DjTIDghkZ-R2%5Cu0026sparams%3Dexpire%252Cei%252Cip%252Cid%252Caitags%252Csource%252Crequiressl%252Cxpc%252Cctier%252Cbui%252Cvprv%252Csvpuc%252Cmime%252Cns%252Crqh%252Cgir%252Cclen%252Cdur%252Clmt%5Cu0026sig%3DAJfQdSswRQIgSa1EfQ6qrQujbRdpqGvVodU_YniNdG7tkHdKLh3DKZ0CIQDqb-dxQATvghfeuVeeMf8TY9ChnWM3wd_asrjEoyBjJQ%253D%253D%5Cu0026lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%5Cu0026lsig%3DAGtxev0wRAIgOkmRy7RSThJGxtogLFgCTlpda6qeKYWlqIfjdRZNQyQCIChab2SPRG2KMMf1cKKFsf9scaC0_ZGjJyNGxok41QsK%22%2C%22mimeType%22%3A%22video%2Fmp4%3B+codecs%3D%5C%22av01.0.01M.08%5C%22%22%2C%22bitrate%22%3A162403%2C%22width%22%3A640%2C%22height%22%3A360%2C%22initRange%22%3A%7B%22start%22%3A0%2C%22end%22%3A699%7D%2C%22indexRange%22%3A%7B%22start%22%3A700%2C%22end%22%3A767%7D%2C%22lastModified%22%3A1721310031574237%2C%22contentLength%22%3A234319%2C%22quality%22%3A%22medium%22%2C%22fps%22%3A24%2C%22qualityLabel%22%3A%22360p%22%2C%22projectionType%22%3A%22RECTANGULAR%22%2C%22averageBitrate%22%3A124853%2C%22colorInfo%22%3A%7B%22primaries%22%3A%22COLOR_PRIMARIES_BT709%22%2C%22transferCharacteristics%22%3A%22COLOR_TRANSFER_CHARACTERISTICS_BT709%22%2C%22matrixCoefficients%22%3A%22COLOR_MATRIX_COEFFICIENTS_BT709%22%7D%2C%22approxDurationMs%22%3A15014%7D%2C%7B%22itag%22%3A133%2C%22url%22%3A%22https%3A%2F%2Frr5---sn-h0jeln7e.googlevideo.com%2Fvideoplayback%3Fexpire%3D1722318110%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026ip%3D93.235.183.158%5Cu0026id%3Do-AOT151Lw5IRApOBym6QRDN4NqeNkLPOGW3TDb3_xVd7Q%5Cu0026itag%3D133%5Cu0026aitags%3D133%252C134%252C135%252C136%252C137%252C160%252C242%252C243%252C244%252C247%252C248%252C278%252C394%252C395%252C396%252C397%252C398%252C399%5Cu0026source%3Dyoutube%5Cu0026requiressl%3Dyes%5Cu0026xpc%3DEgVo2aDSNQ%253D%253D%5Cu0026mh%3DRk%5Cu0026mm%3D31%252C26%5Cu0026mn%3Dsn-h0jeln7e%252Csn-4g5ednd7%5Cu0026ms%3Dau%252Conr%5Cu0026mv%3Dm%5Cu0026mvi%3D5%5Cu0026pl%3D26%5Cu0026ctier%3DL%5Cu0026initcwndbps%3D1957500%5Cu0026bui%3DAXc671ICTQW9za4L4fUvI6iB5Xb7eqfThgEChPCJdCVam18bfvfY9U9dJWBA8yxmehdpP6WumZUisN4c%5Cu0026vprv%3D1%5Cu0026svpuc%3D1%5Cu0026mime%3Dvideo%252Fmp4%5Cu0026ns%3DtkuggsHhRMGoMXpWHzLtizcQ%5Cu0026rqh%3D1%5Cu0026gir%3Dyes%5Cu0026clen%3D121250%5Cu0026dur%3D15.014%5Cu0026lmt%3D1721310628324527%5Cu0026mt%3D1722295996%5Cu0026fvip%3D2%5Cu0026keepalive%3Dyes%5Cu0026lmw%3D1%5Cu0026c%3DTVHTML5%5Cu0026sefc%3D1%5Cu0026txp%3D5535434%5Cu0026n%3DiC9X4DjTIDghkZ-R2%5Cu0026sparams%3Dexpire%252Cei%252Cip%252Cid%252Caitags%252Csource%252Crequiressl%252Cxpc%252Cctier%252Cbui%252Cvprv%252Csvpuc%252Cmime%252Cns%252Crqh%252Cgir%252Cclen%252Cdur%252Clmt%5Cu0026sig%3DAJfQdSswRQIgF71zfUdMi4asadpfp3Z0wWstdc-iY8DJzT8KixKeMdECIQCjZczPyEuX_WjvgsSSn4pEJM3Bn8XXfuVTUACAIhScfQ%253D%253D%5Cu0026lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%5Cu0026lsig%3DAGtxev0wRAIgOkmRy7RSThJGxtogLFgCTlpda6qeKYWlqIfjdRZNQyQCIChab2SPRG2KMMf1cKKFsf9scaC0_ZGjJyNGxok41QsK%22%2C%22mimeType%22%3A%22video%2Fmp4%3B+codecs%3D%5C%22avc1.4d4015%5C%22%22%2C%22bitrate%22%3A84890%2C%22width%22%3A426%2C%22height%22%3A240%2C%22initRange%22%3A%7B%22start%22%3A0%2C%22end%22%3A738%7D%2C%22indexRange%22%3A%7B%22start%22%3A739%2C%22end%22%3A806%7D%2C%22lastModified%22%3A1721310628324527%2C%22contentLength%22%3A121250%2C%22quality%22%3A%22small%22%2C%22fps%22%3A24%2C%22qualityLabel%22%3A%22240p%22%2C%22projectionType%22%3A%22RECTANGULAR%22%2C%22averageBitrate%22%3A64606%2C%22approxDurationMs%22%3A15014%7D%2C%7B%22itag%22%3A242%2C%22url%22%3A%22https%3A%2F%2Frr5---sn-h0jeln7e.googlevideo.com%2Fvideoplayback%3Fexpire%3D1722318110%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026ip%3D93.235.183.158%5Cu0026id%3Do-AOT151Lw5IRApOBym6QRDN4NqeNkLPOGW3TDb3_xVd7Q%5Cu0026itag%3D242%5Cu0026aitags%3D133%252C134%252C135%252C136%252C137%252C160%252C242%252C243%252C244%252C247%252C248%252C278%252C394%252C395%252C396%252C397%252C398%252C399%5Cu0026source%3Dyoutube%5Cu0026requiressl%3Dyes%5Cu0026xpc%3DEgVo2aDSNQ%253D%253D%5Cu0026mh%3DRk%5Cu0026mm%3D31%252C26%5Cu0026mn%3Dsn-h0jeln7e%252Csn-4g5ednd7%5Cu0026ms%3Dau%252Conr%5Cu0026mv%3Dm%5Cu0026mvi%3D5%5Cu0026pl%3D26%5Cu0026ctier%3DL%5Cu0026initcwndbps%3D1957500%5Cu0026bui%3DAXc671ICTQW9za4L4fUvI6iB5Xb7eqfThgEChPCJdCVam18bfvfY9U9dJWBA8yxmehdpP6WumZUisN4c%5Cu0026vprv%3D1%5Cu0026svpuc%3D1%5Cu0026mime%3Dvideo%252Fwebm%5Cu0026ns%3DtkuggsHhRMGoMXpWHzLtizcQ%5Cu0026rqh%3D1%5Cu0026gir%3Dyes%5Cu0026clen%3D170497%5Cu0026dur%3D15.014%5Cu0026lmt%3D1721311223441861%5Cu0026mt%3D1722295996%5Cu0026fvip%3D2%5Cu0026keepalive%3Dyes%5Cu0026lmw%3D1%5Cu0026c%3DTVHTML5%5Cu0026sefc%3D1%5Cu0026txp%3D5535434%5Cu0026n%3DiC9X4DjTIDghkZ-R2%5Cu0026sparams%3Dexpire%252Cei%252Cip%252Cid%252Caitags%252Csource%252Crequiressl%252Cxpc%252Cctier%252Cbui%252Cvprv%252Csvpuc%252Cmime%252Cns%252Crqh%252Cgir%252Cclen%252Cdur%252Clmt%5Cu0026sig%3DAJfQdSswRQIhALzwmKU5NXn2YS9-5EOQo2gtbUUzCXV6rQCBMzyKlwpRAiAbIrMkr9ZDqCHGOqraaKjIGzZCQUW85Sp2pjUFAS2m_Q%253D%253D%5Cu0026lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%5Cu0026lsig%3DAGtxev0wRAIgOkmRy7RSThJGxtogLFgCTlpda6qeKYWlqIfjdRZNQyQCIChab2SPRG2KMMf1cKKFsf9scaC0_ZGjJyNGxok41QsK%22%2C%22mimeType%22%3A%22video%2Fwebm%3B+codecs%3D%5C%22vp9%5C%22%22%2C%22bitrate%22%3A114293%2C%22width%22%3A426%2C%22height%22%3A240%2C%22initRange%22%3A%7B%22start%22%3A0%2C%22end%22%3A217%7D%2C%22indexRange%22%3A%7B%22start%22%3A218%2C%22end%22%3A266%7D%2C%22lastModified%22%3A1721311223441861%2C%22contentLength%22%3A170497%2C%22quality%22%3A%22small%22%2C%22fps%22%3A24%2C%22qualityLabel%22%3A%22240p%22%2C%22projectionType%22%3A%22RECTANGULAR%22%2C%22averageBitrate%22%3A90846%2C%22colorInfo%22%3A%7B%22primaries%22%3A%22COLOR_PRIMARIES_BT709%22%2C%22transferCharacteristics%22%3A%22COLOR_TRANSFER_CHARACTERISTICS_BT709%22%2C%22matrixCoefficients%22%3A%22COLOR_MATRIX_COEFFICIENTS_BT709%22%7D%2C%22approxDurationMs%22%3A15014%7D%2C%7B%22itag%22%3A395%2C%22url%22%3A%22https%3A%2F%2Frr5---sn-h0jeln7e.googlevideo.com%2Fvideoplayback%3Fexpire%3D1722318110%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026ip%3D93.235.183.158%5Cu0026id%3Do-AOT151Lw5IRApOBym6QRDN4NqeNkLPOGW3TDb3_xVd7Q%5Cu0026itag%3D395%5Cu0026aitags%3D133%252C134%252C135%252C136%252C137%252C160%252C242%252C243%252C244%252C247%252C248%252C278%252C394%252C395%252C396%252C397%252C398%252C399%5Cu0026source%3Dyoutube%5Cu0026requiressl%3Dyes%5Cu0026xpc%3DEgVo2aDSNQ%253D%253D%5Cu0026mh%3DRk%5Cu0026mm%3D31%252C26%5Cu0026mn%3Dsn-h0jeln7e%252Csn-4g5ednd7%5Cu0026ms%3Dau%252Conr%5Cu0026mv%3Dm%5Cu0026mvi%3D5%5Cu0026pl%3D26%5Cu0026ctier%3DL%5Cu0026initcwndbps%3D1957500%5Cu0026bui%3DAXc671ICTQW9za4L4fUvI6iB5Xb7eqfThgEChPCJdCVam18bfvfY9U9dJWBA8yxmehdpP6WumZUisN4c%5Cu0026vprv%3D1%5Cu0026svpuc%3D1%5Cu0026mime%3Dvideo%252Fmp4%5Cu0026ns%3DtkuggsHhRMGoMXpWHzLtizcQ%5Cu0026rqh%3D1%5Cu0026gir%3Dyes%5Cu0026clen%3D129531%5Cu0026dur%3D15.014%5Cu0026lmt%3D1721310210084707%5Cu0026mt%3D1722295996%5Cu0026fvip%3D2%5Cu0026keepalive%3Dyes%5Cu0026lmw%3D1%5Cu0026c%3DTVHTML5%5Cu0026sefc%3D1%5Cu0026txp%3D5537434%5Cu0026n%3DiC9X4DjTIDghkZ-R2%5Cu0026sparams%3Dexpire%252Cei%252Cip%252Cid%252Caitags%252Csource%252Crequiressl%252Cxpc%252Cctier%252Cbui%252Cvprv%252Csvpuc%252Cmime%252Cns%252Crqh%252Cgir%252Cclen%252Cdur%252Clmt%5Cu0026sig%3DAJfQdSswRAIgDstHQYtX1nfC4n91UPZTlfV4HelXvC_AQwNwh_yhIQUCIFD9yKerhR0c5PUsfg2hzQT3-0EYZ8TdaztlhHOp-wcl%5Cu0026lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%5Cu0026lsig%3DAGtxev0wRAIgOkmRy7RSThJGxtogLFgCTlpda6qeKYWlqIfjdRZNQyQCIChab2SPRG2KMMf1cKKFsf9scaC0_ZGjJyNGxok41QsK%22%2C%22mimeType%22%3A%22video%2Fmp4%3B+codecs%3D%5C%22av01.0.00M.08%5C%22%22%2C%22bitrate%22%3A83786%2C%22width%22%3A426%2C%22height%22%3A240%2C%22initRange%22%3A%7B%22start%22%3A0%2C%22end%22%3A699%7D%2C%22indexRange%22%3A%7B%22start%22%3A700%2C%22end%22%3A767%7D%2C%22lastModified%22%3A1721310210084707%2C%22contentLength%22%3A129531%2C%22quality%22%3A%22small%22%2C%22fps%22%3A24%2C%22qualityLabel%22%3A%22240p%22%2C%22projectionType%22%3A%22RECTANGULAR%22%2C%22averageBitrate%22%3A69018%2C%22colorInfo%22%3A%7B%22primaries%22%3A%22COLOR_PRIMARIES_BT709%22%2C%22transferCharacteristics%22%3A%22COLOR_TRANSFER_CHARACTERISTICS_BT709%22%2C%22matrixCoefficients%22%3A%22COLOR_MATRIX_COEFFICIENTS_BT709%22%7D%2C%22approxDurationMs%22%3A15014%7D%2C%7B%22itag%22%3A160%2C%22url%22%3A%22https%3A%2F%2Frr5---sn-h0jeln7e.googlevideo.com%2Fvideoplayback%3Fexpire%3D1722318110%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026ip%3D93.235.183.158%5Cu0026id%3Do-AOT151Lw5IRApOBym6QRDN4NqeNkLPOGW3TDb3_xVd7Q%5Cu0026itag%3D160%5Cu0026aitags%3D133%252C134%252C135%252C136%252C137%252C160%252C242%252C243%252C244%252C247%252C248%252C278%252C394%252C395%252C396%252C397%252C398%252C399%5Cu0026source%3Dyoutube%5Cu0026requiressl%3Dyes%5Cu0026xpc%3DEgVo2aDSNQ%253D%253D%5Cu0026mh%3DRk%5Cu0026mm%3D31%252C26%5Cu0026mn%3Dsn-h0jeln7e%252Csn-4g5ednd7%5Cu0026ms%3Dau%252Conr%5Cu0026mv%3Dm%5Cu0026mvi%3D5%5Cu0026pl%3D26%5Cu0026ctier%3DL%5Cu0026initcwndbps%3D1957500%5Cu0026bui%3DAXc671ICTQW9za4L4fUvI6iB5Xb7eqfThgEChPCJdCVam18bfvfY9U9dJWBA8yxmehdpP6WumZUisN4c%5Cu0026vprv%3D1%5Cu0026svpuc%3D1%5Cu0026mime%3Dvideo%252Fmp4%5Cu0026ns%3DtkuggsHhRMGoMXpWHzLtizcQ%5Cu0026rqh%3D1%5Cu0026gir%3Dyes%5Cu0026clen%3D77987%5Cu0026dur%3D15.014%5Cu0026lmt%3D1721310628350238%5Cu0026mt%3D1722295996%5Cu0026fvip%3D2%5Cu0026keepalive%3Dyes%5Cu0026lmw%3D1%5Cu0026c%3DTVHTML5%5Cu0026sefc%3D1%5Cu0026txp%3D5535434%5Cu0026n%3DiC9X4DjTIDghkZ-R2%5Cu0026sparams%3Dexpire%252Cei%252Cip%252Cid%252Caitags%252Csource%252Crequiressl%252Cxpc%252Cctier%252Cbui%252Cvprv%252Csvpuc%252Cmime%252Cns%252Crqh%252Cgir%252Cclen%252Cdur%252Clmt%5Cu0026sig%3DAJfQdSswRQIgXeZ4nDUWvoYfrohTeuXzycYlWqmKF3k9VipD88cP2FUCIQD7tVoDE5WUzKGHzqaHLAnlbZ-cVltkyNGfRqazogHO3w%253D%253D%5Cu0026lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%5Cu0026lsig%3DAGtxev0wRAIgOkmRy7RSThJGxtogLFgCTlpda6qeKYWlqIfjdRZNQyQCIChab2SPRG2KMMf1cKKFsf9scaC0_ZGjJyNGxok41QsK%22%2C%22mimeType%22%3A%22video%2Fmp4%3B+codecs%3D%5C%22avc1.4d400c%5C%22%22%2C%22bitrate%22%3A53937%2C%22width%22%3A256%2C%22height%22%3A144%2C%22initRange%22%3A%7B%22start%22%3A0%2C%22end%22%3A737%7D%2C%22indexRange%22%3A%7B%22start%22%3A738%2C%22end%22%3A805%7D%2C%22lastModified%22%3A1721310628350238%2C%22contentLength%22%3A77987%2C%22quality%22%3A%22tiny%22%2C%22fps%22%3A24%2C%22qualityLabel%22%3A%22144p%22%2C%22projectionType%22%3A%22RECTANGULAR%22%2C%22averageBitrate%22%3A41554%2C%22approxDurationMs%22%3A15014%7D%2C%7B%22itag%22%3A278%2C%22url%22%3A%22https%3A%2F%2Frr5---sn-h0jeln7e.googlevideo.com%2Fvideoplayback%3Fexpire%3D1722318110%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026ip%3D93.235.183.158%5Cu0026id%3Do-AOT151Lw5IRApOBym6QRDN4NqeNkLPOGW3TDb3_xVd7Q%5Cu0026itag%3D278%5Cu0026aitags%3D133%252C134%252C135%252C136%252C137%252C160%252C242%252C243%252C244%252C247%252C248%252C278%252C394%252C395%252C396%252C397%252C398%252C399%5Cu0026source%3Dyoutube%5Cu0026requiressl%3Dyes%5Cu0026xpc%3DEgVo2aDSNQ%253D%253D%5Cu0026mh%3DRk%5Cu0026mm%3D31%252C26%5Cu0026mn%3Dsn-h0jeln7e%252Csn-4g5ednd7%5Cu0026ms%3Dau%252Conr%5Cu0026mv%3Dm%5Cu0026mvi%3D5%5Cu0026pl%3D26%5Cu0026ctier%3DL%5Cu0026initcwndbps%3D1957500%5Cu0026bui%3DAXc671ICTQW9za4L4fUvI6iB5Xb7eqfThgEChPCJdCVam18bfvfY9U9dJWBA8yxmehdpP6WumZUisN4c%5Cu0026vprv%3D1%5Cu0026svpuc%3D1%5Cu0026mime%3Dvideo%252Fwebm%5Cu0026ns%3DtkuggsHhRMGoMXpWHzLtizcQ%5Cu0026rqh%3D1%5Cu0026gir%3Dyes%5Cu0026clen%3D149133%5Cu0026dur%3D15.014%5Cu0026lmt%3D1721311223435017%5Cu0026mt%3D1722295996%5Cu0026fvip%3D2%5Cu0026keepalive%3Dyes%5Cu0026lmw%3D1%5Cu0026c%3DTVHTML5%5Cu0026sefc%3D1%5Cu0026txp%3D5535434%5Cu0026n%3DiC9X4DjTIDghkZ-R2%5Cu0026sparams%3Dexpire%252Cei%252Cip%252Cid%252Caitags%252Csource%252Crequiressl%252Cxpc%252Cctier%252Cbui%252Cvprv%252Csvpuc%252Cmime%252Cns%252Crqh%252Cgir%252Cclen%252Cdur%252Clmt%5Cu0026sig%3DAJfQdSswRgIhAJwqMZK4w9JxY5B_rcsMO5l4JNPcundD1gkzLo1Ev85xAiEA-XCcghGK4Z0Alvq7hGwXH6FywcepxCLnrQA8kJRjK-A%253D%5Cu0026lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%5Cu0026lsig%3DAGtxev0wRAIgOkmRy7RSThJGxtogLFgCTlpda6qeKYWlqIfjdRZNQyQCIChab2SPRG2KMMf1cKKFsf9scaC0_ZGjJyNGxok41QsK%22%2C%22mimeType%22%3A%22video%2Fwebm%3B+codecs%3D%5C%22vp9%5C%22%22%2C%22bitrate%22%3A89160%2C%22width%22%3A256%2C%22height%22%3A144%2C%22initRange%22%3A%7B%22start%22%3A0%2C%22end%22%3A217%7D%2C%22indexRange%22%3A%7B%22start%22%3A218%2C%22end%22%3A266%7D%2C%22lastModified%22%3A1721311223435017%2C%22contentLength%22%3A149133%2C%22quality%22%3A%22tiny%22%2C%22fps%22%3A24%2C%22qualityLabel%22%3A%22144p%22%2C%22projectionType%22%3A%22RECTANGULAR%22%2C%22averageBitrate%22%3A79463%2C%22colorInfo%22%3A%7B%22primaries%22%3A%22COLOR_PRIMARIES_BT709%22%2C%22transferCharacteristics%22%3A%22COLOR_TRANSFER_CHARACTERISTICS_BT709%22%2C%22matrixCoefficients%22%3A%22COLOR_MATRIX_COEFFICIENTS_BT709%22%7D%2C%22approxDurationMs%22%3A15014%7D%2C%7B%22itag%22%3A394%2C%22url%22%3A%22https%3A%2F%2Frr5---sn-h0jeln7e.googlevideo.com%2Fvideoplayback%3Fexpire%3D1722318110%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026ip%3D93.235.183.158%5Cu0026id%3Do-AOT151Lw5IRApOBym6QRDN4NqeNkLPOGW3TDb3_xVd7Q%5Cu0026itag%3D394%5Cu0026aitags%3D133%252C134%252C135%252C136%252C137%252C160%252C242%252C243%252C244%252C247%252C248%252C278%252C394%252C395%252C396%252C397%252C398%252C399%5Cu0026source%3Dyoutube%5Cu0026requiressl%3Dyes%5Cu0026xpc%3DEgVo2aDSNQ%253D%253D%5Cu0026mh%3DRk%5Cu0026mm%3D31%252C26%5Cu0026mn%3Dsn-h0jeln7e%252Csn-4g5ednd7%5Cu0026ms%3Dau%252Conr%5Cu0026mv%3Dm%5Cu0026mvi%3D5%5Cu0026pl%3D26%5Cu0026ctier%3DL%5Cu0026initcwndbps%3D1957500%5Cu0026bui%3DAXc671ICTQW9za4L4fUvI6iB5Xb7eqfThgEChPCJdCVam18bfvfY9U9dJWBA8yxmehdpP6WumZUisN4c%5Cu0026vprv%3D1%5Cu0026svpuc%3D1%5Cu0026mime%3Dvideo%252Fmp4%5Cu0026ns%3DtkuggsHhRMGoMXpWHzLtizcQ%5Cu0026rqh%3D1%5Cu0026gir%3Dyes%5Cu0026clen%3D89534%5Cu0026dur%3D15.014%5Cu0026lmt%3D1721310033136007%5Cu0026mt%3D1722295996%5Cu0026fvip%3D2%5Cu0026keepalive%3Dyes%5Cu0026lmw%3D1%5Cu0026c%3DTVHTML5%5Cu0026sefc%3D1%5Cu0026txp%3D5537434%5Cu0026n%3DiC9X4DjTIDghkZ-R2%5Cu0026sparams%3Dexpire%252Cei%252Cip%252Cid%252Caitags%252Csource%252Crequiressl%252Cxpc%252Cctier%252Cbui%252Cvprv%252Csvpuc%252Cmime%252Cns%252Crqh%252Cgir%252Cclen%252Cdur%252Clmt%5Cu0026sig%3DAJfQdSswRgIhAOhLKebshdUCIRqNj4jzEN2forh9TdLBfJOzdqv1N60hAiEAgJzxEWli5y_R6_7rkRRKWo00H96baPMJYVlUApIOSR0%253D%5Cu0026lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%5Cu0026lsig%3DAGtxev0wRAIgOkmRy7RSThJGxtogLFgCTlpda6qeKYWlqIfjdRZNQyQCIChab2SPRG2KMMf1cKKFsf9scaC0_ZGjJyNGxok41QsK%22%2C%22mimeType%22%3A%22video%2Fmp4%3B+codecs%3D%5C%22av01.0.00M.08%5C%22%22%2C%22bitrate%22%3A62314%2C%22width%22%3A256%2C%22height%22%3A144%2C%22initRange%22%3A%7B%22start%22%3A0%2C%22end%22%3A699%7D%2C%22indexRange%22%3A%7B%22start%22%3A700%2C%22end%22%3A767%7D%2C%22lastModified%22%3A1721310033136007%2C%22contentLength%22%3A89534%2C%22quality%22%3A%22tiny%22%2C%22fps%22%3A24%2C%22qualityLabel%22%3A%22144p%22%2C%22projectionType%22%3A%22RECTANGULAR%22%2C%22averageBitrate%22%3A47706%2C%22colorInfo%22%3A%7B%22primaries%22%3A%22COLOR_PRIMARIES_BT709%22%2C%22transferCharacteristics%22%3A%22COLOR_TRANSFER_CHARACTERISTICS_BT709%22%2C%22matrixCoefficients%22%3A%22COLOR_MATRIX_COEFFICIENTS_BT709%22%7D%2C%22approxDurationMs%22%3A15014%7D%2C%7B%22itag%22%3A140%2C%22url%22%3A%22https%3A%2F%2Frr5---sn-h0jeln7e.googlevideo.com%2Fvideoplayback%3Fexpire%3D1722318110%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026ip%3D93.235.183.158%5Cu0026id%3Do-AOT151Lw5IRApOBym6QRDN4NqeNkLPOGW3TDb3_xVd7Q%5Cu0026itag%3D140%5Cu0026source%3Dyoutube%5Cu0026requiressl%3Dyes%5Cu0026xpc%3DEgVo2aDSNQ%253D%253D%5Cu0026mh%3DRk%5Cu0026mm%3D31%252C26%5Cu0026mn%3Dsn-h0jeln7e%252Csn-4g5ednd7%5Cu0026ms%3Dau%252Conr%5Cu0026mv%3Dm%5Cu0026mvi%3D5%5Cu0026pl%3D26%5Cu0026ctier%3DL%5Cu0026initcwndbps%3D1957500%5Cu0026bui%3DAXc671ICTQW9za4L4fUvI6iB5Xb7eqfThgEChPCJdCVam18bfvfY9U9dJWBA8yxmehdpP6WumZUisN4c%5Cu0026vprv%3D1%5Cu0026svpuc%3D1%5Cu0026mime%3Daudio%252Fmp4%5Cu0026ns%3DtkuggsHhRMGoMXpWHzLtizcQ%5Cu0026rqh%3D1%5Cu0026gir%3Dyes%5Cu0026clen%3D245341%5Cu0026dur%3D15.069%5Cu0026lmt%3D1721309718301812%5Cu0026mt%3D1722295996%5Cu0026fvip%3D2%5Cu0026keepalive%3Dyes%5Cu0026lmw%3D1%5Cu0026c%3DTVHTML5%5Cu0026sefc%3D1%5Cu0026txp%3D5532434%5Cu0026n%3DiC9X4DjTIDghkZ-R2%5Cu0026sparams%3Dexpire%252Cei%252Cip%252Cid%252Citag%252Csource%252Crequiressl%252Cxpc%252Cctier%252Cbui%252Cvprv%252Csvpuc%252Cmime%252Cns%252Crqh%252Cgir%252Cclen%252Cdur%252Clmt%5Cu0026sig%3DAJfQdSswRQIgOLWeF99aysyix3uHwJUJ3Kef6a9RY7Zth_fx7d2-BhECIQDzceZB_nK3eI4RHjDQkv7TVSmvbUBUjbAzVgCxSxnSKg%253D%253D%5Cu0026lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%5Cu0026lsig%3DAGtxev0wRAIgOkmRy7RSThJGxtogLFgCTlpda6qeKYWlqIfjdRZNQyQCIChab2SPRG2KMMf1cKKFsf9scaC0_ZGjJyNGxok41QsK%22%2C%22mimeType%22%3A%22audio%2Fmp4%3B+codecs%3D%5C%22mp4a.40.2%5C%22%22%2C%22bitrate%22%3A130409%2C%22initRange%22%3A%7B%22start%22%3A0%2C%22end%22%3A722%7D%2C%22indexRange%22%3A%7B%22start%22%3A723%2C%22end%22%3A778%7D%2C%22lastModified%22%3A1721309718301812%2C%22contentLength%22%3A245341%2C%22quality%22%3A%22tiny%22%2C%22projectionType%22%3A%22RECTANGULAR%22%2C%22averageBitrate%22%3A130249%2C%22highReplication%22%3Atrue%2C%22audioQuality%22%3A%22AUDIO_QUALITY_MEDIUM%22%2C%22approxDurationMs%22%3A15069%2C%22audioSampleRate%22%3A44100%2C%22audioChannels%22%3A2%2C%22loudnessDb%22%3A-4.2199993%7D%2C%7B%22itag%22%3A140%2C%22url%22%3A%22https%3A%2F%2Frr5---sn-h0jeln7e.googlevideo.com%2Fvideoplayback%3Fexpire%3D1722318110%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026ip%3D93.235.183.158%5Cu0026id%3Do-AOT151Lw5IRApOBym6QRDN4NqeNkLPOGW3TDb3_xVd7Q%5Cu0026itag%3D140%5Cu0026source%3Dyoutube%5Cu0026requiressl%3Dyes%5Cu0026xpc%3DEgVo2aDSNQ%253D%253D%5Cu0026mh%3DRk%5Cu0026mm%3D31%252C26%5Cu0026mn%3Dsn-h0jeln7e%252Csn-4g5ednd7%5Cu0026ms%3Dau%252Conr%5Cu0026mv%3Dm%5Cu0026mvi%3D5%5Cu0026pl%3D26%5Cu0026ctier%3DL%5Cu0026initcwndbps%3D1957500%5Cu0026bui%3DAXc671ICTQW9za4L4fUvI6iB5Xb7eqfThgEChPCJdCVam18bfvfY9U9dJWBA8yxmehdpP6WumZUisN4c%5Cu0026vprv%3D1%5Cu0026svpuc%3D1%5Cu0026xtags%3Ddrc%253D1%5Cu0026mime%3Daudio%252Fmp4%5Cu0026ns%3DtkuggsHhRMGoMXpWHzLtizcQ%5Cu0026rqh%3D1%5Cu0026gir%3Dyes%5Cu0026clen%3D245451%5Cu0026dur%3D15.069%5Cu0026lmt%3D1721309722663557%5Cu0026mt%3D1722295996%5Cu0026fvip%3D2%5Cu0026keepalive%3Dyes%5Cu0026lmw%3D1%5Cu0026c%3DTVHTML5%5Cu0026sefc%3D1%5Cu0026txp%3D5532434%5Cu0026n%3DiC9X4DjTIDghkZ-R2%5Cu0026sparams%3Dexpire%252Cei%252Cip%252Cid%252Citag%252Csource%252Crequiressl%252Cxpc%252Cctier%252Cbui%252Cvprv%252Csvpuc%252Cxtags%252Cmime%252Cns%252Crqh%252Cgir%252Cclen%252Cdur%252Clmt%5Cu0026sig%3DAJfQdSswRgIhAOxR1D67tRFVzipC_wivNBo7LA5vdmCI88xjkRappCCMAiEAhi1195MAxxzUUtM2tVdnBLpflJE8tQI4i3n1JZIMRB0%253D%5Cu0026lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%5Cu0026lsig%3DAGtxev0wRAIgOkmRy7RSThJGxtogLFgCTlpda6qeKYWlqIfjdRZNQyQCIChab2SPRG2KMMf1cKKFsf9scaC0_ZGjJyNGxok41QsK%22%2C%22mimeType%22%3A%22audio%2Fmp4%3B+codecs%3D%5C%22mp4a.40.2%5C%22%22%2C%22bitrate%22%3A130411%2C%22initRange%22%3A%7B%22start%22%3A0%2C%22end%22%3A722%7D%2C%22indexRange%22%3A%7B%22start%22%3A723%2C%22end%22%3A778%7D%2C%22lastModified%22%3A1721309722663557%2C%22contentLength%22%3A245451%2C%22quality%22%3A%22tiny%22%2C%22xtags%22%3A%22CggKA2RyYxIBMQ%22%2C%22projectionType%22%3A%22RECTANGULAR%22%2C%22averageBitrate%22%3A130307%2C%22highReplication%22%3Atrue%2C%22audioQuality%22%3A%22AUDIO_QUALITY_MEDIUM%22%2C%22approxDurationMs%22%3A15069%2C%22audioSampleRate%22%3A44100%2C%22audioChannels%22%3A2%2C%22loudnessDb%22%3A3.04%2C%22isDrc%22%3Atrue%7D%2C%7B%22itag%22%3A249%2C%22url%22%3A%22https%3A%2F%2Frr5---sn-h0jeln7e.googlevideo.com%2Fvideoplayback%3Fexpire%3D1722318110%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026ip%3D93.235.183.158%5Cu0026id%3Do-AOT151Lw5IRApOBym6QRDN4NqeNkLPOGW3TDb3_xVd7Q%5Cu0026itag%3D249%5Cu0026source%3Dyoutube%5Cu0026requiressl%3Dyes%5Cu0026xpc%3DEgVo2aDSNQ%253D%253D%5Cu0026mh%3DRk%5Cu0026mm%3D31%252C26%5Cu0026mn%3Dsn-h0jeln7e%252Csn-4g5ednd7%5Cu0026ms%3Dau%252Conr%5Cu0026mv%3Dm%5Cu0026mvi%3D5%5Cu0026pl%3D26%5Cu0026ctier%3DL%5Cu0026initcwndbps%3D1957500%5Cu0026bui%3DAXc671ICTQW9za4L4fUvI6iB5Xb7eqfThgEChPCJdCVam18bfvfY9U9dJWBA8yxmehdpP6WumZUisN4c%5Cu0026vprv%3D1%5Cu0026svpuc%3D1%5Cu0026mime%3Daudio%252Fwebm%5Cu0026ns%3DtkuggsHhRMGoMXpWHzLtizcQ%5Cu0026rqh%3D1%5Cu0026gir%3Dyes%5Cu0026clen%3D99397%5Cu0026dur%3D15.041%5Cu0026lmt%3D1721309742615061%5Cu0026mt%3D1722295996%5Cu0026fvip%3D2%5Cu0026keepalive%3Dyes%5Cu0026lmw%3D1%5Cu0026c%3DTVHTML5%5Cu0026sefc%3D1%5Cu0026txp%3D5532434%5Cu0026n%3DiC9X4DjTIDghkZ-R2%5Cu0026sparams%3Dexpire%252Cei%252Cip%252Cid%252Citag%252Csource%252Crequiressl%252Cxpc%252Cctier%252Cbui%252Cvprv%252Csvpuc%252Cmime%252Cns%252Crqh%252Cgir%252Cclen%252Cdur%252Clmt%5Cu0026sig%3DAJfQdSswRQIhAOdruOSFRPdrhBI6Srbpt180W-8QFZ1dLJZXhVYX1_SWAiBxo0O-Ytotqopzn5Ba4ry601sAg-r6ZV2GLP3u9dlxVQ%253D%253D%5Cu0026lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%5Cu0026lsig%3DAGtxev0wRAIgOkmRy7RSThJGxtogLFgCTlpda6qeKYWlqIfjdRZNQyQCIChab2SPRG2KMMf1cKKFsf9scaC0_ZGjJyNGxok41QsK%22%2C%22mimeType%22%3A%22audio%2Fwebm%3B+codecs%3D%5C%22opus%5C%22%22%2C%22bitrate%22%3A53278%2C%22initRange%22%3A%7B%22start%22%3A0%2C%22end%22%3A265%7D%2C%22indexRange%22%3A%7B%22start%22%3A266%2C%22end%22%3A299%7D%2C%22lastModified%22%3A1721309742615061%2C%22contentLength%22%3A99397%2C%22quality%22%3A%22tiny%22%2C%22projectionType%22%3A%22RECTANGULAR%22%2C%22averageBitrate%22%3A52867%2C%22audioQuality%22%3A%22AUDIO_QUALITY_LOW%22%2C%22approxDurationMs%22%3A15041%2C%22audioSampleRate%22%3A48000%2C%22audioChannels%22%3A2%2C%22loudnessDb%22%3A-4.2199993%7D%2C%7B%22itag%22%3A249%2C%22url%22%3A%22https%3A%2F%2Frr5---sn-h0jeln7e.googlevideo.com%2Fvideoplayback%3Fexpire%3D1722318110%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026ip%3D93.235.183.158%5Cu0026id%3Do-AOT151Lw5IRApOBym6QRDN4NqeNkLPOGW3TDb3_xVd7Q%5Cu0026itag%3D249%5Cu0026source%3Dyoutube%5Cu0026requiressl%3Dyes%5Cu0026xpc%3DEgVo2aDSNQ%253D%253D%5Cu0026mh%3DRk%5Cu0026mm%3D31%252C26%5Cu0026mn%3Dsn-h0jeln7e%252Csn-4g5ednd7%5Cu0026ms%3Dau%252Conr%5Cu0026mv%3Dm%5Cu0026mvi%3D5%5Cu0026pl%3D26%5Cu0026ctier%3DL%5Cu0026initcwndbps%3D1957500%5Cu0026bui%3DAXc671ICTQW9za4L4fUvI6iB5Xb7eqfThgEChPCJdCVam18bfvfY9U9dJWBA8yxmehdpP6WumZUisN4c%5Cu0026vprv%3D1%5Cu0026svpuc%3D1%5Cu0026xtags%3Ddrc%253D1%5Cu0026mime%3Daudio%252Fwebm%5Cu0026ns%3DtkuggsHhRMGoMXpWHzLtizcQ%5Cu0026rqh%3D1%5Cu0026gir%3Dyes%5Cu0026clen%3D101284%5Cu0026dur%3D15.041%5Cu0026lmt%3D1721309732356301%5Cu0026mt%3D1722295996%5Cu0026fvip%3D2%5Cu0026keepalive%3Dyes%5Cu0026lmw%3D1%5Cu0026c%3DTVHTML5%5Cu0026sefc%3D1%5Cu0026txp%3D5532434%5Cu0026n%3DiC9X4DjTIDghkZ-R2%5Cu0026sparams%3Dexpire%252Cei%252Cip%252Cid%252Citag%252Csource%252Crequiressl%252Cxpc%252Cctier%252Cbui%252Cvprv%252Csvpuc%252Cxtags%252Cmime%252Cns%252Crqh%252Cgir%252Cclen%252Cdur%252Clmt%5Cu0026sig%3DAJfQdSswRgIhAKwUr1LV09-V4qaCwqRSNVPtwBg3hkI4T88YB1r_2rQpAiEAwHA5yKLrNg1psg5Y4qLnqfnq7mNjAB24qjD4cnesA_U%253D%5Cu0026lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%5Cu0026lsig%3DAGtxev0wRAIgOkmRy7RSThJGxtogLFgCTlpda6qeKYWlqIfjdRZNQyQCIChab2SPRG2KMMf1cKKFsf9scaC0_ZGjJyNGxok41QsK%22%2C%22mimeType%22%3A%22audio%2Fwebm%3B+codecs%3D%5C%22opus%5C%22%22%2C%22bitrate%22%3A54392%2C%22initRange%22%3A%7B%22start%22%3A0%2C%22end%22%3A265%7D%2C%22indexRange%22%3A%7B%22start%22%3A266%2C%22end%22%3A299%7D%2C%22lastModified%22%3A1721309732356301%2C%22contentLength%22%3A101284%2C%22quality%22%3A%22tiny%22%2C%22xtags%22%3A%22CggKA2RyYxIBMQ%22%2C%22projectionType%22%3A%22RECTANGULAR%22%2C%22averageBitrate%22%3A53870%2C%22audioQuality%22%3A%22AUDIO_QUALITY_LOW%22%2C%22approxDurationMs%22%3A15041%2C%22audioSampleRate%22%3A48000%2C%22audioChannels%22%3A2%2C%22loudnessDb%22%3A3.04%2C%22isDrc%22%3Atrue%7D%2C%7B%22itag%22%3A250%2C%22url%22%3A%22https%3A%2F%2Frr5---sn-h0jeln7e.googlevideo.com%2Fvideoplayback%3Fexpire%3D1722318110%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026ip%3D93.235.183.158%5Cu0026id%3Do-AOT151Lw5IRApOBym6QRDN4NqeNkLPOGW3TDb3_xVd7Q%5Cu0026itag%3D250%5Cu0026source%3Dyoutube%5Cu0026requiressl%3Dyes%5Cu0026xpc%3DEgVo2aDSNQ%253D%253D%5Cu0026mh%3DRk%5Cu0026mm%3D31%252C26%5Cu0026mn%3Dsn-h0jeln7e%252Csn-4g5ednd7%5Cu0026ms%3Dau%252Conr%5Cu0026mv%3Dm%5Cu0026mvi%3D5%5Cu0026pl%3D26%5Cu0026ctier%3DL%5Cu0026initcwndbps%3D1957500%5Cu0026bui%3DAXc671ICTQW9za4L4fUvI6iB5Xb7eqfThgEChPCJdCVam18bfvfY9U9dJWBA8yxmehdpP6WumZUisN4c%5Cu0026vprv%3D1%5Cu0026svpuc%3D1%5Cu0026mime%3Daudio%252Fwebm%5Cu0026ns%3DtkuggsHhRMGoMXpWHzLtizcQ%5Cu0026rqh%3D1%5Cu0026gir%3Dyes%5Cu0026clen%3D134207%5Cu0026dur%3D15.041%5Cu0026lmt%3D1721309742619499%5Cu0026mt%3D1722295996%5Cu0026fvip%3D2%5Cu0026keepalive%3Dyes%5Cu0026lmw%3D1%5Cu0026c%3DTVHTML5%5Cu0026sefc%3D1%5Cu0026txp%3D5532434%5Cu0026n%3DiC9X4DjTIDghkZ-R2%5Cu0026sparams%3Dexpire%252Cei%252Cip%252Cid%252Citag%252Csource%252Crequiressl%252Cxpc%252Cctier%252Cbui%252Cvprv%252Csvpuc%252Cmime%252Cns%252Crqh%252Cgir%252Cclen%252Cdur%252Clmt%5Cu0026sig%3DAJfQdSswRQIhAIr-_c-0LJttfDbinbZ45pKvYBY66t3bU-ZmEf_erWmfAiA2en3o9yiKVrbfuuiMpCSe2RVYuyF2brTlt1Eo1jTLGw%253D%253D%5Cu0026lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%5Cu0026lsig%3DAGtxev0wRAIgOkmRy7RSThJGxtogLFgCTlpda6qeKYWlqIfjdRZNQyQCIChab2SPRG2KMMf1cKKFsf9scaC0_ZGjJyNGxok41QsK%22%2C%22mimeType%22%3A%22audio%2Fwebm%3B+codecs%3D%5C%22opus%5C%22%22%2C%22bitrate%22%3A71398%2C%22initRange%22%3A%7B%22start%22%3A0%2C%22end%22%3A265%7D%2C%22indexRange%22%3A%7B%22start%22%3A266%2C%22end%22%3A299%7D%2C%22lastModified%22%3A1721309742619499%2C%22contentLength%22%3A134207%2C%22quality%22%3A%22tiny%22%2C%22projectionType%22%3A%22RECTANGULAR%22%2C%22averageBitrate%22%3A71381%2C%22audioQuality%22%3A%22AUDIO_QUALITY_LOW%22%2C%22approxDurationMs%22%3A15041%2C%22audioSampleRate%22%3A48000%2C%22audioChannels%22%3A2%2C%22loudnessDb%22%3A-4.2199993%7D%2C%7B%22itag%22%3A250%2C%22url%22%3A%22https%3A%2F%2Frr5---sn-h0jeln7e.googlevideo.com%2Fvideoplayback%3Fexpire%3D1722318110%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026ip%3D93.235.183.158%5Cu0026id%3Do-AOT151Lw5IRApOBym6QRDN4NqeNkLPOGW3TDb3_xVd7Q%5Cu0026itag%3D250%5Cu0026source%3Dyoutube%5Cu0026requiressl%3Dyes%5Cu0026xpc%3DEgVo2aDSNQ%253D%253D%5Cu0026mh%3DRk%5Cu0026mm%3D31%252C26%5Cu0026mn%3Dsn-h0jeln7e%252Csn-4g5ednd7%5Cu0026ms%3Dau%252Conr%5Cu0026mv%3Dm%5Cu0026mvi%3D5%5Cu0026pl%3D26%5Cu0026ctier%3DL%5Cu0026initcwndbps%3D1957500%5Cu0026bui%3DAXc671ICTQW9za4L4fUvI6iB5Xb7eqfThgEChPCJdCVam18bfvfY9U9dJWBA8yxmehdpP6WumZUisN4c%5Cu0026vprv%3D1%5Cu0026svpuc%3D1%5Cu0026xtags%3Ddrc%253D1%5Cu0026mime%3Daudio%252Fwebm%5Cu0026ns%3DtkuggsHhRMGoMXpWHzLtizcQ%5Cu0026rqh%3D1%5Cu0026gir%3Dyes%5Cu0026clen%3D135193%5Cu0026dur%3D15.041%5Cu0026lmt%3D1721309732360545%5Cu0026mt%3D1722295996%5Cu0026fvip%3D2%5Cu0026keepalive%3Dyes%5Cu0026lmw%3D1%5Cu0026c%3DTVHTML5%5Cu0026sefc%3D1%5Cu0026txp%3D5532434%5Cu0026n%3DiC9X4DjTIDghkZ-R2%5Cu0026sparams%3Dexpire%252Cei%252Cip%252Cid%252Citag%252Csource%252Crequiressl%252Cxpc%252Cctier%252Cbui%252Cvprv%252Csvpuc%252Cxtags%252Cmime%252Cns%252Crqh%252Cgir%252Cclen%252Cdur%252Clmt%5Cu0026sig%3DAJfQdSswRQIhAIC9cHl4zGYyjovJofRS1E1ZoRKw7drmkrhWV2epl_0kAiBvYxyplI3FyuQkq5CuYISeVAorEOeqDGGPAl1TWdRIOQ%253D%253D%5Cu0026lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%5Cu0026lsig%3DAGtxev0wRAIgOkmRy7RSThJGxtogLFgCTlpda6qeKYWlqIfjdRZNQyQCIChab2SPRG2KMMf1cKKFsf9scaC0_ZGjJyNGxok41QsK%22%2C%22mimeType%22%3A%22audio%2Fwebm%3B+codecs%3D%5C%22opus%5C%22%22%2C%22bitrate%22%3A72172%2C%22initRange%22%3A%7B%22start%22%3A0%2C%22end%22%3A265%7D%2C%22indexRange%22%3A%7B%22start%22%3A266%2C%22end%22%3A299%7D%2C%22lastModified%22%3A1721309732360545%2C%22contentLength%22%3A135193%2C%22quality%22%3A%22tiny%22%2C%22xtags%22%3A%22CggKA2RyYxIBMQ%22%2C%22projectionType%22%3A%22RECTANGULAR%22%2C%22averageBitrate%22%3A71906%2C%22audioQuality%22%3A%22AUDIO_QUALITY_LOW%22%2C%22approxDurationMs%22%3A15041%2C%22audioSampleRate%22%3A48000%2C%22audioChannels%22%3A2%2C%22loudnessDb%22%3A3.04%2C%22isDrc%22%3Atrue%7D%2C%7B%22itag%22%3A251%2C%22url%22%3A%22https%3A%2F%2Frr5---sn-h0jeln7e.googlevideo.com%2Fvideoplayback%3Fexpire%3D1722318110%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026ip%3D93.235.183.158%5Cu0026id%3Do-AOT151Lw5IRApOBym6QRDN4NqeNkLPOGW3TDb3_xVd7Q%5Cu0026itag%3D251%5Cu0026source%3Dyoutube%5Cu0026requiressl%3Dyes%5Cu0026xpc%3DEgVo2aDSNQ%253D%253D%5Cu0026mh%3DRk%5Cu0026mm%3D31%252C26%5Cu0026mn%3Dsn-h0jeln7e%252Csn-4g5ednd7%5Cu0026ms%3Dau%252Conr%5Cu0026mv%3Dm%5Cu0026mvi%3D5%5Cu0026pl%3D26%5Cu0026ctier%3DL%5Cu0026initcwndbps%3D1957500%5Cu0026bui%3DAXc671ICTQW9za4L4fUvI6iB5Xb7eqfThgEChPCJdCVam18bfvfY9U9dJWBA8yxmehdpP6WumZUisN4c%5Cu0026vprv%3D1%5Cu0026svpuc%3D1%5Cu0026mime%3Daudio%252Fwebm%5Cu0026ns%3DtkuggsHhRMGoMXpWHzLtizcQ%5Cu0026rqh%3D1%5Cu0026gir%3Dyes%5Cu0026clen%3D252551%5Cu0026dur%3D15.041%5Cu0026lmt%3D1721309742615185%5Cu0026mt%3D1722295996%5Cu0026fvip%3D2%5Cu0026keepalive%3Dyes%5Cu0026lmw%3D1%5Cu0026c%3DTVHTML5%5Cu0026sefc%3D1%5Cu0026txp%3D5532434%5Cu0026n%3DiC9X4DjTIDghkZ-R2%5Cu0026sparams%3Dexpire%252Cei%252Cip%252Cid%252Citag%252Csource%252Crequiressl%252Cxpc%252Cctier%252Cbui%252Cvprv%252Csvpuc%252Cmime%252Cns%252Crqh%252Cgir%252Cclen%252Cdur%252Clmt%5Cu0026sig%3DAJfQdSswRgIhAOC9jweqfmE2WcRni5NASl4Gcb3F2Op7vD4yLL8-dphwAiEAhYZvgb6t0G4EAUgzqgXu0Tk3nok9MD4IZRluwkCggiA%253D%5Cu0026lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%5Cu0026lsig%3DAGtxev0wRAIgOkmRy7RSThJGxtogLFgCTlpda6qeKYWlqIfjdRZNQyQCIChab2SPRG2KMMf1cKKFsf9scaC0_ZGjJyNGxok41QsK%22%2C%22mimeType%22%3A%22audio%2Fwebm%3B+codecs%3D%5C%22opus%5C%22%22%2C%22bitrate%22%3A139093%2C%22initRange%22%3A%7B%22start%22%3A0%2C%22end%22%3A265%7D%2C%22indexRange%22%3A%7B%22start%22%3A266%2C%22end%22%3A299%7D%2C%22lastModified%22%3A1721309742615185%2C%22contentLength%22%3A252551%2C%22quality%22%3A%22tiny%22%2C%22projectionType%22%3A%22RECTANGULAR%22%2C%22averageBitrate%22%3A134326%2C%22audioQuality%22%3A%22AUDIO_QUALITY_MEDIUM%22%2C%22approxDurationMs%22%3A15041%2C%22audioSampleRate%22%3A48000%2C%22audioChannels%22%3A2%2C%22loudnessDb%22%3A-4.2199993%7D%2C%7B%22itag%22%3A251%2C%22url%22%3A%22https%3A%2F%2Frr5---sn-h0jeln7e.googlevideo.com%2Fvideoplayback%3Fexpire%3D1722318110%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026ip%3D93.235.183.158%5Cu0026id%3Do-AOT151Lw5IRApOBym6QRDN4NqeNkLPOGW3TDb3_xVd7Q%5Cu0026itag%3D251%5Cu0026source%3Dyoutube%5Cu0026requiressl%3Dyes%5Cu0026xpc%3DEgVo2aDSNQ%253D%253D%5Cu0026mh%3DRk%5Cu0026mm%3D31%252C26%5Cu0026mn%3Dsn-h0jeln7e%252Csn-4g5ednd7%5Cu0026ms%3Dau%252Conr%5Cu0026mv%3Dm%5Cu0026mvi%3D5%5Cu0026pl%3D26%5Cu0026ctier%3DL%5Cu0026initcwndbps%3D1957500%5Cu0026bui%3DAXc671ICTQW9za4L4fUvI6iB5Xb7eqfThgEChPCJdCVam18bfvfY9U9dJWBA8yxmehdpP6WumZUisN4c%5Cu0026vprv%3D1%5Cu0026svpuc%3D1%5Cu0026xtags%3Ddrc%253D1%5Cu0026mime%3Daudio%252Fwebm%5Cu0026ns%3DtkuggsHhRMGoMXpWHzLtizcQ%5Cu0026rqh%3D1%5Cu0026gir%3Dyes%5Cu0026clen%3D252857%5Cu0026dur%3D15.041%5Cu0026lmt%3D1721309732390912%5Cu0026mt%3D1722295996%5Cu0026fvip%3D2%5Cu0026keepalive%3Dyes%5Cu0026lmw%3D1%5Cu0026c%3DTVHTML5%5Cu0026sefc%3D1%5Cu0026txp%3D5532434%5Cu0026n%3DiC9X4DjTIDghkZ-R2%5Cu0026sparams%3Dexpire%252Cei%252Cip%252Cid%252Citag%252Csource%252Crequiressl%252Cxpc%252Cctier%252Cbui%252Cvprv%252Csvpuc%252Cxtags%252Cmime%252Cns%252Crqh%252Cgir%252Cclen%252Cdur%252Clmt%5Cu0026sig%3DAJfQdSswRgIhAPVNS5XIMzrd6gRoKV59M83rksSBoK7gI9EkVK7FSLoeAiEAy7CA8hvK0BBW7iAIoYCdWSF_e_v7hROQHu2BCi1DRVE%253D%5Cu0026lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%5Cu0026lsig%3DAGtxev0wRAIgOkmRy7RSThJGxtogLFgCTlpda6qeKYWlqIfjdRZNQyQCIChab2SPRG2KMMf1cKKFsf9scaC0_ZGjJyNGxok41QsK%22%2C%22mimeType%22%3A%22audio%2Fwebm%3B+codecs%3D%5C%22opus%5C%22%22%2C%22bitrate%22%3A139163%2C%22initRange%22%3A%7B%22start%22%3A0%2C%22end%22%3A265%7D%2C%22indexRange%22%3A%7B%22start%22%3A266%2C%22end%22%3A299%7D%2C%22lastModified%22%3A1721309732390912%2C%22contentLength%22%3A252857%2C%22quality%22%3A%22tiny%22%2C%22xtags%22%3A%22CggKA2RyYxIBMQ%22%2C%22projectionType%22%3A%22RECTANGULAR%22%2C%22averageBitrate%22%3A134489%2C%22audioQuality%22%3A%22AUDIO_QUALITY_MEDIUM%22%2C%22approxDurationMs%22%3A15041%2C%22audioSampleRate%22%3A48000%2C%22audioChannels%22%3A2%2C%22loudnessDb%22%3A3.04%2C%22isDrc%22%3Atrue%7D%5D%2C%22serverAbrStreamingUrl%22%3A%22https%3A%2F%2Frr5---sn-h0jeln7e.googlevideo.com%2Fvideoplayback%3Fexpire%3D1722318110%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026ip%3D93.235.183.158%5Cu0026id%3Do-AOT151Lw5IRApOBym6QRDN4NqeNkLPOGW3TDb3_xVd7Q%5Cu0026source%3Dyoutube%5Cu0026requiressl%3Dyes%5Cu0026xpc%3DEgVo2aDSNQ%253D%253D%5Cu0026mh%3DRk%5Cu0026mm%3D31%252C26%5Cu0026mn%3Dsn-h0jeln7e%252Csn-4g5ednd7%5Cu0026ms%3Dau%252Conr%5Cu0026mv%3Dm%5Cu0026mvi%3D5%5Cu0026pl%3D26%5Cu0026ctier%3DL%5Cu0026initcwndbps%3D1957500%5Cu0026svpuc%3D1%5Cu0026ns%3DE0lVVmjjqga8OiDs_6sTbBsQ%5Cu0026sabr%3D1%5Cu0026rqh%3D1%5Cu0026mt%3D1722295996%5Cu0026fvip%3D2%5Cu0026keepalive%3Dyes%5Cu0026c%3DTVHTML5%5Cu0026smc%3D1%5Cu0026n%3DkaUeiGs600un_WlJB%5Cu0026sparams%3Dexpire%252Cei%252Cip%252Cid%252Csource%252Crequiressl%252Cxpc%252Cctier%252Csvpuc%252Cns%252Csabr%252Crqh%5Cu0026sig%3DAJfQdSswRQIhAMFYdEOnMd_tl7WiTtbQw48yysXykZ2-0bd7DsfEFpJMAiBkKWpQSXszNkwj2NobfXLWcNCtsu7eCnglikye6BCwKw%253D%253D%5Cu0026lsparams%3Dmh%252Cmm%252Cmn%252Cms%252Cmv%252Cmvi%252Cpl%252Cinitcwndbps%5Cu0026lsig%3DAGtxev0wRAIgOkmRy7RSThJGxtogLFgCTlpda6qeKYWlqIfjdRZNQyQCIChab2SPRG2KMMf1cKKFsf9scaC0_ZGjJyNGxok41QsK%22%7D%2C%22playbackTracking%22%3A%7B%22videostatsPlaybackUrl%22%3A%7B%22baseUrl%22%3A%22https%3A%2F%2Fs.youtube.com%2Fapi%2Fstats%2Fplayback%3Fcl%3D655300395%5Cu0026docid%3D1AurP5pjb6Y%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026fexp%3D%5Cu0026ns%3Dyt%5Cu0026plid%3DAAYea2e7wPL_xoG0%5Cu0026referrer%3Dhttps%253A%252F%252Fwww.youtube.com%252Fwatch%253Fv%253DpPvd8UxmSbQ%5Cu0026adcontext%3DCAESEwiEr-G9ts2HAxXibEECHUCOD78gAigGMAE%5Cu0026adformat%3D15_2%5Cu0026aqi%3DviioZoTYLOLZhcIPwJy--As%5Cu0026autoplay%3D1%5Cu0026el%3Dadunit%5Cu0026len%3D16%5Cu0026of%3D-_xhI4eL4MjOL53E0nwGhA%5Cu0026vm%3DCAEQABgEOjJBSHFpSlRJZE44LUdLNk9FRVVoLUFZZFVvVVQtLTlRLVJ3MUFFR2VjQVFZejI3N0xlQWJcQU9BckJGdlF5TUdGNFU4NVVtcGFWS1dlUTk5RHVZbHdXckV0aDNqeERjd1BZME5qRkhaUHM3N29lT0JsQ2drbTNCLWswWnVRQkJjQzB1NjRBMDhGeG82blR3TDg%22%7D%2C%22videostatsDelayplayUrl%22%3A%7B%22baseUrl%22%3A%22https%3A%2F%2Fs.youtube.com%2Fapi%2Fstats%2Fdelayplay%3Fcl%3D655300395%5Cu0026docid%3D1AurP5pjb6Y%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026fexp%3D%5Cu0026ns%3Dyt%5Cu0026plid%3DAAYea2e7wPL_xoG0%5Cu0026referrer%3Dhttps%253A%252F%252Fwww.youtube.com%252Fwatch%253Fv%253DpPvd8UxmSbQ%5Cu0026adformat%3D15_2%5Cu0026aqi%3DviioZoTYLOLZhcIPwJy--As%5Cu0026autoplay%3D1%5Cu0026el%3Dadunit%5Cu0026is_ad%3D1%5Cu0026len%3D16%5Cu0026of%3D-_xhI4eL4MjOL53E0nwGhA%5Cu0026vm%3DCAEQABgEOjJBSHFpSlRJZE44LUdLNk9FRVVoLUFZZFVvVVQtLTlRLVJ3MUFFR2VjQVFZejI3N0xlQWJcQU9BckJGdlF5TUdGNFU4NVVtcGFWS1dlUTk5RHVZbHdXckV0aDNqeERjd1BZME5qRkhaUHM3N29lT0JsQ2drbTNCLWswWnVRQkJjQzB1NjRBMDhGeG82blR3TDg%22%7D%2C%22videostatsWatchtimeUrl%22%3A%7B%22baseUrl%22%3A%22https%3A%2F%2Fs.youtube.com%2Fapi%2Fstats%2Fwatchtime%3Fcl%3D655300395%5Cu0026docid%3D1AurP5pjb6Y%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026fexp%3D%5Cu0026ns%3Dyt%5Cu0026plid%3DAAYea2e7wPL_xoG0%5Cu0026referrer%3Dhttps%253A%252F%252Fwww.youtube.com%252Fwatch%253Fv%253DpPvd8UxmSbQ%5Cu0026adformat%3D15_2%5Cu0026aqi%3DviioZoTYLOLZhcIPwJy--As%5Cu0026autoplay%3D1%5Cu0026el%3Dadunit%5Cu0026is_ad%3D1%5Cu0026len%3D16%5Cu0026of%3D-_xhI4eL4MjOL53E0nwGhA%5Cu0026vm%3DCAEQABgEOjJBSHFpSlRJZE44LUdLNk9FRVVoLUFZZFVvVVQtLTlRLVJ3MUFFR2VjQVFZejI3N0xlQWJcQU9BckJGdlF5TUdGNFU4NVVtcGFWS1dlUTk5RHVZbHdXckV0aDNqeERjd1BZME5qRkhaUHM3N29lT0JsQ2drbTNCLWswWnVRQkJjQzB1NjRBMDhGeG82blR3TDg%22%7D%2C%22ptrackingUrl%22%3A%7B%22baseUrl%22%3A%22https%3A%2F%2Fwww.youtube.com%2Fptracking%3Fcontent_v%3DpPvd8UxmSbQ%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026plid%3DAAYea2e7wPL_xoG0%5Cu0026pltype%3Dadhost%5Cu0026ptchn%3Dyoutube_host%5Cu0026ptk%3Dyoutube_host%5Cu0026video_id%3D1AurP5pjb6Y%22%7D%2C%22qoeUrl%22%3A%7B%22baseUrl%22%3A%22https%3A%2F%2Fs.youtube.com%2Fapi%2Fstats%2Fqoe%3Fadcontext%3DCAESEwiEr-G9ts2HAxXibEECHUCOD78gAigGMAE%5Cu0026adformat%3D15_2%5Cu0026cl%3D655300395%5Cu0026docid%3D1AurP5pjb6Y%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026event%3Dstreamingstats%5Cu0026fexp%3D%5Cu0026ns%3Dyt%5Cu0026plid%3DAAYea2e7wPL_xoG0%5Cu0026referrer%3Dhttps%253A%252F%252Fwww.youtube.com%252Fwatch%253Fv%253DpPvd8UxmSbQ%22%7D%2C%22atrUrl%22%3A%7B%22baseUrl%22%3A%22https%3A%2F%2Fs.youtube.com%2Fapi%2Fstats%2Fatr%3Fdocid%3D1AurP5pjb6Y%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026is_ad%3D1%5Cu0026len%3D16%5Cu0026ns%3Dyt%5Cu0026plid%3DAAYea2e7wPL_xoG0%5Cu0026ver%3D2%22%2C%22elapsedMediaTimeSeconds%22%3A5%7D%2C%22videostatsScheduledFlushWalltimeSeconds%22%3A%5B10%2C20%2C30%5D%2C%22videostatsDefaultFlushIntervalSeconds%22%3A40%2C%22youtubeRemarketingUrl%22%3A%7B%22baseUrl%22%3A%22https%3A%2F%2Fwww.youtube.com%2Fpagead%2F1p-user-list%2F962985656%2F%3Fbackend%3Dinnertube%5Cu0026cname%3D7%5Cu0026cver%3D7_20190924%5Cu0026data%3Dbackend%253Dinnertube%253Bcname%253D7%253Bcver%253D7_20190924%253Bel%253Dadunit%253Bptype%253Df_adview%253Btype%253Dview%253Butuid%253D5ErFf0kKFKpaAbbSwXJBgg%253Butvid%253D1AurP5pjb6Y%5Cu0026ptype%3Df_adview%5Cu0026random%3D860714607%5Cu0026utuid%3D5ErFf0kKFKpaAbbSwXJBgg%22%2C%22elapsedMediaTimeSeconds%22%3A0%7D%2C%22googleRemarketingUrl%22%3A%7B%22baseUrl%22%3A%22https%3A%2F%2Fwww.google.com%2Fpagead%2F1p-user-list%2F962985656%2F%3Fbackend%3Dinnertube%5Cu0026cname%3D7%5Cu0026cver%3D7_20190924%5Cu0026data%3Dbackend%253Dinnertube%253Bcname%253D7%253Bcver%253D7_20190924%253Bel%253Dadunit%253Bptype%253Df_adview%253Btype%253Dview%253Butuid%253D5ErFf0kKFKpaAbbSwXJBgg%253Butvid%253D1AurP5pjb6Y%5Cu0026is_vtc%3D0%5Cu0026ptype%3Df_adview%5Cu0026random%3D459666337%5Cu0026utuid%3D5ErFf0kKFKpaAbbSwXJBgg%22%2C%22elapsedMediaTimeSeconds%22%3A0%7D%7D%2C%22captions%22%3A%7B%22playerCaptionsTracklistRenderer%22%3A%7B%22captionTracks%22%3A%5B%7B%22baseUrl%22%3A%22https%3A%2F%2Fwww.youtube.com%2Fapi%2Ftimedtext%3Fv%3D1AurP5pjb6Y%5Cu0026ei%3DviioZtzcOdeHi9oPl42KsAg%5Cu0026caps%3Dasr%5Cu0026opi%3D112496729%5Cu0026exp%3Dxbt%5Cu0026xoaf%3D5%5Cu0026hl%3Den%5Cu0026ip%3D0.0.0.0%5Cu0026ipbits%3D0%5Cu0026expire%3D1722321710%5Cu0026sparams%3Dip%2Cipbits%2Cexpire%2Cv%2Cei%2Ccaps%2Copi%2Cexp%2Cxoaf%5Cu0026signature%3D6F57249CD639A07ABEA7AA3D8BA368BD422D0514.B606931403FCB5CF4FCB7ECD681E3395D743B4BB%5Cu0026key%3Dyt8%5Cu0026kind%3Dasr%5Cu0026lang%3Dde%22%2C%22name%22%3A%7B%22simpleText%22%3A%22German+%28auto-generated%29%22%7D%2C%22vssId%22%3A%22a.de%22%2C%22languageCode%22%3A%22de%22%2C%22kind%22%3A%22asr%22%2C%22isTranslatable%22%3Atrue%2C%22trackName%22%3A%22%22%7D%5D%2C%22audioTracks%22%3A%5B%7B%22captionTrackIndices%22%3A%5B0%5D%7D%5D%2C%22translationLanguages%22%3A%5B%7B%22languageCode%22%3A%22en%22%2C%22languageName%22%3A%7B%22simpleText%22%3A%22English%22%7D%7D%5D%2C%22defaultAudioTrackIndex%22%3A0%2C%22defaultTranslationSourceTrackIndices%22%3A%5B0%5D%7D%7D%2C%22videoDetails%22%3A%7B%22videoId%22%3A%221AurP5pjb6Y%22%2C%22lengthSeconds%22%3A15%2C%22channelId%22%3A%22UC5ErFf0kKFKpaAbbSwXJBgg%22%2C%22isOwnerViewing%22%3Afalse%2C%22isCrawlable%22%3Atrue%2C%22thumbnail%22%3A%7B%22thumbnails%22%3A%5B%7B%22url%22%3A%22https%3A%2F%2Fi.ytimg.com%2Fvi%2F1AurP5pjb6Y%2Fhqdefault.jpg%3Fsqp%3D-oaymwEmCOADEOgC8quKqQMa8AEB-AH-CYAC0AWKAgwIABABGCkgZShSMA8%3D%5Cu0026rs%3DAOn4CLBmgTJBgabOVc5XVDgOEGh_P5qUfw%22%2C%22width%22%3A480%2C%22height%22%3A360%7D%5D%7D%2C%22allowRatings%22%3Afalse%2C%22isPrivate%22%3Afalse%2C%22isUnpluggedCorpus%22%3Afalse%2C%22isLiveContent%22%3Afalse%7D%2C%22playerConfig%22%3A%7B%22audioConfig%22%3A%7B%22loudnessDb%22%3A-4.2199993%2C%22perceptualLoudnessDb%22%3A-23.219999%2C%22enablePerFormatLoudness%22%3Atrue%7D%2C%22mediaCommonConfig%22%3A%7B%22dynamicReadaheadConfig%22%3A%7B%22maxReadAheadMediaTimeMs%22%3A120000%2C%22minReadAheadMediaTimeMs%22%3A15000%2C%22readAheadGrowthRateMs%22%3A1000%7D%2C%22mediaUstreamerRequestConfig%22%3A%7B%22videoPlaybackUstreamerConfig%22%3A%22CvwKCpcHCAAlAACAPy1SuF4%2FNQAAwD9YAWABaAFyFgoSbWZzMl9jbWZzX3YzXzJfMTA5GAB4j06gAQGoAQCQAgG4AgDIAgHaAroBELDqARioRiCgnAEoiCcwmHVwiCeAAfQDuAEB4AEDkAIBmAIMoAIBwAIB0AIC4AIB6AIEgAMCiAOIJ5gDAagDA8ADAcgDAdADAfgDAYAEAYgEAZAEAZgEAaAEAagEAcgEAdAEAdgEAeAEAOgEAfgEB4AFfYgFAbAFAbgFAcAFAcgFAdAFAdgFAeAF0A%2FoBQH4BdAPgAYBuAYBwAYB0AYB2AYB6AYB8AYB%2BAYBkAcBqAcB2AcB%2BLWR5QwB%2BgKeAi0AAIJCNQAAlkJIAWUAAIBAaMBwqAHQhgOwAeADuAEBzQEAAIA%2F8AEB%2FQEAAIA%2FhQKamRk%2BjQIAAIA%2FlQIAAAJCmAIBtQIAAIA%2FwALgA9ICEbD%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEePEZaXF1e2gIFMjA6MDDgAnjoAugC9QIK16M7%2FQLNzMw9gAMBkAMBnQMK1yM9oAMBuAMByAMB2AMB5QNiSkRA7QMyyvM%2B8AMB%2FQNmZoY%2FhQQAAIBAmAQB1QQAACBB6ATwEPAEAb0Fo0Afu8UF308tP8gFAeAFAZgGAaAGAagGAbUGvTeGNb0GMzODQJAHAcAHAcgHAdUHAICdQ%2BUHAIAJRKEIAAAAAAAA8L%2BpCAAAAAAAAPC%2FsAjwAbgIAdgI8AHoCAGCAwCQAwGoAwGwAwPQAwHYAwHgA5BOuAQBygQcChMIwKkHEJh1GOgHJQAAAAAoADAAEODUAxjQD9IEDQoICLAJELAJIAEgiCfaBAsKBgjwLhDwLiCIJ%2BgEAfgEAYAFAYgFAZAFAagFAbAFAdAFAdgFAegFAfAFAYgGAZgGAagGgIACwAYByAYB0gYUCOgHEGQaDQiIJxUAAAA%2FHc3MTD%2BCBwoVAACAPxhkIJBOiAcBoAcBsAcBuAcBwAcB%2BAcBgAgBoAgBsAgBuAgB0ggGCAEQARgBmAkBqQkAAAAAAADwv7EJAAAAAAAA8L%2FICQHaCSRFRzRmTDl1Sm9tL2NWdklmNjg4bnB6c2t4SVQrMXl0N09POHXgCQGwCgHYCgHwCgGICwGYCwG4CwHICwHQCwHYCwHqCwSLBowG8AsB%2BAsBkAwBoAwBqAyQAbAMAbgMAcAMAdAMAeAMAegMAYANAaANAdANAeANAYgOAZAOAbAOAYinocoLARgBIAEyDAiJARCQpPri3bCHAzIMCPgBEP%2Fwkr%2FfsIcDMgwIjwMQq8b28t6whwMyDAiIARDAv7Xk3bCHAzIMCPcBEPWEkoDgsIcDMgwIjgMQtr%2FhpN2whwMyDAiHARCfpq%2Fl3bCHAzIMCPQBENaLm4DgsIcDMgwIjQMQrODL3dywhwMyDAiGARDfgK%2Fk3bCHAzIMCPMBENuum4DgsIcDMgwIjAMQ3enrx9uwhwMyDAiFARCvybLk3bCHAzIMCPIBEMXTlYDgsIcDMgwIiwMQ4577nNywhwMyDAigARCekrTk3bCHAzIMCJYCEImelYDgsIcDMgwIigMQh5PLyNuwhwMyDAiMARD0mLuy2rCHAzIcCIwBEIW1xbTasIcDGg5DZ2dLQTJSeVl4SUJNUTIMCPkBEJWUh77asIcDMhwI%2BQEQzYGVudqwhwMaDkNnZ0tBMlJ5WXhJQk1RMgwI%2BgEQ67aHvtqwhwMyHAj6ARDhopW52rCHAxoOQ2dnS0EyUnlZeElCTVEyDAj7ARCRlYe%2B2rCHAzIcCPsBEICQl7nasIcDGg5DZ2dLQTJSeVl4SUJNUToASABSJhoCZGUoADIYVUM1RXJGZjBrS0ZLcGFBYmJTd1hKQmdnOABAAFgAkMvTjw4BEkwAoRgLhjBFAiAtYDwIGPSYqn2neGXsTVmenWz%2BkBeGled0ZebIkJY3zwIhANIW7OzppmyObbstP%2BiLPW2MQ9Dk4snznI0qF94DBBFRGgJlaQ%3D%3D%22%7D%2C%22useServerDrivenAbr%22%3Afalse%2C%22serverPlaybackStartConfig%22%3A%7B%22enable%22%3Atrue%2C%22playbackStartPolicy%22%3A%7B%22startMinReadaheadPolicy%22%3A%5B%7B%22minReadaheadMs%22%3A1200%7D%5D%7D%7D%7D%2C%22webPlayerConfig%22%3A%7B%22useCobaltTvosDash%22%3Atrue%7D%7D%2C%22trackingParams%22%3A%22CAAQu2kiEwjcs%2B69ts2HAxXXw0IFHZeGAoY%3D%22%2C%22attestation%22%3A%7B%22playerAttestationRenderer%22%3A%7B%22challenge%22%3A%22a%3D6%5Cu0026a2%3D1%5Cu0026b%3DBWUKYLiKMIn1QxCC7rbRVCLRjjM%5Cu0026c%3D1722296510%5Cu0026d%3D7%5Cu0026e%3D1AurP5pjb6Y%5Cu0026c1a%3D1%5Cu0026hh%3DCgxPr7ShD8YOqxlzD-41UmEoSZr7utz3JBjT0ideeCk%22%2C%22botguardData%22%3A%7B%22program%22%3A%22cgK8i0evZvh443T%2B9PSEpUPka0Hvulw4wDLA7GFSihpx0HqEsQpL2jsl4lyLZ5C4YQsGj3LJZQtmhbIe%2B9zB9PZBJT2mM0%2BqOFgwX%2FQohuu0Hxwq%2FQlIIWvkLbYbnt1sK24b8EwkXN9HFhlrQgE8kOZatk%2FhA0UPrgGw59U8W8V5T1Uau2DcJ%2BMdmctNSX3lFEGigQga0TBgS6my%2Foy%2FiCyMs5E8U1q4QBsYqKRJBSN8anp6TDjgq%2FJcUof1eF8l0F5C7zR7egENqWvNRr%2Bvj4Al3sjhtm5TRMeLNcJK63rlKU%2Bv0vzHFfO2YPlKkOQSA4x83Zqhy1QpunTohXpjWPEEaMB9aZLT3dxwc9O6kz%2FlmB44xpBd2a1KXkbMRDJwIP9pa6UKLQS0CT1Rb9hzTltGnKHB7bYWbeBJSvb8CwNCEoW7nvB6inHkUAdYH4T4exOm9Gm6Df9t9EcKn6hf9QyN1e%2FOV0iznfcIg9Di8M7omzBosj1yaBkyz7RdvQLQBrVC1wdw%2FRcd7fpmz7sBbiHzaP0VzDzZe%2BhcIM76koG7BAfeYy%2FSjIdfjTSOHXgvNGvDwDUo%2Fr5InGFGBPpknFKDBYctko8Rux02qcBj5Zl2hVZSXEsmxpFv24u2mKoI3asa4FougNQ6dSZifOah3Qg1DyCJXAirH0CE4j5%2FXrXtPPpwJyZ5V5zyo1jTBksEXJa%2Fwq5bPG0FNQZ2%2FzlL7QKq%2FDhIXoqbFSVQE05t3AQgmlyUIMqwap8Vxkr5NE9AgpfUsjN6DXn7VuWOpsqsjkG3d83XmlJch%2FQgyTuJ5B42wWQuxzxXjyAM3v%2F%2BAxvs1dOHWShT5pjyxehXP4KeqDB6e9l5hLTqIVhnMnA9wDJbrLe%2F30hz1z6RuVJTc0lc7bLyl5fMIjPr0JxBlPgygaJVPmAVTsyIs9%2BV2zJ8YIzZiiuyLxM5wqjiCPoWezNvGUTu%2Ba%2FBFUq9eccF2z3xWbhnOW7YJ%2BZ%2BUQMb81DMjvc39V47O9RNZhLyvb7EXziVVJuLMMgc3mwdoJLVZxqOztu94HYdZHYB1AZ%2FkoVMZ0wPin9FJTT46ZtmQ7RwsvpJoxSQ07ssIM1TFWIokTR7j0w5HnROndArcSPwDm6mVxkXtqfMxTh%2FdBIbd0hHVB0eBMjoShqU2uZkFyqPuT3VsvvkOW%2BzOCAGY%2BUdvbQolAQWgH%2F1pdkYx5XQJjW9u1NLPDpt1W66uWU0y5xZzjv7CJV9Lc7HjoKN0LU%2BtFg7UWB6vsgic8OC%2BWWtt2iXF5FiBXkZiZn849cnTdaG99qozyyPOfI5gATe4UFmNWEd8NyprM%2BrcxesEJ5Hce2h14rsvcRx7u%2BieCzmGoXpJCzWt4atq2fE3SC0QB5lYqP0SRt14811wr5XZUjoKqbt1RgRnIw6NqaOeUZ%2Fx1%2BuvIZpnfubdIi4%2FD9oOoAuLIgEdQYOFd2ZTlh4IvWQdxaGvqT3nb%2BcL0k0i5NVarLrKURfLyEmc6CRwI5adUUhE6c7%2By5lujx0DN18QHlnnRRIF9fTbwq9SIwO9n%2FWG8h6Vf8TKK5zIcaHAiDcHgd15Q36VhwdIWyFRv3bHxlbCSdUQnSegn0TEn8blGLcbijKr32rKRqclK4wviNLRrQseimboqBzVgXYAcAmGHbGnqL87tovxd445LXi3Km6EN%2Bc9clOkhzy8oNznIJX5IWHv2ZG4fpcWm1UpsfZbESM03L4RbfJKUtDPflfm%2BzTiWVljls26cDqO2oLrmBhjmJ0bHaEWxoY57jZhB77uHd2tCLM3CzyMit2h2OJDloRCxS7%2BUYdO81h3ar07olGJG%2B%2FKiBZfosceQrOVwBMTyeXRbCegUeLoTuaMQUlyjQBJsHsqctKqDSyniycImEN%2BvnR2yarUQceEbLD73VA3hVR5%2FZWJkkdWT2xZ3Nq2VCBQhUCTHb%2FhZxCam%2FlIdw25fMFMmfwyIz0ZSvx8Y%2BaJHGaUNlIHx2TOUaWAHepGCFSA3sfcq9Q%2B4uYNnt%2ByzhUl6N1mayPErm76qUETD2ka2HvNGWthJQbU47kPxmpmkXIc3q8Rlk94ov0q3DbKdLT03OYChHYwrk8mccenTbMWz97nAR4fNlqbCPm6M687sE84g%2BL891baEEnNJvhp6%2FIoEEF5i0MjGO3wSxhoNwy%2Bk2MjQHSp5jtkyn8xn2tipCzzoEwuY0aA1vcQtri25q%2BGgZPtZ0S%2FcXkLrSXSjSZp%2BxEYHEKRyq1BVKt1iipDt6G182rVIQK5NU09NCbsR5myrGTJjtRpDKPJBVEVTrlnWuWS8Z2wMJE%2BHeALuBDXl3lZiVACiCHeJj1fPAmCsFzKObhfmxQZ92gE5Hx4NmKgxdB14UuPNZj2h22JcglIyk7SjBATt1fNARcFuuUWZcTWlMJ23fvK2NMAMTPvSnMujPPxRuzf%2Fd850seCfkjOu5%2BWS3RCnW%2BndmekzyozdK%2Fp4qgrh96MAZGqwCqwvxdUNktf4KAiaHGMoAZ5PtKodluZrjTEKLlWMbBzxFx0tlDi%2FipARI1lgBqN42L4Iv8vZcjLN%2BIqcHTen34bIrQELLzmYLOR5Xut0Fbxi6Km%2FS7IZ7WRZxvMtGVArMy5mChAY8gL0zjY5%2FPM6g976xs7csA%2FaS17fKde8dK60LMDDmWtkEoZy2O1Ui9sB53IeLWaUTkqbkVM5ezlXDgPd96c9XgZMwxV2xWxeBJIWmMrgYyzuTP2ZtJshtmKRyJa%2Folv3Fb641WkVO3f05ZYaPjNBBsQMUr%2BV5z2Ss7%2FrFvVeKiVdF%2B2WrM6a3D25kk9tz42hrYOc3aaA3mBqWlZTfkUGeoOxf%2FQyCNN98x%2BGcVKyHmDUpAUAOhkfauKv1AzBzhzxi0eO3rVpKd1IcJf9A1AN6SwmMoN%2Bpl4EOez8Sqd6ejcrEk4XP%2B1Q1KZEEbzDYfvLevnGZ5DYAigqU6RTEq%2FWF2GJ3Aazv%2BCLYMWpqn6TfdCiP575bak13yRrBcLJ3gvJYrjjPBo36UnElZuuMGA1fSno5cHqI%2Bo0GcJt8K1Rh8e6nThh1sZJtPY4VXkf%2BQZK%2BMuVZO1Xc6EeXt4mPlqAFmDWXLz9GjYt16v3D9Y4R3g22trJ5HkDo6xlggXBEeE85DtAuBkDf6WPCapt1bU3yjIjZi%2B0mEiBKUSgEdFzyCHSxq1QxC46Py1yTZiDKTrPiKuMz04%2B0%2FMTNjRLebojGUigyJQWFmcS%2BJPVTUaHQn3lXSLF76d5GnqdpE0bns2yScGINqg6khhBf6dzPOMhwGHdZTlHAIafNEiX0CUV0WAzlqiuSYUoQcaST7NsKQC02lhXhzIc3FmoAPyBInTCP8JD13Pr27yoNaEkhuryw7s%2Bx9ZAdxowty1wmh6ktHf7DhOsqSY2BAgoyCoelzgWVjF%2FnSoAB8D3P7p2gkkYn%2Frc5rf8oeNj%2FtNA2wL7sKWp9d%2BG81AMosRhejse4rHl4bLPGoqcEB8AysOaXPU0Web%2FV6U%2Fqu%2B2rdQWOWzFJrDSGybs3qM%2B0xpgsKoPnaic6uCOLDkKQxGV0p9VlMuIB1XblNVQo3LscaWGokCbAwCHiHGEQlUXtLigHDmNpY%2FZ67Ebmu4DGA1DcQRX%2FiJJR0176wluibHZPxgOhA2XBCrX1E3LrxC3xtMNkLe3z%2BJ8c0WV4J1vlXT313BPIKLALskNrE%2BXvBMTcm%2FBMi9MqAmOETbfHYQIxXfY1v0KRkNi9Fu9R76pd95hvnU%2FsQMq%2FGx3UhmBuFE97Nzzmw6XexwKBLIztAyrlAjSRYZIva6hk9fN7nRDbxX8EEwMmnvgkEf51%2FY8d2JuuS0d7%2FTbx5idcKQcD9%2FvK5O5AAQtMNRBiso7jYJg%2Ftjp1BrMzZJ0jl1vrNBNzAwbFcEE8%2BW3jBOvvkppnYqoLBO1uAoDEKzQb7MDcnrouDadDULNr1eliyB6VUMBaiBRzf5LzzCliyw2rffaN9%2FDWXuCUVhonUCyqAcTwNimMiHBHHXjh5Dr1IoeztSx%2FjonUVCCu9kDbXF8Sg1W%2BpxTg4pEv4xtXQxrU5uzubUDTEKTCSZZGJsB%2BX1Bvei8cZC%2F5YxfsRnOv%2BWie6SumzzCCgGHCNOhDlrKr5I3NvvAopPrPC9f1uNC42PTZH5V0kq%2F3BLjGWDy1x7hM5Pi%2FBx9SQQ4WWq5UpZYK5dCjxcKr0MbnvNoOv9CeijeoqmSAUaoHTmKldqWULuE8P0MThCuLDkfzrbfT35oeIMULmWRIbE4feSN1YD152wqQUsiJvI%2Bz3Qt14YsR1HJhHnKx%2F7jLzFITUYB4UHuNrTRSugt7w7c3ERxC%2FFXak1kro7tnUYlRan6U0kd538d8puUp9Ga9wfsIAp1L6RLgm6ycurKBrYO%2FXMWe6cQ88I0s%2FhWQbTC4M%2Fh0Ydibehx5VheFStARYwa9P5WUcvqiaCwuxLw9OjY84fbzaipHQtFvW8ospkwks6%2F36%2BZxG5Vf%2Fjo7RL4rUNtrGRV%2FI2CXxzpWm0dUp8T63Jyag6ScCfo1xaM0chr5IznYC%2B80TuH0YKnQsUlrSn%2FZJJTkvaD7a8%2Fzoc70ncYO8wmHCt6D6VAqvikxP7SBY5lzDTM8lsN8YRn9i8P3H4Rk%2FOFAiPdDrufzmFdh05hYOuqjjjoVAwitIvg5bH9UPQoUaHfOT4ELCeCD9WEkGBmJ4XJp%2BiHHaUpQzgTp%2FAI5rO1NdQTxfJhTcafATgNN72KgEhEQnxo3dMDuJ85wY13guL0xvtfyL%2B8s1epTPwXK3fFe2TWqneGk3SHp94VVo47ExOZNXsZDwIEe0s5n1yI9zsxkwJo94LNiwCHMHf6X9P0%2Ff5MuJAOwcRJoflE9AsjFmUI%2FTjsSnA31WMrjDTy%2FZozin5LjKTPgB%2FjC%2BxT8HjkNh2d3tNh8OjCZ83DJ%2Fvn%2FqVtE5oxKZsw44H48pf4VV1RBjMikVIIoQ3SY24hoA%2BOGnUuA1epMs1HoHatKLG1SQTAFKUVfPVQ1o%2BZTfQbkO3QEEw%2BB5jV2yt7Jlh1aUeS%2Bp9N6U8VNep4aRIIwjNJSVTAeBhVavNJOxEyy0iTyprpNQkUeDXuyAeecmgAr4CYTT0BhWvrmAiUdsapyeIUDoFI3vbpZBHcalaL%2B83ll3X%2B%2BS5fJcQ1z%2FIO%2BNl5tbxHS%2ByJj9YG8DWlsQt5h4e3rabAoZ2Xspj870IFpoVWiuVaf0tLrZdvbw5bqmieKFigMAv%2Bjq2EFaexgcyVcQmzlIBWjvHRc6LptaFkBn2kTA6M9LWJFxYsWF1AsQEt5QBBjVXTiF%2Beeq2eGG6ucyaTJMBUBwcsYx01R6HncoXJfMX5jFqk1Xn9dZfUBCtsoGjd25NLQReUGYYsrL%2BnRH%2Bde8tT3bGYcY%2Bf35BMmocF%2FAB53J%2FWQShLT67KpaAQxFvhi7qWYKZq%2BrxPShU9WSwEbF9Rs%2FFb0IBix%2BDOEFSo6ZKbF2K0jIYkSWog5SY9yBFPp5DcG5jtE3R1oQ0sbW67%2BVNgCmG%2FFSyvrhLrXDr6yoHkyy2uZWznlKC5QzEIUVBI7q2kSPNYTJNwf0HA8dAojk7i2uxZvVxsf1k5dAIWSAcQGJLGJs3zIP%2BDYhoUz7%2BbYmOtetn9wF0c3SdRJNPc3EmR6Ncz4tHP4MyQj7F95T3m3JwMkgFDsoBPRbvWLNafb6B2X%2FgC7591LW93oK0%2FuHLsrgaLWWNLUf2RDA02DJLJfNMwkzlfiGBM3Eec9VC3VNXMWMYk8bmGhppY0QJUy80pKcF3rL3lh77w2mDtwPmaMu3L1iX797XmB08uDvuGtU%2F8ahkD72Pr0AwnC9YEPKf7GCzBaFbPkM1EtOw4H81nw73lJx9a%2F2hTIhIHrvhmjL0BmvptwkYcLTo1vQigYuVC93x%2FuMAcSpTaUY%2FJLy4L%2F3gBHgyA4rcjaHwbJLTg0qgM0BRpHtaL7Fuclm%2BJ2tKarnXwmy%2FJ53P88buKF8M0WtR1DjkdgzYMQLrkKMBCw7AvW3ssQQa6Nl7AurFITVyFmaXd8JXHPo5Y1NarC3Ivt%2FRijag40xUs1ZExSjpCbWo9HBRNBQQYBNiCrJ2MFd61huzfYvCKuhv8lFTI%2Bj9UFi6RVPiInELHjQ6P9gU0sufrDR7IktTG0yrAqlu1a0AJn5KPwk5q7BrpDutXjWJwCeuLxFcmf53qCM5oxMRplbtCN7al4dnI%2B69mexDy3ZrYz8OSFy3HAlk6UFN7Juy8uyBz%2FdgbWKxDa9jmLUP5E9Q8AZkHrzNn8M3sopht9TOKOwBlA4oW%2BHlacKwaYZWqb%2Bb5xCJp86mop%2FN3%2FTOC%2FKcmqgxz31ycH1NeOIX%2BlTXCjvRUql4qJDFRqmziTjW7lPm8oQvMyyoF21TR05vpjigZXCbDrOZ%2Bjw%2BuuN3mLTx0hFVVO6Y3qAfC6vilP27mR5lanuNjXK18Ipn5sutI0gyxF9gzOhCOSda40BVKLVPvitdULKRTIol7Jk9yTiQ0Ka0ntlGUiw6c3%2BYjr547W9lsQFsupPyAU%2BS4%2B6Srm4m8XM4d%2F8Cdj2klEp8MjAXTBMXeGR6wNmn3KIkR9atZ91HymkS7IQhMVojX2Q0vfogdyUG39YhgNfOJWwzdn%2FOgA4p3Pe6%2FBBDND9D87je8CLWf4Tt4dCrq68Eifc65G040rP2%2F17guxvLhcDtxFoG6HCs%2B1%2BxdsSWvbW55cm1oDaNNCQVuHf%2BV2kCkUVZdnXfJXUWFYdeZQrCsEQ175fTEKIhK9MJwaq5jiNrz6h0%2F161sDgefa1cBFCuLbdGH6pJlesYrl0ck%2B1rXxclouNWwVnirym8w2tN0%2BsR0dx3UiqkI9%2BYsNuV873GBPqo68pvxsUdxxbzlNpO9EV2th7AnxsPkELEIWHJkK6sX%2F4ChmnNPkgJeUUddM2CtZk27efgvKJkWIU4wruZxetWjQjNo%2Bup67zKShKWXSENxUwLsTXJSyB7kTiV%2FyFCo6bOGSxc%2FJENJTYAHwdz0LTfwJl4%2BtaMhqEMnEAayAijCMXIoqs5Ya071EP3MiiuFPRYVJuFxq2xzvYrr5yMj3oLS2Y%2BGHU00wKNEzRIqbqjTcfDDd0cTnntGdIKb0s0Mh22tHvYnwUZTFRRf%2BIX5TrziVphFWj7f7HrTQGtBgZ7cgZuBVwyY24as4NFhTmYCWQPLmJ22IhRhfDU%2FJzOgJudkEZYSlSx7Ndp1ARGQr0aMg6RaRwPWBrqtksGXKbjScBI9KhY%2FgrAq0xOdrtBhsPndIascdWmWHzkCBGpK9jjCK2NWyVCdnipA0MNEe%2Fehhs9X8mefVd2lOgHu10av9hRTUoCTCHf4Qnk0VTRTnTBGzabYJPqeai7M8PHhznFdW5MsNUW7m0d15y0vQpS1vOOiImoTRMeH8mgBNuWH4UIyrplnknaPCb9CUxWTFraeRlFcph3jVsJu%2Bn06iAaa4AbbkQYP5Au7FC2Y%2BLpfup2zt62OXKE%2BXbu2O4jgC4f063C9iU6emNUaM%2FyEgtSTM3tKsodZfHqGIlQ7fLarTHGdBT8Wrd6%2Brb0Y164f6dm3%2FyvymUgOKOJKBnP3tVS7cNI2KQ3JjvlGckXR%2BodDmU%2FmVm1c64915fZSAlM8vXm1lt2h8uROCh32jMKma5gVKQKinmsyRGP2icBsqMY%2FU7sc%2BsjItmKbeHvqi6MvAdBu7EJJJFaxw9RqYq8am4zE3LYom5aKe3rW1mLaeLJOmwvBYz3Qq%2F30OxoO7C%2BWMbTxXLCF5EjIavx%2F6bDJLO5ZSx5hkbcn21kuQSCYBBoV4iv3CSr%2BjmV0dZOEMMMaqak8pbLtVvOpUJ69PqDu9HrHZ%2FgFE%2B2Kwl8DNMcEvX%2FGqIm8oDOOI0B3NABkdbaWfTDnA7o%2BU8Uy%2FHBJM9VeQEEkXjQ7f2rJp9IZVIl%2BGVnedOWN1r4tAN%2Fe48R%2F%2F5UVuumkngUcrrf1piM8ORNjTxwJRxdJAs40Ec8Bg%2F8CTFQQ0hAOwY2%2Bz5aJGKVNvDKsnXzgOT8pgKxshpMrlMnZwUMMJeP3p%2FHTgUZESrlYL1pH2i7l5V4CJZ8UcT6ozazuJCVS9kYEXvlX93EFD5sZiwmLNwPPHelp3123iLS5pvkQwgq4OFmnTSocEcyJdvqonvWipXTXdFdB2y30lvpqwBvQgtON9ijqTDy3W3m%2BgltRat7uVCMTHRhRiiGP8kvho8x1VnaK0qg15HuRmH6KD8T5FKu2x8UwnBGiGb5suUeoUbLkWTOmvnzDMRXz45%2F1ZlnijkcE3S4rizk2ek6HAf4fKJdYI4EIP7kpoBE6fRp9baUS23jKwycPVxECEWekjRBp1wjq4oo2dl5XZ8WUh%2FyWZ3W8P271czgvynPzWvBlAkoC0LCXmU%2BX9FdBPyXNpMaWdM6CI2FhRI2UAnQ4JnQ6sOMtyVWOtNQcXMHsXq6s1BC8v7Xmnp6PKMRWiVopaU8T2TiTf0GHYV%2FJRhzHljaBShOvFxP07LGCcON6iG5MMqERZ9tOqGx1O7PZ4vNI%2BMC4%2Fd98AdJyc3rC0Sguy8FIf2W8FRjul%2B9kdNSPobC7dKhO1LPKlNhiYGIcDGZ06%2FJb3Yp43%2FEvMH5JA%2F%2Fd8faLSEsTW8VDEGQks6c447LOYM9iln%2B31gkUl8LaCy4x5nZXDFEM93CL9aEjLtjMPU7rudw0MNVOhFVx5iVe%2FPeyjO0ZosWgjDL4LMjjKt8q%2BrFCD%2BlTSueW2nqc8R2iy7nP4b4msB5wKmADb2euA62wHzwvNvm7TMnezCMpzhJKKugHIrwBBicMNeZP3Kq4oB4C0%2BYkbiB3lZQJaGbcvOq0JjVbXpsnrE5JhPGOUyubo1qndSCIOczipgQuRd0F%2BinteF%2BRBnnU%2BEi%2Fl0lV8WDMUPtt6svmxv8RCI9CYe7dqX1JMBxj7c1bpaG1xnR8fE5AktEaMyn8iq8xlxWeH5wx3%2BDnxPaXUQ56XTX5QWZp5O94BgkBiGrzKQPgpVhgJic3C4YN2gT9Q8%2FAgg4S%2F%2Bm3JZDpb5MGyaF5oCSnYwZXDVH6Pmb8H5qO90cbuVOzpkrA3p%2FbNrQYKK06yHf6QCR5a602sr87el6bUuyssEU7geAMOwgOq8E%2F1cIIbBuXQhQAev21158YtEpw3DMZjsBAffl8CAZ0ks4zdVf%2BfMC4lsGSPdpuNXNz5%2BlOYZO6qS%2Btwu7OabH3JZFf0bwnT3otKJ9i604hP736Thf0TF4ymMQ6TWPX5quKlv7UBu5eWIRD7TIMadhH8%2F97nuCy0a0hS6HWdqFApLUCyyHoZYtRjEhmnE%2FYXh9y2S1jjOx4C2sOfVDapKAeRJGL0rpi%2BSaeoQRRqQLxEEIMWdc86c3Z8qPBXag%2BTLfxYv4Sj484HE2I9zcz9Y7RtaixF814%2BDrw2oEAt%2FluljurkIeUCm2VB14T5EEUQXt6QOvJeHPEmpJIdIQUZ5tXoxTrq8vpVISmXxQHARUXtsAqQFhzHgWXmLVh4bNm4REVXYRGjxGey6D%2Br%2BjDrMPyMP467T28oqwoGKfZHYVlsxPaosPmSBQ%2BJ6kN03AuaydroocELLpVJwQ3sLa9YIfRvsAidCmLR7KQ1yvE4roO8tsoVcKFmIyh1rSIhXM6L738vjL%2BLjeHxhfSYioidyUcHJkD63bicGsaSnHT4kMvBG2yIW0Ikl7xedg4LcYO0pL%2FyVpj7j8MJuaq0vO17Dltxv3r3zhruoNTW6fIq3mKXEijaVP1yXHifemWOrlAOWTu5g%2FXFQnCmoQDGy8HF%2Fl0NTbkDtcr5eEk5mRzeNhewc%2BegXPDOmziaUWaUfT4rQ9SvIi1AIvTp693mHFbgOsmljeDmnS5thrQsna90BYmK9gOs5iHkZdlRL%2BQMbPrdxQ4rYuG8kMngiWcOVLfmg%2FssUxxjZ2rmLHdH5id3rD7Q7HmiRDQNzIDvchx59sY3OXdxo2wmsuntFJP%2FxBUCbDA22KSFyUdW8OsOFPanswPkp4%2BuxX%2BCDr7CWtV4U%2Ff5vBnw%2FEKSFY2h297YAJ44QGzr3nZq1ckvK2nBeC%2FKVcW18GrLqTgMondzz3aCNRUgj%2FDTzX42j%2FPsNqhg58PIeSbABy1q2fJH3iClyR7p6Ep5j63nxYoJ4UceQyTzrCZljL0y2y8V0CklKH4CAsuazvEalttBuntjbumCn%2BnKAO6r72gtf3dZ%2BYbpDAnjkMYTB3DhIy1sl2B93bMFco8nIarnD4FF7p8mgG3S8CLSfm9rVcSBDlAESwvgEOBR73IpZrcfUEE7i%2B21wyPrqj2s3GnYDbJRsf9fmP4qWJLW2pEcxvt%2FPgsRY6Mgq2aoLezvrtZ737PZliKkC8oDNdbTO3qnhUaehijxpPfNtkPk%2FMU0Rh3sPARF1hub8%2BdxIvk7fRFFRJe0mW1CtjEDSnJzKzmaRCSug0MUvM%2FfZTk4%2BtejVnL1enzHoR2COtExRffnmsPtnU%2BZiCvOJ8lu0bpFHKJC60wxrQisUzqAtOREae1U1lSbYAg8USwSYmrMsDq6UpSkj3BhTzspWmelC0nE2LuYchuotjRDRJeSCURWo1jw17%2BD0RHb8IUe2hxccskG0Idp9uc%2BZa0kypEo1yYzsYW%2FYPpXXKdJe661K50BDj9y9Lg64ooS9d38ySUNhLHMUKh9qVMkiHYR0mRlpZTZm3rD7cVNi6hcDOKfO8Ajh55iyekSb%2FcX4JTwQZj02iAJXkAhXPCmVyfaZRpFGRaQajHllW0T%2BxaWTsbAcGXfd0WpmsFEWwGdlW%2Bk9g1UvngrGI%2FA28cPBoSBgFbBvH9npzj7u0pQB2Twl409Re7tS7JqDT%2BblNoZ4cxIIzsSoJoMBAssYhPDgHA4rAuzupw%2BPwSNfgLxYpWSUlvU9YDolurQzMCaCuCy67djXhgCiQ%2FsfCwsBrD8tmpkIzLzzHuWGqw3Zia3i%2BU5NUhWpB%2Be7WWqO5dsW7EE%2BD9wk2FzXrIA2sV8ONOrn3IGti3Wt2yVJ%2FtPPtNlhyJVWKH9oa4tWBQkyoG97ezRI67jiihUVDKk%2FQxBjcTaOXG1nHxipxwYbxL6BwQKtFGxo71PARlN7PqLy3YMKhaUuXXCGFucWIfMHTmJOfyN2e8soV6%2F9amSIAJA2F0kDwbhvZ8a2nfPPmB0kfZCzlOuPMInKCRQC%2BW6zenXIIA3PQWs6oRb72ZNw4mdulcJNMGfjv09hz%2F4%2FMl6QxDxIJiqLwkeXgkbqv0EFHtSDYzzuN6DFJ8nuzmx7ohvsbFJJAEtmAKHiPCXWBLv8Q4FDD1Lu33jdLCGGc51KkULSthLXsrSc1eZx0JsiG%2Fhhmju9HghlJnslLydUF5Dv1U2UmtKCbeyjaERsjgnYz3PxnwjrRW4H9PziF5jnh96nPMiydm8HX6veTg5MUp%2Fh8ZWAK1jm6umTOQgrtj0PdaGECcUOe9XZzhxPAXeSt9mcIT%2BdTqd4I39Sv4mmlyLBeTuCaTtORbsznjV9h0zMnAuPwSXdzsZZytRhR5ekC%2FHh7YWFho8bL1GcSuxa%2FiLNmM428coDBPZBWrMlGZEEck0bP8rimtonyDYP691rXbhpx%2FTw8C3McIC%2BgxZY%2BhjYUHmLwo%2BhoJtPzrEau02gyf2kXUi%2BmHstwjuwPg0RdmwK0WZ2LkFZo0yWbwDgm0uTM60FmjhDlFCe8Z9TSmR7aOz6oeMie1q0BOO6fqLCx62F5zEF0j2CK%2BMZIsuY%2BmHA8HDwGnNDAlH7r%2BIxWvCNJ98z5WJSCt1Xh00doC8%2FcCCN8ZxpE38maaay%2BkN47r8jokO2Z7zWC7xNP3km3JgOvnpBK2Ray9O2JLweEVzgucKfYMNiDnOQs3U79OT%2Bce67VBP98aBywgfB6dV46Bm8rmN5bysctL3OcOxB23ELGzTzWsVdz93NZdrM8s%2FOr6PD4JXVRAVCMbfv0D6Rvx%2BEKZLsGtJE6kjwdiWaRKd5fr8fvPjv%2BecBCv1oNwIzvY9JjC6iclk%2B%2Fd%2FzZ0eit6wQrRJfJ8zsnPJ0Yn%2B%2BxuOpXdxxmvGmAJ4Ke3wvW%2FunQISlkzj4L9iB6zF766Fqaco%2BU8vdAc%2FVIleTyw5mME5qY%2FU9p8%2BYmkLr2GeFzB80fhUllj6gt9zIyq1BWG20cPoHa4vxRngonZYQDlX795SFlgmdnKOX%2FgUPtBUmwmM1JBuRVnxiU%2F4nE4F2M2If1P9WBKElmYQXgt2eV0md%2FfWjPb%2FbCG5lPiFkCxXlsu36QW570N2R0Ix1zOOB37xk7MULED22CjWy2h7hrQM3EAF721B0TYWzfsPPs4hu50xYlqq3jnH7rEvX4yVRsuuyR1XWBzJqVraq8LWK9OP%2B2V036WqrgiS6GeZSQhUsmV5lE09skmN%2BI1%2Fy8YFfCcX1Nb393xvySBR5uzbN9JJeYuCxqyizkZP0i4%2Bkxqug9jUZ1laSfn90mXcyRtVKkgJo16riQL93lyKsZH14OkGksrVF1zFluQPSfQ1Ge2PjXlQ7APJMqVMPVmLY06FgRTt8QpYg%2BHDSW4dMg4FQBdTyuCAYMpL%2B6b9rItHASKXbR3WYLBdApsrURc363x017fAakVMobMyU9rnTj5LqI8V1AwLMzw3eIPL0N5momtwSMa2%2FJ5OFBairIoSmahVUdIRT0kg04apCo0%2FGVtNJP7jtNx0TU74s0PmuMFDfpizqk53UIpw7W4Mq9p9ssyCPrwM3tybbKRYkcol922D8s9YZW20Zmjb8EVA0hKjU5eA6mRgKZeQOWi7fuEBejOoKwdsKuhp3nIKq%2Buzn0D9VAUu7kr1QwOoFNEeS4qbT1KUYO9HqDAT0oS9D9%2BDyMUFbzvja8%2B7UR5sNHl623CRKqIDM%2FuDpe%2BnNev8pHVENsTM0mqvd%2FR9aV3v%2FrSCMDDfwkkP5HmTHaInywHhlUHlc1H1%2BJPJ7k7%2FdNIidBOnEkdhk3LIibX%2BcaRewWv65N1UPRR8BGCYZcA4Cnm7jQ4HykFx2nNOSlY1oI60LQoIolfPw7DNx4yoexmAegxDIz0yEq5SpcOAPkB0SmBvV%2B9FS%2BMKB28o9IvNJIvW7A77ni%2BLhFMDh94pEzOMxSkn0B4p3S9T9MZccwRw1m75Ah4liKqEfVsGwmWx5tYnFptDNkdzLsT%2BAfguVdCINp9a1lmV7M1nJc7saggC%2BvC0aaqT%2F8FixPYNfCe56nLM6XJvPivyWdCLqxeQl2RU2Rfr7Wm1LDKBUdnqN2nbLw%2FhaTJfXc27dnJUxzxqOsQYQKwR1WS1KT3MOJJaFVgNQ0XdKpBh8rA1ZCQ3BqTp6UVU7NMpPz%2FgTQmTNzl2WAQKhG6X2IE7QcWcZ67ARjF9cFiAecsMI%2FhWyybEpf3bHMMNG8BFKSqgoEd6zbDpSwT6cDG10SOifaUWmqqSZ%2BRe8HYuKazbiWGTjZ0fmKoYX50g%2BJLXQ3cov%2FH0odUSoxu%2B7WthOgyViRc9ivvTWejGMYaGJfh6Nmb5VU1LAUDS%2F4XIMI5Xi0YFPZRpW0okTNxnrzBk3iQz7AH6R%2Fgc0sesT9XIOISG%2FugwrMYrXlPEVv%2Bqrhv25WHS%2FxIhNHDslShJDbOCkD6dGVXOkTuv6c2bIECcfur6bSiQvfb79CcyXz%2BScRf7glzRYKLId47Si3LolY0bB9295bMGNyAib4uveLBJdt2cI%2FuxzuKwGZ5feZDOBHdG64Mi13mMLsN4bxuVNkrj%2FfpzuGd4nz2L3eaF%2B3w6MtHc8Eh2Rc7oMtiGZrDB6Di3BWTqxb64Q4D%2FnLq%2BctL5Hx9EJQYF3ZWWndkEH0Mb4qXIvcR5o15o2etpwLaV6ICIW12kHqnya4SOo0lbfwWqd5zWZ9Zsbjj6hMQx0u8zkb%2B%2FhnKbvjrd9OHix5jeNNqELpCHMNA7%2B%2BWrwt0Z7iv%2B6S7oUG52q%2F3GvzsWezS3wfilvYyxy2OqK48rPyB87ttMB17COlsUJR%2B0MqGPZDdxPkYG8UKKV5dJPQn0DnGkQS8V764WVmnH%2B9fJPOTS9%2Fiw2sDEtq1v3gTUHEjlp0YH4GXxSmRGDOpm1WS1yDUTDH9rmnpfsvdw2UanJh6MZXzFrsKpVFiKNcsd9wpMagMayn9ilYp0YJtn8frtPfvsoZjDk5h5rgYu2CiQwUpnmBgRTYUTEQl0fwEgyOT%2B2DQp%2BoHQZlDZ1d3VHD9KpsxUHTuBxve3FszpGNdyceS7EGgPmM2xtYMUf%2F7DrLE%2BAo%2FIj36TiK5lSACVv1nGghrqCZP%2ByxcFToa%2ByH2q6T%2FUT%2BD56aTdBh3gXTCYc1xAjurwFNqM0igN1I6nQZPvMkAjsCDE4w%2BiZA65M4drIKvqskLQBmrcjq%2Fe8yYumxjriIPUETB%2FOrI0UOxDBKPeFPQssSPOK9gpxNy7Ao3sM2v22JjwlcE8%2BENZPmCNwuUZIEoaJQk4R7%2BMqs87WTVoHYfhwyl11F8Xh%2FgPt8WCWO0aneBvKmVWMBm1Wav8ZVG6hXxM5YLVVGg3BtthrARORdYtNZVw9JSMt2%2BfTE7LHOMZHZ5Z92d64%2BRsZyf2EHZ4mJTdQpNz0dAyWlJbz8OnSX8kh0gkRb6sJ8DvipXNLcUCQPKqw2PbsiNlYX06%2F85Ewb2mdTyu8vGMrzreMXEY5SM5S3m27PjVpYCDAmeSdUqAdz6drV6syAv5deK2FKDcQItY%2BfvVLnRBCstFPo4j0dQgs8j%2Fdo2PNqbPmqs1evE7qaAqL4xKoD7eOy1%2BYxlZhAKfVqsNxpsRKgWZp3o713a3yf3T4QMKemuy%2F%2FkmnK8Z%2Bk5sRh8pItMzJgwA0nTVlSktdxUIWEhV%2FLff%2B%2BtJ7hyN8RRg0%2FbJFqRjqJnLU6OCT8eAjpgMkQxEz5CPu9VosCPMJT8zT7p%2Fd7XwxpLGtiMdsYgHQ4sVAk6YJtLlZsaQmxK2NKkKlJGCPFU2hjZz%2BYAeWWThFSCPBRVjoPK4aN%2FbQec%2BGW3a%2BwOOxJ%2BH58NvutBApgRCkJX3LKiwYHg2llLmkKjwgiQVDwyEWmk7bbOF3VSnZK%2B4ZRSlw46mz9ne962Uq8BJEsXI9asSpwQBRoEu8H1ykH8PQdcwrVGAgABltpVt23wwlQJKtigkVEfYpBsqMhDL7WMC4wNM6swXOt%2B4xgcizqL1fjO%2BE4v3Jh0dS7abrg7v%2BNAx5xYlIgU8VfPBeogv%2Fqgdsow6%2BaF0Kr%2BWkOfL1RgV5wSC6IU%2FEFsvIODcdYO3coBpufX6JVOfS%2FL2%2F6h557C3bxo%2FVeEnbYoz1jNLrTR5w9wPKlbQctCQJMYqTbVz0OYYbBVRrtjcrrkKcIJA5kJhR5mdj9NgpsRwNtMyobAOXREh%2FCjrSUvEHZ61ravMZLiIbWYivNBb4IM%2FXTiCWNAYJmjIRcKGsVwB3r35qHzL8Y1msEdsOoeA32pdEP31c6%2FSRyXgn%2B96nKu6U0fI5VeEVTSBB0tSqSs5kslYwr%2BaKxOAw%2BYxFMG%2FcKF6Aynr%2FRMYmKSfp0UTmOWRdYJ3EGlZ8L8ZksZASJPj6PtOQZVw%2F%2FXOwj63fyZawNoqBgZRZNNGLVLLtS0RVMKZM6nGkiyQ5Ji3mD2Q3OpRO0G5o921WLqlRvJNxdZKWA8L3N9Ehq2zp2%2F1CHp8T%2FIid3yEtkZN7NjMDfmLTM0CQJAQM9oIjbK2R30eIOqJ2LLUrOpK7yQtmK6bsT5x%2FZGHGTIOukF%2B6jyRe2Y5JZUMjby2LrZ2egcrU1e%2FZOPTSSg2qlYf%2BFpqQO9RdP%2Fc73MmAL6qeymkX7kBYIWRY6lfM7aO061xUDBv0M6USFyvecG3PAUuZ8VqFowUsZbomaynxOgOqngGZqWMA8ohYZAgDfEuQfSiJTmVpEF19iWVZIpdC5lUr%2FyM5Dg4mywraPbJrrjcq3Z3X%2FXpu2kDjdICjX2%2BEONnjbR1SRjUiV2ELmN6kiI39GxW%2FzdfLwMAfErwPQPnG2eJhup9ttEaRniS9a3j5HVQuBy16RKv%2F%2Bocqhsz7vZo2zYMwcxY5hLBuyulCAMK%2BAVTFLuZV1XALC0VKIRVdvtOF4ZGi1JmZiHbvkn7AF18myiciKt%2F1aWnDSZw0nNEULyRz4z%2FD82IbBuqpxcBUkUzSeZZnelZFDupqP%2BHNJRZkyChrjCR3XbdTq4EsX2t5RPifP7afOPe5OMru4d4UXEHFN9rpYc1wDD%2F7BhCSCSMckmawWbk7RJMSQiE8XeIOnqG%2B23G%2FWKW%2B3dnauN1CEbI7qyZuQJ%2B09ItgYDlkxS1%2BjeyPNuvZFcBtZFG89GuRqT428tXnVx75NhQ3tvwRQ4XBPKQYTD%2BO2OweIssXIHuj1w0eS2drLCvrC1PfaILJ%2BEaoiijF0bT%2FFueM65kEdIlqgDI9TwPhz8nZx62mBoJvwZ1LKWbZFwfzU1O9DOMAxNMK83s3sRqy7ayrkFvOk2l%2F5FxAzIOerljD1xqOAKjDGxsSm3YYsvaER6%2F4w1mdSrbMlFVdsy%2B%2B%2FphFA7Kbn91mYsHayNZX%2Bxg1pO%2BTFH6ZoAjExqUmnYuawu3YnHdxtI%2FGv%2F54DLyqIsBBAWDQkVDkEhafQ4ibvJ2nHKKghbjNnbZznsreWVXV%2BFNWGoLixv%2BLy61JFA2GIs2xO5ztfVY4tRGvcKdrtJeivNai55z4Rvnt0mGNf5tdTA1S6Uny98KPyn3LD%2FEsFHw8v4I%2Bez68go6wHo3wDgnwiWVm66r0Fx2XnvAlfkti1ac%2FADyLw%2BoDE9xl145RWovxU9ScseEft8lt0nxcrA9Hw7OS94NoCS54CB%2FqgEomX6hcLwxfq8o7GsiflR5WecUc3DBM4CjtRuVoDDhjegs%2BQEdurX88hYB%2FgWXwg8soqvWcuZ6RBCmMnrg2ep%2BQMjeFqCNNd0elUuSid2octGf0HbSl8p5QZhVVL8AveYfXzFfRgNTqPH4dhsjrwk6OG5cFZ8vtCRkYVUJNPk94Y4%2BCz9vs9YR8BNAB9K7GTswAP3kgLwzNzz5%2Fp3wQIKNHouOuCkeBIEPtV5XEph4X3%2F5J68mou5GF3tdjZrpSzNKUMKGkbUBzxQYjUto4lyppg4A%2FizZ2VXnB5anosOGMe9ECokkurHjLb%2FwL%2Fb%2BTNdqMrAnG7vEsAysrYzhoPZtWviGugDrbWY1mtbnoX7t0ZyugZnhmv7pNNLMc%2Byt%2Bxxpzhjttfsw%2FQWnyDdLPaLpHoM3twbp9BxeoLimIlfC3tAzIaFfXpSq5bj%2BFW%2BlQFYiOilGgfb%2F4rXfGCINuLc7ZZUihtgWnURBHOtTj7UQ2AYkBQT%2FITlG6OwQpIi%2F7vbKcFMjVQuSFl9iqRz7rYqDBVEtwPO2FxrS8ujPS4qzv8Ap6IXrROyh0zc46yicwe%2BUmko%2BWW0XoLxMMXmMgLfcUQWakCs1VBLgjXXTCmhVst8lxPeS6VIRHT6ehsLJsIYm3cclMiMrziOql9YVYR7MwzVAjU7tXFjIozBBg7szQ3zctVv%2FIKXHYwFboxxvAs5UopTeGvnyFphLE9E%2Bc5ZMBmIvbuGjtFAo9XASMPVger%2BdbsOds6enVRGCBYtDi70l%2FhPRRN00cmsisgqJq4O1MjfGKQ7L%2FPBULy%2BbT2A%2BqsuxS8sN4TDgbF9MxOsebxdK4zHlVTmZf0T766pTkFj9cQNq%2BOn%2BTv%2Bn5k2m1uuBWnhknFTNUw4VoEizPEVFoqOIm6HIzRfpq0CFBVgssqNvA839yN3gmFHzFnZb2k7zc4r2u7%2FyhkutgJeS8p9x7uAjqP57g63I0KulAXWdXUNsIOGHROAoSzF6FfisDZLzzAfHc5Ty3Z141azc%2BoYMP10c6Dap0QEzSEbNYYCChBqpifhELMt6yD7JImnPrHWxh%2FkfMWdCFVEehT3%2F3QKUO%2FdLelE4MUKm0yNQeXgT6FQDsC3ItfyKCtC3M1nXfowdEU8XzigLqSQ57APBpKlU%2Fifwx%2FsFa1IHH%2FvnCq8Ykzwsn%2BSyNEzC8JuruvUyD4ncKlITJSYcZslkAoIPLEgwDQZMF1ik%2BJ9ByDCIwpva%2FpiHJmFnKdDWgQr%2FkGcQrZx%2FepdDFTz360J%2FYy6fvTpzgFIoiTjJptW1OTU%2FpmkeMsLZTDHLvgkGuXyOqRYyVghPSn%2FzO2yPxYvpy3FNjOoZRcAtRV5MOiEmEr%2FcLvUNIjTI7J%2FbxBZ7S5zEE4pKQUAGB0dYTWpnaVwFFwvLzonnDlee6okbB4GFlRf8CpRzFKQ5tf9l%2FkpDackDt5qJf3Vj2qwVGwWN5hgQ5%2F1cctYU2xfchSynI%2B3DAK%2B9SrDwxPZTedd%2BshjpaMawxCApffXXXXfBbrcg3SZcl58pPo4mYwO%2BijwMl1WKfeHBRReNeWAdNSWKZ8N%2BJTSq2RiNnM7TRvIoyEZ827DQmClFdpmvR7OKZiiL4rovOyrpdtPPMBjmA8lLHsYXI9bSyozlzVKUpM13SriatpQudX7%2Fl6KSqDTJdxP9gkjWztG0ok4aZiDrl4or9lhm6Is2HuaB7FHeq2q%2FbGBVc8kvI4rq7A%2FJ0dwA9%2BJMWh6HCzkPsIEB7ppZdWh8myBisbTCi4b1XgYc%2FL77pUEyTjUVCkKVY9HzGt5jWj8u0bDmNcCmHKIJ%2BnL4BbJRxTHFtHLOFhdohNScbWOqtin%2FV9ObXjpozDAFAiGzW8%2BZMsEF5ic1jgTcnvMJbnQKi4v38RsB08CftKgynP1ffT8JtxCMrw4SjBU%2FDjuvz1zNygchKuUb4QOh8lcfEhgtP9rdIeBRPj8gVQP%2BST%2Bw6WKNZa6wyd%2FhUHtnk4tseLWF1iyfBuGhlttSYH%2BcUnxiDJ3NFcAJfaZw8fFNMZ5vR9fEcgYpPaK%2B5aZIT4K1NJ9vMpLC7Nar7hYcYeDZKouDANaeSbpcZIo6hVA3mv3revruZ%2B1jXoF3JF7cE16mojknQnFwYB9o%2FK1faEOSPngE51jtA0MRw6uFsQLQ%2BJMnb1OoCGjwpQE%2B2WxfYp%2F4Q261hLjxBC%2BXYon%2BmiYZh9vgRXi0NY6d3otzMaGQVpVnA7U7tEKAbLtETyWHKnqO2Tp1Z6A238R1apfvmvkdW9K8L3PiHEKiqHivkYJ%2BBBHJEcfds%2BrGUm1OpVnP4mI4rP9wAYnvNs3%2BcUm1XSlMgmMpWFPyRBFFcYeQnEzRtP9bXZfVJGx9%2Baf%2BM2XJgguOR1GdCvbzlLi7ElJIE4Rf5mmS8dOe5LorssSp1BTsBIVTcNGUYdoyN5oW%2FRbeNZLMbKVQrd31Q7MhwE4AoDDavjeGoazZtmlS7xoXsc7vafJodyCTIxRh1KCeZOlbv%2BDSU7H%2BB8oedAIz%2B%2FLeP%2B6WcGdoaN1qaNXz5quAnp5jvTVU2nRcwKd5L4q2larrfhK8ln4VMCRWTAHxEQJvdPfhLjsFIDFLo6VgouVLJVHdzz5TtJ8CLywDcMYIyXI%2FGfyrLpUcWS7k%2FCyLDsdnKPG0mzU8NILRx9%2F2DTqdU2A00eoTqfHntcs%2B%2B53ySwU3ilZKdu%2FsbLh3%2B%2BA2lO0XICvxF5UddAg8kGprIBhDqA7wpnrLrtg3stNyBf059O%2FFOeiszS1cOEXkqm1lsoA%3D%22%2C%22interpreterSafeUrl%22%3A%7B%22privateDoNotAccessOrElseTrustedResourceUrlWrappedValue%22%3A%22%2F%2Fwww.google.com%2Fjs%2Fth%2FC7Y4SiTzZmrcyV5UfQkVifmqs7JfR8xYeORdOpwzQYk.js%22%7D%2C%22serverEnvironment%22%3A1%7D%7D%7D%2C%22adBreakHeartbeatParams%22%3A%22Q0FBJTNE%22%7D", + "sodarExtensionData": { + "bgp": "", + "bgub": "", + "scs": "BUSGWviioZoTYLOLZhcIPwJy--AsAAAAAOAE", + "siub": "Eogomir0", + "upb": "y" + }, + "trackingParams": "CDAQ-fcBIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + } + } + } + }, + "slotEntryTrigger": { + "beforeContentVideoIdStartedTrigger": {}, + "id": "67c0ba8a-0000-2697-a1b9-14223bb5ae26" + }, + "slotExpirationTriggers": [ + { + "id": "67c0ba8c-0000-2697-a1b9-14223bb5ae26", + "slotIdExitedTrigger": { + "triggeringSlotId": "hYizzUlSHvpUnZTe" + } + }, + { + "id": "67c0ba8d-0000-2697-a1b9-14223bb5ae26", + "onNewPlaybackAfterContentVideoIdTrigger": {} + } + ], + "slotFulfillmentTriggers": [ + { + "id": "67c0ba8b-0000-2697-a1b9-14223bb5ae26", + "slotIdEnteredTrigger": { + "triggeringSlotId": "hYizzUlSHvpUnZTe" + } + } + ], + "trackingParams": "CC8QzOgNGAEiEwjUtN-9ts2HAxXXw0IFHZeGAoY=" + } + }, + { + "adSlotRenderer": { + "adSlotMetadata": { + "adSlotLoggingData": { + "serializedSlotAdServingDataEntry": "ChMIhK_hvbbNhwMV4mxBAh1Ajg-_GhgQAUgBWAFiEHltZ1FjemVqRjNiRnU1ZWU=" + }, + "slotId": "ymgQczejF3bFu5ee", + "slotType": "SLOT_TYPE_IN_PLAYER", + "triggerEvent": "SLOT_TRIGGER_EVENT_LAYOUT_ID_ENTERED", + "triggeringSourceLayoutId": "qLYvxrzZ3iSfwRkS" + }, + "fulfillmentContent": { + "fulfilledLayout": { + "inPlayerAdLayoutRenderer": { + "adLayoutMetadata": { + "adLayoutLoggingData": { + "serializedAdServingDataEntry": "IBAwAjgGShMIhK_hvbbNhwMV4mxBAh1Ajg-_UgYQAUgBWAFoAXAY" + }, + "layoutId": "bj8kp31ew2buiJZs", + "layoutType": "LAYOUT_TYPE_MEDIA_LAYOUT_PLAYER_OVERLAY" + }, + "layoutExitNormalTriggers": [ + { + "id": "67c0ba8e-0000-2697-a1b9-14223bb5ae26", + "layoutIdExitedTrigger": { + "triggeringLayoutId": "qLYvxrzZ3iSfwRkS" + } + } + ], + "renderingContent": { + "instreamAdPlayerOverlayRenderer": { + "adBadgeRenderer": { + "simpleAdBadgeRenderer": { + "isSponsoredBadge": true, + "styleType": "SIMPLE_AD_BADGE_STYLE_TYPE_STARK", + "text": { + "isTemplated": false, + "text": "Sponsored", + "trackingParams": "CC0Q474CIhMI1LTfvbbNhwMV18NCBR2XhgKG" + }, + "trackingParams": "CC0Q474CIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + }, + "adDurationMs": 15000, + "adDurationRemaining": { + "adDurationRemainingRenderer": { + "templatedCountdown": { + "templatedAdText": { + "isTemplated": true, + "text": "{FORMATTED_AD_DURATION_REMAINING}", + "trackingParams": "CCwQzr8CIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + }, + "trackingParams": "CCwQzr8CIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + }, + "adInfoRenderer": { + "adHoverTextButtonRenderer": { + "button": { + "buttonRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "About this ad" + } + }, + "command": { + "adInfoDialogChoiceEndpoint": { + "initialStatus": "AD_PERSONALIZATION_SETTING_OPT_IN", + "optInAction": { + "clickTrackingParams": "CAUQ8FsiEwjUtN-9ts2HAxXXw0IFHZeGAoY=", + "openPopupAction": { + "popup": { + "overlaySectionRenderer": { + "overlay": { + "overlayTwoPanelRenderer": { + "actionPanel": { + "overlayPanelRenderer": { + "content": { + "qrCodeRenderer": { + "command": { + "clickTrackingParams": "CB4Q1MsHIhMI1LTfvbbNhwMV18NCBR2XhgKG", + "entityUpdateCommand": { + "entityBatchUpdate": { + "mutations": [ + { + "entityKey": "EhY2N0YtOFh4T3VyVWFISHh6VU9lME13IKQDKAE%3D", + "payload": { + "qrCodeEntity": { + "command": { + "clickTrackingParams": "CCsQpZsIIhMI1LTfvbbNhwMV18NCBR2XhgKG", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIVD3A07lETKT87vHuI-Ap5-UfnWHXP356feNloxJVQ3xfhqX4MOX_D4Ym5swCo4yaO0LSMBP754giUYzUjAJjt4-Z-EkcOxAO3b1ojSoMsKV0c4Grmzz9P92WKMgbL9uCk6tzkwBoylKaD8QwF6cRQ5SC_vZdR2fg63t6mgPAxyv8kGbFIDZVjXkS1yThG_M1svOYjjtMI1tmTEWIjwFVCMgfQLTt68yUrbcYEE6aYx2nMpRLd0GWBDI1gx1OZrmWa5xC0NQ6GRl0b4yXLvn40FDrM-QBFHKZP4uVJo2qBJm7bqfmc99f28wVspsnt013oluYvT471c2qAZZ7kWstMQ8VXBKXv7IfREpZy3bAaWeh16pR3-h03zXYesUZwEyA1o8gNl9FE8AyuERvt2JV_avL7HfHySfmqUHHTZw3yaXm532rA-eWKmE6TyTjWs787wskH7iYDjjpBk1jvPXmupuY72u3F-ivGLa5mWCUxJ5Mh1EPSb_WAnlpsBSY0GBW41pefe9qA1u_hY6sdgGHKJxWeZO3yeGgr2gXgb9BK0B9QmKdTtc5DzGB2ntNTet5qTMm-MRIiXY8bdR2Axqu-cFz3vGqJ30CjsIOf7FJdtaX8_RmXOPtY38junPajkPXB2xE1QWX9GhyJB_aIaPU4cTiW0AfbF7FFS8pz7rQChoQNbDBsoXV4Ge-t4yg0X5I79X1NK9E7w1jxtOrdqc5Wsu96YarLDcKS0oat_Lh33pThCBv7Zxssl5cXTCl9atBiIdSYwKHNQ9G0JHaIxu2-eznQiimJvTbzKy7PJ1oerzli-QJ8icUTCps3GG7bXSoOGyh2JezNQLhj49D6yGLOfrFC8SWgoP879OBWWEnK8GXfJVJ64lwhFiCrPesSTMVuw7Hy0vl1mA0AD3yoAghlvavb4oa8iLUGAmnUnbCjY1bb84VOBaYh5PEuigkpmnJUD8MkQhf4JIbulXpT-Rd09gj4ESeNdU_dD5-0OCdAzg-R1jnFwFH0Zm7cAC1ZJQxUYvL4L1VF0aQmy94r4SM4foAX4yC03kLIpmL5PH1tRfGK4eHmoMcRe0p-Ag291B9w6BS9hSwiy0IcYBVdoOlLq8hE9DGUHaczKmFyP1sNjP-BW9cj_yqECIpEKAik0fLe-lxHR3KawSxJ2v39FS2x1JKLxcqib8JbZa9ezD6uMxI7U4ATu44ZWCkvsCijYfmoff450BuIWgAm2zCOIBEj10HpBRL_d8a05HarUxT9Oamq4V1_tttq-iZ9IMy8gJO5ddZAuS-Vv7kPigeOt9xgWgQ7ouAANHnF9Fo1TYgeIFIgFRJf-qoIVI9xk_ChcqCFo6iPzAW8YzpJ7zWCndqIajJGxgo2u6dYiJ8sFHCpjKjuAAXpnXpsSAM7EZlid1ygwBlNlALx-3FFlUfZm7JFpQNG7YEptDn0TX6GdjmaAsVS3ft41MoCultQ7pDcxSS-PncCsVZ7-OJbnkHxEHrgU3hqdsYyqo0ZIVbt-ndN8WTx2aem3FB359XfVmmzwtGBlbVxcxkw9MKAiJVHYW9E8sBQSPRlHbBjgIGaaFFpae2Z9w78OhVoZT-m4GZhsoHCzSUBtWzIW3q5mM65eb71AsDy7FBnq28NPx4HQe_0Z52hF2JatLinil_QmYJzqv8zTuBfSLMzSFBs1mRwu5iauZlkGhr-9woj30nGqmzNP3pDZGyQw0gcyEQz8IP3LfDoP6sU1nhUWqhvJuOHtXyfgaiYEMrWGEyJg-3HyjDUEEtCzeJDrpd6dQ7gOUvm4gsJsDRXJCDtq7azORFKyRtqdLS1R0MUNkfcUorO6u2yBfQT93f_xeTaav01FQj1r38ebGYPS68lcNTqbit2V10GXCdpZN8sQIQWk5Pj8j0DoAN6iCPX4nb54Cojzog6mFS7UwG-VOlxkVJHEthDHR95dEEF6mTusY54czNK7w0D42BtGjDOJ9WDLWUIndumxIMvCjkwdZ9URtwA-MhdPykjvs4nT_GslB01KUusamOa4QWIOyW37hXD2eK2RNXXJcv-FWuQ1iu_bQWe7qzTNsOKdPgjaCBAEpHDRmxjwnhZaeCKVdWidYGe4LA2VD1A638-DYmSxBzw_ITeGOaSTJ9PvhggYNAp3oYUhWi971NjPONvzbGdNmBbWxKom4AdoS-1Yn_GeHoq9lp-BpAzLWmIIo0drcLWwmBa_uaGVdOHS8joLevTSHmPNTB-uVsk_5mdSQfk6mkvNc5JdYICsHj0mExiR3VnW3QqeaJ7yhO7gJgzWPSnox9YqIKmTf8rRI_LAQTeoUu4qJ9f5TS771swgU7ZpSeM5euwGh7Lv9q048R-F3aJCjnmecSA20eeCSctMO5WAjpcjvhK5hobAz2lVTubVYqz87ljuhXwehP0-Av-Hswxf_Ps11uEIRNyoQiMT9UoUvHluqHllP3EHuJC36nTku1AwXiN4WjqmQQ08A4TGLSUzryj-ODXE9KCundW8EyOnJuQJzhoLqFPvfR4UIDAXI_Cp6n2sTQbjl1g7PYtzJgUCDNBx31Lp-MpFMhaYbfMfZH-8Ba6XzxR3DMGqO6HkNuyF3Yi0rPK1m4x6yhjILPo6EBThZWMAC9JCSJbCVDG1kjsQ7MMmWi8DZMDVudRvsSuazWgrGXXIfUmlgA2eril0x9CgHzAav6cdNQzbxTKmjPxPnszEHc6ZvTcnTUwgqj1MJmtum4Va8ICPEnIkwtcJQ3_xWnDxVFyjoD_JMzzyI8_Ir36pjXA7Ri8fXbfivPhkPB9L78kpKFx_GLKM7q4n_mGuXDEF-n-cLQ0SCUnvGxaN7Wul_ORCYtyjI7qAXgX9DOjLn-EPzdntcnddtNRsjN7XmvKYSvl9dIqO_fE-Nmg8nGpUovtMsvoo8cty130xajQLo-f0QyfmCpZ3TST0D27eHmqDRJ-iF77oZhN" + } + }, + "deleteEntityOnDismiss": true, + "label": { + "runs": [ + { + "text": "Or, use your mobile device to scan the following QR code:" + } + ] + }, + "labels": [ + { + "runs": [ + { + "text": "For info about this ad and to manage your ad preferences, visit" + } + ] + }, + { + "runs": [ + { + "text": "Loading...", + "textColor": 4293651435 + } + ] + } + ], + "qrEntityKey": "EhY2N0YtOFh4T3VyVWFISHh6VU9lME13IKQDKAE%3D", + "spinner": { + "delayMs": 200 + }, + "style": "QR_CODE_RENDERER_STYLE_ATA_SIDESHEET", + "trackingParams": "CCsQpZsIIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + }, + "type": "ENTITY_MUTATION_TYPE_REPLACE" + } + ] + } + } + }, + "deleteEntityOnDismiss": true, + "label": { + "runs": [ + { + "text": "Or, use your mobile device to scan the following QR code:" + } + ] + }, + "labels": [ + { + "runs": [ + { + "text": "For info about this ad and to manage your ad preferences, visit" + } + ] + }, + { + "runs": [ + { + "text": "Loading...", + "textColor": 4293651435 + } + ] + } + ], + "qrEntityKey": "EhY2N0YtOFh4T3VyVWFISHh6VU9lME13IKQDKAE%3D", + "spinner": { + "delayMs": 200 + }, + "style": "QR_CODE_RENDERER_STYLE_ATA_SIDESHEET", + "trackingParams": "CB4Q1MsHIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + }, + "footer": { + "overlayPanelItemListRenderer": { + "items": [ + { + "compactLinkRenderer": { + "secondaryIcon": { + "iconType": "CHEVRON_RIGHT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CCQQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==", + "openPopupAction": { + "popup": { + "overlaySectionRenderer": { + "onOpenCommand": { + "adPingingEndpoint": { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=user_feedback_menu_interaction&cbt=Z2Nhs65hfpUI1fyA99kSEPKTx_BPGKawlJsDIg13d3cuYW1hem9uLmRlOKbfjdP55-qF1AFCF2NhLXB1Yi02MjE5ODExNzQ3MDQ5MzcxWFdgAKIBPgoLMUF1clA1cGpiNlkSC3BQdmQ4VXhtU2JRGiJhZnZfdXNlcl9pZF9ieHhFaS1JbVBsYkx4NUYtZkhldEVn" + }, + "clickTrackingParams": "CCUQ9sQLIhMI1LTfvbbNhwMV18NCBR2XhgKG" + }, + "overlay": { + "overlayTwoPanelRenderer": { + "actionPanel": { + "overlayPanelRenderer": { + "content": { + "overlayPanelItemListRenderer": { + "items": [ + { + "compactLinkRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CCoQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CCoQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==", + "signalAction": { + "signal": "CLOSE_POPUP" + } + }, + { + "adPingingEndpoint": { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=mute_survey_option&label_instance=2&cbt=Z2Nhs65hfpUI1fyA99kSEPKTx_BPGKawlJsDIg13d3cuYW1hem9uLmRlOKbfjdP55-qF1AFCF2NhLXB1Yi02MjE5ODExNzQ3MDQ5MzcxWFdgAKIBPgoLMUF1clA1cGpiNlkSC3BQdmQ4VXhtU2JRGiJhZnZfdXNlcl9pZF9ieHhFaS1JbVBsYkx4NUYtZkhldEVn" + }, + "clickTrackingParams": "CCoQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==" + }, + { + "adPingingEndpoint": { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=ad_block&label_instance=1&cbt=Z2Nhs65hfpUI1fyA99kSEPKTx_BPGKawlJsDIg13d3cuYW1hem9uLmRlOKbfjdP55-qF1AFCF2NhLXB1Yi02MjE5ODExNzQ3MDQ5MzcxWFdgAKIBPgoLMUF1clA1cGpiNlkSC3BQdmQ4VXhtU2JRGiJhZnZfdXNlcl9pZF9ieHhFaS1JbVBsYkx4NUYtZkhldEVn" + }, + "clickTrackingParams": "CCoQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==" + }, + { + "clickTrackingParams": "CCoQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==", + "muteAdEndpoint": { + "type": "SKIP" + } + }, + { + "clickTrackingParams": "CCoQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==", + "openPopupAction": { + "popup": { + "overlayMessageRenderer": { + "style": "OVERLAY_MESSAGE_STYLE_TOAST", + "title": { + "runs": [ + { + "text": "Thanks for the feedback!" + } + ] + } + } + }, + "popupType": "TOAST" + } + } + ] + } + }, + "title": { + "simpleText": "Repetitive" + }, + "trackingParams": "CCoQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==" + } + }, + { + "compactLinkRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CCkQp0wYASITCNS03722zYcDFdfDQgUdl4YChg==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CCkQp0wYASITCNS03722zYcDFdfDQgUdl4YChg==", + "signalAction": { + "signal": "CLOSE_POPUP" + } + }, + { + "adPingingEndpoint": { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=mute_survey_option&label_instance=8&cbt=Z2Nhs65hfpUI1fyA99kSEPKTx_BPGKawlJsDIg13d3cuYW1hem9uLmRlOKbfjdP55-qF1AFCF2NhLXB1Yi02MjE5ODExNzQ3MDQ5MzcxWFdgAKIBPgoLMUF1clA1cGpiNlkSC3BQdmQ4VXhtU2JRGiJhZnZfdXNlcl9pZF9ieHhFaS1JbVBsYkx4NUYtZkhldEVn" + }, + "clickTrackingParams": "CCkQp0wYASITCNS03722zYcDFdfDQgUdl4YChg==" + }, + { + "adPingingEndpoint": { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=ad_block&label_instance=1&cbt=Z2Nhs65hfpUI1fyA99kSEPKTx_BPGKawlJsDIg13d3cuYW1hem9uLmRlOKbfjdP55-qF1AFCF2NhLXB1Yi02MjE5ODExNzQ3MDQ5MzcxWFdgAKIBPgoLMUF1clA1cGpiNlkSC3BQdmQ4VXhtU2JRGiJhZnZfdXNlcl9pZF9ieHhFaS1JbVBsYkx4NUYtZkhldEVn" + }, + "clickTrackingParams": "CCkQp0wYASITCNS03722zYcDFdfDQgUdl4YChg==" + }, + { + "clickTrackingParams": "CCkQp0wYASITCNS03722zYcDFdfDQgUdl4YChg==", + "muteAdEndpoint": { + "type": "SKIP" + } + }, + { + "clickTrackingParams": "CCkQp0wYASITCNS03722zYcDFdfDQgUdl4YChg==", + "openPopupAction": { + "popup": { + "overlayMessageRenderer": { + "style": "OVERLAY_MESSAGE_STYLE_TOAST", + "title": { + "runs": [ + { + "text": "Thanks for the feedback!" + } + ] + } + } + }, + "popupType": "TOAST" + } + } + ] + } + }, + "title": { + "simpleText": "Inappropriate" + }, + "trackingParams": "CCkQp0wYASITCNS03722zYcDFdfDQgUdl4YChg==" + } + }, + { + "compactLinkRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CCgQp0wYAiITCNS03722zYcDFdfDQgUdl4YChg==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CCgQp0wYAiITCNS03722zYcDFdfDQgUdl4YChg==", + "signalAction": { + "signal": "CLOSE_POPUP" + } + }, + { + "adPingingEndpoint": { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=mute_survey_option&label_instance=7&cbt=Z2Nhs65hfpUI1fyA99kSEPKTx_BPGKawlJsDIg13d3cuYW1hem9uLmRlOKbfjdP55-qF1AFCF2NhLXB1Yi02MjE5ODExNzQ3MDQ5MzcxWFdgAKIBPgoLMUF1clA1cGpiNlkSC3BQdmQ4VXhtU2JRGiJhZnZfdXNlcl9pZF9ieHhFaS1JbVBsYkx4NUYtZkhldEVn" + }, + "clickTrackingParams": "CCgQp0wYAiITCNS03722zYcDFdfDQgUdl4YChg==" + }, + { + "adPingingEndpoint": { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=ad_block&label_instance=1&cbt=Z2Nhs65hfpUI1fyA99kSEPKTx_BPGKawlJsDIg13d3cuYW1hem9uLmRlOKbfjdP55-qF1AFCF2NhLXB1Yi02MjE5ODExNzQ3MDQ5MzcxWFdgAKIBPgoLMUF1clA1cGpiNlkSC3BQdmQ4VXhtU2JRGiJhZnZfdXNlcl9pZF9ieHhFaS1JbVBsYkx4NUYtZkhldEVn" + }, + "clickTrackingParams": "CCgQp0wYAiITCNS03722zYcDFdfDQgUdl4YChg==" + }, + { + "clickTrackingParams": "CCgQp0wYAiITCNS03722zYcDFdfDQgUdl4YChg==", + "muteAdEndpoint": { + "type": "SKIP" + } + }, + { + "clickTrackingParams": "CCgQp0wYAiITCNS03722zYcDFdfDQgUdl4YChg==", + "openPopupAction": { + "popup": { + "overlayMessageRenderer": { + "style": "OVERLAY_MESSAGE_STYLE_TOAST", + "title": { + "runs": [ + { + "text": "Thanks for the feedback!" + } + ] + } + } + }, + "popupType": "TOAST" + } + } + ] + } + }, + "title": { + "simpleText": "Irrelevant" + }, + "trackingParams": "CCgQp0wYAiITCNS03722zYcDFdfDQgUdl4YChg==" + } + }, + { + "compactLinkRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CCcQp0wYAyITCNS03722zYcDFdfDQgUdl4YChg==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CCcQp0wYAyITCNS03722zYcDFdfDQgUdl4YChg==", + "signalAction": { + "signal": "CLOSE_POPUP" + } + }, + { + "adPingingEndpoint": { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=ad_block&label_instance=1&cbt=Z2Nhs65hfpUI1fyA99kSEPKTx_BPGKawlJsDIg13d3cuYW1hem9uLmRlOKbfjdP55-qF1AFCF2NhLXB1Yi02MjE5ODExNzQ3MDQ5MzcxWFdgAKIBPgoLMUF1clA1cGpiNlkSC3BQdmQ4VXhtU2JRGiJhZnZfdXNlcl9pZF9ieHhFaS1JbVBsYkx4NUYtZkhldEVn" + }, + "clickTrackingParams": "CCcQp0wYAyITCNS03722zYcDFdfDQgUdl4YChg==" + }, + { + "clickTrackingParams": "CCcQp0wYAyITCNS03722zYcDFdfDQgUdl4YChg==", + "muteAdEndpoint": { + "type": "SKIP" + } + } + ] + } + }, + "title": { + "runs": [ + { + "text": "Return to video" + } + ] + }, + "trackingParams": "CCcQp0wYAyITCNS03722zYcDFdfDQgUdl4YChg==" + } + } + ], + "selectedIndex": 3 + } + }, + "header": { + "overlayPanelHeaderRenderer": { + "subtitle": { + "runs": [ + { + "text": "What was wrong with this ad?" + } + ] + }, + "title": { + "runs": [ + { + "text": "Stop seeing this ad" + } + ] + } + } + }, + "trackingParams": "CCUQ9sQLIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + }, + "backButton": { + "buttonRenderer": { + "command": { + "clickTrackingParams": "CCYQ8FsiEwjUtN-9ts2HAxXXw0IFHZeGAoY=", + "signalAction": { + "signal": "POPUP_BACK" + } + }, + "icon": { + "iconType": "BACK" + }, + "isDisabled": false, + "size": "SIZE_DEFAULT", + "style": "STYLE_DEFAULT", + "trackingParams": "CCYQ8FsiEwjUtN-9ts2HAxXXw0IFHZeGAoY=" + } + } + } + }, + "trackingParams": "CCUQ9sQLIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + }, + "popupType": "FULLSCREEN_OVERLAY" + } + }, + "title": { + "runs": [ + { + "text": "Stop seeing this ad" + } + ] + }, + "trackingParams": "CCQQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==" + } + }, + { + "compactLinkRenderer": { + "secondaryIcon": { + "iconType": "CHEVRON_RIGHT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CCAQp0wYASITCNS03722zYcDFdfDQgUdl4YChg==", + "openPopupAction": { + "popup": { + "overlaySectionRenderer": { + "overlay": { + "overlayTwoPanelRenderer": { + "actionPanel": { + "overlayPanelRenderer": { + "content": { + "overlayPanelItemListRenderer": { + "items": [ + { + "compactLinkRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CCMQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CCMQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==", + "signalAction": { + "signal": "CLOSE_POPUP" + } + }, + { + "clickTrackingParams": "CCMQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==", + "openPopupAction": { + "popup": { + "overlayMessageRenderer": { + "style": "OVERLAY_MESSAGE_STYLE_TOAST", + "title": { + "runs": [ + { + "text": "Ad personalization from Google is now off for your YouTube app on this device." + } + ] + } + } + }, + "popupType": "TOAST" + } + }, + { + "adPersonalizationSettingChangeEndpoint": { + "serviceCommand": { + "clickTrackingParams": "CCMQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpJNn9y6iX5doYUpXNqNeNiZ2Y1wB0MSXjCqps-YHZ6iM1gCebTl3e1w_wIZwnIAAmKDdD7L" + } + } + }, + "clickTrackingParams": "CCMQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==" + } + ] + } + }, + "title": { + "runs": [ + { + "text": "Turn Off" + } + ] + }, + "trackingParams": "CCMQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==" + } + } + ] + } + }, + "header": { + "overlayPanelHeaderRenderer": { + "content": [ + { + "overlayMessageRenderer": { + "style": "OVERLAY_MESSAGE_STYLE_BULLET_SENTENCE", + "title": { + "runs": [ + { + "text": "Google won't personalize ads on the YouTube app on this TV" + } + ] + } + } + }, + { + "overlayMessageRenderer": { + "style": "OVERLAY_MESSAGE_STYLE_BULLET_SENTENCE", + "title": { + "runs": [ + { + "text": "You'll still see ads, but they'll be less useful to you" + } + ] + } + } + }, + { + "overlayMessageRenderer": { + "style": "OVERLAY_MESSAGE_STYLE_BULLET_SENTENCE", + "title": { + "runs": [ + { + "text": "Ads you see may be based on the video you're watching and your general location" + } + ] + } + } + } + ], + "subtitle": { + "runs": [ + { + "text": "Here's what happens when you turn off personalization:" + } + ] + }, + "title": { + "runs": [ + { + "text": "Turn off ad personalization?" + } + ] + } + } + }, + "trackingParams": "CCEQ9sQLIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + }, + "backButton": { + "buttonRenderer": { + "command": { + "clickTrackingParams": "CCIQ8FsiEwjUtN-9ts2HAxXXw0IFHZeGAoY=", + "signalAction": { + "signal": "POPUP_BACK" + } + }, + "icon": { + "iconType": "BACK" + }, + "isDisabled": false, + "size": "SIZE_DEFAULT", + "style": "STYLE_DEFAULT", + "trackingParams": "CCIQ8FsiEwjUtN-9ts2HAxXXw0IFHZeGAoY=" + } + } + } + }, + "trackingParams": "CCEQ9sQLIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + }, + "popupType": "FULLSCREEN_OVERLAY" + } + }, + "title": { + "runs": [ + { + "text": "Ad Personalization On" + } + ] + }, + "trackingParams": "CCAQp0wYASITCNS03722zYcDFdfDQgUdl4YChg==" + } + } + ] + } + }, + "header": { + "overlayPanelHeaderRenderer": { + "title": { + "runs": [ + { + "text": "About this ad" + } + ] + } + } + }, + "trackingParams": "CB4Q1MsHIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + }, + "backButton": { + "buttonRenderer": { + "command": { + "clickTrackingParams": "CB8Q8FsiEwjUtN-9ts2HAxXXw0IFHZeGAoY=", + "signalAction": { + "signal": "POPUP_BACK" + } + }, + "icon": { + "iconType": "DISMISSAL" + }, + "isDisabled": false, + "size": "SIZE_DEFAULT", + "style": "STYLE_DEFAULT", + "trackingParams": "CB8Q8FsiEwjUtN-9ts2HAxXXw0IFHZeGAoY=" + } + } + } + }, + "trackingParams": "CB4Q1MsHIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + }, + "popupType": "FULLSCREEN_OVERLAY" + } + }, + "optOutAction": { + "clickTrackingParams": "CAUQ8FsiEwjUtN-9ts2HAxXXw0IFHZeGAoY=", + "openPopupAction": { + "popup": { + "overlaySectionRenderer": { + "overlay": { + "overlayTwoPanelRenderer": { + "actionPanel": { + "overlayPanelRenderer": { + "content": { + "qrCodeRenderer": { + "command": { + "clickTrackingParams": "CBAQ1MsHIhMI1LTfvbbNhwMV18NCBR2XhgKG", + "entityUpdateCommand": { + "entityBatchUpdate": { + "mutations": [ + { + "entityKey": "EhY2M2ZTOE1WVS0yS2Ixa2xfZS1ITFhRIKQDKAE%3D", + "payload": { + "qrCodeEntity": { + "command": { + "clickTrackingParams": "CB0QpZsIIhMI1LTfvbbNhwMV18NCBR2XhgKG", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIYD4NTWPnVZcitmvJ6heXHWmGKtgv7NcY04iZsMqXk7jQ9Xi8eT8KbPQV-9suG22eY-B11kUbz9gDm6yWkqqWwNjKxBteDTNSNiHbxthTR02Tyai3AhdeGG3aPztj3IZrTwpJKbdBnrvqpeJvwcfnCwBgpV6QtRsUwfy79u0icoAmpUsDvciRZwT-0qau--P6ikyqIxnwe6No1cDilWl-BeFFqQAH8NNQql99dIUoGVmO-RCR3PhTGqbqhzPIOyz948l1--ujgB16jNsAftlHKRaNnr1i2eHYDJ4BPK78KL6pP-bnngHLq6R7A8HOlJukwJJSqSvbW1TkeBYwitStywizjtN2Ynn6Y2VHVqXoXy3fR8kr4xvfEpt5bOB0qks3wY3olEv88fkr9RuwZpNqyfCMXz_bae6Xpcctz-nPi0dFickBNZszmuEs8X-1U1WQHHVOoS4SJ8hyiIQSWuqFNzPRg1Y1jpMYG8V43XrpHygvDRZCQOdmdvloQogWWLmj-jpdMvvg9pY8a2QMmmFx3RARutwRR7vfeCceLP-0snVlpfl_EUt4RWaKqxHVuEPXZc3xRB-xmY1EkMHPZ__OIzNUnr1wKzcMn8Z9FUzFy16nrhx6H0W_5oyoFyHIuHL-EnuBlUoVsDRfGwX2pGdnLtweR6WcF3q0_f_eVAAaEEvOt8LPjDrnTTJP70CN_7g6-mCgy_9XtA3076bEkQju29p-ukbz_T5k9LJpnwgx5otemcHRQE0Yr4MA0dcunG9zM9XHZYpEuZ0vnl7mGVVJmVd9X3v7TJdaN4U8nMk9zFj-TfmethbcJi4kBBznsy0_TqvYDwys-GzoAX3lz19YUwtdyXo9SxmmnQEIRGZ2u4PBZwVuCvEYMc4NGlQYOzwSZWiF4MWANL-DEWfG8JMmQjzhpqSwaUoAXC_UvgWX7gqI9mQIAKsoq8052ZZtxHKuDcEiD8bVs_WyeiYNRRuOW5hcvIDVlMnItZV5BNQ7vfsJqchBdrC96nJMSpTC7dHHEJPxA4t84Rl3ysqyyXOP3NIND8WzpWf3y5Ej2fEK_kRJHuVlLqdbGxprMJRV70GEDadEak9v8Qdq35rdO4zEUkgEr_e4SddPx3OfEt2zDLEEOiW9eZUCsLygq0q_1xwYFng9YbMfJXV5ZRsiXqs5ueKxtd5ZhP0xu4JpHiCRZVHRCGCATcUwNPBh-nQB2c_f8ZdUuXob1CrAQZqsZVtCfEcm2UL38X1jZUbYM8-J0mlZKUky6LBsQji632gqXqkjzC9Q0HScd4WDHEWbkRvtL53yri6iZrwM0foU80254nQt-o6RdZwL1XyxNi-OefuhWnlBO1aIl2QEbps55-5kSiHhKOabtsAcXbmexKY1VImKex4aQlY-ePjuxklz3_HHgJJpxu54cw3Aq8iTkJyCbN3eEbT0XG3DMj6HGy1YK_cZAZryW12nwZ1YpjHlom6mq5sncTMh9tphrAdKWIYPvJHFWzAs304yIo87piF1VzfkY2QN2sxGfB-1_mjuA3J1Qobukum_M_T66jRxoXyaUKSkIjgBsoozJc1ftu41YkwgiMKiI5vJJZk1sgyete9ViIAfM7zlXpaXuCVsGX2HNejywNQ8Aw8uVg2MF6wABCGQP--CoUN_lFZaWr4mvvfW5dtkOLN_DiA7m4ex4MDU2SAz46OSRq95DcKjRMdfTOMo1TKjn8W0wZfWUWpHCQ48ogpIi2KL-EubcRCD7Gl60vld6ObNLKC_Gd8ZiH2Y8vWZzSXNs9Zb847f4vGDtZpmTiVPm0hkQnesmK-E8jC8cHPA5HfYckpxzIcEq7ybVehBmvmDJiN3ZocW7db1m3szRu8-iagmOBai09BgFp3_kKk6muuzsvfNIMOGYzX59fyWvKb0jdzyZ7poKlTOEV-CCsDEJimcYQGQD-W7hkCTZpHKn6BkJZFWVoEbhHT7rzSBfoAKTaFwDGFPH-IuvNHUOfgpwea2RkBtFs3BaH6-ch-Vw3lTx3EgyjUrC-dzceGc4o5WI_mEuosbTpKYbkb4-KA82qoMDrFzikJH-90UDzX8DVQvzaZ5P46Fao3wYuPeSjkYve3gMtAdi0qJ8bBwW8aECfGvcQyK0kUzQZiyhdafyCgWqXxfpIOShwWfB3MwYlMiDACEASIFAQm6Jo6EbnZM5jVxkM0CFxLRZyVWA79qhWMSWbBLinM8qow04X7lbzSQN3KHUk5GBk-6u8PZbzm5OxQAjLUdGtMa33w6WAM6lkMKUGEmUIELQu7KYvzO0Pm62xELpCq0t2M9w1K2zWhUFUAFxpR2BkRcU1Y2v9iFY1xUU-M2mSgBI9MoccrsFz3Lgy9OA5GiNDl46XbpJCjBsAokLDAXuQ_nhrOOMHjg9Tg5V1MPH3JVdVfFY-ZX80oggswR15z9SMzb_YvtpxMHz4cpVWUhPoWn0iYoxARryZCPExBoXJaRjwP2UbDzXWmctQJRTK2yfK5I9kaLrnqQxQ2Tkn_Y4F8E3AJfZlf0oQIto1vjeafCIx3idw-chRziw6McQWBqH69j5-yIlA-qOvIrDmonlYe239ofCx2ke-wG5IitMoeIiTbojYxJRlTfx811dbDTnVFfPYhJcH2O-yKYMiqg6uBNnwr-SOskE-e8YAC18EyCGtWFIKyaIiFDd7a5jQOTzMbI0mi4nK07gDnnVqj4S1gWsIdp5kWh20muX35CJ7BjKJ9m9mfSNJVqhE32SSJHXHHLnUSF3x8_WnqaMRoak4tL3HYN0xqh13ST8-Jgt9RuU-kAL2DNzgr9ENEHQBu2kfhJtZRfug-DjoeJT-u3_Xy54lWkZ2rMK54OGWfq-eemwohQfdJcvz1-q_-2-YlM5fNfIfJHnX4m1P1bBvxvrlX0H_vXo_FtgtS6LNnjFQPkUoMZpg2g34X6K8q8WIw7ZbyWiq9R4PSf8" + } + }, + "deleteEntityOnDismiss": true, + "label": { + "runs": [ + { + "text": "Or, use your mobile device to scan the following QR code:" + } + ] + }, + "labels": [ + { + "runs": [ + { + "text": "For info about this ad and to manage your ad preferences, visit" + } + ] + }, + { + "runs": [ + { + "text": "Loading...", + "textColor": 4293651435 + } + ] + } + ], + "qrEntityKey": "EhY2M2ZTOE1WVS0yS2Ixa2xfZS1ITFhRIKQDKAE%3D", + "spinner": { + "delayMs": 200 + }, + "style": "QR_CODE_RENDERER_STYLE_ATA_SIDESHEET", + "trackingParams": "CB0QpZsIIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + }, + "type": "ENTITY_MUTATION_TYPE_REPLACE" + } + ] + } + } + }, + "deleteEntityOnDismiss": true, + "label": { + "runs": [ + { + "text": "Or, use your mobile device to scan the following QR code:" + } + ] + }, + "labels": [ + { + "runs": [ + { + "text": "For info about this ad and to manage your ad preferences, visit" + } + ] + }, + { + "runs": [ + { + "text": "Loading...", + "textColor": 4293651435 + } + ] + } + ], + "qrEntityKey": "EhY2M2ZTOE1WVS0yS2Ixa2xfZS1ITFhRIKQDKAE%3D", + "spinner": { + "delayMs": 200 + }, + "style": "QR_CODE_RENDERER_STYLE_ATA_SIDESHEET", + "trackingParams": "CBAQ1MsHIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + }, + "footer": { + "overlayPanelItemListRenderer": { + "items": [ + { + "compactLinkRenderer": { + "secondaryIcon": { + "iconType": "CHEVRON_RIGHT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CBYQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==", + "openPopupAction": { + "popup": { + "overlaySectionRenderer": { + "onOpenCommand": { + "adPingingEndpoint": { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=user_feedback_menu_interaction&cbt=Z2Nhs65hfpUI1fyA99kSEPKTx_BPGKawlJsDIg13d3cuYW1hem9uLmRlOKbfjdP55-qF1AFCF2NhLXB1Yi02MjE5ODExNzQ3MDQ5MzcxWFdgAKIBPgoLMUF1clA1cGpiNlkSC3BQdmQ4VXhtU2JRGiJhZnZfdXNlcl9pZF9ieHhFaS1JbVBsYkx4NUYtZkhldEVn" + }, + "clickTrackingParams": "CBcQ9sQLIhMI1LTfvbbNhwMV18NCBR2XhgKG" + }, + "overlay": { + "overlayTwoPanelRenderer": { + "actionPanel": { + "overlayPanelRenderer": { + "content": { + "overlayPanelItemListRenderer": { + "items": [ + { + "compactLinkRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CBwQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CBwQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==", + "signalAction": { + "signal": "CLOSE_POPUP" + } + }, + { + "adPingingEndpoint": { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=mute_survey_option&label_instance=2&cbt=Z2Nhs65hfpUI1fyA99kSEPKTx_BPGKawlJsDIg13d3cuYW1hem9uLmRlOKbfjdP55-qF1AFCF2NhLXB1Yi02MjE5ODExNzQ3MDQ5MzcxWFdgAKIBPgoLMUF1clA1cGpiNlkSC3BQdmQ4VXhtU2JRGiJhZnZfdXNlcl9pZF9ieHhFaS1JbVBsYkx4NUYtZkhldEVn" + }, + "clickTrackingParams": "CBwQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==" + }, + { + "adPingingEndpoint": { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=ad_block&label_instance=1&cbt=Z2Nhs65hfpUI1fyA99kSEPKTx_BPGKawlJsDIg13d3cuYW1hem9uLmRlOKbfjdP55-qF1AFCF2NhLXB1Yi02MjE5ODExNzQ3MDQ5MzcxWFdgAKIBPgoLMUF1clA1cGpiNlkSC3BQdmQ4VXhtU2JRGiJhZnZfdXNlcl9pZF9ieHhFaS1JbVBsYkx4NUYtZkhldEVn" + }, + "clickTrackingParams": "CBwQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==" + }, + { + "clickTrackingParams": "CBwQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==", + "muteAdEndpoint": { + "type": "SKIP" + } + }, + { + "clickTrackingParams": "CBwQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==", + "openPopupAction": { + "popup": { + "overlayMessageRenderer": { + "style": "OVERLAY_MESSAGE_STYLE_TOAST", + "title": { + "runs": [ + { + "text": "Thanks for the feedback!" + } + ] + } + } + }, + "popupType": "TOAST" + } + } + ] + } + }, + "title": { + "simpleText": "Repetitive" + }, + "trackingParams": "CBwQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==" + } + }, + { + "compactLinkRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CBsQp0wYASITCNS03722zYcDFdfDQgUdl4YChg==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CBsQp0wYASITCNS03722zYcDFdfDQgUdl4YChg==", + "signalAction": { + "signal": "CLOSE_POPUP" + } + }, + { + "adPingingEndpoint": { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=mute_survey_option&label_instance=8&cbt=Z2Nhs65hfpUI1fyA99kSEPKTx_BPGKawlJsDIg13d3cuYW1hem9uLmRlOKbfjdP55-qF1AFCF2NhLXB1Yi02MjE5ODExNzQ3MDQ5MzcxWFdgAKIBPgoLMUF1clA1cGpiNlkSC3BQdmQ4VXhtU2JRGiJhZnZfdXNlcl9pZF9ieHhFaS1JbVBsYkx4NUYtZkhldEVn" + }, + "clickTrackingParams": "CBsQp0wYASITCNS03722zYcDFdfDQgUdl4YChg==" + }, + { + "adPingingEndpoint": { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=ad_block&label_instance=1&cbt=Z2Nhs65hfpUI1fyA99kSEPKTx_BPGKawlJsDIg13d3cuYW1hem9uLmRlOKbfjdP55-qF1AFCF2NhLXB1Yi02MjE5ODExNzQ3MDQ5MzcxWFdgAKIBPgoLMUF1clA1cGpiNlkSC3BQdmQ4VXhtU2JRGiJhZnZfdXNlcl9pZF9ieHhFaS1JbVBsYkx4NUYtZkhldEVn" + }, + "clickTrackingParams": "CBsQp0wYASITCNS03722zYcDFdfDQgUdl4YChg==" + }, + { + "clickTrackingParams": "CBsQp0wYASITCNS03722zYcDFdfDQgUdl4YChg==", + "muteAdEndpoint": { + "type": "SKIP" + } + }, + { + "clickTrackingParams": "CBsQp0wYASITCNS03722zYcDFdfDQgUdl4YChg==", + "openPopupAction": { + "popup": { + "overlayMessageRenderer": { + "style": "OVERLAY_MESSAGE_STYLE_TOAST", + "title": { + "runs": [ + { + "text": "Thanks for the feedback!" + } + ] + } + } + }, + "popupType": "TOAST" + } + } + ] + } + }, + "title": { + "simpleText": "Inappropriate" + }, + "trackingParams": "CBsQp0wYASITCNS03722zYcDFdfDQgUdl4YChg==" + } + }, + { + "compactLinkRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CBoQp0wYAiITCNS03722zYcDFdfDQgUdl4YChg==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CBoQp0wYAiITCNS03722zYcDFdfDQgUdl4YChg==", + "signalAction": { + "signal": "CLOSE_POPUP" + } + }, + { + "adPingingEndpoint": { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=mute_survey_option&label_instance=7&cbt=Z2Nhs65hfpUI1fyA99kSEPKTx_BPGKawlJsDIg13d3cuYW1hem9uLmRlOKbfjdP55-qF1AFCF2NhLXB1Yi02MjE5ODExNzQ3MDQ5MzcxWFdgAKIBPgoLMUF1clA1cGpiNlkSC3BQdmQ4VXhtU2JRGiJhZnZfdXNlcl9pZF9ieHhFaS1JbVBsYkx4NUYtZkhldEVn" + }, + "clickTrackingParams": "CBoQp0wYAiITCNS03722zYcDFdfDQgUdl4YChg==" + }, + { + "adPingingEndpoint": { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=ad_block&label_instance=1&cbt=Z2Nhs65hfpUI1fyA99kSEPKTx_BPGKawlJsDIg13d3cuYW1hem9uLmRlOKbfjdP55-qF1AFCF2NhLXB1Yi02MjE5ODExNzQ3MDQ5MzcxWFdgAKIBPgoLMUF1clA1cGpiNlkSC3BQdmQ4VXhtU2JRGiJhZnZfdXNlcl9pZF9ieHhFaS1JbVBsYkx4NUYtZkhldEVn" + }, + "clickTrackingParams": "CBoQp0wYAiITCNS03722zYcDFdfDQgUdl4YChg==" + }, + { + "clickTrackingParams": "CBoQp0wYAiITCNS03722zYcDFdfDQgUdl4YChg==", + "muteAdEndpoint": { + "type": "SKIP" + } + }, + { + "clickTrackingParams": "CBoQp0wYAiITCNS03722zYcDFdfDQgUdl4YChg==", + "openPopupAction": { + "popup": { + "overlayMessageRenderer": { + "style": "OVERLAY_MESSAGE_STYLE_TOAST", + "title": { + "runs": [ + { + "text": "Thanks for the feedback!" + } + ] + } + } + }, + "popupType": "TOAST" + } + } + ] + } + }, + "title": { + "simpleText": "Irrelevant" + }, + "trackingParams": "CBoQp0wYAiITCNS03722zYcDFdfDQgUdl4YChg==" + } + }, + { + "compactLinkRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CBkQp0wYAyITCNS03722zYcDFdfDQgUdl4YChg==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CBkQp0wYAyITCNS03722zYcDFdfDQgUdl4YChg==", + "signalAction": { + "signal": "CLOSE_POPUP" + } + }, + { + "adPingingEndpoint": { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=ad_block&label_instance=1&cbt=Z2Nhs65hfpUI1fyA99kSEPKTx_BPGKawlJsDIg13d3cuYW1hem9uLmRlOKbfjdP55-qF1AFCF2NhLXB1Yi02MjE5ODExNzQ3MDQ5MzcxWFdgAKIBPgoLMUF1clA1cGpiNlkSC3BQdmQ4VXhtU2JRGiJhZnZfdXNlcl9pZF9ieHhFaS1JbVBsYkx4NUYtZkhldEVn" + }, + "clickTrackingParams": "CBkQp0wYAyITCNS03722zYcDFdfDQgUdl4YChg==" + }, + { + "clickTrackingParams": "CBkQp0wYAyITCNS03722zYcDFdfDQgUdl4YChg==", + "muteAdEndpoint": { + "type": "SKIP" + } + } + ] + } + }, + "title": { + "runs": [ + { + "text": "Return to video" + } + ] + }, + "trackingParams": "CBkQp0wYAyITCNS03722zYcDFdfDQgUdl4YChg==" + } + } + ], + "selectedIndex": 3 + } + }, + "header": { + "overlayPanelHeaderRenderer": { + "subtitle": { + "runs": [ + { + "text": "What was wrong with this ad?" + } + ] + }, + "title": { + "runs": [ + { + "text": "Stop seeing this ad" + } + ] + } + } + }, + "trackingParams": "CBcQ9sQLIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + }, + "backButton": { + "buttonRenderer": { + "command": { + "clickTrackingParams": "CBgQ8FsiEwjUtN-9ts2HAxXXw0IFHZeGAoY=", + "signalAction": { + "signal": "POPUP_BACK" + } + }, + "icon": { + "iconType": "BACK" + }, + "isDisabled": false, + "size": "SIZE_DEFAULT", + "style": "STYLE_DEFAULT", + "trackingParams": "CBgQ8FsiEwjUtN-9ts2HAxXXw0IFHZeGAoY=" + } + } + } + }, + "trackingParams": "CBcQ9sQLIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + }, + "popupType": "FULLSCREEN_OVERLAY" + } + }, + "title": { + "runs": [ + { + "text": "Stop seeing this ad" + } + ] + }, + "trackingParams": "CBYQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==" + } + }, + { + "compactLinkRenderer": { + "secondaryIcon": { + "iconType": "CHEVRON_RIGHT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CBIQp0wYASITCNS03722zYcDFdfDQgUdl4YChg==", + "openPopupAction": { + "popup": { + "overlaySectionRenderer": { + "overlay": { + "overlayTwoPanelRenderer": { + "actionPanel": { + "overlayPanelRenderer": { + "content": { + "overlayPanelItemListRenderer": { + "items": [ + { + "compactLinkRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CBUQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CBUQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==", + "signalAction": { + "signal": "CLOSE_POPUP" + } + }, + { + "clickTrackingParams": "CBUQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==", + "openPopupAction": { + "popup": { + "overlayMessageRenderer": { + "style": "OVERLAY_MESSAGE_STYLE_TOAST", + "title": { + "runs": [ + { + "text": "Ad personalization from Google is now on for your YouTube app on this device." + } + ] + } + } + }, + "popupType": "TOAST" + } + }, + { + "adPersonalizationSettingChangeEndpoint": { + "serviceCommand": { + "clickTrackingParams": "CBUQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpIU0yJiHSwPosyg9gE7uWt4xG6Xzs3oyAI0OxQE_yVOR60pJSY9GUhU93jZY4OpgF4hBQNT" + } + } + }, + "clickTrackingParams": "CBUQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==" + } + ] + } + }, + "title": { + "runs": [ + { + "text": "Turn On" + } + ] + }, + "trackingParams": "CBUQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==" + } + } + ] + } + }, + "header": { + "overlayPanelHeaderRenderer": { + "content": [ + { + "overlayMessageRenderer": { + "style": "OVERLAY_MESSAGE_STYLE_BULLET_SENTENCE", + "title": { + "runs": [ + { + "text": "Google will personalize ads on the YouTube app on this TV" + } + ] + } + } + }, + { + "overlayMessageRenderer": { + "style": "OVERLAY_MESSAGE_STYLE_BULLET_SENTENCE", + "title": { + "runs": [ + { + "text": "Ads will be more useful to you" + } + ] + } + } + }, + { + "overlayMessageRenderer": { + "style": "OVERLAY_MESSAGE_STYLE_BULLET_SENTENCE", + "title": { + "runs": [ + { + "text": "Ads may also be based on the video you're watching and your general location" + } + ] + } + } + } + ], + "subtitle": { + "runs": [ + { + "text": "Here's what happens when you turn on personalization:" + } + ] + }, + "title": { + "runs": [ + { + "text": "Turn on ad personalization?" + } + ] + } + } + }, + "trackingParams": "CBMQ9sQLIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + }, + "backButton": { + "buttonRenderer": { + "command": { + "clickTrackingParams": "CBQQ8FsiEwjUtN-9ts2HAxXXw0IFHZeGAoY=", + "signalAction": { + "signal": "POPUP_BACK" + } + }, + "icon": { + "iconType": "BACK" + }, + "isDisabled": false, + "size": "SIZE_DEFAULT", + "style": "STYLE_DEFAULT", + "trackingParams": "CBQQ8FsiEwjUtN-9ts2HAxXXw0IFHZeGAoY=" + } + } + } + }, + "trackingParams": "CBMQ9sQLIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + }, + "popupType": "FULLSCREEN_OVERLAY" + } + }, + "title": { + "runs": [ + { + "text": "Ad Personalization Off" + } + ] + }, + "trackingParams": "CBIQp0wYASITCNS03722zYcDFdfDQgUdl4YChg==" + } + } + ] + } + }, + "header": { + "overlayPanelHeaderRenderer": { + "title": { + "runs": [ + { + "text": "About this ad" + } + ] + } + } + }, + "trackingParams": "CBAQ1MsHIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + }, + "backButton": { + "buttonRenderer": { + "command": { + "clickTrackingParams": "CBEQ8FsiEwjUtN-9ts2HAxXXw0IFHZeGAoY=", + "signalAction": { + "signal": "POPUP_BACK" + } + }, + "icon": { + "iconType": "DISMISSAL" + }, + "isDisabled": false, + "size": "SIZE_DEFAULT", + "style": "STYLE_DEFAULT", + "trackingParams": "CBEQ8FsiEwjUtN-9ts2HAxXXw0IFHZeGAoY=" + } + } + } + }, + "trackingParams": "CBAQ1MsHIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + }, + "popupType": "FULLSCREEN_OVERLAY" + } + }, + "optUnknownAction": { + "clickTrackingParams": "CAUQ8FsiEwjUtN-9ts2HAxXXw0IFHZeGAoY=", + "openPopupAction": { + "popup": { + "overlaySectionRenderer": { + "overlay": { + "overlayTwoPanelRenderer": { + "actionPanel": { + "overlayPanelRenderer": { + "content": { + "qrCodeRenderer": { + "command": { + "clickTrackingParams": "CAYQ1MsHIhMI1LTfvbbNhwMV18NCBR2XhgKG", + "entityUpdateCommand": { + "entityBatchUpdate": { + "mutations": [ + { + "entityKey": "EhZoS1pNbnFFdS15ckpUbGUwT29JZEx3IKQDKAE%3D", + "payload": { + "qrCodeEntity": { + "command": { + "clickTrackingParams": "CA8QpZsIIhMI1LTfvbbNhwMV18NCBR2XhgKG", + "feedbackEndpoint": { + "feedbackToken": "AB9zfpLOskntj7kkon_-ECKBaiImdA43sTWnKrT8JprhxyAVpeo77fXaUJgItyJh9E9y8UBcbQaCPzVZyAnsmGuQMrwcFaYGir0Rl7E2dBb_82HnHHISB3tsH89hFiZIRk3I0wiXyDn4vG8BUa8Y_cvJxndYJKPyoag_t83T7p8-oKrtXVq0BBYEF-2_-fOwTgIwvYcOtts15jmqDFyngpZ47KyT9LooMFG6v5mb9LZff3BkeU2aKj9HfMiY44bRQfiqqJMpxzT7dGYdovv_NYMxq4J5iJR4q9xuH4hx6jvuSWLsE05SMTnOxlJ21wESzMCHJotlPEd8eq6FAfNOhaPctTuui2ViedRL4-jswWgFPqak6KTzpDF1bxZC50m0rwnDx-42oB1jJ7a-RycRlwUyOpobg9qRu6ErV1V5FtVNj10-UcQS58uZxMlgua7JeJe7iBtG_td4nnChDWWQL5pzjXk1xigkIN4DuRc-1FqB2JwKqCXeTCXfhrRxudHg5iCz0AQxJxbQ88O_fO4l-iv3lTVWfLgKF1IgAz1hpMhpmwXyTBQbjtjn7UywzcY8Gv83w2qA6BFOkEFvpdFJjRXdwqWrGu4Tsxtj7LcrIxwuYWkAmrdUmPuOCHQtmIVdbDHtrqHlek4XFP4u7na7iDwVS1fcsh5nfdxKKSyR5oE235FXJkfAlzY10Qo5AFLs2-JezserZ6s_pQJi3eQ5VAT-1IL-NRBKwPnpzTIjsPUMvO9Qgc2u665ggb1lTJ71VL9H8vo2AX2rruwjwhPfCEPNSYV9cHNmvL1ZW6y0C-_HwRzA2eKqgnxsCLxvN0IZMpxaz6v7V5JFiL9UrYG_U-eCBjWzX2hLPJZoKAnI96xMU6ODOSdBWOFiGQPSiDKNaC9104UPH7-oki9Wwq06_wmIFN8DWd2W8wMJTp0x2RoRcg1xO7liNGX1iQ9yEqHmlFexQLRPeyBuKqLHowuzGK_NkeBmxphBfHVXQl6vJwy-IQA3Z8_-tCy_MnJMh8YtTI_C-R4uEabPJykVB5KQIR9zCEBFnG_0dU8aMMyC8l5_A88XAEJz4w8j1sMHL3BVQEExFZ-oR4vXgzk0KXa4L5fFEFsMwTld8qGsCqLOpVo-rKfa-_rjXtAayo5ZN0Cy7sIgS_JyaQ8m3r-NKONDlxil2qLCYdeS9TX0xp_Miw-cKOxbwdio4FQQhsDU-7sCbfhap2W8c-_MnvgSr22HmAVJKRmDxQ3_zPsiHvgBhMbx29pBJEqSsZrfVvz1HvK9rvrH4fRExushQTzvaiQlYQSyBST3dGcDj7BjbxK2pbTVOrdEEVwQ0wrrhYSjm2QRU0TqREulfo5qUqyeIljkp0GILjTx_0ptcHYcBEjEYGxfuwVvdCMzEJNU6uZtwWiCPC9Kk3iWMKPlOmQAao8esn8UitVd1OGEpIFw_PRmlmSKFonfvQ6kGc9d5ILkYbZFvQ_LkqpX1KVYv8yKqAt-jIdXe_89xbrfTMvBzpso3ReR-6ZK35B4W2XoJhpZ17AN5uvgKHDcxojJDNNA38LPN3eBk8bkcgwx0BVrUFsdXNXzTQkardedMBIb_lV-EfZFmXylQOeJmgzetYHyhPeihVWnvDjPDChxoRwynqEQNQM-NKVG2dwh3A7RNyfKB6yCq254oP0Zeivi6RYzfwxNrZ5YVSQHpgmPLOkUlxSM-R4K6USdkGAvGABaOQZ_yZZbw2TE5jcFAYBh_Qn9J10h4bjtyvs7bKlNJ_Sa1l-jT_DG7MfP6YQ7NML5mR9BA1NoLo5uH96dyHY_3DwO3ij88uG5ZRAXLzr-6JIM6Sw86e2sBE_58oZ_BpRh620_I0DpLkwMxYtCqyrlDeS7K9h9qrY0vI9py4F3miAmP73idXIPT3Ytt0a1GCunsY1dZwJLaA0HbTgmfNDsjC6V4YjDadSiqhW7fQZ8L6Ja_FiHTp-XlUrCfB1hVIm9f4XIW-pOgc1QtLvnh6Io0xRAlxzw9E1RqbO3vOKzSovMSnEzkoBMwlaj8v1QjHaIoyd9mh8ZHD-K2Pxxun4wBjFXjd9NmnYUGBhxIU8YhzHQJ-TytGqxYCWUNR__12uC5xHjBxx_TivjzKathppi5rWCXbrwTfRGyTk12XNA1qVDTVCquIOvUokpamdFi-23CXl8apj9-Q4dyewPFHxwvk3IsGqZEKOs_tuYiyvuVdW8fpekyG_MD7Ego-6ScTUiwMN7cCI0c_0w07pJsbp2w13AtR986XZu6AF_1CTjKi_5Ii3ssvqUmyuG6leaaDK7DBbeL2riz7H9X4DkBXSD1zXo3zzuXy5uv-HJu9AsXUb1xV8yFYJbaIDRhBC3Tcl0m-ZXBbzQBjXsvTDQ1MYRBkB66L0kiifojigeOXEGTwQwgvAGtEQYU4musOKdW-pYOmCo3ePpbyM6MPdLbYI_3o9WwDleUlzgV9wsTka09ZQDgylofYVA8HBRGDCaHSdVNqtRNmQ7nJ8W8ayt7cBT8m3HzE6FH5U_enyR2_6fYO_CQBVAC3wq1hf1QPOXWcE6P-6CPI0dZmKs0y2-OWvBwWifCB5nIebR1RGx9a_INZ3aOTEl5aLjsjBFJtOBI-U-T5-Yp8wjiMdr_olzxVtlJsIrpUm6pBkgCAO4IbrjmGQylIQwrX6VM1EhSb44PTSkX4131uSGBnfe27fXa1b5HCSa7mmbwNq619-e6COlgc4hrE12Dhy83W865kEvNApdujy1NzbxxBFGHa18e1BhUDGmGxWLmXPpBoIvdHVVazbOm4RowpW8tWKmR8Cu-qdKF7sQNdzH7Gr0OC4G49yDasnz2f9Avqv7AgMUt4o0MmL6okAVmmIxOHNjU2nFrxSYb_X7Z1_xXCWZKSRxr0MO82_m5tKZkDrSArjfa0vENy3YPRPrE4wtMIW1KB7JOzJ1SILaEJxOCV8HFrqNebwA" + } + }, + "deleteEntityOnDismiss": true, + "label": { + "runs": [ + { + "text": "Or, use your mobile device to scan the following QR code:" + } + ] + }, + "labels": [ + { + "runs": [ + { + "text": "For info about this ad and to manage your ad preferences, visit" + } + ] + }, + { + "runs": [ + { + "text": "Loading...", + "textColor": 4293651435 + } + ] + } + ], + "qrEntityKey": "EhZoS1pNbnFFdS15ckpUbGUwT29JZEx3IKQDKAE%3D", + "spinner": { + "delayMs": 200 + }, + "style": "QR_CODE_RENDERER_STYLE_ATA_SIDESHEET", + "trackingParams": "CA8QpZsIIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + }, + "type": "ENTITY_MUTATION_TYPE_REPLACE" + } + ] + } + } + }, + "deleteEntityOnDismiss": true, + "label": { + "runs": [ + { + "text": "Or, use your mobile device to scan the following QR code:" + } + ] + }, + "labels": [ + { + "runs": [ + { + "text": "For info about this ad and to manage your ad preferences, visit" + } + ] + }, + { + "runs": [ + { + "text": "Loading...", + "textColor": 4293651435 + } + ] + } + ], + "qrEntityKey": "EhZoS1pNbnFFdS15ckpUbGUwT29JZEx3IKQDKAE%3D", + "spinner": { + "delayMs": 200 + }, + "style": "QR_CODE_RENDERER_STYLE_ATA_SIDESHEET", + "trackingParams": "CAYQ1MsHIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + }, + "footer": { + "overlayPanelItemListRenderer": { + "items": [ + { + "compactLinkRenderer": { + "secondaryIcon": { + "iconType": "CHEVRON_RIGHT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CAgQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==", + "openPopupAction": { + "popup": { + "overlaySectionRenderer": { + "onOpenCommand": { + "adPingingEndpoint": { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=user_feedback_menu_interaction&cbt=Z2Nhs65hfpUI1fyA99kSEPKTx_BPGKawlJsDIg13d3cuYW1hem9uLmRlOKbfjdP55-qF1AFCF2NhLXB1Yi02MjE5ODExNzQ3MDQ5MzcxWFdgAKIBPgoLMUF1clA1cGpiNlkSC3BQdmQ4VXhtU2JRGiJhZnZfdXNlcl9pZF9ieHhFaS1JbVBsYkx4NUYtZkhldEVn" + }, + "clickTrackingParams": "CAkQ9sQLIhMI1LTfvbbNhwMV18NCBR2XhgKG" + }, + "overlay": { + "overlayTwoPanelRenderer": { + "actionPanel": { + "overlayPanelRenderer": { + "content": { + "overlayPanelItemListRenderer": { + "items": [ + { + "compactLinkRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CA4Qp0wYACITCNS03722zYcDFdfDQgUdl4YChg==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CA4Qp0wYACITCNS03722zYcDFdfDQgUdl4YChg==", + "signalAction": { + "signal": "CLOSE_POPUP" + } + }, + { + "adPingingEndpoint": { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=mute_survey_option&label_instance=2&cbt=Z2Nhs65hfpUI1fyA99kSEPKTx_BPGKawlJsDIg13d3cuYW1hem9uLmRlOKbfjdP55-qF1AFCF2NhLXB1Yi02MjE5ODExNzQ3MDQ5MzcxWFdgAKIBPgoLMUF1clA1cGpiNlkSC3BQdmQ4VXhtU2JRGiJhZnZfdXNlcl9pZF9ieHhFaS1JbVBsYkx4NUYtZkhldEVn" + }, + "clickTrackingParams": "CA4Qp0wYACITCNS03722zYcDFdfDQgUdl4YChg==" + }, + { + "adPingingEndpoint": { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=ad_block&label_instance=1&cbt=Z2Nhs65hfpUI1fyA99kSEPKTx_BPGKawlJsDIg13d3cuYW1hem9uLmRlOKbfjdP55-qF1AFCF2NhLXB1Yi02MjE5ODExNzQ3MDQ5MzcxWFdgAKIBPgoLMUF1clA1cGpiNlkSC3BQdmQ4VXhtU2JRGiJhZnZfdXNlcl9pZF9ieHhFaS1JbVBsYkx4NUYtZkhldEVn" + }, + "clickTrackingParams": "CA4Qp0wYACITCNS03722zYcDFdfDQgUdl4YChg==" + }, + { + "clickTrackingParams": "CA4Qp0wYACITCNS03722zYcDFdfDQgUdl4YChg==", + "muteAdEndpoint": { + "type": "SKIP" + } + }, + { + "clickTrackingParams": "CA4Qp0wYACITCNS03722zYcDFdfDQgUdl4YChg==", + "openPopupAction": { + "popup": { + "overlayMessageRenderer": { + "style": "OVERLAY_MESSAGE_STYLE_TOAST", + "title": { + "runs": [ + { + "text": "Thanks for the feedback!" + } + ] + } + } + }, + "popupType": "TOAST" + } + } + ] + } + }, + "title": { + "simpleText": "Repetitive" + }, + "trackingParams": "CA4Qp0wYACITCNS03722zYcDFdfDQgUdl4YChg==" + } + }, + { + "compactLinkRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CA0Qp0wYASITCNS03722zYcDFdfDQgUdl4YChg==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CA0Qp0wYASITCNS03722zYcDFdfDQgUdl4YChg==", + "signalAction": { + "signal": "CLOSE_POPUP" + } + }, + { + "adPingingEndpoint": { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=mute_survey_option&label_instance=8&cbt=Z2Nhs65hfpUI1fyA99kSEPKTx_BPGKawlJsDIg13d3cuYW1hem9uLmRlOKbfjdP55-qF1AFCF2NhLXB1Yi02MjE5ODExNzQ3MDQ5MzcxWFdgAKIBPgoLMUF1clA1cGpiNlkSC3BQdmQ4VXhtU2JRGiJhZnZfdXNlcl9pZF9ieHhFaS1JbVBsYkx4NUYtZkhldEVn" + }, + "clickTrackingParams": "CA0Qp0wYASITCNS03722zYcDFdfDQgUdl4YChg==" + }, + { + "adPingingEndpoint": { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=ad_block&label_instance=1&cbt=Z2Nhs65hfpUI1fyA99kSEPKTx_BPGKawlJsDIg13d3cuYW1hem9uLmRlOKbfjdP55-qF1AFCF2NhLXB1Yi02MjE5ODExNzQ3MDQ5MzcxWFdgAKIBPgoLMUF1clA1cGpiNlkSC3BQdmQ4VXhtU2JRGiJhZnZfdXNlcl9pZF9ieHhFaS1JbVBsYkx4NUYtZkhldEVn" + }, + "clickTrackingParams": "CA0Qp0wYASITCNS03722zYcDFdfDQgUdl4YChg==" + }, + { + "clickTrackingParams": "CA0Qp0wYASITCNS03722zYcDFdfDQgUdl4YChg==", + "muteAdEndpoint": { + "type": "SKIP" + } + }, + { + "clickTrackingParams": "CA0Qp0wYASITCNS03722zYcDFdfDQgUdl4YChg==", + "openPopupAction": { + "popup": { + "overlayMessageRenderer": { + "style": "OVERLAY_MESSAGE_STYLE_TOAST", + "title": { + "runs": [ + { + "text": "Thanks for the feedback!" + } + ] + } + } + }, + "popupType": "TOAST" + } + } + ] + } + }, + "title": { + "simpleText": "Inappropriate" + }, + "trackingParams": "CA0Qp0wYASITCNS03722zYcDFdfDQgUdl4YChg==" + } + }, + { + "compactLinkRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CAwQp0wYAiITCNS03722zYcDFdfDQgUdl4YChg==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CAwQp0wYAiITCNS03722zYcDFdfDQgUdl4YChg==", + "signalAction": { + "signal": "CLOSE_POPUP" + } + }, + { + "adPingingEndpoint": { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=mute_survey_option&label_instance=7&cbt=Z2Nhs65hfpUI1fyA99kSEPKTx_BPGKawlJsDIg13d3cuYW1hem9uLmRlOKbfjdP55-qF1AFCF2NhLXB1Yi02MjE5ODExNzQ3MDQ5MzcxWFdgAKIBPgoLMUF1clA1cGpiNlkSC3BQdmQ4VXhtU2JRGiJhZnZfdXNlcl9pZF9ieHhFaS1JbVBsYkx4NUYtZkhldEVn" + }, + "clickTrackingParams": "CAwQp0wYAiITCNS03722zYcDFdfDQgUdl4YChg==" + }, + { + "adPingingEndpoint": { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=ad_block&label_instance=1&cbt=Z2Nhs65hfpUI1fyA99kSEPKTx_BPGKawlJsDIg13d3cuYW1hem9uLmRlOKbfjdP55-qF1AFCF2NhLXB1Yi02MjE5ODExNzQ3MDQ5MzcxWFdgAKIBPgoLMUF1clA1cGpiNlkSC3BQdmQ4VXhtU2JRGiJhZnZfdXNlcl9pZF9ieHhFaS1JbVBsYkx4NUYtZkhldEVn" + }, + "clickTrackingParams": "CAwQp0wYAiITCNS03722zYcDFdfDQgUdl4YChg==" + }, + { + "clickTrackingParams": "CAwQp0wYAiITCNS03722zYcDFdfDQgUdl4YChg==", + "muteAdEndpoint": { + "type": "SKIP" + } + }, + { + "clickTrackingParams": "CAwQp0wYAiITCNS03722zYcDFdfDQgUdl4YChg==", + "openPopupAction": { + "popup": { + "overlayMessageRenderer": { + "style": "OVERLAY_MESSAGE_STYLE_TOAST", + "title": { + "runs": [ + { + "text": "Thanks for the feedback!" + } + ] + } + } + }, + "popupType": "TOAST" + } + } + ] + } + }, + "title": { + "simpleText": "Irrelevant" + }, + "trackingParams": "CAwQp0wYAiITCNS03722zYcDFdfDQgUdl4YChg==" + } + }, + { + "compactLinkRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CAsQp0wYAyITCNS03722zYcDFdfDQgUdl4YChg==", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CAsQp0wYAyITCNS03722zYcDFdfDQgUdl4YChg==", + "signalAction": { + "signal": "CLOSE_POPUP" + } + }, + { + "adPingingEndpoint": { + "baseUrl": "https://www.youtube.com/pagead/interaction/?ai=CDidjviioZoTYLOLZhcIPwJy--Avwt-LmeNX8gPfZErCQHxABIABglYKAgJgHggEXY2EtcHViLTYyMTk4MTE3NDcwNDkzNzGgAYykkrkoqQJzIH7huieyPqgDBKoEmwNP0EGoGWEpdjDmM8xKVoTi04kDlHylF_SyQJiUHkaEfiQMeHWFt9bWC0eJM9U2mX-oIwp1eBB98UPX8RyDe7dp-yhOvveIcQb4uPrropnLvbpGlr1N9pT0ygG0AJZwscfLv159UiWMpn3mXFZ3JCOEnMbgUXxTDWB24dBFt279OMjiQ7oNd3mPI3ECmOVPPia98pmnpXUijx-H0ptsSXfkjDoOwlahe3kcOyXrbvXFfg82qGDBm7xdsXzNpAMKNZ62VdRmiFDwf266EANxd7zLJ6mpD3Gl0bVOULdRPwQGEi3KXDoRyMU-phqGcnpU6UBp3pjLQk_nQ5UX4osKBvQl9bIJGLlFIeqagEaUcgdU3ZelTkgTFbtsVITDGN8ONaZ39H8YJaDtR-9KY-eglAhz43oJCynVuwEFaP2F1Si8VKnOD_xxQinZCsYL6wvjCV9F9LmvNI3Ekrvc0bqSTGowUUSB1HLhFCYLyGqQuAhdbkzTW3EW96OuvvWDxk1iwdEatpbc6TrrahvL105_qJvrM27b5xV3oMBMEVGgBlfYBgWAB4zc4pgDkAcEqAfrtrECqAf5sbECqAeAurECqAfnnbECqAfonbECqAfqt7ECqAentbECqAfvtbECqAfwtbECqAeCqrECqAeECKgHqNIbqAe2B6gHpJqxAqgHkZ-xAqgHsJuxAqgHrrGxAqgH5ryxAqgHpqqxAqgH5rexAqgHyrqxAqgH7MCxAqgH_bKxAqgH97ixAqgH-LixAqgH28WxAqgHgcYbqAf8r7ECqAfj2RuSCAsxQXVyUDVwamI2WdIIMAiAwYAQEAEYXjIHooKA4J-ADToMgMKAgIAQgICAgIAQSNmg0jVQFFjw_uC9ts2HA_IIH2NhLXl0LWhvc3QtcHViLTkzNDgxMDU2MDU1MzUzMzTICRnICbEBoQvBWjQfvvDkULoLPQgBEAEYBiACKAEwEEAHSAFgAGgAcAGIAQCYAQGiARIKABgAIABYAWAAcAGoAgTYAgGoAQHYAQOAAgGIAgewE7vdtxi4E____________wGwFAHAFYmAgECQFgGoFgGKFxgIAxgBIAEoATABOAFAAUgBUAFYAWACcAGgFwG6FwQoADAA&sigh=8EP4qP0LBbE&cid=CAASFeRo03wcfAXymZfqGaKXSiQY0VnmWg&label=ad_block&label_instance=1&cbt=Z2Nhs65hfpUI1fyA99kSEPKTx_BPGKawlJsDIg13d3cuYW1hem9uLmRlOKbfjdP55-qF1AFCF2NhLXB1Yi02MjE5ODExNzQ3MDQ5MzcxWFdgAKIBPgoLMUF1clA1cGpiNlkSC3BQdmQ4VXhtU2JRGiJhZnZfdXNlcl9pZF9ieHhFaS1JbVBsYkx4NUYtZkhldEVn" + }, + "clickTrackingParams": "CAsQp0wYAyITCNS03722zYcDFdfDQgUdl4YChg==" + }, + { + "clickTrackingParams": "CAsQp0wYAyITCNS03722zYcDFdfDQgUdl4YChg==", + "muteAdEndpoint": { + "type": "SKIP" + } + } + ] + } + }, + "title": { + "runs": [ + { + "text": "Return to video" + } + ] + }, + "trackingParams": "CAsQp0wYAyITCNS03722zYcDFdfDQgUdl4YChg==" + } + } + ], + "selectedIndex": 3 + } + }, + "header": { + "overlayPanelHeaderRenderer": { + "subtitle": { + "runs": [ + { + "text": "What was wrong with this ad?" + } + ] + }, + "title": { + "runs": [ + { + "text": "Stop seeing this ad" + } + ] + } + } + }, + "trackingParams": "CAkQ9sQLIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + }, + "backButton": { + "buttonRenderer": { + "command": { + "clickTrackingParams": "CAoQ8FsiEwjUtN-9ts2HAxXXw0IFHZeGAoY=", + "signalAction": { + "signal": "POPUP_BACK" + } + }, + "icon": { + "iconType": "BACK" + }, + "isDisabled": false, + "size": "SIZE_DEFAULT", + "style": "STYLE_DEFAULT", + "trackingParams": "CAoQ8FsiEwjUtN-9ts2HAxXXw0IFHZeGAoY=" + } + } + } + }, + "trackingParams": "CAkQ9sQLIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + }, + "popupType": "FULLSCREEN_OVERLAY" + } + }, + "title": { + "runs": [ + { + "text": "Stop seeing this ad" + } + ] + }, + "trackingParams": "CAgQp0wYACITCNS03722zYcDFdfDQgUdl4YChg==" + } + } + ] + } + }, + "header": { + "overlayPanelHeaderRenderer": { + "title": { + "runs": [ + { + "text": "About this ad" + } + ] + } + } + }, + "trackingParams": "CAYQ1MsHIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + }, + "backButton": { + "buttonRenderer": { + "command": { + "clickTrackingParams": "CAcQ8FsiEwjUtN-9ts2HAxXXw0IFHZeGAoY=", + "signalAction": { + "signal": "POPUP_BACK" + } + }, + "icon": { + "iconType": "DISMISSAL" + }, + "isDisabled": false, + "size": "SIZE_DEFAULT", + "style": "STYLE_DEFAULT", + "trackingParams": "CAcQ8FsiEwjUtN-9ts2HAxXXw0IFHZeGAoY=" + } + } + } + }, + "trackingParams": "CAYQ1MsHIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + }, + "popupType": "FULLSCREEN_OVERLAY" + } + } + }, + "clickTrackingParams": "CAUQ8FsiEwjUtN-9ts2HAxXXw0IFHZeGAoY=" + }, + "icon": { + "iconType": "INFO_OUTLINE" + }, + "isDisabled": false, + "size": "SIZE_DEFAULT", + "style": "STYLE_UNKNOWN", + "trackingParams": "CAUQ8FsiEwjUtN-9ts2HAxXXw0IFHZeGAoY=" + } + }, + "hoverText": { + "simpleText": "About this ad" + }, + "trackingParams": "CAQQs-4CIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + }, + "adLayoutLoggingData": { + "serializedAdServingDataEntry": "IBAwAjgGShMIhK_hvbbNhwMV4mxBAh1Ajg-_UgYQAUgBWAFoAXAY" + }, + "elementId": "bj8kp31ew2buiJZs", + "inPlayerLayoutId": "bj8kp31ew2buiJZs", + "skipAdTimerRenderer": { + "skipAdTimerRenderer": { + "expApplyUiIterationForTvaeUiOnLr": false, + "firstForcedWatchTimeMs": "15000", + "firstForcedWatchTimeRemainingMs": "15000", + "forcedWatchTimeRemainingMs": "15000", + "skippableWatchTimeMs": "0", + "skippableWatchTimeRemainingMs": "0", + "templatedCountdown": { + "simpleText": "{FORMATTED_AD_DURATION_REMAINING}" + }, + "trackingParams": "CAMQneoLIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + }, + "skipOrPreviewRenderer": { + "adPreviewRenderer": { + "staticPreview": { + "isTemplated": false, + "text": "Video plays soon", + "trackingParams": "CC4Q9_cBIhMI1LTfvbbNhwMV18NCBR2XhgKG" + }, + "thumbnail": { + "thumbnail": { + "thumbnails": [ + { + "height": 180, + "url": "https://i.ytimg.com/vi/pPvd8UxmSbQ/mqdefault.jpg", + "width": 320 + } + ] + }, + "trackingParams": "CC4Q9_cBIhMI1LTfvbbNhwMV18NCBR2XhgKG" + }, + "trackingParams": "CC4Q9_cBIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + }, + "trackingParams": "CAIQ-PcBIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + } + } + } + }, + "slotEntryTrigger": { + "id": "67c0ba8f-0000-2697-a1b9-14223bb5ae26", + "layoutIdEnteredTrigger": { + "triggeringLayoutId": "qLYvxrzZ3iSfwRkS" + } + }, + "slotExpirationTriggers": [ + { + "id": "67c0ba91-0000-2697-a1b9-14223bb5ae26", + "slotIdExitedTrigger": { + "triggeringSlotId": "ymgQczejF3bFu5ee" + } + }, + { + "id": "67c0ba92-0000-2697-a1b9-14223bb5ae26", + "onNewPlaybackAfterContentVideoIdTrigger": {} + } + ], + "slotFulfillmentTriggers": [ + { + "id": "67c0ba90-0000-2697-a1b9-14223bb5ae26", + "slotIdEnteredTrigger": { + "triggeringSlotId": "ymgQczejF3bFu5ee" + } + } + ], + "trackingParams": "CAEQzOgNGAIiEwjUtN-9ts2HAxXXw0IFHZeGAoY=" + } + } + ], + "attestation": { + "playerAttestationRenderer": { + "botguardData": { + "interpreterSafeUrl": { + "privateDoNotAccessOrElseTrustedResourceUrlWrappedValue": "//www.google.com/js/th/1AiCzlAXOvKBjKQ6-ZkwShm4tpQuZWMhqjO5xqGcWBk.js" + }, + "program": "RgKUIavq8QiEgBxAnGzXLRpQGr83eIYUMq4yukxq6W0DjM+jHMhvhLW7w9eEq0xhfggpGnM63xmIj9QM/1Hm8jHNi67iKgWZXMsd9Nn+7FJNs5HdMVDLCgoOI2Hok+lFf8tmoimUT8H3yeStMknJGYXIA/Kz202E6iGuuNk2r4vvlXDRM12YeXsvnXsBes1jd1XyJwQ9p9nIyG8WAHGiQSL5ZrTkP7QtBk0+RBso50MCde2AqsbA85FtNd+Vcd7kStAb5EsElDl9lnqN+zc65m79u7jR7KKqd47ECOHnBrElZ3gdhoa0n7MaqQ95CRjbY44SR9fkH7DfbG3W1wmksR1PkqgyCZWAzMdC9oH9TzbAStBlZxNeB/xPG202EQkOza9EWU7oM+S069RA7yfRjqHJxHOXMaB2lGsR/yXCK+DD1d7VccQeIteZ7Ura5BNFoOvBrqlYuBhx2RCrWuDBrPygTKzoSB4cmMZwY+Xtr0QEltpnb6rh336x6Zfzb6Vkl74wEGxpprA1+oNYmb36qRjXLWprcnljsUp1WtnCJ2Re5GA72JK29L9WB/AakiA/H6jlDMf5XTruirjYOhaPA8ZUj0uxOdcHUM8L/3pCshL9wxA9ujix7K+eSZq9be4Au6lnLquOOE0O/EvoUD4wY+5jEsm8n2Jh7axYJUhpE6QY2gmVwD+DrL3a6sPT9/J3xd/3xOWKkEcbrVIp9DSfmQcprqBRyUBaJ+5CoaHeaD9XBTDsorp6u5SQLMdERnz0bhXwwF83WS6f2RmvGsPI1uHHoy2fd9dNCzw7hIA7tLdCY/8duCjOKrflWRYqz2g/ojv70nrz4Cut/fp0r1kc1ZmNjo2Pgr+78yXLQwcLAZ3HtUk0/pld3W6P7DizmGMXTXkRAE/DXFn7RhZXPMsQDcJhFszuSSnJPBgtUJZca0dW1caxhYejddwKJR36mXDmJMi/MLdU/kxXZk9wHZpX5coEYYff4bWYLC6sSYGdQzpUaChJ4XODvWQUlZkCBaGhGs8iBJBbU5mCD36IdNYao3sx2SPMc5HgjoBzzzgqUmS1oC69J0oqtxKeThI6qsydI0LJWmRset8UHFSRqpreWkMOFzgtlqo8ywgHI62wY8lx+ZwoUwOiXVEXEiA8ciu/EDoFuTybsM1OdAGB1FlXCiowE+5h6uGLHARgr6crmtW8zTTkKAd26uufoYDL3M27iYvX2RpyFYqgXQnq02LnxqMCWlLF6Bq/S/UyggVl26HhUtmVvHeJ2/zsX4tF9RRpqHD2pez9T7dwjQYgpDvwq07zTypcooY2rtqsceO1sbeGW17lPZcT6xkK31ngBWkwHKmQHP8f8N6Jl85+C1G7yaUxrrEBuF/1tWMfWB+kLkgwfx3yC588h7TZscyzM0q37wseLaOT7CgYwh3l09s+2NhRtnMFldGdqxBq5nUt0QCnp7xhP+QMbS03XCRgkL4PqmU3QQ9uHFFnHRa91MgUcs/AjoEzgJshw3lMBIV0l+fWmbvbXRuUC7Z7W4C2Dmm/LyVE08FHCgBcI92KYaG2OgStvc0SU3N4sdD+57UgAGPyj0gG2ImrIG7bN34105fryMVFzDi06Exd/utvhPhyGJ2OWFjzm9f/XoYGsG9wXxWFFwH24tlCKhrpXV0gRcy3QFv60LmtoixSt7zX/xOSdS0md7kQBLveOpIcapZezUv2Bg25TTkRPuMCWvkaaFWgtBddkWSbxojY0RFWTG+bVn/cvbhrWHNWMXPw8xyrHbAAaD7KmSX6AMLXZxfQCmkzCcm4ih6CLP3lpvEli/pz+Y/+I7aSkR2XJRYmtTGwtHL70p7ImQyEIGXgf4cHj9fHJ67jkjVPhhfH33pTowyLJ0sMfgAXllBm57Wyu82zlDVfLPLgDyjbPfGekJV0HHPGYqB98BESWI/soiKh7zV4QX85T04ComaR4cMYmo1A7ceNdR0iucnxYCtGzUKz8XZkYJu7KzRuaI33Ruq2ppjb83jnEj4+jRbvWD9oCOppcJOXLJvZW4KlwKL29pH2/wGMW8ehTYH9tVmevXPgOzp+BV1ABZLavel1ciQ3xWXqfTuqjwf1+knu6HQyHKNoz0A3UkQePzXTFn6mc28e4KkUrf6MeWAS/YMgjYdDXp/oSKkF3B29o8Ye2oz2ZMJLnxPRPZhL/0/niMlCQaIVETaawMBhmA/Mss+1EQTOHIcRAf+bsginOGmJ+XyPdVhawmpNbUXePoGDInDgAIC0BbqYAzmXDocAy66mWoh0hUyNrDeTBZVLJYUHXT76wbSbQOq4n1yH5Mp3ewq9fUQhXskXZiG3bwPCgfQng6dFFWAqRskwrRh0AmYuEdYRpzLsIjdIVFEZ3BOfRrxRblwD+/mdrt29oxQ+ySGWfcSYZqVONebJ9f6E6KQ27w+UPbQmkb9EWK013Ie4x/kW9/B/HkSEd57r6+OKy2q6wsf6yWEttrVvRanS5n1U9hT0MbnRniSs4R5suflq6O3RXWwg/6yBzQb+vlpVM1lh2XYiBq89TFvI80PaVuFaChgueKviqvexsxkOQKs57ho2PrOjT6U2DIR5R9h4dsqeePbA3wWjprbOOQSpHgFh5VHuwAEO7q6xv0Qzqxx/tTSkraX9Hit0usNFwgFExFxIPQqEDOwaUD8uARxyddxC7u/NMz6MpLfJCz9ziH/2bRNxmuzsk9oNq2NM2s8dLoQIBnNH1vIQtVFHbIFl2SLaGGtMmJPgjVS2C0KqHNzVHxEA870XgcNSIhUnPKFFOn+NhWg4RGNyxEc4EWufi4Kje3nMgSr81ZJJc7aP7oIfYreguSLK6FYDTAW4kbifDaplzeo7dkCcg8SPtWNQ7RNJiH7MW9bN+m55oBraEzwei28+LSUiQCpzYOhW0KpgANcFBL7r7vbQfVJyv18qGQGuMEGINn466MrJEgBmNbwNM3SHAwtwye8C+qk2ZYeQzcBQI64ImK/IEl0eur9SZGnwm4VmMplG3vjY2Y8s808lLHaiSh12LcSJWtUReMcDT0e6xSys//u0luFu9Dv2RFy2yK6TpmZH65SR3f0X2lJAgMPnCQhJ8ntny8/e/qTqE0d4L3+DU0802oKVXlbc741qif9xxMzyl+cU+VwV9h0pjumAARzQWHHIIPZZXxajm2+za7p9JsXzBYrT6mBl6TZ/HqB9eD3JuFcNlflrZE/Bej+EOrS2nDBYWvLV43I/tNOQywjEqSF+v3RJ79rWELj4S+pXfhWOZSeFoz2MYx0oPtnyyp2jsZdvY9wh5ZbJPmUkdcGKjFkP7Qzf2BS5YqNZH9f8NykXjXMNGZg0Zi0lwZlradsJJ14A2BjajFSjIH4yV1KX4I91GaV04vYsVSQDq2WVrUxlmatV9buQtj+Oqm3fFX2oViFl0YGTuZGMk9nZuAuz9JE34VaaxNMMG3AsNzbuPE14pEJUPyTrmRojzklNddY+8KkvNBLQpXilIIgy9aMTADOWh2I/TneAti9p0WdC7Pvau8oyDXdeg97buHYYO8yB8tYndA2Ap652zzCwIGwtefCTcn5krL6EIZkd0RCCbVYdH+XaiFD9w99N65Cde7Plhh/LZ2FRvjJSdhVbgPEW6TTp87+Vskx3kBnQt2kMx7PkO6/pQdOheFlc6jf44vFyqCvu9fm8M6xGqwuE3q2PcPL7IAmvKglX3Ep+y0zBb6iI+LURUzTSVR7qtqHHmk4PUOHyaU8NB2FDSlOn3nWjEzZhuSWLyRmZ0jJFnu+dF/W8CL8D4PGZdanErlN2t9Iu2S1UBBt7T80hpHLSoiMKPwRiaLtaWyw/9DFdTQbi9ndhh9bny9YjxsEVtFTGtZ+fRKSTexfpnQWdMl93l7Pg2pvFEXnB400TvGrPkW6b5NDvQrhisDZmkZcZXQwpogMumHn/sFkIej7E7jx0B24ExmZUCqelGhqNQp7h73aDc46UK4ZLeBZ5Zk7axW62t7XpOZgeenb3ffV2OP3yHEozTiQtmOzT/GyL3YmQ5K4dWk6z24bpaCALgQRT90+RX4sukvbcjQP2k5s2yylvVf52bJHvjZTXZX4y2EsAivX2Ylu+q7EpIoNXauMAtuQhQ82B0k+E99iJV9iD2EwQfxahFv4k5tnVaS43aRtw699j/szSJj/QJJ5AjbOULOAQh7Ao94iyIAGGgeLTjvvyxw5/5jFdSPpr1WswuLMPAY85Z/Vf5710U0EoWns3mwdbzMjBH5whgRhq3dQqErIbPRpcovhBYF7bDRa6B1VQ3A6xvRoMOMZBx7Qs/nb/GcDvhEjnVlQAIk7ThupeXqo7jwxKLpRV7uhe5QeL3oUj4qD5pdrvNwx+II/83BakmVX/+WMBPnqqCkSM6AqogWNDP4GPbTawo4HSWNOBCkqdsv6QR8Zz6EpWtoiwCpCG+t+Fin76UtHcrEv7emUptcRrS/vV/zCc9hCEO2mvKwAe+psyoyd8DfJ4c/TyBsVhFWEIApOOTnwsBpKhW4+OtT28Ei9C/bF+XjIGRgekQFGLmUW6P3rwBhB7ml6X08lC9IPavEV7cxxHDswLPN+oE2rLdNJNZl/KkR04l6VQHiSMjrn5Y3pcEHH158ffAyZtM780yQwJzqecG6dGqOZIIYcRuuGARqnPU6AXg2BsknZYNyc+Zo5EEBEMdy1kpLOqY9pdX8F7qlAgXi2MClnyuKW9KzNC3vhR0tGzgENBiXsnPhtjslzPUGzbtgM7cvCFW/vJ+yM+zncFJt+M8NU5VHuUVrOtgMgnQCoW4YrH8w3AmjpEyHlfdiAE0dRaNif43125nsRW7xlY58z11v2mCbknMbYzsVSqrIHdj9MjPqQQCjxb0YS/ZmFAiWsQ+sw7LjVKvCI+CRaDRBBye5AtdG0l9vZ+Ymfq4FxPf2qGFzICMGsaBu5A2wxe3mNRLabj0mN02ID18KhbZ1EXYsw+nAglpQbkVB4EcVGhyUEnvAa6El1Fz7YxUy6cRCITNGx3qwFyKVmcxwIRDECYDQ31Plgqo4e5AKgqWtCDqwkzAnPtzDFbTeI6xEbXWqSFrOdz0ZHRre4zWOD+3fyTDofhcUGNb2WQfZUicBOts/27JNx1R8VvBuGwGcBQ5oNC7OjFkmL1+6cVUk3OtudGIvrG7bIGgeTQkMq85gabjXeOxjJSDrp1UqpA2bBf2d5VyQ1lPb19thjBP9UiZkfINlVnYJojYY8PlbNWftpDHDpsRoL8YOIVjlxEakHZty8i1xYA4ho+OyrM7Xvb6ACgqLVCPvlZ66SggEtD+pYTGX3dDr9ffPDi5IijDl4sBWapwldR+b0duW1ZvZzDe+eFI2grN3n+hFvNqZs1yAVVb5u8yyXuNar8YknSLCbesbCD3ipa1AzVWw8EnrfgXkuvDS7fBQLqkZp5gB9awHx4mpvfPkqlS9lC6XbEnF8uEjauJ4m/ML8lni/VC8B1eMybkBj1pjrVfThjVgnhqBWzfRBV604Zcmx0R7y2nsf80akH76S2+6DrseSHIRPuoabr5QenEDT0IIHbNat0vd2ed3fTxGwFXi3E1q3HpBOuF6/anlgdYhaxoEJnuPW332lGONRG2GsHaGD3YYBVjaqKAsV4qOWHo3FlSDz6u2FcQ5ZyvUYsWC3wgl4b9EdU3ZXRrDajvgSsG0HieKPLrwUvNINmv+VpbEQkbKtkd6vx3zNWPDWLYXq9Ioex1+bn77aqSiUAL8JLctmcWuYxUwD19RyxTXfUnYIdJ+U3Y0pK9KbjFRJt+RF+bCZfEcO6g0uTtQ7rkw3Q7kmv3gdrMuvvtrMcrhqMz/ZcWL0t45BqYR3amG6PtGHaxXw9LfaueXKEW3zlM2t70F6Bj/m+ZV3SYdxLsAJwaowpEQefeBguW7GJVgOwRPDL4WeHARUh3OaACcPxXAWu5reoHUdsbMttCEr0NbSHe1krqMulrRyXSD+3P7qU2nkJGHBdX7MxGXYZn8ym3jFm28gT4uqaR2oU/Oq9Ji985MnfuYrO2KVmXeL+R8bGOpmSzBb+JPy3ODnvx+xdrrE9FLyvCZKfyksQE8iLzaqMiH97XQl/gJIj64p3TAWrnA+svJDv5vY65CYlVfJoakgnI4xS/qqm38rT+w/0YN4PDeatjMoUQeZcN+6qtGfMv5d+EUJDIvf0WycfGpBVne4HHh5ow22ymccuDY6DU0r2CwipEPizNCpkVJOliX4Bfd7Oj0d724+KPnZnsqdtI2i27FEpJtcfbGIv+k36c/tjh3iMvRQVUHnbuW47OBlvRKRj42XxZhvx2MOQ/nNVHPY+7jwOrsX2klH/uE1oDxbVaQ401WKPCQjOZMmsGEtmzAm4eZQhRQq5nGqHJNQmTBa1TpcaLSIPg6+HdASDj6epSBnw/Q1J/2+NS/pzQU+egt0hbPfCR2qKZNmf78hKmlJbOpN0LN5F81qiz6pjwDQxtpUqjlOOuHsOsOGxbylrClytun0l6PBk4BCstwEerXx05fPrqG6Nxq7EL9S9cbIvPX8Hdfi2jERiwDKf5SGqBOWpoI5IvYvqSh7OccQw+5G4cP9x+xma8uKdKOYgd51OqZdzroELqjqUxZenCdtA2sX9CYSP95dQPBKOem5MccuDyCeBYE5alq13j2zlYAYGATvFWXNmlFIdkdxMXKgaVdVZCCwtj95uHIlRfGjaFJQpX7s6RWyCOWjDxOnaE7wmS6KNw2SjOCcH8bCDUe0xPmqkZIu/95RwaXcaEUoQ7bARkCZQQXIGWCMuWoNjB+Syqioesvq9chxL57QtYg5o4BTinNTymd3Bc+lRIozR/PYD95GfAJTuY3uh2dVkDfCJ/rcWx9vcYsVC9NX5eeEJ3v03cZXAP5xBH1vMxyL/Zqgy2I56Qxam+zB/o8OtPZWlouwWQi1uWfLBm/l+bLzTlKApUFal5S/DRQzxkcxw8haWjAIT7cBbaKfhiieiDanUIrisdJea9lvoGuGCxRN2mvSx/rOqEUvdNo+CLbJKtr7jVJbmbaLDV1q3inKO+Hubej9YvwNx2BvwINi9a7A4ylL1XQlOIbBuCBcIYkj+CxS33hwGcFRoq5/RYf02CanaIlBRdlixtGiPoHCRCufbEZxWEVlmvaVJ/jQcHTWU13PSRtsIN+dCBGSX3ZPMlb9TVjSXWzqG6j0XX1LxPPLABR25Ibk1XuUD3w/fAJkniVoM6wUdH+6Jxsz0OTpSpwNOiMlBB64Xi1n+tfDMWA5cOFS9+ZDtdoNQ9+t4DzCratnC8qzaLwfib7v3VybZ8u6mBkgAV+vi7gEwFkyKp3ggVcBrPqYRPSZ2bjaKFihhMed/nJrZxqRC44sHXGsv1jT+j8mrL2udAh0hxlAEFesR9FIwT8MfQ4m2j9bMzjezvE27BM/FsJEGpWZQYztFmSQZg5PYJtgiWgfHqNXCXAnBj7aXlkrWd46CX7JQfUlredxFs4oxn/PMARhC5Y4Q7sBOsmMm4/BXiCc7DMD2BIkJmEiM05NQUCUGNXzcXBPX1PBUuALODdTuKpw4bXBnSerstXVeowBlVGmfkcXtR3h1IUfhw7JMtzy0ud+uyYZJEwTKJTp3pT6pLDtrAIdTU2ZrblX6/EYudPb5Yyaa4YMw9KfOnI0SdlPFWPABqbkbuFXxhVMjD5BOhad2/YkZp56o9HgbB+xQrlGls8zXe7bisBvJMz6K4W63jxYfRPBpNDXi4JlfzlPFdddVrwaz6cD/nSTMnXVkU1PSP3Wk+DWEhF8f9h5IJHfzYyVy3321cA+wV0PJ0jA6C8bbZQWqzPH7usROlvaSJG5HwyHHmwuwauVdDPk0Y5EfilTSDVRFvRKiT8rUS2DNkkO6LaPThxe4ONdcFlXtIggH6CU44ceb8agYM86S8QQqLVi/glsIfBPTKW0sw1YBOB8q29PcHgrqITCpXi/xkcjPc8ITINHp6AUwB/9MLBcGS7XAGpPmsblG34qN4foEoctH0OUAbsX7wZe8Xqf2g402xbivENmyxNepk6ymws9GDEcNG39mQFgN0Sh5Edeq3w7yE3sjHZlYdIWfjTe3c3IHakFwQnDGQ/p2PrOXv7AvgfytnScX6bQoiQoLwJURDWp0+zSb9L9ll1C4c59Toy9IVCmMn10X5dwPRzNc425q01LrV//j4u/4w76/aNNdcQyf4/KQ0XHx+fvT6H+SaLXZX7Fkl3Ut87XXEaWWFuKO+uQkIgkWqgyGyCi+079HHrTuxZtHjpyHpyQXot+CK4XezmVeZ0/NBQk1F+mSvS6o8IylubPOvjs0Vd0fDmKMvzvWlIKTeu4E7ThvIRY0pCW4kIr15IPEnj60nr9+DAH8xz2ccRZdWyvZLgVa2JYhlJ8VM/foSwWO0neH03QNmKYCxfAUpuH+L6rtlZ9xNDd4mOHtx6O8ODq79CTkGDYhG7GLUwos78SDZ9scQoJjyIqA6UtudDh5E6bq927SFd/4fxYlLZUD4j7Iom7u/pPfhIqcjIwRtYT0whInBe9aQxz3D2gxLZpx5KnUACGr54RbaSPoFDZMWBlav4dnQoJKyuMVp/2OAxkc7Gh4Y+yeEHXD7qkfTGW1KgWPL06PreX3ClNWWjWP0Y95++pIPlEYRMpkRZstLm1B6FnMoIPbxGp5VnoNjeP6DS4Dcj/AOuuaBBOUDvxOnXug/n6afcOfhmwo9o08++CyWZolKpmS9YIf2Qpt2FDHcAbchT34F/zxgpL+sNNWOjgg6pYr+8PVBmA1XT1hVmNWghWuHHA+SfyAyJ+YdCpBXLClK2h+DbK3qV2KhZyZiP84zL+xhFCz0VCEOJF7sjHRJC+uaRZGutPjdifDIBWERTNnQ3c7HVdZ3L8Rn44sfGpPzD+AFwZKqjKr8uof+JvOqEuXfhoEfl9LlH0XFuRYf/RVAZuQfhCUSkdEJ98P+FaDodwAOai2FHHkze9YtkwrTEF8roKw0Xp7duLPntkFne+rM30PcaBG40E6OFgWQRzBKg54uA/hcQLrJb1SiTdrjhEDlWeKZQAl1xSmCk6mDOxG1xlq7xUC6+BB5NPWJzu5YJ9YSzBhITzPpeoTthWneK30HAVjAFSefwT1QajHB5P6z2dwIcSS/pjy7LlJ9hOJBmlXoot9P01/Gvw4ng+OAckwS+G9ebBvtvRfjw0L58StIl+NJJ5iSKm3UNET1khF+ow6DCOYhOvHXUqpFTiUSNZcMY/TD1Z24Y7Ed0I+ujvedqdqW5QIc/PsG0+/519NwaqwMvMct6RDp1vmRs+wn92HQf5f7ZJoWtMTLgZvC9rkaxsSVhwG8W7VScMYz4ap2whfcH+uIB1HQQHg2wVJqnlM0LJXggPUKaIb4+jFoN81XVvNxJurUFJk+Ohm+oPPVhhM7BUhJcOwxUNwMxPsYCV7/rAalIA9b3kfrqp/Wn1i1Rxmi5bIf2JNKc2sQwSUmL+gxmrcFyzv2MAYYtpDXVtTobjE2nmI8wRD6hhWioQlGw3dXMCQNk9aMGD/67Vim5b/zmwzs4arn7yNQyoCe6bn4+5uOZtHl7egi7r1udn6sAftgo7xsrhTURtWXo7jNU033pM7GphcZG8PAG5mJ1Twy883raq7yeqy8Qo7yr5jrfsQaltvvbRsVxXHOzZAADGupotc2TKnGVQKeUE92yFyCKPhFvqtWVMfOgDr+EsQ6pgiyYqcELaJfBepyI2aOexaqo8bobf710On+Mm4lIkpxbWQrtyGfpZxaR5Uu/ZBlTSgrQgnYJZVn/I7GaoX0aHJCUWNyLFhfhBPgFJ9H5iDkDJh3UYr/kp6wEfIpHo5g0j3XG5GEigZyNLcp5S82AJ8TOeA4GrZ1DkXpa3PYIyoyqpa5NbJmNstbZpOj9jcilVVsxtVcliNB41p8PRGsCg6P4skAqroyLUNo23ks04ZH2GggxfuUporUvAiA4oNbH2BqlXDQ5/NXgERH2gFNEyM+DEIOAoLAgHgxheFVay+zz6Nnlgc8nK3yPNv++gc7Kj23/i6b1Rp7/Hq9zccWyHVfHWac1yF+9m0dRCkTT7o2eKICQHKvPL9j/HI6/lNwq7uYZhwdIPiQWL+UDsYq3cQ3NnbnygdSQh76kOJIMA9VHnCDYCKNZeqTcah5UPczchmNBGCvDCNecLDmnRZsRAuMhy2Z5cOigheRIm0cKOvYSnB5UhhyWCdpcFsz4yvdIQsUr0NerlPrjlt7AXqs+qM5/z/bqyGVJg85X+KuJzJ2Wqd1Nec02MIO+VCxd7WoGJxM0yxRPXm7v9dPB/T4Zf97ky8fEeGu9xJNzLW/jeI5y/LwxfK2JN6uGTHLq2+EPkSsBZtMQAn5/OQJ0Se7zESuyvRkGRNiguJng1JfTMcFwbgOoIwXLfSBiusfol/8wHonWsUVCv4+jSBCENJbUSDAOyH0mHmX6r6GX0joqMZ7+Qtd/pzTLcYsE9Ftw6kcRZ3ij2Ncu9CQmYPf+V/wcKhz0K97m+j3pQtsPRwGkUt/vFBrOp4b4NssPpwo2bUMqQYfjiRr321dtCjRiQNJtJ0DxpdBDIFUARW7OoZC023KvDP89WU4Z/0NufRvIZK1UgTnpo6ZDyJ8WE1H5tKsVx86F5/plsdusHllBb/46HmBHCpTmQUJ33/Agru627wruEj9xp8i7w0N0dNiwpp6qVsWi2j5P00jIcxrqzku8sV3wjs+S/c7JCHrkMWj/Lm1HaYQbwFxjYLMNINzF60ct64yfh1ePCWhDYpAcOPaVG9CoDCeZb1e1Dprc9NlwAx9ofkrrQTEi1pzF5QEFcGB8hfmIgMr5DygV/7TjL2Ak1BiY3AIH1oLeZk7oFCyIo1N31VUlqTPcMYrHvP88leRREKRCVIXCjkUnv/abqPQkyalx9YFRsl/LbLbBTcrfsV1g2Va7+eHyXKph7BjexTGr7/EQjJReD6q5NDhU5FhvYQH2CUBFs0oOkfeCn2jfHege/nnQc7QIrd2lARpwBiXjrnpa3Cy6ZOMCG5saowHXRULhjPVoEqip7HT6cZMAbKHaib91IhZfQThhY6JBgVYDYA8CGzr1onq2l+eFe3DU1CdwMaPtQx16x2tU80g8huTk5YRXHDK83TiAPwqv24lIor0nCLRvbCSvHlvRYIHDQGDtK292dasieArglZ3CjXqn2WZycNq6vCxn1G+TGUpU6jQcVz+3MZldQqn+yVvYDhE1VYU69ZQ4nelfuxIb/UETIUehoKaCho82QInS3TId7Zb0aAh3tBminSm7B0RrTOUM+VUTUZB7Y8HzBMiFAxchEZcqEOFZSFrS9iYNen72p6npkZB5aynt/ioh9yTjD6dLxOk8byjjtH7TTrU6C4eKuOcelAXbGkoDoE8CUHOZHdcQOX0S3fmWTnUm7YT6Q2SLqXXZCLWjjaz/1kwitTcosPZr/t/vDbg5LtM8WngTT+OLlY14Bq5wQSbuh0qE9VYBOJRxuMmcqrQ28aiKi2yOKzH+WkhoAj7e0jbXe/ivW86rgtp4rJJ9dMNdXkg0mdQFIwui/kczZa43zXb1mQWOaCYNWZgbADUb1RvvaZmk8+Bua+51QmlnJsZ6E4iRZZezLLx26/VourfFMvX4r/dUBggy99sUBVmQvlgRux2rK4YRukgijbF+5GxJ/SshRbu6D8StGYs5wJ8hmhXu2gcIKmPdRZKePGCqte4UFIO3SpTFwrNtdGrr5iCw2v2y/MSR3o1JPQbV0nDrVgemRu+MG45+cB8QEYE7+NZ4i2NOj9z/faedba9Bx0kORC05uuLMZODzQrPav5kfGm6gT3Mkx9wxi/Zd2y0sYBfymwnCKYr5W6JD/3OjPzs6Eq7m7GGF5i03HVISWEPm3qV/qSPANusMDUq/T9WrJ0lkbOHs+dtg68WPrV90iDz7Aa1kvKJZNB2rNfM3xtBL9NieosoBtiuwDF7aKMlDyw+o+i8QhH0YbDPb8FsVHbnQvXdb4EvhrVVLnlBNsq/mLTw1dqbCb5KGs6t44ZICTxoX5Bd05AkRV2w6d0QiEKmdAI8mlutctXx3hUJ3VXK7I9VmE03V7BsEdIEH7BuE212hLRgErqUtUXBujOjAc6s9QOYUSpsiaf8aT2KeKGv6tar+YWaCoB40vgsAD46pXT9typDVl/jxcaTioRfqg4U/1GNwE01AEfmbFNnpH+rC6jQNR/eRyWbTtIYqWtybpKRd3345TwbBe3t96bGhT16bTpPZ6W2Fewm9vogo+dPGiU1FF8HlqHNIBQJvCrNv1jSMTOFlbhhn3A4qcX8VV/Kc6IIswPPCCg7SAyk+376urAG5nSBftAh4IgjdeGCcXPdmRvK3hJeMPDaxV6bqVCHpPNAGwP0n2fZuM+jEeY8JCQvzOij7sdC0wbPcJPC1XfdMRn9xbSWtUaYccw4eHxILVOo2hamJ+DR8y5D0ty1VDb8i1xP2nXvuW8TtU3y+fTk4+UL9ih2/YJLY0g3jxXwAto9mR1RsmF0aN/KP6/m9uQJWXbI5A95jXMKwKeLgpsfZURqRUTK0XeMEPVqIJMk4Qr55M3d7oiW7EB2FQOR5B0eUsI7oGx/j7Tgf7TC5Gxpsn5hnecCBPXegxnK8IkQXvT22EfKW+svaw01iSmXQeKdc8FLDAPqhhur0w+jaJ8e4gSUEn9kz+I34wBUaf9T8C3ZNwfBCT2f8+AyYIhpiOkx7i1AGK2AQmI0NXNGf1Bl8FFdYATgSjFPSWexFQ+KzoRPopDuxQF9lwQ/Np5SlXYWwGvEXwiXWbMDB4dY4Buu30p/cM3ZS0gi+ePfPy4y+Ms/mRE5AKDQ8APZvxo2R141UUMGr5CJCUsObj0P1/rxft0wO2FboXzWjCFIPlqSsYf4DsHgABPDEweK+lcSXjayjMnJQDRSYajmo73ojySHBpD6VdhyGrxZOVQrI1vYYRvqHYSb4yrGkqcFW6yhKnmrzadduq0/4TegESa/dh9E7hhLKIRyPnfKr6iSYTmUg71VPYp+mx+sjweRo8szqwYSNpJS88fpOPXuW5FvIFSBO7TBCjxfL+ssoX0MXemeyvA8fUhxqiILksnNbRBqoznztuUKsZNwh6T9qOVjMQQq3W3yi81cZxaZnlu+R4XNADqCWTW3II2pA9THudUQaM5+NAhxbVptNT4oY0niJT+KcgIP16xM2qoO7Pmt9sHVI3A2makyQVKJ7C8uRkWqpAEPK3CivOV/kBPkcJW813Vzr30FG3dzrpOT3eo/aTS46sH/Jyo1SmJ/d2yg879EJic7ASoe759IJNzEyLCAIKz/aoHjy0iRRhDjDsG3oQomp9YjBrZZkHPzycDgoivJ0qoB+d13KgEd/olOOz01knoh9YQS3kfszkLATR+Vm3yssm1wdfogw9izfdsS/W/wIHr5FCA+rBhZn6ViiCNIbj4E1NnZ2SSg+7VOAcvF2qN7hL7bvVpOqsuUCPcbHVV5bUTpis6DI8Nd89IZMO+FxGeiBAXafFx3DYw2cdeKiRibMriTVuLwKfIZY6jEA/2cOSLAiUN7cUuwgWCdXtsti6nP99BYJpdzCl/3V0sGpGJnIB/sWZSoSwAIIVNM+5JbYK13rzn5SKMmJkdkBbrTR12tC3OKg2qT3SFNns0+AG7LNy494vnIphdN6iTQWfXpjlLnMKi7gPlfzChj54rnAZCQT48hw+vPduQ9ny0aNvtxHE1JuMguIQcfHpu6p9EjpMKL5600blDDVIkdnP4ykZjv1Xcfo3PqJqfwO8uR9rbVVnw9m6mqwQ+i7Bgg5s9djN33IRWJwMN5MBkbfpLjxRZOmtUTCf+ahACkF0jZej8BF7VOMMEWYvY7Zz2bj5bX5rxEk075vXs9ROaiQ5bBIBs60cDDezV2yoIdGjoTZ+2jeZFYhhtRwRur+Zv8wM2RnohrMR88iYWtporDVxFHQzmC35T+wVkGkmnuo6D8TCIRTrEALwKpp/I83/uYt2YLL24F/x0B7b/WgjQ9bLOcxX2JEiVnA7KeSbgunqkRMrYW9ViYVZkxCVwFlICnDsIY3+dqL/nZ7mf7F6pBr9jH2GsLq2qfHOZY9LGG+T9i2lgyunBmVFgUiTK4MK+jDlMOnUb+E6XT8gPdDqZ2CqJsTAa11HBjY1pC8LbqlfTtKMLhmYh/nqJxL1/pzI77KAj7MgGFGNHu2uqiVoEwMsG1rULPtP2Ts7+ogLflaOMu+98aXQSdFLAFlzyNjmySJpfFX06gU5lEFKc5wwrRGjTQndB3xt//VX/fz+CzUWlwvNgxWDa+Lv4W0MSWm4mYLuZDgjLZBcLL5TrRVj32G+sqneIm/yO6mcDsJMh0rAeroQcJOQI4RtZLTLw7yKBLDgBOPvq2LKtL5g+OGSRxjPWjTuFKv2TelssnilXxuIsy3TqO4U6el+d1CSTnroQz/BoMhkQVjLepemy3ZlNoYaN1Nscyg6sU/n+iqbUyH23/Bif7tNNQsQouv04qAl84iH5A8Ou3+fF2FUsOrNffzQrhlvGNKoOpnelKQTvofQA6ZZiLfZRbIw+GcU5sS2uHAXz5XvNNueTPGfkDfmmMAPAYtoyHXXAKc9OVHHkiierQ9IiyCDSdx/DUatW/NZnEkxndfVcHwBzt+gZ9ajC+SRCsxTjyQImYAQhbezNRZgz1ukXC+3KjiQFe/eHKZc6Azr0Int2c7ULT3OYYxdO787vRwjZ466QIeYtTdzj2GJc30I8QP1fan8tRmaCWFptY1v8enjHMCe4ChacZELM2O92z10VZha8lDdEGbJPjjZ6v9HLprYvv7blWoekmdGwl4fmmDijpPDYlGKxGv0gaEPGMQO4yDEOdsWPu6ogkXJGDRZHbVYn/QSX31KLZXSSSXip9IH5aFh4/xY9Xsk3TUXdAwn3v3e1pqZRto8zV6kF09dtXbZBbKjUiHnA5cFHhr8AEmHl5AutCGFY2Ws0KiNdBkNCusQbtdfJdwBy2qJxidbI0RjTvzCyvU9pSvOpO9Eu6insZCnnlONA41ypu9Fau6K5z3P02eezkiK8whtkQurjSVqI9QGNFVoUmWp4rKWaqUhDvJlYMpYJBipjnSPJnMYCuuF/n7LvSW6zp3tHJKcWhhSEHO0iQ9lu8Ul+aT3Dp1kdmg4crXZZB7sV8dqM+mm6KfoLKFfsf0x0z6T+I85MIoTebAa+EPAKfpztCEhHHxp44ua05uxUR6xf6JVWS2BgkW0CgU6q26IYBdNpJAkjulstYyq/SFypfmkWfvAp0IRu4Vyejh6vd235PG4uXxhPTP2lmMPQWpZAEAi1gt7uwUCs7BI/wadfjN74VqtpDA0aEEU9dXlS9XTwpVpznhZCxkhrPsJHZr2OQ0G9ozT9PiQkFzg8ZtkmW1FpIHoQZ50pqqgyJA5fgW6fOmN3cu3Bpz4mHoWMfT++gLHg+eTWAPatAfPgmSjJ2XUE3+27OWi9eGONTrE1/MRf9lcB/nWI5nGuDIXZTSe8AV0bdGGqLqwC0yc2pCYLEFGCDR2ZNon6UkSofBXj+XTn9uHOJw/qy5uSCwECoX5i4zvKhxDfL+mViG0QKHWhLgCX2doL3xrC/ORbvfJYFi5UjNg8FY4l7FUkuJBhio7Esf04P5caxwN65tbEP/AEBkSNZhDt9FntCuK7+YaTvdhXEyiAAZ1OcuXVVXYKF1fj3OxlHcP49O7EEGmGXaJH4cay8DHHii6Ut7fhlShsswXgW8myUesz7pakCqsd76We22t6SZgWN8ymxD0TAGd+QOGJRZjNjPatMh/czeRwo9BgO6djLWSFLIT4J62E0A7xE1H/nZX9bZmX2jsCkla2xBQ7Gh0lqmYU8wKVdW/TAyojD3MCVqvGYP/XUac0lTnV/4W+JyxcIGgNo0FxDSooRAf81SZbp2572jq4XNXD0xjZsRitzdmsG65r+R1ZzWIixF7NDr1LyqtQFB22ZvlKKGywZONHuxzhVFj0jpiZBsxrj4lejZsI/8QLtwVz5nybvWbjdH55WAwyHAPxA0TR4YsyqSD6rD4Tfpceb9HZk10bHqgAo5QnKjyb6ccFptYO13rm3leSOf+FIl6HzY+i+123iBAlVEMAiqZT7iu0L8m6UY9rmpzMg11PRU+ycEinodOAKsbnQhZx/5gee39sPgwrCjNs+EUYb9Hhfy+8km2H8bSqwTNOq2hbtwO+lRdKsaSCZpFcYGkNWF6IgqtIXglHYBH7WMYacrTyPzYtl6nZsmqKnrwt6bHZkH2LQ+uMQFs9A2YG6PGrvcjxya5nFZ2bLmxoPwVXhwJ2SmJy9ognNTz1+vslE5u//9VJLmdnMdJRwnusRaGmq7NfF8hqbxIrxSZ8xU7KF+VBvvLGC9l9Pf3AUoIIxNmOjLUlhRii1CwE1J6fGmjdx+hbqbJGd1ByCf5DLuMX2RszheCTAmdZYcL3dQndoGw08QoQQzVShd4k0CVxzWm/JF7hXM+EgalRTTSqwue5hhIQSF2sNxsvP8cncQCtpqFLyAQ9pcI8BVC+/umtRtE1VHEJkTqEfELDuLPR4QsJo+P8d+FdDRd8jv4UQpJuBXGbi6E9ptyJAP6/5gcSDHKmnTTbijCW6oK0T6SnUyP2rPqo00Ay4VF9u5uOlSNqI2iqgYG/le4a/ZKBf3ZU8SUib0bJig0zfcXZESP+u9Scycx5z+bJoeEEdeXtbtvK6R5NRsQwMvni93wJXVQRR7h6+oc4ZYl049htt+dTJdoRmzB8/eTnBae941RNFxoXhrKVf8fRrGPa21ONNALTNIr12xzFcB45WBiTcQG7n2H8ieRpTdwXSu9NzenoZrvzTuW7Givu3GogqpN+IuQOQ19PbzljD2PP6eFTbDJhp7LWLaNLupXJU/ziNxiw2O5zwCs6GgRm6NHn9969JoBTJ91Y/j8Ti16kQRwDvmdVc+ugyvzsHdZ+ZGLRggsNxKMTGcojg9M4tq+L9F6XyxT2x2/MAJblf/1M4OkJIY6ogml1MYJgo+NFcZbQyWL0RyuHD/djWirII1PAV15E2M4lAZXQ2+aitF1JJ74jWXUkhPqK1b5SUad9jb67N2qeqtsjHTqZsghOlzcrmNdfXzyR+uQSlrHKBjxtwde2GxwfLK99Yj0cxYthTP86VCF7niM93Tv2Yz00ilhlBtDayL/vI+teny9yvP6ukeHT/QucK1hkjzATajYwUBqdHtOzhTzrDA2Kov7ErJkmYOFiNMpQTMWn4P6MKTxlTTWHJfAFgae7lbW5QNjLrpslEaqa27KtzAnNwLXzjfqMvT6WN5zolVVcZ0bPJSQF7X1Yfdf5lR71wROJ5oajH+bFQtbNceEHiCslGeo589+hNMH7VHKA3MUhTbNeudYWd54UGfaEK4WbvvWHrj/juyzfoQ6HB00vo0QzsUstWa/oG4//Q26Zr9LPlAoHYk/hmEAg4NZnf5phmWlC3OJ0G/sihg1qYhhybNWF8eQ2Sm84HixUM4hUG2h1rwyKWSI9tqlC2Lk8lBsZyzEfKLqzYsnyF/YDAyudH8/v1eaooNzh7tTWZ/xFieIm5Nm3ZIAVOVwkQRabBgX2WJNHzNwouD5083uzn2nx0Gbvi7C4h3KZFA5q8+VHJGpiwZUUPoUlx39aCs1N5u20r261Fgi50yXTFyXCFvxyYMJQzhkoZ4BCvLgvVVDQ6PcwNB+lwOIStLVU1wntJ2m18SWsra25hT3rvrUwbqYsLuZOs38IARA9nwICZLlOAM/qh/N28NYkMr3f0io/sJQL+r1CfEbG+U6K9aT1nMefFDeQQtAH468gvvMQrrV+iH4gLFTLDfW23GacODSuHYAuHR5iLDeDqqvgvOL9nfaU9ahXmmKUH8dwtNPSonIZQe2KKW9nGfPfn+ItYd2rjOqb+3388O0A8H+2f9Hm/aRHJt/wWqh+IQFDJYZ70myVzUp6AMuHbLFhCE2d59WuAhqpF+zL/OvUea2WofRdmWP5b4anAJ2z3uBs+QtbVogYfFb8miBuK/nd3H5OXY7X+2F5UWfA+gKPKwL1Keapi4AINAGOyNDAlsSrCKkmInTBH7jeOnBnKYdzidzLY3Nz45B/TQJBZTU0/9zgZf5dUihFQpNlS3UKeywh2LIAUc/+NOQIUCXdsR2UIwM1RHAJG0wPDWf16Oc0kh3C6fcQKK0DtVoASsMEjPDZZspoUXh6Iu3o1f/vEPAH5nBLVTZI4tXaKFpvTg8yIm+g0EaTXTjU8xSrDkTX7rME8t4qwQxUZGItursYhni+jbDb8F+7ctJsoO4x4ErV/Gv1WBqoWMme8zviy9CZYi59Sw7Ft8FCter8JoXzmFhlEyqwdt8GzF8/09N5ezSdmmGsoosJLMp4f2W5dmJMM9i4/ELxGOMHpZubNgw7fiQqOWPCN3vm0XR765sIs2LVpWHtJQo+hYWM5oBZpcalyMZ/7ufUwuwZHyoSNrd38tfZwOs4wXw269hC0/1QnhakgkOJ0PXUm6+iohDuBrUep/Uy6E9iT2APcuTZMJXKxJD6F5uJtUIKNo4yS9trFcXGpNgAq4MWnWuiC1j5Aihzo4XflNH6fyD5kPIcsm6y8khOMgEHGFPPECzwIBqSdWYWB7FqTffXweReEvdvScoJp6k1jEY6hCyzRT7op1PD/5rGGoTJrbTqTn4zIN+p4a1WmrmW5RnF9abKsrtPZMBg75bFEuPJUWHpue1frdcD1ovnt5k48wVbGIJKwVWc0EqKkvL1jpDOmbpeG/kD0jEE53E4uk1EpvgJBk1Aktk/V7JPh0SC1BZLvFgnNQJZR2qdlsA1DqtLcdeQQJqxk29Q1eBWHj9enkiNvSyMNwWGJcaaPX6KhdTnWaUuDWk7f1Jf6cyFDADo261uVHpbMUG42pcE84iDPyf7iz4NVheaWfGwEuKvX/YtT5jUjZ2dMR8YD36W4a+9D3BDP+2TAvYmkr5g7dQfgwwWaMxj170cX83Cxk3U5deZfsMOhBcBil+smv+n1w0yG0zZmUvpvHcRnoZGw4LDg7Ok3vNtZzZ8xYBDF94L8sapgBOobEc2KgM/LcFfibf3oaG8/v3TlhMb+GFuXZcqbZkB7G19ym05ceTYCetz+RiW1PIPXz2wv3ZlWo1p+mEm2+rXY6u028tupa6YSqJCAVfjVaKLUsVRH5K/vEwt1vptLztLIegwbm3LTwKv8Hic/2otCr0CXwSP0kVhZzwWVo7ILwr4ebrEflrtoPhJdBOgHFBLldrZteZFrmsjfw00tSmz2/2MuqhU8Szb6fUHJdJguFCzbQhE02NDsHQdhYmUU8lXXGCEANBGnvJLBPujii9hCDwtx6HLDVrnuRFA+NA3KXqPiSS7khX+A8AHd+WFZXKdogszpK/pW4fdQQhhI82fXf4dGjThzCd1bRvLmQsphqJILwSf/V7cQXoR4ReNS8EQ13A", + "serverEnvironment": 1 + }, + "challenge": "a=6&a2=1&b=BWUKYLiKMIn1QxCC7rbRVCLRjjM&c=1722296510&d=7&e=pPvd8UxmSbQ&c1a=1&hh=o8xyUdLt004xdyVkRKFN04amYuuKYQvLCofKhf7sHN4" + } + }, + "captions": { + "playerCaptionsTracklistRenderer": { + "audioTracks": [ + { + "captionTrackIndices": [0], + "captionsInitialState": "CAPTIONS_INITIAL_STATE_OFF_RECOMMENDED", + "defaultCaptionTrackIndex": 0, + "hasDefaultTrack": true, + "visibility": "UNKNOWN" + } + ], + "captionTracks": [ + { + "baseUrl": "https://www.youtube.com/api/timedtext?v=pPvd8UxmSbQ&ei=viioZtTdKteHi9oPl42KsAg&caps=asr&opi=112496729&exp=xbt&xoaf=5&hl=en&ip=0.0.0.0&ipbits=0&expire=1722321710&sparams=ip,ipbits,expire,v,ei,caps,opi,exp,xoaf&signature=7B002D0C2B79781E0E46F374D5BB53C6059A5252.E7B05ECC8D799DB96F3C21B727A0161E0032CDFA&key=yt8&lang=en", + "isTranslatable": true, + "languageCode": "en", + "name": { + "simpleText": "English" + }, + "trackName": "", + "vssId": ".en" + } + ], + "defaultAudioTrackIndex": 0, + "defaultTranslationSourceTrackIndices": [0], + "translationLanguages": [ + { + "languageCode": "ar", + "languageName": { + "simpleText": "Arabic" + } + }, + { + "languageCode": "zh-Hant", + "languageName": { + "simpleText": "Chinese (Traditional)" + } + }, + { + "languageCode": "nl", + "languageName": { + "simpleText": "Dutch" + } + }, + { + "languageCode": "fr", + "languageName": { + "simpleText": "French" + } + }, + { + "languageCode": "de", + "languageName": { + "simpleText": "German" + } + }, + { + "languageCode": "hi", + "languageName": { + "simpleText": "Hindi" + } + }, + { + "languageCode": "id", + "languageName": { + "simpleText": "Indonesian" + } + }, + { + "languageCode": "it", + "languageName": { + "simpleText": "Italian" + } + }, + { + "languageCode": "ja", + "languageName": { + "simpleText": "Japanese" + } + }, + { + "languageCode": "ko", + "languageName": { + "simpleText": "Korean" + } + }, + { + "languageCode": "pt", + "languageName": { + "simpleText": "Portuguese" + } + }, + { + "languageCode": "ru", + "languageName": { + "simpleText": "Russian" + } + }, + { + "languageCode": "es", + "languageName": { + "simpleText": "Spanish" + } + }, + { + "languageCode": "th", + "languageName": { + "simpleText": "Thai" + } + }, + { + "languageCode": "tr", + "languageName": { + "simpleText": "Turkish" + } + }, + { + "languageCode": "uk", + "languageName": { + "simpleText": "Ukrainian" + } + }, + { + "languageCode": "vi", + "languageName": { + "simpleText": "Vietnamese" + } + } + ] + } + }, + "endscreen": { + "endscreenRenderer": { + "elements": [ + { + "endscreenElementRenderer": { + "aspectRatio": 1.7777778, + "endMs": "163143", + "endpoint": { + "clickTrackingParams": "CDUQ8N4BGAAiEwjUtN-9ts2HAxXXw0IFHZeGAoYyDGl2LWVuZHNjcmVlbki0k5njlL73_aQBmgEDELtp", + "commandMetadata": { + "interactionLoggingCommandMetadata": { + "loggingExpectations": { + "screenCreatedLoggingExpectations": { + "expectedParentScreens": [ + { + "screenVeType": 3832 + } + ] + } + } + } + }, + "watchEndpoint": { + "videoId": "c-XpTMGPQvI", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---sn-h0jeln7e.googlevideo.com/initplayback?source=youtube&oeis=1&c=TVHTML5&oad=3200&ovd=3200&oaad=3200&oavd=3200&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odepv=1&id=73e5e94cc18f42f2&ip=93.235.183.158&initcwndbps=2000000&mt=1722295996" + } + } + } + } + }, + "id": "c96fe9af-88f5-48b6-80e1-b20089987962", + "image": { + "thumbnails": [ + { + "height": 360, + "url": "https://i.ytimg.com/vi/c-XpTMGPQvI/hqdefault.jpg", + "width": 480 + } + ] + }, + "left": 0.10701755, + "metadata": { + "simpleText": "8,695,713 views" + }, + "startMs": "143143", + "style": "VIDEO", + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 17 seconds" + } + }, + "simpleText": "2:17" + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Epic Cinematic Dramatic Adventure Trailer (Creative Commons), video" + } + }, + "simpleText": "Epic Cinematic Dramatic Adventure Trailer (Creative Commons)" + }, + "top": 0.17757009, + "trackingParams": "CDUQ8N4BGAAiEwjUtN-9ts2HAxXXw0IFHZeGAoY=", + "width": 0.322807 + } + }, + { + "endscreenElementRenderer": { + "aspectRatio": 1.7777778, + "endMs": "163143", + "endpoint": { + "clickTrackingParams": "CDQQ8N4BGAEiEwjUtN-9ts2HAxXXw0IFHZeGAoYyDGl2LWVuZHNjcmVlbki0k5njlL73_aQBmgEDELtp", + "commandMetadata": { + "interactionLoggingCommandMetadata": { + "loggingExpectations": { + "screenCreatedLoggingExpectations": { + "expectedParentScreens": [ + { + "screenVeType": 3832 + } + ] + } + } + } + }, + "watchEndpoint": { + "videoId": "m0kU_Yhsjx4", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---sn-h0jeenld.googlevideo.com/initplayback?source=youtube&oeis=1&c=TVHTML5&oad=3200&ovd=3200&oaad=3200&oavd=3200&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odepv=1&id=9b4914fd886c8f1e&ip=93.235.183.158&initcwndbps=1957500&mt=1722295996" + } + } + } + } + }, + "id": "d383b93e-e1cd-4e90-a1e7-b11efc979325", + "image": { + "thumbnails": [ + { + "height": 360, + "url": "https://i.ytimg.com/vi/m0kU_Yhsjx4/hqdefault.jpg", + "width": 480 + } + ] + }, + "left": 0.5701754, + "metadata": { + "simpleText": "496,948 views" + }, + "startMs": "143143", + "style": "VIDEO", + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "style": "DEFAULT", + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 14 seconds" + } + }, + "simpleText": "2:14" + } + } + } + ], + "title": { + "accessibility": { + "accessibilityData": { + "label": "Inspiring Acoustic Uplifting Soft Background (Creative Commons), video" + } + }, + "simpleText": "Inspiring Acoustic Uplifting Soft Background (Creative Commons)" + }, + "top": 0.17757009, + "trackingParams": "CDQQ8N4BGAEiEwjUtN-9ts2HAxXXw0IFHZeGAoY=", + "width": 0.322807 + } + }, + { + "endscreenElementRenderer": { + "aspectRatio": 1, + "callToAction": { + "simpleText": "VISIT CHANNEL" + }, + "dismiss": { + "simpleText": "CANCEL" + }, + "endMs": "163143", + "endpoint": { + "browseEndpoint": { + "browseId": "UCbxxEi-ImPlbLx5F-fHetEg" + }, + "clickTrackingParams": "CDIQ-N4BGAIiEwjUtN-9ts2HAxXXw0IFHZeGAoYyDGl2LWVuZHNjcmVlbki0k5njlL73_aQB" + }, + "hovercardButton": { + "subscribeButtonRenderer": { + "buttonText": { + "runs": [ + { + "text": "SUBSCRIBE" + } + ] + }, + "channelId": "UCbxxEi-ImPlbLx5F-fHetEg", + "enabled": true, + "serviceEndpoints": [ + { + "authDeterminedCommand": { + "authenticatedCommand": { + "clickTrackingParams": "CDMQmysiEwjUtN-9ts2HAxXXw0IFHZeGAoYyDGl2LWVuZHNjcmVlbg==", + "subscribeEndpoint": { + "channelIds": ["UCbxxEi-ImPlbLx5F-fHetEg"], + "params": "EgIIBBgA" + } + }, + "unauthenticatedCommand": { + "authRequiredCommand": { + "identityActionContext": { + "eventTrigger": "ACCOUNT_EVENT_TRIGGER_SUBSCRIBE", + "nextEndpoint": { + "clickTrackingParams": "CDMQmysiEwjUtN-9ts2HAxXXw0IFHZeGAoY=", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CDMQmysiEwjUtN-9ts2HAxXXw0IFHZeGAoY=", + "signalAction": { + "signal": "CLOSE_POPUP" + } + }, + { + "clickTrackingParams": "CDMQmysiEwjUtN-9ts2HAxXXw0IFHZeGAoYyDGl2LWVuZHNjcmVlbg==", + "subscribeEndpoint": { + "channelIds": ["UCbxxEi-ImPlbLx5F-fHetEg"], + "params": "EgIIBBgA" + } + } + ] + } + } + } + }, + "clickTrackingParams": "CDMQmysiEwjUtN-9ts2HAxXXw0IFHZeGAoY=" + } + }, + "clickTrackingParams": "CDMQmysiEwjUtN-9ts2HAxXXw0IFHZeGAoY=" + }, + { + "clickTrackingParams": "CDMQmysiEwjUtN-9ts2HAxXXw0IFHZeGAoYyDGl2LWVuZHNjcmVlbg==", + "unsubscribeEndpoint": { + "channelIds": ["UCbxxEi-ImPlbLx5F-fHetEg"], + "params": "CgIIBBgA" + } + } + ], + "showPreferences": false, + "subscribed": false, + "subscribedButtonText": { + "runs": [ + { + "text": "SUBSCRIBED" + } + ] + }, + "subscribedEntityKey": "EhhVQ2J4eEVpLUltUGxiTHg1Ri1mSGV0RWcgMygB", + "trackingParams": "CDMQmysiEwjUtN-9ts2HAxXXw0IFHZeGAoYyDGl2LWVuZHNjcmVlbg==", + "type": "FREE", + "unsubscribeButtonText": { + "runs": [ + { + "text": "UNSUBSCRIBE" + } + ] + }, + "unsubscribedButtonText": { + "runs": [ + { + "text": "SUBSCRIBE" + } + ] + } + } + }, + "icon": { + "thumbnails": [ + { + "url": "https://www.gstatic.com/youtube/img/annotations/youtube.png" + } + ] + }, + "id": "cfd53ffc-d06d-4671-a32a-4c647c432548", + "image": { + "thumbnails": [ + { + "height": 250, + "url": "https://yt3.ggpht.com/xr2VFIXCxe2bleK2UOtmiRgFdN-GYRza_jYgQ5b1no5QcRSg5qWPbSQGnzdtFviUlL_mTLm5=s250-c-k-c0x00ffffff-no-rj", + "width": 250 + }, + { + "height": 400, + "url": "https://yt3.ggpht.com/xr2VFIXCxe2bleK2UOtmiRgFdN-GYRza_jYgQ5b1no5QcRSg5qWPbSQGnzdtFviUlL_mTLm5=s400-c-k-c0x00ffffff-no-rj", + "width": 400 + } + ] + }, + "isSubscribe": true, + "left": 0.422807, + "metadata": { + "simpleText": "107K subscribers" + }, + "startMs": "143143", + "style": "CHANNEL", + "title": { + "accessibility": { + "accessibilityData": { + "label": "RomanSenykMusic - Royalty Free | Creative Commons, channel" + } + }, + "simpleText": "RomanSenykMusic - Royalty Free | Creative Commons" + }, + "top": 0.57320875, + "trackingParams": "CDIQ-N4BGAIiEwjUtN-9ts2HAxXXw0IFHZeGAoY=", + "useClassicSubscribeButton": true, + "width": 0.15438597 + } + } + ], + "startMs": "143143", + "trackingParams": "CDEQ794BIhMI1LTfvbbNhwMV18NCBR2XhgKG" + } + }, + "frameworkUpdates": { + "entityBatchUpdate": { + "mutations": [ + { + "entityKey": "EhhVQ2J4eEVpLUltUGxiTHg1Ri1mSGV0RWcgMygB", + "payload": { + "subscriptionStateEntity": { + "key": "EhhVQ2J4eEVpLUltUGxiTHg1Ri1mSGV0RWcgMygB", + "subscribed": false + } + }, + "type": "ENTITY_MUTATION_TYPE_REPLACE" + } + ], + "timestamp": { + "nanos": 970784781, + "seconds": "1722296510" + } + } + }, + "playabilityStatus": { + "audioOnlyPlayability": { + "audioOnlyPlayabilityRenderer": { + "audioOnlyAvailability": "FEATURE_AVAILABILITY_ALLOWED", + "trackingParams": "CDYQx2kiEwjUtN-9ts2HAxXXw0IFHZeGAoY=" + } + }, + "contextParams": "Q0FFU0FnZ0I=", + "miniplayer": { + "miniplayerRenderer": { + "playbackMode": "PLAYBACK_MODE_ALLOW" + } + }, + "playableInEmbed": true, + "status": "OK" + }, + "playbackTracking": { + "atrUrl": { + "baseUrl": "https://s.youtube.com/api/stats/atr?docid=pPvd8UxmSbQ&ei=viioZtTdKteHi9oPl42KsAg&len=164&ns=yt&plid=AAYea2e4OfIKZgco&ver=2", + "elapsedMediaTimeSeconds": 5 + }, + "ptrackingUrl": { + "baseUrl": "https://www.youtube.com/ptracking?ei=viioZtTdKteHi9oPl42KsAg&oid=ukP4sqKpdSgLD4VOE55D1Q&plid=AAYea2e4OfIKZgco&pltype=content&ptchn=bxxEi-ImPlbLx5F-fHetEg&ptk=youtube_single&video_id=pPvd8UxmSbQ" + }, + "qoeUrl": { + "baseUrl": "https://s.youtube.com/api/stats/qoe?cl=655300395&docid=pPvd8UxmSbQ&ei=viioZtTdKteHi9oPl42KsAg&event=streamingstats&fexp=&ns=yt&plid=AAYea2e4OfIKZgco&referrer=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DpPvd8UxmSbQ" + }, + "videostatsDefaultFlushIntervalSeconds": 40, + "videostatsDelayplayUrl": { + "baseUrl": "https://s.youtube.com/api/stats/delayplay?cl=655300395&docid=pPvd8UxmSbQ&ei=viioZtTdKteHi9oPl42KsAg&fexp=&ns=yt&plid=AAYea2e4OfIKZgco&referrer=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DpPvd8UxmSbQ&el=leanback&len=164&of=eH1uGxeW-k-9Tf9uS34HDw&vm=CAIQARgEOjJBSHFpSlRMTXdEazJCZXdFY1lMc0tfLUF3THJsSVFXQ1RwbmlzbDBhWU5BQ180OGZ1Z2JiQU9BckJGdG8zb0ZzQ0VaTEgzbnN2d2pOSzdNY0tZRXp1cVNHcU9OTFhNYndTdzhpZE1YUmg1VEJEVENRX3VKRF9pV2V5NEczNVJvUHpmSHd4c21GZmEwdVJGbTRiWmNDUFG4AQE" + }, + "videostatsPlaybackUrl": { + "baseUrl": "https://s.youtube.com/api/stats/playback?cl=655300395&docid=pPvd8UxmSbQ&ei=viioZtTdKteHi9oPl42KsAg&fexp=&ns=yt&plid=AAYea2e4OfIKZgco&referrer=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DpPvd8UxmSbQ&el=leanback&len=164&of=eH1uGxeW-k-9Tf9uS34HDw&vm=CAIQARgEOjJBSHFpSlRMTXdEazJCZXdFY1lMc0tfLUF3THJsSVFXQ1RwbmlzbDBhWU5BQ180OGZ1Z2JiQU9BckJGdG8zb0ZzQ0VaTEgzbnN2d2pOSzdNY0tZRXp1cVNHcU9OTFhNYndTdzhpZE1YUmg1VEJEVENRX3VKRF9pV2V5NEczNVJvUHpmSHd4c21GZmEwdVJGbTRiWmNDUFG4AQE" + }, + "videostatsScheduledFlushWalltimeSeconds": [10, 20, 30], + "videostatsWatchtimeUrl": { + "baseUrl": "https://s.youtube.com/api/stats/watchtime?cl=655300395&docid=pPvd8UxmSbQ&ei=viioZtTdKteHi9oPl42KsAg&fexp=&ns=yt&plid=AAYea2e4OfIKZgco&referrer=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DpPvd8UxmSbQ&el=leanback&len=164&of=eH1uGxeW-k-9Tf9uS34HDw&vm=CAIQARgEOjJBSHFpSlRMTXdEazJCZXdFY1lMc0tfLUF3THJsSVFXQ1RwbmlzbDBhWU5BQ180OGZ1Z2JiQU9BckJGdG8zb0ZzQ0VaTEgzbnN2d2pOSzdNY0tZRXp1cVNHcU9OTFhNYndTdzhpZE1YUmg1VEJEVENRX3VKRF9pV2V5NEczNVJvUHpmSHd4c21GZmEwdVJGbTRiWmNDUFG4AQE" + }, + "youtubeRemarketingUrl": { + "baseUrl": "https://www.youtube.com/pagead/viewthroughconversion/962985656/?backend=innertube&cname=7&cver=7_20190924&foc_id=bxxEi-ImPlbLx5F-fHetEg&label=followon_view&ptype=no_rmkt&random=664274810", + "elapsedMediaTimeSeconds": 0 + } + }, + "playerConfig": { + "audioConfig": { + "enablePerFormatLoudness": true, + "loudnessDb": 5.2200003, + "perceptualLoudnessDb": -8.78 + }, + "mediaCommonConfig": { + "dynamicReadaheadConfig": { + "maxReadAheadMediaTimeMs": 120000, + "minReadAheadMediaTimeMs": 15000, + "readAheadGrowthRateMs": 1000 + }, + "mediaUstreamerRequestConfig": { + "videoPlaybackUstreamerConfig": "CswJCpcHCAAlAACAPy1SuF4_NQAAwD9YAWABaAFyFgoSbWZzMl9jbWZzX3YzXzJfMTA5GAB4j06gAQGoAQCQAgG4AgDIAgHaAroBELDqARioRiCgnAEoiCcwmHVwiCeAAfQDuAEB4AEDkAIBmAIMoAIBwAIB0AIC4AIB6AIEgAMCiAOIJ5gDAagDA8ADAcgDAdADAfgDAYAEAYgEAZAEAZgEAaAEAagEAcgEAdAEAdgEAeAEAOgEAfgEB4AFfYgFAbAFAbgFAcAFAcgFAdAFAdgFAeAF0A_oBQH4BdAPgAYBuAYBwAYB0AYB2AYB6AYB8AYB-AYBkAcBqAcB2AcB-LWR5QwB-gKeAi0AAIJCNQAAlkJIAWUAAIBAaMBwqAHQhgOwAeADuAEBzQEAAIA_8AEB_QEAAIA_hQKamRk-jQIAAIA_lQIAAAJCmAIBtQIAAIA_wALgA9ICEbD__________wEePEZaXF1e2gIFMjA6MDDgAnjoAugC9QIK16M7_QLNzMw9gAMBkAMBnQMK1yM9oAMBuAMByAMB2AMB5QNiSkRA7QMyyvM-8AMB_QNmZoY_hQQAAIBAmAQB1QQAACBB6ATwEPAEAb0Fo0Afu8UF308tP8gFAeAFAZgGAaAGAagGAbUGvTeGNb0GMzODQJAHAcAHAcgHAdUHAICdQ-UHAIAJRKEIAAAAAAAA8L-pCAAAAAAAAPC_sAjwAbgIAdgI8AHoCAGCAwCQAwGoAwGwAwPQAwHYAwHgA5BOuAQBygQcChMIwKkHEJh1GOgHJQAAAAAoADAAEODUAxjQD9IEDQoICLAJELAJIAEgiCfaBAsKBgjwLhDwLiCIJ-gEAfgEAYAFAYgFAZAFAagFAbAFAdAFAdgFAegFAfAFAYgGAZgGAagGgIACwAYByAYB0gYUCOgHEGQaDQiIJxUAAAA_Hc3MTD-CBwoVAACAPxhkIJBOiAcBoAcBsAcBuAcBwAcB-AcBgAgBoAgBsAgBuAgB0ggGCAEQARgBmAkBqQkAAAAAAADwv7EJAAAAAAAA8L_ICQHaCSRFRzRmTDl1Sm9tL2NWdklmNjg4bnB6c2t4SVQrMXl0N09POHXgCQGwCgHYCgHwCgGICwGYCwG4CwHICwHQCwHYCwHqCwSLBowG8AsB-AsBkAwBoAwBqAyQAbAMAbgMAcAMAdAMAeAMAegMAYANAaANAdANAeANAYgOAZAOAbAOAYinocoLARgBIAEyDAirAhDNgPzUlvKDAzIMCK8CEP64moKV8oMDMgwIiAEQ7Mj0upfygwMyDAj3ARCNxJTwlPKDAzIMCKoCEIW7uNSW8oMDMgwIrgIQn5LUz5TygwMyDAiHARD5xP-ul_KDAzIMCPQBEOmKifSU8oMDMgwIhgEQk_6DsZfygwMyDAjzARCSyIT1lPKDAzIMCIUBEJWg47aX8oMDMgwI8gEQ3_PN8JTygwMyDAigARC-zf6xl_KDAzIMCJYCENPIofOU8oMDMgwIjAEQodeqr5TygwMyDAj5ARDzzNT9v_WFAzIMCPoBEMKb8bHA9YUDMgwI-wEQ_s_f_r_1hQM6AEgAUiYaAmVuKAAyGFVDYnh4RWktSW1QbGJMeDVGLWZIZXRFZzgAQABYAJDL048OARJNAKEYC4YwRgIhAIj4Ug4dw_gq15NXvgcfXpI1Fm_fhmwl-4ad-rX3Ffg_AiEAkZDsUgoAGLOXIvWZlNyuyfu8HLWt-snFl3gkTiPo2acaAmVp" + }, + "serverPlaybackStartConfig": { + "enable": true, + "playbackStartPolicy": { + "startMinReadaheadPolicy": [ + { + "minReadaheadMs": 1200 + } + ] + } + }, + "useServerDrivenAbr": false + }, + "webPlayerConfig": { + "useCobaltTvosDash": true + } + }, + "responseContext": { + "maxAgeSeconds": 0, + "serviceTrackingParams": [ + { + "params": [ + { + "key": "ipcc", + "value": "0" + }, + { + "key": "is_alc_surface", + "value": "false" + }, + { + "key": "is_viewed_live", + "value": "False" + }, + { + "key": "logged_in", + "value": "0" + }, + { + "key": "e", + "value": "9405981,23804281,23885487,23943651,23946420,23966208,23998056,24004644,24077241,24166867,24181174,24241378,24290971,24299875,24378828,24439361,24456089,24468724,24542367,24548629,24566687,39326848,39326916,51009781,51010235,51016856,51017346,51020570,51025415,51030101,51037342,51037351,51041512,51043998,51050361,51053689,51057842,51057855,51060353,51063643,51064835,51089007,51091331,51098297,51098299,51101049,51107657,51111738,51113658,51113661,51114642,51115184,51116067,51124104,51131427,51133103,51138233,51139379,51140712,51144925,51146484,51148688,51149607,51152050,51153492,51157838,51158470,51158514,51160545,51162170,51163637,51165467,51165568,51169118,51172672,51172686,51172691,51172700,51172709,51172714,51172721,51172730,51174143,51176511,51176608,51177818,51178312,51178327,51178340,51178770,51178982,51182274,51183909,51184022,51189826,51190057,51190075,51190078,51190085,51190200,51190211,51190220,51190229,51190652,51191447,51193717,51195231,51196181,51196808,51197687,51197690,51197697,51197704,51199193,51200251,51200260,51200293,51200298,51200569,51201352,51201365,51201372,51201383,51201430,51201435,51201440,51201449,51203200,51204329,51207176,51207193,51207200,51207207,51209049,51209172,51211864,51212456,51212466,51212555,51212571,51213807,51217274,51217504,51217581,51217769,51219800,51221011,51221152,51223962,51224747,51227263,51227776,51227881,51228202,51228349,51228352,51228765,51228774,51228781,51228796,51228803,51228812,51230478,51230492,51231813,51231864,51234844,51234852,51236017,51236253,51236268,51237841,51238486,51238569,51238737,51240629,51241028,51241600,51242448,51243941,51245246,51246266,51246283,51246303,51246799,51248255,51251436,51251509,51251850" + } + ], + "service": "GFEEDBACK" + } + ], + "visitorData": "CgtrbXRsWU4wUEtXbyi-0aC1BjIKCgJERRIEEgAgZg%3D%3D" + }, + "storyboards": { + "playerStoryboardSpecRenderer": { + "recommendedLevel": 2, + "spec": "https://i.ytimg.com/sb/pPvd8UxmSbQ/storyboard3_L$L/$N.jpg?sqp=-oaymwGbA0g48quKqQOSA4gBAZUBAAAEQpgBMqABPKgBBLABELABDbABDLABELABFbABH7ABJrABLbABDrABDrABD7ABErABF7ABK7ABLLABKbABD7ABDrABELABFbABH7ABKrABMrABKbABD7ABEbABFLABGLABJrABPbABOLABLbABEbABFLABHrABKrABMbABS7ABR7ABNrABFbABHLABKbABLrABObABR7ABTbABP7ABJbABLrABN7ABPbABR7ABUrABUbABRbABM7ABQLABQrABQ7ABTLABRLABRrABQ7gBEbgBEbgBFbgBI7gBRLgBQ7gBQ7gBQ7gBEbgBE7gBFrgBL7gBQ7gBQ7gBQ7gBQ7gBFbgBFrgBKbgBQ7gBQ7gBQ7gBQ7gBQ7gBI7gBL7gBQ7gBQ7gBQ7gBQ7gBQ7gBQ7gBRLgBQ7gBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQ7gBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQrgBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQrgBQrgBQ7gBQ7gBQ7gBQrgBQrgBQrgBQrgBQqLzl_8DBgjf8LPxBQ==|48#27#100#10#10#0#default#rs$AOn4CLCsCT8Lprh2S0ptmCRsWH7VtDl3YQ|80#45#83#10#10#2000#M$M#rs$AOn4CLBXrdgfuYV1WLnTGXqZtSAUm8oZCA|160#90#83#5#5#2000#M$M#rs$AOn4CLCRazj84zMuwJLaCCc_PiUakX_YdQ" + } + }, + "streamingData": { + "adaptiveFormats": [ + { + "approxDurationMs": "163046", + "averageBitrate": 3044926, + "bitrate": 3926810, + "contentLength": "62057888", + "fps": 60, + "height": 1080, + "indexRange": { + "end": "1167", + "start": "740" + }, + "initRange": { + "end": "739", + "start": "0" + }, + "itag": 299, + "lastModified": "1705967093743693", + "mimeType": "video/mp4; codecs=\"avc1.64002a\"", + "projectionType": "RECTANGULAR", + "quality": "hd1080", + "qualityLabel": "1080p60", + "url": "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?expire=1722318110&ei=viioZtTdKteHi9oPl42KsAg&ip=93.235.183.158&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&itag=299&aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=mQ&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mv=m&mvi=5&pl=26&initcwndbps=1957500&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&vprv=1&svpuc=1&mime=video%2Fmp4&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&rqh=1&gir=yes&clen=62057888&dur=163.046&lmt=1705967093743693&mt=1722295996&fvip=4&keepalive=yes&lmw=1&c=TVHTML5&sefc=1&txp=1308224&n=9oDhjinGhAMzJwSwL&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRQIgBEemc0Cvd3KhNooNRblgX64_fjNSP30RmWDfFwDR7qYCIQCXpQ9FO0_X93ZHcyvRZCKX5gbJuusCReaRcJbRLFsM_g%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D", + "width": 1920 + }, + { + "approxDurationMs": "163046", + "averageBitrate": 2713348, + "bitrate": 3473307, + "colorInfo": { + "matrixCoefficients": "COLOR_MATRIX_COEFFICIENTS_BT709", + "primaries": "COLOR_PRIMARIES_BT709", + "transferCharacteristics": "COLOR_TRANSFER_CHARACTERISTICS_BT709" + }, + "contentLength": "55300085", + "fps": 60, + "height": 1080, + "indexRange": { + "end": "792", + "start": "219" + }, + "initRange": { + "end": "218", + "start": "0" + }, + "itag": 303, + "lastModified": "1705966651743358", + "mimeType": "video/webm; codecs=\"vp9\"", + "projectionType": "RECTANGULAR", + "quality": "hd1080", + "qualityLabel": "1080p60", + "url": "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?expire=1722318110&ei=viioZtTdKteHi9oPl42KsAg&ip=93.235.183.158&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&itag=303&aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=mQ&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mv=m&mvi=5&pl=26&initcwndbps=1957500&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&vprv=1&svpuc=1&mime=video%2Fwebm&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&rqh=1&gir=yes&clen=55300085&dur=163.046&lmt=1705966651743358&mt=1722295996&fvip=4&keepalive=yes&lmw=1&c=TVHTML5&sefc=1&txp=130F224&n=9oDhjinGhAMzJwSwL&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRQIgTZlmOcsLYJ_a9SnVLehXnaoajtreQO97qawEIDPEi8sCIQDKFdtBWWMuQUb9X8H-x92B3q-y0g8TvAPanR95cfklXQ%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D", + "width": 1920 + }, + { + "approxDurationMs": "163029", + "averageBitrate": 1207947, + "bitrate": 1560439, + "contentLength": "24616305", + "fps": 30, + "height": 720, + "indexRange": { + "end": "1166", + "start": "739" + }, + "initRange": { + "end": "738", + "start": "0" + }, + "itag": 136, + "lastModified": "1705967307531372", + "mimeType": "video/mp4; codecs=\"avc1.4d401f\"", + "projectionType": "RECTANGULAR", + "quality": "hd720", + "qualityLabel": "720p", + "url": "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?expire=1722318110&ei=viioZtTdKteHi9oPl42KsAg&ip=93.235.183.158&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&itag=136&aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=mQ&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mv=m&mvi=5&pl=26&initcwndbps=1957500&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&vprv=1&svpuc=1&mime=video%2Fmp4&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&rqh=1&gir=yes&clen=24616305&dur=163.029&lmt=1705967307531372&mt=1722295996&fvip=4&keepalive=yes&lmw=1&c=TVHTML5&sefc=1&txp=1308224&n=9oDhjinGhAMzJwSwL&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRgIhAM57L2Utesn4xVyT0HSwR9Khv_S-efx4uFAbCPkZFoRXAiEAtIu63-jF2_FZkOMmZAqGU3SRU9QgxoajRjBhMFwcOuk%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D", + "width": 1280 + }, + { + "approxDurationMs": "163029", + "averageBitrate": 722521, + "bitrate": 929607, + "colorInfo": { + "matrixCoefficients": "COLOR_MATRIX_COEFFICIENTS_BT709", + "primaries": "COLOR_PRIMARIES_BT709", + "transferCharacteristics": "COLOR_TRANSFER_CHARACTERISTICS_BT709" + }, + "contentLength": "14723992", + "fps": 30, + "height": 720, + "indexRange": { + "end": "770", + "start": "220" + }, + "initRange": { + "end": "219", + "start": "0" + }, + "itag": 247, + "lastModified": "1705966613897741", + "mimeType": "video/webm; codecs=\"vp9\"", + "projectionType": "RECTANGULAR", + "quality": "hd720", + "qualityLabel": "720p", + "url": "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?expire=1722318110&ei=viioZtTdKteHi9oPl42KsAg&ip=93.235.183.158&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&itag=247&aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=mQ&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mv=m&mvi=5&pl=26&initcwndbps=1957500&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&vprv=1&svpuc=1&mime=video%2Fwebm&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&rqh=1&gir=yes&clen=14723992&dur=163.029&lmt=1705966613897741&mt=1722295996&fvip=4&keepalive=yes&lmw=1&c=TVHTML5&sefc=1&txp=130F224&n=9oDhjinGhAMzJwSwL&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRgIhAL-upITxk7r9FQL5F4WL0A6SjPw673qyyzmXIC48eKfTAiEAlkdkx7IFYtehbhKakbffvIebpPXRtxSgBWLl7WEHCrE%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D", + "width": 1280 + }, + { + "approxDurationMs": "163046", + "averageBitrate": 1694973, + "bitrate": 2188961, + "contentLength": "34544823", + "fps": 60, + "height": 720, + "indexRange": { + "end": "1166", + "start": "739" + }, + "initRange": { + "end": "738", + "start": "0" + }, + "itag": 298, + "lastModified": "1705967092637061", + "mimeType": "video/mp4; codecs=\"avc1.4d4020\"", + "projectionType": "RECTANGULAR", + "quality": "hd720", + "qualityLabel": "720p60", + "url": "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?expire=1722318110&ei=viioZtTdKteHi9oPl42KsAg&ip=93.235.183.158&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&itag=298&aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=mQ&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mv=m&mvi=5&pl=26&initcwndbps=1957500&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&vprv=1&svpuc=1&mime=video%2Fmp4&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&rqh=1&gir=yes&clen=34544823&dur=163.046&lmt=1705967092637061&mt=1722295996&fvip=4&keepalive=yes&lmw=1&c=TVHTML5&sefc=1&txp=1308224&n=9oDhjinGhAMzJwSwL&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRgIhAIIGU41JunuODw9qIlSoYQcwkCYO6k9XOVlDn1Nxqnu7AiEAoiMOgYU8s8lp01fW0L86hHrSrtlvOLSI9XA50iyIGBc%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D", + "width": 1280 + }, + { + "approxDurationMs": "163046", + "averageBitrate": 1482051, + "bitrate": 2250391, + "colorInfo": { + "matrixCoefficients": "COLOR_MATRIX_COEFFICIENTS_BT709", + "primaries": "COLOR_PRIMARIES_BT709", + "transferCharacteristics": "COLOR_TRANSFER_CHARACTERISTICS_BT709" + }, + "contentLength": "30205331", + "fps": 60, + "height": 720, + "indexRange": { + "end": "786", + "start": "219" + }, + "initRange": { + "end": "218", + "start": "0" + }, + "itag": 302, + "lastModified": "1705966545733919", + "mimeType": "video/webm; codecs=\"vp9\"", + "projectionType": "RECTANGULAR", + "quality": "hd720", + "qualityLabel": "720p60", + "url": "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?expire=1722318110&ei=viioZtTdKteHi9oPl42KsAg&ip=93.235.183.158&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&itag=302&aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=mQ&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mv=m&mvi=5&pl=26&initcwndbps=1957500&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&vprv=1&svpuc=1&mime=video%2Fwebm&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&rqh=1&gir=yes&clen=30205331&dur=163.046&lmt=1705966545733919&mt=1722295996&fvip=4&keepalive=yes&lmw=1&c=TVHTML5&sefc=1&txp=130F224&n=9oDhjinGhAMzJwSwL&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRQIhAL428Az_BKxxff4FlH4WleHSy4Igq3mR71NuTMOc9xU3AiBN4lXfH9DklGaQUMnOT8wAhiMuzR73bW3cwr744TSoNA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D", + "width": 1280 + }, + { + "approxDurationMs": "163029", + "averageBitrate": 722499, + "bitrate": 978945, + "contentLength": "14723538", + "fps": 30, + "height": 480, + "indexRange": { + "end": "1167", + "start": "740" + }, + "initRange": { + "end": "739", + "start": "0" + }, + "itag": 135, + "lastModified": "1705967282545273", + "mimeType": "video/mp4; codecs=\"avc1.4d401f\"", + "projectionType": "RECTANGULAR", + "quality": "large", + "qualityLabel": "480p", + "url": "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?expire=1722318110&ei=viioZtTdKteHi9oPl42KsAg&ip=93.235.183.158&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&itag=135&aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=mQ&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mv=m&mvi=5&pl=26&initcwndbps=1957500&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&vprv=1&svpuc=1&mime=video%2Fmp4&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&rqh=1&gir=yes&clen=14723538&dur=163.029&lmt=1705967282545273&mt=1722295996&fvip=4&keepalive=yes&lmw=1&c=TVHTML5&sefc=1&txp=1308224&n=9oDhjinGhAMzJwSwL&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRgIhAM843wAa1e7Gc1S69gfXckm7hdgIKPXp0bUSh3hO6W5zAiEA-DDEPGsZBmF5N8VbPy75dhy3rLpE1F18KtWgmrUm2Pg%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D", + "width": 854 + }, + { + "approxDurationMs": "163029", + "averageBitrate": 382209, + "bitrate": 467884, + "colorInfo": { + "matrixCoefficients": "COLOR_MATRIX_COEFFICIENTS_BT709", + "primaries": "COLOR_PRIMARIES_BT709", + "transferCharacteristics": "COLOR_TRANSFER_CHARACTERISTICS_BT709" + }, + "contentLength": "7788899", + "fps": 30, + "height": 480, + "indexRange": { + "end": "770", + "start": "220" + }, + "initRange": { + "end": "219", + "start": "0" + }, + "itag": 244, + "lastModified": "1705966622098793", + "mimeType": "video/webm; codecs=\"vp9\"", + "projectionType": "RECTANGULAR", + "quality": "large", + "qualityLabel": "480p", + "url": "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?expire=1722318110&ei=viioZtTdKteHi9oPl42KsAg&ip=93.235.183.158&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&itag=244&aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=mQ&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mv=m&mvi=5&pl=26&initcwndbps=1957500&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&vprv=1&svpuc=1&mime=video%2Fwebm&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&rqh=1&gir=yes&clen=7788899&dur=163.029&lmt=1705966622098793&mt=1722295996&fvip=4&keepalive=yes&lmw=1&c=TVHTML5&sefc=1&txp=130F224&n=9oDhjinGhAMzJwSwL&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRQIhAKGyn799bfkVHYE195sPmD60dCMppqJrBM0O-sjgYTzzAiAoBjkNAtL90sXw2YP9UTW9JrMhPSvPiBI_KiCVMJAkFQ%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D", + "width": 854 + }, + { + "approxDurationMs": "163029", + "averageBitrate": 383290, + "bitrate": 537902, + "contentLength": "7810925", + "fps": 30, + "height": 360, + "highReplication": true, + "indexRange": { + "end": "1167", + "start": "740" + }, + "initRange": { + "end": "739", + "start": "0" + }, + "itag": 134, + "lastModified": "1705967286812435", + "mimeType": "video/mp4; codecs=\"avc1.4d401e\"", + "projectionType": "RECTANGULAR", + "quality": "medium", + "qualityLabel": "360p", + "url": "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?expire=1722318110&ei=viioZtTdKteHi9oPl42KsAg&ip=93.235.183.158&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&itag=134&aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=mQ&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mv=m&mvi=5&pl=26&initcwndbps=1957500&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&vprv=1&svpuc=1&mime=video%2Fmp4&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&rqh=1&gir=yes&clen=7810925&dur=163.029&lmt=1705967286812435&mt=1722295996&fvip=4&keepalive=yes&lmw=1&c=TVHTML5&sefc=1&txp=1308224&n=9oDhjinGhAMzJwSwL&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRgIhAJ92IgZgdk3_WLsfzJV_ZyrSFSbzpsoJh3DkRKDHbNxzAiEA9UbnVlXQ2S3BUimLmWC5TZQfhIkc-PlLnZ81fL0S5yA%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D", + "width": 640 + }, + { + "approxDurationMs": "163029", + "averageBitrate": 205556, + "bitrate": 248858, + "colorInfo": { + "matrixCoefficients": "COLOR_MATRIX_COEFFICIENTS_BT709", + "primaries": "COLOR_PRIMARIES_BT709", + "transferCharacteristics": "COLOR_TRANSFER_CHARACTERISTICS_BT709" + }, + "contentLength": "4188954", + "fps": 30, + "height": 360, + "indexRange": { + "end": "770", + "start": "220" + }, + "initRange": { + "end": "219", + "start": "0" + }, + "itag": 243, + "lastModified": "1705966624121874", + "mimeType": "video/webm; codecs=\"vp9\"", + "projectionType": "RECTANGULAR", + "quality": "medium", + "qualityLabel": "360p", + "url": "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?expire=1722318110&ei=viioZtTdKteHi9oPl42KsAg&ip=93.235.183.158&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&itag=243&aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=mQ&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mv=m&mvi=5&pl=26&initcwndbps=1957500&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&vprv=1&svpuc=1&mime=video%2Fwebm&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&rqh=1&gir=yes&clen=4188954&dur=163.029&lmt=1705966624121874&mt=1722295996&fvip=4&keepalive=yes&lmw=1&c=TVHTML5&sefc=1&txp=130F224&n=9oDhjinGhAMzJwSwL&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRQIgSCLGQvdZKNXym0zt7c3Yw_4e0J8-wNxtPagPRRn4dRoCIQCOj0IzalNG4EcowBIyK2LC6NLFDr8Zt6sNVkqPjw6lGg%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D", + "width": 640 + }, + { + "approxDurationMs": "163029", + "averageBitrate": 246656, + "bitrate": 257417, + "contentLength": "5026513", + "fps": 30, + "height": 240, + "indexRange": { + "end": "1166", + "start": "739" + }, + "initRange": { + "end": "738", + "start": "0" + }, + "itag": 133, + "lastModified": "1705967298859029", + "mimeType": "video/mp4; codecs=\"avc1.4d4015\"", + "projectionType": "RECTANGULAR", + "quality": "small", + "qualityLabel": "240p", + "url": "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?expire=1722318110&ei=viioZtTdKteHi9oPl42KsAg&ip=93.235.183.158&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&itag=133&aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=mQ&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mv=m&mvi=5&pl=26&initcwndbps=1957500&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&vprv=1&svpuc=1&mime=video%2Fmp4&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&rqh=1&gir=yes&clen=5026513&dur=163.029&lmt=1705967298859029&mt=1722295996&fvip=4&keepalive=yes&lmw=1&c=TVHTML5&sefc=1&txp=1308224&n=9oDhjinGhAMzJwSwL&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRAIgPF0ms4OEe15BTjOFVCkvf52UeTUf0b62_pavCfEyGjcCIH-0AoxzyT8iioWFFaX7iYjqzzaUTpo8rgAPQ0uX8DJa&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D", + "width": 426 + }, + { + "approxDurationMs": "163029", + "averageBitrate": 124706, + "bitrate": 149589, + "colorInfo": { + "matrixCoefficients": "COLOR_MATRIX_COEFFICIENTS_BT709", + "primaries": "COLOR_PRIMARIES_BT709", + "transferCharacteristics": "COLOR_TRANSFER_CHARACTERISTICS_BT709" + }, + "contentLength": "2541351", + "fps": 30, + "height": 240, + "indexRange": { + "end": "768", + "start": "219" + }, + "initRange": { + "end": "218", + "start": "0" + }, + "itag": 242, + "lastModified": "1705966614837727", + "mimeType": "video/webm; codecs=\"vp9\"", + "projectionType": "RECTANGULAR", + "quality": "small", + "qualityLabel": "240p", + "url": "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?expire=1722318110&ei=viioZtTdKteHi9oPl42KsAg&ip=93.235.183.158&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&itag=242&aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=mQ&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mv=m&mvi=5&pl=26&initcwndbps=1957500&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&vprv=1&svpuc=1&mime=video%2Fwebm&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&rqh=1&gir=yes&clen=2541351&dur=163.029&lmt=1705966614837727&mt=1722295996&fvip=4&keepalive=yes&lmw=1&c=TVHTML5&sefc=1&txp=130F224&n=9oDhjinGhAMzJwSwL&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRQIgKj1JyMGwYtf16zLJsmbnizz5_v3jaZSa7-j-ls8-qzECIQDKUd50iIc52h7zOX50Hf1SkbV9h-hP4QHs-wkik1fk6Q%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D", + "width": 426 + }, + { + "approxDurationMs": "163029", + "averageBitrate": 111551, + "bitrate": 114816, + "contentLength": "2273274", + "fps": 30, + "height": 144, + "indexRange": { + "end": "1165", + "start": "738" + }, + "initRange": { + "end": "737", + "start": "0" + }, + "itag": 160, + "lastModified": "1705967288821438", + "mimeType": "video/mp4; codecs=\"avc1.4d400c\"", + "projectionType": "RECTANGULAR", + "quality": "tiny", + "qualityLabel": "144p", + "url": "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?expire=1722318110&ei=viioZtTdKteHi9oPl42KsAg&ip=93.235.183.158&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&itag=160&aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=mQ&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mv=m&mvi=5&pl=26&initcwndbps=1957500&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&vprv=1&svpuc=1&mime=video%2Fmp4&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&rqh=1&gir=yes&clen=2273274&dur=163.029&lmt=1705967288821438&mt=1722295996&fvip=4&keepalive=yes&lmw=1&c=TVHTML5&sefc=1&txp=1308224&n=9oDhjinGhAMzJwSwL&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRAIgb8eXnQ6MSJ3PuvFVBdYIWTnFobH8mTC9zbZpBNxLbBYCICkPLKEm3gNbW5HIFXs7bwF5rSqUKHHnXNK91qMslQog&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D", + "width": 256 + }, + { + "approxDurationMs": "163029", + "averageBitrate": 56524, + "bitrate": 70630, + "colorInfo": { + "matrixCoefficients": "COLOR_MATRIX_COEFFICIENTS_BT709", + "primaries": "COLOR_PRIMARIES_BT709", + "transferCharacteristics": "COLOR_TRANSFER_CHARACTERISTICS_BT709" + }, + "contentLength": "1151892", + "fps": 30, + "height": 144, + "indexRange": { + "end": "767", + "start": "218" + }, + "initRange": { + "end": "217", + "start": "0" + }, + "itag": 278, + "lastModified": "1705966620402771", + "mimeType": "video/webm; codecs=\"vp9\"", + "projectionType": "RECTANGULAR", + "quality": "tiny", + "qualityLabel": "144p", + "url": "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?expire=1722318110&ei=viioZtTdKteHi9oPl42KsAg&ip=93.235.183.158&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&itag=278&aitags=133%2C134%2C135%2C136%2C160%2C242%2C243%2C244%2C247%2C278%2C298%2C299%2C302%2C303&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=mQ&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mv=m&mvi=5&pl=26&initcwndbps=1957500&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&vprv=1&svpuc=1&mime=video%2Fwebm&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&rqh=1&gir=yes&clen=1151892&dur=163.029&lmt=1705966620402771&mt=1722295996&fvip=4&keepalive=yes&lmw=1&c=TVHTML5&sefc=1&txp=130F224&n=9oDhjinGhAMzJwSwL&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRQIhAP4IybR7cZRpx7IX1ke6UIu_hdFZN3LOuHBDywg_xv5WAiB8_XEx8VhT9OlFxmM-cY0fl6-7GT9uj3clMIPDk2w7cA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D", + "width": 256 + }, + { + "approxDurationMs": "163096", + "audioChannels": 2, + "audioQuality": "AUDIO_QUALITY_MEDIUM", + "audioSampleRate": "44100", + "averageBitrate": 129508, + "bitrate": 130268, + "contentLength": "2640283", + "highReplication": true, + "indexRange": { + "end": "867", + "start": "632" + }, + "initRange": { + "end": "631", + "start": "0" + }, + "itag": 140, + "lastModified": "1705966477945761", + "loudnessDb": 5.2200003, + "mimeType": "audio/mp4; codecs=\"mp4a.40.2\"", + "projectionType": "RECTANGULAR", + "quality": "tiny", + "url": "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?expire=1722318110&ei=viioZtTdKteHi9oPl42KsAg&ip=93.235.183.158&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&itag=140&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=mQ&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mv=m&mvi=5&pl=26&initcwndbps=1957500&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&vprv=1&svpuc=1&mime=audio%2Fmp4&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&rqh=1&gir=yes&clen=2640283&dur=163.096&lmt=1705966477945761&mt=1722295996&fvip=4&keepalive=yes&lmw=1&c=TVHTML5&sefc=1&txp=1308224&n=9oDhjinGhAMzJwSwL&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRAIgSxdbLrbojMVJcyRzsI2TrzOf78LN28bWcsHpbs4QXDwCIHidfXoriWMHfuiktUCdzLuUmksU7r5vITdh6u0puNmx&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D" + }, + { + "approxDurationMs": "163061", + "audioChannels": 2, + "audioQuality": "AUDIO_QUALITY_LOW", + "audioSampleRate": "48000", + "averageBitrate": 45860, + "bitrate": 53073, + "contentLength": "934750", + "indexRange": { + "end": "551", + "start": "266" + }, + "initRange": { + "end": "265", + "start": "0" + }, + "itag": 249, + "lastModified": "1714877357172339", + "loudnessDb": 5.21, + "mimeType": "audio/webm; codecs=\"opus\"", + "projectionType": "RECTANGULAR", + "quality": "tiny", + "url": "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?expire=1722318110&ei=viioZtTdKteHi9oPl42KsAg&ip=93.235.183.158&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&itag=249&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=mQ&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mv=m&mvi=5&pl=26&initcwndbps=1957500&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&vprv=1&svpuc=1&mime=audio%2Fwebm&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&rqh=1&gir=yes&clen=934750&dur=163.061&lmt=1714877357172339&mt=1722295996&fvip=4&keepalive=yes&lmw=1&c=TVHTML5&sefc=1&txp=1308224&n=9oDhjinGhAMzJwSwL&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRQIhAItfaWkRs94vqyae7GR4M1xHoQO2lduvNRFugRSf0h-IAiA9fdLOJMwPI8vAO2C13igyv2qGSpOlKQptS4sN6p5Ffw%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D" + }, + { + "approxDurationMs": "163061", + "audioChannels": 2, + "audioQuality": "AUDIO_QUALITY_LOW", + "audioSampleRate": "48000", + "averageBitrate": 61109, + "bitrate": 71197, + "contentLength": "1245582", + "indexRange": { + "end": "551", + "start": "266" + }, + "initRange": { + "end": "265", + "start": "0" + }, + "itag": 250, + "lastModified": "1714877466693058", + "loudnessDb": 5.21, + "mimeType": "audio/webm; codecs=\"opus\"", + "projectionType": "RECTANGULAR", + "quality": "tiny", + "url": "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?expire=1722318110&ei=viioZtTdKteHi9oPl42KsAg&ip=93.235.183.158&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&itag=250&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=mQ&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mv=m&mvi=5&pl=26&initcwndbps=1957500&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&vprv=1&svpuc=1&mime=audio%2Fwebm&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&rqh=1&gir=yes&clen=1245582&dur=163.061&lmt=1714877466693058&mt=1722295996&fvip=4&keepalive=yes&lmw=1&c=TVHTML5&sefc=1&txp=1308224&n=9oDhjinGhAMzJwSwL&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRQIgdJ1SjWwaloQecEblSIMFp2qFmpG_kKYZP1vX_M55dE0CIQCDSfa_FsaiFRcNL-1LRTgCIRSO7dj5vrpKR1Ya-KbmMw%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D" + }, + { + "approxDurationMs": "163061", + "audioChannels": 2, + "audioQuality": "AUDIO_QUALITY_MEDIUM", + "audioSampleRate": "48000", + "averageBitrate": 121691, + "bitrate": 140833, + "contentLength": "2480393", + "indexRange": { + "end": "551", + "start": "266" + }, + "initRange": { + "end": "265", + "start": "0" + }, + "itag": 251, + "lastModified": "1714877359450110", + "loudnessDb": 5.21, + "mimeType": "audio/webm; codecs=\"opus\"", + "projectionType": "RECTANGULAR", + "quality": "tiny", + "url": "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?expire=1722318110&ei=viioZtTdKteHi9oPl42KsAg&ip=93.235.183.158&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&itag=251&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=mQ&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mv=m&mvi=5&pl=26&initcwndbps=1957500&bui=AXc671IvQBUNCtxNiAkj0M-Bvcb-N5cUu1XFk68f4Cnj0sFLEy1sixyW5lThzLYJXioG8kVQ2xT9KNLS&vprv=1&svpuc=1&mime=audio%2Fwebm&ns=ZR8RwjQ3VJGDvQifdaM1IRMQ&rqh=1&gir=yes&clen=2480393&dur=163.061&lmt=1714877359450110&mt=1722295996&fvip=4&keepalive=yes&lmw=1&c=TVHTML5&sefc=1&txp=1308224&n=9oDhjinGhAMzJwSwL&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AJfQdSswRQIgO0jG-x2l6AF7tjryIX_oM3np78WgNDiseezppLfbQrgCIQCVLdpDhclKc8vQgWGzKXcqsAxgNl5S3MlLT8u1Jeok2A%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D" + } + ], + "expiresInSeconds": "21540", + "formats": [ + { + "approxDurationMs": "163096", + "audioChannels": 2, + "audioQuality": "AUDIO_QUALITY_LOW", + "audioSampleRate": "44100", + "averageBitrate": 503367, + "bitrate": 503574, + "contentLength": "10262148", + "fps": 30, + "height": 360, + "itag": 18, + "lastModified": "1700885551970466", + "mimeType": "video/mp4; codecs=\"avc1.42001E, mp4a.40.2\"", + "projectionType": "RECTANGULAR", + "quality": "medium", + "qualityLabel": "360p", + "url": "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?expire=1722318110&ei=viioZtTdKteHi9oPl42KsAg&ip=93.235.183.158&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&itag=18&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=mQ&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mv=m&mvi=5&pl=26&initcwndbps=1957500&bui=AXc671IT4iUCpJNJWUitTMgIi6njuKSsi3MNed1Szyf0qysTX0v1Nf6AyCvjIGbek5Fn50kuBrGtRJ5q&vprv=1&svpuc=1&mime=video%2Fmp4&ns=YmgbZhlLp0C-9ilsQWGAyUAQ&rqh=1&gir=yes&clen=10262148&ratebypass=yes&dur=163.096&lmt=1700885551970466&mt=1722295996&fvip=4&lmw=1&c=TVHTML5&sefc=1&txp=1318224&n=jTK1xoYpbq_JEKnBL&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cratebypass%2Cdur%2Clmt&sig=AJfQdSswRAIgUah4qH8RqPzmo75ExCWSiRYlUlsAk0v9gl638LitVNICICxFs5lK3CsmOAja0bsXavXkyykzpdhHZKGXOZQYT1f8&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D", + "width": 640 + } + ], + "serverAbrStreamingUrl": "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?expire=1722318110&ei=viioZtTdKteHi9oPl42KsAg&ip=93.235.183.158&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&mh=mQ&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mv=m&mvi=5&pl=26&initcwndbps=1957500&svpuc=1&ns=Kl83P0QZk1oI9742KUD7ly8Q&sabr=1&rqh=1&mt=1722295996&fvip=4&keepalive=yes&c=TVHTML5&smc=1&n=vteqEdq2-fowKcpxH&sparams=expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Cxpc%2Csvpuc%2Cns%2Csabr%2Crqh&sig=AJfQdSswRAIgJRK55pIkQ3Pak9jZ4fHPDsxXv0YgkxKE-FFdIN12ph8CIFHlFEvAoUOoX4Fd1RmyCJqgLZhDkSLwD6s-xVW25kYL&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D" + }, + "trackingParams": "CAAQu2kiEwjUtN-9ts2HAxXXw0IFHZeGAoY=", + "videoDetails": { + "allowRatings": true, + "channelId": "UCbxxEi-ImPlbLx5F-fHetEg", + "isCrawlable": true, + "isLiveContent": false, + "isOwnerViewing": false, + "isPrivate": false, + "isUnpluggedCorpus": false, + "lengthSeconds": "163", + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV", + "thumbnail": { + "thumbnails": [ + { + "height": 360, + "url": "https://i.ytimg.com/vi/pPvd8UxmSbQ/hqdefault.jpg", + "width": 480 + } + ] + }, + "videoId": "pPvd8UxmSbQ" + } +} diff --git a/testfiles/player_model/hdr.json b/testfiles/player_model/hdr.json index 61c3192..ddf78d1 100644 --- a/testfiles/player_model/hdr.json +++ b/testfiles/player_model/hdr.json @@ -31,7 +31,8 @@ "height": 1080 } ], - "channel": { "id": "UCYq-iAOSZBvoUxvfzwKIZWA", "name": "Jacob + Katie Schwarz" }, + "channel_id": "UCYq-iAOSZBvoUxvfzwKIZWA", + "channel_name": "Jacob + Katie Schwarz", "view_count": 216221243, "keywords": [ "4K", diff --git a/testfiles/player_model/multilanguage.json b/testfiles/player_model/multilanguage.json index d36f102..59c7dc5 100644 --- a/testfiles/player_model/multilanguage.json +++ b/testfiles/player_model/multilanguage.json @@ -31,10 +31,8 @@ "height": 1080 } ], - "channel": { - "id": "UCX6OQ3DkcsbYNE6H8uQQuVA", - "name": "MrBeast" - }, + "channel_id": "UCX6OQ3DkcsbYNE6H8uQQuVA", + "channel_name": "MrBeast", "view_count": 136908834, "keywords": [], "is_live": false, diff --git a/tests/youtube.rs b/tests/youtube.rs index f157d99..d1e97f6 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -26,6 +26,7 @@ use rustypipe::validate; #[rstest] #[case::desktop(ClientType::Desktop)] +#[case::tv(ClientType::Tv)] #[case::tv_html5_embed(ClientType::TvHtml5Embed)] #[case::android(ClientType::Android)] #[case::ios(ClientType::Ios)] @@ -40,13 +41,26 @@ async fn get_player_from_client(#[case] client_type: ClientType, rp: RustyPipe) // dbg!(&player_data); assert_eq!(player_data.details.id, "n4tK7LYFxI0"); - assert_eq!( - player_data.details.name, - "Spektrem - Shine | Progressive House | NCS - Copyright Free Music" - ); - if client_type == ClientType::DesktopMusic { - assert!(player_data.details.description.is_none()); - } else { + assert_eq!(player_data.details.duration, 259); + assert!(!player_data.details.thumbnail.is_empty()); + assert_eq!(player_data.details.channel_id, "UC_aEa8K-EOJ3D6gOs7HcyNg"); + assert!(!player_data.details.is_live_content); + + // The TV client dows not output most video metadata + if client_type != ClientType::Tv { + assert_eq!( + player_data.details.name.expect("name"), + "Spektrem - Shine | Progressive House | NCS - Copyright Free Music" + ); + assert_eq!( + player_data.details.channel_name.expect("channel name"), + "NoCopyrightSounds" + ); + assert_gte( + player_data.details.view_count.expect("view count"), + 146_818_808, + "view count", + ); assert!(player_data .details .description @@ -54,15 +68,10 @@ async fn get_player_from_client(#[case] client_type: ClientType, rp: RustyPipe) .contains( "NCS (NoCopyrightSounds): Empowering Creators through Copyright / Royalty Free Music" )); + assert_eq!(player_data.details.keywords[0], "spektrem"); } - assert_eq!(player_data.details.duration, 259); - assert!(!player_data.details.thumbnail.is_empty()); - assert_eq!(player_data.details.channel.id, "UC_aEa8K-EOJ3D6gOs7HcyNg"); - assert_eq!(player_data.details.channel.name, "NoCopyrightSounds"); - assert_gte(player_data.details.view_count, 146_818_808, "view count"); - assert_eq!(player_data.details.keywords[0], "spektrem"); - assert!(!player_data.details.is_live_content); + // Ios uses different A/V formats if client_type == ClientType::Ios { let video = player_data .video_only_streams @@ -237,13 +246,13 @@ async fn get_player( let details = player_data.details; assert_eq!(details.id, id); - assert_eq!(details.name, name); + assert_eq!(details.name.expect("name"), name); let desc = details.description.expect("description"); assert!(desc.contains(description), "description: {desc}"); assert_eq!(details.duration, duration); - assert_eq!(details.channel.id, channel_id); - assert_eq!(details.channel.name, channel_name); - assert_gte(details.view_count, views, "views"); + assert_eq!(details.channel_id, channel_id); + assert_eq!(details.channel_name.expect("channel name"), channel_name); + assert_gte(details.view_count.expect("view count"), views, "views"); assert_eq!(details.is_live, is_live); assert_eq!(details.is_live_content, is_live_content); From 1e1315a8378bd0ad25b5f1614e83dabc4a0b40d5 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 31 Jul 2024 03:27:27 +0200 Subject: [PATCH 098/347] feat: downloader: add audio tagging --- .vscode/settings.json | 2 +- Cargo.toml | 5 +- README.md | 4 + cli/src/main.rs | 4 + downloader/Cargo.toml | 8 +- downloader/src/lib.rs | 311 +++++++++++++++++++++++++++++++++++++---- downloader/src/util.rs | 18 +++ 7 files changed, 323 insertions(+), 29 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 3f2ccb1..637231b 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,3 @@ { - "rust-analyzer.cargo.features": ["rss"] + "rust-analyzer.cargo.features": ["rss", "indicatif", "audiotag"] } diff --git a/Cargo.toml b/Cargo.toml index ee401fd..220e5da 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -74,7 +74,10 @@ tracing-test = "0.2.5" # Included crates rustypipe = { path = ".", version = "0.2.0", default-features = false } -rustypipe-downloader = { path = "./downloader", version = "0.1.0", default-features = false } +rustypipe-downloader = { path = "./downloader", version = "0.1.0", default-features = false, features = [ + "indicatif", + "audiotag", +] } [features] default = ["default-tls"] diff --git a/README.md b/README.md index 432fa4c..15f6876 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,9 @@ # ![RustyPipe](https://code.thetadev.de/ThetaDev/rustypipe/raw/branch/main/notes/logo.svg) +[![Current crates.io version](https://img.shields.io/crates/v/smartcrop2.svg)](https://crates.io/crates/smartcrop2) +[![License](https://img.shields.io/badge/License-GPL--3-blue.svg?style=flat)](http://opensource.org/licenses/MIT) +[![CI status](https://code.thetadev.de/ThetaDev/rustypipe/actions/workflows/ci.yaml/badge.svg?style=flat&label=CI)](https://code.thetadev.de/ThetaDev/rustypipe/actions/?workflow=ci.yaml) + Rust client for the public YouTube / YouTube Music API (Innertube), inspired by [NewPipe](https://github.com/TeamNewPipe/NewPipeExtractor). diff --git a/cli/src/main.rs b/cli/src/main.rs index 484c51b..a4a428a 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -329,6 +329,8 @@ async fn download_video( .rustypipe(rp) .stream_filter(filter) .progress_bar(multi) + .audio_tag() + .crop_cover() .build(); let mut q = target.apply(dl.download_id(id)); if let Some(player_type) = player_type { @@ -361,6 +363,8 @@ async fn download_videos( .rustypipe(rp) .stream_filter(filter) .progress_bar(multi.clone()) + .audio_tag() + .crop_cover() .path_precheck() .build(); diff --git a/downloader/Cargo.toml b/downloader/Cargo.toml index c48fbe8..949a410 100644 --- a/downloader/Cargo.toml +++ b/downloader/Cargo.toml @@ -30,6 +30,8 @@ rustls-tls-native-roots = [ "rustypipe/rustls-tls-native-roots", ] +audiotag = ["dep:lofty", "dep:image", "dep:smartcrop2"] + [dependencies] rustypipe.workspace = true once_cell.workspace = true @@ -39,6 +41,10 @@ futures.workspace = true reqwest = { workspace = true, features = ["stream"] } rand.workspace = true tokio = { workspace = true, features = ["macros", "fs", "process"] } -indicatif.workspace = true +indicatif = { workspace = true, optional = true } 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.2.0", optional = true } diff --git a/downloader/src/lib.rs b/downloader/src/lib.rs index 6e9cfdf..3b72541 100644 --- a/downloader/src/lib.rs +++ b/downloader/src/lib.rs @@ -8,6 +8,7 @@ use std::{ borrow::Cow, cmp::Ordering, ffi::OsString, + io::Cursor, ops::Range, path::{Path, PathBuf}, sync::Arc, @@ -15,7 +16,6 @@ use std::{ }; use futures::stream::{self, StreamExt}; -use indicatif::{MultiProgress, ProgressBar, ProgressStyle}; use once_cell::sync::Lazy; use rand::Rng; use regex::Regex; @@ -23,17 +23,25 @@ use reqwest::{header, Client, StatusCode}; use rustypipe::{ client::{ClientType, RustyPipe}, model::{ + richtext::ToPlaintext, traits::{FileFormat, YtEntity}, - AudioCodec, VideoCodec, VideoPlayer, + AudioCodec, TrackItem, VideoCodec, VideoDetails, VideoPlayer, }, param::StreamFilter, }; +use time::{Date, OffsetDateTime}; use tokio::{ fs::{self, File}, io::AsyncWriteExt, process::Command, }; +#[cfg(feature = "indicatif")] +use indicatif::{MultiProgress, ProgressBar, ProgressStyle}; + +#[cfg(feature = "audiotag")] +use lofty::{config::WriteOptions, picture::Picture, prelude::*, tag::Tag}; + pub use util::DownloadError; type Result = core::result::Result; @@ -54,11 +62,16 @@ pub struct Downloader { pub struct DownloaderBuilder { rp: Option, ffmpeg: String, + #[cfg(feature = "indicatif")] multi: Option, filter: StreamFilter, video_format: DownloadVideoFormat, n_retries: u32, path_precheck: bool, + #[cfg(feature = "audiotag")] + audio_tag: bool, + #[cfg(feature = "audiotag")] + crop_cover: bool, } struct DownloaderInner { @@ -69,6 +82,7 @@ struct DownloaderInner { /// Path to the ffmpeg binary ffmpeg: String, /// Global progress + #[cfg(feature = "indicatif")] multi: Option, /// Default stream filter filter: StreamFilter, @@ -78,6 +92,12 @@ struct DownloaderInner { n_retries: u32, /// Check if destination path exists before player is fetched path_precheck: bool, + /// Apply metadata to audio files + #[cfg(feature = "audiotag")] + audio_tag: bool, + /// Crop YT thumbnails to ensure square album covers + #[cfg(feature = "audiotag")] + crop_cover: bool, } /// Download query @@ -89,6 +109,7 @@ pub struct DownloadQuery { /// Destination dest: DownloadDest, /// Progress bar + #[cfg(feature = "indicatif")] multi: Option, /// Stream filter filter: Option, @@ -200,11 +221,16 @@ impl Default for DownloaderBuilder { Self { rp: None, ffmpeg: "ffmpeg".to_owned(), + #[cfg(feature = "indicatif")] multi: None, filter: StreamFilter::new(), video_format: DownloadVideoFormat::Mp4, n_retries: 3, path_precheck: false, + #[cfg(feature = "audiotag")] + audio_tag: false, + #[cfg(feature = "audiotag")] + crop_cover: false, } } } @@ -235,6 +261,7 @@ impl DownloaderBuilder { /// Set the indicatif [`MultiProgress`] used to show download progress /// for all downloads + #[cfg(feature = "indicatif")] #[must_use] pub fn progress_bar(mut self, progress: MultiProgress) -> Self { self.multi = Some(progress); @@ -277,6 +304,22 @@ impl DownloaderBuilder { self } + /// Enable audio tagging + #[cfg(feature = "audiotag")] + #[must_use] + pub fn audio_tag(mut self) -> Self { + self.audio_tag = true; + self + } + + /// Crop YouTube thumbnails to get square album covers + #[cfg(feature = "audiotag")] + #[must_use] + pub fn crop_cover(mut self) -> Self { + self.crop_cover = true; + self + } + /// Create a new, configured [`Downloader`] instance pub fn build(self) -> Downloader { self.build_with_client( @@ -294,11 +337,16 @@ impl DownloaderBuilder { rp: self.rp.unwrap_or_default(), http: http_client, ffmpeg: self.ffmpeg, + #[cfg(feature = "indicatif")] multi: self.multi, filter: self.filter, video_format: self.video_format, n_retries: self.n_retries, path_precheck: self.path_precheck, + #[cfg(feature = "audiotag")] + audio_tag: self.audio_tag, + #[cfg(feature = "audiotag")] + crop_cover: self.crop_cover, }), } } @@ -328,6 +376,7 @@ impl Downloader { dl: self.clone(), video, dest: DownloadDest::Default, + #[cfg(feature = "indicatif")] multi: None, filter: None, video_format: None, @@ -414,6 +463,7 @@ impl DownloadQuery { } /// Use a [`MultiProgress`] progress bar for all downloads + #[cfg(feature = "indicatif")] pub fn progress_bar(mut self, progress: MultiProgress) -> Self { self.multi = Some(progress); self @@ -443,16 +493,26 @@ impl DownloadQuery { let mut last_err = None; // Progress bar - let multi = self.multi.clone().or_else(|| self.dl.i.multi.clone()); - let pb = multi.map(|m| { - let pb = ProgressBar::new(1); - pb.set_style(ProgressStyle::with_template("{msg}\n{spinner:.green} [{elapsed_precise}] [{wide_bar:.cyan/blue}] {bytes}/{total_bytes} ({bytes_per_sec}, {eta})").unwrap() - .progress_chars("#>-")); - m.add(pb) - }); + #[cfg(feature = "indicatif")] + let pb = { + let multi = self.multi.clone().or_else(|| self.dl.i.multi.clone()); + multi.map(|m| { + let pb = ProgressBar::new(1); + pb.set_style(ProgressStyle::with_template("{msg}\n{spinner:.green} [{elapsed_precise}] [{wide_bar:.cyan/blue}] {bytes}/{total_bytes} ({bytes_per_sec}, {eta})").unwrap() + .progress_chars("#>-")); + m.add(pb) + }) + }; for n in 0..=self.dl.i.n_retries { - let err = match self.download_attempt(&pb, n).await { + let err = match self + .download_attempt( + n, + #[cfg(feature = "indicatif")] + &pb, + ) + .await + { Ok(res) => return Ok(res), Err(DownloadError::Http(e)) => { if !e.is_timeout() && e.status() != Some(StatusCode::FORBIDDEN) { @@ -472,7 +532,11 @@ impl DownloadQuery { Err(last_err.unwrap()) } - async fn download_attempt(&self, pb: &Option, n: u32) -> Result { + async fn download_attempt( + &self, + #[allow(unused_variables)] n: u32, + #[cfg(feature = "indicatif")] pb: &Option, + ) -> Result { let filter = self.filter.as_ref().unwrap_or(&self.dl.i.filter); let video_format = self.video_format.unwrap_or(self.dl.i.video_format); @@ -495,11 +559,13 @@ impl DownloadQuery { } } + #[cfg(feature = "indicatif")] let attempt_suffix = if n > 0 { format!(" (retry #{n})") } else { String::new() }; + #[cfg(feature = "indicatif")] if let Some(pb) = pb { pb.set_message(format!( "Fetching player data for {}{}", @@ -550,7 +616,7 @@ impl DownloadQuery { .details .channel_name .clone() - .or(details.map(|d| d.channel.name)), + .or(details.as_ref().map(|d| d.channel.name.to_owned())), }; let output_path = self.dest.get_dest_path(&pv).with_extension(extension); @@ -580,11 +646,20 @@ impl DownloadQuery { }); } + #[cfg(feature = "indicatif")] if let Some(pb) = pb { pb.set_message(format!("Downloading {name}{attempt_suffix}")) } - download_streams(&downloads, &self.dl.i.http, &user_agent, pb.clone()).await?; + download_streams( + &downloads, + &self.dl.i.http, + &user_agent, + #[cfg(feature = "indicatif")] + pb.clone(), + ) + .await?; + #[cfg(feature = "indicatif")] if let Some(pb) = &pb { pb.set_message(format!("Converting {name}")); pb.set_style( @@ -595,6 +670,25 @@ impl DownloadQuery { } convert_streams(&downloads, &output_path, &self.dl.i.ffmpeg, &name).await?; + + // Tag audio file + #[cfg(feature = "audiotag")] + if self.dl.i.audio_tag && video.is_none() { + let (details, track) = match details { + Some(d) => (d, self.dl.i.rp.query().music_details(&self.video.id).await?), + None => { + let q = self.dl.i.rp.query(); + tokio::try_join!( + q.video_details(&self.video.id), + q.music_details(&self.video.id) + )? + } + }; + self.apply_audio_tags(&output_path, details, track.track) + .await?; + } + + #[cfg(feature = "indicatif")] if let Some(pb) = pb { pb.disable_steady_tick(); } @@ -606,8 +700,9 @@ impl DownloadQuery { .collect::>() .await .into_iter() - .collect::>()?; + .collect::>()?; + #[cfg(feature = "indicatif")] if let Some(pb) = pb { pb.finish_and_clear(); } @@ -616,6 +711,107 @@ impl DownloadQuery { player_data, }) } + + #[cfg(feature = "audiotag")] + async fn apply_audio_tags( + &self, + file: &Path, + details: VideoDetails, + track: TrackItem, + ) -> Result<()> { + use std::num::NonZeroU32; + + use image::codecs::jpeg::JpegEncoder; + + let mut tagged_file = lofty::read_from_path(file)?; + let tag = match tagged_file.primary_tag_mut() { + Some(primary_tag) => primary_tag, + None => { + if let Some(first_tag) = tagged_file.first_tag_mut() { + first_tag + } else { + let tag_type = tagged_file.primary_tag_type(); + tagged_file.insert_tag(Tag::new(tag_type)); + + tagged_file.primary_tag_mut().unwrap() + } + } + }; + + let description = details.description.to_plaintext(); + + tag.set_album( + track + .album + .map(|b| b.name) + .unwrap_or_else(|| track.name.clone()), + ); + tag.set_artist( + track + .artists + .into_iter() + .next() + .map(|a| a.name) + .unwrap_or(details.channel.name), + ); + tag.set_title(track.name); + if let Some(release_date) = extract_yt_release_date(&description, details.publish_date) { + if let Ok(date_str) = release_date.format(&YMD_FORMAT) { + tag.insert_text(ItemKey::RecordingDate, date_str); + } + } + tag.set_comment(description); + + let thumbnail = track.cover.into_iter().max_by_key(|c| c.height); + if let Some(thumbnail) = thumbnail { + let resp = self + .dl + .i + .http + .get(thumbnail.url) + .send() + .await? + .error_for_status()?; + let img_type = resp + .headers() + .get(header::CONTENT_TYPE) + .and_then(|fmt| fmt.to_str().ok()) + .and_then(image::ImageFormat::from_mime_type); + let img_bts = resp.bytes().await?; + + let mut lofty_img = if self.dl.i.crop_cover { + let mut img = if let Some(fmt) = img_type { + image::load_from_memory_with_format(&img_bts, fmt)? + } else { + image::load_from_memory(&img_bts)? + }; + + // Crop cover image if it is not square + if img.height() != img.width() && img.height() > 0 { + let crop = smartcrop::find_best_crop(&img, NonZeroU32::MIN, NonZeroU32::MIN) + .unwrap() + .crop; + img = img.crop_imm(crop.x, crop.y, crop.width, crop.height); + let mut enc_bts = Vec::new(); + img.write_with_encoder(JpegEncoder::new_with_quality(&mut enc_bts, 90))?; + let mut rd = Cursor::new(enc_bts); + Picture::from_reader(&mut rd)? + } else { + let mut rd = Cursor::new(img_bts); + Picture::from_reader(&mut rd)? + } + } else { + let mut rd = Cursor::new(img_bts); + Picture::from_reader(&mut rd)? + }; + + lofty_img.set_pic_type(lofty::picture::PictureType::CoverFront); + tag.set_picture(0, lofty_img); + } + + tag.save_to_path(file, WriteOptions::default())?; + Ok(()) + } } fn get_download_range(offset: u64, size: Option) -> Range { @@ -666,12 +862,12 @@ fn filenamify_lim(name: &str) -> String { } } -async fn download_single_file>( +async fn download_single_file( url: &str, - output: P, + output: &Path, http: &Client, user_agent: &str, - pb: Option, + #[cfg(feature = "indicatif")] pb: Option, ) -> Result<()> { // Check if file is already downloaded let output_path: PathBuf = output.into(); @@ -729,6 +925,7 @@ async fn download_single_file>( size = Some(original_size); offset = file_size; + #[cfg(feature = "indicatif")] if let Some(pb) = &pb { pb.inc_length(original_size); pb.inc(offset); @@ -759,10 +956,29 @@ async fn download_single_file>( .await?; if is_gvideo && size.is_some() { - download_chunks_by_param(http, &mut file, url, size.unwrap(), offset, user_agent, pb) - .await?; + download_chunks_by_param( + http, + &mut file, + url, + size.unwrap(), + offset, + user_agent, + #[cfg(feature = "indicatif")] + pb, + ) + .await?; } else { - download_chunks_by_header(http, &mut file, url, size, offset, user_agent, pb).await?; + download_chunks_by_header( + http, + &mut file, + url, + size, + offset, + user_agent, + #[cfg(feature = "indicatif")] + pb, + ) + .await?; } fs::rename(&output_path_tmp, &output_path).await?; @@ -779,7 +995,7 @@ async fn download_chunks_by_header( size: Option, offset: u64, user_agent: &str, - pb: Option, + #[cfg(feature = "indicatif")] pb: Option, ) -> Result<()> { let mut offset = offset; let mut size = size; @@ -826,6 +1042,7 @@ async fn download_chunks_by_header( offset = parsed_offset + 1; if size.is_none() { size = Some(parsed_size); + #[cfg(feature = "indicatif")] if let Some(pb) = &pb { pb.inc_length(parsed_size); } @@ -836,6 +1053,7 @@ async fn download_chunks_by_header( while let Some(item) = stream.next().await { // Retrieve chunk. let mut chunk = item?; + #[cfg(feature = "indicatif")] if let Some(pb) = &pb { pb.inc(chunk.len() as u64); } @@ -859,9 +1077,10 @@ async fn download_chunks_by_param( size: u64, offset: u64, user_agent: &str, - pb: Option, + #[cfg(feature = "indicatif")] pb: Option, ) -> Result<()> { let mut offset = offset; + #[cfg(feature = "indicatif")] if let Some(pb) = &pb { pb.inc_length(size); } @@ -891,6 +1110,7 @@ async fn download_chunks_by_param( while let Some(item) = stream.next().await { // Retrieve chunk. let mut chunk = item?; + #[cfg(feature = "indicatif")] if let Some(pb) = &pb { pb.inc(chunk.len() as u64); } @@ -918,12 +1138,21 @@ async fn download_streams( downloads: &Vec, http: &Client, user_agent: &str, - pb: Option, + #[cfg(feature = "indicatif")] pb: Option, ) -> Result<()> { let n = downloads.len(); stream::iter(downloads) - .map(|d| download_single_file(&d.url, d.file.clone(), http, user_agent, pb.clone())) + .map(|d| { + download_single_file( + &d.url, + &d.file, + http, + user_agent, + #[cfg(feature = "indicatif")] + pb.clone(), + ) + }) .buffer_unordered(n) .collect::>() .await @@ -933,9 +1162,9 @@ async fn download_streams( Ok(()) } -async fn convert_streams>( +async fn convert_streams( downloads: &[StreamDownload], - output: P, + output: &Path, ffmpeg: &str, title: &str, ) -> Result<()> { @@ -975,3 +1204,33 @@ async fn convert_streams>( } Ok(()) } + +const YMD_FORMAT: &[time::format_description::FormatItem] = + time::macros::format_description!("[year]-[month]-[day]"); + +fn extract_yt_release_date( + description: &str, + publish_date: Option, +) -> Option { + static RELEASE_DATE_REGEX: Lazy = + Lazy::new(|| Regex::new(r"Released on: (\d{4}-\d{2}-\d{2})").unwrap()); + + RELEASE_DATE_REGEX + .captures(description) + .and_then(|cap| { + let raw_date = &cap[1]; + Date::parse(raw_date, YMD_FORMAT).ok() + }) + .map(|release_date| { + if let Some(upload_date) = publish_date { + // Prefer the video upload date if it lies within 4 days of the release date + let upload_date = upload_date.date(); + let diff = (upload_date - release_date).abs(); + if diff < time::Duration::days(4) { + return upload_date; + } + } + release_date + }) + .or_else(|| publish_date.map(|d| d.date())) +} diff --git a/downloader/src/util.rs b/downloader/src/util.rs index d95b8f0..3934e2f 100644 --- a/downloader/src/util.rs +++ b/downloader/src/util.rs @@ -27,11 +27,29 @@ pub enum DownloadError { /// Download target already exists #[error("file {0} already exists")] Exists(PathBuf), + #[cfg(feature = "audiotag")] + /// Audio tagging error + #[error("Audio tag error: {0}")] + AudioTag(Cow<'static, str>), /// Other error #[error("error: {0}")] Other(Cow<'static, str>), } +#[cfg(feature = "audiotag")] +impl From for DownloadError { + fn from(value: lofty::error::LoftyError) -> Self { + Self::AudioTag(value.to_string().into()) + } +} + +#[cfg(feature = "audiotag")] +impl From for DownloadError { + fn from(value: image::ImageError) -> Self { + Self::AudioTag(value.to_string().into()) + } +} + /// Split an URL into its base string and parameter map /// /// Example: From 3c83e11e753f8eb6efea5d453a7c819c487b3464 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 31 Jul 2024 21:46:32 +0200 Subject: [PATCH 099/347] fix: nsig fn extraction --- src/deobfuscate.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/deobfuscate.rs b/src/deobfuscate.rs index 58e2924..4f90df9 100644 --- a/src/deobfuscate.rs +++ b/src/deobfuscate.rs @@ -164,6 +164,7 @@ fn get_sig_fn(player_js: &str) -> Result { + &deobfuscate_function + &caller_function(DEOBF_SIG_FUNC_NAME, &dfunc_name); verify_fn(&js_fn, DEOBF_SIG_FUNC_NAME)?; + tracing::debug!("successfully extracted sig fn `{dfunc_name}`"); Ok(js_fn) } @@ -171,7 +172,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#"\w\.get\(.+\w=(\w{2,})\[(\d+)\]\(\w\).+\w\.set\("#).unwrap() + Regex::new(r#"(?:\w\.get\(|index\.m3u8).+\w=(\w{2,})\[(\d+)\]\(\w\).+\w\.set\("#).unwrap() }); FUNCTION_NAME_REGEX @@ -265,7 +266,7 @@ fn get_nsig_fn(player_js: &str) -> Result { let js_fn = extract_js_fn(&player_js[offset..], name) .map(|s| s + ";" + &caller_function(DEOBF_NSIG_FUNC_NAME, name))?; verify_fn(&js_fn, DEOBF_NSIG_FUNC_NAME)?; - tracing::info!("Successfully extracted nsig fn `{name}`"); + tracing::debug!("successfully extracted nsig fn `{name}`"); Ok(js_fn) }; @@ -436,6 +437,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 let deobf_sig = deobf.deobfuscate_sig("GOqGOqGOq0QJ8wRAIgaryQHfplJ9xJSKFywyaSMHuuwZYsoMTAvRvfm51qIGECIA5061zWeyfMPX9hEl_U6f9J0tr7GTJMKyPf5XNrJb5fb5i").unwrap(); assert!(deobf_sig.len() >= 100); let deobf_nsig = deobf.deobfuscate_nsig("WHbZ-Nj2TSJxder").unwrap(); - assert!(deobf_nsig.len() >= 10); + assert!(deobf_nsig.len() >= 6); } } From e1e4fb29c190fec07f17c59ec88bef4f1c2a76a1 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 1 Aug 2024 03:11:54 +0200 Subject: [PATCH 100/347] feat: downloader: add download_track fn, improve path templates --- cli/src/main.rs | 30 +++--- downloader/Cargo.toml | 2 +- downloader/src/lib.rs | 220 +++++++++++++++++++++++++++++++++++------- 3 files changed, 201 insertions(+), 51 deletions(-) diff --git a/cli/src/main.rs b/cli/src/main.rs index a4a428a..3a8d503 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -7,10 +7,10 @@ use futures::stream::{self, StreamExt}; use indicatif::{MultiProgress, ProgressBar, ProgressStyle}; use rustypipe::{ client::{ClientType, RustyPipe}, - model::{UrlTarget, VideoId, YouTubeItem}, + model::{UrlTarget, YouTubeItem}, param::{search_filter, ChannelVideoTab, Country, Language, StreamFilter}, }; -use rustypipe_downloader::{DownloadError, DownloadQuery, DownloaderBuilder}; +use rustypipe_downloader::{DownloadError, DownloadQuery, DownloadVideo, DownloaderBuilder}; use serde::Serialize; use tracing::level_filters::LevelFilter; use tracing_subscriber::{fmt::MakeWriter, EnvFilter}; @@ -344,7 +344,7 @@ async fn download_video( async fn download_videos( rp: &RustyPipe, - videos: &[VideoId], + videos: Vec, target: &DownloadTarget, resolution: Option, parallel: usize, @@ -385,9 +385,9 @@ async fn download_videos( .for_each_concurrent(parallel, |video| { let dl = dl.clone(); let main = main.clone(); - let id = &video.id; + let id = video.id().to_owned(); - let mut q = target.apply(dl.download_entity(video)); + let mut q = target.apply(dl.download_video(video)); if let Some(player_type) = player_type { q = q.player_type(player_type.into()); } @@ -482,16 +482,16 @@ async fn main() { .extend_limit(&rp.query(), limit) .await .unwrap(); - let videos: Vec = channel + let videos = channel .content .items .into_iter() .take(limit) - .map(VideoId::from) + .map(|v| DownloadVideo::from_entity(&v)) .collect(); download_videos( &rp, - &videos, + videos, &target, resolution, parallel, @@ -502,7 +502,7 @@ async fn main() { } UrlTarget::Playlist { id } => { target.assert_dir(); - let videos: Vec = if music { + let videos = if music { let mut playlist = rp.query().music_playlist(id).await.unwrap(); playlist .tracks @@ -514,7 +514,7 @@ async fn main() { .items .into_iter() .take(limit) - .map(VideoId::from) + .map(|v| DownloadVideo::from_track(&v)) .collect() } else { let mut playlist = rp.query().playlist(id).await.unwrap(); @@ -528,12 +528,12 @@ async fn main() { .items .into_iter() .take(limit) - .map(VideoId::from) + .map(|v| DownloadVideo::from_entity(&v)) .collect() }; download_videos( &rp, - &videos, + videos, &target, resolution, parallel, @@ -545,15 +545,15 @@ async fn main() { UrlTarget::Album { id } => { target.assert_dir(); let album = rp.query().music_album(id).await.unwrap(); - let videos: Vec = album + let videos = album .tracks .into_iter() .take(limit) - .map(VideoId::from) + .map(|v| DownloadVideo::from_track(&v)) .collect(); download_videos( &rp, - &videos, + videos, &target, resolution, parallel, diff --git a/downloader/Cargo.toml b/downloader/Cargo.toml index 949a410..b04d087 100644 --- a/downloader/Cargo.toml +++ b/downloader/Cargo.toml @@ -47,4 +47,4 @@ tracing.workspace = true time.workspace = true lofty = { version = "0.21.0", optional = true } image = { version = "0.25.0", optional = true } -smartcrop2 = { version = "0.2.0", optional = true } +smartcrop2 = { version = "0.3.0", optional = true } diff --git a/downloader/src/lib.rs b/downloader/src/lib.rs index 3b72541..d9588cd 100644 --- a/downloader/src/lib.rs +++ b/downloader/src/lib.rs @@ -9,6 +9,7 @@ use std::{ cmp::Ordering, ffi::OsString, io::Cursor, + num::NonZeroU32, ops::Range, path::{Path, PathBuf}, sync::Arc, @@ -25,7 +26,7 @@ use rustypipe::{ model::{ richtext::ToPlaintext, traits::{FileFormat, YtEntity}, - AudioCodec, TrackItem, VideoCodec, VideoDetails, VideoPlayer, + AudioCodec, TrackItem, VideoCodec, VideoDetails, VideoPlayer, VideoPlayerDetails, }, param::StreamFilter, }; @@ -119,16 +120,26 @@ pub struct DownloadQuery { player_type: Option, } +/// Video to be downloaded #[derive(Default)] -struct DownloadVideo { +pub struct DownloadVideo { id: String, name: Option, channel_id: Option, channel_name: Option, + album_id: Option, + album_name: Option, + track_nr: Option, } impl DownloadVideo { - fn from_video(video: &impl YtEntity) -> Self { + /// Get the YouTube video id + pub fn id(&self) -> &str { + &self.id + } + + /// Create a new DownloadVideo from a YouTube entity + pub fn from_entity(video: &impl YtEntity) -> Self { DownloadVideo { id: video.id().to_owned(), name: Some(video.name().to_owned()), @@ -136,6 +147,26 @@ impl DownloadVideo { channel_name: video .channel_name() .map(|n| n.strip_suffix(" - Topic").unwrap_or(n).to_owned()), + album_id: None, + album_name: None, + track_nr: None, + } + } + + /// Create a new DownloadVideo from a YTM track + pub fn from_track(track: &TrackItem) -> Self { + DownloadVideo { + id: track.id.to_owned(), + name: Some(track.name.to_owned()), + channel_id: track.channel_id().map(str::to_owned), + channel_name: if track.by_va { + Some("Various Artists".to_owned()) + } else { + track.channel_name().map(str::to_owned) + }, + album_id: track.album.as_ref().map(|b| b.id.to_owned()), + album_name: track.album.as_ref().map(|b| b.name.to_owned()), + track_nr: track.track_nr, } } } @@ -149,11 +180,11 @@ enum DownloadDest { } fn video_filename(v: &DownloadVideo) -> String { - filenamify_lim(&format!( - "{} [{}]", - v.name.as_deref().unwrap_or_default(), - v.id - )) + let mut n = format!("{} [{}]", v.name.as_deref().unwrap_or_default(), v.id); + if let Some(track_nr) = v.track_nr { + n = format!("{track_nr:02} {n}"); + } + filenamify_lim(&n) } /// Video container format for downloading @@ -191,6 +222,8 @@ impl DownloadVideoFormat { impl DownloadDest { fn get_dest_path(&self, v: &DownloadVideo) -> PathBuf { + static RE_TEMPLATE: Lazy = Lazy::new(|| Regex::new(r#"\{\w+\} *"#).unwrap()); + match self { DownloadDest::Default => PathBuf::from(video_filename(v)), DownloadDest::File(p) => p.clone(), @@ -199,17 +232,38 @@ impl DownloadDest { .iter() .map(|part| { let s = part.to_string_lossy(); - let mut s = s.replace("{id}", &v.id); - if let Some(name) = &v.name { - s = s.replace("{title}", name) + + let (mut replaced, last_end) = RE_TEMPLATE.find_iter(&s).fold( + (String::new(), 0), + |(mut acc, last_end), m| { + acc += &s[last_end..m.start()]; + let ms = m.as_str(); + let trimmed = ms.trim_end_matches(' '); + let repl: Option> = match trimmed.trim_matches(['{', '}']) { + "id" => Some(v.id.as_str().into()), + "title" => v.name.as_deref().map(Cow::from), + "channel" => v.channel_name.as_deref().map(Cow::from), + "channelId" => v.channel_id.as_deref().map(Cow::from), + "album" => v.album_name.as_deref().map(Cow::from), + "albumId" => v.album_id.as_deref().map(Cow::from), + "track" => v.track_nr.map(|n| format!("{n:02}").into()), + _ => None, + }; + if let Some(repl) = repl { + acc += &repl; + acc += &ms[trimmed.len()..]; + } + (acc, m.end()) + }, + ); + replaced += &s[last_end..]; + replaced = replaced.trim().to_owned(); + + if replaced.is_empty() { + "-".to_owned() + } else { + filenamify_lim(&replaced) } - if let Some(channel) = &v.channel_name { - s = s.replace("{channel}", channel) - } - if let Some(id) = &v.channel_id { - s = s.replace("{channelId}", id); - } - filenamify_lim(&s) }) .collect(), } @@ -392,12 +446,27 @@ impl Downloader { }) } + /// Download a video from a DownloadVideo object + pub fn download_video(&self, video: DownloadVideo) -> DownloadQuery { + self.query(video) + } + /// Download a video from a [`YtEntity`] object (e.g. playlist/channel video) /// /// 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. pub fn download_entity(&self, video: &impl YtEntity) -> DownloadQuery { - self.query(DownloadVideo::from_video(video)) + self.query(DownloadVideo::from_entity(video)) + } + + /// 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. + /// + /// If an album track is downloaded, this method will also add the track number to the downloaded file + pub fn download_track(&self, track: &TrackItem) -> DownloadQuery { + self.query(DownloadVideo::from_track(track)) } } @@ -617,6 +686,9 @@ impl DownloadQuery { .channel_name .clone() .or(details.as_ref().map(|d| d.channel.name.to_owned())), + album_id: self.video.album_id.to_owned(), + album_name: self.video.album_name.to_owned(), + track_nr: self.video.track_nr, }; let output_path = self.dest.get_dest_path(&pv).with_extension(extension); @@ -684,8 +756,14 @@ impl DownloadQuery { )? } }; - self.apply_audio_tags(&output_path, details, track.track) - .await?; + self.apply_audio_tags( + &output_path, + details, + &player_data.details, + track.track, + pv.track_nr, + ) + .await?; } #[cfg(feature = "indicatif")] @@ -717,12 +795,10 @@ impl DownloadQuery { &self, file: &Path, details: VideoDetails, + player_details: &VideoPlayerDetails, track: TrackItem, + track_nr: Option, ) -> Result<()> { - use std::num::NonZeroU32; - - use image::codecs::jpeg::JpegEncoder; - let mut tagged_file = lofty::read_from_path(file)?; let tag = match tagged_file.primary_tag_mut() { Some(primary_tag) => primary_tag, @@ -761,8 +837,30 @@ impl DownloadQuery { } } tag.set_comment(description); + if let Some(track_nr) = track_nr { + tag.set_track(track_nr.into()); + } + + // For YTM tracks the music details contain a high quality, square cover image, but for music videos + // the cover images are cropped and of worse resolution. + // Therefore we switch to the thumbnails from the player data if the music details contain no square + // thumbnails. + let thumbnail_music = track.cover.into_iter().max_by_key(|c| c.height); + let thumbnail = if thumbnail_music + .as_ref() + .map(|tn| tn.height == tn.width) + .unwrap_or_default() + { + thumbnail_music + } else { + let thumbnail_player = player_details + .thumbnail + .iter() + .max_by_key(|c| c.height) + .cloned(); + thumbnail_player.or(thumbnail_music) + }; - let thumbnail = track.cover.into_iter().max_by_key(|c| c.height); if let Some(thumbnail) = thumbnail { let resp = self .dl @@ -780,20 +878,23 @@ impl DownloadQuery { let img_bts = resp.bytes().await?; let mut lofty_img = if self.dl.i.crop_cover { - let mut img = if let Some(fmt) = img_type { - image::load_from_memory_with_format(&img_bts, fmt)? - } else { - image::load_from_memory(&img_bts)? - }; - // Crop cover image if it is not square - if img.height() != img.width() && img.height() > 0 { + if thumbnail.height != thumbnail.width { + let mut img = if let Some(fmt) = img_type { + image::load_from_memory_with_format(&img_bts, fmt)? + } else { + image::load_from_memory(&img_bts)? + }; + let crop = smartcrop::find_best_crop(&img, NonZeroU32::MIN, NonZeroU32::MIN) - .unwrap() + .map_err(|e| DownloadError::AudioTag(format!("image crop: {e}").into()))? .crop; img = img.crop_imm(crop.x, crop.y, crop.width, crop.height); let mut enc_bts = Vec::new(); - img.write_with_encoder(JpegEncoder::new_with_quality(&mut enc_bts, 90))?; + img.write_with_encoder(image::codecs::jpeg::JpegEncoder::new_with_quality( + &mut enc_bts, + 90, + ))?; let mut rd = Cursor::new(enc_bts); Picture::from_reader(&mut rd)? } else { @@ -1234,3 +1335,52 @@ fn extract_yt_release_date( }) .or_else(|| publish_date.map(|d| d.date())) } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn template() { + let dest = + DownloadDest::Template(PathBuf::from("{channel}/{album}/{track} {title} [{id}]")); + let track_path = dest.get_dest_path(&DownloadVideo { + id: "a3Fo1vYyiDw".to_owned(), + name: Some("Volle Kraft voraus".to_owned()), + channel_id: Some("UCE7_p3lcXA-YXRZp2PjrgYw".to_owned()), + channel_name: Some("Helene Fischer".to_owned()), + album_id: Some("MPREb_O2gXCdCVGsZ".to_owned()), + album_name: Some("Rausch (Deluxe)".to_owned()), + track_nr: Some(1), + }); + assert_eq!( + track_path.to_str().unwrap(), + "Helene Fischer/Rausch (Deluxe)/01 Volle Kraft voraus [a3Fo1vYyiDw]" + ); + + let video_path = dest.get_dest_path(&DownloadVideo { + id: "5en96GIijXk".to_owned(), + name: Some("a pretty cloud, and a happy duck".to_owned()), + channel_id: Some("UCl2mFZoRqjw_ELax4Yisf6w".to_owned()), + channel_name: Some("Louis Rossmann".to_owned()), + album_id: None, + album_name: None, + track_nr: None, + }); + assert_eq!( + video_path.to_str().unwrap(), + "Louis Rossmann/-/a pretty cloud, and a happy duck [5en96GIijXk]" + ); + + let ido_path = dest.get_dest_path(&DownloadVideo { + id: "5en96GIijXk".to_owned(), + name: None, + channel_id: None, + channel_name: None, + album_id: None, + album_name: None, + track_nr: None, + }); + assert_eq!(ido_path.to_str().unwrap(), "-/-/[5en96GIijXk]"); + } +} From c6bd03fb70871ae1b764be18f88e86e71818fc56 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 6 Aug 2024 14:01:38 +0200 Subject: [PATCH 101/347] fix: add var to deobf fn assignment --- src/deobfuscate.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/deobfuscate.rs b/src/deobfuscate.rs index 4f90df9..6f21adf 100644 --- a/src/deobfuscate.rs +++ b/src/deobfuscate.rs @@ -264,7 +264,7 @@ fn get_nsig_fn(player_js: &str) -> Result { .ok_or(DeobfError::Extraction("could not find function base"))?; let js_fn = extract_js_fn(&player_js[offset..], name) - .map(|s| s + ";" + &caller_function(DEOBF_NSIG_FUNC_NAME, name))?; + .map(|s| format!("var {};{}", s, 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) @@ -331,7 +331,7 @@ mod tests { }); const SIG_DEOBF_FUNC: &str = r#"var qB={w8:function(a){a.reverse()},EC:function(a,b){var c=a[0];a[0]=a[b%a.length];a[b%a.length]=c},Np:function(a,b){a.splice(0,b)}};var Rva=function(a){a=a.split("");qB.Np(a,3);qB.w8(a,41);qB.EC(a,55);qB.Np(a,3);qB.w8(a,33);qB.Np(a,3);qB.EC(a,48);qB.EC(a,17);qB.EC(a,43);return a.join("")};var deobf_sig=Rva;"#; - const NSIG_DEOBF_FUNC: &str = r#"Vo=function(a){var b=a.split(""),c=[function(d,e,f){var h=f.length;d.forEach(function(l,m,n){this.push(n[m]=f[(f.indexOf(l)-f.indexOf(this[m])+m+h--)%f.length])},e.split(""))}, + const NSIG_DEOBF_FUNC: &str = r#"var Vo=function(a){var b=a.split(""),c=[function(d,e,f){var h=f.length;d.forEach(function(l,m,n){this.push(n[m]=f[(f.indexOf(l)-f.indexOf(this[m])+m+h--)%f.length])},e.split(""))}, 928409064,-595856984,1403221911,653089124,-168714481,-1883008765,158931990,1346921902,361518508,1403221911,-362174697,-233641452,function(){for(var d=64,e=[];++d-e.length-32;){switch(d){case 91:d=44;continue;case 123:d=65;break;case 65:d-=18;continue;case 58:d=96;continue;case 46:d=95}e.push(String.fromCharCode(d))}return e}, b,158931990,791141857,-907319795,-1776185924,1595027902,-829736173,function(d,e){e=(e%d.length+d.length)%d.length;d.splice(0,1,d.splice(e,1,d[0])[0])}, -1274951142,function(){for(var d=64,e=[];++d-e.length-32;){switch(d){case 91:d=44;continue;case 123:d=65;break;case 65:d-=18;continue;case 58:d=96;continue;case 46:d=95}e.push(String.fromCharCode(d))}return e}, From 97fb0578b5c4954a596d8dee0c4b6e1d773a9300 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 6 Aug 2024 14:04:03 +0200 Subject: [PATCH 102/347] feat: add audiotag+indicatif features to downloader --- .forgejo/workflows/ci.yaml | 2 +- .pre-commit-config.yaml | 2 +- cli/src/main.rs | 101 +++++++++++-------------------------- downloader/README.md | 42 +++++++++++++++ downloader/src/lib.rs | 96 +++++++++++++++++++++++++---------- 5 files changed, 144 insertions(+), 99 deletions(-) create mode 100644 downloader/README.md diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index 4239b3a..11582b8 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -17,7 +17,7 @@ jobs: cache-on-failure: "true" - name: 📎 Clippy - run: cargo clippy --all --features=rss -- -D warnings + run: cargo clippy --all --tests --features=rss,indicatif,audiotag -- -D warnings - name: 🧪 Test run: cargo nextest run --config-file ~/.config/nextest.toml --profile ci --retries 2 --features rss --workspace diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index defbeb7..05a4482 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -10,4 +10,4 @@ repos: hooks: - id: cargo-fmt - id: cargo-clippy - args: ["--all", "--tests", "--features=rss", "--", "-D", "warnings"] + args: ["--all", "--tests", "--features=rss,indicatif,audiotag", "--", "-D", "warnings"] diff --git a/cli/src/main.rs b/cli/src/main.rs index 3a8d503..3fbd68c 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -1,3 +1,4 @@ +#![doc = include_str!("../README.md")] #![warn(clippy::todo, clippy::dbg_macro)] use std::{path::PathBuf, str::FromStr, time::Duration}; @@ -10,7 +11,9 @@ use rustypipe::{ model::{UrlTarget, YouTubeItem}, param::{search_filter, ChannelVideoTab, Country, Language, StreamFilter}, }; -use rustypipe_downloader::{DownloadError, DownloadQuery, DownloadVideo, DownloaderBuilder}; +use rustypipe_downloader::{ + DownloadError, DownloadQuery, DownloadVideo, Downloader, DownloaderBuilder, +}; use serde::Serialize; use tracing::level_filters::LevelFilter; use tracing_subscriber::{fmt::MakeWriter, EnvFilter}; @@ -310,29 +313,12 @@ fn print_data(data: &T, format: Format, pretty: bool) { } async fn download_video( - rp: &RustyPipe, + dl: &Downloader, id: &str, target: &DownloadTarget, - resolution: Option, player_type: Option, - multi: MultiProgress, ) { - let mut filter = StreamFilter::new(); - if let Some(res) = resolution { - if res == 0 { - filter = filter.no_video(); - } else { - filter = filter.video_max_res(res); - } - } - let dl = DownloaderBuilder::new() - .rustypipe(rp) - .stream_filter(filter) - .progress_bar(multi) - .audio_tag() - .crop_cover() - .build(); - let mut q = target.apply(dl.download_id(id)); + let mut q = target.apply(dl.id(id)); if let Some(player_type) = player_type { q = q.player_type(player_type.into()); } @@ -343,31 +329,13 @@ async fn download_video( } async fn download_videos( - rp: &RustyPipe, + dl: &Downloader, videos: Vec, target: &DownloadTarget, - resolution: Option, parallel: usize, player_type: Option, multi: MultiProgress, ) { - let mut filter = StreamFilter::new(); - if let Some(res) = resolution { - if res == 0 { - filter = filter.no_video(); - } else { - filter = filter.video_max_res(res); - } - } - let dl = DownloaderBuilder::new() - .rustypipe(rp) - .stream_filter(filter) - .progress_bar(multi.clone()) - .audio_tag() - .crop_cover() - .path_precheck() - .build(); - // Indicatif setup let main = multi.add(ProgressBar::new( videos.len().try_into().unwrap_or_default(), @@ -387,7 +355,7 @@ async fn download_videos( let main = main.clone(); let id = video.id().to_owned(); - let mut q = target.apply(dl.download_video(video)); + let mut q = target.apply(dl.video(video)); if let Some(player_type) = player_type { q = q.player_type(player_type.into()); } @@ -470,9 +438,27 @@ async fn main() { player_type, } => { let url_target = rp.query().resolve_string(&id, false).await.unwrap(); + + let mut filter = StreamFilter::new(); + if let Some(res) = resolution { + if res == 0 { + filter = filter.no_video(); + } else { + filter = filter.video_max_res(res); + } + } + let dl = DownloaderBuilder::new() + .rustypipe(&rp) + .stream_filter(filter) + .multi_progress(multi.clone()) + .audio_tag() + .crop_cover() + .path_precheck() + .build(); + match url_target { UrlTarget::Video { id, .. } => { - download_video(&rp, &id, &target, resolution, player_type, multi).await; + download_video(&dl, &id, &target, player_type).await; } UrlTarget::Channel { id } => { target.assert_dir(); @@ -489,16 +475,7 @@ async fn main() { .take(limit) .map(|v| DownloadVideo::from_entity(&v)) .collect(); - download_videos( - &rp, - videos, - &target, - resolution, - parallel, - player_type, - multi, - ) - .await; + download_videos(&dl, videos, &target, parallel, player_type, multi).await; } UrlTarget::Playlist { id } => { target.assert_dir(); @@ -531,16 +508,7 @@ async fn main() { .map(|v| DownloadVideo::from_entity(&v)) .collect() }; - download_videos( - &rp, - videos, - &target, - resolution, - parallel, - player_type, - multi, - ) - .await; + download_videos(&dl, videos, &target, parallel, player_type, multi).await; } UrlTarget::Album { id } => { target.assert_dir(); @@ -551,16 +519,7 @@ async fn main() { .take(limit) .map(|v| DownloadVideo::from_track(&v)) .collect(); - download_videos( - &rp, - videos, - &target, - resolution, - parallel, - player_type, - multi, - ) - .await; + download_videos(&dl, videos, &target, parallel, player_type, multi).await; } } } diff --git a/downloader/README.md b/downloader/README.md new file mode 100644 index 0000000..24a554a --- /dev/null +++ b/downloader/README.md @@ -0,0 +1,42 @@ +# RustyPipe downloader + +The downloader is a companion crate for RustyPipe that allows for easy and fast +downloading of video and audio files. + +## Features + +- Fast download of streams, bypassing YouTube's throttling +- Join video and audio streams using ffmpeg +- [Indicatif](https://crates.io/crates/indicatif) support to show download progress bars + (enable `indicatif` feature to use) +- Tag audio files with title, album, artist, date, description and album cover (enable + `audiotag` feature to use) +- Album covers are automatically cropped using smartcrop to ensure they are square + +## How to use + +For the downloader to work, you need to have ffmpeg installed on your system. If your +ffmpeg binary is located at a non-standard path, you can configure the location using +[`DownloaderBuilder::ffmpeg`]. + +At first you have to instantiate and configure the downloader using either +[`Downloader::new`] or the [`DownloaderBuilder`]. + +Then you can build a new download query with a video ID, stream filter and destination +path and finally download the video. + +```rust ignore +use rustypipe::param::StreamFilter; +use rustypipe_downloader::DownloaderBuilder; + +let dl = DownloaderBuilder::new() + .audio_tag() + .crop_cover() + .build(); + +let filter_audio = StreamFilter::new().no_video(); +dl.id("ZeerrnuLi5E").stream_filter(filter_audio).to_file("audio.opus").download().await; + +let filter_video = StreamFilter::new().video_max_res(720); +dl.id("ZeerrnuLi5E").stream_filter(filter_video).to_file("video.mp4").download().await; +``` diff --git a/downloader/src/lib.rs b/downloader/src/lib.rs index d9588cd..685f69d 100644 --- a/downloader/src/lib.rs +++ b/downloader/src/lib.rs @@ -1,15 +1,12 @@ +#![doc = include_str!("../README.md")] #![warn(missing_docs, clippy::todo, clippy::dbg_macro)] -//! # YouTube audio/video downloader - mod util; use std::{ borrow::Cow, cmp::Ordering, ffi::OsString, - io::Cursor, - num::NonZeroU32, ops::Range, path::{Path, PathBuf}, sync::Arc, @@ -24,13 +21,11 @@ use reqwest::{header, Client, StatusCode}; use rustypipe::{ client::{ClientType, RustyPipe}, model::{ - richtext::ToPlaintext, traits::{FileFormat, YtEntity}, - AudioCodec, TrackItem, VideoCodec, VideoDetails, VideoPlayer, VideoPlayerDetails, + AudioCodec, TrackItem, VideoCodec, VideoPlayer, }, param::StreamFilter, }; -use time::{Date, OffsetDateTime}; use tokio::{ fs::{self, File}, io::AsyncWriteExt, @@ -42,6 +37,10 @@ use indicatif::{MultiProgress, ProgressBar, ProgressStyle}; #[cfg(feature = "audiotag")] use lofty::{config::WriteOptions, picture::Picture, prelude::*, tag::Tag}; +#[cfg(feature = "audiotag")] +use rustypipe::model::{richtext::ToPlaintext, VideoDetails, VideoPlayerDetails}; +#[cfg(feature = "audiotag")] +use time::{Date, OffsetDateTime}; pub use util::DownloadError; @@ -65,6 +64,8 @@ pub struct DownloaderBuilder { ffmpeg: String, #[cfg(feature = "indicatif")] multi: Option, + #[cfg(feature = "indicatif")] + progress_style: Option, filter: StreamFilter, video_format: DownloadVideoFormat, n_retries: u32, @@ -85,6 +86,9 @@ struct DownloaderInner { /// Global progress #[cfg(feature = "indicatif")] multi: Option, + /// Progress style + #[cfg(feature = "indicatif")] + progress_style: ProgressStyle, /// Default stream filter filter: StreamFilter, /// Default video format @@ -111,7 +115,7 @@ pub struct DownloadQuery { dest: DownloadDest, /// Progress bar #[cfg(feature = "indicatif")] - multi: Option, + progress: Option, /// Stream filter filter: Option, /// Target video format @@ -251,7 +255,7 @@ impl DownloadDest { }; if let Some(repl) = repl { acc += &repl; - acc += &ms[trimmed.len()..]; + acc += &ms[trimmed.len()..]; // preceeding whitespace } (acc, m.end()) }, @@ -277,6 +281,8 @@ impl Default for DownloaderBuilder { ffmpeg: "ffmpeg".to_owned(), #[cfg(feature = "indicatif")] multi: None, + #[cfg(feature = "indicatif")] + progress_style: None, filter: StreamFilter::new(), video_format: DownloadVideoFormat::Mp4, n_retries: 3, @@ -317,11 +323,19 @@ impl DownloaderBuilder { /// for all downloads #[cfg(feature = "indicatif")] #[must_use] - pub fn progress_bar(mut self, progress: MultiProgress) -> Self { + pub fn multi_progress(mut self, progress: MultiProgress) -> Self { self.multi = Some(progress); self } + /// Set the indicatif [`ProgressStyle`] for the progress bars displayed under `multi_progress` + #[cfg(feature = "indicatif")] + #[must_use] + pub fn progress_style(mut self, style: ProgressStyle) -> Self { + self.progress_style = Some(style); + self + } + /// Set the default [`StreamFilter`] for all downloads. /// /// The filter can be overridden for individual download queries. @@ -393,6 +407,12 @@ impl DownloaderBuilder { ffmpeg: self.ffmpeg, #[cfg(feature = "indicatif")] multi: self.multi, + #[cfg(feature = "indicatif")] + progress_style: self.progress_style.unwrap_or_else(|| { + ProgressStyle::with_template("{msg}\n{spinner:.green} [{elapsed_precise}] [{wide_bar:.cyan/blue}] {bytes}/{total_bytes} ({bytes_per_sec}, {eta})") + .unwrap() + .progress_chars("#>-") + }), filter: self.filter, video_format: self.video_format, n_retries: self.n_retries, @@ -431,7 +451,7 @@ impl Downloader { video, dest: DownloadDest::Default, #[cfg(feature = "indicatif")] - multi: None, + progress: None, filter: None, video_format: None, player_type: None, @@ -439,7 +459,8 @@ impl Downloader { } /// Download a video with the given ID - pub fn download_id>(&self, video_id: S) -> DownloadQuery { + #[must_use] + pub fn id>(&self, video_id: S) -> DownloadQuery { self.query(DownloadVideo { id: video_id.into(), ..Default::default() @@ -447,7 +468,8 @@ impl Downloader { } /// Download a video from a DownloadVideo object - pub fn download_video(&self, video: DownloadVideo) -> DownloadQuery { + #[must_use] + pub fn video(&self, video: DownloadVideo) -> DownloadQuery { self.query(video) } @@ -455,7 +477,8 @@ impl Downloader { /// /// 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. - pub fn download_entity(&self, video: &impl YtEntity) -> DownloadQuery { + #[must_use] + pub fn entity(&self, video: &impl YtEntity) -> DownloadQuery { self.query(DownloadVideo::from_entity(video)) } @@ -465,7 +488,8 @@ impl Downloader { /// is fetched, so already downloaded videos get skipped right away. /// /// If an album track is downloaded, this method will also add the track number to the downloaded file - pub fn download_track(&self, track: &TrackItem) -> DownloadQuery { + #[must_use] + pub fn track(&self, track: &TrackItem) -> DownloadQuery { self.query(DownloadVideo::from_track(track)) } } @@ -495,6 +519,7 @@ impl DownloadQuery { /// /// Note that the file extension may be changed to fit the reuested video/audio format. /// Refer to the [`DownloadResult`] to get the actual path after downloading. + #[must_use] pub fn to_file>(mut self, file: P) -> Self { let file = file.into(); self.update_video_format(&file); @@ -504,15 +529,16 @@ impl DownloadQuery { /// Download to the given directory /// - /// The filename is created by this template: `{title} [{id}]`. + /// The filename is created by this template: `{track} {title} [{id}]`. /// /// You can use a custom filename template using [`DownloadQuery::to_template`] + #[must_use] pub fn to_dir>(mut self, dir: P) -> Self { self.dest = DownloadDest::Dir(dir.into()); self } - /// Download to the given filename template + /// Download to a path determined by a template /// /// Templates are paths that may contain variables for video metadata. /// @@ -521,9 +547,17 @@ impl DownloadQuery { /// - `{title}` Video title /// - `{channel}` Channel name /// - `{channel_id}` Channel ID + /// - `{album}` Album + /// - `{album_id}` Album ID + /// - `{track}` Track number + /// + /// Whitespace between template variables is automatically removed if a variable + /// contains no data (e.g. `{track} {name}` is equal to `{name}` if a video without + /// track number is downloaded). /// /// Note that the file extension may be changed to fit the reuested video/audio format. /// Refer to the [`DownloadResult`] to get the actual path after downloading. + #[must_use] pub fn to_template>(mut self, tmpl: P) -> Self { let tmpl = tmpl.into(); self.update_video_format(&tmpl); @@ -531,46 +565,52 @@ impl DownloadQuery { self } - /// Use a [`MultiProgress`] progress bar for all downloads + /// Show the progress of this download using a Indicatif [`ProgressBar`] #[cfg(feature = "indicatif")] - pub fn progress_bar(mut self, progress: MultiProgress) -> Self { - self.multi = Some(progress); + #[must_use] + pub fn progress_bar(mut self, progress: ProgressBar) -> Self { + self.progress = Some(progress); self } /// Set a [`StreamFilter`] for choosing a stream to be downloaded + #[must_use] pub fn stream_filter(mut self, filter: StreamFilter) -> Self { self.filter = Some(filter); self } /// Set the [`VideoFormat`] of downloaded videos + #[must_use] pub fn video_format(mut self, video_format: DownloadVideoFormat) -> Self { self.video_format = Some(video_format); self } /// Set the [`ClientType`] used to fetch the YT player + #[must_use] pub fn player_type(mut self, player_type: ClientType) -> Self { self.player_type = Some(player_type); self } /// Download the video + /// + /// If no download path is set, the video is downloaded to the current directory + /// with a filename created by this template: `{track} {title} [{id}]`. #[tracing::instrument(skip(self), fields(id = self.video.id))] pub async fn download(&self) -> Result { let mut last_err = None; // Progress bar #[cfg(feature = "indicatif")] - let pb = { - let multi = self.multi.clone().or_else(|| self.dl.i.multi.clone()); - multi.map(|m| { + let pb = match &self.progress { + Some(progress) => Some(progress.clone()), + None => self.dl.i.multi.clone().map(|m| { let pb = ProgressBar::new(1); - pb.set_style(ProgressStyle::with_template("{msg}\n{spinner:.green} [{elapsed_precise}] [{wide_bar:.cyan/blue}] {bytes}/{total_bytes} ({bytes_per_sec}, {eta})").unwrap() - .progress_chars("#>-")); + pb.set_style(self.dl.i.progress_style.clone()); m.add(pb) - }) + }), }; for n in 0..=self.dl.i.n_retries { @@ -799,6 +839,8 @@ impl DownloadQuery { track: TrackItem, track_nr: Option, ) -> Result<()> { + use std::{io::Cursor, num::NonZeroU32}; + let mut tagged_file = lofty::read_from_path(file)?; let tag = match tagged_file.primary_tag_mut() { Some(primary_tag) => primary_tag, @@ -1306,9 +1348,11 @@ async fn convert_streams( Ok(()) } +#[cfg(feature = "audiotag")] const YMD_FORMAT: &[time::format_description::FormatItem] = time::macros::format_description!("[year]-[month]-[day]"); +#[cfg(feature = "audiotag")] fn extract_yt_release_date( description: &str, publish_date: Option, From 114a86a3823a175875aa2aeb31a61a6799ef13bc Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 8 Aug 2024 03:22:04 +0200 Subject: [PATCH 103/347] feat: add YtEntity trait to YouTubeItem and MusicItem --- src/model/traits.rs | 116 +++++++++++++++++++++++++++++--------------- 1 file changed, 77 insertions(+), 39 deletions(-) diff --git a/src/model/traits.rs b/src/model/traits.rs index 950de5d..30451a8 100644 --- a/src/model/traits.rs +++ b/src/model/traits.rs @@ -227,50 +227,16 @@ macro_rules! yt_entity_owner_music { } fn channel_name(&self) -> Option<&str> { - self.artists.first().map(|a| a.name.as_str()) + if self.by_va { + Some(crate::util::VARIOUS_ARTISTS) + } else { + self.artists.first().map(|a| a.name.as_str()) + } } } }; } -/* -impl YtEntity for VideoPlayer { - fn id(&self) -> &str { - &self.details.id - } - - fn name(&self) -> &str { - &self.details.name - } - - fn channel_id(&self) -> Option<&str> { - Some(&self.details.channel_id) - } - - fn channel_name(&self) -> Option<&str> { - self.details.channel_name.as_deref() - } -} - -impl YtEntity for VideoPlayerDetails { - fn id(&self) -> &str { - &self.channel_id - } - - fn name(&self) -> &str { - &self.name - } - - fn channel_id(&self) -> Option<&str> { - Some(&self.channel_id) - } - - fn channel_name(&self) -> Option<&str> { - self.channel_name.as_deref() - } -} -*/ - impl YtEntity for Channel { fn id(&self) -> &str { &self.id @@ -289,6 +255,78 @@ impl YtEntity for Channel { } } +impl YtEntity for YouTubeItem { + fn id(&self) -> &str { + match self { + YouTubeItem::Video(v) => &v.id, + YouTubeItem::Playlist(p) => &p.id, + YouTubeItem::Channel(c) => &c.id, + } + } + + fn name(&self) -> &str { + match self { + YouTubeItem::Video(v) => &v.name, + YouTubeItem::Playlist(p) => &p.name, + YouTubeItem::Channel(c) => &c.name, + } + } + + fn channel_id(&self) -> Option<&str> { + match self { + YouTubeItem::Video(v) => v.channel_id(), + YouTubeItem::Playlist(p) => p.channel_id(), + YouTubeItem::Channel(_) => None, + } + } + + fn channel_name(&self) -> Option<&str> { + match self { + YouTubeItem::Video(v) => v.channel_name(), + YouTubeItem::Playlist(p) => p.channel_name(), + YouTubeItem::Channel(_) => None, + } + } +} + +impl YtEntity for MusicItem { + fn id(&self) -> &str { + match self { + MusicItem::Track(t) => &t.id, + MusicItem::Album(b) => &b.id, + MusicItem::Artist(a) => &a.id, + MusicItem::Playlist(p) => &p.id, + } + } + + fn name(&self) -> &str { + match self { + MusicItem::Track(t) => &t.name, + MusicItem::Album(b) => &b.name, + MusicItem::Artist(a) => &a.name, + MusicItem::Playlist(p) => &p.name, + } + } + + fn channel_id(&self) -> Option<&str> { + match self { + MusicItem::Track(t) => t.channel_id(), + MusicItem::Album(b) => b.channel_id(), + MusicItem::Artist(_) => None, + MusicItem::Playlist(p) => p.channel_id(), + } + } + + fn channel_name(&self) -> Option<&str> { + match self { + MusicItem::Track(t) => t.channel_name(), + MusicItem::Album(b) => b.channel_name(), + MusicItem::Artist(_) => None, + MusicItem::Playlist(p) => p.channel_id(), + } + } +} + yt_entity_owner_opt! {Playlist} yt_entity! {ChannelId} yt_entity_owner! {VideoDetails} From 91b020efd498eff6e0f354a1de39439e252a79dd Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 8 Aug 2024 03:22:51 +0200 Subject: [PATCH 104/347] feat: add plaintext output to CLI --- cli/Cargo.toml | 2 + cli/README.md | 1 + cli/src/main.rs | 445 +++++++++++++++++++++++++++++++++++++----- downloader/src/lib.rs | 18 +- 4 files changed, 411 insertions(+), 55 deletions(-) create mode 100644 cli/README.md diff --git a/cli/Cargo.toml b/cli/Cargo.toml index a4cfc9d..c61060d 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -56,3 +56,5 @@ tracing.workspace = true tracing-subscriber.workspace = true serde_yaml.workspace = true dirs.workspace = true + +color-print = "0.3.6" diff --git a/cli/README.md b/cli/README.md new file mode 100644 index 0000000..e88277e --- /dev/null +++ b/cli/README.md @@ -0,0 +1 @@ +# RustyPipe CLI diff --git a/cli/src/main.rs b/cli/src/main.rs index 3fbd68c..4a4a7a8 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -4,11 +4,15 @@ use std::{path::PathBuf, str::FromStr, time::Duration}; use clap::{Parser, Subcommand, ValueEnum}; +use color_print::{cprint, cprintln}; use futures::stream::{self, StreamExt}; use indicatif::{MultiProgress, ProgressBar, ProgressStyle}; use rustypipe::{ client::{ClientType, RustyPipe}, - model::{UrlTarget, YouTubeItem}, + model::{ + richtext::ToPlaintext, traits::YtEntity, ArtistId, MusicSearchResult, TrackItem, UrlTarget, + YouTubeItem, + }, param::{search_filter, ChannelVideoTab, Country, Language, StreamFilter}, }; use rustypipe_downloader::{ @@ -84,6 +88,9 @@ enum Commands { /// Video resolution (e.g. 720, 1080). Set to 0 for audio-only. #[clap(short, long)] resolution: Option, + /// Download only the audio track + #[clap(long)] + audio: bool, /// Number of videos downloaded in parallel #[clap(short, long, default_value_t = 8)] parallel: usize, @@ -93,8 +100,9 @@ enum Commands { /// Limit the number of videos to download #[clap(long, default_value_t = 1000)] limit: usize, + /// YT Client used to fetch player data #[clap(long)] - player_type: Option, + client_type: Option, }, /// Extract video, playlist, album or channel data Get { @@ -106,6 +114,9 @@ enum Commands { /// Pretty-print output #[clap(long)] pretty: bool, + /// Output as text + #[clap(long)] + txt: bool, /// Limit the number of items to fetch #[clap(long, default_value_t = 20)] limit: usize, @@ -118,14 +129,15 @@ enum Commands { /// Get comments #[clap(long)] comments: Option, - /// Get lyrics + /// Get lyrics for YTM tracks #[clap(long)] lyrics: bool, - /// Get the player + /// Get the player data instead of the video details #[clap(long)] player: bool, + /// YT Client used to fetch player data #[clap(long)] - player_type: Option, + client_type: Option, }, /// Search YouTube Search { @@ -137,6 +149,9 @@ enum Commands { /// Pretty-print output #[clap(long)] pretty: bool, + /// Output as text + #[clap(long)] + txt: bool, /// Limit the number of items to fetch #[clap(long, default_value_t = 20)] limit: usize, @@ -168,7 +183,7 @@ enum Format { Yaml, } -#[derive(Copy, Clone, ValueEnum)] +#[derive(Debug, Copy, Clone, ValueEnum)] enum ChannelTab { Videos, Shorts, @@ -312,15 +327,91 @@ fn print_data(data: &T, format: Format, pretty: bool) { }; } +fn print_entities(items: &[impl YtEntity]) { + for e in items { + cprint!("[{}] {}", e.id(), e.name()); + if let Some(n) = e.channel_name() { + cprint!(" - {}", n); + } + println!(); + } +} + +fn print_tracks(tracks: &[TrackItem]) { + for t in tracks { + if let Some(n) = t.track_nr { + cprint!("{n:02} "); + } + cprint!("[{}] {} - ", t.id, t.name); + print_artists(&t.artists); + print_duration(t.duration); + println!(); + } +} + +fn print_artists(artists: &[ArtistId]) { + for (i, a) in artists.iter().enumerate() { + if i > 0 { + print!(", "); + } + cprint!("{}", a.name); + if let Some(id) = &a.id { + print!(" [{id}]"); + } + } +} + +fn print_duration(duration: Option) { + if let Some(d) = duration { + print!(" "); + let hours = d / 3600; + let minutes = (d / 60) % 60; + let seconds = d % 60; + if hours > 0 { + cprint!("{hours:02}:"); + } + cprint!("{minutes:02}:{seconds:02}"); + } +} + +fn print_music_search( + data: &MusicSearchResult, + format: Format, + pretty: bool, + txt: bool, +) { + if txt { + if let Some(corr) = &data.corrected_query { + cprintln!("Did you mean `{}`?", corr); + } + print_entities(&data.items.items); + } else { + print_data(data, format, pretty) + } +} + +fn print_description(desc: Option) { + if let Some(desc) = desc { + if !desc.is_empty() { + print_h2("Description"); + cprintln!("{}", desc); + } + } +} + +fn print_h2(title: &str) { + cprintln!("\n{}:", title); +} + async fn download_video( dl: &Downloader, id: &str, target: &DownloadTarget, - player_type: Option, + client_type: Option, ) { let mut q = target.apply(dl.id(id)); - if let Some(player_type) = player_type { - q = q.player_type(player_type.into()); + if let Some(client_type) = client_type { + q = q.client_type(client_type.into()); } let res = q.download().await; if let Err(e) = res { @@ -333,7 +424,7 @@ async fn download_videos( videos: Vec, target: &DownloadTarget, parallel: usize, - player_type: Option, + client_type: Option, multi: MultiProgress, ) { // Indicatif setup @@ -356,8 +447,8 @@ async fn download_videos( let id = video.id().to_owned(); let mut q = target.apply(dl.video(video)); - if let Some(player_type) = player_type { - q = q.player_type(player_type.into()); + if let Some(client_type) = client_type { + q = q.client_type(client_type.into()); } async move { @@ -432,10 +523,11 @@ async fn main() { id, target, resolution, + audio, parallel, music, limit, - player_type, + client_type, } => { let url_target = rp.query().resolve_string(&id, false).await.unwrap(); @@ -447,18 +539,19 @@ async fn main() { filter = filter.video_max_res(res); } } - let dl = DownloaderBuilder::new() + let mut dl = DownloaderBuilder::new() .rustypipe(&rp) - .stream_filter(filter) .multi_progress(multi.clone()) - .audio_tag() - .crop_cover() - .path_precheck() - .build(); + .path_precheck(); + if audio { + dl = dl.audio_tag().crop_cover(); + filter = filter.no_video(); + } + let dl = dl.stream_filter(filter).build(); match url_target { UrlTarget::Video { id, .. } => { - download_video(&dl, &id, &target, player_type).await; + download_video(&dl, &id, &target, client_type).await; } UrlTarget::Channel { id } => { target.assert_dir(); @@ -475,7 +568,7 @@ async fn main() { .take(limit) .map(|v| DownloadVideo::from_entity(&v)) .collect(); - download_videos(&dl, videos, &target, parallel, player_type, multi).await; + download_videos(&dl, videos, &target, parallel, client_type, multi).await; } UrlTarget::Playlist { id } => { target.assert_dir(); @@ -508,7 +601,7 @@ async fn main() { .map(|v| DownloadVideo::from_entity(&v)) .collect() }; - download_videos(&dl, videos, &target, parallel, player_type, multi).await; + download_videos(&dl, videos, &target, parallel, client_type, multi).await; } UrlTarget::Album { id } => { target.assert_dir(); @@ -519,13 +612,14 @@ async fn main() { .take(limit) .map(|v| DownloadVideo::from_track(&v)) .collect(); - download_videos(&dl, videos, &target, parallel, player_type, multi).await; + download_videos(&dl, videos, &target, parallel, client_type, multi).await; } } } Commands::Get { id, format, + txt, pretty, limit, tab, @@ -533,7 +627,7 @@ async fn main() { comments, lyrics, player, - player_type, + client_type, } => { let target = rp.query().resolve_string(&id, false).await.unwrap(); @@ -544,16 +638,47 @@ async fn main() { match details.lyrics_id { Some(lyrics_id) => { let lyrics = rp.query().music_lyrics(lyrics_id).await.unwrap(); - print_data(&lyrics, format, pretty); + if txt { + println!("{}\n\n{}", lyrics.body, lyrics.footer); + } else { + print_data(&lyrics, format, pretty); + } } None => eprintln!("no lyrics found"), } } else if music { let details = rp.query().music_details(&id).await.unwrap(); - print_data(&details, format, pretty); + if txt { + if details.track.is_video { + println!("[MV]"); + } else { + println!("[Track]"); + } + print!("{} [{}]", details.track.name, details.track.id); + print_duration(details.track.duration); + println!(); + print_artists(&details.track.artists); + println!(); + if !details.track.is_video { + println!( + "Album: {}", + details + .track + .album + .as_ref() + .map(|b| b.id.as_str()) + .unwrap_or("None") + ) + } + if let Some(view_count) = details.track.view_count { + println!("Views: {view_count}"); + } + } else { + print_data(&details, format, pretty); + } } else if player { - let player = if let Some(player_type) = player_type { - rp.query().player_from_client(&id, player_type.into()).await + let player = if let Some(client_type) = client_type { + rp.query().player_from_client(&id, client_type.into()).await } else { rp.query().player(&id).await } @@ -580,13 +705,116 @@ async fn main() { None => {} } - print_data(&details, format, pretty); + if txt { + cprintln!( + "[Video]\n{} [{}]", + details.name, + details.id + ); + cprintln!( + "Channel: {} [{}]", + details.channel.name, + details.channel.id + ); + if let Some(subs) = details.channel.subscriber_count { + cprintln!("Subscribers: {}", subs); + } + if let Some(date) = details.publish_date { + cprintln!("Date: {}", date); + } + cprintln!("Views: {}", details.view_count); + if let Some(likes) = details.like_count { + cprintln!("Likes: {}", likes); + } + if let Some(comments) = details.top_comments.count { + cprintln!("Comments: {}", comments); + } + if details.is_ccommons { + cprintln!("Creative Commons"); + } + if details.is_live { + cprintln!("Livestream"); + } + print_description(Some(details.description.to_plaintext())); + if !details.recommended.is_empty() { + print_h2("Recommended"); + print_entities(&details.recommended.items); + } + let comment_list = comments.map(|c| match c { + CommentsOrder::Top => &details.top_comments.items, + 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 { + cprint!("{} [{}]", author.name, author.id); + } else { + cprint!("Unknown author"); + } + if c.by_owner { + print!(" (Owner)"); + } + println!(); + println!("{}", c.text.to_plaintext()); + cprint!("Likes: {}", c.like_count.unwrap_or_default()); + if c.hearted { + cprint!(" "); + } + println!("\n"); + } + } + } else { + print_data(&details, format, pretty); + } } } UrlTarget::Channel { id } => { if music { let artist = rp.query().music_artist(&id, true).await.unwrap(); - print_data(&artist, format, pretty); + if txt { + cprintln!( + "[Artist]\n{} [{}]", + artist.name, + artist.id + ); + if let Some(subs) = artist.subscriber_count { + cprintln!("Subscribers: {subs}"); + } + if let Some(url) = artist.wikipedia_url { + cprintln!("Wikipedia: {url}"); + } + if let Some(id) = artist.tracks_playlist_id { + cprintln!("All tracks: {id}"); + } + if let Some(id) = artist.videos_playlist_id { + cprintln!("All videos: {id}"); + } + if let Some(id) = artist.radio_id { + cprintln!("Radio: {id}"); + } + print_description(artist.description); + if !artist.albums.is_empty() { + print_h2("Albums"); + for b in artist.albums { + cprint!("[{}] {} ({:?}", b.id, b.name, b.album_type); + if let Some(y) = b.year { + print!(", {y}"); + } + println!(")"); + } + } + if !artist.playlists.is_empty() { + print_h2("Playlists"); + print_entities(&artist.playlists); + } + if !artist.similar_artists.is_empty() { + print_h2("Similar artists"); + print_entities(&artist.similar_artists); + } + } else { + print_data(&artist, format, pretty); + } } else { match tab { ChannelTab::Videos | ChannelTab::Shorts | ChannelTab::Live => { @@ -604,15 +832,74 @@ async fn main() { .extend_limit(rp.query(), limit) .await .unwrap(); - print_data(&channel, format, pretty); + + if txt { + cprintln!( + "[Channel {:?}]\n{} [{}]", + tab, + channel.name, + channel.id + ); + print_description(Some(channel.description)); + if let Some(subs) = channel.subscriber_count { + cprintln!("Subscribers: {subs}"); + } + println!(); + print_entities(&channel.content.items); + } else { + print_data(&channel, format, pretty); + } } ChannelTab::Playlists => { let channel = rp.query().channel_playlists(&id).await.unwrap(); - print_data(&channel, format, pretty); + + if txt { + cprintln!( + "[Channel {:?}]\n{} [{}]", + tab, + channel.name, + channel.id + ); + print_description(Some(channel.description)); + if let Some(subs) = channel.subscriber_count { + cprintln!("Subscribers: {subs}"); + } + println!(); + print_entities(&channel.content.items); + } else { + print_data(&channel, format, pretty); + } } ChannelTab::Info => { - let channel = rp.query().channel_info(&id).await.unwrap(); - print_data(&channel, format, pretty); + let info = rp.query().channel_info(&id).await.unwrap(); + + if txt { + cprintln!( + "[Channel info]\nID:{}", + info.id + ); + print_description(Some(info.description)); + if let Some(subs) = info.subscriber_count { + cprintln!("Subscribers: {subs}"); + } + if let Some(vids) = info.video_count { + cprintln!("Videos: {vids}"); + } + if let Some(views) = info.view_count { + cprintln!("Views: {views}"); + } + if let Some(created) = info.create_date { + cprintln!("Created on: {created}"); + } + if !info.links.is_empty() { + print_h2("Links"); + for (name, url) in &info.links { + cprintln!("{name}: {url}"); + } + } + } else { + print_data(&info, format, pretty); + } } } } @@ -625,7 +912,26 @@ async fn main() { .extend_limit(rp.query(), limit) .await .unwrap(); - print_data(&playlist, format, pretty); + if txt { + cprintln!( + "[MusicPlaylist]\n{} [{}]\nTracks: {}", + playlist.name, + playlist.id, + playlist.track_count.unwrap_or_default(), + ); + if let Some(n) = playlist.channel_name() { + cprint!("Author: {n}"); + if let Some(id) = playlist.channel_id() { + print!(" [{id}]"); + } + println!(); + } + print_description(playlist.description.map(|d| d.to_plaintext())); + println!(); + print_tracks(&playlist.tracks.items); + } else { + print_data(&playlist, format, pretty); + } } else { let mut playlist = rp.query().playlist(&id).await.unwrap(); playlist @@ -633,12 +939,54 @@ async fn main() { .extend_limit(rp.query(), limit) .await .unwrap(); - print_data(&playlist, format, pretty); + if txt { + cprintln!( + "[Playlist]\n{} [{}]\nVideos: {}", + playlist.name, playlist.id, playlist.video_count, + ); + if let Some(n) = playlist.channel_name() { + cprint!("Author: {n}"); + if let Some(id) = playlist.channel_id() { + print!(" [{id}]"); + } + println!(); + } + if let Some(last_update) = playlist.last_update { + cprintln!("Last update: {last_update}"); + } + print_description(playlist.description.map(|d| d.to_plaintext())); + println!(); + print_entities(&playlist.videos.items); + } else { + print_data(&playlist, format, pretty); + } } } UrlTarget::Album { id } => { let album = rp.query().music_album(&id).await.unwrap(); - print_data(&album, format, pretty); + if txt { + cprint!( + "[Album]\n{} [{}] ({:?}", + album.name, + album.id, + album.album_type + ); + if let Some(year) = album.year { + print!(", {year}"); + } + println!(")"); + if let Some(n) = album.channel_name() { + cprint!("Artist: {}", n); + if let Some(id) = album.channel_id() { + print!(" [{id}]"); + } + } + print_description(album.description.map(|d| d.to_plaintext())); + println!(); + print_tracks(&album.tracks); + } else { + print_data(&album, format, pretty); + } } } } @@ -646,6 +994,7 @@ async fn main() { query, format, pretty, + txt, limit, item_type, length, @@ -672,32 +1021,40 @@ async fn main() { .await .unwrap(); res.items.extend_limit(rp.query(), limit).await.unwrap(); - print_data(&res, format, pretty); + + if txt { + if let Some(corr) = res.corrected_query { + cprintln!("Did you mean `{}`?", corr); + } + print_entities(&res.items.items); + } else { + print_data(&res, format, pretty); + } } }, Some(MusicSearchCategory::All) => { let res = rp.query().music_search_main(&query).await.unwrap(); - print_data(&res, format, pretty); + print_music_search(&res, format, pretty, txt); } Some(MusicSearchCategory::Tracks) => { let mut res = rp.query().music_search_tracks(&query).await.unwrap(); res.items.extend_limit(rp.query(), limit).await.unwrap(); - print_data(&res, format, pretty); + print_music_search(&res, format, pretty, txt); } Some(MusicSearchCategory::Videos) => { let mut res = rp.query().music_search_videos(&query).await.unwrap(); res.items.extend_limit(rp.query(), limit).await.unwrap(); - print_data(&res, format, pretty); + print_music_search(&res, format, pretty, txt); } Some(MusicSearchCategory::Artists) => { let mut res = rp.query().music_search_artists(&query).await.unwrap(); res.items.extend_limit(rp.query(), limit).await.unwrap(); - print_data(&res, format, pretty); + print_music_search(&res, format, pretty, txt); } Some(MusicSearchCategory::Albums) => { let mut res = rp.query().music_search_albums(&query).await.unwrap(); res.items.extend_limit(rp.query(), limit).await.unwrap(); - print_data(&res, format, pretty); + print_music_search(&res, format, pretty, txt); } Some(MusicSearchCategory::PlaylistsYtm | MusicSearchCategory::PlaylistsCommunity) => { let mut res = rp @@ -709,7 +1066,7 @@ async fn main() { .await .unwrap(); res.items.extend_limit(rp.query(), limit).await.unwrap(); - print_data(&res, format, pretty); + print_music_search(&res, format, pretty, txt); } }, Commands::Vdata => { diff --git a/downloader/src/lib.rs b/downloader/src/lib.rs index 685f69d..40c2583 100644 --- a/downloader/src/lib.rs +++ b/downloader/src/lib.rs @@ -121,7 +121,7 @@ pub struct DownloadQuery { /// Target video format video_format: Option, /// ClientType type for fetching videos - player_type: Option, + client_type: Option, } /// Video to be downloaded @@ -163,11 +163,7 @@ impl DownloadVideo { id: track.id.to_owned(), name: Some(track.name.to_owned()), channel_id: track.channel_id().map(str::to_owned), - channel_name: if track.by_va { - Some("Various Artists".to_owned()) - } else { - track.channel_name().map(str::to_owned) - }, + channel_name: track.channel_name().map(str::to_owned), album_id: track.album.as_ref().map(|b| b.id.to_owned()), album_name: track.album.as_ref().map(|b| b.name.to_owned()), track_nr: track.track_nr, @@ -454,7 +450,7 @@ impl Downloader { progress: None, filter: None, video_format: None, - player_type: None, + client_type: None, } } @@ -589,8 +585,8 @@ impl DownloadQuery { /// Set the [`ClientType`] used to fetch the YT player #[must_use] - pub fn player_type(mut self, player_type: ClientType) -> Self { - self.player_type = Some(player_type); + pub fn client_type(mut self, client_type: ClientType) -> Self { + self.client_type = Some(client_type); self } @@ -684,8 +680,8 @@ impl DownloadQuery { } let q = self.dl.i.rp.query(); - let player_data = match self.player_type { - Some(player_type) => q.player_from_client(&self.video.id, player_type).await?, + let player_data = match self.client_type { + Some(client_type) => q.player_from_client(&self.video.id, client_type).await?, None => q.player(&self.video.id).await?, }; let user_agent = q.user_agent(player_data.client_type); From d053ac3eba810a7241df91f2f50bcbe1fd968c86 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 8 Aug 2024 14:56:39 +0200 Subject: [PATCH 105/347] fix: make Verification enum exhaustive --- src/model/mod.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/model/mod.rs b/src/model/mod.rs index e54ab60..6ec4d2f 100644 --- a/src/model/mod.rs +++ b/src/model/mod.rs @@ -634,7 +634,6 @@ pub struct ChannelTag { #[derive( Default, Copy, Clone, Debug, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash, )] -#[non_exhaustive] pub enum Verification { #[default] /// Unverified channel (default) From e8324cf3b065cb977adbc9529b1ef5ee18c3dd47 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 8 Aug 2024 15:04:15 +0200 Subject: [PATCH 106/347] fix: use anstream + owo-color for colorful CLI output the color-print crate works very well, but it cannot disable styling if the terminal does not support it, when saving the output to a file, etc --- cli/Cargo.toml | 3 +- cli/src/main.rs | 169 ++++++++++++++++++++++++++++-------------------- 2 files changed, 102 insertions(+), 70 deletions(-) diff --git a/cli/Cargo.toml b/cli/Cargo.toml index c61060d..e07a928 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -57,4 +57,5 @@ tracing-subscriber.workspace = true serde_yaml.workspace = true dirs.workspace = true -color-print = "0.3.6" +anstream = "0.6.15" +owo-colors = "4.0.0" diff --git a/cli/src/main.rs b/cli/src/main.rs index 4a4a7a8..6a954a9 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -4,14 +4,14 @@ use std::{path::PathBuf, str::FromStr, time::Duration}; use clap::{Parser, Subcommand, ValueEnum}; -use color_print::{cprint, cprintln}; use futures::stream::{self, StreamExt}; use indicatif::{MultiProgress, ProgressBar, ProgressStyle}; +use owo_colors::OwoColorize; use rustypipe::{ client::{ClientType, RustyPipe}, model::{ richtext::ToPlaintext, traits::YtEntity, ArtistId, MusicSearchResult, TrackItem, UrlTarget, - YouTubeItem, + Verification, YouTubeItem, }, param::{search_filter, ChannelVideoTab, Country, Language, StreamFilter}, }; @@ -329,9 +329,9 @@ fn print_data(data: &T, format: Format, pretty: bool) { fn print_entities(items: &[impl YtEntity]) { for e in items { - cprint!("[{}] {}", e.id(), e.name()); + anstream::print!("[{}] {}", e.id(), e.name().bold()); if let Some(n) = e.channel_name() { - cprint!(" - {}", n); + anstream::print!(" - {}", n.cyan()); } println!(); } @@ -340,9 +340,9 @@ fn print_entities(items: &[impl YtEntity]) { fn print_tracks(tracks: &[TrackItem]) { for t in tracks { if let Some(n) = t.track_nr { - cprint!("{n:02} "); + anstream::print!("{} ", format!("{n:02}").yellow().bold()); } - cprint!("[{}] {} - ", t.id, t.name); + anstream::print!("[{}] {} - ", t.id, t.name.bold()); print_artists(&t.artists); print_duration(t.duration); println!(); @@ -354,7 +354,7 @@ fn print_artists(artists: &[ArtistId]) { if i > 0 { print!(", "); } - cprint!("{}", a.name); + anstream::print!("{}", a.name.cyan()); if let Some(id) = &a.id { print!(" [{id}]"); } @@ -368,9 +368,9 @@ fn print_duration(duration: Option) { let minutes = (d / 60) % 60; let seconds = d % 60; if hours > 0 { - cprint!("{hours:02}:"); + anstream::print!("{}", format!("{hours:02}:").yellow()); } - cprint!("{minutes:02}:{seconds:02}"); + anstream::print!("{}", format!("{minutes:02}:{seconds:02}").yellow()); } } @@ -382,7 +382,7 @@ fn print_music_search( ) { if txt { if let Some(corr) = &data.corrected_query { - cprintln!("Did you mean `{}`?", corr); + anstream::println!("Did you mean `{}`?", corr.magenta()); } print_entities(&data.items.items); } else { @@ -394,13 +394,21 @@ fn print_description(desc: Option) { if let Some(desc) = desc { if !desc.is_empty() { print_h2("Description"); - cprintln!("{}", desc); + println!("{}", desc); } } } fn print_h2(title: &str) { - cprintln!("\n{}:", title); + anstream::println!("\n{}", format!("{title}:").green().underline()); +} + +fn print_verification(verification: Verification) { + match verification { + Verification::None => {} + Verification::Verified => print!(" ✓"), + Verification::Artist => print!(" ♪"), + } } async fn download_video( @@ -706,34 +714,36 @@ async fn main() { } if txt { - cprintln!( - "[Video]\n{} [{}]", - details.name, + anstream::println!( + "{}\n{} [{}]", + "[Video]".on_green().black(), + details.name.green().bold(), details.id ); - cprintln!( - "Channel: {} [{}]", + anstream::println!( + "{} {} [{}]", + "Channel:".blue(), details.channel.name, details.channel.id ); if let Some(subs) = details.channel.subscriber_count { - cprintln!("Subscribers: {}", subs); + anstream::println!("{} {}", "Subscribers:".blue(), subs); } if let Some(date) = details.publish_date { - cprintln!("Date: {}", date); + anstream::println!("{} {}", "Date:".blue(), date); } - cprintln!("Views: {}", details.view_count); + anstream::println!("{} {}", "Views:".blue(), details.view_count); if let Some(likes) = details.like_count { - cprintln!("Likes: {}", likes); + anstream::println!("{} {}", "Likes:".blue(), likes); } if let Some(comments) = details.top_comments.count { - cprintln!("Comments: {}", comments); + anstream::println!("{} {}", "Comments:".blue(), comments); } if details.is_ccommons { - cprintln!("Creative Commons"); + anstream::println!("{}", "Creative Commons".green()); } if details.is_live { - cprintln!("Livestream"); + anstream::println!("{}", "Livestream".red()); } print_description(Some(details.description.to_plaintext())); if !details.recommended.is_empty() { @@ -748,18 +758,23 @@ async fn main() { print_h2("Comments"); for c in comment_list { if let Some(author) = &c.author { - cprint!("{} [{}]", author.name, author.id); + anstream::print!("{} [{}]", author.name.cyan(), author.id); + print_verification(author.verification); } else { - cprint!("Unknown author"); + anstream::print!("{}", "Unknown author".magenta()); } if c.by_owner { print!(" (Owner)"); } println!(); println!("{}", c.text.to_plaintext()); - cprint!("Likes: {}", c.like_count.unwrap_or_default()); + anstream::print!( + "{} {}", + "Likes:".blue(), + c.like_count.unwrap_or_default() + ); if c.hearted { - cprint!(" "); + anstream::print!(" {}", "♥".red()); } println!("\n"); } @@ -773,31 +788,37 @@ async fn main() { if music { let artist = rp.query().music_artist(&id, true).await.unwrap(); if txt { - cprintln!( - "[Artist]\n{} [{}]", - artist.name, + anstream::println!( + "{}\n{} [{}]", + "[Artist]".on_green().black(), + artist.name.green().bold(), artist.id ); if let Some(subs) = artist.subscriber_count { - cprintln!("Subscribers: {subs}"); + anstream::println!("{} {}", "Subscribers:".blue(), subs); } if let Some(url) = artist.wikipedia_url { - cprintln!("Wikipedia: {url}"); + anstream::println!("{} {}", "Wikipedia:".blue(), url); } if let Some(id) = artist.tracks_playlist_id { - cprintln!("All tracks: {id}"); + anstream::println!("{} {}", "All tracks:".blue(), id); } if let Some(id) = artist.videos_playlist_id { - cprintln!("All videos: {id}"); + anstream::println!("{} {}", "All videos:".blue(), id); } if let Some(id) = artist.radio_id { - cprintln!("Radio: {id}"); + anstream::println!("{} {}", "Radio:".blue(), id); } print_description(artist.description); if !artist.albums.is_empty() { print_h2("Albums"); for b in artist.albums { - cprint!("[{}] {} ({:?}", b.id, b.name, b.album_type); + anstream::print!( + "[{}] {} ({:?}", + b.id, + b.name.bold(), + b.album_type + ); if let Some(y) = b.year { print!(", {y}"); } @@ -834,16 +855,18 @@ async fn main() { .unwrap(); if txt { - cprintln!( - "[Channel {:?}]\n{} [{}]", - tab, - channel.name, + anstream::print!( + "{}\n{} [{}]", + format!("[Channel {tab:?}]").on_green().black(), + channel.name.green().bold(), channel.id ); - print_description(Some(channel.description)); + print_verification(channel.verification); + println!(); if let Some(subs) = channel.subscriber_count { - cprintln!("Subscribers: {subs}"); + anstream::println!("{} {}", "Subscribers:".blue(), subs); } + print_description(Some(channel.description)); println!(); print_entities(&channel.content.items); } else { @@ -854,15 +877,15 @@ async fn main() { let channel = rp.query().channel_playlists(&id).await.unwrap(); if txt { - cprintln!( - "[Channel {:?}]\n{} [{}]", - tab, - channel.name, + anstream::println!( + "{}\n{} [{}]", + format!("[Channel {tab:?}]").on_green().black(), + channel.name.green().bold(), channel.id ); print_description(Some(channel.description)); if let Some(subs) = channel.subscriber_count { - cprintln!("Subscribers: {subs}"); + anstream::println!("{} {}", "Subscribers:".blue(), subs); } println!(); print_entities(&channel.content.items); @@ -874,27 +897,28 @@ async fn main() { let info = rp.query().channel_info(&id).await.unwrap(); if txt { - cprintln!( - "[Channel info]\nID:{}", + anstream::println!( + "{}\nID:{}", + "[Channel info]".on_green().black(), info.id ); print_description(Some(info.description)); if let Some(subs) = info.subscriber_count { - cprintln!("Subscribers: {subs}"); + anstream::println!("{} {}", "Subscribers:".blue(), subs); } if let Some(vids) = info.video_count { - cprintln!("Videos: {vids}"); + anstream::println!("{} {}", "Videos:".blue(), vids); } if let Some(views) = info.view_count { - cprintln!("Views: {views}"); + anstream::println!("{} {}", "Views:".blue(), views); } if let Some(created) = info.create_date { - cprintln!("Created on: {created}"); + anstream::println!("{} {}", "Created on:".blue(), created); } if !info.links.is_empty() { print_h2("Links"); for (name, url) in &info.links { - cprintln!("{name}: {url}"); + anstream::println!("{} {}", name.blue(), url); } } } else { @@ -913,14 +937,16 @@ async fn main() { .await .unwrap(); if txt { - cprintln!( - "[MusicPlaylist]\n{} [{}]\nTracks: {}", - playlist.name, + anstream::println!( + "{}\n{} [{}]\n{} {}", + "[MusicPlaylist]".on_green().black(), + playlist.name.green().bold(), playlist.id, + "Tracks:".blue(), playlist.track_count.unwrap_or_default(), ); if let Some(n) = playlist.channel_name() { - cprint!("Author: {n}"); + anstream::print!("{} {}", "Author:".blue(), n.bold()); if let Some(id) = playlist.channel_id() { print!(" [{id}]"); } @@ -940,19 +966,23 @@ async fn main() { .await .unwrap(); if txt { - cprintln!( - "[Playlist]\n{} [{}]\nVideos: {}", - playlist.name, playlist.id, playlist.video_count, + anstream::println!( + "{}\n{} [{}]\n{} {}", + "[Playlist]".on_green().black(), + playlist.name.green().bold(), + playlist.id, + "Videos:".blue(), + playlist.video_count, ); if let Some(n) = playlist.channel_name() { - cprint!("Author: {n}"); + anstream::print!("{} {}", "Author:".blue(), n.bold()); if let Some(id) = playlist.channel_id() { print!(" [{id}]"); } println!(); } if let Some(last_update) = playlist.last_update { - cprintln!("Last update: {last_update}"); + anstream::println!("{} {}", "Last update:".blue(), last_update); } print_description(playlist.description.map(|d| d.to_plaintext())); println!(); @@ -965,9 +995,10 @@ async fn main() { UrlTarget::Album { id } => { let album = rp.query().music_album(&id).await.unwrap(); if txt { - cprint!( - "[Album]\n{} [{}] ({:?}", - album.name, + anstream::print!( + "{}\n{} [{}] ({:?}", + "[Album]".on_green().black(), + album.name.green().bold(), album.id, album.album_type ); @@ -976,7 +1007,7 @@ async fn main() { } println!(")"); if let Some(n) = album.channel_name() { - cprint!("Artist: {}", n); + anstream::print!("{} {}", "Artist:".blue(), n); if let Some(id) = album.channel_id() { print!(" [{id}]"); } @@ -1024,7 +1055,7 @@ async fn main() { if txt { if let Some(corr) = res.corrected_query { - cprintln!("Did you mean `{}`?", corr); + anstream::println!("Did you mean `{}`?", corr.magenta()); } print_entities(&res.items.items); } else { From d36ba595dab0bbaef1012ebfa8930fc0e6bf8167 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 8 Aug 2024 15:10:55 +0200 Subject: [PATCH 107/347] fix: extraction error message --- src/deobfuscate.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/deobfuscate.rs b/src/deobfuscate.rs index 6f21adf..cbcaf50 100644 --- a/src/deobfuscate.rs +++ b/src/deobfuscate.rs @@ -272,7 +272,7 @@ fn get_nsig_fn(player_js: &str) -> Result { util::find_map_or_last_err( get_nsig_fn_names(player_js), - DeobfError::Extraction("no nsig fn name found"), + DeobfError::Extraction("nsig function name"), |name| { extract_fn(&name).map_err(|e| { tracing::warn!("Failed to extract nsig fn `{name}`: {e}"); From 904f8215d84c810b04e4d2134718e786a4803ad2 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Fri, 9 Aug 2024 21:41:47 +0200 Subject: [PATCH 108/347] feat: add potoken option to downloader --- cli/src/main.rs | 7 +++++ downloader/src/lib.rs | 64 +++++++++++++++++++++++++++++++++++++++++-- notes/po_token.md | 30 ++++++++++++++++++++ 3 files changed, 99 insertions(+), 2 deletions(-) create mode 100644 notes/po_token.md diff --git a/cli/src/main.rs b/cli/src/main.rs index 6a954a9..35107a9 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -103,6 +103,9 @@ enum Commands { /// YT Client used to fetch player data #[clap(long)] client_type: Option, + /// Pot token to circumvent bot detection + #[clap(long)] + pot: Option, }, /// Extract video, playlist, album or channel data Get { @@ -536,6 +539,7 @@ async fn main() { music, limit, client_type, + pot, } => { let url_target = rp.query().resolve_string(&id, false).await.unwrap(); @@ -555,6 +559,9 @@ async fn main() { 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(); match url_target { diff --git a/downloader/src/lib.rs b/downloader/src/lib.rs index 40c2583..d8e22c8 100644 --- a/downloader/src/lib.rs +++ b/downloader/src/lib.rs @@ -17,7 +17,7 @@ use futures::stream::{self, StreamExt}; use once_cell::sync::Lazy; use rand::Rng; use regex::Regex; -use reqwest::{header, Client, StatusCode}; +use reqwest::{header, Client, StatusCode, Url}; use rustypipe::{ client::{ClientType, RustyPipe}, model::{ @@ -74,6 +74,7 @@ pub struct DownloaderBuilder { audio_tag: bool, #[cfg(feature = "audiotag")] crop_cover: bool, + pot: Option, } struct DownloaderInner { @@ -103,6 +104,8 @@ struct DownloaderInner { /// Crop YT thumbnails to ensure square album covers #[cfg(feature = "audiotag")] crop_cover: bool, + /// Pot token to circumvent bot detection + pot: Option, } /// Download query @@ -122,6 +125,8 @@ pub struct DownloadQuery { video_format: Option, /// ClientType type for fetching videos client_type: Option, + /// Pot token to circumvent bot detection + pot: Option, } /// Video to be downloaded @@ -287,6 +292,7 @@ impl Default for DownloaderBuilder { audio_tag: false, #[cfg(feature = "audiotag")] crop_cover: false, + pot: None, } } } @@ -384,6 +390,21 @@ 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( @@ -417,6 +438,7 @@ impl DownloaderBuilder { audio_tag: self.audio_tag, #[cfg(feature = "audiotag")] crop_cover: self.crop_cover, + pot: self.pot, }), } } @@ -451,6 +473,7 @@ impl Downloader { filter: None, video_format: None, client_type: None, + pot: None, } } @@ -590,6 +613,21 @@ 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 @@ -685,6 +723,14 @@ impl DownloadQuery { None => q.player(&self.video.id).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); @@ -762,6 +808,7 @@ impl DownloadQuery { &downloads, &self.dl.i.http, &user_agent, + pot, #[cfg(feature = "indicatif")] pb.clone(), ) @@ -1006,6 +1053,7 @@ 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 @@ -1102,6 +1150,7 @@ async fn download_single_file( size.unwrap(), offset, user_agent, + pot, #[cfg(feature = "indicatif")] pb, ) @@ -1209,6 +1258,7 @@ async fn download_chunks_by_header( // Use the `range` url parameter to download a stream in chunks. // This ist used by YouTube's web player. The file size // must be known beforehand (it is included in the stream url). +#[allow(clippy::too_many_arguments)] async fn download_chunks_by_param( http: &Client, file: &mut File, @@ -1216,6 +1266,7 @@ 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; @@ -1228,8 +1279,15 @@ 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 = + 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(format!("{}&range={}-{}", url, range.start, range.end)) + .get(urlp) .header(header::USER_AGENT, user_agent) .header(header::ORIGIN, "https://www.youtube.com") .header(header::REFERER, "https://www.youtube.com/") @@ -1277,6 +1335,7 @@ async fn download_streams( downloads: &Vec, http: &Client, user_agent: &str, + pot: Option<&str>, #[cfg(feature = "indicatif")] pb: Option, ) -> Result<()> { let n = downloads.len(); @@ -1288,6 +1347,7 @@ async fn download_streams( &d.file, http, user_agent, + pot, #[cfg(feature = "indicatif")] pb.clone(), ) diff --git a/notes/po_token.md b/notes/po_token.md new file mode 100644 index 0000000..26064e6 --- /dev/null +++ b/notes/po_token.md @@ -0,0 +1,30 @@ +# About the new `pot` token + +YouTube has implemented a new method to prevent downloaders and alternative clients from accessing +their videos. Now requests to YouTube's video servers require a `pot` URL parameter. + +It is currently only required in the web player. The YTM and embedded player sends the token, too, but does not require it (this may change in the future). + +The TV player does not use the token at all and is currently the best workaround. The only downside +is that the TV player does not return any video metadata like title and description text. + +The first part of a video file (range: 0-1007959 bytes) can be downloaded without the token. +Requesting more of the file requires the pot token to be set, otherwise YouTube responds with a 403 +error. + +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 +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 +of a 403 download error often made things work again. As of 08.08.2024 this new feature seems to be +stabilized and retrying requests does not work any more. + +## Getting a `pot` token + +You need a real browser environment to run YouTube's botguard and obtain a pot token. The Invidious project has created a script to +. +The script opens YouTube's embedded video player, starts playback and extracts the visitor data From 9da3b25be2b2577f7bd0282c09d10d368ac8b73f Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 10 Aug 2024 00:06:56 +0200 Subject: [PATCH 109/347] fix: set tracing instrumentation level to Error --- downloader/src/lib.rs | 2 +- src/client/channel.rs | 14 +++++++------- src/client/channel_rss.rs | 2 +- src/client/music_charts.rs | 2 +- src/client/music_details.rs | 12 ++++++------ src/client/music_genres.rs | 4 ++-- src/client/music_new.rs | 4 ++-- src/client/music_playlist.rs | 4 ++-- src/client/music_search.rs | 2 +- src/client/pagination.rs | 2 +- src/client/player.rs | 2 +- src/client/playlist.rs | 2 +- src/client/search.rs | 6 +++--- src/client/trends.rs | 4 ++-- src/client/url_resolver.rs | 4 ++-- src/client/video_details.rs | 4 ++-- 16 files changed, 35 insertions(+), 35 deletions(-) diff --git a/downloader/src/lib.rs b/downloader/src/lib.rs index d8e22c8..16d93a6 100644 --- a/downloader/src/lib.rs +++ b/downloader/src/lib.rs @@ -632,7 +632,7 @@ impl DownloadQuery { /// /// If no download path is set, the video is downloaded to the current directory /// with a filename created by this template: `{track} {title} [{id}]`. - #[tracing::instrument(skip(self), fields(id = self.video.id))] + #[tracing::instrument(skip(self), level="error", fields(id = self.video.id))] pub async fn download(&self) -> Result { let mut last_err = None; diff --git a/src/client/channel.rs b/src/client/channel.rs index 254a39f..a688ee3 100644 --- a/src/client/channel.rs +++ b/src/client/channel.rs @@ -82,7 +82,7 @@ impl RustyPipeQuery { } /// Get the videos from a YouTube channel - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn channel_videos + Debug>( &self, channel_id: S, @@ -94,7 +94,7 @@ impl RustyPipeQuery { /// Get a ordered list of videos from a YouTube channel /// /// This function does not return channel metadata. - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn channel_videos_order + Debug>( &self, channel_id: S, @@ -105,7 +105,7 @@ impl RustyPipeQuery { } /// Get the videos of the given tab (Shorts, Livestreams) from a YouTube channel - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn channel_videos_tab + Debug>( &self, channel_id: S, @@ -118,7 +118,7 @@ impl RustyPipeQuery { /// Get a ordered list of videos from the given tab (Shorts, Livestreams) of a YouTube channel /// /// This function does not return channel metadata. - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn channel_videos_tab_order + Debug>( &self, channel_id: S, @@ -136,7 +136,7 @@ impl RustyPipeQuery { } /// Search the videos of a channel - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn channel_search + Debug, S2: AsRef + Debug>( &self, channel_id: S, @@ -152,7 +152,7 @@ impl RustyPipeQuery { } /// Get the playlists of a channel - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn channel_playlists + Debug>( &self, channel_id: S, @@ -177,7 +177,7 @@ impl RustyPipeQuery { } /// Get additional metadata from the *About* tab of a channel - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn channel_info + Debug>( &self, channel_id: S, diff --git a/src/client/channel_rss.rs b/src/client/channel_rss.rs index a2f0db3..b28a802 100644 --- a/src/client/channel_rss.rs +++ b/src/client/channel_rss.rs @@ -18,7 +18,7 @@ impl RustyPipeQuery { /// for checking a lot of channels or implementing a subscription feed. /// /// The downside of using the RSS feed is that it does not provide video durations. - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn channel_rss + Debug>( &self, channel_id: S, diff --git a/src/client/music_charts.rs b/src/client/music_charts.rs index 1075913..7ad6149 100644 --- a/src/client/music_charts.rs +++ b/src/client/music_charts.rs @@ -32,7 +32,7 @@ struct FormData { impl RustyPipeQuery { /// Get the YouTube Music charts for a given country - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn music_charts(&self, country: Option) -> Result { let context = self.get_context(ClientType::DesktopMusic, true, None).await; let request_body = QCharts { diff --git a/src/client/music_details.rs b/src/client/music_details.rs index 919b07f..e5ff5f5 100644 --- a/src/client/music_details.rs +++ b/src/client/music_details.rs @@ -40,7 +40,7 @@ struct QRadio<'a> { impl RustyPipeQuery { /// Get the metadata of a YouTube music track - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn music_details + Debug>( &self, video_id: S, @@ -68,7 +68,7 @@ impl RustyPipeQuery { /// Get the lyrics of a YouTube music track /// /// The `lyrics_id` has to be obtained using [`RustyPipeQuery::music_details`]. - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn music_lyrics + Debug>(&self, lyrics_id: S) -> Result { let lyrics_id = lyrics_id.as_ref(); let context = self.get_context(ClientType::DesktopMusic, true, None).await; @@ -90,7 +90,7 @@ impl RustyPipeQuery { /// Get related items (tracks, playlists, artists) to a YouTube Music track /// /// The `related_id` has to be obtained using [`RustyPipeQuery::music_details`]. - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn music_related + Debug>( &self, related_id: S, @@ -115,7 +115,7 @@ impl RustyPipeQuery { /// Get a YouTube Music radio (a dynamically generated playlist) /// /// The `radio_id` can be obtained using [`RustyPipeQuery::music_artist`] to get an artist's radio. - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn music_radio + Debug>( &self, radio_id: S, @@ -146,7 +146,7 @@ impl RustyPipeQuery { } /// Get a YouTube Music radio (a dynamically generated playlist) for a track - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn music_radio_track + Debug>( &self, video_id: S, @@ -156,7 +156,7 @@ impl RustyPipeQuery { } /// Get a YouTube Music radio (a dynamically generated playlist) for a playlist - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn music_radio_playlist + Debug>( &self, playlist_id: S, diff --git a/src/client/music_genres.rs b/src/client/music_genres.rs index 16f3b53..627b93b 100644 --- a/src/client/music_genres.rs +++ b/src/client/music_genres.rs @@ -13,7 +13,7 @@ use super::{ impl RustyPipeQuery { /// Get a list of moods and genres from YouTube Music - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn music_genres(&self) -> Result, Error> { let context = self.get_context(ClientType::DesktopMusic, true, None).await; let request_body = QBrowse { @@ -32,7 +32,7 @@ impl RustyPipeQuery { } /// Get the playlists from a YouTube Music genre - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn music_genre + Debug>( &self, genre_id: S, diff --git a/src/client/music_new.rs b/src/client/music_new.rs index 68251e6..cfc5b6d 100644 --- a/src/client/music_new.rs +++ b/src/client/music_new.rs @@ -11,7 +11,7 @@ use super::{response, ClientType, MapRespCtx, MapResponse, QBrowse, RustyPipeQue impl RustyPipeQuery { /// Get the new albums that were released on YouTube Music - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn music_new_albums(&self) -> Result, Error> { let context = self.get_context(ClientType::DesktopMusic, true, None).await; let request_body = QBrowse { @@ -30,7 +30,7 @@ impl RustyPipeQuery { } /// Get the new music videos that were released on YouTube Music - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn music_new_videos(&self) -> Result, Error> { let context = self.get_context(ClientType::DesktopMusic, true, None).await; let request_body = QBrowse { diff --git a/src/client/music_playlist.rs b/src/client/music_playlist.rs index 8261b2b..0d1ec26 100644 --- a/src/client/music_playlist.rs +++ b/src/client/music_playlist.rs @@ -22,7 +22,7 @@ use super::{ impl RustyPipeQuery { /// Get a playlist from YouTube Music - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn music_playlist + Debug>( &self, playlist_id: S, @@ -54,7 +54,7 @@ impl RustyPipeQuery { } /// Get an album from YouTube Music - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn music_album + Debug>( &self, album_id: S, diff --git a/src/client/music_search.rs b/src/client/music_search.rs index f443229..ea197c7 100644 --- a/src/client/music_search.rs +++ b/src/client/music_search.rs @@ -126,7 +126,7 @@ impl RustyPipeQuery { } /// Get YouTube Music search suggestions - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn music_search_suggestion + Debug>( &self, query: S, diff --git a/src/client/pagination.rs b/src/client/pagination.rs index 94c44e8..1251574 100644 --- a/src/client/pagination.rs +++ b/src/client/pagination.rs @@ -14,7 +14,7 @@ use super::{response, ClientType, MapRespCtx, MapResponse, QContinuation, RustyP impl RustyPipeQuery { /// Get more YouTube items from the given continuation token and endpoint - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn continuation + Debug>( &self, ctoken: S, diff --git a/src/client/player.rs b/src/client/player.rs index b763bb5..2e766e7 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -113,7 +113,7 @@ impl RustyPipeQuery { } /// Get YouTube player data (video/audio streams + basic metadata) using the specified client - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn player_from_client + Debug>( &self, video_id: S, diff --git a/src/client/playlist.rs b/src/client/playlist.rs index ecbf205..1ca0ab3 100644 --- a/src/client/playlist.rs +++ b/src/client/playlist.rs @@ -17,7 +17,7 @@ use super::{response, ClientType, MapRespCtx, MapResponse, MapResult, QBrowse, R impl RustyPipeQuery { /// Get a YouTube playlist - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn playlist + Debug>(&self, playlist_id: S) -> Result { let playlist_id = playlist_id.as_ref(); // YTM playlists require visitor data for continuations to work diff --git a/src/client/search.rs b/src/client/search.rs index 03529f4..50f3b33 100644 --- a/src/client/search.rs +++ b/src/client/search.rs @@ -24,7 +24,7 @@ struct QSearch<'a> { impl RustyPipeQuery { /// Search YouTube - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn search + Debug>( &self, query: S, @@ -48,7 +48,7 @@ impl RustyPipeQuery { } /// Search YouTube using the given [`SearchFilter`] - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn search_filter + Debug>( &self, query: S, @@ -73,7 +73,7 @@ impl RustyPipeQuery { } /// Get YouTube search suggestions - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn search_suggestion + Debug>( &self, query: S, diff --git a/src/client/trends.rs b/src/client/trends.rs index 0a46bc5..a445c91 100644 --- a/src/client/trends.rs +++ b/src/client/trends.rs @@ -16,7 +16,7 @@ use super::{ impl RustyPipeQuery { /// Get the videos from the YouTube startpage - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn startpage(&self) -> Result, Error> { let context = self.get_context(ClientType::Desktop, true, None).await; let request_body = QBrowse { @@ -35,7 +35,7 @@ impl RustyPipeQuery { } /// Get the videos from the YouTube trending page - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn trending(&self) -> Result, Error> { let context = self.get_context(ClientType::Desktop, true, None).await; let request_body = QBrowseParams { diff --git a/src/client/url_resolver.rs b/src/client/url_resolver.rs index ab69903..e771d6e 100644 --- a/src/client/url_resolver.rs +++ b/src/client/url_resolver.rs @@ -58,7 +58,7 @@ impl RustyPipeQuery { /// ); /// # }); /// ``` - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn resolve_url + Debug>( self, url: S, @@ -236,7 +236,7 @@ impl RustyPipeQuery { /// ); /// # }); /// ``` - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn resolve_string + Debug>( self, s: S, diff --git a/src/client/video_details.rs b/src/client/video_details.rs index 1d8a9db..a1fb93e 100644 --- a/src/client/video_details.rs +++ b/src/client/video_details.rs @@ -31,7 +31,7 @@ struct QVideo<'a> { impl RustyPipeQuery { /// Get the metadata for a video - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn video_details + Debug>( &self, video_id: S, @@ -56,7 +56,7 @@ impl RustyPipeQuery { } /// Get the comments for a video using the continuation token obtained from `rusty_pipe_query.video_details()` - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip(self), level = "error")] pub async fn video_comments + Debug>( &self, ctoken: S, From 8f16e5ba6eec3fd6aba1bb6a19571c65fb69ce0e Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 10 Aug 2024 01:46:18 +0200 Subject: [PATCH 110/347] feat: print error message --- cli/src/main.rs | 156 +++++++++++++++++++++++------------------------- 1 file changed, 75 insertions(+), 81 deletions(-) diff --git a/cli/src/main.rs b/cli/src/main.rs index 35107a9..d929690 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -1,7 +1,12 @@ #![doc = include_str!("../README.md")] #![warn(clippy::todo, clippy::dbg_macro)] -use std::{path::PathBuf, str::FromStr, time::Duration}; +use std::{ + path::PathBuf, + str::FromStr, + sync::{atomic::AtomicUsize, Arc}, + time::Duration, +}; use clap::{Parser, Subcommand, ValueEnum}; use futures::stream::{self, StreamExt}; @@ -177,6 +182,7 @@ enum Commands { #[clap(long)] music: Option, }, + /// Get a YouTube visitor data cookie Vdata, } @@ -437,7 +443,7 @@ async fn download_videos( parallel: usize, client_type: Option, multi: MultiProgress, -) { +) -> anyhow::Result<()> { // Indicatif setup let main = multi.add(ProgressBar::new( videos.len().try_into().unwrap_or_default(), @@ -451,11 +457,14 @@ async fn download_videos( ); main.tick(); + let n_failed = Arc::new(AtomicUsize::default()); + stream::iter(videos) .for_each_concurrent(parallel, |video| { let dl = dl.clone(); let main = main.clone(); let id = video.id().to_owned(); + let n_failed = n_failed.clone(); let mut q = target.apply(dl.video(video)); if let Some(client_type) = client_type { @@ -466,12 +475,20 @@ async fn download_videos( if let Err(e) = q.download().await { if !matches!(e, DownloadError::Exists(_)) { tracing::error!("[{id}]: {e}"); + n_failed.fetch_add(1, std::sync::atomic::Ordering::Relaxed); } + } else { + main.inc(1); } - main.inc(1); } }) .await; + + let n_failed = n_failed.load(std::sync::atomic::Ordering::Relaxed); + if n_failed > 0 { + anyhow::bail!("{n_failed} downloads failed"); + } + Ok(()) } /// Stderr writer that suspends the progress bars before printing logs @@ -498,6 +515,14 @@ impl std::io::Write for ProgWriter { #[tokio::main] async fn main() { + if let Err(e) = run().await { + println!("{}", "Error:".red().bold()); + println!("{}", e); + std::process::exit(1); + } +} + +async fn run() -> anyhow::Result<()> { let cli = Cli::parse(); let multi = MultiProgress::new(); @@ -527,7 +552,7 @@ async fn main() { if let Some(country) = cli.country { rp = rp.country(Country::from_str(&country.to_ascii_uppercase()).expect("invalid country")); } - let rp = rp.build().unwrap(); + let rp = rp.build()?; match cli.command { Commands::Download { @@ -541,7 +566,7 @@ async fn main() { client_type, pot, } => { - let url_target = rp.query().resolve_string(&id, false).await.unwrap(); + let url_target = rp.query().resolve_string(&id, false).await?; let mut filter = StreamFilter::new(); if let Some(res) = resolution { @@ -570,12 +595,8 @@ async fn main() { } UrlTarget::Channel { id } => { target.assert_dir(); - let mut channel = rp.query().channel_videos(id).await.unwrap(); - channel - .content - .extend_limit(&rp.query(), limit) - .await - .unwrap(); + let mut channel = rp.query().channel_videos(id).await?; + channel.content.extend_limit(&rp.query(), limit).await?; let videos = channel .content .items @@ -583,17 +604,13 @@ async fn main() { .take(limit) .map(|v| DownloadVideo::from_entity(&v)) .collect(); - download_videos(&dl, videos, &target, parallel, client_type, multi).await; + download_videos(&dl, videos, &target, parallel, client_type, multi).await?; } UrlTarget::Playlist { id } => { target.assert_dir(); let videos = if music { - let mut playlist = rp.query().music_playlist(id).await.unwrap(); - playlist - .tracks - .extend_limit(&rp.query(), limit) - .await - .unwrap(); + let mut playlist = rp.query().music_playlist(id).await?; + playlist.tracks.extend_limit(&rp.query(), limit).await?; playlist .tracks .items @@ -602,12 +619,8 @@ async fn main() { .map(|v| DownloadVideo::from_track(&v)) .collect() } else { - let mut playlist = rp.query().playlist(id).await.unwrap(); - playlist - .videos - .extend_limit(&rp.query(), limit) - .await - .unwrap(); + let mut playlist = rp.query().playlist(id).await?; + playlist.videos.extend_limit(&rp.query(), limit).await?; playlist .videos .items @@ -616,18 +629,18 @@ async fn main() { .map(|v| DownloadVideo::from_entity(&v)) .collect() }; - download_videos(&dl, videos, &target, parallel, client_type, multi).await; + download_videos(&dl, videos, &target, parallel, client_type, multi).await?; } UrlTarget::Album { id } => { target.assert_dir(); - let album = rp.query().music_album(id).await.unwrap(); + let album = rp.query().music_album(id).await?; let videos = album .tracks .into_iter() .take(limit) .map(|v| DownloadVideo::from_track(&v)) .collect(); - download_videos(&dl, videos, &target, parallel, client_type, multi).await; + download_videos(&dl, videos, &target, parallel, client_type, multi).await?; } } } @@ -644,15 +657,15 @@ async fn main() { player, client_type, } => { - let target = rp.query().resolve_string(&id, false).await.unwrap(); + let target = rp.query().resolve_string(&id, false).await?; match target { UrlTarget::Video { id, .. } => { if lyrics { - let details = rp.query().music_details(&id).await.unwrap(); + let details = rp.query().music_details(&id).await?; match details.lyrics_id { Some(lyrics_id) => { - let lyrics = rp.query().music_lyrics(lyrics_id).await.unwrap(); + let lyrics = rp.query().music_lyrics(lyrics_id).await?; if txt { println!("{}\n\n{}", lyrics.body, lyrics.footer); } else { @@ -662,7 +675,7 @@ async fn main() { None => eprintln!("no lyrics found"), } } else if music { - let details = rp.query().music_details(&id).await.unwrap(); + let details = rp.query().music_details(&id).await?; if txt { if details.track.is_video { println!("[MV]"); @@ -696,26 +709,20 @@ async fn main() { rp.query().player_from_client(&id, client_type.into()).await } else { rp.query().player(&id).await - } - .unwrap(); + }?; print_data(&player, format, pretty); } else { - let mut details = rp.query().video_details(&id).await.unwrap(); + let mut details = rp.query().video_details(&id).await?; match comments { Some(CommentsOrder::Top) => { - details - .top_comments - .extend_limit(rp.query(), limit) - .await - .unwrap(); + details.top_comments.extend_limit(rp.query(), limit).await?; } Some(CommentsOrder::Latest) => { details .latest_comments .extend_limit(rp.query(), limit) - .await - .unwrap(); + .await?; } None => {} } @@ -793,7 +800,7 @@ async fn main() { } UrlTarget::Channel { id } => { if music { - let artist = rp.query().music_artist(&id, true).await.unwrap(); + let artist = rp.query().music_artist(&id, true).await?; if txt { anstream::println!( "{}\n{} [{}]", @@ -853,13 +860,9 @@ async fn main() { _ => unreachable!(), }; let mut channel = - rp.query().channel_videos_tab(&id, video_tab).await.unwrap(); + rp.query().channel_videos_tab(&id, video_tab).await?; - channel - .content - .extend_limit(rp.query(), limit) - .await - .unwrap(); + channel.content.extend_limit(rp.query(), limit).await?; if txt { anstream::print!( @@ -881,7 +884,7 @@ async fn main() { } } ChannelTab::Playlists => { - let channel = rp.query().channel_playlists(&id).await.unwrap(); + let channel = rp.query().channel_playlists(&id).await?; if txt { anstream::println!( @@ -901,7 +904,7 @@ async fn main() { } } ChannelTab::Info => { - let info = rp.query().channel_info(&id).await.unwrap(); + let info = rp.query().channel_info(&id).await?; if txt { anstream::println!( @@ -937,12 +940,8 @@ async fn main() { } UrlTarget::Playlist { id } => { if music { - let mut playlist = rp.query().music_playlist(&id).await.unwrap(); - playlist - .tracks - .extend_limit(rp.query(), limit) - .await - .unwrap(); + let mut playlist = rp.query().music_playlist(&id).await?; + playlist.tracks.extend_limit(rp.query(), limit).await?; if txt { anstream::println!( "{}\n{} [{}]\n{} {}", @@ -966,12 +965,8 @@ async fn main() { print_data(&playlist, format, pretty); } } else { - let mut playlist = rp.query().playlist(&id).await.unwrap(); - playlist - .videos - .extend_limit(rp.query(), limit) - .await - .unwrap(); + let mut playlist = rp.query().playlist(&id).await?; + playlist.videos.extend_limit(rp.query(), limit).await?; if txt { anstream::println!( "{}\n{} [{}]\n{} {}", @@ -1000,7 +995,7 @@ async fn main() { } } UrlTarget::Album { id } => { - let album = rp.query().music_album(&id).await.unwrap(); + let album = rp.query().music_album(&id).await?; if txt { anstream::print!( "{}\n{} [{}] ({:?}", @@ -1043,8 +1038,8 @@ async fn main() { } => match music { None => match channel { Some(channel) => { - rustypipe::validate::channel_id(&channel).unwrap(); - let res = rp.query().channel_search(&channel, &query).await.unwrap(); + rustypipe::validate::channel_id(&channel)?; + let res = rp.query().channel_search(&channel, &query).await?; print_data(&res, format, pretty); } None => { @@ -1056,9 +1051,8 @@ async fn main() { let mut res = rp .query() .search_filter::(&query, &filter) - .await - .unwrap(); - res.items.extend_limit(rp.query(), limit).await.unwrap(); + .await?; + res.items.extend_limit(rp.query(), limit).await?; if txt { if let Some(corr) = res.corrected_query { @@ -1071,27 +1065,27 @@ async fn main() { } }, Some(MusicSearchCategory::All) => { - let res = rp.query().music_search_main(&query).await.unwrap(); + let res = rp.query().music_search_main(&query).await?; print_music_search(&res, format, pretty, txt); } Some(MusicSearchCategory::Tracks) => { - let mut res = rp.query().music_search_tracks(&query).await.unwrap(); - res.items.extend_limit(rp.query(), limit).await.unwrap(); + let mut res = rp.query().music_search_tracks(&query).await?; + res.items.extend_limit(rp.query(), limit).await?; print_music_search(&res, format, pretty, txt); } Some(MusicSearchCategory::Videos) => { - let mut res = rp.query().music_search_videos(&query).await.unwrap(); - res.items.extend_limit(rp.query(), limit).await.unwrap(); + let mut res = rp.query().music_search_videos(&query).await?; + res.items.extend_limit(rp.query(), limit).await?; print_music_search(&res, format, pretty, txt); } Some(MusicSearchCategory::Artists) => { - let mut res = rp.query().music_search_artists(&query).await.unwrap(); - res.items.extend_limit(rp.query(), limit).await.unwrap(); + let mut res = rp.query().music_search_artists(&query).await?; + res.items.extend_limit(rp.query(), limit).await?; print_music_search(&res, format, pretty, txt); } Some(MusicSearchCategory::Albums) => { - let mut res = rp.query().music_search_albums(&query).await.unwrap(); - res.items.extend_limit(rp.query(), limit).await.unwrap(); + let mut res = rp.query().music_search_albums(&query).await?; + res.items.extend_limit(rp.query(), limit).await?; print_music_search(&res, format, pretty, txt); } Some(MusicSearchCategory::PlaylistsYtm | MusicSearchCategory::PlaylistsCommunity) => { @@ -1101,15 +1095,15 @@ async fn main() { &query, music == Some(MusicSearchCategory::PlaylistsCommunity), ) - .await - .unwrap(); - res.items.extend_limit(rp.query(), limit).await.unwrap(); + .await?; + res.items.extend_limit(rp.query(), limit).await?; print_music_search(&res, format, pretty, txt); } }, Commands::Vdata => { - let vd = rp.query().get_visitor_data().await.unwrap(); + let vd = rp.query().get_visitor_data().await?; println!("{vd}"); } }; + Ok(()) } From 5e646afd1edc6c0101501311527ea56d3bad5fd2 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 10 Aug 2024 02:29:54 +0200 Subject: [PATCH 111/347] feat: add list of clients to downloader --- cli/src/main.rs | 42 ++++++++++++++++--------------- downloader/src/lib.rs | 58 +++++++++++++++++++++++++++++++++++-------- 2 files changed, 69 insertions(+), 31 deletions(-) diff --git a/cli/src/main.rs b/cli/src/main.rs index d929690..2f647be 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -107,7 +107,7 @@ enum Commands { limit: usize, /// YT Client used to fetch player data #[clap(long)] - client_type: Option, + client_type: Option>, /// Pot token to circumvent bot detection #[clap(long)] pot: Option, @@ -145,7 +145,7 @@ enum Commands { player: bool, /// YT Client used to fetch player data #[clap(long)] - client_type: Option, + client_type: Option, }, /// Search YouTube Search { @@ -260,7 +260,7 @@ enum MusicSearchCategory { } #[derive(Copy, Clone, PartialEq, Eq, ValueEnum)] -enum PlayerType { +enum ClientTypeArg { Desktop, Tv, TvEmbed, @@ -310,14 +310,14 @@ impl From for search_filter::Order { } } -impl From for ClientType { - fn from(value: PlayerType) -> Self { +impl From for ClientType { + fn from(value: ClientTypeArg) -> Self { match value { - PlayerType::Desktop => Self::Desktop, - PlayerType::TvEmbed => Self::TvHtml5Embed, - PlayerType::Tv => Self::Tv, - PlayerType::Android => Self::Android, - PlayerType::Ios => Self::Ios, + ClientTypeArg::Desktop => Self::Desktop, + ClientTypeArg::TvEmbed => Self::TvHtml5Embed, + ClientTypeArg::Tv => Self::Tv, + ClientTypeArg::Android => Self::Android, + ClientTypeArg::Ios => Self::Ios, } } } @@ -424,11 +424,11 @@ async fn download_video( dl: &Downloader, id: &str, target: &DownloadTarget, - client_type: Option, + client_types: Option<&[ClientType]>, ) { let mut q = target.apply(dl.id(id)); - if let Some(client_type) = client_type { - q = q.client_type(client_type.into()); + if let Some(client_types) = client_types { + q = q.client_types(client_types); } let res = q.download().await; if let Err(e) = res { @@ -441,7 +441,7 @@ async fn download_videos( videos: Vec, target: &DownloadTarget, parallel: usize, - client_type: Option, + client_types: Option<&[ClientType]>, multi: MultiProgress, ) -> anyhow::Result<()> { // Indicatif setup @@ -467,8 +467,8 @@ async fn download_videos( let n_failed = n_failed.clone(); let mut q = target.apply(dl.video(video)); - if let Some(client_type) = client_type { - q = q.client_type(client_type.into()); + if let Some(client_types) = client_types { + q = q.client_types(client_types); } async move { @@ -589,9 +589,11 @@ async fn run() -> anyhow::Result<()> { } let dl = dl.stream_filter(filter).build(); + let cts = client_type.map(|c| c.into_iter().map(ClientType::from).collect::>()); + match url_target { UrlTarget::Video { id, .. } => { - download_video(&dl, &id, &target, client_type).await; + download_video(&dl, &id, &target, cts.as_deref()).await; } UrlTarget::Channel { id } => { target.assert_dir(); @@ -604,7 +606,7 @@ async fn run() -> anyhow::Result<()> { .take(limit) .map(|v| DownloadVideo::from_entity(&v)) .collect(); - download_videos(&dl, videos, &target, parallel, client_type, multi).await?; + download_videos(&dl, videos, &target, parallel, cts.as_deref(), multi).await?; } UrlTarget::Playlist { id } => { target.assert_dir(); @@ -629,7 +631,7 @@ async fn run() -> anyhow::Result<()> { .map(|v| DownloadVideo::from_entity(&v)) .collect() }; - download_videos(&dl, videos, &target, parallel, client_type, multi).await?; + download_videos(&dl, videos, &target, parallel, cts.as_deref(), multi).await?; } UrlTarget::Album { id } => { target.assert_dir(); @@ -640,7 +642,7 @@ async fn run() -> anyhow::Result<()> { .take(limit) .map(|v| DownloadVideo::from_track(&v)) .collect(); - download_videos(&dl, videos, &target, parallel, client_type, multi).await?; + download_videos(&dl, videos, &target, parallel, cts.as_deref(), multi).await?; } } } diff --git a/downloader/src/lib.rs b/downloader/src/lib.rs index 16d93a6..df9d430 100644 --- a/downloader/src/lib.rs +++ b/downloader/src/lib.rs @@ -74,6 +74,7 @@ pub struct DownloaderBuilder { audio_tag: bool, #[cfg(feature = "audiotag")] crop_cover: bool, + client_types: Option>, pot: Option, } @@ -104,6 +105,8 @@ struct DownloaderInner { /// Crop YT thumbnails to ensure square album covers #[cfg(feature = "audiotag")] crop_cover: bool, + /// Client types for fetching videos + client_types: Option>, /// Pot token to circumvent bot detection pot: Option, } @@ -123,8 +126,8 @@ pub struct DownloadQuery { filter: Option, /// Target video format video_format: Option, - /// ClientType type for fetching videos - client_type: Option, + /// Client types for fetching videos + client_types: Option>, /// Pot token to circumvent bot detection pot: Option, } @@ -292,6 +295,7 @@ impl Default for DownloaderBuilder { audio_tag: false, #[cfg(feature = "audiotag")] crop_cover: false, + client_types: None, pot: None, } } @@ -390,6 +394,23 @@ impl DownloaderBuilder { self } + /// Set the [`ClientType`] used to fetch the YT player + #[must_use] + pub fn client_type(mut self, client_type: ClientType) -> Self { + self.client_types = Some(vec![client_type]); + self + } + + /// Set a list of client types used to fetch the YT player + /// + /// The clients are used in the given order. If a client cannot fetch the requested video, + /// an attempt is made with the next one. + #[must_use] + pub fn client_types>>(mut self, client_types: T) -> Self { + self.client_types = Some(client_types.into()); + self + } + /// Set the `pot` token to circumvent bot detection /// /// YouTube has implemented the token to prevent other clients from downloading YouTube videos. @@ -438,6 +459,7 @@ impl DownloaderBuilder { audio_tag: self.audio_tag, #[cfg(feature = "audiotag")] crop_cover: self.crop_cover, + client_types: self.client_types, pot: self.pot, }), } @@ -472,7 +494,7 @@ impl Downloader { progress: None, filter: None, video_format: None, - client_type: None, + client_types: None, pot: None, } } @@ -609,7 +631,17 @@ impl DownloadQuery { /// Set the [`ClientType`] used to fetch the YT player #[must_use] pub fn client_type(mut self, client_type: ClientType) -> Self { - self.client_type = Some(client_type); + self.client_types = Some(vec![client_type]); + self + } + + /// Set a list of client types used to fetch the YT player + /// + /// The clients are used in the given order. If a client cannot fetch the requested video, + /// an attempt is made with the next one. + #[must_use] + pub fn client_types>>(mut self, client_types: T) -> Self { + self.client_types = Some(client_types.into()); self } @@ -710,16 +742,20 @@ impl DownloadQuery { }; #[cfg(feature = "indicatif")] if let Some(pb) = pb { - pb.set_message(format!( - "Fetching player data for {}{}", - self.video.name.as_deref().unwrap_or_default(), - attempt_suffix - )) + if let Some(n) = &self.video.name { + pb.set_message(format!("Fetching player data for {n}{attempt_suffix}")); + } else { + pb.set_message(format!("Fetching player data{attempt_suffix}")); + } } let q = self.dl.i.rp.query(); - let player_data = match self.client_type { - Some(client_type) => q.player_from_client(&self.video.id, client_type).await?, + let player_data = match self + .client_types + .as_ref() + .or(self.dl.i.client_types.as_ref()) + { + Some(client_types) => q.player_from_clients(&self.video.id, client_types).await?, None => q.player(&self.video.id).await?, }; let user_agent = q.user_agent(player_data.client_type); From 97904d77374c2c937a49dc7905759c2d8e8ef9ae Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 10 Aug 2024 03:03:15 +0200 Subject: [PATCH 112/347] feat: change default player client order --- src/client/mod.rs | 11 +++++++++++ src/client/player.rs | 3 ++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/client/mod.rs b/src/client/mod.rs index a8bd5d4..3bbb724 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -216,6 +216,17 @@ static CLIENT_VERSION_REGEX: Lazy = static VISITOR_DATA_REGEX: Lazy = Lazy::new(|| Regex::new(r#""visitorData":"([\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::Tv, + ClientType::TvHtml5Embed, + ClientType::Android, + ClientType::Ios, +]; + /// The RustyPipe client used to access YouTube's API /// /// RustyPipe uses an [`Arc`] internally, so if you are using the client diff --git a/src/client/player.rs b/src/client/player.rs index 2e766e7..b78a15c 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -25,6 +25,7 @@ use super::{ player::{self, Format}, }, ClientType, MapRespCtx, MapResponse, MapResult, RustyPipeQuery, YTContext, + DEFAULT_PLAYER_CLIENT_ORDER, }; #[derive(Debug, Serialize)] @@ -65,7 +66,7 @@ struct QContentPlaybackContext<'a> { 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, &[ClientType::Desktop, ClientType::TvHtml5Embed]) + self.player_from_clients(video_id, DEFAULT_PLAYER_CLIENT_ORDER) .await } From d875b5442de9822ba7ddc6f05789f56a8962808c Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 10 Aug 2024 03:11:49 +0200 Subject: [PATCH 113/347] feat: retry with different client after 403 error --- cli/src/main.rs | 24 ++++++++++---------- downloader/src/lib.rs | 51 +++++++++++++++++++++++++++++++++--------- downloader/src/util.rs | 4 ++++ 3 files changed, 56 insertions(+), 23 deletions(-) diff --git a/cli/src/main.rs b/cli/src/main.rs index 2f647be..124dee9 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -94,21 +94,21 @@ enum Commands { #[clap(short, long)] resolution: Option, /// Download only the audio track - #[clap(long)] + #[clap(short, long)] audio: bool, /// Number of videos downloaded in parallel #[clap(short, long, default_value_t = 8)] parallel: usize, /// Use YouTube Music for downloading playlists - #[clap(long)] + #[clap(short, long)] music: bool, /// Limit the number of videos to download - #[clap(long, default_value_t = 1000)] + #[clap(short, long, default_value_t = 1000)] limit: usize, /// YT Client used to fetch player data - #[clap(long)] + #[clap(short, long)] client_type: Option>, - /// Pot token to circumvent bot detection + /// `pot` token to circumvent bot detection #[clap(long)] pot: Option, }, @@ -123,16 +123,16 @@ enum Commands { #[clap(long)] pretty: bool, /// Output as text - #[clap(long)] + #[clap(short, long)] txt: bool, /// Limit the number of items to fetch - #[clap(long, default_value_t = 20)] + #[clap(short, long, default_value_t = 20)] limit: usize, /// Channel tab #[clap(long, default_value = "videos")] tab: ChannelTab, /// Use YouTube Music - #[clap(long)] + #[clap(short, long)] music: bool, /// Get comments #[clap(long)] @@ -144,7 +144,7 @@ enum Commands { #[clap(long)] player: bool, /// YT Client used to fetch player data - #[clap(long)] + #[clap(short, long)] client_type: Option, }, /// Search YouTube @@ -158,10 +158,10 @@ enum Commands { #[clap(long)] pretty: bool, /// Output as text - #[clap(long)] + #[clap(short, long)] txt: bool, /// Limit the number of items to fetch - #[clap(long, default_value_t = 20)] + #[clap(short, long, default_value_t = 20)] limit: usize, /// Filter results by item type #[clap(long)] @@ -179,7 +179,7 @@ enum Commands { #[clap(long)] channel: Option, /// YouTube Music search filter - #[clap(long)] + #[clap(short, long)] music: Option, }, /// Get a YouTube visitor data cookie diff --git a/downloader/src/lib.rs b/downloader/src/lib.rs index df9d430..53c301c 100644 --- a/downloader/src/lib.rs +++ b/downloader/src/lib.rs @@ -19,7 +19,7 @@ use rand::Rng; use regex::Regex; use reqwest::{header, Client, StatusCode, Url}; use rustypipe::{ - client::{ClientType, RustyPipe}, + client::{ClientType, RustyPipe, DEFAULT_PLAYER_CLIENT_ORDER}, model::{ traits::{FileFormat, YtEntity}, AudioCodec, TrackItem, VideoCodec, VideoPlayer, @@ -667,6 +667,7 @@ impl DownloadQuery { #[tracing::instrument(skip(self), level="error", fields(id = self.video.id))] pub async fn download(&self) -> Result { let mut last_err = None; + let mut failed_client = None; // Progress bar #[cfg(feature = "indicatif")] @@ -683,14 +684,19 @@ impl DownloadQuery { let err = match self .download_attempt( n, + failed_client, #[cfg(feature = "indicatif")] &pb, ) .await { Ok(res) => return Ok(res), + Err(DownloadError::Forbidden(c)) => { + failed_client = Some(c); + DownloadError::Forbidden(c) + } Err(DownloadError::Http(e)) => { - if !e.is_timeout() && e.status() != Some(StatusCode::FORBIDDEN) { + if !e.is_timeout() { return Err(DownloadError::Http(e)); } DownloadError::Http(e) @@ -710,6 +716,7 @@ impl DownloadQuery { async fn download_attempt( &self, #[allow(unused_variables)] n: u32, + failed_client: Option, #[cfg(feature = "indicatif")] pb: &Option, ) -> Result { let filter = self.filter.as_ref().unwrap_or(&self.dl.i.filter); @@ -750,14 +757,28 @@ impl DownloadQuery { } let q = self.dl.i.rp.query(); - let player_data = match self - .client_types - .as_ref() - .or(self.dl.i.client_types.as_ref()) - { - Some(client_types) => q.player_from_clients(&self.video.id, client_types).await?, - None => q.player(&self.video.id).await?, - }; + + let mut client_types = Cow::Borrowed( + self.client_types + .as_ref() + .or(self.dl.i.client_types.as_ref()) + .map(Vec::as_slice) + .unwrap_or(DEFAULT_PLAYER_CLIENT_ORDER), + ); + + // If the last download failed, try another client if possible + if let Some(failed_client) = failed_client { + if let Some(pos) = client_types.iter().position(|c| c == &failed_client) { + let p2 = pos + 1; + if p2 < client_types.len() { + let mut v = client_types[p2..].to_vec(); + v.extend(&client_types[..p2]); + client_types = v.into(); + } + } + } + + 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, @@ -848,7 +869,15 @@ impl DownloadQuery { #[cfg(feature = "indicatif")] pb.clone(), ) - .await?; + .await + .map_err(|e| { + if let DownloadError::Http(e) = &e { + if e.status() == Some(StatusCode::FORBIDDEN) { + return DownloadError::Forbidden(player_data.client_type); + } + } + e + })?; #[cfg(feature = "indicatif")] if let Some(pb) = &pb { diff --git a/downloader/src/util.rs b/downloader/src/util.rs index 3934e2f..5069c96 100644 --- a/downloader/src/util.rs +++ b/downloader/src/util.rs @@ -1,6 +1,7 @@ use std::{borrow::Cow, collections::BTreeMap, path::PathBuf}; use reqwest::Url; +use rustypipe::client::ClientType; /// Error from the video downloader #[derive(thiserror::Error, Debug)] @@ -12,6 +13,9 @@ pub enum DownloadError { /// Error from the HTTP client #[error("http error: {0}")] Http(#[from] reqwest::Error), + /// 403 error trying to download video + #[error("YouTube returned 403 error")] + Forbidden(ClientType), /// File IO error #[error(transparent)] Io(#[from] std::io::Error), From 479fac1c02a75249a8ff2c945e2a6944f9ce7ea1 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 10 Aug 2024 03:14:42 +0200 Subject: [PATCH 114/347] test: dont check video streams for desktop client (pot token) --- tests/youtube.rs | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/tests/youtube.rs b/tests/youtube.rs index d1e97f6..b6a0577 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -137,8 +137,11 @@ async fn get_player_from_client(#[case] client_type: ClientType, rp: RustyPipe) assert_eq!(audio.format, AudioFormat::Webm); assert_eq!(audio.codec, AudioCodec::Opus); - check_video_stream(video).await; - check_video_stream(audio).await; + // Desktop client now requires pot token so the streams cannot be tested here + if client_type != ClientType::Desktop { + check_video_stream(video).await; + check_video_stream(audio).await; + } } assert!(player_data.expires_in_seconds > 10000); @@ -246,19 +249,25 @@ async fn get_player( let details = player_data.details; assert_eq!(details.id, id); - assert_eq!(details.name.expect("name"), name); - let desc = details.description.expect("description"); - assert!(desc.contains(description), "description: {desc}"); + if let Some(n) = &details.name { + assert_eq!(n, name); + } + if let Some(desc) = &details.description { + assert!(desc.contains(description), "description: {desc}"); + } assert_eq!(details.duration, duration); assert_eq!(details.channel_id, channel_id); - assert_eq!(details.channel_name.expect("channel name"), channel_name); - assert_gte(details.view_count.expect("view count"), views, "views"); + if let Some(cn) = &details.channel_name { + assert_eq!(cn, channel_name); + } + if let Some(vc) = details.view_count { + assert_gte(vc, views, "views"); + } assert_eq!(details.is_live, is_live); assert_eq!(details.is_live_content, is_live_content); if is_live { - assert!(player_data.hls_manifest_url.is_some()); - assert!(player_data.dash_manifest_url.is_some()); + assert!(player_data.hls_manifest_url.is_some() || player_data.dash_manifest_url.is_some()); } else { assert!(!player_data.video_only_streams.is_empty()); assert!(!player_data.audio_streams.is_empty()); From 03c4d3c392386e06f2673f0e0783e22d10087989 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 10 Aug 2024 03:35:20 +0200 Subject: [PATCH 115/347] feat: add option to fetch RSS feed --- cli/Cargo.toml | 2 +- cli/src/main.rs | 48 +++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 42 insertions(+), 8 deletions(-) diff --git a/cli/Cargo.toml b/cli/Cargo.toml index e07a928..6f68f47 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -41,7 +41,7 @@ rustls-tls-native-roots = [ ] [dependencies] -rustypipe.workspace = true +rustypipe = { workspace = true, features = ["rss"] } rustypipe-downloader.workspace = true reqwest.workspace = true tokio = { workspace = true, features = ["macros", "rt-multi-thread"] } diff --git a/cli/src/main.rs b/cli/src/main.rs index 124dee9..9458e81 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -134,6 +134,9 @@ enum Commands { /// Use YouTube Music #[clap(short, long)] music: bool, + /// Use the RSS feed of a channel + #[clap(long)] + rss: bool, /// Get comments #[clap(long)] comments: Option, @@ -654,6 +657,7 @@ async fn run() -> anyhow::Result<()> { limit, tab, music, + rss, comments, lyrics, player, @@ -669,7 +673,7 @@ async fn run() -> anyhow::Result<()> { Some(lyrics_id) => { let lyrics = rp.query().music_lyrics(lyrics_id).await?; if txt { - println!("{}\n\n{}", lyrics.body, lyrics.footer); + println!("{}\n\n{}", lyrics.body, lyrics.footer.blue()); } else { print_data(&lyrics, format, pretty); } @@ -680,18 +684,23 @@ async fn run() -> anyhow::Result<()> { let details = rp.query().music_details(&id).await?; if txt { if details.track.is_video { - println!("[MV]"); + anstream::println!("{}", "[MV]".on_green().black()); } else { - println!("[Track]"); + anstream::println!("{}", "[Track]".on_green().black()); } - print!("{} [{}]", details.track.name, details.track.id); + anstream::print!( + "{} [{}]", + details.track.name.green().bold(), + details.track.id + ); print_duration(details.track.duration); println!(); print_artists(&details.track.artists); println!(); if !details.track.is_video { - println!( - "Album: {}", + anstream::println!( + "{} {}", + "Album:".blue(), details .track .album @@ -701,7 +710,7 @@ async fn run() -> anyhow::Result<()> { ) } if let Some(view_count) = details.track.view_count { - println!("Views: {view_count}"); + anstream::println!("{} {}", "Views:".blue(), view_count); } } else { print_data(&details, format, pretty); @@ -852,6 +861,31 @@ async fn run() -> anyhow::Result<()> { } else { print_data(&artist, format, pretty); } + } else if rss { + let rss = rp.query().channel_rss(&id).await?; + + if txt { + anstream::println!( + "{}\n{} [{}]\n{} {}", + "[Channel RSS]".on_green().black(), + rss.name.green().bold(), + rss.id, + "Created on:".blue(), + rss.create_date, + ); + if let Some(v) = rss.videos.first() { + anstream::println!( + "{} {} [{}]", + "Latest video:".blue(), + v.publish_date, + v.id + ); + } + println!(); + print_entities(&rss.videos); + } else { + print_data(&rss, format, pretty); + } } else { match tab { ChannelTab::Videos | ChannelTab::Shorts | ChannelTab::Live => { From f37432a48c1f93cab5f7942f791daf7b27cb1565 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 10 Aug 2024 14:12:39 +0200 Subject: [PATCH 116/347] fix: use native tls by default for CLI --- cli/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 6f68f47..c8196c1 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -11,7 +11,7 @@ categories.workspace = true description = "CLI for RustyPipe - download videos and extract data from YouTube / YouTube Music" [features] -default = ["rustls-tls-native-roots"] +default = ["native-tls"] # Reqwest TLS options native-tls = [ From da39c64f302bc2edc4214bbe25a0a9eb54063b09 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 10 Aug 2024 16:26:43 +0200 Subject: [PATCH 117/347] fix: detect ip-ban error message --- cli/src/main.rs | 3 +-- src/client/player.rs | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cli/src/main.rs b/cli/src/main.rs index 9458e81..96e3925 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -519,8 +519,7 @@ impl std::io::Write for ProgWriter { #[tokio::main] async fn main() { if let Err(e) = run().await { - println!("{}", "Error:".red().bold()); - println!("{}", e); + println!("{} {}", "Error:".red().bold(), e); std::process::exit(1); } } diff --git a/src/client/player.rs b/src/client/player.rs index b78a15c..430d33c 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -221,6 +221,7 @@ impl MapResponse for response::Player { .find_map(|word| match word { "age" | "inappropriate" => Some(UnavailabilityReason::AgeRestricted), "private" => Some(UnavailabilityReason::Private), + "bot" => Some(UnavailabilityReason::IpBan), _ => None, }) .unwrap_or_default(); From 43c171761d758f0670f0de619f2c081b5d8dac4d Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 13 Aug 2024 03:42:31 +0200 Subject: [PATCH 118/347] ci: use warpproxy to circumvent ip-ban --- .forgejo/workflows/ci.yaml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index 11582b8..8622f8b 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -7,6 +7,14 @@ on: jobs: Test: runs-on: cimaster-latest + services: + warpproxy: + image: thetadev256/warpproxy + env: + WARP_DEVICE_ID: ${{ secrets.WARP_DEVICE_ID }} + WARP_ACCESS_TOKEN: ${{ secrets.WARP_ACCESS_TOKEN }} + WARP_LICENSE_KEY: ${{ secrets.WARP_LICENSE_KEY }} + WARP_PRIVATE_KEY: ${{ secrets.WARP_PRIVATE_KEY }} steps: - name: 📦 Checkout repository uses: actions/checkout@v4 @@ -21,6 +29,8 @@ jobs: - name: 🧪 Test run: cargo nextest run --config-file ~/.config/nextest.toml --profile ci --retries 2 --features rss --workspace + env: + ALL_PROXY: "http://warpproxy:8124" - name: 💌 Upload test report if: always() From abb783219aba4b492c1dff03c2148acf1f51a55d Mon Sep 17 00:00:00 2001 From: Forgejo Actions Date: Wed, 14 Aug 2024 21:22:28 +0200 Subject: [PATCH 119/347] chore(deps): update rust crate rstest to 0.22.0 (#9) --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 220e5da..9c05861 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -66,7 +66,7 @@ dirs = "5.0.0" filenamify = "0.1.0" # Testing -rstest = "0.21.0" +rstest = "0.22.0" tokio-test = "0.4.2" insta = { version = "1.17.1", features = ["ron", "redactions"] } path_macro = "1.0.0" From 8692ca81d972d0d2acf6fb4da79b9e0f5ebf4daf Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 17 Aug 2024 00:10:31 +0200 Subject: [PATCH 120/347] todo: update metadata --- README.md | 6 +- cli/README.md | 95 +++++- cli/src/main.rs | 697 +++++++++++++++++++++++-------------------- downloader/README.md | 10 +- 4 files changed, 477 insertions(+), 331 deletions(-) diff --git a/README.md b/README.md index 15f6876..9b5646c 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ # ![RustyPipe](https://code.thetadev.de/ThetaDev/rustypipe/raw/branch/main/notes/logo.svg) -[![Current crates.io version](https://img.shields.io/crates/v/smartcrop2.svg)](https://crates.io/crates/smartcrop2) +[![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/MIT) [![CI status](https://code.thetadev.de/ThetaDev/rustypipe/actions/workflows/ci.yaml/badge.svg?style=flat&label=CI)](https://code.thetadev.de/ThetaDev/rustypipe/actions/?workflow=ci.yaml) -Rust client for the public YouTube / YouTube Music API (Innertube), inspired by -[NewPipe](https://github.com/TeamNewPipe/NewPipeExtractor). +RustyPipe is a fully featured Rust client for the public YouTube / YouTube Music API +(Innertube), inspired by [NewPipe](https://github.com/TeamNewPipe/NewPipeExtractor). ## Features diff --git a/cli/README.md b/cli/README.md index e88277e..4cb7d8a 100644 --- a/cli/README.md +++ b/cli/README.md @@ -1 +1,94 @@ -# RustyPipe CLI +# ![RustyPipe](https://code.thetadev.de/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/MIT) +[![CI status](https://code.thetadev.de/ThetaDev/rustypipe/actions/workflows/ci.yaml/badge.svg?style=flat&label=CI)](https://code.thetadev.de/ThetaDev/rustypipe/actions/?workflow=ci.yaml) + +The RustyPipe CLI is a powerful YouTube client for the command line. It allows you to +access most of the features of the RustyPipe crate: getting data from YouTube and +downloading videos. + +The following subcommands are included: + +## `get`: Fetch information + +You can call the get command with any YouTube entity ID or URL and RustyPipe will fetch +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) +- `-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, + tv-embed, android, ios; if multiple clients are specified, they are attempted in + order) + +## `search`: Search YouTube + +With the search command you can search the entire YouTube platform or individual +channels. YouTube Music search is also supported. + +Note that search filters are only supported when searching YouTube. They have no effect +when searching YTM or individual channels. + +**Usage:** `rustypipe search "query"` + +### Options + +- `-l`, `--limit` Limit the number of list items to fetch + +- `--item-type` Filter results by item type +- `--length` Filter results by video length +- `--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, + videos, artists, albums, playlists-ytm, playlists-community) + +## `dl`: Download videos + +The downloader can download individual videos, playlists, albums and channels. Multiple +videos can be downloaded in parallel for improved performance. + +**Usage:** `rustypipe dl eRsGyueVLvQ` + +### Options + +- `-o`, `--output` Download to the given directory +- `--output-file` Download to the given file +- `--template` Download to a path determined by a template + +- `-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 +- `-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 + order) +- `--pot` token to circumvent bot detection + +## `vdata`: Get visitor data + +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. + +## Global options + +- **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 +- **Visitor data:** A custom visitor data cookie can be used with the `--vdata` flag +- `--report` + +### Output format + +By default, the CLI outputs YouTube data in a human-readable text format. If you want to +store the data or process it with a script, you should choose a machine readable output +format. You can choose both JSON and YAML with the `-f, --format` flag. diff --git a/cli/src/main.rs b/cli/src/main.rs index 96e3925..5c4c249 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -49,10 +49,13 @@ struct Cli { #[derive(Parser)] #[group(multiple = false)] struct DownloadTarget { + /// Download to the given directory #[clap(short, long)] output: Option, + /// Download to the given file #[clap(long)] output_file: Option, + /// Download to a path determined by a template #[clap(long)] template: Option, } @@ -93,7 +96,7 @@ enum Commands { /// Video resolution (e.g. 720, 1080). Set to 0 for audio-only. #[clap(short, long)] resolution: Option, - /// Download only the audio track + /// Download only the audio track and write track information #[clap(short, long)] audio: bool, /// Number of videos downloaded in parallel @@ -117,24 +120,21 @@ enum Commands { /// ID or URL id: String, /// Output format - #[clap(long, value_parser, default_value = "json")] - format: Format, + #[clap(short, long, value_parser)] + format: Option, /// Pretty-print output #[clap(long)] pretty: bool, - /// Output as text - #[clap(short, long)] - txt: bool, /// Limit the number of items to fetch #[clap(short, long, default_value_t = 20)] limit: usize, /// Channel tab - #[clap(long, default_value = "videos")] + #[clap(short, long, default_value = "videos")] tab: ChannelTab, /// Use YouTube Music #[clap(short, long)] music: bool, - /// Use the RSS feed of a channel + /// Fetch the RSS feed of a channel #[clap(long)] rss: bool, /// Get comments @@ -148,21 +148,18 @@ enum Commands { player: bool, /// YT Client used to fetch player data #[clap(short, long)] - client_type: Option, + client_type: Option>, }, /// Search YouTube Search { /// Search query query: String, /// Output format - #[clap(long, value_parser, default_value = "json")] - format: Format, + #[clap(short, long, value_parser)] + format: Option, /// Pretty-print output #[clap(long)] pretty: bool, - /// Output as text - #[clap(short, long)] - txt: bool, /// Limit the number of items to fetch #[clap(short, long, default_value_t = 20)] limit: usize, @@ -181,7 +178,7 @@ enum Commands { /// Channel ID for searching channel videos #[clap(long)] channel: Option, - /// YouTube Music search filter + /// Search YouTube Music in the given category #[clap(short, long)] music: Option, }, @@ -189,8 +186,9 @@ enum Commands { Vdata, } -#[derive(Copy, Clone, ValueEnum)] +#[derive(Default, Copy, Clone, ValueEnum)] enum Format { + #[default] Json, Yaml, } @@ -388,17 +386,17 @@ fn print_duration(duration: Option) { fn print_music_search( data: &MusicSearchResult, - format: Format, + format: Option, pretty: bool, - txt: bool, ) { - if txt { - if let Some(corr) = &data.corrected_query { - anstream::println!("Did you mean `{}`?", corr.magenta()); + match format { + Some(format) => print_data(data, format, pretty), + None => { + if let Some(corr) = &data.corrected_query { + anstream::println!("Did you mean `{}`?", corr.magenta()); + } + print_entities(&data.items.items); } - print_entities(&data.items.items); - } else { - print_data(data, format, pretty) } } @@ -406,7 +404,7 @@ fn print_description(desc: Option) { if let Some(desc) = desc { if !desc.is_empty() { print_h2("Description"); - println!("{}", desc); + println!("{}", desc.trim()); } } } @@ -651,7 +649,6 @@ async fn run() -> anyhow::Result<()> { Commands::Get { id, format, - txt, pretty, limit, tab, @@ -671,56 +668,60 @@ async fn run() -> anyhow::Result<()> { match details.lyrics_id { Some(lyrics_id) => { let lyrics = rp.query().music_lyrics(lyrics_id).await?; - if txt { - println!("{}\n\n{}", lyrics.body, lyrics.footer.blue()); - } else { - print_data(&lyrics, format, pretty); + match format { + Some(format) => print_data(&lyrics, format, pretty), + None => println!("{}\n\n{}", lyrics.body, lyrics.footer.blue()), } } None => eprintln!("no lyrics found"), } } else if music { let details = rp.query().music_details(&id).await?; - if txt { - if details.track.is_video { - anstream::println!("{}", "[MV]".on_green().black()); - } else { - anstream::println!("{}", "[Track]".on_green().black()); + 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()); + } + anstream::print!( + "{} [{}]", + details.track.name.green().bold(), + details.track.id + ); + print_duration(details.track.duration); + println!(); + print_artists(&details.track.artists); + println!(); + if !details.track.is_video { + anstream::println!( + "{} {}", + "Album:".blue(), + details + .track + .album + .as_ref() + .map(|b| b.id.as_str()) + .unwrap_or("None") + ) + } + if let Some(view_count) = details.track.view_count { + anstream::println!("{} {}", "Views:".blue(), view_count); + } } - anstream::print!( - "{} [{}]", - details.track.name.green().bold(), - details.track.id - ); - print_duration(details.track.duration); - println!(); - print_artists(&details.track.artists); - println!(); - if !details.track.is_video { - anstream::println!( - "{} {}", - "Album:".blue(), - details - .track - .album - .as_ref() - .map(|b| b.id.as_str()) - .unwrap_or("None") - ) - } - if let Some(view_count) = details.track.view_count { - anstream::println!("{} {}", "Views:".blue(), view_count); - } - } else { - print_data(&details, format, pretty); } } else if player { - let player = if let Some(client_type) = client_type { - rp.query().player_from_client(&id, client_type.into()).await + let player = if let Some(client_types) = client_type { + let cts = client_types + .into_iter() + .map(ClientType::from) + .collect::>(); + rp.query().player_from_clients(&id, &cts).await } else { rp.query().player(&id).await }?; - print_data(&player, format, pretty); + print_data(&player, format.unwrap_or_default(), pretty); } else { let mut details = rp.query().video_details(&id).await?; @@ -737,153 +738,160 @@ async fn run() -> anyhow::Result<()> { None => {} } - if txt { - anstream::println!( - "{}\n{} [{}]", - "[Video]".on_green().black(), - details.name.green().bold(), - details.id - ); - anstream::println!( - "{} {} [{}]", - "Channel:".blue(), - details.channel.name, - details.channel.id - ); - if let Some(subs) = details.channel.subscriber_count { - anstream::println!("{} {}", "Subscribers:".blue(), subs); - } - if let Some(date) = details.publish_date { - anstream::println!("{} {}", "Date:".blue(), date); - } - anstream::println!("{} {}", "Views:".blue(), details.view_count); - if let Some(likes) = details.like_count { - anstream::println!("{} {}", "Likes:".blue(), likes); - } - if let Some(comments) = details.top_comments.count { - anstream::println!("{} {}", "Comments:".blue(), comments); - } - if details.is_ccommons { - anstream::println!("{}", "Creative Commons".green()); - } - if details.is_live { - anstream::println!("{}", "Livestream".red()); - } - print_description(Some(details.description.to_plaintext())); - if !details.recommended.is_empty() { - print_h2("Recommended"); - print_entities(&details.recommended.items); - } - let comment_list = comments.map(|c| match c { - CommentsOrder::Top => &details.top_comments.items, - 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()); + match format { + Some(format) => print_data(&details, format, pretty), + None => { + anstream::println!( + "{}\n{} [{}]", + "[Video]".on_green().black(), + details.name.green().bold(), + details.id + ); + anstream::println!( + "{} {} [{}]", + "Channel:".blue(), + details.channel.name, + details.channel.id + ); + if let Some(subs) = details.channel.subscriber_count { + anstream::println!("{} {}", "Subscribers:".blue(), subs); + } + if let Some(date) = details.publish_date { + anstream::println!("{} {}", "Date:".blue(), date); + } + anstream::println!("{} {}", "Views:".blue(), details.view_count); + if let Some(likes) = details.like_count { + anstream::println!("{} {}", "Likes:".blue(), likes); + } + if let Some(comments) = details.top_comments.count { + anstream::println!("{} {}", "Comments:".blue(), comments); + } + if details.is_ccommons { + anstream::println!("{}", "Creative Commons".green()); + } + if details.is_live { + anstream::println!("{}", "Livestream".red()); + } + print_description(Some(details.description.to_plaintext())); + if !details.recommended.is_empty() { + print_h2("Recommended"); + print_entities(&details.recommended.items); + } + let comment_list = comments.map(|c| match c { + CommentsOrder::Top => &details.top_comments.items, + 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"); } - 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"); } } - } else { - print_data(&details, format, pretty); } } } UrlTarget::Channel { id } => { if music { let artist = rp.query().music_artist(&id, true).await?; - if txt { - anstream::println!( - "{}\n{} [{}]", - "[Artist]".on_green().black(), - artist.name.green().bold(), - artist.id - ); - if let Some(subs) = artist.subscriber_count { - anstream::println!("{} {}", "Subscribers:".blue(), subs); - } - if let Some(url) = artist.wikipedia_url { - anstream::println!("{} {}", "Wikipedia:".blue(), url); - } - if let Some(id) = artist.tracks_playlist_id { - anstream::println!("{} {}", "All tracks:".blue(), id); - } - if let Some(id) = artist.videos_playlist_id { - anstream::println!("{} {}", "All videos:".blue(), id); - } - if let Some(id) = artist.radio_id { - anstream::println!("{} {}", "Radio:".blue(), id); - } - print_description(artist.description); - if !artist.albums.is_empty() { - print_h2("Albums"); - for b in artist.albums { - anstream::print!( - "[{}] {} ({:?}", - b.id, - b.name.bold(), - b.album_type - ); - if let Some(y) = b.year { - print!(", {y}"); + match format { + Some(format) => print_data(&artist, format, pretty), + None => { + anstream::println!( + "{}\n{} [{}]", + "[Artist]".on_green().black(), + artist.name.green().bold(), + artist.id + ); + if let Some(subs) = artist.subscriber_count { + anstream::println!("{} {}", "Subscribers:".blue(), subs); + } + if let Some(url) = artist.wikipedia_url { + anstream::println!("{} {}", "Wikipedia:".blue(), url); + } + if let Some(id) = artist.tracks_playlist_id { + anstream::println!("{} {}", "All tracks:".blue(), id); + } + if let Some(id) = artist.videos_playlist_id { + anstream::println!("{} {}", "All videos:".blue(), id); + } + if let Some(id) = artist.radio_id { + anstream::println!("{} {}", "Radio:".blue(), id); + } + print_description(artist.description); + if !artist.albums.is_empty() { + print_h2("Albums"); + for b in artist.albums { + anstream::print!( + "[{}] {} ({:?}", + b.id, + b.name.bold(), + b.album_type + ); + if let Some(y) = b.year { + print!(", {y}"); + } + println!(")"); } - println!(")"); + } + if !artist.playlists.is_empty() { + print_h2("Playlists"); + print_entities(&artist.playlists); + } + if !artist.similar_artists.is_empty() { + print_h2("Similar artists"); + print_entities(&artist.similar_artists); } } - if !artist.playlists.is_empty() { - print_h2("Playlists"); - print_entities(&artist.playlists); - } - if !artist.similar_artists.is_empty() { - print_h2("Similar artists"); - print_entities(&artist.similar_artists); - } - } else { - print_data(&artist, format, pretty); } } else if rss { let rss = rp.query().channel_rss(&id).await?; - if txt { - anstream::println!( - "{}\n{} [{}]\n{} {}", - "[Channel RSS]".on_green().black(), - rss.name.green().bold(), - rss.id, - "Created on:".blue(), - rss.create_date, - ); - if let Some(v) = rss.videos.first() { + match format { + Some(format) => print_data(&rss, format, pretty), + None => { anstream::println!( - "{} {} [{}]", - "Latest video:".blue(), - v.publish_date, - v.id + "{}\n{} [{}]\n{} {}", + "[Channel RSS]".on_green().black(), + rss.name.green().bold(), + rss.id, + "Created on:".blue(), + rss.create_date, ); + if let Some(v) = rss.videos.first() { + anstream::println!( + "{} {} [{}]", + "Latest video:".blue(), + v.publish_date, + v.id + ); + } + println!(); + print_entities(&rss.videos); } - println!(); - print_entities(&rss.videos); - } else { - print_data(&rss, format, pretty); } } else { match tab { @@ -899,75 +907,94 @@ async fn run() -> anyhow::Result<()> { channel.content.extend_limit(rp.query(), limit).await?; - if txt { - anstream::print!( - "{}\n{} [{}]", - format!("[Channel {tab:?}]").on_green().black(), - channel.name.green().bold(), - channel.id - ); - print_verification(channel.verification); - println!(); - if let Some(subs) = channel.subscriber_count { - anstream::println!("{} {}", "Subscribers:".blue(), subs); + match format { + Some(format) => print_data(&channel, format, pretty), + None => { + anstream::print!( + "{}\n{} [{}]", + format!("[Channel {tab:?}]").on_green().black(), + channel.name.green().bold(), + channel.id + ); + print_verification(channel.verification); + println!(); + if let Some(subs) = channel.subscriber_count { + anstream::println!( + "{} {}", + "Subscribers:".blue(), + subs + ); + } + print_description(Some(channel.description)); + println!(); + print_entities(&channel.content.items); } - print_description(Some(channel.description)); - println!(); - print_entities(&channel.content.items); - } else { - print_data(&channel, format, pretty); } } ChannelTab::Playlists => { let channel = rp.query().channel_playlists(&id).await?; - if txt { - anstream::println!( - "{}\n{} [{}]", - format!("[Channel {tab:?}]").on_green().black(), - channel.name.green().bold(), - channel.id - ); - print_description(Some(channel.description)); - if let Some(subs) = channel.subscriber_count { - anstream::println!("{} {}", "Subscribers:".blue(), subs); + match format { + Some(format) => print_data(&channel, format, pretty), + None => { + anstream::println!( + "{}\n{} [{}]", + format!("[Channel {tab:?}]").on_green().black(), + channel.name.green().bold(), + channel.id + ); + print_description(Some(channel.description)); + if let Some(subs) = channel.subscriber_count { + anstream::println!( + "{} {}", + "Subscribers:".blue(), + subs + ); + } + println!(); + print_entities(&channel.content.items); } - println!(); - print_entities(&channel.content.items); - } else { - print_data(&channel, format, pretty); } } ChannelTab::Info => { let info = rp.query().channel_info(&id).await?; - if txt { - anstream::println!( - "{}\nID:{}", - "[Channel info]".on_green().black(), - info.id - ); - print_description(Some(info.description)); - if let Some(subs) = info.subscriber_count { - anstream::println!("{} {}", "Subscribers:".blue(), subs); - } - if let Some(vids) = info.video_count { - anstream::println!("{} {}", "Videos:".blue(), vids); - } - if let Some(views) = info.view_count { - anstream::println!("{} {}", "Views:".blue(), views); - } - if let Some(created) = info.create_date { - anstream::println!("{} {}", "Created on:".blue(), created); - } - if !info.links.is_empty() { - print_h2("Links"); - for (name, url) in &info.links { - anstream::println!("{} {}", name.blue(), url); + match format { + Some(format) => print_data(&info, format, pretty), + None => { + anstream::println!( + "{}\nID:{}", + "[Channel info]".on_green().black(), + info.id + ); + print_description(Some(info.description)); + if let Some(subs) = info.subscriber_count { + anstream::println!( + "{} {}", + "Subscribers:".blue(), + subs + ); + } + if let Some(vids) = info.video_count { + anstream::println!("{} {}", "Videos:".blue(), vids); + } + if let Some(views) = info.view_count { + anstream::println!("{} {}", "Views:".blue(), views); + } + if let Some(created) = info.create_date { + anstream::println!( + "{} {}", + "Created on:".blue(), + created + ); + } + if !info.links.is_empty() { + print_h2("Links"); + for (name, url) in &info.links { + anstream::println!("{} {}", name.blue(), url); + } } } - } else { - print_data(&info, format, pretty); } } } @@ -977,83 +1004,86 @@ async fn run() -> anyhow::Result<()> { if music { let mut playlist = rp.query().music_playlist(&id).await?; playlist.tracks.extend_limit(rp.query(), limit).await?; - if txt { - anstream::println!( - "{}\n{} [{}]\n{} {}", - "[MusicPlaylist]".on_green().black(), - playlist.name.green().bold(), - playlist.id, - "Tracks:".blue(), - playlist.track_count.unwrap_or_default(), - ); - if let Some(n) = playlist.channel_name() { - anstream::print!("{} {}", "Author:".blue(), n.bold()); - if let Some(id) = playlist.channel_id() { - print!(" [{id}]"); + match format { + Some(format) => print_data(&playlist, format, pretty), + None => { + anstream::println!( + "{}\n{} [{}]\n{} {}", + "[MusicPlaylist]".on_green().black(), + playlist.name.green().bold(), + playlist.id, + "Tracks:".blue(), + playlist.track_count.unwrap_or_default(), + ); + if let Some(n) = playlist.channel_name() { + anstream::print!("{} {}", "Author:".blue(), n.bold()); + if let Some(id) = playlist.channel_id() { + print!(" [{id}]"); + } + println!(); } + print_description(playlist.description.map(|d| d.to_plaintext())); println!(); + print_tracks(&playlist.tracks.items); } - print_description(playlist.description.map(|d| d.to_plaintext())); - println!(); - print_tracks(&playlist.tracks.items); - } else { - print_data(&playlist, format, pretty); } } else { let mut playlist = rp.query().playlist(&id).await?; playlist.videos.extend_limit(rp.query(), limit).await?; - if txt { - anstream::println!( - "{}\n{} [{}]\n{} {}", - "[Playlist]".on_green().black(), - playlist.name.green().bold(), - playlist.id, - "Videos:".blue(), - playlist.video_count, - ); - if let Some(n) = playlist.channel_name() { - anstream::print!("{} {}", "Author:".blue(), n.bold()); - if let Some(id) = playlist.channel_id() { - print!(" [{id}]"); + match format { + Some(format) => print_data(&playlist, format, pretty), + None => { + anstream::println!( + "{}\n{} [{}]\n{} {}", + "[Playlist]".on_green().black(), + playlist.name.green().bold(), + playlist.id, + "Videos:".blue(), + playlist.video_count, + ); + if let Some(n) = playlist.channel_name() { + anstream::print!("{} {}", "Author:".blue(), n.bold()); + if let Some(id) = playlist.channel_id() { + print!(" [{id}]"); + } + println!(); } + if let Some(last_update) = playlist.last_update { + anstream::println!("{} {}", "Last update:".blue(), last_update); + } + print_description(playlist.description.map(|d| d.to_plaintext())); println!(); + print_entities(&playlist.videos.items); } - if let Some(last_update) = playlist.last_update { - anstream::println!("{} {}", "Last update:".blue(), last_update); - } - print_description(playlist.description.map(|d| d.to_plaintext())); - println!(); - print_entities(&playlist.videos.items); - } else { - print_data(&playlist, format, pretty); } } } UrlTarget::Album { id } => { let album = rp.query().music_album(&id).await?; - if txt { - anstream::print!( - "{}\n{} [{}] ({:?}", - "[Album]".on_green().black(), - album.name.green().bold(), - album.id, - album.album_type - ); - if let Some(year) = album.year { - print!(", {year}"); - } - println!(")"); - if let Some(n) = album.channel_name() { - anstream::print!("{} {}", "Artist:".blue(), n); - if let Some(id) = album.channel_id() { - print!(" [{id}]"); + match format { + Some(format) => print_data(&album, format, pretty), + None => { + anstream::print!( + "{}\n{} [{}] ({:?}", + "[Album]".on_green().black(), + album.name.green().bold(), + album.id, + album.album_type + ); + if let Some(year) = album.year { + print!(", {year}"); } + println!(")"); + if let Some(n) = album.channel_name() { + anstream::print!("{} {}", "Artist:".blue(), n); + if let Some(id) = album.channel_id() { + print!(" [{id}]"); + } + } + print_description(album.description.map(|d| d.to_plaintext())); + println!(); + print_tracks(&album.tracks); } - print_description(album.description.map(|d| d.to_plaintext())); - println!(); - print_tracks(&album.tracks); - } else { - print_data(&album, format, pretty); } } } @@ -1062,7 +1092,6 @@ async fn run() -> anyhow::Result<()> { query, format, pretty, - txt, limit, item_type, length, @@ -1072,10 +1101,29 @@ async fn run() -> anyhow::Result<()> { music, } => match music { None => match channel { - Some(channel) => { - rustypipe::validate::channel_id(&channel)?; - let res = rp.query().channel_search(&channel, &query).await?; - print_data(&res, format, pretty); + Some(channel_id) => { + rustypipe::validate::channel_id(&channel_id)?; + let channel = rp.query().channel_search(&channel_id, &query).await?; + + match format { + Some(format) => print_data(&channel, format, pretty), + None => { + anstream::print!( + "{}\n{} [{}]", + "[Channel search]".on_green().black(), + channel.name.green().bold(), + channel.id + ); + print_verification(channel.verification); + println!(); + if let Some(subs) = channel.subscriber_count { + anstream::println!("{} {}", "Subscribers:".blue(), subs); + } + print_description(Some(channel.description)); + println!(); + print_entities(&channel.content.items); + } + } } None => { let filter = search_filter::SearchFilter::new() @@ -1089,39 +1137,40 @@ async fn run() -> anyhow::Result<()> { .await?; res.items.extend_limit(rp.query(), limit).await?; - if txt { - if let Some(corr) = res.corrected_query { - anstream::println!("Did you mean `{}`?", corr.magenta()); + match format { + Some(format) => print_data(&res, format, pretty), + None => { + if let Some(corr) = res.corrected_query { + anstream::println!("Did you mean `{}`?", corr.magenta()); + } + print_entities(&res.items.items); } - print_entities(&res.items.items); - } else { - print_data(&res, format, pretty); } } }, Some(MusicSearchCategory::All) => { let res = rp.query().music_search_main(&query).await?; - print_music_search(&res, format, pretty, txt); + print_music_search(&res, format, pretty); } 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, txt); + print_music_search(&res, format, pretty); } 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, txt); + print_music_search(&res, format, pretty); } 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, txt); + print_music_search(&res, format, pretty); } 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, txt); + print_music_search(&res, format, pretty); } Some(MusicSearchCategory::PlaylistsYtm | MusicSearchCategory::PlaylistsCommunity) => { let mut res = rp @@ -1132,7 +1181,7 @@ async fn run() -> anyhow::Result<()> { ) .await?; res.items.extend_limit(rp.query(), limit).await?; - print_music_search(&res, format, pretty, txt); + print_music_search(&res, format, pretty); } }, Commands::Vdata => { diff --git a/downloader/README.md b/downloader/README.md index 24a554a..05ec1a8 100644 --- a/downloader/README.md +++ b/downloader/README.md @@ -1,4 +1,8 @@ -# RustyPipe downloader +# ![RustyPipe](https://code.thetadev.de/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/MIT) +[![CI status](https://code.thetadev.de/ThetaDev/rustypipe/actions/workflows/ci.yaml/badge.svg?style=flat&label=CI)](https://code.thetadev.de/ThetaDev/rustypipe/actions/?workflow=ci.yaml) The downloader is a companion crate for RustyPipe that allows for easy and fast downloading of video and audio files. @@ -35,8 +39,8 @@ let dl = DownloaderBuilder::new() .build(); let filter_audio = StreamFilter::new().no_video(); -dl.id("ZeerrnuLi5E").stream_filter(filter_audio).to_file("audio.opus").download().await; +dl.id("eRsGyueVLvQ").stream_filter(filter_audio).to_file("audio.opus").download().await; let filter_video = StreamFilter::new().video_max_res(720); -dl.id("ZeerrnuLi5E").stream_filter(filter_video).to_file("video.mp4").download().await; +dl.id("eRsGyueVLvQ").stream_filter(filter_video).to_file("video.mp4").download().await; ``` From d0ae7961ba91d56c8b9a8d1c545875e869b818f5 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 17 Aug 2024 00:21:47 +0200 Subject: [PATCH 121/347] fix: player_from_clients: fall back to TvHtml5Embed client --- src/client/mod.rs | 8 ++------ src/client/player.rs | 18 ++++++++++++------ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/client/mod.rs b/src/client/mod.rs index 3bbb724..2d74f5d 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -220,12 +220,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::TvHtml5Embed, - ClientType::Android, - ClientType::Ios, -]; +pub const DEFAULT_PLAYER_CLIENT_ORDER: &[ClientType] = + &[ClientType::Tv, ClientType::Android, ClientType::Ios]; /// The RustyPipe client used to access YouTube's API /// diff --git a/src/client/player.rs b/src/client/player.rs index 430d33c..76b16a5 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -74,6 +74,9 @@ 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, @@ -81,9 +84,6 @@ impl RustyPipeQuery { ) -> Result { let video_id = video_id.as_ref(); let mut last_e = Error::Other("no clients".into()); - // Prefer to output age restriction error (e.g. if video cannot be played - // by Desktop because of age restriction and by TvHtml5Embed because it is non-embeddable) - let mut age_restricted_e = None; for client in clients { let res = self.player_from_client(video_id, *client).await; @@ -96,11 +96,17 @@ impl RustyPipeQuery { msg, } = &e { - age_restricted_e = - Some(Error::Extraction(ExtractionError::Unavailable { + if let Ok(res) = self + .player_from_client(video_id, ClientType::TvHtml5Embed) + .await + { + return Ok(res); + } else { + return Err(Error::Extraction(ExtractionError::Unavailable { reason: UnavailabilityReason::AgeRestricted, msg: msg.to_owned(), })); + } } last_e = Error::Extraction(e); } else { @@ -110,7 +116,7 @@ impl RustyPipeQuery { Err(e) => return Err(e), } } - Err(age_restricted_e.unwrap_or(last_e)) + Err(last_e) } /// Get YouTube player data (video/audio streams + basic metadata) using the specified client From 5a6b2c3a621f6b20c1324ea8b9c03426e3d8018b Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 17 Aug 2024 00:42:47 +0200 Subject: [PATCH 122/347] fix: parsing channels without banner --- src/client/response/channel.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/client/response/channel.rs b/src/client/response/channel.rs index 4bff8f2..eaa2cc2 100644 --- a/src/client/response/channel.rs +++ b/src/client/response/channel.rs @@ -125,29 +125,35 @@ pub(crate) struct PageHeaderRenderer { pub page_header_view_model: PageHeaderRendererInner, } +#[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct PageHeaderRendererInner { + /// Channel title (only used to extract verification badges) + #[serde_as(as = "DefaultOnError")] pub title: PhTitleView, + /// Channel avatar pub image: PhAvatarView, + /// Channel metadata (subscribers, video count) pub metadata: PhMetadataView, + #[serde(default)] pub banner: PhBannerView, } -#[derive(Debug, Deserialize)] +#[derive(Default, Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct PhTitleView { pub dynamic_text_view_model: PhTitleView2, } -#[derive(Debug, Deserialize)] +#[derive(Default, Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct PhTitleView2 { pub text: PhTitleView3, } #[serde_as] -#[derive(Debug, Deserialize)] +#[derive(Default, Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct PhTitleView3 { #[serde_as(as = "VecSkipError<_>")] @@ -242,7 +248,7 @@ pub(crate) struct PhMetadataRow { pub metadata_parts: Vec, } -#[derive(Debug, Deserialize)] +#[derive(Default, Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct PhBannerView { pub image_banner_view_model: ImageView, From e6715700d950912031d5fbc1263f8770b6ffc49c Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 17 Aug 2024 02:44:47 +0200 Subject: [PATCH 123/347] feat!: update channel model, addd handle + video_count, remove tv/mobile banner --- cli/src/main.rs | 15 ++++- codegen/src/abtest.rs | 2 +- downloader/src/lib.rs | 2 +- src/client/channel.rs | 60 ++++++++++--------- src/client/response/channel.rs | 5 -- ...annel__tests__map_channel_livestreams.snap | 57 +----------------- ...channel__tests__map_channel_playlists.snap | 57 +----------------- ...t__channel__tests__map_channel_shorts.snap | 57 +----------------- ...ap_channel_shorts_20240129_pageheader.snap | 5 +- ..._map_channel_videos_20221011_richgrid.snap | 57 +----------------- ...map_channel_videos_20221011_richgrid2.snap | 57 +----------------- ...map_channel_videos_20230415_coachella.snap | 5 +- ...p_channel_videos_20240324_pageheader2.snap | 5 +- ...annel__tests__map_channel_videos_base.snap | 57 +----------------- ...nnel__tests__map_channel_videos_empty.snap | 5 +- ...annel__tests__map_channel_videos_live.snap | 57 +----------------- ...nnel__tests__map_channel_videos_music.snap | 57 +----------------- ...nel__tests__map_channel_videos_shorts.snap | 57 +----------------- ...l__tests__map_channel_videos_upcoming.snap | 57 +----------------- src/model/mod.rs | 11 ++-- src/util/mod.rs | 7 ++- src/validate.rs | 31 +++++++++- tests/youtube.rs | 10 +--- 23 files changed, 114 insertions(+), 619 deletions(-) diff --git a/cli/src/main.rs b/cli/src/main.rs index 5c4c249..ae173c7 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -911,9 +911,10 @@ async fn run() -> anyhow::Result<()> { Some(format) => print_data(&channel, format, pretty), None => { anstream::print!( - "{}\n{} [{}]", + "{}\n{} {} [{}]", format!("[Channel {tab:?}]").on_green().black(), channel.name.green().bold(), + channel.handle.unwrap_or_default(), channel.id ); print_verification(channel.verification); @@ -925,6 +926,9 @@ async fn run() -> anyhow::Result<()> { subs ); } + if let Some(vids) = channel.video_count { + anstream::println!("{} {}", "Videos:".blue(), vids); + } print_description(Some(channel.description)); println!(); print_entities(&channel.content.items); @@ -938,9 +942,10 @@ async fn run() -> anyhow::Result<()> { Some(format) => print_data(&channel, format, pretty), None => { anstream::println!( - "{}\n{} [{}]", + "{}\n{} {} [{}]", format!("[Channel {tab:?}]").on_green().black(), channel.name.green().bold(), + channel.handle.unwrap_or_default(), channel.id ); print_description(Some(channel.description)); @@ -951,6 +956,9 @@ async fn run() -> anyhow::Result<()> { subs ); } + if let Some(vids) = channel.video_count { + anstream::println!("{} {}", "Videos:".blue(), vids); + } println!(); print_entities(&channel.content.items); } @@ -988,6 +996,9 @@ async fn run() -> anyhow::Result<()> { created ); } + if let Some(country) = info.country { + anstream::println!("{} {}", "Country:".blue(), country); + } if !info.links.is_empty() { print_h2("Links"); for (name, url) in &info.links { diff --git a/codegen/src/abtest.rs b/codegen/src/abtest.rs index f1d8cbb..be14c79 100644 --- a/codegen/src/abtest.rs +++ b/codegen/src/abtest.rs @@ -327,7 +327,7 @@ pub async fn channel_page_header(rp: &RustyPipeQuery) -> Result { let channel = rp .channel_videos_tab("UCh8gHdtzO2tXd593_bjErWg", ChannelVideoTab::Shorts) .await?; - Ok(channel.mobile_banner.is_empty() && channel.tv_banner.is_empty()) + Ok(channel.video_count.is_some()) } pub async fn music_playlist_two_column(rp: &RustyPipeQuery) -> Result { diff --git a/downloader/src/lib.rs b/downloader/src/lib.rs index 53c301c..5c65fb0 100644 --- a/downloader/src/lib.rs +++ b/downloader/src/lib.rs @@ -158,7 +158,7 @@ impl DownloadVideo { channel_id: video.channel_id().map(str::to_owned), channel_name: video .channel_name() - .map(|n| n.strip_suffix(" - Topic").unwrap_or(n).to_owned()), + .map(|n| n.strip_suffix("- Topic").unwrap_or(n).trim().to_owned()), album_id: None, album_name: None, track_nr: None, diff --git a/src/client/channel.rs b/src/client/channel.rs index a688ee3..854c728 100644 --- a/src/client/channel.rs +++ b/src/client/channel.rs @@ -353,18 +353,6 @@ impl MapResponse for response::ChannelAbout { } } -fn map_vanity_url(url: &str, id: &str) -> Option { - if url.contains(id) { - return None; - } - - Url::parse(url).ok().map(|mut parsed_url| { - // The vanity URL from YouTube is http for some reason - _ = parsed_url.set_scheme("https"); - parsed_url.to_string() - }) -} - struct MapChannelData { header: Option, metadata: Option, @@ -401,10 +389,16 @@ fn map_channel( ))); } - let vanity_url = metadata + let handle = metadata .vanity_channel_url .as_ref() - .and_then(|url| map_vanity_url(url, ctx.id)); + .and_then(|url| Url::parse(url).ok()) + .and_then(|url| { + url.path() + .strip_prefix('/') + .filter(|handle| util::CHANNEL_HANDLE_REGEX.is_match(handle)) + .map(str::to_owned) + }); let mut warnings = Vec::new(); Ok(MapResult { @@ -412,17 +406,16 @@ fn map_channel( response::channel::Header::C4TabbedHeaderRenderer(header) => Channel { id: metadata.external_id, name: metadata.title, + handle, subscriber_count: header.subscriber_count_text.and_then(|txt| { util::parse_large_numstr_or_warn(&txt, ctx.lang, &mut warnings) }), + video_count: None, avatar: header.avatar.into(), verification: header.badges.into(), description: metadata.description, tags: microformat.microformat_data_renderer.tags, - vanity_url, banner: header.banner.into(), - mobile_banner: header.mobile_banner.into(), - tv_banner: header.tv_banner.into(), has_shorts: d.has_shorts, has_live: d.has_live, visitor_data: d.visitor_data, @@ -443,21 +436,20 @@ fn map_channel( Channel { id: metadata.external_id, name: metadata.title, + handle, subscriber_count: hdata.as_ref().and_then(|hdata| { hdata.0.as_ref().and_then(|txt| { util::parse_large_numstr_or_warn(txt, ctx.lang, &mut warnings) }) }), + video_count: None, avatar: hdata.map(|hdata| hdata.1.into()).unwrap_or_default(), // Since the carousel header is only used for YT-internal channels or special events // (World Cup, Coachella, etc.) we can assume the channel to be verified verification: crate::model::Verification::Verified, description: metadata.description, tags: microformat.microformat_data_renderer.tags, - vanity_url, banner: Vec::new(), - mobile_banner: Vec::new(), - tv_banner: Vec::new(), has_shorts: d.has_shorts, has_live: d.has_live, visitor_data: d.visitor_data, @@ -468,19 +460,33 @@ fn map_channel( let hdata = header.content.page_header_view_model; // channel handle - subscriber count - video count let md_rows = hdata.metadata.content_metadata_view_model.metadata_rows; - let sub_part = if md_rows.len() > 1 { - md_rows.get(1).and_then(|md| md.metadata_parts.first()) + let (sub_part, vc_part) = if md_rows.len() > 1 { + let mp = &md_rows[1].metadata_parts; + (mp.first(), mp.get(1)) } else { - md_rows.first().and_then(|md| md.metadata_parts.get(1)) + ( + md_rows.first().and_then(|md| md.metadata_parts.get(1)), + None, + ) }; let subscriber_count = sub_part.and_then(|t| { util::parse_large_numstr_or_warn::(&t.text, ctx.lang, &mut warnings) }); + let video_count = + vc_part.and_then(|t| util::parse_numeric_or_warn(&t.text, &mut warnings)); Channel { id: metadata.external_id, name: metadata.title, + handle: handle.or_else(|| { + md_rows + .first() + .and_then(|md| md.metadata_parts.get(1)) + .map(|txt| txt.text.to_owned()) + .filter(|txt| util::CHANNEL_HANDLE_REGEX.is_match(txt)) + }), subscriber_count, + video_count, avatar: hdata .image .decorated_avatar_view_model @@ -491,10 +497,7 @@ fn map_channel( verification: hdata.title.into(), description: metadata.description, tags: microformat.microformat_data_renderer.tags, - vanity_url, banner: hdata.banner.image_banner_view_model.image.into(), - mobile_banner: Vec::new(), - tv_banner: Vec::new(), has_shorts: d.has_shorts, has_live: d.has_live, visitor_data: d.visitor_data, @@ -604,15 +607,14 @@ fn combine_channel_data(channel_data: Channel<()>, content: T) -> Channel Channel { id: channel_data.id, name: channel_data.name, + handle: channel_data.handle, subscriber_count: channel_data.subscriber_count, + video_count: channel_data.video_count, avatar: channel_data.avatar, verification: channel_data.verification, description: channel_data.description, tags: channel_data.tags, - vanity_url: channel_data.vanity_url, banner: channel_data.banner, - mobile_banner: channel_data.mobile_banner, - tv_banner: channel_data.tv_banner, has_shorts: channel_data.has_shorts, has_live: channel_data.has_live, visitor_data: channel_data.visitor_data, diff --git a/src/client/response/channel.rs b/src/client/response/channel.rs index eaa2cc2..c9b0440 100644 --- a/src/client/response/channel.rs +++ b/src/client/response/channel.rs @@ -95,11 +95,6 @@ pub(crate) struct HeaderRenderer { pub badges: Vec, #[serde(default)] pub banner: Thumbnails, - #[serde(default)] - pub mobile_banner: Thumbnails, - /// Fullscreen (16:9) channel banner - #[serde(default)] - pub tv_banner: Thumbnails, } #[serde_as] 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 830b5fd..a2c19fa 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 @@ -5,7 +5,9 @@ expression: map_res.c Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", + handle: None, subscriber_count: Some(884000), + video_count: None, avatar: [ Thumbnail( url: "https://yt3.ggpht.com/ytc/AMLnZu9eKk4Nd16fX4Rn1TF1G7ReluwOl6M5558FTYAM=s48-c-k-c0x00ffffff-no-rj", @@ -55,7 +57,6 @@ Channel( "dumpster diving", "debunking", ], - vanity_url: Some("https://www.youtube.com/c/EevblogDave"), banner: [ Thumbnail( url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1060-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", @@ -88,60 +89,6 @@ Channel( height: 424, ), ], - mobile_banner: [ - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w320-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 320, - height: 88, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w640-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 640, - height: 175, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w960-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 960, - height: 263, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1280-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 1280, - height: 351, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1440-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 1440, - height: 395, - ), - ], - tv_banner: [ - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w320-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 320, - height: 180, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w854-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 854, - height: 480, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1280-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 1280, - height: 720, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1920-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 1920, - height: 1080, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w2120-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 2120, - height: 1192, - ), - ], has_shorts: false, has_live: true, visitor_data: None, diff --git a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_playlists.snap b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_playlists.snap index 1ccf5b6..7558c9f 100644 --- a/src/client/snapshots/rustypipe__client__channel__tests__map_channel_playlists.snap +++ b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_playlists.snap @@ -5,7 +5,9 @@ expression: map_res.c Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", + handle: None, subscriber_count: Some(881000), + video_count: None, avatar: [ Thumbnail( url: "https://yt3.ggpht.com/ytc/AMLnZu9eKk4Nd16fX4Rn1TF1G7ReluwOl6M5558FTYAM=s48-c-k-c0x00ffffff-no-rj", @@ -55,7 +57,6 @@ Channel( "dumpster diving", "debunking", ], - vanity_url: Some("https://www.youtube.com/c/EevblogDave"), banner: [ Thumbnail( url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1060-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", @@ -88,60 +89,6 @@ Channel( height: 424, ), ], - mobile_banner: [ - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w320-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 320, - height: 88, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w640-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 640, - height: 175, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w960-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 960, - height: 263, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1280-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 1280, - height: 351, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1440-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 1440, - height: 395, - ), - ], - tv_banner: [ - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w320-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 320, - height: 180, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w854-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 854, - height: 480, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1280-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 1280, - height: 720, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1920-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 1920, - height: 1080, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w2120-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 2120, - height: 1192, - ), - ], has_shorts: false, has_live: false, visitor_data: Some("CgttaWpyTVpUN1AyZyioqr2ZBg%3D%3D"), 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 e9e98bf..46c6acf 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 @@ -5,7 +5,9 @@ expression: map_res.c Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", + handle: Some("@Doobydobap"), subscriber_count: Some(3360000), + video_count: None, avatar: [ Thumbnail( url: "https://yt3.googleusercontent.com/dm5Aq93xvVJz0NoVO88ieBkDXmuShCujGPlZ7qETMEPTrXvPUCFI3-BB6Xs_P-r6Uk3mnBy9zA=s48-c-k-c0x00ffffff-no-rj", @@ -26,7 +28,6 @@ Channel( verification: Verified, description: "Hi, I’m Tina, aka Doobydobap!\n\nFood is the medium I use to tell stories and connect with people who share the same passion as I do. Whether it’s because you’re hungry at midnight or trying to learn how to cook, I hope you enjoy watching my content and recipes. Don\'t yuck my yum!\n\nwww.doobydobap.com\n", tags: [], - vanity_url: Some("https://www.youtube.com/@Doobydobap"), banner: [ Thumbnail( url: "https://yt3.googleusercontent.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w1060-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", @@ -59,60 +60,6 @@ Channel( height: 424, ), ], - mobile_banner: [ - Thumbnail( - url: "https://yt3.googleusercontent.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w320-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 320, - height: 88, - ), - Thumbnail( - url: "https://yt3.googleusercontent.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w640-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 640, - height: 175, - ), - Thumbnail( - url: "https://yt3.googleusercontent.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w960-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 960, - height: 263, - ), - Thumbnail( - url: "https://yt3.googleusercontent.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w1280-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 1280, - height: 351, - ), - Thumbnail( - url: "https://yt3.googleusercontent.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w1440-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 1440, - height: 395, - ), - ], - tv_banner: [ - Thumbnail( - url: "https://yt3.googleusercontent.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w320-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 320, - height: 180, - ), - Thumbnail( - url: "https://yt3.googleusercontent.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w854-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 854, - height: 480, - ), - Thumbnail( - url: "https://yt3.googleusercontent.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w1280-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 1280, - height: 720, - ), - Thumbnail( - url: "https://yt3.googleusercontent.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w1920-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 1920, - height: 1080, - ), - Thumbnail( - url: "https://yt3.googleusercontent.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w2120-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 2120, - height: 1192, - ), - ], has_shorts: true, has_live: false, visitor_data: Some("CgtHU1dvWkR4cGRfdyjMpt6iBg%3D%3D"), 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 47cf981..81a993a 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 @@ -5,7 +5,9 @@ expression: map_res.c Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", + handle: Some("@Doobydobap"), subscriber_count: Some(3740000), + video_count: None, avatar: [ Thumbnail( url: "https://yt3.googleusercontent.com/dm5Aq93xvVJz0NoVO88ieBkDXmuShCujGPlZ7qETMEPTrXvPUCFI3-BB6Xs_P-r6Uk3mnBy9zA=s72-c-k-c0x00ffffff-no-rj", @@ -26,7 +28,6 @@ Channel( verification: Verified, description: "Hi, I’m Tina, aka Doobydobap!\n\nFood is the medium I use to tell stories and connect with people who share the same passion as I do. Whether it’s because you’re hungry at midnight or trying to learn how to cook, I hope you enjoy watching my content and recipes. Don\'t yuck my yum!\n\nwww.doobydobap.com\n", tags: [], - vanity_url: Some("https://www.youtube.com/@Doobydobap"), banner: [ Thumbnail( url: "https://yt3.googleusercontent.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w1060-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", @@ -59,8 +60,6 @@ Channel( height: 424, ), ], - mobile_banner: [], - tv_banner: [], has_shorts: true, has_live: false, visitor_data: None, 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 6f0e23e..7fd71af 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 @@ -5,7 +5,9 @@ expression: map_res.c Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", + handle: None, subscriber_count: Some(2930000), + video_count: None, avatar: [ Thumbnail( url: "https://yt3.ggpht.com/dm5Aq93xvVJz0NoVO88ieBkDXmuShCujGPlZ7qETMEPTrXvPUCFI3-BB6Xs_P-r6Uk3mnBy9zA=s48-c-k-c0x00ffffff-no-rj", @@ -26,7 +28,6 @@ Channel( verification: Verified, description: "Hi, I’m Tina, aka Doobydobap!\n\nFood is the medium I use to tell stories and connect with people who share the same passion as I do. Whether it’s because you’re hungry at midnight or trying to learn how to cook, I hope you enjoy watching my content and recipes. Don\'t yuck my yum!\n\nwww.doobydobap.com\n", tags: [], - vanity_url: Some("https://www.youtube.com/c/Doobydobap"), banner: [ Thumbnail( url: "https://yt3.ggpht.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w1060-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", @@ -59,60 +60,6 @@ Channel( height: 424, ), ], - mobile_banner: [ - Thumbnail( - url: "https://yt3.ggpht.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w320-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 320, - height: 88, - ), - Thumbnail( - url: "https://yt3.ggpht.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w640-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 640, - height: 175, - ), - Thumbnail( - url: "https://yt3.ggpht.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w960-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 960, - height: 263, - ), - Thumbnail( - url: "https://yt3.ggpht.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w1280-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 1280, - height: 351, - ), - Thumbnail( - url: "https://yt3.ggpht.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w1440-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 1440, - height: 395, - ), - ], - tv_banner: [ - Thumbnail( - url: "https://yt3.ggpht.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w320-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 320, - height: 180, - ), - Thumbnail( - url: "https://yt3.ggpht.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w854-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 854, - height: 480, - ), - Thumbnail( - url: "https://yt3.ggpht.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w1280-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 1280, - height: 720, - ), - Thumbnail( - url: "https://yt3.ggpht.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w1920-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 1920, - height: 1080, - ), - Thumbnail( - url: "https://yt3.ggpht.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w2120-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 2120, - height: 1192, - ), - ], has_shorts: true, has_live: false, visitor_data: Some("CgtQdE9zVVR3NVBDbyjz0ZKaBg%3D%3D"), 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 e4efa91..09b224f 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 @@ -5,7 +5,9 @@ expression: map_res.c Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", + handle: None, subscriber_count: Some(883000), + video_count: None, avatar: [ Thumbnail( url: "https://yt3.ggpht.com/ytc/AMLnZu9eKk4Nd16fX4Rn1TF1G7ReluwOl6M5558FTYAM=s48-c-k-c0x00ffffff-no-rj", @@ -55,7 +57,6 @@ Channel( "dumpster diving", "debunking", ], - vanity_url: Some("https://www.youtube.com/c/EevblogDave"), banner: [ Thumbnail( url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1060-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", @@ -88,60 +89,6 @@ Channel( height: 424, ), ], - mobile_banner: [ - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w320-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 320, - height: 88, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w640-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 640, - height: 175, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w960-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 960, - height: 263, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1280-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 1280, - height: 351, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1440-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 1440, - height: 395, - ), - ], - tv_banner: [ - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w320-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 320, - height: 180, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w854-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 854, - height: 480, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1280-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 1280, - height: 720, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1920-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 1920, - height: 1080, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w2120-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 2120, - height: 1192, - ), - ], has_shorts: false, has_live: true, visitor_data: Some("Cgs4ZFVmMzVlU1dxbyiBqpeaBg%3D%3D"), 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 a365792..7279d2e 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 @@ -5,7 +5,9 @@ expression: map_res.c Channel( id: "UCHF66aWLOxBW4l6VkSrS3cQ", name: "Coachella", + handle: Some("@Coachella"), subscriber_count: Some(2710000), + video_count: None, avatar: [ Thumbnail( url: "//yt3.googleusercontent.com/RDZ6VWFjHEMFm_QcmCCf-yG_UiGo9YWXEmVRuiHSC8SvP02dgeBEtAjd4CnEKGLo0V2gGdIRDQ=s88-c-k-c0x00ffffff-no-rj-mo", @@ -31,10 +33,7 @@ Channel( "indio", "california", ], - vanity_url: Some("https://www.youtube.com/@Coachella"), banner: [], - mobile_banner: [], - tv_banner: [], has_shorts: true, has_live: true, visitor_data: Some("CgtjSUhDeVJ6SU5wNCj75uyhBg%3D%3D"), 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 42d984e..96428f6 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 @@ -5,7 +5,9 @@ expression: map_res.c Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", + handle: Some("@EEVblog"), subscriber_count: Some(933000), + video_count: Some(19), avatar: [ Thumbnail( url: "https://yt3.googleusercontent.com/ytc/AIdro_lagjGDfXbXlQXhznx3CDRitOBdxvebllQd_YP1ag=s72-c-k-c0x00ffffff-no-rj", @@ -55,7 +57,6 @@ Channel( "dumpster diving", "debunking", ], - vanity_url: Some("https://www.youtube.com/@EEVblog"), banner: [ Thumbnail( url: "https://yt3.googleusercontent.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1060-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", @@ -88,8 +89,6 @@ Channel( height: 424, ), ], - mobile_banner: [], - tv_banner: [], has_shorts: true, has_live: true, visitor_data: None, 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 cbf872c..53e191e 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 @@ -5,7 +5,9 @@ expression: map_res.c Channel( id: "UC2DjFE7Xf11URZqWBigcVOQ", name: "EEVblog", + handle: None, subscriber_count: Some(880000), + video_count: None, avatar: [ Thumbnail( url: "https://yt3.ggpht.com/ytc/AMLnZu9eKk4Nd16fX4Rn1TF1G7ReluwOl6M5558FTYAM=s48-c-k-c0x00ffffff-no-rj", @@ -55,7 +57,6 @@ Channel( "dumpster diving", "debunking", ], - vanity_url: Some("https://www.youtube.com/c/EevblogDave"), banner: [ Thumbnail( url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1060-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", @@ -88,60 +89,6 @@ Channel( height: 424, ), ], - mobile_banner: [ - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w320-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 320, - height: 88, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w640-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 640, - height: 175, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w960-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 960, - height: 263, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1280-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 1280, - height: 351, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1440-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 1440, - height: 395, - ), - ], - tv_banner: [ - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w320-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 320, - height: 180, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w854-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 854, - height: 480, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1280-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 1280, - height: 720, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w1920-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 1920, - height: 1080, - ), - Thumbnail( - url: "https://yt3.ggpht.com/yIJ9ad80n49rK-YUcZLe_8bLmR-aGyg5ybDH_XKIc0GDWrC6s1Wzz8lxnq3_hux_5b6NHPZ9=w2120-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 2120, - height: 1192, - ), - ], has_shorts: false, has_live: false, visitor_data: Some("CgszNU5rbDVZS2hMcyim4K2ZBg%3D%3D"), 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 780e6a6..8a490a0 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 @@ -5,7 +5,9 @@ expression: map_res.c Channel( id: "UCxBa895m48H5idw5li7h-0g", name: "Sebastian Figurroa", + handle: None, subscriber_count: None, + video_count: None, avatar: [ Thumbnail( url: "https://yt3.ggpht.com/ytc/AMLnZu_hsZ1XlUXHzXsGNHJw0np79WhWZcC4j8eFdy-tiUCDBKAjJyJOzE5kXFRiqL2S=s48-c-k-c0x00ffffff-no-rj", @@ -26,10 +28,7 @@ Channel( verification: None, description: "", tags: [], - vanity_url: None, banner: [], - mobile_banner: [], - tv_banner: [], has_shorts: false, has_live: false, visitor_data: Some("Cgtvc2s4UllvTGl6byigxseZBg%3D%3D"), 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 4fa906c..fdafcc3 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 @@ -5,7 +5,9 @@ expression: map_res.c Channel( id: "UChs0pSaEoNLV4mevBFGaoKA", name: "The Good Life Radio x Sensual Musique", + handle: None, subscriber_count: Some(760000), + video_count: None, avatar: [ Thumbnail( url: "https://yt3.ggpht.com/ytc/AMLnZu_V9mOdHaorjNFqGXCecFeOBZhDWB8tVYG_I8gJwA=s48-c-k-c0x00ffffff-no-rj", @@ -39,7 +41,6 @@ Channel( "tropical house", "house music", ], - vanity_url: Some("https://www.youtube.com/c/TheGoodLiferadio"), banner: [ Thumbnail( url: "https://yt3.ggpht.com/fL4x31Q80O_BvnhVIMI9YlV3apsiFvBENwGiSA-Hw9An6djAGw92RSOFax6z2r_rJNbRWPMA=w1060-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", @@ -72,60 +73,6 @@ Channel( height: 424, ), ], - mobile_banner: [ - Thumbnail( - url: "https://yt3.ggpht.com/fL4x31Q80O_BvnhVIMI9YlV3apsiFvBENwGiSA-Hw9An6djAGw92RSOFax6z2r_rJNbRWPMA=w320-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 320, - height: 88, - ), - Thumbnail( - url: "https://yt3.ggpht.com/fL4x31Q80O_BvnhVIMI9YlV3apsiFvBENwGiSA-Hw9An6djAGw92RSOFax6z2r_rJNbRWPMA=w640-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 640, - height: 175, - ), - Thumbnail( - url: "https://yt3.ggpht.com/fL4x31Q80O_BvnhVIMI9YlV3apsiFvBENwGiSA-Hw9An6djAGw92RSOFax6z2r_rJNbRWPMA=w960-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 960, - height: 263, - ), - Thumbnail( - url: "https://yt3.ggpht.com/fL4x31Q80O_BvnhVIMI9YlV3apsiFvBENwGiSA-Hw9An6djAGw92RSOFax6z2r_rJNbRWPMA=w1280-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 1280, - height: 351, - ), - Thumbnail( - url: "https://yt3.ggpht.com/fL4x31Q80O_BvnhVIMI9YlV3apsiFvBENwGiSA-Hw9An6djAGw92RSOFax6z2r_rJNbRWPMA=w1440-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 1440, - height: 395, - ), - ], - tv_banner: [ - Thumbnail( - url: "https://yt3.ggpht.com/fL4x31Q80O_BvnhVIMI9YlV3apsiFvBENwGiSA-Hw9An6djAGw92RSOFax6z2r_rJNbRWPMA=w320-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 320, - height: 180, - ), - Thumbnail( - url: "https://yt3.ggpht.com/fL4x31Q80O_BvnhVIMI9YlV3apsiFvBENwGiSA-Hw9An6djAGw92RSOFax6z2r_rJNbRWPMA=w854-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 854, - height: 480, - ), - Thumbnail( - url: "https://yt3.ggpht.com/fL4x31Q80O_BvnhVIMI9YlV3apsiFvBENwGiSA-Hw9An6djAGw92RSOFax6z2r_rJNbRWPMA=w1280-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 1280, - height: 720, - ), - Thumbnail( - url: "https://yt3.ggpht.com/fL4x31Q80O_BvnhVIMI9YlV3apsiFvBENwGiSA-Hw9An6djAGw92RSOFax6z2r_rJNbRWPMA=w1920-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 1920, - height: 1080, - ), - Thumbnail( - url: "https://yt3.ggpht.com/fL4x31Q80O_BvnhVIMI9YlV3apsiFvBENwGiSA-Hw9An6djAGw92RSOFax6z2r_rJNbRWPMA=w2120-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 2120, - height: 1192, - ), - ], has_shorts: false, has_live: false, visitor_data: Some("CgtkYXJITElwYmd4OCj85a2ZBg%3D%3D"), 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 4d7ed05..0d4a4d1 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 @@ -5,7 +5,9 @@ expression: map_res.c Channel( id: "UC_vmjW5e1xEHhYjY2a0kK1A", name: "Oonagh - Topic", + handle: None, subscriber_count: None, + video_count: None, avatar: [ Thumbnail( url: "https://yt3.ggpht.com/pqKv4iqSjmMKPxsMCeyklTbpROSyInGNR4XvD1DqKD0AlROlsHzvoAlTvtMTO1g1x2WxaQ2Enxw=s48-c-k-c0x00ffffff-no-rj", @@ -26,7 +28,6 @@ Channel( verification: None, description: "", tags: [], - vanity_url: None, banner: [ Thumbnail( url: "https://yt3.ggpht.com/EDatBjgcL94-qSfQa5Twr8l88hYcAXQJksDrwARWbotrWzJhG03gRyZLKV1mk1a1tMI_LSg4qg=w1060-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", @@ -59,60 +60,6 @@ Channel( height: 424, ), ], - mobile_banner: [ - Thumbnail( - url: "https://yt3.ggpht.com/EDatBjgcL94-qSfQa5Twr8l88hYcAXQJksDrwARWbotrWzJhG03gRyZLKV1mk1a1tMI_LSg4qg=w320-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 320, - height: 88, - ), - Thumbnail( - url: "https://yt3.ggpht.com/EDatBjgcL94-qSfQa5Twr8l88hYcAXQJksDrwARWbotrWzJhG03gRyZLKV1mk1a1tMI_LSg4qg=w640-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 640, - height: 175, - ), - Thumbnail( - url: "https://yt3.ggpht.com/EDatBjgcL94-qSfQa5Twr8l88hYcAXQJksDrwARWbotrWzJhG03gRyZLKV1mk1a1tMI_LSg4qg=w960-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 960, - height: 263, - ), - Thumbnail( - url: "https://yt3.ggpht.com/EDatBjgcL94-qSfQa5Twr8l88hYcAXQJksDrwARWbotrWzJhG03gRyZLKV1mk1a1tMI_LSg4qg=w1280-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 1280, - height: 351, - ), - Thumbnail( - url: "https://yt3.ggpht.com/EDatBjgcL94-qSfQa5Twr8l88hYcAXQJksDrwARWbotrWzJhG03gRyZLKV1mk1a1tMI_LSg4qg=w1440-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 1440, - height: 395, - ), - ], - tv_banner: [ - Thumbnail( - url: "https://yt3.ggpht.com/EDatBjgcL94-qSfQa5Twr8l88hYcAXQJksDrwARWbotrWzJhG03gRyZLKV1mk1a1tMI_LSg4qg=w320-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 320, - height: 180, - ), - Thumbnail( - url: "https://yt3.ggpht.com/EDatBjgcL94-qSfQa5Twr8l88hYcAXQJksDrwARWbotrWzJhG03gRyZLKV1mk1a1tMI_LSg4qg=w854-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 854, - height: 480, - ), - Thumbnail( - url: "https://yt3.ggpht.com/EDatBjgcL94-qSfQa5Twr8l88hYcAXQJksDrwARWbotrWzJhG03gRyZLKV1mk1a1tMI_LSg4qg=w1280-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 1280, - height: 720, - ), - Thumbnail( - url: "https://yt3.ggpht.com/EDatBjgcL94-qSfQa5Twr8l88hYcAXQJksDrwARWbotrWzJhG03gRyZLKV1mk1a1tMI_LSg4qg=w1920-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 1920, - height: 1080, - ), - Thumbnail( - url: "https://yt3.ggpht.com/EDatBjgcL94-qSfQa5Twr8l88hYcAXQJksDrwARWbotrWzJhG03gRyZLKV1mk1a1tMI_LSg4qg=w2120-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 2120, - height: 1192, - ), - ], has_shorts: false, has_live: false, visitor_data: Some("CgtCV1l2R2Rzb2ZSZyiu4a2ZBg%3D%3D"), 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 46369d0..c655530 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 @@ -5,7 +5,9 @@ expression: map_res.c Channel( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", + handle: None, subscriber_count: Some(2840000), + video_count: None, avatar: [ Thumbnail( url: "https://yt3.ggpht.com/dm5Aq93xvVJz0NoVO88ieBkDXmuShCujGPlZ7qETMEPTrXvPUCFI3-BB6Xs_P-r6Uk3mnBy9zA=s48-c-k-c0x00ffffff-no-rj", @@ -26,7 +28,6 @@ Channel( verification: Verified, description: "Hi, I’m Tina, aka Doobydobap!\n\nFood is the medium I use to tell stories and connect with people who share the same passion as I do. Whether it’s because you’re hungry at midnight or trying to learn how to cook, I hope you enjoy watching my content and recipes. Don\'t yuck my yum!\n\nwww.doobydobap.com\n", tags: [], - vanity_url: Some("https://www.youtube.com/c/Doobydobap"), banner: [ Thumbnail( url: "https://yt3.ggpht.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w1060-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", @@ -59,60 +60,6 @@ Channel( height: 424, ), ], - mobile_banner: [ - Thumbnail( - url: "https://yt3.ggpht.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w320-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 320, - height: 88, - ), - Thumbnail( - url: "https://yt3.ggpht.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w640-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 640, - height: 175, - ), - Thumbnail( - url: "https://yt3.ggpht.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w960-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 960, - height: 263, - ), - Thumbnail( - url: "https://yt3.ggpht.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w1280-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 1280, - height: 351, - ), - Thumbnail( - url: "https://yt3.ggpht.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w1440-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 1440, - height: 395, - ), - ], - tv_banner: [ - Thumbnail( - url: "https://yt3.ggpht.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w320-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 320, - height: 180, - ), - Thumbnail( - url: "https://yt3.ggpht.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w854-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 854, - height: 480, - ), - Thumbnail( - url: "https://yt3.ggpht.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w1280-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 1280, - height: 720, - ), - Thumbnail( - url: "https://yt3.ggpht.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w1920-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 1920, - height: 1080, - ), - Thumbnail( - url: "https://yt3.ggpht.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w2120-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 2120, - height: 1192, - ), - ], has_shorts: false, has_live: false, visitor_data: Some("CgtneXVRbGtSMWtlYyj75a2ZBg%3D%3D"), 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 97348c9..2b5a675 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 @@ -5,7 +5,9 @@ expression: map_res.c Channel( id: "UCcvfHa-GHSOHFAjU0-Ie57A", name: "Adam Something", + handle: None, subscriber_count: Some(947000), + video_count: None, avatar: [ Thumbnail( url: "https://yt3.ggpht.com/FzV47fzr2nc8_KOeUO2FSIH-daaxCZaPDGqrgC1_Qp0_zEn0DnKmi7PiMwcssTG4IEDL1XfdTIk=s48-c-k-c0x00ffffff-no-rj", @@ -43,7 +45,6 @@ Channel( "budapest", "eu", ], - vanity_url: Some("https://www.youtube.com/c/AdamSomething"), banner: [ Thumbnail( url: "https://yt3.ggpht.com/Bk54VHh5FsxlwAAEltJp6rgx3VzBgxbi8naNngh5C4zQni1ijUhgTmVmDrE_I9M95SxtXTnd=w1060-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", @@ -76,60 +77,6 @@ Channel( height: 424, ), ], - mobile_banner: [ - Thumbnail( - url: "https://yt3.ggpht.com/Bk54VHh5FsxlwAAEltJp6rgx3VzBgxbi8naNngh5C4zQni1ijUhgTmVmDrE_I9M95SxtXTnd=w320-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 320, - height: 88, - ), - Thumbnail( - url: "https://yt3.ggpht.com/Bk54VHh5FsxlwAAEltJp6rgx3VzBgxbi8naNngh5C4zQni1ijUhgTmVmDrE_I9M95SxtXTnd=w640-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 640, - height: 175, - ), - Thumbnail( - url: "https://yt3.ggpht.com/Bk54VHh5FsxlwAAEltJp6rgx3VzBgxbi8naNngh5C4zQni1ijUhgTmVmDrE_I9M95SxtXTnd=w960-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 960, - height: 263, - ), - Thumbnail( - url: "https://yt3.ggpht.com/Bk54VHh5FsxlwAAEltJp6rgx3VzBgxbi8naNngh5C4zQni1ijUhgTmVmDrE_I9M95SxtXTnd=w1280-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 1280, - height: 351, - ), - Thumbnail( - url: "https://yt3.ggpht.com/Bk54VHh5FsxlwAAEltJp6rgx3VzBgxbi8naNngh5C4zQni1ijUhgTmVmDrE_I9M95SxtXTnd=w1440-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", - width: 1440, - height: 395, - ), - ], - tv_banner: [ - Thumbnail( - url: "https://yt3.ggpht.com/Bk54VHh5FsxlwAAEltJp6rgx3VzBgxbi8naNngh5C4zQni1ijUhgTmVmDrE_I9M95SxtXTnd=w320-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 320, - height: 180, - ), - Thumbnail( - url: "https://yt3.ggpht.com/Bk54VHh5FsxlwAAEltJp6rgx3VzBgxbi8naNngh5C4zQni1ijUhgTmVmDrE_I9M95SxtXTnd=w854-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 854, - height: 480, - ), - Thumbnail( - url: "https://yt3.ggpht.com/Bk54VHh5FsxlwAAEltJp6rgx3VzBgxbi8naNngh5C4zQni1ijUhgTmVmDrE_I9M95SxtXTnd=w1280-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 1280, - height: 720, - ), - Thumbnail( - url: "https://yt3.ggpht.com/Bk54VHh5FsxlwAAEltJp6rgx3VzBgxbi8naNngh5C4zQni1ijUhgTmVmDrE_I9M95SxtXTnd=w1920-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 1920, - height: 1080, - ), - Thumbnail( - url: "https://yt3.ggpht.com/Bk54VHh5FsxlwAAEltJp6rgx3VzBgxbi8naNngh5C4zQni1ijUhgTmVmDrE_I9M95SxtXTnd=w2120-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", - width: 2120, - height: 1192, - ), - ], has_shorts: false, has_live: false, visitor_data: Some("Cgs4Ri1tLW1KNWozNCjGk8yZBg%3D%3D"), diff --git a/src/model/mod.rs b/src/model/mod.rs index 6ec4d2f..24d9b11 100644 --- a/src/model/mod.rs +++ b/src/model/mod.rs @@ -700,11 +700,15 @@ pub struct Channel { pub id: String, /// Channel name pub name: String, + /// YouTube channel handle (e.g. `@EEVblog`) + pub handle: Option, /// Channel subscriber count /// /// [`None`] if the subscriber count was hidden by the owner /// or could not be parsed. pub subscriber_count: Option, + /// Number of videos + pub video_count: Option, /// Channel avatar / profile picture pub avatar: Vec, /// Channel verification mark @@ -713,15 +717,8 @@ pub struct Channel { pub description: String, /// List of words to describe the topic of the channel pub tags: Vec, - /// Custom URL set by the channel owner - /// (e.g. ) - pub vanity_url: Option, /// Banner image shown above the channel pub banner: Vec, - /// Banner image shown above the channel (small format for mobile) - pub mobile_banner: Vec, - /// Banner image shown above the channel (16:9 fullscreen format for TV) - pub tv_banner: Vec, /// Does the channel have a *Shorts* tab? pub has_shorts: bool, /// Does the channel have a *Live* tab? diff --git a/src/util/mod.rs b/src/util/mod.rs index 013ccdd..121c1b0 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -32,9 +32,10 @@ pub static PLAYLIST_ID_REGEX: Lazy = Lazy::new(|| Regex::new(r"^(?:PL|RD|OLAK|UU)[A-Za-z0-9_-]{5,50}$").unwrap()); pub static ALBUM_ID_REGEX: Lazy = Lazy::new(|| Regex::new(r"^MPREb_[A-Za-z0-9_-]{11}$").unwrap()); -pub static VANITY_PATH_REGEX: Lazy = Lazy::new(|| { - Regex::new(r"^/?(?:(?:c/|user/)?[A-z0-9]{1,100})|(?:@[A-z0-9-_.]{1,100})$").unwrap() -}); +pub static VANITY_PATH_REGEX: Lazy = + Lazy::new(|| Regex::new(r"^/?(?:(?:c/|user/)?[A-z0-9]{1,100})|(?:@[\w\-\.·]{1,30})$").unwrap()); +pub static CHANNEL_HANDLE_REGEX: Lazy = + Lazy::new(|| Regex::new(r#"^@[\w\-\.·]{1,30}$"#).unwrap()); /// Separator string for YouTube Music subtitles pub const DOT_SEPARATOR: &str = " • "; diff --git a/src/validate.rs b/src/validate.rs index ccaa58a..7c43a61 100644 --- a/src/validate.rs +++ b/src/validate.rs @@ -11,7 +11,10 @@ //! - The validation functions of this module are meant vor validating specific data (video IDs, //! channel IDs, playlist IDs) and return [`true`] if the given input is valid -use crate::{error::Error, util}; +use crate::{ + error::Error, + util::{self, CHANNEL_HANDLE_REGEX}, +}; use once_cell::sync::Lazy; use regex::Regex; @@ -202,6 +205,32 @@ pub fn track_lyrics_id>(lyrics_id: S) -> Result<(), Error> { ) } +/// Validate the given channel handle +/// +/// YouTube channel handles can be up to 30 characters long and start with an `@`. +/// Allowed characters are letters and numbers (Unicode), underscores (`_`), hyphens (`-`), +/// full stops (`.`) and middle dots (`· U+00B7`) +/// +/// There are more fine-grained rules for specific scripts. Verifying these is not implemented. +/// +/// Reference: +/// +/// ``` +/// # use rustypipe::validate; +/// assert!(validate::channel_handle("@EEVBlog").is_ok()); +/// assert!(validate::channel_handle("@Āll·._-").is_ok()); +/// assert!(validate::channel_handle("@한국").is_ok()); +/// +/// assert!(validate::channel_handle("noat").is_err()); +/// assert!(validate::channel_handle("@no space").is_err()); +/// ``` +pub fn channel_handle>(channel_handle: S) -> Result<(), Error> { + check( + CHANNEL_HANDLE_REGEX.is_match(channel_handle.as_ref()), + "invalid channel handle", + ) +} + fn check(res: bool, msg: &'static str) -> Result<(), Error> { if res { Ok(()) diff --git a/tests/youtube.rs b/tests/youtube.rs index b6a0577..ca5f079 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -885,16 +885,13 @@ async fn channel_shorts(rp: RustyPipe) { // dbg!(&channel); assert_eq!(channel.id, "UCh8gHdtzO2tXd593_bjErWg"); assert_eq!(channel.name, "Doobydobap"); + assert_eq!(channel.handle.as_deref(), Some("@Doobydobap")); assert_gteo(channel.subscriber_count, 2_800_000, "subscribers"); assert!(!channel.avatar.is_empty(), "got no thumbnails"); assert_eq!(channel.verification, Verification::Verified); assert!(channel .description .contains("Hi, I\u{2019}m Tina, aka Doobydobap")); - assert_eq!( - channel.vanity_url.as_deref(), - Some("https://www.youtube.com/@Doobydobap") - ); assert!(!channel.banner.is_empty(), "got no banners"); assert!( @@ -994,15 +991,12 @@ async fn channel_search(rp: RustyPipe) { fn assert_channel_eevblog(channel: &Channel) { assert_eq!(channel.id, "UC2DjFE7Xf11URZqWBigcVOQ"); assert_eq!(channel.name, "EEVblog"); + assert_eq!(channel.handle.as_deref(), Some("@EEVblog")); assert_gteo(channel.subscriber_count, 880_000, "subscribers"); assert!(!channel.avatar.is_empty(), "got no thumbnails"); assert_eq!(channel.verification, Verification::Verified); assert_eq!(channel.description, "NO SCRIPT, NO FEAR, ALL OPINION\nAn off-the-cuff Video Blog about Electronics Engineering, for engineers, hobbyists, enthusiasts, hackers and Makers\nHosted by Dave Jones from Sydney Australia\n\nDONATIONS:\nBitcoin: 3KqyH1U3qrMPnkLufM2oHDU7YB4zVZeFyZ\nEthereum: 0x99ccc4d2654ba40744a1f678d9868ecb15e91206\nPayPal: david@alternatezone.com\n\nPatreon: https://www.patreon.com/eevblog\n\nEEVblog2: http://www.youtube.com/EEVblog2\nEEVdiscover: https://www.youtube.com/channel/UCkGvUEt8iQLmq3aJIMjT2qQ\n\nEMAIL:\nAdvertising/Commercial: eevblog+business@gmail.com\nFan mail: eevblog+fan@gmail.com\nHate Mail: eevblog+hate@gmail.com\n\nI DON'T DO PAID VIDEO SPONSORSHIPS, DON'T ASK!\n\nPLEASE:\nDo NOT ask for personal advice on something, post it in the EEVblog forum.\nI read ALL email, but please don't be offended if I don't have time to reply, I get a LOT of email.\n\nMailbag\nPO Box 7949\nBaulkham Hills NSW 2153\nAUSTRALIA"); assert!(!channel.tags.is_empty(), "got no tags"); - assert_eq!( - channel.vanity_url.as_deref(), - Some("https://www.youtube.com/@EEVblog") - ); assert!(!channel.banner.is_empty(), "got no banners"); } From 1cffb27cc0b64929f9627f5839df2d73b81988a4 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 17 Aug 2024 02:59:56 +0200 Subject: [PATCH 124/347] feat!: add handle to ChannelItem, remove video_count --- codegen/src/abtest.rs | 2 +- src/client/response/video_item.rs | 10 ++--- ...p_search_20221121_AB3_channel_handles.snap | 40 +++++++++---------- ...nt__search__tests__map_search_default.snap | 2 +- src/model/mod.rs | 4 +- 5 files changed, 28 insertions(+), 30 deletions(-) diff --git a/codegen/src/abtest.rs b/codegen/src/abtest.rs index be14c79..201563a 100644 --- a/codegen/src/abtest.rs +++ b/codegen/src/abtest.rs @@ -179,7 +179,7 @@ pub async fn channel_handles_in_search_results(rp: &RustyPipeQuery) -> Result channel .subscriber_count - .map(|sc| sc > 100 && channel.video_count.is_none()) + .map(|sc| sc > 100 && channel.handle.is_some()) .unwrap_or_default(), _ => false, })) diff --git a/src/client/response/video_item.rs b/src/client/response/video_item.rs index 3d7a116..9b9a97a 100644 --- a/src/client/response/video_item.rs +++ b/src/client/response/video_item.rs @@ -610,28 +610,26 @@ impl YouTubeListMapper { fn map_channel(&mut self, channel: ChannelRenderer) -> ChannelItem { // channel handle instead of subscriber count (A/B test 3) - let (sc_txt, vc_text) = if channel + let (handle, sc_txt) = if channel .subscriber_count_text .as_ref() .map(|txt| txt.starts_with('@')) .unwrap_or_default() { - (channel.video_count_text, None) - } else { (channel.subscriber_count_text, channel.video_count_text) + } else { + (None, channel.subscriber_count_text) }; ChannelItem { id: channel.channel_id, name: channel.title, + handle, avatar: channel.thumbnail.into(), verification: channel.owner_badges.into(), subscriber_count: sc_txt.and_then(|txt| { util::parse_large_numstr_or_warn(&txt, self.lang, &mut self.warnings) }), - video_count: vc_text.and_then(|txt| { - util::parse_large_numstr_or_warn(&txt, self.lang, &mut self.warnings) - }), short_description: channel.description_snippet, } } 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 361af9c..ec1fe51 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 @@ -9,6 +9,7 @@ SearchResult( Channel(ChannelItem( id: "UCMwePVHRpDdfeUcwtDZu2Dw", name: "Monstafluff Music", + handle: Some("@MonstafluffMusic"), avatar: [ Thumbnail( url: "//yt3.ggpht.com/ytc/AMLnZu9YhTzdAoL6P4PYq51PCF076ITDrgLitxSDPqv6sw=s88-c-k-c0x00ffffff-no-rj-mo", @@ -23,12 +24,12 @@ SearchResult( ], verification: Verified, subscriber_count: Some(582000), - video_count: None, short_description: "Music Submissions: https://monstafluff.edmdistrict.com/", )), Channel(ChannelItem( id: "UCLxAS02eWvfZK4icRNzWD_g", name: "Music Travel Love", + handle: Some("@MusicTravelLove"), avatar: [ Thumbnail( url: "https://yt3.ggpht.com/ytc/AMLnZu9njNDLU_VtFjfGUaTArBp4AJFhJIxb_CxP7knf3A=s88-c-k-c0x00ffffff-no-rj-mo", @@ -43,12 +44,12 @@ SearchResult( ], verification: Artist, subscriber_count: Some(4030000), - video_count: None, short_description: "Welcome to the official Music Travel Love YouTube channel! We travel the world making music, friends, videos and memories!", )), Channel(ChannelItem( id: "UCxKxjNPyL9UO5LRWHzp5JxA", name: "Black&White Music", + handle: Some("@blackwhitemusic5836"), avatar: [ Thumbnail( url: "//yt3.ggpht.com/FDjW2-Cb6tFbtNv02D1UX4XtvP7P3eEWB93hGimeP4pb2TadVhAgxSVMZLZDp5NiBWGLT5eprA=s88-c-k-c0x00ffffff-no-rj-mo", @@ -63,12 +64,12 @@ SearchResult( ], verification: Verified, subscriber_count: Some(167000), - video_count: None, 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}...", )), Channel(ChannelItem( id: "UCGIygiYkKxn7g7fFNFdXskg", name: "HAEVN MUSIC", + handle: Some("@HAEVNMUSIC"), avatar: [ Thumbnail( url: "//yt3.ggpht.com/EYlGIfqhvwtfkCyi5vpqfY_kDHr6L3OeCmkudNiAyhvz6UCnTZQOQaM-8PelFDGofdIqeF7Mb4E=s88-c-k-c0x00ffffff-no-rj-mo", @@ -83,12 +84,12 @@ SearchResult( ], verification: Artist, subscriber_count: Some(411000), - video_count: None, short_description: "The official YouTube channel of HAEVN Music. Receiving a piano from his grandfather had a great impact on Jorrit\'s life.", )), Channel(ChannelItem( id: "UClvNJkDHdc1gvFGN_Fr_qPw", name: "Artemis Music", + handle: Some("@artemismusic1000"), avatar: [ Thumbnail( url: "//yt3.ggpht.com/rGXIwYAhI49rKBQmw_pKFMv9yEt4euHnmXOE0OOCD6ApdQXGnuPmEv7TK7cDjrjt0rUXYHuw=s88-c-k-c0x00ffffff-no-rj-mo", @@ -103,12 +104,12 @@ SearchResult( ], verification: None, subscriber_count: Some(31200), - video_count: None, short_description: "Hello and welcome to \"Artemis Music\"! Music can play an effective role in helping us lead a better and more productive life.", )), Channel(ChannelItem( id: "UC5r3j8tQsB3MYZiwQFGKrdA", name: "Disco Music", + handle: Some("@discomusic9273"), avatar: [ Thumbnail( url: "//yt3.ggpht.com/5nqhAdf26KoSKbfUB8kvhJo6rpMQw3XS345h8ZNmeXScqlB1KjJAM0T371r3QcS1mA1LZg9B1Po=s88-c-k-c0x00ffffff-no-rj-mo", @@ -123,12 +124,12 @@ SearchResult( ], verification: Verified, subscriber_count: Some(372000), - video_count: None, short_description: "Music is the only language in which you cannot say a mean or sarcastic thing. Have fun listening to music.", )), Channel(ChannelItem( id: "UCNZYpcqym8gHcNg2GWcC6nQ", name: "S!X - Music", + handle: Some("@s1x-music"), avatar: [ Thumbnail( url: "//yt3.googleusercontent.com/ytc/AMLnZu_1NOzbZUJWZjtmD4NTsb9BR-TNIAzNoajv0TisvQ=s88-c-k-c0x00ffffff-no-rj-mo", @@ -143,12 +144,12 @@ SearchResult( ], verification: Verified, subscriber_count: Some(178000), - video_count: None, short_description: "S!X - Music is an independent Hip-Hop label. Soundcloud : https://soundcloud.com/s1xmusic Facebook\u{a0}...", )), Channel(ChannelItem( id: "UCoEryX-WO7IHBGqTAC5r9Zw", name: "Shake Music", + handle: Some("@ShakeMusic"), avatar: [ Thumbnail( url: "//yt3.googleusercontent.com/ytc/AMLnZu9fMXUALsloNUJ_wLpqCS0ovprvc5W-XwfrpmWqIw=s88-c-k-c0x00ffffff-no-rj-mo", @@ -163,12 +164,12 @@ SearchResult( ], verification: Verified, subscriber_count: Some(1040000), - video_count: None, 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}...", )), Channel(ChannelItem( id: "UCTJ9Qg-1vBu2pP_YrWUfGnQ", name: "Miracle Music", + handle: Some("@miraclemusic2328"), avatar: [ Thumbnail( url: "//yt3.ggpht.com/3RMarDSmUSIexCXWCpMUkqV64uiHDXTidBLwsObHstx5-AbB8h_n8Zy1W9JymURd7ivzlDEGFw=s88-c-k-c0x00ffffff-no-rj-mo", @@ -183,12 +184,12 @@ SearchResult( ], verification: Verified, subscriber_count: Some(822000), - video_count: None, short_description: "Welcome to Miracle Music! On this channel you will find a wide variety of different Deep House, Tropical House, Chill Out, EDM,.", )), Channel(ChannelItem( id: "UCp6_KuNhT0kcFk-jXw9Tivg", name: "Magic Music", + handle: Some("@MagicMusicGroup"), avatar: [ Thumbnail( url: "//yt3.googleusercontent.com/ytc/AMLnZu-fgSc_lceD4fRL_y0b3MKd2k54DF-laDAR3Avbuw=s88-c-k-c0x00ffffff-no-rj-mo", @@ -203,12 +204,12 @@ SearchResult( ], verification: Verified, subscriber_count: Some(4620000), - video_count: None, short_description: "", )), Channel(ChannelItem( id: "UCe55Gy-hFDvLZp8C8BZhBnw", name: "Nightblue Music", + handle: Some("@NightblueMusic"), avatar: [ Thumbnail( url: "//yt3.googleusercontent.com/ytc/AMLnZu-29SYt5qpqMP9Xi2A98mqL8ymI5Lg7Vzx-qpY09w=s88-c-k-c0x00ffffff-no-rj-mo", @@ -223,12 +224,12 @@ SearchResult( ], verification: Verified, subscriber_count: Some(1050000), - video_count: None, short_description: "BRINGING YOU ONLY THE BEST EDM - TRAP Submit your own track for promotion here:\u{a0}...", )), Channel(ChannelItem( id: "UC2fVSthyWxWSjsiEAHPzriQ", name: "Mr_MoMo Music", + handle: Some("@MrMoMoMusic"), avatar: [ Thumbnail( url: "//yt3.ggpht.com/7YG4jSrhx_Mfi2TsV0rJFlFARaR8kl7ilcIyzs6gSeNjwn-J88DvDWD8PSNd5o03qJRzpvhs=s88-c-k-c0x00ffffff-no-rj-mo", @@ -243,12 +244,12 @@ SearchResult( ], verification: Verified, subscriber_count: Some(709000), - video_count: None, 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}...", )), Channel(ChannelItem( id: "UCN31w7dRjjz8CeP0GfSIo8A", name: "Danit Music Official", + handle: Some("@danitmusicofficial5734"), avatar: [ Thumbnail( url: "//yt3.ggpht.com/ytc/AMLnZu9rUKtDsY-aSoE5WEwAQxvQTXiuAPYMBoJQ2mYTUA=s88-c-k-c0x00ffffff-no-rj-mo", @@ -263,12 +264,12 @@ SearchResult( ], verification: None, subscriber_count: Some(54400), - video_count: None, short_description: "", )), Channel(ChannelItem( id: "UCpEHWiTMk1eEBAdzBnAb3rA", name: "Energy Transformation Relaxing Music ", + handle: Some("@energytransformationrelaxi5596"), avatar: [ Thumbnail( url: "//yt3.ggpht.com/RR7upyAvT7N0_qlZWfLlDSRPhLufX4W4X6-qahWvuvDCLn2cWCs0yh_HXB2iwGbk_MTwSqwWEQ=s88-c-k-c0x00ffffff-no-rj-mo", @@ -283,12 +284,12 @@ SearchResult( ], verification: None, subscriber_count: Some(3590), - video_count: None, short_description: "Welcome to our Energy Transformation Relaxing Music . This chakra music channel will focus on developing the best chakra\u{a0}...", )), Channel(ChannelItem( id: "UCqswUMaC5yWUrkQszr8fuBA", name: "Nonstop Music", + handle: Some("@nonstopmusic9993"), avatar: [ Thumbnail( url: "//yt3.googleusercontent.com/ytc/AMLnZu9vLN62RxNbnpa20r5XreWRlVjHXbHf7BMcvSBxoQ=s88-c-k-c0x00ffffff-no-rj-mo", @@ -303,12 +304,12 @@ SearchResult( ], verification: Verified, subscriber_count: Some(416000), - video_count: None, short_description: "Nonstop Music - Home of 1h videos of your favourite songs and mixes. Nonstop Genres: Pop • Chillout • Tropical House • Deep\u{a0}...", )), Channel(ChannelItem( id: "UChO8h2G8UjOVc081rgYU8XQ", name: "Vibe Music", + handle: Some("@vibemusic."), avatar: [ Thumbnail( url: "//yt3.googleusercontent.com/ytc/AMLnZu9Br5pt87kuDLRFbh1MqMXeFlCLbUrwFlDIzU4s=s88-c-k-c0x00ffffff-no-rj-mo", @@ -323,12 +324,12 @@ SearchResult( ], verification: Verified, subscriber_count: Some(3000000), - video_count: None, 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}...", )), Channel(ChannelItem( id: "UClV8b2EhIhIASKw-etzegyw", name: "Suits Music", + handle: Some("@SuitsMusic"), avatar: [ Thumbnail( url: "//yt3.googleusercontent.com/ytc/AMLnZu9Aj5RtZZMdK_B_YD-8rOfi9c5ddFw5t1s4GYEeOQ=s88-c-k-c0x00ffffff-no-rj-mo", @@ -343,12 +344,12 @@ SearchResult( ], verification: None, subscriber_count: Some(120000), - video_count: None, short_description: "", )), Channel(ChannelItem( id: "UCI2hwz3r5phXpOtViIA5inA", name: "Rock Music Collection", + handle: Some("@rockmusiccollection4332"), avatar: [ Thumbnail( url: "//yt3.ggpht.com/kB4gWvROUIWFuJN8xwIqmPl1QV2_gXMat6COAJjXZT07E3xomc4b2JwGtDg05t1MmhgqImSifhc=s88-c-k-c0x00ffffff-no-rj-mo", @@ -363,12 +364,12 @@ SearchResult( ], verification: None, subscriber_count: Some(81700), - video_count: None, short_description: "", )), Channel(ChannelItem( id: "UC9w8My3S7h-bQZ-4R-0ZPsw", name: "Helios Music", + handle: Some("@heliosmusic55"), avatar: [ Thumbnail( url: "//yt3.ggpht.com/bi08T8zuYI1PlbM8M5fyZzjVvNJRJFFcQoonRQvS30opJ-OqGIq5OPrZ19qga29PIAit7OO3=s88-c-k-c0x00ffffff-no-rj-mo", @@ -383,12 +384,12 @@ SearchResult( ], verification: None, subscriber_count: Some(53000), - video_count: None, short_description: "Welcome to my channel - Helios Music. I created this channel to help people have the most relaxing, refreshing and comfortable\u{a0}...", )), Channel(ChannelItem( id: "UC_ODKC5gTs2LvdHXDRdDm0w", name: "Music On", + handle: Some("@MilanPavlovic91"), avatar: [ Thumbnail( url: "//yt3.googleusercontent.com/ytc/AMLnZu8lUOYw4RdRwQf2Kz8RCExSmuWC78oetXF7VL67SA=s88-c-k-c0x00ffffff-no-rj-mo", @@ -403,7 +404,6 @@ SearchResult( ], verification: None, subscriber_count: Some(129000), - video_count: None, 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 e0ac9fd..3198cc7 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 @@ -9,6 +9,7 @@ SearchResult( Channel(ChannelItem( id: "UCh8gHdtzO2tXd593_bjErWg", name: "Doobydobap", + handle: None, avatar: [ Thumbnail( url: "//yt3.ggpht.com/dm5Aq93xvVJz0NoVO88ieBkDXmuShCujGPlZ7qETMEPTrXvPUCFI3-BB6Xs_P-r6Uk3mnBy9zA=s88-c-k-c0x00ffffff-no-rj-mo", @@ -23,7 +24,6 @@ SearchResult( ], verification: Verified, subscriber_count: Some(2920000), - video_count: Some(219), short_description: "Hi, I\'m Tina, aka Doobydobap! Food is the medium I use to tell stories and connect with people who share the same passion as I\u{a0}...", )), Video(VideoItem( diff --git a/src/model/mod.rs b/src/model/mod.rs index 24d9b11..7adaeac 100644 --- a/src/model/mod.rs +++ b/src/model/mod.rs @@ -870,6 +870,8 @@ pub struct ChannelItem { pub id: String, /// Channel name pub name: String, + /// YouTube channel handle (e.g. `@EEVblog`) + pub handle: Option, /// Channel avatar/profile picture pub avatar: Vec, /// Channel verification mark @@ -878,8 +880,6 @@ pub struct ChannelItem { /// /// [`None`] if hidden by the owner or not present. pub subscriber_count: Option, - /// Number of videos from the channel - pub video_count: Option, /// Abbreviated channel description pub short_description: String, } From ee3ae40395263c5989784c7e00038ff13bc1151a Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 17 Aug 2024 03:26:20 +0200 Subject: [PATCH 125/347] fix: get TV client version --- src/client/mod.rs | 68 ++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 62 insertions(+), 6 deletions(-) diff --git a/src/client/mod.rs b/src/client/mod.rs index 2d74f5d..7546d8b 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -203,9 +203,9 @@ const DISABLE_PRETTY_PRINT_PARAMETER: &str = "prettyPrint=false"; // Desktop client const DESKTOP_CLIENT_VERSION: &str = "2.20230126.00.00"; -const TVHTML5_CLIENT_VERSION: &str = "2.0"; -const TV_CLIENT_VERSION: &str = "7.20240724.13.00"; const DESKTOP_MUSIC_CLIENT_VERSION: &str = "1.20230123.01.01"; +const TV_CLIENT_VERSION: &str = "7.20240724.13.00"; +const TVHTML5_CLIENT_VERSION: &str = "2.0"; // Mobile client const MOBILE_CLIENT_VERSION: &str = "18.03.33"; @@ -372,14 +372,20 @@ impl Default for RustyPipeOpts { struct CacheHolder { desktop_client: RwLock>, music_client: RwLock>, + tv_client: RwLock>, deobf: RwLock>, } #[derive(Default, Debug, Clone, Serialize, Deserialize)] #[serde(default)] struct CacheData { + #[serde(skip_serializing_if = "CacheEntry::is_none")] desktop_client: CacheEntry, + #[serde(skip_serializing_if = "CacheEntry::is_none")] music_client: CacheEntry, + #[serde(skip_serializing_if = "CacheEntry::is_none")] + tv_client: CacheEntry, + #[serde(skip_serializing_if = "CacheEntry::is_none")] deobf: CacheEntry, } @@ -430,6 +436,10 @@ impl CacheEntry { CacheEntry::None => None, } } + + fn is_none(&self) -> bool { + matches!(self, Self::None) + } } impl From for CacheEntry { @@ -521,6 +531,7 @@ impl RustyPipeBuilder { cache: CacheHolder { desktop_client: RwLock::new(cdata.desktop_client), music_client: RwLock::new(cdata.music_client), + tv_client: RwLock::new(cdata.tv_client), deobf: RwLock::new(cdata.deobf), }, default_opts: self.default_opts, @@ -815,6 +826,12 @@ impl RustyPipe { .await } + /// Extract the current version of the YouTube TV client from the website. + async fn extract_tv_client_version(&self) -> Result { + self.extract_client_version(None, YOUTUBE_TV_URL, YOUTUBE_TV_URL, Some(TV_UA)) + .await + } + async fn extract_client_version( &self, sw_url: Option<&str>, @@ -933,6 +950,37 @@ impl RustyPipe { } } + /// Get the current version of the YouTube TV client from the following sources + /// + /// 1. from cache + /// 2. from the YouTube TV website + /// 3. fall back to the hardcoded version + async fn get_tv_client_version(&self) -> String { + // Write lock here to prevent concurrent tasks from fetching the same data + let mut tv_client = self.inner.cache.tv_client.write().await; + + match tv_client.get() { + Some(cdata) => cdata.version.clone(), + None => { + tracing::debug!("getting TV client version"); + match self.extract_tv_client_version().await { + Ok(version) => { + *tv_client = CacheEntry::from(ClientData { + version: version.clone(), + }); + drop(tv_client); + self.store_cache().await; + version + } + Err(e) => { + tracing::warn!("{}, falling back to hardcoded TV client version", e); + DESKTOP_MUSIC_CLIENT_VERSION.to_owned() + } + } + } + } + } + /// Get deobfuscation data (either from cache or extracted from YouTube's JavaScript code) async fn get_deobf_data(&self) -> Result { // Write lock here to prevent concurrent tasks from fetching the same data @@ -974,6 +1022,7 @@ impl RustyPipe { let cdata = CacheData { desktop_client: self.inner.cache.desktop_client.read().await.clone(), music_client: self.inner.cache.music_client.read().await.clone(), + tv_client: self.inner.cache.tv_client.read().await.clone(), deobf: self.inner.cache.deobf.read().await.clone(), }; @@ -1197,7 +1246,7 @@ impl RustyPipeQuery { ClientType::Tv => YTContext { client: ClientInfo { client_name: "TVHTML5", - client_version: Cow::Borrowed(TV_CLIENT_VERSION), + client_version: Cow::Owned(self.client.get_tv_client_version().await), client_screen: Some("WATCH"), platform: "TV", device_model: Some("SmartTV"), @@ -1689,21 +1738,28 @@ mod tests { } #[tokio::test] - async fn t_extract_desktop_client_version() { + async fn extract_desktop_client_version() { let rp = RustyPipe::new(); let version = rp.extract_desktop_client_version().await.unwrap(); assert!(get_major_version(&version) >= 2); } #[tokio::test] - async fn t_extract_music_client_version() { + async fn extract_music_client_version() { let rp = RustyPipe::new(); let version = rp.extract_music_client_version().await.unwrap(); assert!(get_major_version(&version) >= 1); } #[tokio::test] - async fn t_get_visitor_data() { + async fn extract_tv_client_version() { + let rp = RustyPipe::new(); + let version = rp.extract_tv_client_version().await.unwrap(); + assert!(get_major_version(&version) >= 7); + } + + #[tokio::test] + async fn get_visitor_data() { let rp = RustyPipe::new(); let visitor_data = rp.get_visitor_data().await.unwrap(); From a3a1d9abf3e7e3ee2020b76d287ba006f85eb240 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 17 Aug 2024 04:33:07 +0200 Subject: [PATCH 126/347] test: add downloader test --- Cargo.toml | 2 +- Justfile | 2 +- downloader/Cargo.toml | 6 ++ downloader/src/error.rs | 54 ++++++++++++++++++ downloader/src/lib.rs | 3 +- downloader/src/util.rs | 54 +----------------- downloader/tests/tests.rs | 113 ++++++++++++++++++++++++++++++++++++++ tests/youtube.rs | 1 + 8 files changed, 180 insertions(+), 55 deletions(-) create mode 100644 downloader/src/error.rs create mode 100644 downloader/tests/tests.rs diff --git a/Cargo.toml b/Cargo.toml index 9c05861..7da8952 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,7 +10,7 @@ keywords.workspace = true categories.workspace = true description = "Client for the public YouTube / YouTube Music API (Innertube), inspired by NewPipe" -include = ["/src", "README.md", "LICENSE", "!snapshots"] +include = ["/src", "README.md", "CHANGELOG.md", "LICENSE", "!snapshots"] [workspace] members = [".", "codegen", "downloader", "cli"] diff --git a/Justfile b/Justfile index 5fd6b75..e4d0194 100644 --- a/Justfile +++ b/Justfile @@ -1,6 +1,6 @@ test: # cargo test --features=rss - cargo nextest run --features=rss --no-fail-fast --failure-output final --retries 1 + cargo nextest run --workspace --features=rss --no-fail-fast --failure-output final --retries 1 unittest: cargo nextest run --features=rss --no-fail-fast --failure-output final --lib diff --git a/downloader/Cargo.toml b/downloader/Cargo.toml index b04d087..7582dfa 100644 --- a/downloader/Cargo.toml +++ b/downloader/Cargo.toml @@ -48,3 +48,9 @@ time.workspace = true lofty = { version = "0.21.0", optional = true } image = { version = "0.25.0", optional = true } smartcrop2 = { version = "0.3.0", optional = true } + +[dev-dependencies] +path_macro.workspace = true +rstest.workspace = true +serde_json.workspace = true +temp_testdir = "0.2.3" diff --git a/downloader/src/error.rs b/downloader/src/error.rs new file mode 100644 index 0000000..8970dd4 --- /dev/null +++ b/downloader/src/error.rs @@ -0,0 +1,54 @@ +use std::{borrow::Cow, path::PathBuf}; + +use rustypipe::client::ClientType; + +/// Error from the video downloader +#[derive(thiserror::Error, Debug)] +#[non_exhaustive] +pub enum DownloadError { + /// RustyPipe error + #[error("{0}")] + RustyPipe(#[from] rustypipe::error::Error), + /// Error from the HTTP client + #[error("http error: {0}")] + Http(#[from] reqwest::Error), + /// 403 error trying to download video + #[error("YouTube returned 403 error")] + Forbidden(ClientType), + /// File IO error + #[error(transparent)] + Io(#[from] std::io::Error), + /// FFmpeg returned an error + #[error("FFmpeg error: {0}")] + Ffmpeg(Cow<'static, str>), + /// Error parsing ranges for progressive download + #[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>), + /// Download target already exists + #[error("file {0} already exists")] + Exists(PathBuf), + #[cfg(feature = "audiotag")] + /// Audio tagging error + #[error("Audio tag error: {0}")] + AudioTag(Cow<'static, str>), + /// Other error + #[error("error: {0}")] + Other(Cow<'static, str>), +} + +#[cfg(feature = "audiotag")] +impl From for DownloadError { + fn from(value: lofty::error::LoftyError) -> Self { + Self::AudioTag(value.to_string().into()) + } +} + +#[cfg(feature = "audiotag")] +impl From for DownloadError { + fn from(value: image::ImageError) -> Self { + Self::AudioTag(value.to_string().into()) + } +} diff --git a/downloader/src/lib.rs b/downloader/src/lib.rs index 5c65fb0..a1483d4 100644 --- a/downloader/src/lib.rs +++ b/downloader/src/lib.rs @@ -1,6 +1,7 @@ #![doc = include_str!("../README.md")] #![warn(missing_docs, clippy::todo, clippy::dbg_macro)] +mod error; mod util; use std::{ @@ -42,7 +43,7 @@ use rustypipe::model::{richtext::ToPlaintext, VideoDetails, VideoPlayerDetails}; #[cfg(feature = "audiotag")] use time::{Date, OffsetDateTime}; -pub use util::DownloadError; +pub use error::DownloadError; type Result = core::result::Result; diff --git a/downloader/src/util.rs b/downloader/src/util.rs index 5069c96..5f87339 100644 --- a/downloader/src/util.rs +++ b/downloader/src/util.rs @@ -1,58 +1,8 @@ -use std::{borrow::Cow, collections::BTreeMap, path::PathBuf}; +use std::collections::BTreeMap; use reqwest::Url; -use rustypipe::client::ClientType; -/// Error from the video downloader -#[derive(thiserror::Error, Debug)] -#[non_exhaustive] -pub enum DownloadError { - /// RustyPipe error - #[error("{0}")] - RustyPipe(#[from] rustypipe::error::Error), - /// Error from the HTTP client - #[error("http error: {0}")] - Http(#[from] reqwest::Error), - /// 403 error trying to download video - #[error("YouTube returned 403 error")] - Forbidden(ClientType), - /// File IO error - #[error(transparent)] - Io(#[from] std::io::Error), - /// FFmpeg returned an error - #[error("FFmpeg error: {0}")] - Ffmpeg(Cow<'static, str>), - /// Error parsing ranges for progressive download - #[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>), - /// Download target already exists - #[error("file {0} already exists")] - Exists(PathBuf), - #[cfg(feature = "audiotag")] - /// Audio tagging error - #[error("Audio tag error: {0}")] - AudioTag(Cow<'static, str>), - /// Other error - #[error("error: {0}")] - Other(Cow<'static, str>), -} - -#[cfg(feature = "audiotag")] -impl From for DownloadError { - fn from(value: lofty::error::LoftyError) -> Self { - Self::AudioTag(value.to_string().into()) - } -} - -#[cfg(feature = "audiotag")] -impl From for DownloadError { - fn from(value: image::ImageError) -> Self { - Self::AudioTag(value.to_string().into()) - } -} +use crate::DownloadError; /// Split an URL into its base string and parameter map /// diff --git a/downloader/tests/tests.rs b/downloader/tests/tests.rs new file mode 100644 index 0000000..3fc035d --- /dev/null +++ b/downloader/tests/tests.rs @@ -0,0 +1,113 @@ +use std::{fs, os::unix::fs::MetadataExt, path::Path, process::Command}; + +use path_macro::path; +use rstest::{fixture, rstest}; +use rustypipe::{client::RustyPipe, model::AudioCodec, param::StreamFilter}; +use rustypipe_downloader::Downloader; +use temp_testdir::TempDir; + +/// Get a new RusttyPipe instance +#[fixture] +fn rp() -> RustyPipe { + let vdata = std::env::var("YT_VDATA").ok(); + RustyPipe::builder() + .strict() + .storage_dir(path!(env!("CARGO_MANIFEST_DIR") / "..")) + .visitor_data_opt(vdata) + .build() + .unwrap() +} + +#[rstest] +#[tokio::test] +async fn download_video(rp: RustyPipe) { + let td = TempDir::default(); + let td_path = td.to_path_buf(); + + let dl = Downloader::builder().rustypipe(&rp).build(); + + let res = dl + .id("UXqq0ZvbOnk") + .to_dir(&td_path) + .stream_filter(StreamFilter::new().video_max_res(480)) + .download() + .await + .unwrap(); + + assert_eq!( + res.dest, + path!(td_path / "CHARGE - Blender Open Movie [UXqq0ZvbOnk].mp4") + ); + assert_eq!(res.player_data.details.id, "UXqq0ZvbOnk"); +} + +#[rstest] +#[tokio::test] +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(); + + let res = dl + .id("bVtv3st8bgc") + .to_dir(&td_path) + .stream_filter( + StreamFilter::new() + .no_video() + .audio_codecs([AudioCodec::Opus]), + ) + .download() + .await + .unwrap(); + + assert_eq!( + res.dest, + path!(td_path / "Lord of the Riffs [bVtv3st8bgc].opus") + ); + assert_eq!(res.player_data.details.id, "bVtv3st8bgc"); + let fm = fs::metadata(&res.dest).unwrap(); + assert_gte(fm.size(), 6_000_000, "file size"); + assert_audio_meta( + &res.dest, + "Lord of the Riffs", + "Alexander Nakarada - CreatorChords", + "Lord of the Riffs", + "2022-02-05", + ); +} + +/// Assert that number A is greater than or equal to number B +#[track_caller] +fn assert_gte(a: T, b: T, msg: &str) { + assert!(a >= b, "expected >= {b} {msg}, got {a}"); +} + +#[track_caller] +fn assert_audio_meta(p: &Path, title: &str, artist: &str, album: &str, date: &str) { + let res = Command::new("ffprobe") + .args([ + "-loglevel", + "error", + "-show_entries", + "stream_tags", + "-of", + "json", + ]) + .arg(p) + .output() + .unwrap(); + if !res.status.success() { + panic!("ffprobe error\n{}", String::from_utf8_lossy(&res.stderr)) + } + let res_json = serde_json::from_slice::(&res.stdout).unwrap(); + let tags = &res_json["streams"][0]["tags"]; + assert_eq!(tags["TITLE"].as_str(), Some(title)); + assert_eq!(tags["ARTIST"].as_str(), Some(artist)); + assert_eq!(tags["ALBUM"].as_str(), Some(album)); + assert_eq!(tags["DATE"].as_str(), Some(date)); +} diff --git a/tests/youtube.rs b/tests/youtube.rs index ca5f079..4e5f656 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -2697,6 +2697,7 @@ fn rp(lang: Language) -> RustyPipe { let vdata = std::env::var("YT_VDATA").ok(); RustyPipe::builder() .strict() + .storage_dir(env!("CARGO_MANIFEST_DIR")) .lang(lang) .visitor_data_opt(vdata) .build() From 3599acafef1a21fa6f8dea97902eb4a3fb048c14 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 18 Aug 2024 00:43:02 +0200 Subject: [PATCH 127/347] feat!: remove startpage --- codegen/src/download_testfiles.rs | 25 - src/client/pagination.rs | 1 - src/client/response/mod.rs | 1 - src/client/response/trends.rs | 9 +- ...ent__pagination__tests__map_startpage.snap | 884 ------------------ ..._client__trends__tests__map_startpage.snap | 784 ---------------- src/client/trends.rs | 103 +- tests/youtube.rs | 12 - 8 files changed, 6 insertions(+), 1813 deletions(-) delete mode 100644 src/client/snapshots/rustypipe__client__pagination__tests__map_startpage.snap delete mode 100644 src/client/snapshots/rustypipe__client__trends__tests__map_startpage.snap diff --git a/codegen/src/download_testfiles.rs b/codegen/src/download_testfiles.rs index d5fd42e..1a580d2 100644 --- a/codegen/src/download_testfiles.rs +++ b/codegen/src/download_testfiles.rs @@ -38,8 +38,6 @@ pub async fn download_testfiles() { search_cont().await; search_playlists().await; search_empty().await; - startpage().await; - startpage_cont().await; trending().await; music_playlist().await; @@ -448,29 +446,6 @@ async fn search_empty() { .unwrap(); } -async fn startpage() { - let json_path = path!(*TESTFILES_DIR / "trends" / "startpage.json"); - if json_path.exists() { - return; - } - - let rp = rp_testfile(&json_path); - rp.query().startpage().await.unwrap(); -} - -async fn startpage_cont() { - let json_path = path!(*TESTFILES_DIR / "trends" / "startpage_cont.json"); - if json_path.exists() { - return; - } - - let rp = RustyPipe::new(); - let startpage = rp.query().startpage().await.unwrap(); - - let rp = rp_testfile(&json_path); - startpage.next(rp.query()).await.unwrap(); -} - async fn trending() { let json_path = path!(*TESTFILES_DIR / "trends" / "trending_videos.json"); if json_path.exists() { diff --git a/src/client/pagination.rs b/src/client/pagination.rs index 1251574..e8f53dc 100644 --- a/src/client/pagination.rs +++ b/src/client/pagination.rs @@ -355,7 +355,6 @@ mod tests { #[rstest] #[case::search("search", path!("search" / "cont.json"))] - #[case::startpage("startpage", path!("trends" / "startpage_cont.json"))] #[case::recommendations("recommendations", path!("video_details" / "recommendations.json"))] fn map_continuation_items(#[case] name: &str, #[case] path: PathBuf) { let json_path = path!(*TESTFILES / path); diff --git a/src/client/response/mod.rs b/src/client/response/mod.rs index 85392cd..e8b7b52 100644 --- a/src/client/response/mod.rs +++ b/src/client/response/mod.rs @@ -34,7 +34,6 @@ pub(crate) use player::Player; pub(crate) use playlist::Playlist; pub(crate) use search::Search; pub(crate) use search::SearchSuggestion; -pub(crate) use trends::Startpage; pub(crate) use trends::Trending; pub(crate) use url_endpoint::ResolvedUrl; pub(crate) use video_details::VideoComments; diff --git a/src/client/response/trends.rs b/src/client/response/trends.rs index f35472d..07f4b9a 100644 --- a/src/client/response/trends.rs +++ b/src/client/response/trends.rs @@ -1,13 +1,6 @@ use serde::Deserialize; -use super::{video_item::YouTubeListRendererWrap, ResponseContext, Tab, TwoColumnBrowseResults}; - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub(crate) struct Startpage { - pub contents: Contents, - pub response_context: ResponseContext, -} +use super::{video_item::YouTubeListRendererWrap, Tab, TwoColumnBrowseResults}; #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] diff --git a/src/client/snapshots/rustypipe__client__pagination__tests__map_startpage.snap b/src/client/snapshots/rustypipe__client__pagination__tests__map_startpage.snap deleted file mode 100644 index 171c57f..0000000 --- a/src/client/snapshots/rustypipe__client__pagination__tests__map_startpage.snap +++ /dev/null @@ -1,884 +0,0 @@ ---- -source: src/client/pagination.rs -expression: map_res.c ---- -Paginator( - count: None, - items: [ - Video(VideoItem( - id: "mRmlXh7Hams", - name: "Extra 3 vom 12.10.2022 im NDR | extra 3 | NDR", - duration: Some(1839), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/mRmlXh7Hams/hqdefault.jpg?sqp=-oaymwEcCOADEI4CSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAbO4lI0dDo_r85A1fi9XQS0rNiOQ", - width: 480, - height: 270, - ), - ], - channel: Some(ChannelTag( - id: "UCjhkuC_Pi85wGjnB0I1ydxw", - name: "extra 3", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/N2TrlnZnU3cYFrRcXmQhQ77IriCxoEl-XTapCJQ9UkEHEkb0gMYVASjewV5Rg1P0HPUOebRoYw=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: None, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("2 days ago"), - view_count: Some(585257), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("Niedersachsen nach der Wahl: Schuld ist immer die Ampel | Die Grünen: Partei der erneuerbaren Prinzipien | Verhütung? Ist Frauensache! | Youtube: Handwerk mit goldenem Boden - Christian Ehring..."), - )), - Video(VideoItem( - id: "LsXC5r64Pvc", - name: "Most Rarest Plays In Baseball History", - duration: Some(1975), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/LsXC5r64Pvc/hqdefault.jpg?sqp=-oaymwEcCOADEI4CSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB2KXmgKxrJVUy3Naqi_R-R2X92FA", - width: 480, - height: 270, - ), - ], - channel: Some(ChannelTag( - id: "UCRfKJZ7LHueFudiDgAJDr9Q", - name: "Top All Sports", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/ytc/AMLnZu_dYWlP21FumM8m8ZxkKiTNaF9E68a2fnFnBo_q=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: None, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("3 weeks ago"), - view_count: Some(985521), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("#baseball #mlb #mlbb"), - )), - Video(VideoItem( - id: "dwPmd1GqQHE", - name: "90S RAP & HIPHOP MIX - Notorious B I G , Dr Dre, 50 Cent, Snoop Dogg, 2Pac, DMX, Lil Jon and more", - duration: Some(5457), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/dwPmd1GqQHE/hqdefault.jpg?sqp=-oaymwEcCOADEI4CSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAAyGcLGzFkfdEmqqohpxZsGOM9Kw", - width: 480, - height: 270, - ), - ], - channel: Some(ChannelTag( - id: "UCKICAAGtBLJJ5zRdIxn_B4g", - name: "#Hip Hop 2022", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/fD5u3Lvkxe7oD0J3VlZ_Ih9BWtxT10wc68XWzSbVt02L88J2QrqO4FaK2xrsOoejD1GpBE7VAaA=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: None, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("5 months ago"), - view_count: Some(1654055), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: None, - )), - Video(VideoItem( - id: "qxI-Ob8lpLE", - name: "Schlatt\'s Chips Tier List", - duration: Some(1071), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/qxI-Ob8lpLE/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBtEO5eB17tODb5Ek9GRoQwwVGtvA", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/qxI-Ob8lpLE/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAwDt0sa98qoI5O8u0kHJY7FbTrZg", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UC2mP7il3YV7TxM_3m6U0bwA", - name: "jschlattLIVE", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/Rr0aOvzRYLCyIDtIhIgkAYdQeagRlGDPzRuWoLrwGakM4VdnHPZHeSfUbiV-pJKmFbJ8LL9r5g=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: Verified, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("1 year ago"), - view_count: Some(9029628), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("Schlatt ranks every chip ever made.\nCREATE YOUR OWN TIER LIST: https://tiermaker.com/create/chips-for-big-guy-1146620\n\nSubscribe to me on Twitch:\nhttps://twitch.tv/jschlatt\n\nFollow me on Twitter:..."), - )), - Video(VideoItem( - id: "qmrzTUmZ4UU", - name: "850€ für den Verrat am System - UCS AT-AT LEGO® Star Wars 75313", - duration: Some(2043), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/qmrzTUmZ4UU/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAsI3VS-wxnt1s_zS4M_YbVrV1pAg", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/qmrzTUmZ4UU/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBYk7w0qGeW4kZchFr-tbydELUChQ", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UC_EZd3lsmxudu3IQzpTzOgw", - name: "Held der Steine Inh. Thomas Panke", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/ytc/AMLnZu8g9hFxZ2HD4P9pDsUxoAvkHwbZoTVNr3yw12i8YA=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: Verified, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("6 days ago"), - view_count: Some(600516), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("Star Wars - erschienen 2021 - 6749 Teile\n\nDieses Set bei Amazon*:\nhttps://amzn.to/3yu9dHX\n\nErwähnt im Video*:\nTassen https://bit.ly/HdSBausteinecke\nBig Boy https://bit.ly/BBLokBigBoy\nBurg..."), - )), - Video(VideoItem( - id: "4q4vpQCIZ6w", - name: "🌉 Manhattan Jazz 💖 l Relaxing Jazz Piano Music l Background Music", - duration: Some(23229), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/4q4vpQCIZ6w/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD4DKjgt5VJBRX2pH_KzI4Ru9AMaQ", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/4q4vpQCIZ6w/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDMm9yeUF-9LH2rhU7jaQ6td05cMg", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCBnMxlW70f0SB4ZTJx124lw", - name: "몽키비지엠 MONKEYBGM", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/x8_XLvrLdd-Cs6z7Cmob2eZmqvbzmYdOdf6b7jLMry1z1YhdExnuqEhwRrYveu4X2airLfbv=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: Verified, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("6 months ago"), - view_count: Some(2343407), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("- Please Subscribe!\n\n🔺Disney OST Collection part 1 \n ➡\u{fe0f} https://youtu.be/lrzKFu85nhE\n\n🔺Disney OST Collection part 2 \n ➡\u{fe0f} https://youtu.be/EtE09lowIbk\n\n🔺Studio Ghibli..."), - )), - Video(VideoItem( - id: "Z_k31kqZxaE", - name: "1 in 1,000,000 NBA Moments", - duration: Some(567), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/Z_k31kqZxaE/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCovxnIKW7TCP3XBcG4x-Acw10OBA", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/Z_k31kqZxaE/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBa52Ie0cfnzg44jnkfTGzrCsVfOw", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCpyoYVlp67N16Lg1_N4VnVw", - name: "dime", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/HwpHaCaatHTI3N1imp5ZszL8_raSsxBq60UHScSpXC6e6VySeOlZ8Y3msYgum4vzCH5jmCxLvEU=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: Verified, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("1 month ago"), - view_count: Some(4334298), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("• Instagram - https://instagram.com/dime_nba\n• TikTok - https://tiktok.com/@dime_nba\n\ndime is a Swedish brand, founded in 2022. We produce some of the most entertaining NBA content on YouTube..."), - )), - Video(VideoItem( - id: "zE-a5eqvlv8", - name: "Dua Lipa, Coldplay, Martin Garrix & Kygo, The Chainsmokers Style - Feeling Me", - duration: None, - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/zE-a5eqvlv8/hq720_live.jpg?sqp=COz4qZoG-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAbIAO-SIuWTC9f2AKu6Yp9nB0BwQ", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/zE-a5eqvlv8/hq720_live.jpg?sqp=COz4qZoG-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDHdbRp6yOt4qkQk31BoFv6keTBYQ", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCX-USfenzQlhrEJR1zD5IYw", - name: "Deep Mood.", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/8WO05hff9bGjmlyPFo_PJRMIfHEoUvN_KbTcWRVX2yqeUO3fLgkz0K4MA6W95s3_NKdNUAwjow=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(889), - is_live: true, - is_short: false, - is_upcoming: false, - short_description: Some("#Summermix #DeepHouse #DeepHouseSummerMix\nDua Lipa, Coldplay, Martin Garrix & Kygo, The Chainsmokers Style - Feeling Me\n\n🎵 All songs in this spotify playlist: https://spoti.fi/2TJ4Dyj\nSubmit..."), - )), - Video(VideoItem( - id: "gNlOk0LXi5M", - name: "Soll ich dir 1g GOLD schenken? oder JEMAND anderen DOPPELT?", - duration: Some(704), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/gNlOk0LXi5M/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAy3JbiDcqUTwF6NS69UnX715q90w", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/gNlOk0LXi5M/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDICPl-Jsul5nnhrac2s01gueUCDA", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCqcWNPTUVATZt0Dlr2jV0Wg", - name: "Mois", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/uHDIV2MwZnJRX8guX2KfFr4-gdxXK5x9nH0tz456hcBn0DH7LurNQbkAPjP5tSKg1Tqu07y9nKw=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: Verified, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("8 days ago"), - view_count: Some(463834), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("Je mehr Menschen mich abonnieren desto mehr Menschen werde ich glücklich machen \n\n24 std ab, viel Glück \n\nhttps://I-Clip.com/?sPartner=Mois"), - )), - Video(VideoItem( - id: "dbMvZjs8Yc8", - name: "Brad Pitt- Die Revanche eines Sexsymbols | Doku HD | ARTE", - duration: Some(3137), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/dbMvZjs8Yc8/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB6HnYSCQFmEQ1V5qlFf5fblOpv-g", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/dbMvZjs8Yc8/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD-AoMr1H_6EvzuWvg2whMDmbtY4A", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCsygZtQQSplGF6JA3XWvsdg", - name: "Irgendwas mit ARTE und Kultur", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/ytc/AMLnZu9_FXs7hsEndpcy9C4D_ZsM1xZzbLLThDQIL4-Dxg=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: None, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("5 days ago"), - view_count: Some(293878), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("Vom „People“-Magazin wurde er mehrfach zum „Sexiest Man Alive“ gekrönt. Aber sein Aussehen ist nicht alles: In 30 Jahren Karriere drehte Brad Pitt eine Vielzahl herausragender Filme...."), - )), - Video(VideoItem( - id: "mFxi3lOAcFs", - name: "Craziest Soviet Machines You Won\'t Believe Exist - Part 1", - duration: Some(1569), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/mFxi3lOAcFs/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCgPz_lsa3ENFNi2sC_uraWrUIuBQ", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/mFxi3lOAcFs/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA2u97RbHNrNVp_Cb5m0DSvA0P02g", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCkQO3QsgTpNTsOw6ujimT5Q", - name: "BE AMAZED", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/ytc/AMLnZu_vmgpzJxLlR_1RA68cz8iITuzYLFFbPBvg5ULJlQ=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: Verified, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("1 year ago"), - view_count: Some(14056843), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("Coming up are some crazy Soviet-era machines you won\'t believe exist!\nPart 2: https://youtu.be/MBZVOJrhuHY\nSuggest a topic here to be turned into a video: http://bit.ly/2kwqhuh\nSubscribe for..."), - )), - Video(VideoItem( - id: "eu7ubm7g59E", - name: "People Hated Me For Using This Slab", - duration: Some(1264), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/eu7ubm7g59E/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCg_b-6U2Pux_tZqAY8jkIa1JoTew", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/eu7ubm7g59E/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA9WwjUr_EpS3PPYNG3e4N8EEr9oA", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UC6I0KzAD7uFTL1qzxyunkvA", - name: "Blacktail Studio", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/ytc/AMLnZu8jg6Uevc1qmfbksQ_xdJ0dF37PmZVFHkyNhouBTA=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: Verified, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("3 months ago"), - view_count: Some(2845035), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("Some people were furious I used this slab, and I actually understand why. \nBlacktail bow tie jig (limited first run): https://www.blacktailstudio.com/bowtie-jig\nBlacktail epoxy table workshop:..."), - )), - Video(VideoItem( - id: "TRGHIN2PGIA", - name: "Christian Bale Breaks Down His Most Iconic Characters | GQ", - duration: Some(1381), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/TRGHIN2PGIA/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAMxhmIbADGzAlH1jNl6RN-ZU0eEQ", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/TRGHIN2PGIA/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDxo3aBHktmxUOEuSdXJVHmlcR4-Q", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCsEukrAd64fqA7FjwkmZ_Dw", - name: "GQ", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/ytc/AMLnZu-gTmA2HcJO9Y5kYl4IUKG-jZ8QtojL8qaQiyW9kA=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: Verified, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("9 days ago"), - view_count: Some(8044465), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("Christian Bale breaks down a few of his most iconic characters from \'American Psycho,\' \'The Dark Knight\' Trilogy, \'The Fighter,\' \'The Machinist,\' \'The Big Short,\' \'Vice,\' \'Empire of the Sun,\'..."), - )), - Video(VideoItem( - id: "w3tENzcssDU", - name: "NFL Trick Plays But They Get Increasingly Higher IQ", - duration: Some(599), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/w3tENzcssDU/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCZHp6o6cV9HNNJXPlI1FKi6S58qg", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/w3tENzcssDU/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBH4K8b0AfAgX0MvL4oHlbianG8xQ", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCJka5SDh36_N4pjJd69efkg", - name: "Savage Brick Sports", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/ytc/AMLnZu_s0H6HPGb4LYTxkE6fH1Cp5Mp8jfeOaMluW2A03Q=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: Verified, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("3 months ago"), - view_count: Some(1172372), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("NFL Trick Plays But They Get Increasingly Higher IQ\nCredit to CoshReport for starting this trend.\n\n(if any of the links don\'t work, check most recent video)\nTalkSports Discord: https://discord.gg/n..."), - )), - Video(VideoItem( - id: "gUAd2XXzH7w", - name: "⚓\u{fe0f}Found ABANDONED SHIP!!! Big CRUISE SHIP on a desert island☠\u{fe0f} Where did the people go?!?", - duration: Some(2949), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/gUAd2XXzH7w/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDaBSyUxw88zjCr_Az868dEnhMrug", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/gUAd2XXzH7w/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAvfP1QR12y5cY8mvtg7Qqvl2XuTA", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UClUZos7yKYtrmr0-azaD8pw", - name: "Kreosan English", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/Rzi1oOWYL20M028wSLcD4eEkByC7kWGcBpr6WBAx0aGC9UAlIcGB_-D4rI_wkMsOHe9VnRWL3Q=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: Verified, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("1 month ago"), - view_count: Some(1883533), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("We are preparing a continuation of the cruise ship for you! Very soon you will be able to see the next part. If you would like to help us make a video:\n\n► Support us - https://www.patreon.com/k..."), - )), - Video(VideoItem( - id: "YpGjaJ1ettI", - name: "[Working BGM] Comfortable music that makes you feel positive -- Morning Mood -- Daily Routine", - duration: Some(3651), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/YpGjaJ1ettI/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDjAMJifo4Bg-vXUdHXyWYRHSf-Sw", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/YpGjaJ1ettI/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAx95bizFu4fxePN4qbMdKIoNDCug", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCpxY9-3iB5Hyho31uBgzh7w", - name: "Daily Routine", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/uci2aPM5XOEgdMt2h9aHMiN-K1-TmJQQPRdWvprNrpJpyZSLI9z0zFzyXQeQ1mNIQWl2QrjX3Rc=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: None, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("2 months ago"), - view_count: Some(1465389), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("Hello everyone. It\'s me again. I will stay at home and study . It\'s full of fun energy today, so it\'s ready to spread to everyone with hilarious music. 🔥🔥🔥\nHave fun together 😊😊😊..."), - )), - Video(VideoItem( - id: "rPAhFD8hKxQ", - name: "Survival Camping 9ft/3m Under Snow - Giant Winter Bushcraft Shelter and Quinzee", - duration: Some(1301), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/rPAhFD8hKxQ/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCY0Xhznr6RKZ-EG1G5C1M34h8ugA", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/rPAhFD8hKxQ/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBiANoEaNfk7eMjCAxapIK5NiYmmQ", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCfpCQ89W9wjkHc8J_6eTbBg", - name: "Outdoor Boys", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/ytc/AMLnZu8v_ZMJTqxqU7M__w8nHHaygAyOvsqCnFeIhjQxFw=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: Verified, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("6 months ago"), - view_count: Some(20488431), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("Solo winter camping and bushcraft 9 feet (3 meters) under the snow. I hiked high up into the mountains during a snow storm with 30 mph/48 kmh winds to build a deep snow bushcraft survival shelter..."), - )), - Video(VideoItem( - id: "2rye4u-cCNk", - name: "Pink Panther Fights Off Pests | 54 Minute Compilation | The Pink Panther Show", - duration: Some(3158), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/2rye4u-cCNk/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCi4Tt2tz-kk-cumb7SEfzzgixj5A", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/2rye4u-cCNk/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD4QbHfCufvmol1UNj5wqmOtjZNvw", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCFeUyPY6W8qX8w2o6oSiRmw", - name: "Official Pink Panther", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/ytc/AMLnZu-htKBt4jUDwmnm0r-ojGjHZMy9-H92Q1pRoAfkgw=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: Verified, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("11 months ago"), - view_count: Some(27357653), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("(1) Pink Pest Control\n(2) Pink-a-Boo\n(3) Little Beaux Pink\n(4) The Pink Package Plot\n(5) Come On In! The Water\'s Pink\n(6) Psychedelic Pink\n(7) Pink Posies\n(8) G.I. Pink\n\nThe Pink Panther is..."), - )), - Video(VideoItem( - id: "O0xAlfSaBNQ", - name: "FC Nantes vs. SC Freiburg – Highlights & Tore | UEFA Europa League", - duration: Some(326), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/O0xAlfSaBNQ/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDe-1NUODMNivJw5r5J5Wd16PMsqA", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/O0xAlfSaBNQ/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAMD0BFcC-x_UYe-F5q5y4GPcGnWA", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UC8WYi3XQXsf-6FNvqoEvxag", - name: "RTL Sport", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/E1ZL4Cnc8ej3MeHR0To12hetHWrlhcupsz0nFyZmEJoWvLvJo9aOXvPOWmNMWn9tJLoMB3duRg=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: Verified, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("11 hours ago"), - view_count: Some(117395), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("UEFA Europa League: https://www.rtlplus.com/shows/uefa-europa-league-19818?utm_source=youtube&utm_medium=editorial&utm_campaign=beschreibung&utm_term=rtlsport \nFC Nantes vs. SC Freiburg –..."), - )), - Video(VideoItem( - id: "Mhs9Sbnw19o", - name: "Dramatisches Duell: 400 Jahre altes Kästchen erzielt zig-fachen Wunschpreis! | Bares für Rares XXL", - duration: Some(744), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/Mhs9Sbnw19o/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBkxXdE8JNS0S6_Dhl-aY7FRmbL9g", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/Mhs9Sbnw19o/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAqbRhx4fQfK_2mVGNX_0_dZQt0YQ", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UC53bIpnef1pwAx69ERmmOLA", - name: "Bares für Rares", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/ytc/AMLnZu-ZyE4lblLYyk8iis1xoH_v64_tmhWca2Z6wmsVexk=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: Verified, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("11 days ago"), - view_count: Some(836333), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("Du hast Schätze im Keller, die du unseren Expert*innen präsentieren möchtest? Hier geht\'s zum Bewerbungsformular: kurz.zdf.de/lSJ/\n\nEin einmaliges Bieterduell treibt den Preis für dieses..."), - )), - Video(VideoItem( - id: "Bzzp5Cay7DI", - name: "Sweet Jazz - Cool autumn Bossa Nova & October Jazz Positive Mood", - duration: None, - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/Bzzp5Cay7DI/hq720_live.jpg?sqp=COz4qZoG-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAKcYaDyG1yocH1e2_BIyl5FGKWPw", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/Bzzp5Cay7DI/hq720_live.jpg?sqp=COz4qZoG-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBOaXPCJec4XuaFyJ1-6dcnJWEmrg", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCoGlllJE7aYe_VzIGP3s_wA", - name: "Smooth Jazz Music", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/babJ-iwY1cNs3mE2CnDiBSf0IjePgGuCLNLvLGcepj6tzXNLbSAQA7rQho35fKv9qFxEVIWdCw=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(1216), - is_live: true, - is_short: false, - is_upcoming: false, - short_description: Some("Sweet Jazz - Cool autumn Bossa Nova & October Jazz Positive Mood\nhttps://youtu.be/Bzzp5Cay7DI\n********************************************\nSounds available on: Jazz Bossa Nova\nOFFICIAL VIDEO:..."), - )), - Video(VideoItem( - id: "SlskTqc9CEc", - name: "The Chick-Fil-A Full Menu Challenge", - duration: Some(613), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/SlskTqc9CEc/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBjDpJq0J5r8jvLwIQG2HCvsoj8nw", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/SlskTqc9CEc/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCnwo-jiD8xsP29kf6a5jMwIqHPEA", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCd1fLoVFooPeWqCEYVUJZqg", - name: "Matt Stonie", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/ytc/AMLnZu9Of1-RwNeaBY6nulF3DECzDcAdZRbC_aOvZHPedw=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: Verified, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("3 years ago"), - view_count: Some(39286403), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("Good Video? Like/Fav & Share!!\n\nTBH this is really my 1st time trying Chick-Fil-A, legitimately. My verdict is torn, but that sauce is BOMB!\n\nChallenge\n+ Chick-Fil-A Deluxe\n+ Spicy Deluxe\n+..."), - )), - Video(VideoItem( - id: "CwRvM2TfYbs", - name: "Gentle healing music of health and to calm the nervous system, deep relaxation! Say Life Yes", - duration: None, - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/CwRvM2TfYbs/hq720_live.jpg?sqp=COz4qZoG-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCj3HTq1K0KCuiuZdyh_by4VUZWeA", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/CwRvM2TfYbs/hq720_live.jpg?sqp=COz4qZoG-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA-rjU_R19afFlCk22vmfHEtfFKcA", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UC6jH5GNi0iOR17opA1Vowhw", - name: "Lucid Dream", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/QlTKeA9Cx-4qajm4VaLGGGH0cCVe8Fda_c6SScCLPy8fsu0ZQkDhtBB3qcZastIZPQNew5vi-LM=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(1416), - is_live: true, - is_short: false, - is_upcoming: false, - short_description: Some("🌿 Music for relaxation, meditation, study, reading, massage, spa or sleep. This music is ideal for dealing with anxiety, stress or insomnia as it promotes relaxation and helps eliminate..."), - )), - Video(VideoItem( - id: "7jz0pXSe_kI", - name: "Craziest \"Fine...I\'ll Do it Myself\" Moments in Sports History (PART 2)", - duration: Some(1822), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/7jz0pXSe_kI/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDEUQzJHcD0s2BgP1znPupwsxf48w", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/7jz0pXSe_kI/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB1yzi-24jCXlAki1xIq0aDMqQY3A", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCd5hdemikI6GxwGKhJCwzww", - name: "Highlight Reel", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/NETjJS3cNlblrg70CD4LH_Mma5lYmZSO3NlUnzi5Vd_cRD3XkVyaO1UCFTq6acK52g9XDly9-A=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: Verified, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("10 months ago"), - view_count: Some(11601863), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("(PART 2) of 👉🏼 Craziest \"Fine...I\'ll Do It Myself\" Moments in Sports History \n\nBIBLE VERSE OF THE DAY: Luke 12:40"), - )), - ], - ctoken: Some("4qmFsgKxAxIPRkV3aGF0X3RvX3dhdGNoGoADQ0RCNmxnSkhUWFpRYzJOVU1UUm1iME5OWjNOSmQzWjZOM0JPWlZWMldqZDFRVlp3ZEVOdGMwdEhXR3d3V0ROQ2FGb3lWbVpqTWpWb1kwaE9iMkl6VW1aamJWWnVZVmM1ZFZsWGQxTklNVlUwVDFSU1dXUXhUbXhXTTBaeVdsaGtSRkpGYkZCWk0yaDZWbXMxTlV4VmVGbE1XRnBSVlcxallVeFJRVUZhVnpSQlFWWldWRUZCUmtWU1VVRkNRVVZhUm1ReWFHaGtSamt3WWpFNU0xbFlVbXBoUVVGQ1FVRkZRa0ZCUVVKQlFVVkJRVUZGUWtGSFNrSkRRVUZUUlROQ2FGb3lWbVpqTWpWb1kwaE9iMkl6VW1aa1J6bHlXbGMwWVVWM2Ftb3hPRkJGT1dWSU5rRm9WVlpZWlVGTFNGaHVSMEp2ZDJsRmQycERObkZmUlRsbFNEWkJhRmRIZG1RMFMwaGxaMGhDTlZnMmJrMWxPVU5SU1VsTlVRJTNEJTNEmgIaYnJvd3NlLWZlZWRGRXdoYXRfdG9fd2F0Y2g%3D"), - endpoint: browse, -) diff --git a/src/client/snapshots/rustypipe__client__trends__tests__map_startpage.snap b/src/client/snapshots/rustypipe__client__trends__tests__map_startpage.snap deleted file mode 100644 index a6ec599..0000000 --- a/src/client/snapshots/rustypipe__client__trends__tests__map_startpage.snap +++ /dev/null @@ -1,784 +0,0 @@ ---- -source: src/client/trends.rs -expression: map_res.c ---- -Paginator( - count: None, - items: [ - VideoItem( - id: "_cyJhGsXDDM", - name: "Ultimate Criminal Canal Found Magnet Fishing! Police on the Hunt", - duration: Some(1096), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/_cyJhGsXDDM/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBBz_ErMMfhKLRZRfcAPTlMTujziw", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/_cyJhGsXDDM/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDaUGJ6GyTv5vwllztR6mN43dlmxA", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCMLXec9-wpON8tZegnDsYLw", - name: "Bondi Treasure Hunter", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/ytc/AMLnZu91VHy_3HvCaMLthYyMSol6zwqxebNQ9GXc7NUB=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: Verified, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("1 day ago"), - view_count: Some(700385), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("Subscribe for more Treasure Hunting videos: https://tinyurl.com/yyl3zerk\n\nMy Magnet! (Use Discount code \'BONDI\'): https://magnetarmagnets.com/\nMy Dive System! (Use Bonus code \'BONDI\'): https://lddy..."), - ), - VideoItem( - id: "36YnV9STBqc", - name: "The Good Life Radio\u{a0}•\u{a0}24/7 Live Radio | Best Relax House, Chillout, Study, Running, Gym, Happy Music", - duration: None, - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/36YnV9STBqc/hq720_live.jpg?sqp=COjxqZoG-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLASUZkzmRJDiyIJmcsAdcDGan805Q", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/36YnV9STBqc/hq720_live.jpg?sqp=COjxqZoG-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBDrl0k5nr9wH-_aosqOimodx0b-w", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UChs0pSaEoNLV4mevBFGaoKA", - name: "The Good Life Radio x Sensual Musique", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/ytc/AMLnZu_V9mOdHaorjNFqGXCecFeOBZhDWB8tVYG_I8gJwA=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(7202), - is_live: true, - is_short: false, - is_upcoming: false, - short_description: Some("The Good Life is live streaming the best of Relaxing & Chill House Music, Deep House, Tropical House, EDM, Dance & Pop as well as Music for Sleep, Focus, Study, Workout, Gym, Running etc. in..."), - ), - VideoItem( - id: "YYD1qgH5qC4", - name: "چند شنبه با سینــا | فصل چهـارم | قسمت 5 | با حضور نازنین انصاری مدیر روزنامه کیهان لندن", - duration: Some(3261), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/YYD1qgH5qC4/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBkvD-kVL12hteMVVLRZvJHOdlPzQ", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/YYD1qgH5qC4/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDpO5WCJiLDPHrXOWH-xk2hTG_S3A", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCzH_7hfL6Jd1H0WpNO_eryQ", - name: "MBC PERSIA", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/ytc/AMLnZu9lP4dhb_R_Y7e8Q4sb6dj7ve-YtalnMd2t1qP05A=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: None, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("14 hours ago"), - view_count: Some(104344), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("#mbcpersia\n#chandshanbeh\n#چندشنبه\n\nشبكه ام بى سى پرشيا را از حساب هاى مختلف در شبكه هاى اجتماعى دنبال كنيد\n►MBCPERSIA on Facebook:..."), - ), - VideoItem( - id: "BeJqgI6rw9k", - name: "your city is full of fake buildings, here\'s why", - duration: Some(725), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/BeJqgI6rw9k/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAvkJGHa6h2vzXrG1ueGQA8JysqEg", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/BeJqgI6rw9k/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDEJWMD2gUA572p12E7fZ1VX8qJ3A", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCqVEHtQoXHmUCfJ-9smpTSg", - name: "Answer in Progress", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/b4TIQdFmoHYvQmcMt1XGH40m8-P5VdjyaZKb2C6nmkezGVk2Ln1csqe1PWg5aefEyk-NEFWhzg=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: Verified, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("7 days ago"), - view_count: Some(1447008), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("Save 33% on your first Native Deodorant Pack - normally $39, you’ll get it for $26! Click here https://bit.ly/nativeanswer1 and use my code ANSWER #AD\n\nSomewhere on your street there may..."), - ), - VideoItem( - id: "ma28eWd1oyA", - name: "Post Malone, Maroon 5, Adele, Taylor Swift, Ed Sheeran, Shawn Mendes, Pop Hits 2020 Part 6", - duration: Some(29989), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/ma28eWd1oyA/hqdefault.jpg?sqp=-oaymwEcCOADEI4CSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCznoPDMo_F1NCRBWoD4Ps5IjctxQ", - width: 480, - height: 270, - ), - ], - channel: Some(ChannelTag( - id: "UCldQuUMYTUGrjvcU2vaPSFQ", - name: "Music Library", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/ytc/AMLnZu-4BJEmOMTfX96bjwu9AQS02gbODk5YQpZWVi5P=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: None, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("Streamed 2 years ago"), - view_count: Some(1861814), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("Post Malone, Maroon 5, Adele, Taylor Swift, Ed Sheeran, Shawn Mendes, Charlie Puth Pop Hits 2020\nPost Malone, Maroon 5, Adele, Taylor Swift, Ed Sheeran, Shawn Mendes, Charlie Puth Pop Hits..."), - ), - VideoItem( - id: "mL2LBRM5GBI", - name: "Salahs 6-Minuten-Hattrick & Firmino-Gala: Rangers - FC Liverpool 1:7 | UEFA Champions League | DAZN", - duration: Some(355), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/mL2LBRM5GBI/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBhsDaEALJodPurmS3DywUoRRwzwg", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/mL2LBRM5GBI/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDkvWkbocujg95phnyfNzBB9dhEYA", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCB-GdMjyokO9lZkKU_oIK6g", - name: "DAZN UEFA Champions League", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/ytc/AMLnZu-D8LIEj-klO1gvUWMOA987HqMBBX9nn_WJS9Ka=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: Verified, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("2 days ago"), - view_count: Some(1471667), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("In der Liga läuft es für die Reds weiterhin nicht rund. Am vergangenen Spieltag gab es gegen Arsenal eine 2:3-Niederlage, am Sonntag trifft man auf Man City. Die Champions League soll für..."), - ), - VideoItem( - id: "Ang18qz2IeQ", - name: "Satisfying Videos of Workers Doing Their Job Perfectly", - duration: Some(1186), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/Ang18qz2IeQ/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA3Cd49wYUuSEXz2MwhO2aqCMq5ZA", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/Ang18qz2IeQ/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAWQAks0vkJyJXSiQFIs9zhc2qyTg", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCYenDLnIHsoqQ6smwKXQ7Hg", - name: "#Mind Warehouse", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/ytc/AMLnZu8zB2zV3yx2fSYn5zDbv47rZCBr90wX3jW8EC6NBw=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: Verified, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("2 days ago"), - view_count: Some(173121), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("TechZone ► https://goo.gl/Gj3wZs \n\n #incrediblemoments #mindwarehouse #IncredibleMoments #CaughtOnCamera #InterestingFacts \n\nYou can endlessly watch how others work, but in this selection,..."), - ), - VideoItem( - id: "fjHN4jsJnEU", - name: "I Made 200 Players Simulate Survival Island in Minecraft...", - duration: Some(2361), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/fjHN4jsJnEU/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDwTosIfmAhNHIzU1sSXrTKT8vjNQ", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/fjHN4jsJnEU/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA4aFygGqUcm7-Hrkys95U0EAV9xA", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCqt4mmAqLmH-AwXz31URJsw", - name: "Sword4000", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/ytc/AMLnZu_q3--WCh9Oc5o4XxAVVxxUz2narAtLR2QKuEw2lQ=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: Verified, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("7 days ago"), - view_count: Some(751909), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("200 Players Simulate Survival Island Civilizations in Minecraft...\n-------------------------------------------------------------------\nI invited 200 Players to a Survival Island and let them..."), - ), - VideoItem( - id: "FI1XrdBJIUI", - name: "Epic Construction Fails | Expensive Fails Compilation | FailArmy", - duration: Some(631), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/FI1XrdBJIUI/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBe2jCnLhTsXmZQefyAe-WqImk6-g", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/FI1XrdBJIUI/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD01TnIh1pH7TObDgKzx0GupXXVzw", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCPDis9pjXuqyI7RYLJ-TTSA", - name: "FailArmy", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/PLsX6LIg5JbMJR9v7eTD7nQOPmZN16_X7h_uACw5qeWLAewiNfasZFsxQ48Dn8wZ_4McKUPZSA=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: Verified, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("2 days ago"), - view_count: Some(2226471), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("I don\'t think so, Tim. ►►► Submit your videos for the chance to be featured 🔗 https://www.failarmy.com/pages/submit-video ▼ Follow us for more fails! https://linktr.ee/failarmy\n#fails..."), - ), - VideoItem( - id: "MXdplejK8vU", - name: "Chilly autumn Jazz ☕ Smooth September Jazz & Bossa Nova for a great relaxing weekend", - duration: Some(86403), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/MXdplejK8vU/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAIOe93l-1elIK0DfMLk0f3nDWgSA", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/MXdplejK8vU/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLByGLefQ3I9p2VQ5oZDmc5G_pCTlQ", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCeGJ6v6KQt0s88hGKMfybuw", - name: "Cozy Jazz Music", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/tU7x6wNqEM_OIeU-jaaPcdhX3adNhnAY7WaGHsjEMfTLSzVHxm8VVBfaXRjDbf3y_LftGNJ83A=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: None, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("1 month ago"), - view_count: Some(148743), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("Chilly autumn Jazz ☕ Smooth September Jazz & Bossa Nova for a great relaxing weekend\nhttps://youtu.be/MXdplejK8vU\n*******************************************\nSounds available on: Jazz Bossa..."), - ), - VideoItem( - id: "Jri4_9vBFiQ", - name: "Top 100 Best Classic Rock Songs Of All Time 🔥 R.E.M, Queen, Metallica,Guns N’ Roses,Bon Jovi, U2,CCR", - duration: None, - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/Jri4_9vBFiQ/hq720_live.jpg?sqp=COjxqZoG-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA1ZqDfSLi3Mf5qvpUFSYyDIODNQw", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/Jri4_9vBFiQ/hq720_live.jpg?sqp=COjxqZoG-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDtwgV7RdHmgDlAESZqSYbuZtFrvw", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCiIWdzEVNH8okhlapR9a-xA", - name: "Rock Music", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/QIEcTVdBg9A2kE3un-IfjgTPiglDGMBbh9vMSXo2J5ZRICmunnVQkfpbMWNP8Kueac09DZrn=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(192), - is_live: true, - is_short: false, - is_upcoming: false, - short_description: Some("Top 100 Best Classic Rock Songs Of All Time 🔥 R.E.M, Queen, Metallica,Guns N’ Roses,Bon Jovi, U2,CCR\nTop 100 Best Classic Rock Songs Of All Time 🔥 R.E.M, Queen, Metallica,Guns N’..."), - ), - VideoItem( - id: "ll4d5Lt-Ie8", - name: "Relaxing Music Healing Stress, Anxiety and Depressive States Heal Mind, Body and Soul | Sleep music", - duration: Some(42896), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/ll4d5Lt-Ie8/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAqdY2bQaQ3JHl5FYoTPuZFxXRKIQ", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/ll4d5Lt-Ie8/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA6xc8r38_2ygARU0vOR4kI6ZNz5w", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCNS3dqFGBPhxHmOigehpBeg", - name: "Love YourSelf", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/fkgfEL2OtY2mhhyCV3xSOc3OsVK5ylQJmBev7XlBGE548dM6dqS2Z66YF-pdnbQOQpCuvZOlAdk=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: Verified, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("Streamed 5 months ago"), - view_count: Some(5363904), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("The study found that listening to relaxing music of the patient\'s choice resulted in \"significant pain relief and increased mobility.\" Researchers believe that music relieves pain because listening..."), - ), - VideoItem( - id: "Dx2wbKLokuQ", - name: "W. Putin: Die Sehnsucht nach dem Imperium | Mit offenen Karten | ARTE", - duration: Some(729), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/Dx2wbKLokuQ/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBHQXnaEYo6frjkJ3FFuAPkAyOCKQ", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/Dx2wbKLokuQ/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDFtWV_wy25ohVyBthH8a5HwSj6Kw", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCLLibJTCy3sXjHLVaDimnpQ", - name: "ARTEde", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/ytc/AMLnZu-1i2jxeXFISJhBbpWWv5vVX2xE5yQbjpaZZP3HPg=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: Verified, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("2 weeks ago"), - view_count: Some(539838), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("Jede Woche untersucht „Mit offenen Karten“ die politischen Kräfteverhältnisse in der ganzen Welt anhand detaillierter geografischer Karten \n\nIm Februar 2022 rechtfertigte Wladimir Putin..."), - ), - VideoItem( - id: "jfKfPfyJRdk", - name: "lofi hip hop radio - beats to relax/study to", - duration: None, - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/jfKfPfyJRdk/hq720_live.jpg?sqp=COjxqZoG-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCR-bHqcvOP14sSUsNt9PTuf3ZI4Q", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/jfKfPfyJRdk/hq720_live.jpg?sqp=COjxqZoG-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBBVEQQnwSLJFllntNgv2JAAlvSMQ", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCSJ4gkVC6NrvII8umztf0Ow", - name: "Lofi Girl", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/KNYElmLFGAOSZoBmxYGKKXhGHrT2e7Hmz3WsBerbam5uaDXFADAmT7htj3OcC-uK1O88lC9fQg=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(21262), - is_live: true, - is_short: false, - is_upcoming: false, - short_description: Some("🤗 Thank you for listening, I hope you will have a good time here\n\n💽 | Get the latest vinyl (limited edition)\n→ https://vinyl-lofirecords.com/\n\n🎼 | Listen on Spotify, Apple music..."), - ), - VideoItem( - id: "qmrzTUmZ4UU", - name: "850€ für den Verrat am System - UCS AT-AT LEGO® Star Wars 75313", - duration: Some(2043), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/qmrzTUmZ4UU/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAsI3VS-wxnt1s_zS4M_YbVrV1pAg", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/qmrzTUmZ4UU/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBYk7w0qGeW4kZchFr-tbydELUChQ", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UC_EZd3lsmxudu3IQzpTzOgw", - name: "Held der Steine Inh. Thomas Panke", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/ytc/AMLnZu8g9hFxZ2HD4P9pDsUxoAvkHwbZoTVNr3yw12i8YA=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: Verified, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("6 days ago"), - view_count: Some(600150), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("Star Wars - erschienen 2021 - 6749 Teile\n\nDieses Set bei Amazon*:\nhttps://amzn.to/3yu9dHX\n\nErwähnt im Video*:\nTassen https://bit.ly/HdSBausteinecke\nBig Boy https://bit.ly/BBLokBigBoy\nBurg..."), - ), - VideoItem( - id: "t0Q2otsqC4I", - name: "Tom & Jerry | Tom & Jerry in Full Screen | Classic Cartoon Compilation | WB Kids", - duration: Some(1298), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/t0Q2otsqC4I/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCFcrz2zM6mPUmJiCsC7c7suOzSug", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/t0Q2otsqC4I/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCVANFKKXmrdehkf7aM9issiuph5A", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UC9trsD1jCTXXtN3xIOIU8gg", - name: "WB Kids", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/ytc/AMLnZu80jIF6oehgpUILTaUbqSM5xYHWbPoc_Bz7wddxzg=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: Verified, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("10 months ago"), - view_count: Some(252381571), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("Did you know that there are only 25 classic Tom & Jerry episodes that were displayed in a widescreen CinemaScope from the 1950s? Enjoy a compilation filled with some of the best moments from..."), - ), - VideoItem( - id: "zE-a5eqvlv8", - name: "Dua Lipa, Coldplay, Martin Garrix & Kygo, The Chainsmokers Style - Feeling Me", - duration: None, - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/zE-a5eqvlv8/hq720_live.jpg?sqp=COjxqZoG-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCDyvujcpz62sEsL9Ke4ADBpXWqOA", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/zE-a5eqvlv8/hq720_live.jpg?sqp=COjxqZoG-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCyJ-QdgAD1F-DqcLKivIcalBJOEg", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCX-USfenzQlhrEJR1zD5IYw", - name: "Deep Mood.", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/8WO05hff9bGjmlyPFo_PJRMIfHEoUvN_KbTcWRVX2yqeUO3fLgkz0K4MA6W95s3_NKdNUAwjow=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(955), - is_live: true, - is_short: false, - is_upcoming: false, - short_description: Some("#Summermix #DeepHouse #DeepHouseSummerMix\nDua Lipa, Coldplay, Martin Garrix & Kygo, The Chainsmokers Style - Feeling Me\n\n🎵 All songs in this spotify playlist: https://spoti.fi/2TJ4Dyj\nSubmit..."), - ), - VideoItem( - id: "HxCcKzRAGWk", - name: "(Music for Man ) Relaxing Whiskey Blues Music - Modern Electric Guitar Blues - JAZZ & BLUES", - duration: Some(42899), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/HxCcKzRAGWk/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD5CNX5XaQAKrLpPq0nxmyUjP5yUw", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/HxCcKzRAGWk/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLANuDaGE9jI_-go6cS_nU3qCu6LRg", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCGr-rTYtP1m-r_-ncspdVQQ", - name: "JAZZ & BLUES", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/zqAxVISjt1hyzRzZKxRTvJfgEc5k2Luf-aEE55ohjUvt0QvqIRvmFBNC6UKj2TxlZrzGo8QMNA=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: None, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("Streamed 3 months ago"), - view_count: Some(3156236), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("-----------------------------------------------------------------------------------\n✔Thanks for watching! Have a nice day!\n✔Don\'t forget LIKE - SHARE - COMMENT\n#bluesmusic#slowblues#bluesrock..."), - ), - VideoItem( - id: "HlHYOdZePSE", - name: "Healing Music for Anxiety Disorders, Fears, Depression and Eliminate Negative Thoughts", - duration: None, - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/HlHYOdZePSE/hq720_live.jpg?sqp=COjxqZoG-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBeqmmnli6rVdK1k7vcHlwE3kiNaw", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/HlHYOdZePSE/hq720_live.jpg?sqp=COjxqZoG-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAk9H5lapp7KBhJCER7uRCr0fDRgg", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCqNYK5QArQRZSIR8v6_FCfA", - name: "Tranquil Music", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/YJUUVEayRZKNtFzWEiYgvxp9XOBw9-ioxiYErE0cNDTYNvkxHBCiuUXse4-a_yaYfSS-GfT-MQ=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(1585), - is_live: true, - is_short: false, - is_upcoming: false, - short_description: Some("Healing Music for Anxiety Disorders, Fears, Depression and Eliminate Negative Thoughts\n#HealingMusic #RelaxingMusic #TranquilMusic\n__________________________________\nMusic for:\nChakra healing...."), - ), - VideoItem( - id: "CJ2AH3LJeic", - name: "Coldplay Greatest Hits Full Album 2022 New Songs of Coldplay 2022", - duration: Some(7781), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/CJ2AH3LJeic/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC3A9sBlWQZmFUI9BYe5KzvATqiqw", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/CJ2AH3LJeic/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBaKSeSRdcDjEqQxrAfPaQmDJecvg", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCdK2lzwelugXGhR9SCWuEew", - name: "PLAY MUSIC", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/ytc/AMLnZu8fIT4MTyobgM_deRkvcWBMIhKpAeIGfgqqob5p=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: None, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("7 months ago"), - view_count: Some(5595965), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬\nSubscribe channel for more videos:\n🔔Subscribe: https://bit.ly/2UbIZFv\n⚡Facebook: https://bitly.com.vn/gXDsC..."), - ), - VideoItem( - id: "KJwzKxQ81iA", - name: "Handmade Candy Making Collection / 수제 사탕 만들기 모음 / Korean Candy Store", - duration: Some(3152), - thumbnail: [ - Thumbnail( - url: "https://i.ytimg.com/vi/KJwzKxQ81iA/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCtm3YNbp3mK6RjsACZuz7fs-TUYA", - width: 360, - height: 202, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/KJwzKxQ81iA/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAVzCHCFbAyBRebsCKcSDxaWq0x6A", - width: 720, - height: 404, - ), - ], - channel: Some(ChannelTag( - id: "UCdGwDjTgbSwQDZ8dYOdrplg", - name: "Soon Films 순필름", - avatar: [ - Thumbnail( - url: "https://yt3.ggpht.com/ytc/AMLnZu_eXMJm3sINr84rGTr3aiXD-OZ43aqx4yuNq9wjXw=s68-c-k-c0x00ffffff-no-rj", - width: 68, - height: 68, - ), - ], - verification: None, - subscriber_count: None, - )), - publish_date: "[date]", - publish_date_txt: Some("1 month ago"), - view_count: Some(3127238), - is_live: false, - is_short: false, - is_upcoming: false, - short_description: Some("00:00 Handmade Candy Making\n13:43 Delicate Handmade Candy Making\n28:33 Rainbow Lollipop Handmade Candy Making\n39:10 Cute Handmade Candy Making"), - ), - ], - ctoken: Some("4qmFsgKbAxIPRkV3aGF0X3RvX3dhdGNoGuoCQ0JoNmlBSk5aMjlKYjB0NmVtOWlTR3hxVFRSdlYyMHdTMkYzYjFwbFdGSm1ZMGRHYmxwV09YcGliVVozWXpKb2RtUkdPWGxhVjJSd1lqSTFhR0pDU1daWFZFSXhUbFpuZDFSV09YSldNRlp0WkRCT1JWTlZPV3BsU0U1WFZHNWtiRXhWY0ZSa1ZrSlRXbmh2ZEVGQlFteGlaMEZDVmxaTlFVRlZVa1pCUVVWQlVtdFdNMkZIUmpCWU0xSjJXRE5rYUdSSFRtOUJRVVZCUVZGRlFVRkJSVUZCVVVGQlFWRkZRVmxyUlVsQlFrbFVZMGRHYmxwV09YcGliVVozWXpKb2RtUkdPVEJpTW5Sc1ltaHZWRU5MVDNJeFpuSjROR1p2UTBaU1YwSm1RVzlrVkZWSlN6RnBTVlJEUzA5eU1XWnllRFJtYjBOR1VsZENaa0Z2WkZSVlNVc3hkbkZqZURjd1NrRm5aMW8lM0SaAhpicm93c2UtZmVlZEZFd2hhdF90b193YXRjaA%3D%3D"), - visitor_data: Some("CgtjTXNGWnhNcjdORSiq8qmaBg%3D%3D"), - endpoint: browse, -) diff --git a/src/client/trends.rs b/src/client/trends.rs index a445c91..c271b7d 100644 --- a/src/client/trends.rs +++ b/src/client/trends.rs @@ -2,38 +2,13 @@ use std::borrow::Cow; use crate::{ error::{Error, ExtractionError}, - model::{ - paginator::{ContinuationEndpoint, Paginator}, - VideoItem, - }, - param::Language, + model::VideoItem, serializer::MapResult, }; -use super::{ - response, ClientType, MapRespCtx, MapResponse, QBrowse, QBrowseParams, RustyPipeQuery, -}; +use super::{response, ClientType, MapRespCtx, MapResponse, QBrowseParams, RustyPipeQuery}; impl RustyPipeQuery { - /// Get the videos from the YouTube startpage - #[tracing::instrument(skip(self), level = "error")] - pub async fn startpage(&self) -> Result, Error> { - let context = self.get_context(ClientType::Desktop, true, None).await; - let request_body = QBrowse { - context, - browse_id: "FEwhat_to_watch", - }; - - self.execute_request::( - ClientType::Desktop, - "startpage", - "", - "browse", - &request_body, - ) - .await - } - /// Get the videos from the YouTube trending page #[tracing::instrument(skip(self), level = "error")] pub async fn trending(&self) -> Result, Error> { @@ -55,33 +30,6 @@ impl RustyPipeQuery { } } -impl MapResponse> for response::Startpage { - fn map_response( - self, - ctx: &MapRespCtx<'_>, - ) -> Result>, ExtractionError> { - let grid = self - .contents - .two_column_browse_results_renderer - .contents - .into_iter() - .next() - .ok_or(ExtractionError::InvalidData(Cow::Borrowed("no contents")))? - .tab_renderer - .content - .section_list_renderer - .contents; - - Ok(map_startpage_videos( - grid, - ctx.lang, - self.response_context - .visitor_data - .or_else(|| ctx.visitor_data.map(str::to_owned)), - )) - } -} - impl MapResponse> for response::Trending { fn map_response( self, @@ -109,26 +57,6 @@ impl MapResponse> for response::Trending { } } -fn map_startpage_videos( - videos: MapResult>, - lang: Language, - visitor_data: Option, -) -> MapResult> { - let mut mapper = response::YouTubeListMapper::::new(lang); - mapper.map_response(videos); - - MapResult { - c: Paginator::new_ext( - None, - mapper.items, - mapper.ctoken, - visitor_data, - ContinuationEndpoint::Browse, - ), - warnings: mapper.warnings, - } -} - #[cfg(test)] mod tests { use std::{fs::File, io::BufReader}; @@ -138,32 +66,11 @@ mod tests { use crate::{ client::{response, MapRespCtx, MapResponse}, - model::{paginator::Paginator, VideoItem}, + model::VideoItem, serializer::MapResult, util::tests::TESTFILES, }; - #[test] - fn map_startpage() { - let json_path = path!(*TESTFILES / "trends" / "startpage.json"); - let json_file = File::open(json_path).unwrap(); - - let startpage: response::Startpage = - serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res: MapResult> = - startpage.map_response(&MapRespCtx::test("")).unwrap(); - - assert!( - map_res.warnings.is_empty(), - "deserialization/mapping warnings: {:?}", - map_res.warnings - ); - - insta::assert_ron_snapshot!("map_startpage", map_res.c, { - ".items[].publish_date" => "[date]", - }); - } - #[rstest] #[case::base("videos")] #[case::page_header_renderer("20230501_page_header_renderer")] @@ -171,10 +78,10 @@ mod tests { let json_path = path!(*TESTFILES / "trends" / format!("trending_{name}.json")); let json_file = File::open(json_path).unwrap(); - let startpage: response::Trending = + let trending: response::Trending = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult> = - startpage.map_response(&MapRespCtx::test("")).unwrap(); + trending.map_response(&MapRespCtx::test("")).unwrap(); assert!( map_res.warnings.is_empty(), diff --git a/tests/youtube.rs b/tests/youtube.rs index 4e5f656..ca87752 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -1449,18 +1449,6 @@ async fn resolve_channel_not_found(rp: RustyPipe) { //#TRENDS -#[rstest] -#[tokio::test] -#[ignore] -async fn startpage(rp: RustyPipe) { - let startpage = rp.query().startpage().await.unwrap(); - - // The startpage requires visitor data to fetch continuations - assert!(startpage.visitor_data.is_some()); - - assert_next(startpage, rp.query(), 8, 2, true).await; -} - #[rstest] #[tokio::test] async fn trending(rp: RustyPipe) { From 6009de7bddc6031f2af17005c473c17934327c02 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 18 Aug 2024 00:51:41 +0200 Subject: [PATCH 128/347] fix: dont store cache in current dir with --report option --- cli/src/main.rs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/cli/src/main.rs b/cli/src/main.rs index ae173c7..be5ae6a 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -19,6 +19,7 @@ use rustypipe::{ Verification, YouTubeItem, }, param::{search_filter, ChannelVideoTab, Country, Language, StreamFilter}, + report::FileReporter, }; use rustypipe_downloader::{ DownloadError, DownloadQuery, DownloadVideo, Downloader, DownloaderBuilder, @@ -535,16 +536,18 @@ async fn run() -> anyhow::Result<()> { .with_writer(ProgWriter(multi.clone())) .init(); + 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"); + let mut rp = RustyPipe::builder() + .storage_dir(storage_dir) .visitor_data_opt(cli.vdata) .timeout(Duration::from_secs(15)); if cli.report { - rp = rp.report(); - } else { - 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"); - rp = rp.storage_dir(storage_dir); + rp = rp + .report() + .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")); From 17933315d947f76d5fe1aa52abf7ea24c3ce6381 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 18 Aug 2024 01:58:56 +0200 Subject: [PATCH 129/347] chore: change repo URL to Codeberg --- CHANGELOG.md | 72 ++++++++++++++++++++--------------------- Cargo.toml | 2 +- README.md | 4 +-- cli/CHANGELOG.md | 24 +++++++------- cli/README.md | 4 +-- cliff.toml | 2 +- downloader/CHANGELOG.md | 20 ++++++------ downloader/README.md | 4 +-- 8 files changed, 66 insertions(+), 66 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7201d5f..c3848ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,84 +3,84 @@ All notable changes to this project will be documented in this file. -## [v0.2.1](https://code.thetadev.de/ThetaDev/rustypipe/compare/rustypipe/v0.2.0..rustypipe/v0.2.1) - 2024-07-01 +## [v0.2.1](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe/v0.2.0..rustypipe/v0.2.1) - 2024-07-01 ### 🐛 Bug Fixes -- *(deps)* Update quick-xml to v0.35.0 - ([298e4de](https://code.thetadev.de/ThetaDev/rustypipe/commit/298e4def93d1595fba91be103f014aa645a08937)) +- *(deps)* Update quick-xml to v0.35.0 - ([298e4de](https://codeberg.org/ThetaDev/rustypipe/commit/298e4def93d1595fba91be103f014aa645a08937)) -## [v0.2.0](https://code.thetadev.de/ThetaDev/rustypipe/compare/rustypipe/v0.1.3..rustypipe/v0.2.0) - 2024-06-27 +## [v0.2.0](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe/v0.1.3..rustypipe/v0.2.0) - 2024-06-27 ### 🚀 Features -- Add text formatting (bold/italic/strikethrough) - ([b8825f9](https://code.thetadev.de/ThetaDev/rustypipe/commit/b8825f9199365c873a4f0edd98a435e986b8daa2)) -- Prefix chip-style web links (social media) with the service name - ([6c41ef2](https://code.thetadev.de/ThetaDev/rustypipe/commit/6c41ef2fb2531e10a12c271e2d48504510a3b0bf)) -- Make get_visitor_data() public - ([da1d1bd](https://code.thetadev.de/ThetaDev/rustypipe/commit/da1d1bd2a0b214da10436ae221c90a0f88697b9a)) -- Add UnavailabilityReason: IpBan - ([401d4e8](https://code.thetadev.de/ThetaDev/rustypipe/commit/401d4e8255b1e86444319fed6d114dfbd0f80bbd)) -- Add YtEntity trait - ([792e3b3](https://code.thetadev.de/ThetaDev/rustypipe/commit/792e3b31e0101087a167935baad39a2e3b4296d0)) +- Add text formatting (bold/italic/strikethrough) - ([b8825f9](https://codeberg.org/ThetaDev/rustypipe/commit/b8825f9199365c873a4f0edd98a435e986b8daa2)) +- Prefix chip-style web links (social media) with the service name - ([6c41ef2](https://codeberg.org/ThetaDev/rustypipe/commit/6c41ef2fb2531e10a12c271e2d48504510a3b0bf)) +- Make get_visitor_data() public - ([da1d1bd](https://codeberg.org/ThetaDev/rustypipe/commit/da1d1bd2a0b214da10436ae221c90a0f88697b9a)) +- Add UnavailabilityReason: IpBan - ([401d4e8](https://codeberg.org/ThetaDev/rustypipe/commit/401d4e8255b1e86444319fed6d114dfbd0f80bbd)) +- Add YtEntity trait - ([792e3b3](https://codeberg.org/ThetaDev/rustypipe/commit/792e3b31e0101087a167935baad39a2e3b4296d0)) ### 🐛 Bug Fixes -- Remove Innertube API keys, update android player params - ([a8fb337](https://code.thetadev.de/ThetaDev/rustypipe/commit/a8fb337fae9cb0112e0152f9a0a19ebae49c2a4d)) -- Parsing error when no `music_related` content available - ([8fbd6b9](https://code.thetadev.de/ThetaDev/rustypipe/commit/8fbd6b95b6f01108b46f53fe60a56b0c561e40c1)) -- Parsing audiobook type in European Portuguese - ([041ce2d](https://code.thetadev.de/ThetaDev/rustypipe/commit/041ce2d08f6021c88e8890034f551f7e01b2f012)) -- Renovate ci token - ([e0759eb](https://code.thetadev.de/ThetaDev/rustypipe/commit/e0759ebce32a5520245bb2c0cb920734b04ee7dc)) +- Remove Innertube API keys, update android player params - ([a8fb337](https://codeberg.org/ThetaDev/rustypipe/commit/a8fb337fae9cb0112e0152f9a0a19ebae49c2a4d)) +- Parsing error when no `music_related` content available - ([8fbd6b9](https://codeberg.org/ThetaDev/rustypipe/commit/8fbd6b95b6f01108b46f53fe60a56b0c561e40c1)) +- Parsing audiobook type in European Portuguese - ([041ce2d](https://codeberg.org/ThetaDev/rustypipe/commit/041ce2d08f6021c88e8890034f551f7e01b2f012)) +- Renovate ci token - ([e0759eb](https://codeberg.org/ThetaDev/rustypipe/commit/e0759ebce32a5520245bb2c0cb920734b04ee7dc)) ### 🚜 Refactor -- [**breaking**] Rename VideoItem/VideoPlayerDetails.length to duration for consistency - ([94e8d24](https://code.thetadev.de/ThetaDev/rustypipe/commit/94e8d24c6848b8bfca70dd03a7d89547ba9d6051)) +- [**breaking**] Rename VideoItem/VideoPlayerDetails.length to duration for consistency - ([94e8d24](https://codeberg.org/ThetaDev/rustypipe/commit/94e8d24c6848b8bfca70dd03a7d89547ba9d6051)) ### 📚 Documentation -- Add logo - ([6646078](https://code.thetadev.de/ThetaDev/rustypipe/commit/66460789449be0d5984cbdb6ec372e69323b7a88)) +- Add logo - ([6646078](https://codeberg.org/ThetaDev/rustypipe/commit/66460789449be0d5984cbdb6ec372e69323b7a88)) ### ⚙️ Miscellaneous Tasks -- Changelog: fix incorrect version URLs - ([97b6f07](https://code.thetadev.de/ThetaDev/rustypipe/commit/97b6f07399e80e00a6c015d013e744568be125dd)) -- Update rstest to v0.19.0 - ([50fd1f0](https://code.thetadev.de/ThetaDev/rustypipe/commit/50fd1f08caf39c1298654e06059cc393543e925b)) -- Introduce MSRV - ([5dbb288](https://code.thetadev.de/ThetaDev/rustypipe/commit/5dbb288a496d53a299effa2026f5258af7b1f176)) -- Fix clippy lints - ([45b9f2a](https://code.thetadev.de/ThetaDev/rustypipe/commit/45b9f2a627b4e7075ba0b1c5f16efcc19aef7922)) -- Vscode: enable rss feature by default - ([e75ffbb](https://code.thetadev.de/ThetaDev/rustypipe/commit/e75ffbb5da6198086385ea96383ab9d0791592a5)) -- Configure Renovate (#3) - ([44c2deb](https://code.thetadev.de/ThetaDev/rustypipe/commit/44c2debea61f70c24ad6d827987e85e2132ed3d1)) -- *(deps)* Update rust crate tokio to 1.20.4 [security] (#4) - ([ce3ec34](https://code.thetadev.de/ThetaDev/rustypipe/commit/ce3ec34337b8acac41410ea39264aab7423d5801)) -- *(deps)* Update rust crate quick-xml to 0.34.0 (#5) - ([1e8a1af](https://code.thetadev.de/ThetaDev/rustypipe/commit/1e8a1af08c873cee7feadf63c2eff62753a78f64)) -- *(deps)* Update rust crate rstest to 0.21.0 (#7) - ([c3af918](https://code.thetadev.de/ThetaDev/rustypipe/commit/c3af918ba53c6230c0e4aef822a0cb2cf120bf3f)) +- Changelog: fix incorrect version URLs - ([97b6f07](https://codeberg.org/ThetaDev/rustypipe/commit/97b6f07399e80e00a6c015d013e744568be125dd)) +- Update rstest to v0.19.0 - ([50fd1f0](https://codeberg.org/ThetaDev/rustypipe/commit/50fd1f08caf39c1298654e06059cc393543e925b)) +- Introduce MSRV - ([5dbb288](https://codeberg.org/ThetaDev/rustypipe/commit/5dbb288a496d53a299effa2026f5258af7b1f176)) +- Fix clippy lints - ([45b9f2a](https://codeberg.org/ThetaDev/rustypipe/commit/45b9f2a627b4e7075ba0b1c5f16efcc19aef7922)) +- Vscode: enable rss feature by default - ([e75ffbb](https://codeberg.org/ThetaDev/rustypipe/commit/e75ffbb5da6198086385ea96383ab9d0791592a5)) +- Configure Renovate (#3) - ([44c2deb](https://codeberg.org/ThetaDev/rustypipe/commit/44c2debea61f70c24ad6d827987e85e2132ed3d1)) +- *(deps)* Update rust crate tokio to 1.20.4 [security] (#4) - ([ce3ec34](https://codeberg.org/ThetaDev/rustypipe/commit/ce3ec34337b8acac41410ea39264aab7423d5801)) +- *(deps)* Update rust crate quick-xml to 0.34.0 (#5) - ([1e8a1af](https://codeberg.org/ThetaDev/rustypipe/commit/1e8a1af08c873cee7feadf63c2eff62753a78f64)) +- *(deps)* Update rust crate rstest to 0.21.0 (#7) - ([c3af918](https://codeberg.org/ThetaDev/rustypipe/commit/c3af918ba53c6230c0e4aef822a0cb2cf120bf3f)) -## [v0.1.3](https://code.thetadev.de/ThetaDev/rustypipe/compare/rustypipe/v0.1.2..rustypipe/v0.1.3) - 2024-04-01 +## [v0.1.3](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe/v0.1.2..rustypipe/v0.1.3) - 2024-04-01 ### 🐛 Bug Fixes -- Parse new comment model (A/B#14 frameworkUpdates) - ([b0331f7](https://code.thetadev.de/ThetaDev/rustypipe/commit/b0331f7250f5d7d61a45209150739d2cb08b4280)) +- Parse new comment model (A/B#14 frameworkUpdates) - ([b0331f7](https://codeberg.org/ThetaDev/rustypipe/commit/b0331f7250f5d7d61a45209150739d2cb08b4280)) ### ◀️ Revert -- "fix: improve VecLogErr messages" (leads to infinite loop) - ([348c852](https://code.thetadev.de/ThetaDev/rustypipe/commit/348c8523fe847f2f6ce98317375a7ab65e778ed2)) +- "fix: improve VecLogErr messages" (leads to infinite loop) - ([348c852](https://codeberg.org/ThetaDev/rustypipe/commit/348c8523fe847f2f6ce98317375a7ab65e778ed2)) -## [v0.1.2](https://code.thetadev.de/ThetaDev/rustypipe/compare/rustypipe/v0.1.1..rustypipe/v0.1.2) - 2024-03-26 +## [v0.1.2](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe/v0.1.1..rustypipe/v0.1.2) - 2024-03-26 ### 🐛 Bug Fixes -- Correctly parse subscriber count with new channel header - ([180dd98](https://code.thetadev.de/ThetaDev/rustypipe/commit/180dd9891a14b4da9f130a73d73aecc3822fce2f)) +- Correctly parse subscriber count with new channel header - ([180dd98](https://codeberg.org/ThetaDev/rustypipe/commit/180dd9891a14b4da9f130a73d73aecc3822fce2f)) -## [v0.1.1](https://code.thetadev.de/ThetaDev/rustypipe/compare/rustypipe/v0.1.0..rustypipe/v0.1.1) - 2024-03-26 +## [v0.1.1](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe/v0.1.0..rustypipe/v0.1.1) - 2024-03-26 ### 🐛 Bug Fixes -- Specify internal dependency versions - ([6598a23](https://code.thetadev.de/ThetaDev/rustypipe/commit/6598a23d0699e6fe298275a67e0146a19c422c88)) -- Move package attributes to workspace - ([e4b204e](https://code.thetadev.de/ThetaDev/rustypipe/commit/e4b204eae65f450471be0890b0198d2f30714b3b)) -- Parsing music details with video description tab - ([a81c3e8](https://code.thetadev.de/ThetaDev/rustypipe/commit/a81c3e83366fdf72d01dd3ee00fb2e831f7aaa26)) +- Specify internal dependency versions - ([6598a23](https://codeberg.org/ThetaDev/rustypipe/commit/6598a23d0699e6fe298275a67e0146a19c422c88)) +- Move package attributes to workspace - ([e4b204e](https://codeberg.org/ThetaDev/rustypipe/commit/e4b204eae65f450471be0890b0198d2f30714b3b)) +- Parsing music details with video description tab - ([a81c3e8](https://codeberg.org/ThetaDev/rustypipe/commit/a81c3e83366fdf72d01dd3ee00fb2e831f7aaa26)) ### ⚙️ Miscellaneous Tasks -- Changes to release command - ([0bcced1](https://code.thetadev.de/ThetaDev/rustypipe/commit/0bcced1db377198a54c9c7d03b8d038125a2bfe4)) -- Update user agent (FF 115.0) - ([be314d5](https://code.thetadev.de/ThetaDev/rustypipe/commit/be314d57ea1d99bfdc80649351ee3e7845541238)) -- Fix release script (unquoted include paths) - ([78ba9cb](https://code.thetadev.de/ThetaDev/rustypipe/commit/78ba9cb34c6bba3aba177583b242d3f76ea9847d)) +- Changes to release command - ([0bcced1](https://codeberg.org/ThetaDev/rustypipe/commit/0bcced1db377198a54c9c7d03b8d038125a2bfe4)) +- Update user agent (FF 115.0) - ([be314d5](https://codeberg.org/ThetaDev/rustypipe/commit/be314d57ea1d99bfdc80649351ee3e7845541238)) +- Fix release script (unquoted include paths) - ([78ba9cb](https://codeberg.org/ThetaDev/rustypipe/commit/78ba9cb34c6bba3aba177583b242d3f76ea9847d)) -## [v0.1.0](https://code.thetadev.de/ThetaDev/rustypipe/commits/tag/rustypipe/v0.1.0) - 2024-03-22 +## [v0.1.0](https://codeberg.org/ThetaDev/rustypipe/commits/tag/rustypipe/v0.1.0) - 2024-03-22 Initial release diff --git a/Cargo.toml b/Cargo.toml index 7da8952..966b93d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,7 +19,7 @@ members = [".", "codegen", "downloader", "cli"] edition = "2021" authors = ["ThetaDev "] license = "GPL-3.0" -repository = "https://code.thetadev.de/ThetaDev/rustypipe" +repository = "https://codeberg.org/ThetaDev/rustypipe" keywords = ["youtube", "video", "music"] categories = ["api-bindings", "multimedia"] diff --git a/README.md b/README.md index 9b5646c..8a67d48 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -# ![RustyPipe](https://code.thetadev.de/ThetaDev/rustypipe/raw/branch/main/notes/logo.svg) +# ![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/MIT) -[![CI status](https://code.thetadev.de/ThetaDev/rustypipe/actions/workflows/ci.yaml/badge.svg?style=flat&label=CI)](https://code.thetadev.de/ThetaDev/rustypipe/actions/?workflow=ci.yaml) +[![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 (Innertube), inspired by [NewPipe](https://github.com/TeamNewPipe/NewPipeExtractor). diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md index 4d0aee1..018c2bb 100644 --- a/cli/CHANGELOG.md +++ b/cli/CHANGELOG.md @@ -3,32 +3,32 @@ All notable changes to this project will be documented in this file. -## [v0.1.1](https://code.thetadev.de/ThetaDev/rustypipe/compare/rustypipe-cli/v0.1.0..rustypipe-cli/v0.1.1) - 2024-06-27 +## [v0.1.1](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-cli/v0.1.0..rustypipe-cli/v0.1.1) - 2024-06-27 ### 🚀 Features -- CLI: setting player type - ([16e0e28](https://code.thetadev.de/ThetaDev/rustypipe/commit/16e0e28c4866bb69d8e4c06eef94176f329a1c27)) +- CLI: setting player type - ([16e0e28](https://codeberg.org/ThetaDev/rustypipe/commit/16e0e28c4866bb69d8e4c06eef94176f329a1c27)) ### 🐛 Bug Fixes -- Clippy warning - ([8420c2f](https://code.thetadev.de/ThetaDev/rustypipe/commit/8420c2f8dbd2791b524ceca2e19fb68e5b918bfa)) +- Clippy warning - ([8420c2f](https://codeberg.org/ThetaDev/rustypipe/commit/8420c2f8dbd2791b524ceca2e19fb68e5b918bfa)) ### 📚 Documentation -- Add logo - ([6646078](https://code.thetadev.de/ThetaDev/rustypipe/commit/66460789449be0d5984cbdb6ec372e69323b7a88)) +- Add logo - ([6646078](https://codeberg.org/ThetaDev/rustypipe/commit/66460789449be0d5984cbdb6ec372e69323b7a88)) ### ⚙️ Miscellaneous Tasks -- Changelog: fix incorrect version URLs - ([97b6f07](https://code.thetadev.de/ThetaDev/rustypipe/commit/97b6f07399e80e00a6c015d013e744568be125dd)) -- Update rstest to v0.19.0 - ([50fd1f0](https://code.thetadev.de/ThetaDev/rustypipe/commit/50fd1f08caf39c1298654e06059cc393543e925b)) -- Introduce MSRV - ([5dbb288](https://code.thetadev.de/ThetaDev/rustypipe/commit/5dbb288a496d53a299effa2026f5258af7b1f176)) -- Fix clippy lints - ([45b9f2a](https://code.thetadev.de/ThetaDev/rustypipe/commit/45b9f2a627b4e7075ba0b1c5f16efcc19aef7922)) -- *(deps)* Update rust crate tokio to 1.20.4 [security] (#4) - ([ce3ec34](https://code.thetadev.de/ThetaDev/rustypipe/commit/ce3ec34337b8acac41410ea39264aab7423d5801)) -- *(deps)* Update rust crate quick-xml to 0.34.0 (#5) - ([1e8a1af](https://code.thetadev.de/ThetaDev/rustypipe/commit/1e8a1af08c873cee7feadf63c2eff62753a78f64)) -- *(deps)* Update rust crate rstest to 0.21.0 (#7) - ([c3af918](https://code.thetadev.de/ThetaDev/rustypipe/commit/c3af918ba53c6230c0e4aef822a0cb2cf120bf3f)) +- Changelog: fix incorrect version URLs - ([97b6f07](https://codeberg.org/ThetaDev/rustypipe/commit/97b6f07399e80e00a6c015d013e744568be125dd)) +- Update rstest to v0.19.0 - ([50fd1f0](https://codeberg.org/ThetaDev/rustypipe/commit/50fd1f08caf39c1298654e06059cc393543e925b)) +- Introduce MSRV - ([5dbb288](https://codeberg.org/ThetaDev/rustypipe/commit/5dbb288a496d53a299effa2026f5258af7b1f176)) +- Fix clippy lints - ([45b9f2a](https://codeberg.org/ThetaDev/rustypipe/commit/45b9f2a627b4e7075ba0b1c5f16efcc19aef7922)) +- *(deps)* Update rust crate tokio to 1.20.4 [security] (#4) - ([ce3ec34](https://codeberg.org/ThetaDev/rustypipe/commit/ce3ec34337b8acac41410ea39264aab7423d5801)) +- *(deps)* Update rust crate quick-xml to 0.34.0 (#5) - ([1e8a1af](https://codeberg.org/ThetaDev/rustypipe/commit/1e8a1af08c873cee7feadf63c2eff62753a78f64)) +- *(deps)* Update rust crate rstest to 0.21.0 (#7) - ([c3af918](https://codeberg.org/ThetaDev/rustypipe/commit/c3af918ba53c6230c0e4aef822a0cb2cf120bf3f)) - Update rustypipe to 0.2.0 -## [v0.1.0](https://code.thetadev.de/ThetaDev/rustypipe/commits/tag/rustypipe-cli/v0.1.0) - 2024-03-22 +## [v0.1.0](https://codeberg.org/ThetaDev/rustypipe/commits/tag/rustypipe-cli/v0.1.0) - 2024-03-22 Initial release diff --git a/cli/README.md b/cli/README.md index 4cb7d8a..1f7233e 100644 --- a/cli/README.md +++ b/cli/README.md @@ -1,8 +1,8 @@ -# ![RustyPipe](https://code.thetadev.de/ThetaDev/rustypipe/raw/branch/main/notes/logo.svg) CLI +# ![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/MIT) -[![CI status](https://code.thetadev.de/ThetaDev/rustypipe/actions/workflows/ci.yaml/badge.svg?style=flat&label=CI)](https://code.thetadev.de/ThetaDev/rustypipe/actions/?workflow=ci.yaml) +[![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 access most of the features of the RustyPipe crate: getting data from YouTube and diff --git a/cliff.toml b/cliff.toml index 9f0f6cf..b84a719 100644 --- a/cliff.toml +++ b/cliff.toml @@ -14,7 +14,7 @@ All notable changes to this project will be documented in this file.\n # template for the changelog body # https://keats.github.io/tera/docs/#introduction body = """ -{% set repo_url = "https://code.thetadev.de/ThetaDev/rustypipe" %}\ +{% set repo_url = "https://codeberg.org/ThetaDev/rustypipe" %}\ {% if version %}\ {%set vname = version | split(pat="/") | last %} {%if previous.version %}\ diff --git a/downloader/CHANGELOG.md b/downloader/CHANGELOG.md index 9912915..c5869ac 100644 --- a/downloader/CHANGELOG.md +++ b/downloader/CHANGELOG.md @@ -3,24 +3,24 @@ All notable changes to this project will be documented in this file. -## [v0.1.1](https://code.thetadev.de/ThetaDev/rustypipe/compare/rustypipe-downloader/v0.1.0..rustypipe-downloader/v0.1.1) - 2024-06-27 +## [v0.1.1](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-downloader/v0.1.0..rustypipe-downloader/v0.1.1) - 2024-06-27 ### 📚 Documentation -- Add logo - ([6646078](https://code.thetadev.de/ThetaDev/rustypipe/commit/66460789449be0d5984cbdb6ec372e69323b7a88)) +- Add logo - ([6646078](https://codeberg.org/ThetaDev/rustypipe/commit/66460789449be0d5984cbdb6ec372e69323b7a88)) ### ⚙️ Miscellaneous Tasks -- Changelog: fix incorrect version URLs - ([97b6f07](https://code.thetadev.de/ThetaDev/rustypipe/commit/97b6f07399e80e00a6c015d013e744568be125dd)) -- Update rstest to v0.19.0 - ([50fd1f0](https://code.thetadev.de/ThetaDev/rustypipe/commit/50fd1f08caf39c1298654e06059cc393543e925b)) -- Introduce MSRV - ([5dbb288](https://code.thetadev.de/ThetaDev/rustypipe/commit/5dbb288a496d53a299effa2026f5258af7b1f176)) -- Fix clippy lints - ([45b9f2a](https://code.thetadev.de/ThetaDev/rustypipe/commit/45b9f2a627b4e7075ba0b1c5f16efcc19aef7922)) -- *(deps)* Update rust crate tokio to 1.20.4 [security] (#4) - ([ce3ec34](https://code.thetadev.de/ThetaDev/rustypipe/commit/ce3ec34337b8acac41410ea39264aab7423d5801)) -- *(deps)* Update rust crate quick-xml to 0.34.0 (#5) - ([1e8a1af](https://code.thetadev.de/ThetaDev/rustypipe/commit/1e8a1af08c873cee7feadf63c2eff62753a78f64)) -- *(deps)* Update rust crate rstest to 0.21.0 (#7) - ([c3af918](https://code.thetadev.de/ThetaDev/rustypipe/commit/c3af918ba53c6230c0e4aef822a0cb2cf120bf3f)) +- Changelog: fix incorrect version URLs - ([97b6f07](https://codeberg.org/ThetaDev/rustypipe/commit/97b6f07399e80e00a6c015d013e744568be125dd)) +- Update rstest to v0.19.0 - ([50fd1f0](https://codeberg.org/ThetaDev/rustypipe/commit/50fd1f08caf39c1298654e06059cc393543e925b)) +- Introduce MSRV - ([5dbb288](https://codeberg.org/ThetaDev/rustypipe/commit/5dbb288a496d53a299effa2026f5258af7b1f176)) +- Fix clippy lints - ([45b9f2a](https://codeberg.org/ThetaDev/rustypipe/commit/45b9f2a627b4e7075ba0b1c5f16efcc19aef7922)) +- *(deps)* Update rust crate tokio to 1.20.4 [security] (#4) - ([ce3ec34](https://codeberg.org/ThetaDev/rustypipe/commit/ce3ec34337b8acac41410ea39264aab7423d5801)) +- *(deps)* Update rust crate quick-xml to 0.34.0 (#5) - ([1e8a1af](https://codeberg.org/ThetaDev/rustypipe/commit/1e8a1af08c873cee7feadf63c2eff62753a78f64)) +- *(deps)* Update rust crate rstest to 0.21.0 (#7) - ([c3af918](https://codeberg.org/ThetaDev/rustypipe/commit/c3af918ba53c6230c0e4aef822a0cb2cf120bf3f)) - Update rustypipe to 0.2.0 -## [v0.1.0](https://code.thetadev.de/ThetaDev/rustypipe/commits/tag/rustypipe-downloader/v0.1.0) - 2024-03-22 +## [v0.1.0](https://codeberg.org/ThetaDev/rustypipe/commits/tag/rustypipe-downloader/v0.1.0) - 2024-03-22 Initial release diff --git a/downloader/README.md b/downloader/README.md index 05ec1a8..a774405 100644 --- a/downloader/README.md +++ b/downloader/README.md @@ -1,8 +1,8 @@ -# ![RustyPipe](https://code.thetadev.de/ThetaDev/rustypipe/raw/branch/main/notes/logo.svg) Downloader +# ![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/MIT) -[![CI status](https://code.thetadev.de/ThetaDev/rustypipe/actions/workflows/ci.yaml/badge.svg?style=flat&label=CI)](https://code.thetadev.de/ThetaDev/rustypipe/actions/?workflow=ci.yaml) +[![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 downloading of video and audio files. From 7132cf1637ff39cadd7f310c0998223081fe0933 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 18 Aug 2024 02:37:55 +0200 Subject: [PATCH 130/347] doc: add square logo --- notes/logo.png | Bin 0 -> 3634 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 notes/logo.png diff --git a/notes/logo.png b/notes/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..0cf2448b73787878778b273e14a84a31f952c502 GIT binary patch literal 3634 zcmV-24$bk2P)pF8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H14Zlf5 zK~#90?VNvfRL6D4Klkk}l0Y(590zMxSQbBGx1q(sxIHD*2}LUi!TCV~$H^Z~YS-At zb_iM#m!Hu@MFFL(=ZM z{X;)kA?GvF+v+un-_g;P9%$u2eXGT<&|Hts*zg&jvtAn2tl{BkQf0jM(%pv)%fg9&dF6in$_XO~%Z0c2XXF*`hg8O$K=**^GH(2>J2GG@Y zZWCE14?vK4o!w`fvaQ$EZa!;Zebx9s5V2p$r48}P4K+_6%c+fYCf0T0@Dj4;$xQc|~WcXu73#P~bPGy9@TO+TD7=)DQ4TV12lJQL$eiwN)wrL=`_5 z?D}xzetI54Q989S2gi^SJJU~Me^Lt|e|JCTNPs8(T}i&z}xyW(R@&8~PGK;5T9qsN@*UV#{z3T zFGd75R+oL;R_htSXQC8H0sjX2B*@pnefZ+@1%h9D`tWfR@PuMbHJYud6{+p9x8%t&A~9Et%|j;clO zQPoa?y8zQD$N^OAN=^m0E#9-I+pvrynx;<=oGv}SP~c%;vSG281ez4}gKTz`RGy8r z#AgrnXh;I1RiV!!{M5yP7b7i+8GRrB_2J;}+Q^p`?j+-QPaZ2ub}d=5`<)IK-NQoT zjPXTUY_Cz}s~JSjfc!|%O*OIjz8;rEqE*3v2WC3yR?!8u&51#r3?i^@(Ueie?d|(< zev_(}^~bfl+FrW!LEWs%!jeGuEvmYhi#7O^D)-d3#2+5w{tRa$9sx@W#H&i#5>J+i{)RX|30InIoo4fJyS9 ztmzve?%#Q!6Q$NgOt9tlzKedsRQbGfDSjS_C4MqO9|xkH(WE#;r98}JDafksVItBJ z|Cu7syNKP=_anW=jdm)ba8rFac;`r*%YZS!Dw4d)1X-8^{hm-?6}m&*Q=|P{r4x9{ zrBIY1t@e8KiT&qoxp!K zvLt-P9&P_e?7SqKWRLW9BOe4vj(NG=wv>#q^NRwWQ_blP>`z{6yq zF~GEmD#E&s?!-#B$nB7rC}Xi*KOF$C1IuXDU7l@Z!1hJrJK7%nYv2K#(uD(Y-WI~k zo8vF^-54~L>zRJZk3lDxyQ9w)C6l*!4icCX*lUIzC`&n_hdkN21od;S9wWBzNnndZ+c5viYDwn9Yy3ioVQs$*ti)T&i#dvMBo4IGFBLLIGaK|R{-31M{t z0T;;>q7Ox4$5&^{*<_x1sA_FXVznjqY``sr_>O1tMvfrLX0GK$u9X>{O7@WPj*Ha0 zwlFW!oOr}3;pLi@Th@I1c?+xBMeKx|o*d#PgkMl8+n6NAVSRD&*%k>eZ;m&+=`mVd zl(M?rQjV9CK(wl5Ojk@m7WLB4@|6SYg)%L+ZGDKFD7rgs){0rwWDz}jm{6MvC; z+1?OnoICylN85u>39=Hi@0)dY?1_8@M!SG-QNZ;a(k9PiK;ZCiueu7e&zArzjKGn5v5Orurr;thQ_CpIp@{X38Uw&YaVToJxySfrn;^qy#} zQwf1{h~8DxocO2VIB9?b2rFsT?K#r#h~6RC(r8uiWf5s|=?D6`O7Ddo^S!F<$q9K% z2T+Hf-{;WfAuk<~mc$Pfec4Gy;9TEtEA6Ip&R4iO8V)WPv4`m>woY2Ikrggt9VyGVGX2H?0++U&IHBUa#7kkc+VVFhPDR6^nGMyU4eP^K zd&ux*2kXOEPiUwPZCFDyma zSmj|sz+Oc+TZ*M3n;a#*ZgYSHW}Oe zvS*L~mw@w|83~kfgtdMyv^7+hf5mI@`f%t==ly}Bpbg}XJb_bYsBm8<-3qtY#^PH|{AdW5-=?Tj z;N#noSp43h9&BGEzP6L0PpatMz$Y0Pl|QWTpqEXNp2m2!E%C>jrcZyOqxAR`ln>it zok$i~udLW{q}{EojUE)o6tj7!V2e(2I(SDk^Kk&ZFL(#AW6k`EQh%pC)lz#L!kfjX z%JzF5+;-?g3jhEB07*qoM6N<$ Ef>r7YU;qFB literal 0 HcmV?d00001 From a5a50c84b7e51185b3a38899a59bdd3f6aeb0ed4 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 18 Aug 2024 02:42:33 +0200 Subject: [PATCH 131/347] ci: publish on crates.io --- .forgejo/workflows/release.yaml | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/.forgejo/workflows/release.yaml b/.forgejo/workflows/release.yaml index e53c7c0..95d30cf 100644 --- a/.forgejo/workflows/release.yaml +++ b/.forgejo/workflows/release.yaml @@ -24,13 +24,8 @@ jobs: echo END_OF_FILE } >> "$GITHUB_ENV" - - name: 📤 Publish crate on code.thetadev.de - run: | - mkdir -p ~/.cargo - printf '\n\n[registries.thetadev]\nindex = "https://code.thetadev.de/ThetaDev/_cargo-index.git"\ntoken = "Bearer ${{ secrets.FORGEJO_CI_TOKEN }}"\n' >> ~/.cargo/config.toml - sed -i "s/^rustypipe.*=\s*{/\0 registry = \"thetadev\",/g" Cargo.toml - cargo publish --registry thetadev --allow-dirty --package "${{ env.CRATE }}" - git restore Cargo.toml + - name: 📤 Publish crate on crates.io + run: cargo publish --token ${{ secrets.CARGO_TOKEN }} --package "${{ env.CRATE }}" - name: 🎉 Publish release uses: https://gitea.com/actions/release-action@main From 70c6f8c3b97baefd316fff90cc727524516657af Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 18 Aug 2024 02:58:45 +0200 Subject: [PATCH 132/347] chore: adjust dependency versions --- Cargo.toml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 966b93d..f2fdcf3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,38 +30,38 @@ 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" -thiserror = "1.0.36" -url = "2.2.2" +thiserror = "1.0.0" +url = "2.2.0" reqwest = { version = "0.12.0", default-features = false } -tokio = "1.20.4" +tokio = "1.20.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0.82" serde_with = { version = "3.0.0", default-features = false, features = [ "alloc", "macros", ] } -serde_plain = "1.0.1" -rand = "0.8.5" -time = { version = "0.3.15", features = [ +serde_plain = "1.0.0" +rand = "0.8.0" +time = { version = "0.3.10", features = [ "macros", "serde-human-readable", "serde-well-known", ] } futures = "0.3.21" -ress = "0.11.4" -phf = "0.11.1" -phf_codegen = "0.11.1" +ress = "0.11.0" +phf = "0.11.0" +phf_codegen = "0.11.0" base64 = "0.22.0" -urlencoding = "2.1.2" +urlencoding = "2.1.0" quick-xml = { version = "0.36.0", features = ["serialize"] } -tracing = { version = "0.1.37", features = ["log"] } +tracing = { version = "0.1.0", features = ["log"] } # CLI indicatif = "0.17.0" anyhow = "1.0" -clap = { version = "4.0.29", features = ["derive"] } +clap = { version = "4.0.0", features = ["derive"] } tracing-subscriber = { version = "0.3.17", features = ["env-filter"] } -serde_yaml = "0.9.19" +serde_yaml = "0.9.0" dirs = "5.0.0" filenamify = "0.1.0" From d933f1b2fda175c9941e6a270ca482829f386bf7 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 18 Aug 2024 03:04:09 +0200 Subject: [PATCH 133/347] chore(release): release rustypipe v0.3.0 --- CHANGELOG.md | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 4 ++-- 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c3848ba..81c1f30 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,55 @@ All notable changes to this project will be documented in this file. +## [v0.3.0](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe/v0.2.1..rustypipe/v0.3.0) - 2024-08-18 + +### 🚀 Features + +- Add client_type to VideoPlayer, simplify MapResponse trait - ([90540c6](https://codeberg.org/ThetaDev/rustypipe/commit/90540c6aaad658d4ce24ed41450d8509bac711bd)) +- Add http_client method to RustyPipe and user_agent method to RustyPipeQuery - ([3d6de53](https://codeberg.org/ThetaDev/rustypipe/commit/3d6de5354599ea691351e0ca161154e53f2e0b41)) +- Add channel_id and channel_name getters to YtEntity trait - ([bbbe9b4](https://codeberg.org/ThetaDev/rustypipe/commit/bbbe9b4b322c6b5b30764772e282c6823aeea524)) +- [**breaking**] Make StreamFilter use Vec internally, remove lifetime - ([821984b](https://codeberg.org/ThetaDev/rustypipe/commit/821984bbd51d65cf96b1d14087417ef968eaf9b2)) +- Overhauled downloader - ([11a0038](https://codeberg.org/ThetaDev/rustypipe/commit/11a00383502917cd98245c3da349107289ba3aa9)) +- Add player_from_clients function to specify client order - ([72b5dfe](https://codeberg.org/ThetaDev/rustypipe/commit/72b5dfec69ec25445b94cb0976662416a5df56ef)) +- [**breaking**] Add TV client - ([e608811](https://codeberg.org/ThetaDev/rustypipe/commit/e608811e5f5615416241e67561671330097092cb)) +- Downloader: add audio tagging - ([1e1315a](https://codeberg.org/ThetaDev/rustypipe/commit/1e1315a8378bd0ad25b5f1614e83dabc4a0b40d5)) +- Add audiotag+indicatif features to downloader - ([97fb057](https://codeberg.org/ThetaDev/rustypipe/commit/97fb0578b5c4954a596d8dee0c4b6e1d773a9300)) +- Add YtEntity trait to YouTubeItem and MusicItem - ([114a86a](https://codeberg.org/ThetaDev/rustypipe/commit/114a86a3823a175875aa2aeb31a61a6799ef13bc)) +- Change default player client order - ([97904d7](https://codeberg.org/ThetaDev/rustypipe/commit/97904d77374c2c937a49dc7905759c2d8e8ef9ae)) +- [**breaking**] Update channel model, addd handle + video_count, remove tv/mobile banner - ([e671570](https://codeberg.org/ThetaDev/rustypipe/commit/e6715700d950912031d5fbc1263f8770b6ffc49c)) +- [**breaking**] Add handle to ChannelItem, remove video_count - ([1cffb27](https://codeberg.org/ThetaDev/rustypipe/commit/1cffb27cc0b64929f9627f5839df2d73b81988a4)) +- [**breaking**] Remove startpage - ([3599aca](https://codeberg.org/ThetaDev/rustypipe/commit/3599acafef1a21fa6f8dea97902eb4a3fb048c14)) + +### 🐛 Bug Fixes + +- [**breaking**] Extracting nsig function, remove field `throttled` from Video/Audio stream model - ([dd0565b](https://codeberg.org/ThetaDev/rustypipe/commit/dd0565ba98acb3289ed220fd2a3aaf86bb8b0788)) +- Make nsig_fn regex more generic - ([fb7af3b](https://codeberg.org/ThetaDev/rustypipe/commit/fb7af3b96698b452b6b24d1e094ba13a245cb83c)) +- Improve deobfuscator (support multiple nsig name matches, error if mapping all streams fails) - ([8152ce6](https://codeberg.org/ThetaDev/rustypipe/commit/8152ce6b088b57be9b8419b754aca93805e5f34d)) +- Nsig fn extraction - ([3c83e11](https://codeberg.org/ThetaDev/rustypipe/commit/3c83e11e753f8eb6efea5d453a7c819c487b3464)) +- Add var to deobf fn assignment - ([c6bd03f](https://codeberg.org/ThetaDev/rustypipe/commit/c6bd03fb70871ae1b764be18f88e86e71818fc56)) +- Make Verification enum exhaustive - ([d053ac3](https://codeberg.org/ThetaDev/rustypipe/commit/d053ac3eba810a7241df91f2f50bcbe1fd968c86)) +- Extraction error message - ([d36ba59](https://codeberg.org/ThetaDev/rustypipe/commit/d36ba595dab0bbaef1012ebfa8930fc0e6bf8167)) +- Set tracing instrumentation level to Error - ([9da3b25](https://codeberg.org/ThetaDev/rustypipe/commit/9da3b25be2b2577f7bd0282c09d10d368ac8b73f)) +- Detect ip-ban error message - ([da39c64](https://codeberg.org/ThetaDev/rustypipe/commit/da39c64f302bc2edc4214bbe25a0a9eb54063b09)) +- Player_from_clients: fall back to TvHtml5Embed client - ([d0ae796](https://codeberg.org/ThetaDev/rustypipe/commit/d0ae7961ba91d56c8b9a8d1c545875e869b818f5)) +- Parsing channels without banner - ([5a6b2c3](https://codeberg.org/ThetaDev/rustypipe/commit/5a6b2c3a621f6b20c1324ea8b9c03426e3d8018b)) +- Get TV client version - ([ee3ae40](https://codeberg.org/ThetaDev/rustypipe/commit/ee3ae40395263c5989784c7e00038ff13bc1151a)) + +### ⚙️ Miscellaneous Tasks + +- Renovate: disable approveMajorUpdates - ([4743f9d](https://codeberg.org/ThetaDev/rustypipe/commit/4743f9d8e101b58ad6a43548495da9f4f381b9f4)) +- Renovate: disable scheduleDaily - ([015bd6f](https://codeberg.org/ThetaDev/rustypipe/commit/015bd6fcbf04163565fcb190b163ecfdb5664e11)) +- Renovate: enable automerge - ([882abc5](https://codeberg.org/ThetaDev/rustypipe/commit/882abc53ca894229ee78ec0edaa723d9ea61bbcb)) +- *(deps)* Update rust crate quick-xml to 0.36.0 (#8) - ([b6bc05c](https://codeberg.org/ThetaDev/rustypipe/commit/b6bc05c1f39da9a846b2e3d1d24bcbccb031203b)) +- *(deps)* Update rust crate rstest to 0.22.0 (#9) - ([abb7832](https://codeberg.org/ThetaDev/rustypipe/commit/abb783219aba4b492c1dff03c2148acf1f51a55d)) +- Change repo URL to Codeberg - ([1793331](https://codeberg.org/ThetaDev/rustypipe/commit/17933315d947f76d5fe1aa52abf7ea24c3ce6381)) +- Adjust dependency versions - ([70c6f8c](https://codeberg.org/ThetaDev/rustypipe/commit/70c6f8c3b97baefd316fff90cc727524516657af)) + +### Todo + +- Update metadata - ([8692ca8](https://codeberg.org/ThetaDev/rustypipe/commit/8692ca81d972d0d2acf6fb4da79b9e0f5ebf4daf)) + + ## [v0.2.1](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe/v0.2.0..rustypipe/v0.2.1) - 2024-07-01 ### 🐛 Bug Fixes diff --git a/Cargo.toml b/Cargo.toml index f2fdcf3..597f8d0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe" -version = "0.2.1" +version = "0.3.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.2.0", default-features = false } +rustypipe = { path = ".", version = "0.3.0", default-features = false } rustypipe-downloader = { path = "./downloader", version = "0.1.0", default-features = false, features = [ "indicatif", "audiotag", From ec13cbb1f35081118dda0f7f35e3ef90f7ca79a8 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 18 Aug 2024 03:09:56 +0200 Subject: [PATCH 134/347] fix: add docs.rs feature attributes --- downloader/src/lib.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/downloader/src/lib.rs b/downloader/src/lib.rs index a1483d4..45cc0e4 100644 --- a/downloader/src/lib.rs +++ b/downloader/src/lib.rs @@ -329,6 +329,7 @@ impl DownloaderBuilder { /// Set the indicatif [`MultiProgress`] used to show download progress /// for all downloads #[cfg(feature = "indicatif")] + #[cfg_attr(docsrs, doc(cfg(feature = "indicatif")))] #[must_use] pub fn multi_progress(mut self, progress: MultiProgress) -> Self { self.multi = Some(progress); @@ -337,6 +338,7 @@ impl DownloaderBuilder { /// Set the indicatif [`ProgressStyle`] for the progress bars displayed under `multi_progress` #[cfg(feature = "indicatif")] + #[cfg_attr(docsrs, doc(cfg(feature = "indicatif")))] #[must_use] pub fn progress_style(mut self, style: ProgressStyle) -> Self { self.progress_style = Some(style); @@ -381,6 +383,7 @@ impl DownloaderBuilder { /// Enable audio tagging #[cfg(feature = "audiotag")] + #[cfg_attr(docsrs, doc(cfg(feature = "audiotag")))] #[must_use] pub fn audio_tag(mut self) -> Self { self.audio_tag = true; @@ -389,6 +392,7 @@ impl DownloaderBuilder { /// Crop YouTube thumbnails to get square album covers #[cfg(feature = "audiotag")] + #[cfg_attr(docsrs, doc(cfg(feature = "audiotag")))] #[must_use] pub fn crop_cover(mut self) -> Self { self.crop_cover = true; @@ -609,6 +613,7 @@ impl DownloadQuery { /// Show the progress of this download using a Indicatif [`ProgressBar`] #[cfg(feature = "indicatif")] + #[cfg_attr(docsrs, doc(cfg(feature = "indicatif")))] #[must_use] pub fn progress_bar(mut self, progress: ProgressBar) -> Self { self.progress = Some(progress); From 67a231d6d1b6427f500667729a59032f2b28cc65 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 18 Aug 2024 03:25:02 +0200 Subject: [PATCH 135/347] fix: show docs.rs feature flags --- Cargo.toml | 6 ++++++ downloader/Cargo.toml | 6 ++++++ downloader/src/lib.rs | 5 +++-- src/lib.rs | 1 + 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 597f8d0..1a026bc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -120,3 +120,9 @@ tokio-test.workspace = true insta.workspace = true path_macro.workspace = true tracing-test.workspace = true + +[package.metadata.docs.rs] +# To build locally: +# RUSTDOCFLAGS="--cfg docsrs" cargo +nightly doc --features rss --no-deps --open +features = ["rss"] +rustdoc-args = ["--cfg", "docsrs"] diff --git a/downloader/Cargo.toml b/downloader/Cargo.toml index 7582dfa..a95a94b 100644 --- a/downloader/Cargo.toml +++ b/downloader/Cargo.toml @@ -54,3 +54,9 @@ path_macro.workspace = true rstest.workspace = true serde_json.workspace = true temp_testdir = "0.2.3" + +[package.metadata.docs.rs] +# To build locally: +# RUSTDOCFLAGS="--cfg docsrs" cargo +nightly doc --features indicatif,audiotag --no-deps --open +features = ["indicatif", "audiotag"] +rustdoc-args = ["--cfg", "docsrs"] diff --git a/downloader/src/lib.rs b/downloader/src/lib.rs index 45cc0e4..97a51c4 100644 --- a/downloader/src/lib.rs +++ b/downloader/src/lib.rs @@ -1,4 +1,5 @@ #![doc = include_str!("../README.md")] +#![cfg_attr(docsrs, feature(doc_cfg))] #![warn(missing_docs, clippy::todo, clippy::dbg_macro)] mod error; @@ -354,7 +355,7 @@ impl DownloaderBuilder { self } - /// Set the [`VideoFormat`] of downloaded videos + /// Set the [`DownloadVideoFormat`] of downloaded videos #[must_use] pub fn video_format(mut self, video_format: DownloadVideoFormat) -> Self { self.video_format = video_format; @@ -627,7 +628,7 @@ impl DownloadQuery { self } - /// Set the [`VideoFormat`] of downloaded videos + /// Set the [`DownloadVideoFormat`] of downloaded videos #[must_use] pub fn video_format(mut self, video_format: DownloadVideoFormat) -> Self { self.video_format = Some(video_format); diff --git a/src/lib.rs b/src/lib.rs index 6d5b355..89837ae 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,5 @@ #![doc = include_str!("../README.md")] +#![cfg_attr(docsrs, feature(doc_cfg))] #![forbid(unsafe_code)] #![warn(missing_docs, clippy::todo, clippy::dbg_macro)] From cad3bcd9e99a43fd1b001680eed4823d8a41d6f1 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 18 Aug 2024 03:25:57 +0200 Subject: [PATCH 136/347] chore(release): release rustypipe-downloader v0.2.0 --- Cargo.toml | 2 +- downloader/CHANGELOG.md | 35 +++++++++++++++++++++++++++++++++++ downloader/Cargo.toml | 2 +- 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 1a026bc..e5d4d6f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -74,7 +74,7 @@ tracing-test = "0.2.5" # Included crates rustypipe = { path = ".", version = "0.3.0", default-features = false } -rustypipe-downloader = { path = "./downloader", version = "0.1.0", default-features = false, features = [ +rustypipe-downloader = { path = "./downloader", version = "0.2.0", default-features = false, features = [ "indicatif", "audiotag", ] } diff --git a/downloader/CHANGELOG.md b/downloader/CHANGELOG.md index c5869ac..aa89612 100644 --- a/downloader/CHANGELOG.md +++ b/downloader/CHANGELOG.md @@ -3,6 +3,41 @@ All notable changes to this project will be documented in this file. +## [v0.2.0](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-downloader/v0.1.1..rustypipe-downloader/v0.2.0) - 2024-08-18 + +### 🚀 Features + +- Overhauled downloader - ([11a0038](https://codeberg.org/ThetaDev/rustypipe/commit/11a00383502917cd98245c3da349107289ba3aa9)) +- [**breaking**] Add TV client - ([e608811](https://codeberg.org/ThetaDev/rustypipe/commit/e608811e5f5615416241e67561671330097092cb)) +- Downloader: add audio tagging - ([1e1315a](https://codeberg.org/ThetaDev/rustypipe/commit/1e1315a8378bd0ad25b5f1614e83dabc4a0b40d5)) +- Downloader: add download_track fn, improve path templates - ([e1e4fb2](https://codeberg.org/ThetaDev/rustypipe/commit/e1e4fb29c190fec07f17c59ec88bef4f1c2a76a1)) +- Add audiotag+indicatif features to downloader - ([97fb057](https://codeberg.org/ThetaDev/rustypipe/commit/97fb0578b5c4954a596d8dee0c4b6e1d773a9300)) +- Add plaintext output to CLI - ([91b020e](https://codeberg.org/ThetaDev/rustypipe/commit/91b020efd498eff6e0f354a1de39439e252a79dd)) +- Add potoken option to downloader - ([904f821](https://codeberg.org/ThetaDev/rustypipe/commit/904f8215d84c810b04e4d2134718e786a4803ad2)) +- Add list of clients to downloader - ([5e646af](https://codeberg.org/ThetaDev/rustypipe/commit/5e646afd1edc6c0101501311527ea56d3bad5fd2)) +- Retry with different client after 403 error - ([d875b54](https://codeberg.org/ThetaDev/rustypipe/commit/d875b5442de9822ba7ddc6f05789f56a8962808c)) +- [**breaking**] Update channel model, addd handle + video_count, remove tv/mobile banner - ([e671570](https://codeberg.org/ThetaDev/rustypipe/commit/e6715700d950912031d5fbc1263f8770b6ffc49c)) + +### 🐛 Bug Fixes + +- *(deps)* Update quick-xml to v0.35.0 - ([298e4de](https://codeberg.org/ThetaDev/rustypipe/commit/298e4def93d1595fba91be103f014aa645a08937)) +- Improve deobfuscator (support multiple nsig name matches, error if mapping all streams fails) - ([8152ce6](https://codeberg.org/ThetaDev/rustypipe/commit/8152ce6b088b57be9b8419b754aca93805e5f34d)) +- Set tracing instrumentation level to Error - ([9da3b25](https://codeberg.org/ThetaDev/rustypipe/commit/9da3b25be2b2577f7bd0282c09d10d368ac8b73f)) +- Add docs.rs feature attributes - ([ec13cbb](https://codeberg.org/ThetaDev/rustypipe/commit/ec13cbb1f35081118dda0f7f35e3ef90f7ca79a8)) +- Show docs.rs feature flags - ([67a231d](https://codeberg.org/ThetaDev/rustypipe/commit/67a231d6d1b6427f500667729a59032f2b28cc65)) + +### ⚙️ Miscellaneous Tasks + +- *(deps)* Update rust crate quick-xml to 0.36.0 (#8) - ([b6bc05c](https://codeberg.org/ThetaDev/rustypipe/commit/b6bc05c1f39da9a846b2e3d1d24bcbccb031203b)) +- *(deps)* Update rust crate rstest to 0.22.0 (#9) - ([abb7832](https://codeberg.org/ThetaDev/rustypipe/commit/abb783219aba4b492c1dff03c2148acf1f51a55d)) +- Change repo URL to Codeberg - ([1793331](https://codeberg.org/ThetaDev/rustypipe/commit/17933315d947f76d5fe1aa52abf7ea24c3ce6381)) +- Adjust dependency versions - ([70c6f8c](https://codeberg.org/ThetaDev/rustypipe/commit/70c6f8c3b97baefd316fff90cc727524516657af)) + +### Todo + +- Update metadata - ([8692ca8](https://codeberg.org/ThetaDev/rustypipe/commit/8692ca81d972d0d2acf6fb4da79b9e0f5ebf4daf)) + + ## [v0.1.1](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-downloader/v0.1.0..rustypipe-downloader/v0.1.1) - 2024-06-27 ### 📚 Documentation diff --git a/downloader/Cargo.toml b/downloader/Cargo.toml index a95a94b..2679252 100644 --- a/downloader/Cargo.toml +++ b/downloader/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe-downloader" -version = "0.1.1" +version = "0.2.0" rust-version = "1.67.1" edition.workspace = true authors.workspace = true From 7b672cd5fd3a9ecc8a1dc41638d40bf3881851c8 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 18 Aug 2024 03:32:46 +0200 Subject: [PATCH 137/347] chore(release): release rustypipe-cli v0.2.0 --- cli/CHANGELOG.md | 40 ++++++++++++++++++++++++++++++++++++++++ cli/Cargo.toml | 2 +- 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md index 018c2bb..5bbdd40 100644 --- a/cli/CHANGELOG.md +++ b/cli/CHANGELOG.md @@ -3,6 +3,46 @@ All notable changes to this project will be documented in this file. +## [v0.2.0](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-cli/v0.1.1..rustypipe-cli/v0.2.0) - 2024-08-18 + +### 🚀 Features + +- Overhauled downloader - ([11a0038](https://codeberg.org/ThetaDev/rustypipe/commit/11a00383502917cd98245c3da349107289ba3aa9)) +- [**breaking**] Add TV client - ([e608811](https://codeberg.org/ThetaDev/rustypipe/commit/e608811e5f5615416241e67561671330097092cb)) +- Downloader: add audio tagging - ([1e1315a](https://codeberg.org/ThetaDev/rustypipe/commit/1e1315a8378bd0ad25b5f1614e83dabc4a0b40d5)) +- Downloader: add download_track fn, improve path templates - ([e1e4fb2](https://codeberg.org/ThetaDev/rustypipe/commit/e1e4fb29c190fec07f17c59ec88bef4f1c2a76a1)) +- Add audiotag+indicatif features to downloader - ([97fb057](https://codeberg.org/ThetaDev/rustypipe/commit/97fb0578b5c4954a596d8dee0c4b6e1d773a9300)) +- Add plaintext output to CLI - ([91b020e](https://codeberg.org/ThetaDev/rustypipe/commit/91b020efd498eff6e0f354a1de39439e252a79dd)) +- Add potoken option to downloader - ([904f821](https://codeberg.org/ThetaDev/rustypipe/commit/904f8215d84c810b04e4d2134718e786a4803ad2)) +- Print error message - ([8f16e5b](https://codeberg.org/ThetaDev/rustypipe/commit/8f16e5ba6eec3fd6aba1bb6a19571c65fb69ce0e)) +- Add list of clients to downloader - ([5e646af](https://codeberg.org/ThetaDev/rustypipe/commit/5e646afd1edc6c0101501311527ea56d3bad5fd2)) +- Retry with different client after 403 error - ([d875b54](https://codeberg.org/ThetaDev/rustypipe/commit/d875b5442de9822ba7ddc6f05789f56a8962808c)) +- Add option to fetch RSS feed - ([03c4d3c](https://codeberg.org/ThetaDev/rustypipe/commit/03c4d3c392386e06f2673f0e0783e22d10087989)) +- [**breaking**] Update channel model, addd handle + video_count, remove tv/mobile banner - ([e671570](https://codeberg.org/ThetaDev/rustypipe/commit/e6715700d950912031d5fbc1263f8770b6ffc49c)) + +### 🐛 Bug Fixes + +- *(deps)* Update quick-xml to v0.35.0 - ([298e4de](https://codeberg.org/ThetaDev/rustypipe/commit/298e4def93d1595fba91be103f014aa645a08937)) +- Improve deobfuscator (support multiple nsig name matches, error if mapping all streams fails) - ([8152ce6](https://codeberg.org/ThetaDev/rustypipe/commit/8152ce6b088b57be9b8419b754aca93805e5f34d)) +- Cli: print video ID when logging errors - ([2c7a3fb](https://codeberg.org/ThetaDev/rustypipe/commit/2c7a3fb5cc153ff0b8b5e79234ae497d916e471c)) +- Use anstream + owo-color for colorful CLI output - ([e8324cf](https://codeberg.org/ThetaDev/rustypipe/commit/e8324cf3b065cb977adbc9529b1ef5ee18c3dd47)) +- Use native tls by default for CLI - ([f37432a](https://codeberg.org/ThetaDev/rustypipe/commit/f37432a48c1f93cab5f7942f791daf7b27cb1565)) +- Detect ip-ban error message - ([da39c64](https://codeberg.org/ThetaDev/rustypipe/commit/da39c64f302bc2edc4214bbe25a0a9eb54063b09)) +- Dont store cache in current dir with --report option - ([6009de7](https://codeberg.org/ThetaDev/rustypipe/commit/6009de7bddc6031f2af17005c473c17934327c02)) +- Show docs.rs feature flags - ([67a231d](https://codeberg.org/ThetaDev/rustypipe/commit/67a231d6d1b6427f500667729a59032f2b28cc65)) + +### ⚙️ Miscellaneous Tasks + +- *(deps)* Update rust crate quick-xml to 0.36.0 (#8) - ([b6bc05c](https://codeberg.org/ThetaDev/rustypipe/commit/b6bc05c1f39da9a846b2e3d1d24bcbccb031203b)) +- *(deps)* Update rust crate rstest to 0.22.0 (#9) - ([abb7832](https://codeberg.org/ThetaDev/rustypipe/commit/abb783219aba4b492c1dff03c2148acf1f51a55d)) +- Change repo URL to Codeberg - ([1793331](https://codeberg.org/ThetaDev/rustypipe/commit/17933315d947f76d5fe1aa52abf7ea24c3ce6381)) +- Adjust dependency versions - ([70c6f8c](https://codeberg.org/ThetaDev/rustypipe/commit/70c6f8c3b97baefd316fff90cc727524516657af)) + +### Todo + +- Update metadata - ([8692ca8](https://codeberg.org/ThetaDev/rustypipe/commit/8692ca81d972d0d2acf6fb4da79b9e0f5ebf4daf)) + + ## [v0.1.1](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-cli/v0.1.0..rustypipe-cli/v0.1.1) - 2024-06-27 ### 🚀 Features diff --git a/cli/Cargo.toml b/cli/Cargo.toml index c8196c1..3b4df59 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe-cli" -version = "0.1.1" +version = "0.2.0" rust-version = "1.70.0" edition.workspace = true authors.workspace = true From d49ddc13c05362e5468dc18beeee2745c4ef2531 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 18 Aug 2024 15:30:47 +0200 Subject: [PATCH 138/347] ci: enable workflow_dispatch for renovate --- .forgejo/workflows/renovate.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.forgejo/workflows/renovate.yaml b/.forgejo/workflows/renovate.yaml index 837138e..e91c636 100644 --- a/.forgejo/workflows/renovate.yaml +++ b/.forgejo/workflows/renovate.yaml @@ -8,6 +8,7 @@ on: - "renovate.json" schedule: - cron: "0 0 * * *" + workflow_dispatch: env: RENOVATE_REPOSITORIES: ${{ github.repository }} From a445e51b54a9afc44cd9657260a0b3d2abddbfa6 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sun, 18 Aug 2024 13:41:33 +0000 Subject: [PATCH 139/347] chore(deps): update rust crate tokio to 1.20.4 [security] (#10) Reviewed-on: https://codeberg.org/ThetaDev/rustypipe/pulls/10 Co-authored-by: ThetaBot Co-committed-by: ThetaBot --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index e5d4d6f..aa85b5f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,7 +33,7 @@ fancy-regex = "0.13.0" thiserror = "1.0.0" url = "2.2.0" reqwest = { version = "0.12.0", default-features = false } -tokio = "1.20.0" +tokio = "1.20.4" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0.82" serde_with = { version = "3.0.0", default-features = false, features = [ From 4a253e1a47317e9999e6ad31ac5c411956a0986a Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 18 Aug 2024 17:44:55 +0200 Subject: [PATCH 140/347] doc: fix license badge URL --- README.md | 2 +- cli/README.md | 2 +- downloader/README.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 8a67d48..5cbfb74 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # ![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/MIT) +[![License](https://img.shields.io/badge/License-GPL--3-blue.svg?style=flat)](http://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) 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 1f7233e..512e043 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/MIT) +[![License](https://img.shields.io/badge/License-GPL--3-blue.svg?style=flat)](http://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 a774405..d7b8a48 100644 --- a/downloader/README.md +++ b/downloader/README.md @@ -1,7 +1,7 @@ # ![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/MIT) +[![License](https://img.shields.io/badge/License-GPL--3-blue.svg?style=flat)](http://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 downloader is a companion crate for RustyPipe that allows for easy and fast From ed08f9ff9a8aae51eae102c47676271b0ef94cf9 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Mon, 9 Sep 2024 23:24:25 +0200 Subject: [PATCH 141/347] test: add test case --- tests/youtube.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/youtube.rs b/tests/youtube.rs index ca87752..b6d5be6 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -1407,6 +1407,8 @@ async fn search_suggestion_empty(rp: RustyPipe) { #[case("https://music.youtube.com/browse/MPREb_GyH43gCvdM5", UrlTarget::Album {id: "MPREb_GyH43gCvdM5".to_owned()})] #[case("https://music.youtube.com/browse/UC5I2hjZYiW9gZPVkvzM8_Cw", UrlTarget::Channel {id: "UC5I2hjZYiW9gZPVkvzM8_Cw".to_owned()})] #[case("https://music.youtube.com/browse/MPADUC7cl4MmM6ZZ2TcFyMk_b4pg", UrlTarget::Channel {id: "UC7cl4MmM6ZZ2TcFyMk_b4pg".to_owned()})] +// Music album playlist URL from regular YouTube site (redirects to music album) +#[case("https://music.youtube.com/playlist?list=OLAK5uy_noT8bq6-DUEJ5KsdX1D4-wWcYtjiuYEnU", UrlTarget::Album {id: "MPREb_5CPCpzS3imM".to_owned()})] #[tokio::test] async fn resolve_url(#[case] url: &str, #[case] expect: UrlTarget, rp: RustyPipe) { let target = rp.query().resolve_url(url, true).await.unwrap(); From 7972df0df498edd7801e25037b9b2456367f9204 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 10 Sep 2024 03:12:16 +0200 Subject: [PATCH 142/347] fix: A/B test 15 (parsing channel shortsLockupViewModel) --- codegen/src/abtest.rs | 19 + notes/AB_Tests.md | 39 + src/client/channel.rs | 1 + src/client/response/video_item.rs | 60 +- ...s__map_channel_shorts_20240910_lockup.snap | 1322 ++ src/serializer/text.rs | 13 + .../channel_shorts_20240910_lockup.json | 12760 ++++++++++++++++ tests/youtube.rs | 50 +- 8 files changed, 14241 insertions(+), 23 deletions(-) create mode 100644 src/client/snapshots/rustypipe__client__channel__tests__map_channel_shorts_20240910_lockup.snap create mode 100644 testfiles/channel/channel_shorts_20240910_lockup.json diff --git a/codegen/src/abtest.rs b/codegen/src/abtest.rs index 201563a..8852cb9 100644 --- a/codegen/src/abtest.rs +++ b/codegen/src/abtest.rs @@ -34,6 +34,7 @@ pub enum ABTest { ChannelPageHeader = 12, MusicPlaylistTwoColumn = 13, CommentsFrameworkUpdate = 14, + ChannelShortsLockup = 15, } /// List of active A/B tests that are run when none is manually specified @@ -110,6 +111,7 @@ pub async fn run_test( ABTest::ChannelPageHeader => channel_page_header(&query).await, ABTest::MusicPlaylistTwoColumn => music_playlist_two_column(&query).await, ABTest::CommentsFrameworkUpdate => comments_framework_update(&query).await, + ABTest::ChannelShortsLockup => channel_shorts_lockup(&query).await, } .unwrap(); pb.inc(1); @@ -363,3 +365,20 @@ pub async fn comments_framework_update(rp: &RustyPipeQuery) -> Result { .unwrap(); Ok(res.contains("\"frameworkUpdates\"")) } + +pub async fn channel_shorts_lockup(rp: &RustyPipeQuery) -> Result { + let id = "UCh8gHdtzO2tXd593_bjErWg"; + let res = rp + .raw( + ClientType::Desktop, + "browse", + &QBrowse { + context: rp.get_context(ClientType::Desktop, true, None).await, + browse_id: id, + params: Some("EgZzaG9ydHPyBgUKA5oBAA%3D%3D"), + }, + ) + .await + .unwrap(); + Ok(res.contains("\"shortsLockupViewModel\"")) +} diff --git a/notes/AB_Tests.md b/notes/AB_Tests.md index a7c8504..3330a6b 100644 --- a/notes/AB_Tests.md +++ b/notes/AB_Tests.md @@ -748,3 +748,42 @@ seperate framework update object } } ``` + +## [15] Channel shorts: shortsLockupViewModel + +- **Encountered on:** 10.09.2024 +- **Impact:** 🟢 Low +- **Endpoint:** browse +- **Status:** Common + +YouTube changed the data model for the channel shorts tab + +```json +{ + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-ovaHmfy3O6U", + "accessibilityText": "hangover food, 17 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/ovaHmfy3O6U/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBg-kG4rAi-BQ8Xkp2hOtOu-oXDLQ", + "width": 405, + "height": 720 + } + ] + }, + "overlayMetadata": { + "primaryText": { + "content": "hangover food" + }, + "secondaryText": { + "content": "17M views" + } + } + } + } + } +} +``` diff --git a/src/client/channel.rs b/src/client/channel.rs index 854c728..41930a7 100644 --- a/src/client/channel.rs +++ b/src/client/channel.rs @@ -710,6 +710,7 @@ mod tests { #[case::livestreams("livestreams", "UC2DjFE7Xf11URZqWBigcVOQ")] #[case::pageheader("shorts_20240129_pageheader", "UCh8gHdtzO2tXd593_bjErWg")] #[case::pageheader2("videos_20240324_pageheader2", "UC2DjFE7Xf11URZqWBigcVOQ")] + #[case::shorts2("shorts_20240910_lockup", "UCh8gHdtzO2tXd593_bjErWg")] fn map_channel_videos(#[case] name: &str, #[case] id: &str) { let json_path = path!(*TESTFILES / "channel" / format!("channel_{name}.json")); let json_file = File::open(json_path).unwrap(); diff --git a/src/client/response/video_item.rs b/src/client/response/video_item.rs index 9b9a97a..b358be2 100644 --- a/src/client/response/video_item.rs +++ b/src/client/response/video_item.rs @@ -12,7 +12,7 @@ use crate::{ }, param::Language, serializer::{ - text::{Text, TextComponent}, + text::{AttributedText, Text, TextComponent}, MapResult, }, util::{self, timeago, TryRemove}, @@ -25,6 +25,7 @@ pub(crate) enum YouTubeListItem { #[serde(alias = "gridVideoRenderer", alias = "compactVideoRenderer")] VideoRenderer(VideoRenderer), ReelItemRenderer(ReelItemRenderer), + ShortsLockupViewModel(ShortsLockupViewModel), PlaylistVideoRenderer(PlaylistVideoRenderer), #[serde(alias = "gridPlaylistRenderer")] @@ -142,6 +143,28 @@ pub(crate) struct ReelItemRenderer { pub navigation_endpoint: Option, } +// New short video item +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct ShortsLockupViewModel { + /// `shorts-shelf-item-[video_id]` + pub entity_id: String, + pub thumbnail: Thumbnails, + pub overlay_metadata: ShortsOverlayMetadata, +} + +#[serde_as] +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct ShortsOverlayMetadata { + /// Title + #[serde_as(as = "AttributedText")] + pub primary_text: String, + /// View count + #[serde_as(as = "Option")] + pub secondary_text: Option, +} + /// Video displayed in a playlist #[serde_as] #[derive(Debug, Deserialize)] @@ -517,6 +540,31 @@ impl YouTubeListMapper { } } + fn map_short_video2(&mut self, video: ShortsLockupViewModel) -> Option { + if let Some(video_id) = video.entity_id.strip_prefix("shorts-shelf-item-") { + Some(VideoItem { + id: video_id.to_owned(), + name: video.overlay_metadata.primary_text, + duration: None, + thumbnail: video.thumbnail.into(), + channel: self.channel.clone(), + publish_date: None, + publish_date_txt: None, + view_count: video.overlay_metadata.secondary_text.and_then(|txt| { + util::parse_large_numstr_or_warn(&txt, self.lang, &mut self.warnings) + }), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + }) + } else { + self.warnings + .push(format!("invalid shorts entityId: {}", video.entity_id)); + None + } + } + fn map_playlist_video(&mut self, video: PlaylistVideoRenderer) -> VideoItem { let channel = ChannelId::try_from(video.channel) .ok() @@ -642,6 +690,11 @@ impl YouTubeListMapper { let mapped = YouTubeItem::Video(self.map_video(video)); self.items.push(mapped); } + YouTubeListItem::ShortsLockupViewModel(video) => { + if let Some(mapped) = self.map_short_video2(video) { + self.items.push(YouTubeItem::Video(mapped)); + } + } YouTubeListItem::ReelItemRenderer(video) => { let mapped = self.map_short_video(video); self.items.push(YouTubeItem::Video(mapped)); @@ -692,6 +745,11 @@ impl YouTubeListMapper { let mapped = self.map_short_video(video); self.items.push(mapped); } + YouTubeListItem::ShortsLockupViewModel(video) => { + if let Some(mapped) = self.map_short_video2(video) { + self.items.push(mapped); + } + } YouTubeListItem::PlaylistVideoRenderer(video) => { let mapped = self.map_playlist_video(video); self.items.push(mapped); 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 new file mode 100644 index 0000000..4fedc65 --- /dev/null +++ b/src/client/snapshots/rustypipe__client__channel__tests__map_channel_shorts_20240910_lockup.snap @@ -0,0 +1,1322 @@ +--- +source: src/client/channel.rs +expression: map_res.c +--- +Channel( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + handle: Some("@Doobydobap"), + subscriber_count: Some(3970000), + video_count: Some(380), + avatar: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/dm5Aq93xvVJz0NoVO88ieBkDXmuShCujGPlZ7qETMEPTrXvPUCFI3-BB6Xs_P-r6Uk3mnBy9zA=s72-c-k-c0x00ffffff-no-rj", + width: 72, + height: 72, + ), + Thumbnail( + url: "https://yt3.googleusercontent.com/dm5Aq93xvVJz0NoVO88ieBkDXmuShCujGPlZ7qETMEPTrXvPUCFI3-BB6Xs_P-r6Uk3mnBy9zA=s120-c-k-c0x00ffffff-no-rj", + width: 120, + height: 120, + ), + Thumbnail( + url: "https://yt3.googleusercontent.com/dm5Aq93xvVJz0NoVO88ieBkDXmuShCujGPlZ7qETMEPTrXvPUCFI3-BB6Xs_P-r6Uk3mnBy9zA=s160-c-k-c0x00ffffff-no-rj", + width: 160, + height: 160, + ), + ], + 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: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w1060-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + width: 1060, + height: 175, + ), + Thumbnail( + url: "https://yt3.googleusercontent.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w1138-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + width: 1138, + height: 188, + ), + Thumbnail( + url: "https://yt3.googleusercontent.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w1707-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + width: 1707, + height: 283, + ), + Thumbnail( + url: "https://yt3.googleusercontent.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w2120-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + width: 2120, + height: 351, + ), + Thumbnail( + url: "https://yt3.googleusercontent.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w2276-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + width: 2276, + height: 377, + ), + Thumbnail( + url: "https://yt3.googleusercontent.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w2560-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + width: 2560, + height: 424, + ), + ], + has_shorts: true, + has_live: false, + visitor_data: Some("CgtzV3BXaUtSMHJsYyjkh_62BjIKCgJERRIEEgAgLw%3D%3D"), + content: Paginator( + count: None, + items: [ + VideoItem( + id: "a2G3YUk1GfQ", + name: "How to Make Tofu!!!", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/a2G3YUk1GfQ/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAqfY1naU9Y9fE037wNUvLVySzleQ", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(175000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "JE_JED26ZkY", + name: "I hate to admit it but it\'s the Best Korean Chinese Restaurant", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/JE_JED26ZkY/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAYSdHPLz9tVz3Bx2jmqeaRrhYaKw", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(584000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "bTZdQn8cOqY", + name: "How Koreans Care for Bone Health (ft. Ox Bone Soup)", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/bTZdQn8cOqY/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAu-wUVw07yyjH_DgBkR_wa6GVHuQ", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(315000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "JPA-Cj2DwHU", + name: "Everything I ate working at Google Korea", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/JPA-Cj2DwHU/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLD3C2bxI4OhpHfhSanLIP_PXotiEw", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(473000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "r0vEv3N_0co", + name: "Grocery shopping at Korean Traditional Market", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/r0vEv3N_0co/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBNqn0N0bRs122y48mnGyVG4M1KUg", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(573000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "_JmAkcRWZ5Q", + name: "Why Korean Rotisserie is Better than Fried Chicken", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/_JmAkcRWZ5Q/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBplB8OHwQXnn0dacBTXSZBOgzDGQ", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(1100000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "GMEhshFDslQ", + name: "it\'s not a phase mom", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/GMEhshFDslQ/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCw28yzJPzZn_BwuPRdvLnJXafKyQ", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(727000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "4E-mV5b__mE", + name: "How Koreans Cool Down During the Summer", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/4E-mV5b__mE/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAB8LBYtb5weLD9V0mtAUgO2F3HgQ", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(1100000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "ik4Lpb_7B0I", + name: "FRIDGE TOUR", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/ik4Lpb_7B0I/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBeYS7x2nMoFY4Lt2Pc1rhCXbcNXA", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(329000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "H61ZlmZ4Amg", + name: "It\'s 3AM and I woke up severely dehydrated", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/H61ZlmZ4Amg/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDuI1JRbT2u2-AdVv4_28Sqtp_HZA", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(644000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "HgcURF4Pwmw", + name: "inner beauty is more important?", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/HgcURF4Pwmw/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLA-HQSkVueTDY8ATVMsFKu-jspwaA", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(304000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "n546pQdYDvE", + name: "I didn’t put 2 and 2 together", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/n546pQdYDvE/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLD59RasvbdYQM2uT6sCk7qFJr0cmg", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(380000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "rXdHpkkOVMM", + name: "second guessing myself", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/rXdHpkkOVMM/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAmQQIyDeLL9dbuM7DLsNZPmxWDTw", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(851000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "FFEXYhqhBkc", + name: "my mommy issues", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/FFEXYhqhBkc/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLB-Mf-HbJ_FC428SAewcBoFb8QK-w", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(1100000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "YcYOfGiI8Qc", + name: "corny🌽", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/YcYOfGiI8Qc/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBsO443BQx7MedTrjPooUYo1XaTYQ", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(796000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "tL_SXzcXkXk", + name: "Why I love Korean Street Food", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/tL_SXzcXkXk/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCm3lN0GQYfD3G0ybyWo_3IXujR6g", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(1600000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "fm5w61xb4CE", + name: "Army Stew", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/fm5w61xb4CE/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDOSejJhkdWIMBsfC_Q3tjV9HrCiQ", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(1300000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "5Y_lvEx1bfE", + name: "the truth behind krusty krabs", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/5Y_lvEx1bfE/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLD7_rr5yHK2v1hdoq5bWWJlUgU4ng", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(1300000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "3fp2dMhUbGk", + name: "Runaway Dumplings", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/3fp2dMhUbGk/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDNwu9O27CTJZqXa47_kZyNnPLYVg", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(1500000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "LJAt2RHBhYA", + name: "Rating Korean Traditional Desserts out of 10!!!", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/LJAt2RHBhYA/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBs1ulw5vkRkR_SG6pp7Wuy90QK0Q", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(2000000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "apL97zDoAY0", + name: "best bang for your buck", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/apL97zDoAY0/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDTJ5F-kzUTGBPolJgqloUZWve4GQ", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(1600000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "6au8hFOnUXI", + name: "don\'t judge a book by its cover", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/6au8hFOnUXI/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCACe2S2wBTr0KVSFWzGda61k8Epw", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(4000000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "4wJAOnnPYsI", + name: "I ❤\u{fe0f} feet", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/4wJAOnnPYsI/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCwFBUxJXMhuiv1ZevlM6r2x7Wq-Q", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(1600000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "DDsWN4HcoWQ", + name: "Trying North Korean Food 🇰🇵 and Rating it out of 10", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/DDsWN4HcoWQ/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBIBARX0aoleQ1NFxd_DGhhHT4gDg", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(3400000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "oMIIEp8JMT0", + name: "get that bag 💰", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/oMIIEp8JMT0/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBKsO5-KQzqU-bJinHsPDWrEQBIzQ", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(658000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "ElEgDnx3Dfk", + name: "My Mom\'s 10-step Korean Skincare Routine", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/ElEgDnx3Dfk/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLD4uT5fSWvTnjAh_BC6hsW48zoH1w", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(1600000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "kNpFjW0VAUQ", + name: "What Koreans eat on New Year\'s", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/kNpFjW0VAUQ/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBJTK-xhUMSzq8MBJ3s4kSXR7pFlw", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(1300000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "0_5Y3ZBo5cw", + name: "DOOBYMART", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/0_5Y3ZBo5cw/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBlcI8i0DqG2vKRFGDzIQXBEsifFQ", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(829000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "VyVs3GCQlG0", + name: "I love ogres", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/VyVs3GCQlG0/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBsbPYKlWAAZNphAPobZQReZzk-lA", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(1600000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "_yMEpzXq3yI", + name: "Are you broke?😞📉📉📉", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/_yMEpzXq3yI/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCRyJDCY-7MsSYbsl2ZZoC8DxPkKw", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(3200000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "sM1jIMnq0M0", + name: "best tteokbokki & dark sketchy alleys", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/sM1jIMnq0M0/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCIQyuEFF2m676ZX7UpcK3hVHTzzw", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(1900000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "nZg_Qoknu_M", + name: "moist.", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/nZg_Qoknu_M/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCcXipLuXAs9D8d1nRJbMh-BZkK1Q", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(1500000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "CgS55gL33nY", + name: "Do you have any Korean Friends?", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/CgS55gL33nY/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCVh8B6HRomEnQX6dyDJVbYhE-RGA", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(2000000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "VOxXkxFNOpM", + name: "take my money", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/VOxXkxFNOpM/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAkP1n1_Oe8pBGluy_lyi4I3pO4SQ", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(6200000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "aZW65r9uUXA", + name: "i\'m a mother?", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/aZW65r9uUXA/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDIcJpRgW65hGv0GM8ak-L0PyErUw", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(1900000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "CnI9or-Ings", + name: "moshi moshi (ASMR)", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/CnI9or-Ings/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDIoImzeIOlO25vkY7j92YwUhAOdw", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(892000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "oYAp2v4PxdQ", + name: "perfect procrastination", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/oYAp2v4PxdQ/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLA3PsooCO5Cot_z-vLFCF1Kdtshtg", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(1000000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "1ivqsJSGghU", + name: "THREE CHILI MAPO TOFU (Vegan)", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/1ivqsJSGghU/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCk5IRHy8TmJPzE9yD3M_OGXdww_g", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(1100000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "s56ctQoFi70", + name: "day 1 leaving seoul", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/s56ctQoFi70/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCfn6oYumOdPd33WlDWaqBUZzaEiw", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(907000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "8XHcYgsJJjs", + name: "I love Korea but", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/8XHcYgsJJjs/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAtj-QeOzONDGPzDWC8IdFGigmKYA", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(4100000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "DXYbvkJEYzw", + name: "demogorgon rice", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/DXYbvkJEYzw/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDd33uW_fC4Dz5JqYlDtGWGdMQn8A", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(2200000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "3YGVw8RrB3U", + name: "Rating Everything I Ate at McDonald\'s Singapore 🇸🇬🤡", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/3YGVw8RrB3U/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAV2y-_1JXq9RecS8ELjyUsoN52NA", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(3300000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "VWh8hm-GlXw", + name: "the magic number: 25", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/VWh8hm-GlXw/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLD1wp7tz9TU3Kx2Oho7mrVoFys8Jw", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(1400000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "ewpJQHj5jWY", + name: "How we started✨ the garden ✨", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/ewpJQHj5jWY/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAOw5ntEtOhIgNJy2y1QQCFLUtGBQ", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(2400000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "SRnHMGMJ6mM", + name: "How to Shop at Costco ✨economical milf✨", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/SRnHMGMJ6mM/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDrwe86eXSemFBKB3xLGnRIDcL_qA", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(4100000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "bGXP83AU3Mc", + name: "do u wanna get swole?", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/bGXP83AU3Mc/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBLGuAqqpjhQ_Y81P2pxchz-z971g", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(2900000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "E52sSgZlgYs", + name: "the holy trinity of korean street food", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/E52sSgZlgYs/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAZr5j2o2IdpTLXUoSKT5QK-DFJgw", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(6000000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "ovaHmfy3O6U", + name: "hangover food", + duration: None, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/ovaHmfy3O6U/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBg-kG4rAi-BQ8Xkp2hOtOu-oXDLQ", + width: 405, + height: 720, + ), + ], + channel: Some(ChannelTag( + id: "UCh8gHdtzO2tXd593_bjErWg", + name: "Doobydobap", + avatar: [], + verification: Verified, + subscriber_count: Some(3970000), + )), + publish_date: "[date]", + publish_date_txt: None, + view_count: Some(17000000), + is_live: false, + is_short: true, + is_upcoming: false, + short_description: None, + ), + ], + ctoken: Some("4qmFsgLTChIYVUNoOGdIZHR6TzJ0WGQ1OTNfYmpFcldnGrYKOGdiaUJ4cmZCMUxjQndyWEJ3cXVCMEZTWkVGRFp6UjRZMGQ0TnpWTVRGZFZaMlUxVlUxUmVFUlRWRFZoTldWaVFrcDVVR1JxTnkxbFJUVkJZMWQzZUd4U01EUm1PR3hZZUdWM2FXWnFTWFJ0ZG1WV1RsOWpkM1pNZFhrd1pHVmtRMm94UTB0Tk4xaHRiVmwxYUZSWlRqVjFXVnBUVjJ4ek5HeGlaVkpNYVRoUmNsSjZVWHBvUTJJNVdEQTJWazFMVEZZd2RtaG5Wa1YwWW14TlpEaGxOR1pmVW5FMGVXNTFOSFZyVmxwSmMwNXNRMU5wVW5Wb2JUSlBhRTU0TUhFMFdtdE1VVUZ5V0hOWVZFaExZMDF5VWtoWlJEZFNVbmN0V2tWQmRWRXdaMHAyTTJkdWFIazVjVVpZTjIwM1RVbGxkR05EUTNwYU5HeEdkVlJtZG01ZlJXWmpkVkpvZFRrMWNFSnBWRFJSWDNaSFJHbzVVV2wzTjNrd2Nta3lkM0ZxWm10d1ZYbEdWMmhzUzA1TVMwVXhXSFExVFdzM2QyczRUMDFCYWpaVWNHdHlTMUZrTUhCRlZGSjVZalZzZWswdGIzaDNWR0kxTFRKbmRWUm1Vekl5VEhGUVFrZERlalpJT0RGcFNVOHlSV0pZTmtJNFNsZzBaRVpYYURoT05UZzVSMVJGT0ZseGRtRmpVMjVpYkZGM2NFRXljbXhUWjBwRlJpMUtOVXhKZGtJdGNIVjNhVWcyV210U2FWaGZhRVF5VVRSc1NtSkVaV2h6Y2t0R2RuTk5lRmxKY2xSRFVsQnBMVzk1ZHpOT1pteGtOVVF6Y0hGR1NYUjFWSFpsYkU1aGJqQnJOWFJRYW05a05sWjNkRUozWXpWSFpVdGZYMHMyVGxaS1F6YzVVRloxU0dSQ1kxUkdWbEozUjJGdVFVeEhNbGhzZUd4WVpYWk9ha2x3VG1kSGFHWm9XRkJEVVhKa2NFbHRjelo0UmxSeVZ6RlRNVWx0U25SVWFXNU5ORVpaUjNkdGFXdHZWVE5oU1c5bExYUTVkR2N6YUdSSVlWUkRZM1ZEY1RGR2J6ZEZXblZ5WDBGblNHdFdNUzFuZEdaellsVTNiRzR5YUdSV1dFNWpaRWxSVDBGclNHRmFRV05SY0hwblVWVkRiMUprTlMxeVZtVTBOR3RwVUVwd04wRlNOVWQyVTB0MlFYZHNZbDlyTVhGMGEySjRTME5JUWpOSE9VSnpZMDh6V0V0M1IyOXZVbEppTmpkSloweGhRMWhOYTJFelRIbHVRVEJYVWtsSlNGOVBSVFJGZUVNMFQxRkZVRXhhWWt0MFdqSlZNamxzTlZSMGVqY3lSR3hXVUd3M05uSktOVWhYUmpGdlNWWjRWVkJsTVc1Vk5rNXdhREZMTm01bVRFUk9abFJRZFhabWVHbFNORkk1VEdSc09WZEZkR3g2UlRFeVNuRmxNVk5TZWpScVdTMVlRakV6Wm1SdlJtbG1hbFY0VW1oRVZrOWtjWEV0VGtaTFVXeGlNVTVoU2xGaFZsUnNVM3BUZEhWNVZHeEhZMjFQYVRVd2FYQk9jVXR5ZG5jM2NUazBjVGRWTVVsZmQxbFJObFJqZDJNMlgwRkROSFZKYzBVMVpYVk1TUzA0Wm13MVZ6TXhSbnBPU1ZsTGRtWmZRbEl5UjNSc2MyNVVhV0ZIWkZaM1FSSWtOamN6TURRM1pHVXRNREF3TUMweVl6UmhMVGhoWm1FdE5UZ3lOREk1WW1RMU5tTTBJQVElM0Q%3D"), + visitor_data: Some("CgtzV3BXaUtSMHJsYyjkh_62BjIKCgJERRIEEgAgLw%3D%3D"), + endpoint: browse, + ), +) diff --git a/src/serializer/text.rs b/src/serializer/text.rs index 2395d41..f88cad4 100644 --- a/src/serializer/text.rs +++ b/src/serializer/text.rs @@ -469,6 +469,19 @@ impl<'de> DeserializeAs<'de, TextComponent> for AttributedText { } } +impl<'de> DeserializeAs<'de, String> for AttributedText { + fn deserialize_as(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + let components: TextComponents = AttributedText::deserialize_as(deserializer)?; + Ok(components + .0 + .into_iter() + .fold(String::new(), |acc, c| acc + c.as_str())) + } +} + impl TryFrom for crate::model::ChannelId { type Error = (); diff --git a/testfiles/channel/channel_shorts_20240910_lockup.json b/testfiles/channel/channel_shorts_20240910_lockup.json new file mode 100644 index 0000000..6b35fef --- /dev/null +++ b/testfiles/channel/channel_shorts_20240910_lockup.json @@ -0,0 +1,12760 @@ +{ + "responseContext": { + "visitorData": "CgtzV3BXaUtSMHJsYyjkh_62BjIKCgJERRIEEgAgLw%3D%3D", + "serviceTrackingParams": [ + { + "service": "GFEEDBACK", + "params": [ + { + "key": "route", + "value": "channel.shorts" + }, + { + "key": "is_owner", + "value": "false" + }, + { + "key": "is_alc_surface", + "value": "false" + }, + { + "key": "browse_id", + "value": "UCh8gHdtzO2tXd593_bjErWg" + }, + { + "key": "browse_id_prefix", + "value": "" + }, + { + "key": "logged_in", + "value": "0" + }, + { + "key": "e", + "value": "23804281,23966208,23986033,23998056,24004644,24077241,24108448,24166867,24181174,24241378,24290971,24439361,24453989,24542367,24547316,24548629,24550458,24566687,24699899,39325345,39325798,39325815,39325854,39326590,39326596,39326610,39326620,39326664,39326681,39326794,39326965,39326986,39327052,39327096,39327112,39327368,51009781,51010235,51017346,51020570,51025415,51030103,51037346,51037353,51041512,51050361,51053689,51057846,51057851,51063643,51064835,51072748,51091058,51095478,51098297,51098299,51111738,51112979,51115184,51116067,51123611,51124104,51133103,51141472,51144925,51149607,51151740,51152050,51157411,51157430,51157432,51157841,51157895,51158514,51160545,51162170,51165467,51169118,51175702,51176511,51177013,51178316,51178333,51178348,51178353,51178982,51183910,51184022,51184990,51186528,51187249,51190057,51190071,51190082,51190087,51190202,51190209,51190216,51190229,51190652,51195231,51197685,51197692,51197697,51197706,51200249,51200260,51200291,51200300,51201350,51201363,51201370,51201385,51201426,51201437,51201442,51201451,51204329,51204587,51209050,51212464,51212546,51212551,51212571,51213888,51217504,51219800,51220492,51221011,51221146,51223961,51224135,51226863,51227037,51227772,51228350,51228352,51228767,51228778,51228785,51228798,51228803,51228814,51230241,51230391,51230478,51231218,51231814,51234406,51236665,51237842,51239093,51241028,51242447,51242711,51242767,51243940,51244977,51246285,51246301,51247851,51248255,51248734,51248749,51249751,51249769,51250110,51250684,51251508,51251675,51251811,51251836,51255676,51255680,51255743,51256074,51256084,51256732,51257853,51257897,51257902,51257907,51257916,51258066,51258190,51258661,51258835,51260447,51260454,51263957,51264983,51265017,51265335,51265360,51265373,51266946,51269632,51269667,51270086,51270832,51272313,51272458,51272497,51272508,51272521,51272534,51272574,51272589,51273446,51275154,51275163,51275172,51275187,51275198,51276507,51277836,51278956,51279285,51280249,51280360,51281227,51281600,51281875,51282075,51282080,51282507,51284653,51285417,51287500,51288561,51288817,51293059" + }, + { + "key": "visitor_data", + "value": "CgtzV3BXaUtSMHJsYyjkh_62BjIKCgJERRIEEgAgLw%3D%3D" + } + ] + }, + { + "service": "GOOGLE_HELP", + "params": [ + { + "key": "browse_id", + "value": "UCh8gHdtzO2tXd593_bjErWg" + }, + { + "key": "browse_id_prefix", + "value": "" + } + ] + }, + { + "service": "CSI", + "params": [ + { + "key": "c", + "value": "WEB" + }, + { + "key": "cver", + "value": "2.20240909.01.00" + }, + { + "key": "yt_li", + "value": "0" + }, + { + "key": "GetChannelPage_rid", + "value": "0xd03b6be6a3f9f517" + } + ] + }, + { + "service": "GUIDED_HELP", + "params": [ + { + "key": "logged_in", + "value": "0" + } + ] + }, + { + "service": "ECATCHER", + "params": [ + { + "key": "client.version", + "value": "2.20240909" + }, + { + "key": "client.name", + "value": "WEB" + } + ] + } + ], + "maxAgeSeconds": 300, + "mainAppWebResponseContext": { + "loggedOut": true, + "trackingParam": "kx_fmPxhoPZRjiQJY8I843Oy_LDx8op9nln8jl5sEIlO7BwRgkuswmIBwOcCE59TDtslLKPQ-SS" + }, + "webResponseContextExtensionData": { + "hasDecorated": true + } + }, + "contents": { + "twoColumnBrowseResultsRenderer": { + "tabs": [ + { + "tabRenderer": { + "endpoint": { + "clickTrackingParams": "COwBEPCTARgFIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Doobydobap/featured", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCh8gHdtzO2tXd593_bjErWg", + "params": "EghmZWF0dXJlZPIGBAoCMgA%3D", + "canonicalBaseUrl": "/@Doobydobap" + } + }, + "title": "Home", + "trackingParams": "COwBEPCTARgFIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + { + "tabRenderer": { + "endpoint": { + "clickTrackingParams": "COsBEPCTARgGIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Doobydobap/videos", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCh8gHdtzO2tXd593_bjErWg", + "params": "EgZ2aWRlb3PyBgQKAjoA", + "canonicalBaseUrl": "/@Doobydobap" + } + }, + "title": "Videos", + "trackingParams": "COsBEPCTARgGIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + { + "tabRenderer": { + "endpoint": { + "clickTrackingParams": "CCMQ8JMBGAciEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Doobydobap/shorts", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCh8gHdtzO2tXd593_bjErWg", + "params": "EgZzaG9ydHPyBgUKA5oBAA%3D%3D", + "canonicalBaseUrl": "/@Doobydobap" + } + }, + "title": "Shorts", + "selected": true, + "content": { + "richGridRenderer": { + "contents": [ + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-a2G3YUk1GfQ", + "accessibilityText": "How to Make Tofu!!!, 175K views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/a2G3YUk1GfQ/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAqfY1naU9Y9fE037wNUvLVySzleQ", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "COgBEIf2BBgAIhMIre-HkoG3iAMVgkR6BR1KLBzyWhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2eaAQUIABDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/a2G3YUk1GfQ", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "a2G3YUk1GfQ", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSa8mLa8GcZgl0eZSzW_WeyBkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/a2G3YUk1GfQ/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "COoBELC1BCITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIABAjGo4G-gaKBgqHBkFSZEFDZzRhb3p1S2E4MC13YlctWGgzSWM2Rk13dnAxZ0JYOW5jNVR6Z3NSdmdzZExzZVYyVEE3YXlFeFd1bWlOc0JQR2xWQV9LMWM1bWU1QWdFUWNBc280N1ZWSXk2M3VGS2NHRHotMjV4N05uZzZXemV0Vi03WDRQZDdnVWZrYlIzYVpUcEpCNHZWRXdPSVgwZzk1TkcyMDk2VWJKaEFLZ2wxcjZxdlp3TTAyckhrS0JRZktEek9xS2xHUV9hd3I4bnZobkZBRXYwQkhfdmdLVHJHMklwV1lvVUhLZkFpNlRxMXlBV2c2MTJFMFNEVnBGQl9QcEt6RWJJdmJDN09xc1I4aGVCaXpuYjJEYnU4SEQxakFrVFBZd0dxbkN6OE1uTE1EVGg1NnRibkFveFFoanBuV3paV0RQZ3NyVWd1ZVg3NFRheG9qcmlGU0JJZHJhSU9Na2ZOSmlJWmhoMU55Z2RKcHN1NC1UT2J1cXlWMm5XMF9obTZPeGtyRTZMcmJtci1xLVJ0NTRhdWRqaWFLTVlyekRYS1pPSkI5eDEwdnlBZlJxbURILWdJWC1XcTN3cTMwRF9jdERmN0UwdHRrMWJJS3NTU0JWcXlKbzEzMmZ2QXEtUUxjR21wVGlqcUI5RXpLSUJ2dUJiR3lUQlFieTdJQnBwNzVYdExOTE1IRFhVNGtEUHBLMDBiLThvck04Y1djMndTeDhlUGcwaUdrWjZaM2o4QTBYNGpxTFBlVEp0VVZUQ2J6bGtSaUJ4NU1LcWc1MTZGYXlQd3B0Y2c2cWh3VDAzcGRzUWZjQl9wdl85NWlKLVNSTUJrVWNtc2tuRGFKWDZ6QUJtT2dmNnBZbU9RMll1d3AzdFZFNnAwX1R2WVgybnZxYzNRQU56THRXSXNkSmFVNWFFWW5kQ3RXVElhaG9MbzBNNjZ2UWRLWUdJUHhLRi00RmkyM21jd05ZbVZ5aERkbDNCUE4xUTFIUC1xbzh0ZnFObEtkSHZCUVpTNkNsUk10ZVZocUFCM1NmSFNzLWsqDQoLYTJHM1lVazFHZlEqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "COgBEIf2BBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "COkBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "COkBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COkBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "a2G3YUk1GfQ", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COkBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "a2G3YUk1GfQ" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "a2G3YUk1GfQ" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "COgBEIf2BBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "a2G3YUk1GfQ" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "How to Make Tofu!!!" + }, + "secondaryText": { + "content": "175K views" + } + }, + "loggingDirectives": { + "trackingParams": "COgBEIf2BBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "COcBEJmNBRgAIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-JE_JED26ZkY", + "accessibilityText": "I hate to admit it but it's the Best Korean Chinese Restaurant, 584K views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/JE_JED26ZkY/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAYSdHPLz9tVz3Bx2jmqeaRrhYaKw", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "COQBEIf2BBgBIhMIre-HkoG3iAMVgkR6BR1KLBzyWhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2eaAQUIABDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/JE_JED26ZkY", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "JE_JED26ZkY", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSbCRua_TQxs4OyBDLr1936xkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/JE_JED26ZkY/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "COYBELC1BCITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIARAjGo4G-gaKBgqHBkFSZEFDZzRNcFlHc2NrXy00dERDMXdYeml6WWRxM2pIM040RG9xZmZvelphSVg2b0RJOWJwVVkyS1ZNUFZXclFCN2FMbTVQclhzdjM1enN3a0xMaDBJN1FCbFpIeTVWbFUyZE5HRVBzWXBZTU5YNVRzemFWX0tDOVROOEpSXzFzSGlWX3laTDhqeE5Nbnh0ajZQX0plcnVfZzJjZkxnTEg4aUJPaXBmNVZzS29aZVBzSkk3cUotOU1Yblh1akx4V0wtSkVTNkdteExLRkkzbVF3M2I2MzZaMXdrRnB6N0NURnBGNkhvQTFUN1FOTElsYXh0U2RSdGIwS09FNUpIdW1rMUN3enNjSXZqc1hOR0JyQmRxSnQtbk01clU2YW42bnNlNEZfT25VTy1jTURyald5Z1BKS3U4V2dJcDhDXy1FVGxBQ1VKRjBBamtWOEdlYmlKdm9VZ3UwU0xVVFpZaHphLXVlRGppbHlYbjVsVWRVX0tBbFREUk5tRXhBTmZyZFpfNXRJMUJnNmQwV2xFZHU5VHMxRElvb1lmaW1PbTk4Nk43a3V2YVdMR0ZCTm5haWI5ckpPaWdjOXNRSElTQXc5SV9JVzJ1bUtSRzZxSzhJOWQ4YzQ3RXp0Z0NlZWFkV3p5S2VlVGVPSG9rX2xPV19fS09FNGNiTGVPOU1hanpGUVpVN25vY1lmdjFDeThkWlc5bGRJRnotUkhfQU84MzBwWFktUnZrQVQzVVdDbGVISGowaDd4cHJ4akU5YWxZb0FLdWZ1VnFpSDFlR2lzT2d0MDNaR29ndmdfWjZXVGpMVWdTT191STVQM1hLdUE5NUhId3FLWW00R0tMWW0wOTFRekthT3g3WFNFd1FkVGpFZm5maDRCRUR1a1BqQ3ZJakxXNXNvRm1xWlcyYmRwREx2cFdEMnFjM043Vkd2MnoyaVctQk9ibFpyMnl4Y1JhTlBid3o5X29HbWhYdWpMUm5qdnd3a215b3J2WU5TM2hvSEgtYVFwQng3Q2xBS1JNNkxOMW9PVHcqDQoLSkVfSkVEMjZaa1kqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "COQBEIf2BBgBIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "COUBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "COUBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COUBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "JE_JED26ZkY", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COUBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "JE_JED26ZkY" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "JE_JED26ZkY" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "COQBEIf2BBgBIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "JE_JED26ZkY" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "I hate to admit it but it's the Best Korean Chinese Restaurant" + }, + "secondaryText": { + "content": "584K views" + } + }, + "loggingDirectives": { + "trackingParams": "COQBEIf2BBgBIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "COMBEJmNBRgBIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-bTZdQn8cOqY", + "accessibilityText": "How Koreans Care for Bone Health (ft. Ox Bone Soup), 315K views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/bTZdQn8cOqY/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAu-wUVw07yyjH_DgBkR_wa6GVHuQ", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "COABEIf2BBgCIhMIre-HkoG3iAMVgkR6BR1KLBzyWhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2eaAQUIABDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/bTZdQn8cOqY", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "bTZdQn8cOqY", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSbRLR0qbvVaw2JPZ1MYJImHkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/bTZdQn8cOqY/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "COIBELC1BCITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIAhAjGo4G-gaKBgqHBkFSZEFDZzdOaXJ2bTk4eVBMWG9pSmtLMWVvVW9Ea3ZidF9qQ0hsYXVTOEUzenVaaE9IZzlvNmdoZVNvN0p6RDJ1MU50VzNaT1FiSHNha3JyZE9WM2x2R1B2SXhkVlQyWWNRZkhGSXZVUzN3VWpRQlVscVpxR1BlcTZjRkNENEg3M3VYV1RRYzFaMExCX2RXQ1FYNGtIN3NycVhrLTYyUXFKdDhzcVdOZG1TMF9hUHVESnV4R1h0TG1Nd0EtRjhKcDA4QU1HWU5RSkNmX1pvS0dlemZ0cGpkdFdBT3VQaHU4N2o4LWstOFZKT3BxRlUxY3V6a0tBTUdMa1hndjRpTUVzdThLX2NKOUNPdXp1TGR0N0o3eHlmMEhqOUxfdHlDXzYtS3BvT1Y1X3lPTFdiSE5MTUJJRGNrQ2llUVlTZUUyRlFwVlpQdnR6bFFyTWJrdzFNRExJMVhIZUZwYjFJb1hlV3pfRXZHdGVZLUJoMkdwejZkR0FickJTSmVQcV9XYVM4aHdud0RoUnI3N09Tb21zMExYMjF5Q2VvSzlaaEFjM0NVUkJIT0hFNlFGZml3bW1SUGxzYjhrZWgtMTYtV29pN0hsTFVEUEphaTl5VzZfNW4ybWE0OERrSnJjWXFwSGFzWXN1TDIwNExsakxVYWM4VlZkRTBlQ1JXYTRtSW1qUTBVc1NmTlRaRUhXM1hLY0hwQ0puR2R5c3FLUzJmbHUxNEd3M2Jwaml3ZjR4bm5uUE15MGZvdkxqbmpRMm8tZy1wWjlMSTNFUXV2WGR5QkF1d0Y2T3VNeG03Tm9aRUJYTzlDSFVqRUhDTzB1X3FhUGpsS3VaaFBQUUFvMlBHMGJVaTBhaUY4NWV6RVJDeXVUVkI3Q1dIc2ZzaVVjWU80UTdxR3JQM19ITzVZZFlhTUgtN3pENmRVRkdmVGJnVG44YncwUnZOZUZtSFhYeDZlN25oSlJ4eUk0Mk5DZ2NRQTBWTHlvTV9LTlNEN0hYVUZ6LTR3VmlNRW9LbWo4VkJwWG5UYl9waUEqDQoLYlRaZFFuOGNPcVkqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "COABEIf2BBgCIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "COEBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "COEBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "COEBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "bTZdQn8cOqY", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "COEBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "bTZdQn8cOqY" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "bTZdQn8cOqY" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "COABEIf2BBgCIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "bTZdQn8cOqY" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "How Koreans Care for Bone Health (ft. Ox Bone Soup)" + }, + "secondaryText": { + "content": "315K views" + } + }, + "loggingDirectives": { + "trackingParams": "COABEIf2BBgCIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CN8BEJmNBRgCIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-JPA-Cj2DwHU", + "accessibilityText": "Everything I ate working at Google Korea, 473K views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/JPA-Cj2DwHU/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLD3C2bxI4OhpHfhSanLIP_PXotiEw", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CNwBEIf2BBgDIhMIre-HkoG3iAMVgkR6BR1KLBzyWhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2eaAQUIABDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/JPA-Cj2DwHU", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "JPA-Cj2DwHU", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSZx2wZy6E0JTbVNR9dVEkbNkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/JPA-Cj2DwHU/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CN4BELC1BCITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIAxAjGo4G-gaKBgqHBkFSZEFDZzRTM1lzT3hHSnZwVElMZHNMeTQ3V3hBazVsT1g4YnhIWW44NmE3NXp3aHdYUXdUbUlNekVxSkxpcWtCX3J0cC1Odml1X1FwazBrUVFIb2VkeW5PMm9ZZGdBbG9WNUU2UFdkanZtZmpLN2xLNnpvLVhwd3RMUTNTVkFfcWlmc2ZidUd6RDFrUlM2NjV6VnRwLW9zdHNzR2tJMGE4WmZkbWZ6ZndwaXQxTmg2Z1Vnbmd3bjZwbVFuazJuLTRNbUtJaG9KYm9YZGtDdTAxdUszXzJES1ZIVG1ZU2lkU0FtanFEcmZyWEczSGIzMENvRkM1RnlFaFJCd1dEX0g4WDBKTEJJa0lqbWxzT1pPem41Z3JuNmNWTHltWmg0RGRRX09xMFJ6aHQtMndYYVJJMEsyUjF6Z3FVVFFTVkV2LWdTNFFhNEQzWmtPblIxSTJQOTV1WlB3VVQxaVFYb2ZxLU1lQ1l0cmNVQ3E3WVFONUNMc0hDNHhENkRlV0RCTHh5dGNMZ2NCT0ZsdWR5NjdmUDdpS3lNZG5DUWZiOHNHcTBVQ0MxYk5rVm5ZWnFVVWdTM3RObnNTNVVIRjdUOGdiVHZNXy1zUTlPOVVVZnFZNzRtS1c1TV9HZmNFUlh2amdSakVVLVpOUDF5SXYxWEV0QnJ2bVRBbEFjNEVuOE0xVmwxOUJJU1NPdjVRenJGTUVVdEpXYlQ0dTdvdmlrYWp5clNZcmVUcFlRTnpIVlliNzY3bkpKWkRwQUV3WUlZMUNyZkNyTVl3aUV1NlpXbU80ZmY4NW1tSVh5Vl8wYm9GRmpPamJqbDdYUzY0VDRTd09sV3ZCMm5wNXlMaHN3c19LTUhCVFNLTE1DVFNvVmZaRDV2WGV4a1UxLU9PbE43VWl5MUVmR09VUjY1SWE2NVdnQUd6S0F5UU1qWTBIMnlmUExHTDVJWm9HWm8zVVowVldkZDV4d1MxV05xNDlKRW0zZFlYVnpIcG9HX1lWNTZnakFqdmpfX0JqT2o2blNxR1lkQW9aOVkqDQoLSlBBLUNqMkR3SFUqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CNwBEIf2BBgDIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "CN0BEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CN0BEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CN0BEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "JPA-Cj2DwHU", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CN0BEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "JPA-Cj2DwHU" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "JPA-Cj2DwHU" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CNwBEIf2BBgDIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "JPA-Cj2DwHU" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "Everything I ate working at Google Korea" + }, + "secondaryText": { + "content": "473K views" + } + }, + "loggingDirectives": { + "trackingParams": "CNwBEIf2BBgDIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CNsBEJmNBRgDIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-r0vEv3N_0co", + "accessibilityText": "Grocery shopping at Korean Traditional Market, 573K views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/r0vEv3N_0co/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBNqn0N0bRs122y48mnGyVG4M1KUg", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CNgBEIf2BBgEIhMIre-HkoG3iAMVgkR6BR1KLBzyWhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2eaAQUIABDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/r0vEv3N_0co", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "r0vEv3N_0co", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSbYiWxTZdyI9KHZtwIYNJ0AkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/r0vEv3N_0co/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CNoBELC1BCITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIBBAjGo4G-gaKBgqHBkFSZEFDZzVnN2lDU0s5Yk14NmlsUW5GMEk4MU5qOHk1UHJXQW4yMnQwMlBoelhtVTVoZjQzVkgtMnFSbnJYdEtZZHVWQnNmY0FxdC02WnBiTzMycDNTcDJ2aXZFSHQ0R0dKb2NBOHE0cEYtOFZodjZ2aXJoMFlKelRfQUlZMHU1OEYtUlJIYV9JcUVkZGVFM2xwMlRmZ1M1eW0tS2hFRUtyQ0d0bkpEcXdSU0FUZEN3S0JzbHRYT0ZnZXJ4MGFGQXAtVVk4aG95MEs1ZUVBYzY4LUstV0RXaFRBVGtwNTJDY1Rjd3oxclVXanBuX3gyQ0l2VDQzcnhXNzVucUt3VlZqN25rUEk2MGxNUlRjTHIyTUozMzBITlctd1FWSnpVdEdKV3dNZUNZUnZ0STRtMnpFcXNjMDZmNThnamhxWXVzT0s4NXN2dEtZWDhpelFDVjY4UkVnWEZ1Q1RUVlNDXzBtZnhGZmpVZ19WcU50Qm5YaURTNlFYVm5tLVRpUTVHRElWTWl2Y1FlbHliR25TWFhXZHFvUDZYRTRFRzdodlZGcWJ5c1B6T1BlM2lfd05SMi1xTHpwT1laaDQxbEdycl85NzBGbkRXOE9rQjUtekwyMlFTeXV0OVVZLVRjQjNMdFIxZy1fUnlha2JtMWtqTnB2NVJUYzFpSW9kRXJWM2V1VVRnalQwZWd1UEtzcEN5THB6ZFpMdGRRTXFkTExEdkZfLXZuNWc3eUVaNk05QlU2bW41WkRQZWIxbGVoUktrZTFXVGRSQ1M4bklfSzlvM2FhYXUtenU2aWN5THNhcnNvbWZZdmEycTVLZUJQLVNMQXctSUNKckVtb2lqS19NRW1DdXRPU3NULWJtZ3FLUGQtSWVGT2REVjZuS0Rkb0RlTXdMaHkwY3dfcDJLOTI1UTB5cVFXRUEyS1lNMThLb2x0TEQzeVY0Q3NOckd5UTJJWjZvOVVGNzB1bnlTZDg5a1YteXZ0OTRPUVZxcjl0YUNldENmYlN0bXVsNjNuVndWUjVFQ3pka2cqDQoLcjB2RXYzTl8wY28qAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CNgBEIf2BBgEIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "CNkBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CNkBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNkBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "r0vEv3N_0co", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNkBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "r0vEv3N_0co" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "r0vEv3N_0co" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CNgBEIf2BBgEIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "r0vEv3N_0co" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "Grocery shopping at Korean Traditional Market" + }, + "secondaryText": { + "content": "573K views" + } + }, + "loggingDirectives": { + "trackingParams": "CNgBEIf2BBgEIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CNcBEJmNBRgEIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-_JmAkcRWZ5Q", + "accessibilityText": "Why Korean Rotisserie is Better than Fried Chicken, 1.1 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/_JmAkcRWZ5Q/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBplB8OHwQXnn0dacBTXSZBOgzDGQ", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CNQBEIf2BBgFIhMIre-HkoG3iAMVgkR6BR1KLBzyWhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2eaAQUIABDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/_JmAkcRWZ5Q", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "_JmAkcRWZ5Q", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSab34KEOPfIH_gvimwEXV57kAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/_JmAkcRWZ5Q/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CNYBELC1BCITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIBRAjGo4G-gaKBgqHBkFSZEFDZzYtUzZRRDVHeDZoMjJfMzBlM3VVNmxZM01sOGt6bnpEWmhOdFVaRWg2V18tZ2k4OU9jQkJ0QnJ2cFpDanNNVTZLckY0eVhKVWhpWnVIMEpsdDRNaFMzNWZ4ZFhaYkNnclZXbEtiZllUSklSblFmTldnR2h2eWN5eGRtbTBhSHA3TVEycTlqX0dscGJ0dzRmY0dlWXBkNUtVQy1LMzBmMm5xOTRFeFlPblR1Y3E2TkxvMHdWV2M3V251S0dtSjByLXM2clFEeElfTWVuV0NnclJERk9DSktKY3ppVnBkc2xFVXJ1WG9oRnIzNERmWi05ODNrWUcwYW1zTFlBNW5qS19LOW9ELTdnTHprR0ItVWRwTXdtd185YjFzWkNfOC1uUjRJa2NfNHJGRWkzQmtiRFBDTzRib29ESHNoYkw4dUJORF93ZzB2dXJYaXFlUlF3X0tOSTItQmJkdjVTN2RPY3h5Wi1JRzYwX2JWSVhBVWFMektOQXZMTVE0blNJekg4NS1IczN4RVBiVW9TSWF0M19yb3FTV1AwZ3pqWUprU2tFYXZjY2sxSnVTWEduVkIyWm9rQWxxaU1XbEZRa09wR3lPc3kyWGxfXzJzTHJUb0xmc25MV1NZN1RTN0xlZmFlaHFfQ0tWam84cUltUDdYT1owcE0tVTF5QTFyQnp4UUVscUgxazhBSGI3dGxmcXdwMGR4eHNkQzVPQW5CQUZWWDlrQTlYRk5CN2Z0NDdxandydHZjT1FzQVc4WFAwakI1cERkTTRVVkhFcjVYMDlfb3RRUnJZT3htSGNnSXRTNTBxY0IxLTNaLWtGX1FBNUFiMHJBN1F6OVdfWThUSnRwYjd6WDIxalh4YkpxLTJMNm9NaG9vZmNIUU5hT1ZQRUQ1eFV5cXJXdGJoMG8xTGlNUEpjOHJkS29rQmM0bk56SkxFZ0cyT0kwYWdZTnlVaUd0YnNfX0k1T2FuYWxvUzlMZ1pFX190cko4bkdjQ2lGdjdKQktZZHBDd2diQzd4NktyWFEqDQoLX0ptQWtjUldaNVEqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CNQBEIf2BBgFIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "CNUBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CNUBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNUBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "_JmAkcRWZ5Q", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNUBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "_JmAkcRWZ5Q" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "_JmAkcRWZ5Q" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CNQBEIf2BBgFIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "_JmAkcRWZ5Q" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "Why Korean Rotisserie is Better than Fried Chicken" + }, + "secondaryText": { + "content": "1.1M views" + } + }, + "loggingDirectives": { + "trackingParams": "CNQBEIf2BBgFIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CNMBEJmNBRgFIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-GMEhshFDslQ", + "accessibilityText": "it's not a phase mom, 727K views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/GMEhshFDslQ/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCw28yzJPzZn_BwuPRdvLnJXafKyQ", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CNABEIf2BBgGIhMIre-HkoG3iAMVgkR6BR1KLBzyWhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2eaAQUIABDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/GMEhshFDslQ", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "GMEhshFDslQ", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSYts1VvQo0FyHOZEXvsUSDqkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/GMEhshFDslQ/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CNIBELC1BCITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIBhAjGo4G-gaKBgqHBkFSZEFDZzV0VDd6NG5JVmVpelZKaGlKT1h0dElMc3Z1SGVyWXpZSkVOaS1BbDhxUkEtSFFhWjhTVExfc2J6TW91WlR3anR2clFZbFRrZWJab1UtZW1CN2ZHWlpCbTdNWkd2UlFtWVI1bDhJU2tmTmNPN0EtdzBGMXR2LUlwNm5ZcThBVjBuUWwyVGMxZXVqTVUwSWF5RlpyVm83eVpIUE4zb1RUVzNSdkRCSlB4cWRQS0FmNTRWNDN4YzUxeWVWd1ZUYkFlZnRKbDJGU3pLdjVUOFpWRkR0TjNmVWZCSks3WXVMOVVUZWtySTBRSmNyV1hfQ202dE1jT2dvNWlBQXBhVTNtNGhibWwtYzVNbzZhVUsyLWVvdUtFSmQ0VU5yeFd0c0ZaUkY3OG01Z242Wk4wY1dCWTg3Ny00cFctVzl3NC00WHlac3c0WGt1Z09xVGN5M2FyMnNFRTd5RmVsTTlYenJZa2pWWS00X3lGT0JQME9vMk9tUnkwWE5nSndvellldTNNUzVIOUhOUWFVUi1xOExDZGZGNnRlMEZMSFNRWjlzSG85RTYtNExpaDhXdHhITWtvbTJhQnU5RU1FMUF2Q2g2U19PMU9HTWQzd3pma0JKTU5ocWg1VzlHLS1Vb3dfZGhYaTNKcmVVbmRMbGNvQ1dwYnJGRHlULW5PWFdZOUxGWlk3aTF1bUN3YUJyVTc2NUhUNFhtZjR2Wnp4U0tBaWJCeTd6a0hEc1A0c2k4djVlaVBEY1BhNUtLTHRheXpNeWVvMTJGNzlwTmtMY29mWWp1MVNNVFVKTXhRcjhtajhqckNKSGpPaXM1cnRFOGozdm52MDVIN2hrLUQ0aHIzWXhMM0FnNHJRT2dZU1dGei0xRUJqVFBfcDhVZGlqWGlQRExfMGlkblpVNFFyRUd4dEF5cVJJN0RMMFg2SXFlTTBGMWZaMXBXNUQ3cG5HdnpQczRORFFIc0tGUzlpY0lXVnlXdnZSZEtkemxlaG5TcWF3cGVhT3pRNHlIUHJwQVpYdXRFb1EqDQoLR01FaHNoRkRzbFEqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CNABEIf2BBgGIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "CNEBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CNEBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CNEBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "GMEhshFDslQ", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CNEBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "GMEhshFDslQ" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "GMEhshFDslQ" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CNABEIf2BBgGIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "GMEhshFDslQ" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "it's not a phase mom" + }, + "secondaryText": { + "content": "727K views" + } + }, + "loggingDirectives": { + "trackingParams": "CNABEIf2BBgGIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CM8BEJmNBRgGIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-4E-mV5b__mE", + "accessibilityText": "How Koreans Cool Down During the Summer, 1.1 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/4E-mV5b__mE/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAB8LBYtb5weLD9V0mtAUgO2F3HgQ", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CMwBEIf2BBgHIhMIre-HkoG3iAMVgkR6BR1KLBzyWhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2eaAQUIABDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/4E-mV5b__mE", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "4E-mV5b__mE", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSa3mBB7hmByEqJsZc1Xmp49kAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/4E-mV5b__mE/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CM4BELC1BCITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIBxAjGo4G-gaKBgqHBkFSZEFDZzY5X0tUcV9FdU91R01BYm5xNGJJZ2pZbExzZTZTRXNaM0xUSVN1Tm9xaVlMemZiaTJUQVJ4UkVJUWYyR1A3VGpwb0tuaXB1Zi1DZVFxaGh1SkptQWhhQVNMR3VoN0pMMlpuWlpidXNBNjNHNWgtTnRxWE9id0ZCSXByQktYbmdvWGlBQTNFSWFfUHQtLUZuTkZJdFM3U29kamRaa29mUmRjbzNEZ1dxZGdTUEpzSHpxa21Fc2NRclZEMmVhWmVvbi1VY2tCNHJLRk1HZTZCbXFIV0xsTFdvQy1tVFFLTEVNeWlfX3BvNTUzRTV0T1E2VEk4bGlReTNkNzg5UHlxeEk4bDhYSVAtUkpEZklfUVRpWXBOQ2ZYVmFoQnViQnJUeVpvam9yNmRxclRvOXJiVWJEUDBiOHIzOGRiU2pZSWsxN1JHOXBmN2NhSXJJWFpiRWFkQ2tnaFpqb0NtYjNSRXU0clEyNzBvOEFYTThNV2FyTnJtQUotb3FIRnlCamFXQS1XRFBHUTJnV0haTFplRUZGWEZxX0R4aXA4VjVGNVNWRk1lMHpWeHpxeVBLMlpCb0pSbUZWenBjZzE0NUIyNkswWHdkTFJ3QmVMTGs0Nk9NY01QdmRLUXI1ckNuMTVjbGFxOHB0bEZOSGNoLUdCTm5nbWl3dk5PczZWa1N5cUl4cGYzeVl4b3EyZFVTUHpQempTdm13N2lxTXZuUG1uMEVibW9CWkxhSnRmaEo2MXVLUll5OWR1YjR2eVctT19JVjIyTTJNNV9lYl9xakNKX3hBTVkxLTVSa3VqaV9UdmlmTmhxRENPX1huN3lBWmE3VDR5NWdHV0ZBbTR0QkxpSV91RG5rdWR2LWlBSG9TNHcxellrQS1BVFdXM09yZHVGRmY0bmJEWGV1TUg5aE11MnJhaTA0U05nZEZkMzhqVjNKeE1UOUlkU0JZazhHUlR3dDU3R0ppVThjZEUzV0kyLXJYSjQ0YnYtMjYyYnJmdnlZZml2M01zd1JDOU4tOE9JZFkqDQoLNEUtbVY1Yl9fbUUqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CMwBEIf2BBgHIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "CM0BEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CM0BEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CM0BEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "4E-mV5b__mE", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CM0BEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "4E-mV5b__mE" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "4E-mV5b__mE" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CMwBEIf2BBgHIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "4E-mV5b__mE" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "How Koreans Cool Down During the Summer" + }, + "secondaryText": { + "content": "1.1M views" + } + }, + "loggingDirectives": { + "trackingParams": "CMwBEIf2BBgHIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CMsBEJmNBRgHIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-ik4Lpb_7B0I", + "accessibilityText": "FRIDGE TOUR, 329K views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/ik4Lpb_7B0I/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBeYS7x2nMoFY4Lt2Pc1rhCXbcNXA", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CMgBEIf2BBgIIhMIre-HkoG3iAMVgkR6BR1KLBzyWhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2eaAQUIABDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/ik4Lpb_7B0I", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "ik4Lpb_7B0I", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSZFiyFxZL_OdBTaTACrkbUEkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/ik4Lpb_7B0I/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CMoBELC1BCITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYICBAjGo4G-gaKBgqHBkFSZEFDZzVsNEl3ZTJCdDVmMUpMZXFsRU1LWHhaUUZ5U1FKQmFHMFFITVdnWGNZeFBjZ2RfSV9XQ0h6anQ0ZDZwTkFjNWpvaWhtU2tLQ2hSbzF1Zmt3bkkycXAwT0ZYMzVPTk9iRXduc18wTzJZa0V3c2YyWWlmaDhUbjB6TEJpejBNRHR1b01VcFlmWW5SYnJfX1QxOVpXdTZCMTFXTzh3TmtQZllyN2FQU3dIMnlyNlh2OFVoUlVvT05wcm1YYXpfd203R0I0akppLS1CRUR1OEFVSXBWWFV0SjlIMGNQMTIydzNsc2liN19NV2hmNXEyYXYwakppVnNzQm9sV3A5bmJKV3VucEVSLVVweVFjejhYZEg5a3J6X3pRUWtlTzRoQjhGRmJWRzVLVkp5OGRHdUs4M2VVcnp0T1NEbU5zSEdqSnVpLXZQcUc5UnhIMVpCRFFvTE9pTTJiZHllSEtZX1RMbUhSYzNIRkpKSHdVMjRvbEg5UzFhODdGa1UyN0I1VVRrbDNFcFBFamZsbDczbS0xWnRoVzd0MkhNbldiSzRBaFdsSVhyMFpPVDlpMUlCbF8tOExYSHFpSU1sZ1ppTDRHQUFHQzVUR2dvYkdmazdRQU01TUh4V0lwZlNGRTEzdjFKbHVxQ1pBekdwNk9pcGpnYlN1SDZYM1RzYXlxbGljZVdjczBRYXdKTGVDY1dzSkNNUHhTc0JTcjJwZ2pfUldGT1RFTWtwOTNjbEMxUlNmVnptb2ZwQl9MbTF3a3pvcXpYMjhGRW9oS1BJOXJPU3RlRG5YamlTX2tnNkZwVFE5UVdWMHdBYnZacnRxYWwySGF5SUlHbk5DWTJSR29OVEhMaVMxQm1ock9Qam82Qk9MY2JwdUIyUEVEU1ZWOGVjM2U1amtGNWFvUUpLVEVhWG9Jang2UnhSbF9GNC1rM2UyVERBQlA5Z3RLb05pN09vbkhLU25oX2JWT19xLXlyM3pPdXRneWFZbDJiNlZXSEd1OW16cENKcC1vdDc4d1VIMTh5RmsqDQoLaWs0THBiXzdCMEkqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CMgBEIf2BBgIIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "CMkBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CMkBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMkBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "ik4Lpb_7B0I", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMkBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "ik4Lpb_7B0I" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "ik4Lpb_7B0I" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CMgBEIf2BBgIIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "ik4Lpb_7B0I" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "FRIDGE TOUR" + }, + "secondaryText": { + "content": "329K views" + } + }, + "loggingDirectives": { + "trackingParams": "CMgBEIf2BBgIIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CMcBEJmNBRgIIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-H61ZlmZ4Amg", + "accessibilityText": "It's 3AM and I woke up severely dehydrated, 644K views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/H61ZlmZ4Amg/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDuI1JRbT2u2-AdVv4_28Sqtp_HZA", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CMQBEIf2BBgJIhMIre-HkoG3iAMVgkR6BR1KLBzyWhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2eaAQUIABDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/H61ZlmZ4Amg", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "H61ZlmZ4Amg", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSaQ5D1fFxRN2AFllbPkSTwSkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/H61ZlmZ4Amg/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CMYBELC1BCITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYICRAjGo4G-gaKBgqHBkFSZEFDZzdKLVlhTWRxTUcxNW5lZlFHekxNNFJ2UkNzWUdkWUxhMmp3V1AyZk9GbHVCN1hjYWY5UFFVNmRub0ZzenAzaUYzM3M4S3lyRDdvZTB6M0F4WEQwWnFjOUdLYWh0X1B6WG1JdENJMkVCYWFXejAzb3d4N3lTcHNXWnZZYTJ3c3JfNy1iMVBrTkdHWWVaZFdGNmtScDdNTU1DWURYd016VDg1VDkwOWdqZ1o5OFJRR0l2Wkg5ZDg1ZXBBNFFvcGpoVVEyOFZLb3NhMmJ3RjVUeFpQb21ZRWtqbnkyQVIwZE1IY0Z6R2lGR3UtTUxiTzhIVFpFOWZwdV9ON1cwWm5QYjdFY3FONWRJY3llWHQ5cVRxNUFiYjY1bEJ3YzVHMHZQcEZjZTU1anJKaUNpNXZSZDRyd2lNZEtPUDM4WHRXaVA3T0FxbHdsTlVickhxckVuOHZ2V0d2NW8xVXktRTJYSXpST2tFQkpuSzBQc0xtckJ1akhDNG9vZFptNGlkM2FuclQxX3N3TmJaNDlBd0tpWl9zWUpFa2ZIRlJOMC1ZTHNmSmRaNnlfdV9fdThVQXpDQTNGRGg4X2ZLS0MweGxGMm45NXl6UUlMa0c3TFJRbmMxcTlpUkZrM1pGVm5sdjVrY0o0WUktRnI5aFhnbEFpc0diUnhxZENDak00M29OYWQzWUljQTRreW1IYkp5VExlVmVmNzJPVE5INExpS1EzTXZINUxEb3FHcUx2aWIwMmg3QVJ2MVNiNlNPdkI3TU42SkdOUGxQLTcwTjZ3akkyZDJrVTN5OTRYN1I1TGQwZzZKU0RYRnk3SHdFWFl2VUdsMWN1R2tfZjdOeExDRllxd1FISlBzUmtrTDZGdkZZY1NxM0c4VnlLMGtQTXlEcGU2ckM0U0RzN1NYQXFOaHBPVUlTdTJMSXlmYmxwVXNPUWVOMlpCLVNYZWlLZTJieVhZZ3dDQ2N1WFh5aVJ5ZjliTTRRUXIzaGtNMXVXM1BxdUFFeTJ6ZVd4NTFpNWlReDhtZDQqDQoLSDYxWmxtWjRBbWcqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CMQBEIf2BBgJIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "CMUBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CMUBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMUBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "H61ZlmZ4Amg", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMUBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "H61ZlmZ4Amg" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "H61ZlmZ4Amg" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CMQBEIf2BBgJIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "H61ZlmZ4Amg" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "It's 3AM and I woke up severely dehydrated" + }, + "secondaryText": { + "content": "644K views" + } + }, + "loggingDirectives": { + "trackingParams": "CMQBEIf2BBgJIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CMMBEJmNBRgJIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-HgcURF4Pwmw", + "accessibilityText": "inner beauty is more important?, 304K views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/HgcURF4Pwmw/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLA-HQSkVueTDY8ATVMsFKu-jspwaA", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CMABEIf2BBgKIhMIre-HkoG3iAMVgkR6BR1KLBzyWhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2eaAQUIABDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/HgcURF4Pwmw", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "HgcURF4Pwmw", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSbS9TUhKzsRs_06vgrS20pmkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/HgcURF4Pwmw/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CMIBELC1BCITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIChAjGo4G-gaKBgqHBkFSZEFDZzQ1TlBjOG5QVlhsTEVtUjZvM1g3U3luaHBZeDcwdEQxNl9KY2xtZmxHT0E0Mzh6VWsweERpOGt3bGszdUlqbXJQX0ZqcXRpSjBkTEVQMFZUc3EteFNFa2FpSUZSRmU4NG5qeHRObDUwLXlvTUNESmF2WHJhekVmOWh3cTFkVWRWZmtzdWQ5MVg1bGNWMll1QXR6bGlUckZWY1NoNzNacVFaQl84WXB5V2VoelRUQ1lEN0lVbzFzWkNzSVN1S2s0Q2psZ0llTDB3T1pIVndhMDAzdWhuNHpyTVc4WXluOTNDS1ZyWWJhUExFd1FnSzNlOTBWLXZNY0MtMTJ0ZExLQXg0NmtDSVlRTm1lN1p0QjlyU0Jxa1FFaVBwT0pCcXpiUEV1OVBFaWtIVzdaTHY5eGhTVFpUbUtBdW5zMUJBRzd2anZFY1gzYUFvT1IzVDdMZTZ4SUhuN2RGd0p4NE55aVhkZ3ZPRmZsQU9jNlViQmlTZzF0VkFGZWtkamhNYVZvYnNoZGdpc1dsUTBPLTFNWnRYTEhhcHRKOS00UWdULW9Bdl9vcnA3VjJYSm01c3ZlWm5jNW9Bdm9qejlhUW55bjBpUHZKVXNEaU02NGhraUctU2R2VGpidzV3bkt3akNuN081STlWemlqMm9TYTBDM3lEZXZSUFBBSEU3OS0wbElkeVFydGhYbXdaWWZsaVFSSEFYMlp3bmppMlVoOXJjM3VjVXJpMk05NEFKZkVtRGczSE5YaG5FVTltRmdzY09ES0ZYRmVfT3FaeE95Q0szYkdsUG9CaUNVLXlCSFp1M0ZSUXhaT0E1M19ETDg2elktOWpsaFUwRXhHTVZEOVlXTWFZTVd5M1FQOG9hRXVHS08ySFhtQlJSdXc1LTFMaW5IWHEyd0xnM1JWYW5zcWF2OXlqV0JIekdGWll5dV9HdGJYSV9mYjZZSU1QeHNSUXdTWUtOQ3duck1aQ1BTNlpsMGFESnRfb1JDMjFUTWJnWVpoSW1CWXMwQUhGcEduRFBJR2sqDQoLSGdjVVJGNFB3bXcqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CMABEIf2BBgKIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "CMEBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CMEBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CMEBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "HgcURF4Pwmw", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CMEBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "HgcURF4Pwmw" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "HgcURF4Pwmw" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CMABEIf2BBgKIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "HgcURF4Pwmw" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "inner beauty is more important?" + }, + "secondaryText": { + "content": "304K views" + } + }, + "loggingDirectives": { + "trackingParams": "CMABEIf2BBgKIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CL8BEJmNBRgKIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-n546pQdYDvE", + "accessibilityText": "I didn’t put 2 and 2 together, 380K views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/n546pQdYDvE/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLD59RasvbdYQM2uT6sCk7qFJr0cmg", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CLwBEIf2BBgLIhMIre-HkoG3iAMVgkR6BR1KLBzyWhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2eaAQUIABDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/n546pQdYDvE", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "n546pQdYDvE", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSaINn3G9Ar-QdbubEgZfPl8kAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/n546pQdYDvE/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CL4BELC1BCITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYICxAjGo4G-gaKBgqHBkFSZEFDZzVOMU5Fb0oxeEFPdFc4NzdYeW1wNVpKR2d6d2JLWW9PbEluSHpkUnpybmpTQTdLZ1NGdWVXWVB3OFV3a1M0SWtKOUxveXlkYzVSM0dMR3FGVC0ySFdkX1FKS01oT3plRVBtVS1yTjQ1ZmRaMHFVdFdFOHA4UjZudTMxZkVnNUFwb1luM0VSM2VfWmJjWU1CS3d2YmFXMkh2QzJ6QThmVi1oNi1XSVpiUlB0U2VFbUU2aVhsRVJzblVod2VOY2Y1b3VXMl9ycDd3M3RTbzRmRnJXLU9HSTZmMVBLNHNnMEtmSlZHVlYtTnpDbUMzVUU3MEE3YUNnQmItbFFFSEdPWG03NV9ZXzY5akdOd2gwczF3bm5FQ1ZPNjZneC10aGU0WHpKb1dUd2hCc3hlcFd4NEJ6QzVlZndrNVB3aVZ6blBueFJLbFR2MGdyUTFjYlMtb3ctME5yT2JmTEZtQzRUdW9JN1ppdDlWdlFZa2RGMkJLQVNZU0RBQUNHRVVOeGo0Wmx6Z1MzRG1yUGtKM3lKcEtxejlhc1F6eTR3N3kxaHVDUGJfSFlCQTc0ZUN5VHMybjJEYVB1UWV6Y3E2eXJWREdkcUVOOUJOYUQyOWJyOVN1Z1NFUVFJNzF2a1lwNDI5UnBsdEs4QjlxQVV6ZU1jWWRGdDlCbUdIcXZSa1Q4aHlCV1JHQXhaaVdpdmJKbHBQOW9iV0xNUWVFak9XMWp1Q3pyVHhsSmZkWG5sNDBocmxxZnRQd0JCSUFBdWZPajlzUmpWRS1Wa1dDMXd0SEdLT1hoZ0VDeENmOWlrRnROX3JVNHd0NXlhNFBqU1BVbEFwa1RuaVlqM0ROY1d0ejA5U3NsVGVJN2FzTU0yeEZSekpzdkFvajlPN2ZXdkpUUlBqS05QaDNqSmhxbGQzbFc4MzlLb2VFdm9FUmpsUEdIUGYwMlNWb0xYbDJBMTJJV25GS3RIM3VOWVhLZlB6VTl3V1JkWkhrZzZTZDhFNVNUc0tHOExaR2d5T0J4anRRTUdmVk0qDQoLbjU0NnBRZFlEdkUqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CLwBEIf2BBgLIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "CL0BEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CL0BEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CL0BEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "n546pQdYDvE", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CL0BEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "n546pQdYDvE" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "n546pQdYDvE" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CLwBEIf2BBgLIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "n546pQdYDvE" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "I didn’t put 2 and 2 together" + }, + "secondaryText": { + "content": "380K views" + } + }, + "loggingDirectives": { + "trackingParams": "CLwBEIf2BBgLIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CLsBEJmNBRgLIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-rXdHpkkOVMM", + "accessibilityText": "second guessing myself, 851K views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/rXdHpkkOVMM/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAmQQIyDeLL9dbuM7DLsNZPmxWDTw", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CLgBEIf2BBgMIhMIre-HkoG3iAMVgkR6BR1KLBzyWhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2eaAQUIABDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/rXdHpkkOVMM", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "rXdHpkkOVMM", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSbI5hMBdHPivhsgsNEW8F2ukAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/rXdHpkkOVMM/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CLoBELC1BCITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIDBAjGo4G-gaKBgqHBkFSZEFDZzZTWkZLQTUxa1NpNmdLaEQxQ19VVHJoVEVYdkFmeTJqQWcyMmJzRHh4VHlHZ1pQX2psRnFGeTI1T0VDU090VzF5M1diaC04RktJdkp1NmZJOTR2dWhGUFlqR2ZTSUJWcWNJS3BMeGlkc3dxOXhsUTRTOGctRVVpTTNUWktqb21ZczFPSWFMMTdNNVJQXzd2YXBIcTl1MzNzM1daNjlmYmpCWjB5U1hpWWVsWHFyTUxGSllGREhJTGNuQzBIM0VPbU1RMzBWNXE0bEptVEtBZmtKb1VvU2ZFMmpIeDBGakowUkRmOHl3ZmxvSkJiMzJnSmM0MlRISFVSSmtyN09YRGZOam1xRC1ycXZvcFFiZVA2RXFwcGJrTjRWb3A2Q250ZXcxbzZFbXdnNGdlaWZsQndzMDRPdkI3Qy1qSURjNThFTHZUTThCRUMxejdwdzdLQkRSYkJTTTh4ZXFxeGsyYmN6ZF9ZYWp6N0tEMlJwYlVtRFJldDZOeXlDcXh1TGtBaDU3QnBIWWhRMTZxSHk1OFdoUnVBMnVnaE1qbk50LW5TbmpyS25BSWxld3BwRDBFeEtBcGxCZmFZZE5MVlZZdDkxb0RTRjB4d29FTGpHbVZaWmNUREpIWHQySjB2eVhsMG9kcm1HNDYtTkhLZlJzd1BIdzdvX1FFMk5JcjdSanNma3ZHZjcxVHNoNlQtSFoySE8yVDF2UWUxalpNSkVidnc5emNwam5wMmpEZDRyUklDT1pBV2FWYnYySEd1Slc5Unl4XzlOejNXS0FnVkp2WTFTZDQ5cFBuWjk0VEdxRXRKZU5CMUc3TE9JQlFrS3AxMGJ3X0hzeno5SVNUX181M19WNGFVenRzTk8tSW9qelYtSGVVU0FrSWZ6UWdPWjRUSjkyMUdlZl9FcDdLb19wTHJaVGVfbUZHQ0lDTGdyYjVZSXBBWTFNNnd0OFlRRnJaRnhSb0dQOW1XQW5Ga29zZkEyX21JM3dBWTF6alNkZi1RRmowcWxNekY4ZWZyYldnSUEqDQoLclhkSHBra09WTU0qAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CLgBEIf2BBgMIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "CLkBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CLkBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLkBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "rXdHpkkOVMM", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLkBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "rXdHpkkOVMM" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "rXdHpkkOVMM" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CLgBEIf2BBgMIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "rXdHpkkOVMM" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "second guessing myself" + }, + "secondaryText": { + "content": "851K views" + } + }, + "loggingDirectives": { + "trackingParams": "CLgBEIf2BBgMIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CLcBEJmNBRgMIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-FFEXYhqhBkc", + "accessibilityText": "my mommy issues, 1.1 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/FFEXYhqhBkc/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLB-Mf-HbJ_FC428SAewcBoFb8QK-w", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CLQBEIf2BBgNIhMIre-HkoG3iAMVgkR6BR1KLBzyWhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2eaAQUIABDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/FFEXYhqhBkc", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "FFEXYhqhBkc", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSZiJfoQPfZBXWLbF-qCnmnekAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/FFEXYhqhBkc/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CLYBELC1BCITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIDRAjGo4G-gaKBgqHBkFSZEFDZzVLN2F1Sk14aFBQNlZ1d2lLcHNCUDlVWU0tZnRCd2laZWk0eVFOSkE5ZlVld3R4RkpBQjBOaXRxRFVVVWU2X09ZTzVzNFRneXhuakhqRFhzbERMaXVfeE1JdnFFb2U2a3FwdzRaTUgzdGRudUxtdnB4Ujd2ZGNWakNUQmVJVkpXcXNBT2xwYmdJa3J2TnlUN0pENkdYRDYtOG5HN1NHcDJ2Nl9pYXpxczhUbU0zczRqTl9sQnZWYllEbmN1Z21lXzNDcDZXQmI3eFVpdGJDc0dveVBFdzFrYUhKcTNpQ3RuNnNsTGtIdHZNc0c5TThJbzIyZkpGdjhzOXE5OVNBY3R0QkpNd244LTc2MURsMXNId1c4dkR3WkZFbmg0a0ljUllmM01Gd0NMMEdKUVFtSzZDbzRjazEya1R6VEwwRGtjNHFZbTZXb0k1QWFQZWRPcUh0QXFfMUpYQnBCeHBzeHh0MEV5SmQ4aFRJeVQ4RUY1LVROT09jOHc1SVhwbzZDYzg5V0JNck4tS3F1ZG4tYVRCcWJzbDF5NlllWGExOHFlUXhqU3lkRFBmdXNob2trSkxwNEs2cUJ3TWlyOE1QZ0lxd3ZrbnZMNzY4YkxHRXBIMFc2a0pNcDQyZW5xc3B2X3N3a3pfODkzS21IY19KU0UyMlhaUDBnZl9nZW03aWNxaWE4cHp6SkpuTEJYN3hGcUhEWnd5N0NFcVZNckR1bmN4RHpwWGFERndCcTlRalhreFBMcnpja19uSVVpYjFHZ0RsdXg4ZGJ2Q3VLVnlCNHU3bWZvS3J1QmNmeDhoRkk3UFdZYlUxVDZHcmRiNTZ1Y1dkRGdSMDB5RnVzYzNudUdCbzZTWldoN2N0ZXJSVFllUlhPS3g3SEphd0s4MGtyb0JHbkVOV01ZRzNibGd2WVg2RjQwRlY2SFhZYjdtUDZYTDVkc3dkY0E1RlVSOTFGR25aaC1oak05ajMtVndqRGUxYUVUYTZsaW9RY3VLZ0RScE0xQ09BQklCcERmVHRZTFkqDQoLRkZFWFlocWhCa2MqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CLQBEIf2BBgNIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "CLUBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CLUBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLUBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "FFEXYhqhBkc", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLUBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "FFEXYhqhBkc" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "FFEXYhqhBkc" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CLQBEIf2BBgNIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "FFEXYhqhBkc" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "my mommy issues" + }, + "secondaryText": { + "content": "1.1M views" + } + }, + "loggingDirectives": { + "trackingParams": "CLQBEIf2BBgNIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CLMBEJmNBRgNIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-YcYOfGiI8Qc", + "accessibilityText": "corny🌽, 796K views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/YcYOfGiI8Qc/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBsO443BQx7MedTrjPooUYo1XaTYQ", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CLABEIf2BBgOIhMIre-HkoG3iAMVgkR6BR1KLBzyWhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2eaAQUIABDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/YcYOfGiI8Qc", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "YcYOfGiI8Qc", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSbeNPKWFqQ2DuUcLpM5jVSPkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/YcYOfGiI8Qc/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CLIBELC1BCITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIDhAjGo4G-gaKBgqHBkFSZEFDZzRuMENCazhRYURmdHJ2MFVxQnJMemR6M3JCZ3VvZHQ5Ny1tcS1xTEpJbHBJOGJFMExNdUxqeFh6Q0c2T0ZmMk84bHVuUlJPTEdKanFXM2J1Q2JEYzZrekVwR3NzdU05MUFEVVdFcDBoa0RMd1Jub1hwOWFZc1czQUJ4YXdLbWFhSWo3cW9UYmRCTkZ3eVZDWHpDczhxZEtmQWFyeVpWTFJQUl9aM3pCb2x4TTBlMXRaa1NBOExjaU9HY3BiOV9zdTVSZ2w2UTFodTNIRjNVWGZiaDVub21mSjlNZUJKdHVYZGJHMDQ2ZUtaVEY2Rnl2Tk53OWRFLVk1Z2dqRnoxZHJaRllwRThTd2ZEa0lYUWFsb2dLVUxNWmFQTTk3VHdUNlpIajJqNFVGcEFFTk1MNkNVLWMzVWVCUVFTTVdiaTU0R2VKcVk1Ymo4aS1DMkRGaXlrc3Joa2haMXFYWmVKdVZ4cnNqUzRETGdzdTVWVGxLd3RSX0pFZXhncG5saTdDeGw2emFGUWt6Y0ZrLVNDN245NjFIMVo1TTBfbm5FazJYblByYWJZdzJxOG5EUlFza2ZNbUdoOVhsVWd6TVVta1lkUHJtcWtFRlZnbEM0VEphTDZKRVgyVXg1Z2I5ZWJIMGZCM0ZTV2FNLUpoWC1iSGlNTEljM2N3NWtKYmtfaHlwclg5amxlZkhtOXRUNnZKOVl4M1ZiZjZSUXEyazRsOHNPTGtOUVdKcDlvRm9oS3dCT2UwcThTV1pUMU9XeVdydXA0dWFzQzQ3dVd5T1hNSWUtSzd3NVg3blpZcWtLcV8yN09OZ0FpYzJtekxEMjVwSnA2clg5RU82cWdWNmpkZFAwTVRUenI3N2dVaGtwMW1VbXJLd2VuWGZpZnltdTZScHlMUUtYSzByeTN6Q3hBYXl3Y05wNlNCV2tqdmp3YzhGQVl5QVpjcmpBam56SVU1R2lKTjhhbUtLWnpsUWtpZ1dVY2FYUnBoaXhPZWdEd3FVZkdXblo4UmdDXzBnOElwd2sqDQoLWWNZT2ZHaUk4UWMqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CLABEIf2BBgOIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "CLEBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CLEBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CLEBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "YcYOfGiI8Qc", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CLEBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "YcYOfGiI8Qc" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "YcYOfGiI8Qc" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CLABEIf2BBgOIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "YcYOfGiI8Qc" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "corny🌽" + }, + "secondaryText": { + "content": "796K views" + } + }, + "loggingDirectives": { + "trackingParams": "CLABEIf2BBgOIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CK8BEJmNBRgOIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-tL_SXzcXkXk", + "accessibilityText": "Why I love Korean Street Food, 1.6 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/tL_SXzcXkXk/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCm3lN0GQYfD3G0ybyWo_3IXujR6g", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CKwBEIf2BBgPIhMIre-HkoG3iAMVgkR6BR1KLBzyWhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2eaAQUIABDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/tL_SXzcXkXk", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "tL_SXzcXkXk", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSYVQCirI0is1aaIhyE8wfbTkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/tL_SXzcXkXk/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CK4BELC1BCITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIDxAjGo4G-gaKBgqHBkFSZEFDZzVaSnhMcWdXRVF5akhkZzFjMkZQUjlrbC1SbWE4VDFpWm82VHpwNFk1VEp1MUw4WURUcTQzOEZZRFpmcU5OOEdjajBuUjJRRnFTNEZ5SldTZy10YnlaaTFTVklLRHp6RGJId3hjVm5sNExmaE1tUFY4b3JPeXZpaDVVVEdpc3licV9QbDNkQklLT0ZwZnJ6VmdfVEJURmJrb1BiSnFtSmltcUJWVVliYUVCSVlUYm1uMWF3RHJRZS1LVWprVzZWSHQ4dWlsS1V4c0xJQ1RuN0xhWVFpN192TTAwcGpYWk9sYmp6aGRDOUZLc0pndkgwVlBxdWlUOURoSnZEYUxubWRQOENKVXRQc3Z4SkRRQUYzX2UzbnRzbV91MG8yVVplZXp0NkZLQTFhbWd1N211NmhuT2xvdEZXQ1RNMk9aMTZtek1JN3FPU05iTlRQMktVVkpVOGw1c21HZUw0ZGZRTlRYM19wQlRQTXpVNjNxbmdEREVhQUJ1Y1ZqVUY4eFByeHZ6Sk5ZZTdxdUxaNzQ0OERCSkR6TkJDN2hFY3o1dUtVSHZONEhla2xkc2lHdUd5M2hLdHRrVnVUc3JqMHBMaDF4Ukk5X1BPbGFuLXJFX0lVZ3RMaEZNamhuemFIX29makJycERhY2xEbkQyUEE0RnZwdE1SVmFabFFsRDlXRWpHTWJPS2xFUkdteWlSYmRCd1loaXhSSW5DYk5sUkN0ZXRJd25DM3pFQ0VQWXI2c3gwTVlabm95eUtPVjF3d1lmMFJpWlpnc0ZjbWVjTGZxdm9KSnYyUl9rTmtwYTNZV3FIYlMxVGlHV2VCREN6SmtjRnJSUDFkTnZXamdObWcwRUJaOFcxellpZUUxMmJpWjR1SDZhRmllVlpRVEdndnRwSHZzVEJrWC1jWDVwTW9xcVhrdlFsWkdDTHY2LVhwTWZBNnU4UmVqYWROQjlITXktcTVrWnY3SVl0OTBkOTNXZHlJT0pVcFg0dm5XRV9fQjhCSzdUX1hkM3hSZ2o5UExmdEkqDQoLdExfU1h6Y1hrWGsqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CKwBEIf2BBgPIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "CK0BEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CK0BEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CK0BEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "tL_SXzcXkXk", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CK0BEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "tL_SXzcXkXk" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "tL_SXzcXkXk" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CKwBEIf2BBgPIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "tL_SXzcXkXk" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "Why I love Korean Street Food" + }, + "secondaryText": { + "content": "1.6M views" + } + }, + "loggingDirectives": { + "trackingParams": "CKwBEIf2BBgPIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CKsBEJmNBRgPIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-fm5w61xb4CE", + "accessibilityText": "Army Stew, 1.3 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/fm5w61xb4CE/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDOSejJhkdWIMBsfC_Q3tjV9HrCiQ", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CKgBEIf2BBgQIhMIre-HkoG3iAMVgkR6BR1KLBzyWhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2eaAQUIABDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/fm5w61xb4CE", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "fm5w61xb4CE", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSZkxNcKcWD1UOOgWoM-V2U-kAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/fm5w61xb4CE/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CKoBELC1BCITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIEBAjGo4G-gaKBgqHBkFSZEFDZzRzU3dZYTlWZ01TbnZaZnRwLUlFMFpnTVZ1NmVtcEVtOFBaWGFjNkhjNUs1d3ZEQ2hyeUI1Qnl3aXZic3JvX1N2eFdDcHNzeDF2dFdYMFZSLWxNVE5haENQaDlpYTg2azVTS29Za1dJNVJMOXg2T3p6MjIza3JwazNpRmlsd0E4emw2ODJPT1p6dGRlOHFjU05Zak52bEdUb2pYdU42a0U0TGstWEhwdVFBUlk4SF9xbjRVcmRYU0w4c3JFZGVtSGVqa1E3VGNZaDd2SFAzYU01dS1FMTY0Q3RXaTZMaUZsQ0N3VURFY0VLVlg0SFo1MDdwc241UUlMV0tSd2RaeXNfNzRVbTJNN0pSMUhITTFiS1BsazRzbEE5Q3V2cWVtTnVzQmVlSVVzTVNKM05Ec3BiRWJSNGdOb3pkTm4yWkNadmZrb2ljQ1djaG90aEMyUGdqMnFlcVhRVGJzdjRfX1V6QlZsanppLVBpbHdteHRwSGRSV2pOajJlcDlHYXZMdWlwWHRacEl4cF9ydi1uN3dMSVNoME1CSTZ3cVJqWUhkbkZsWGYzOFhqNi1vM255T3hCX2pzSzR6MTE2cUJSWXVkTnBIQ2xjckFqbXdBLWpaSnF3c1dScERuQnhfRFRfMHFhMUIyNGFlRzd4TVVKYVpjZy1lSi1iSmhXd3RjbjRSenRUYW9ub2l4Q0FfQ1NsSG9CWWE3RmtGc08wQi16M3ZFQmI1UjY4NTdtZjMxcXozLUVEcng5d2pad2xVOHE4eW5rT3U4bjVRSjR5dHFXajVaN0Z5amlLa1BoTUU3ODh2eUNJaTYyc0hidDhxdjBVc0s5YV9UT0pvVDZmczNsRE9paGh0VEYyY1hvTkl1NjJpX2taYTZHV0hPNmRWOXgxa1BXZVJ4eXlJcU9IUkluQWVvWW15eDhVdVdHVFpWYXgxRDFrUzJLYzNxVXN3N01IQXd4MlF0QmJCSjdpY0JSZWJ2cjRqQ1hrLUlCc0FJTl9PdmVKeDR5d21qR2VvNzhQbWsqDQoLZm01dzYxeGI0Q0UqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CKgBEIf2BBgQIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "CKkBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CKkBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKkBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "fm5w61xb4CE", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKkBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "fm5w61xb4CE" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "fm5w61xb4CE" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CKgBEIf2BBgQIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "fm5w61xb4CE" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "Army Stew" + }, + "secondaryText": { + "content": "1.3M views" + } + }, + "loggingDirectives": { + "trackingParams": "CKgBEIf2BBgQIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CKcBEJmNBRgQIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-5Y_lvEx1bfE", + "accessibilityText": "the truth behind krusty krabs, 1.3 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/5Y_lvEx1bfE/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLD7_rr5yHK2v1hdoq5bWWJlUgU4ng", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CKQBEIf2BBgRIhMIre-HkoG3iAMVgkR6BR1KLBzyWhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2eaAQUIABDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/5Y_lvEx1bfE", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "5Y_lvEx1bfE", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSahbCiVqgAk97zBI_sclJ6CkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/5Y_lvEx1bfE/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CKYBELC1BCITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIERAjGo4G-gaKBgqHBkFSZEFDZzRocmlhN0F1VlMwMVZMNnV4a3BPVTlDelI4ZXZMMHlEREFNQlNHVnRGNmdRMzZMcmZ2U3lQbExGV21maERQUWlfTHAyNzRpY3kyZUtwQ000RGdmTTJnMXZnckNzbll6MVlZaXk3bVU5VTdHMEc2MEJRcHNjRDlma29UbVdsV0w3VmlnTUxJM0hic0FJTlFXRUdUSmJHZS1JMWNyNUhhNXlLeXNVdG81aEd0Q1dYYWxWNkNiLXpNcVJIRFlGNWlTclY5WjctRV9NZ2pnQjZ6ZC1WUVlnQ2drUFBYUjV2c2ptX2pLNGVockx3cWswWWY3bW9vS21wS2R6ajRsV2drMlZvSGh0Y0d6a2V3aGY0ZGdHbEwyaWJsV0d4MHZBcTM2eGFmQXdsNE1DT293TExLLXhROHhBdlQwbWhCU0lWZko0UlE2U1NCV3ZVVElQUHBDc3J6UFBwZ1pUVEx3QTZPS2FlS1c4cGZtcEZHVFdUdndScGZkNnh2Zkt4NjBzc2RiXzBXdzJnOEZ5bWF6Q3JYVW1NbXV3VGtwczFTbEQtM2k2R2xqRy1Rd1FJejg3RlNaTGhiNi1mV3BHbC1BSjNiQ1B0S3Fwbk9WNTdNODdiQWxIZk10RkVIMzktTGprWjFKdE5ESmdRb2tXU2R2U1FUYVA3SHdCUXZGb2l1S0FJRWhLUnJnZW55Rm14M1cyNndJQ3JkbVJZand0WkRxQTUwY2tSSVpVX01Ud3ZzOHZ0cWtwSmpkR05hWVhJTjBlSFdaaEkyaWxFM2FuNGtZX1Z2RXhxeDdoUlN5N0VQRVBQclFsTzUxbXhXbFE5c2FwQWJnSU5pQmptR2xfVjl6UHZoRFVIeDhXdkxJYVJiX2tscUhMVXBDUVBmQzh0MUQ5VzNQUUR5dzdhaTNfMFN0XzFmSXRMemI3UVI4cXh3bUU5eXhyZEliMjIya3Vrc3pkUU1IZGhxM1Bmb3R6dVpkMmRJRXlwZFpKamlJakEwSWtwdWNNNjNLSDlRNVo0Zkhtbkt2eFUqDQoLNVlfbHZFeDFiZkUqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CKQBEIf2BBgRIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "CKUBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CKUBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKUBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "5Y_lvEx1bfE", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKUBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "5Y_lvEx1bfE" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "5Y_lvEx1bfE" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CKQBEIf2BBgRIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "5Y_lvEx1bfE" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "the truth behind krusty krabs" + }, + "secondaryText": { + "content": "1.3M views" + } + }, + "loggingDirectives": { + "trackingParams": "CKQBEIf2BBgRIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CKMBEJmNBRgRIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-3fp2dMhUbGk", + "accessibilityText": "Runaway Dumplings, 1.5 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/3fp2dMhUbGk/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDNwu9O27CTJZqXa47_kZyNnPLYVg", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CKABEIf2BBgSIhMIre-HkoG3iAMVgkR6BR1KLBzyWhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2eaAQUIABDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/3fp2dMhUbGk", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "3fp2dMhUbGk", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSb1N6MQDTPNuBROO3rsyJZ5kAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/3fp2dMhUbGk/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CKIBELC1BCITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIEhAjGo4G-gaKBgqHBkFSZEFDZzV0RS1sTUV4Q24tX25UZlFyM3hTMkxLQTBSSVREdlZVdnNyU2Vfb3FwNWVlRVpIWm5CMDBKMU5IS1pnbkM5OXZRejNuMTA3enFoeWJTUERkcGJyM3R2MkxJT3hPajdwUWRRdU5vZG1PSW53bU5TVmR6Y0V4dTZ4Nm5fU244NDFOQVdOUGxuaVhoOUd2WWVxYUYxMnJmM2pIUmJJUDRJMnZqWUNhM0p3OWdscHdqM29sRGtuZExjX2JHcGtTS05TRlc4Tld0aFprcVlmeTE4X1VXRlVOZHZpY25NbnQ5NmRBZS10b0FOQnpPZzJvYWhFQXhIY0ZLUEVCVVY4TzdLVEVRNXR4dzZOX2U1OGhPc1NuWFNLczcxZ1lya3ZCRzM1em43aE9feTZkSXB0Q3lkbDRvSUpJNF9OVjBwUHZJbi1UaElzaVIwWUlJOUtJcVd3bjR1MFNGZ29GazdGQzZUWlVKZ1hjdGpHdXMtUG1uZlhsdlJieE9JWDFOTlptWUtYNnVRalhrVHRuX1NNRjB3YlhuM20ta3ZYbDRwRFBFaE1Wa2dhbzY3M2p5RUs0aUxYQV96S1RLNXMzT2hDUlAzYkxqcDJ3Ynpfc2xmdjNpMVpJZFVDcjE0YjJKTi1kc05XZ3lISTNRZWRySDg1Ry1xWloyMFRxRmo0WnFBNFpFVmpGdDZubW9PYnVQU3ZEV2FIUlQyM2dkWGVfWTliVl80Rmg4bVlHQU9hNzdRaDF6aUZBTEd4RFhHSk9tdWJrUHlxYzE2SGhHdFRNakFSbDFwZXVKczBFczV5dVRxZWJOdmRHLXlVZjU5Z2MwNUNLWTlRODNheHJDUS05UGVmRExUbGF2NUJtelF5MEZSVEdweGtzOWRRa1hXZE1PZExDR0VJdEVlcmJPc1FjLVRlWGI0OTdNemhjVnZLMkZHdlRBQkxCUUhlOURpMEJrajFEN3ppdHZ2RFlxWmlZaVlGaUJCck9jUEJHNWdFdFZIWlZhM2szOHJPVGU1VjhyVzNMNkd2LW8qDQoLM2ZwMmRNaFViR2sqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CKABEIf2BBgSIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "CKEBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CKEBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CKEBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "3fp2dMhUbGk", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CKEBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "3fp2dMhUbGk" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "3fp2dMhUbGk" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CKABEIf2BBgSIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "3fp2dMhUbGk" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "Runaway Dumplings" + }, + "secondaryText": { + "content": "1.5M views" + } + }, + "loggingDirectives": { + "trackingParams": "CKABEIf2BBgSIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CJ8BEJmNBRgSIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-LJAt2RHBhYA", + "accessibilityText": "Rating Korean Traditional Desserts out of 10!!!, 2 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/LJAt2RHBhYA/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBs1ulw5vkRkR_SG6pp7Wuy90QK0Q", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CJwBEIf2BBgTIhMIre-HkoG3iAMVgkR6BR1KLBzyWhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2eaAQUIABDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/LJAt2RHBhYA", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "LJAt2RHBhYA", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSYb-Z6soNrHwGduWSs3e4tjkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/LJAt2RHBhYA/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CJ4BELC1BCITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIExAjGo4G-gaKBgqHBkFSZEFDZzRSZVRDc3RzTHBOWDh0WkxLMTM2dzcwSnhoWUhtVHhFVXpVYllaYUM3LWxzbFhpc1RnYjYzU0lIMnJlR2VzMzVFT0tNaGNjZU9UeWFFblVPOGhNVk5MNDJyNlZTRUVVOUhaUExUdUJudlpWNEFEVzg0eVNHRHNSX0RPaTFsT3FIdGtMODEwVGM1VzJLdTBJQUhMUDdDd1dac0pGUW9DWTU4cUdsYTlOcUxpbXY1VGNQTkFkV2ZhLUsxNGJuV2hyNURuNDBZT3BHUGVYRjM5a2dLdzRXVktpV1ZUZkExcF85UER5MXNpSGE0djg0Z3hDSExlVnVWSkJhMWZRRU5EQWloNnFZMFI5WDl5V2o3VFNXLTZFcndzZVhnR2sxY29sQTE2TkI0LVhVN1BzSTFJeVY4aXRmN253LU5YVnlvYWhFb2dqdGg1VGl6NTN5RG5YV0xSaE0wRXBKejlLLUdiWnB1MV9NT0E4SDNEYjlFYlpxczByQzNSR3kyZGFuNzNUMjZ5a003N3lSVTE3eER2bGJKWXRGdUVXbDVFNzhZZExiZjYzWW5weGZQUjNiS2J1Y0xMbTh2RGd2WnpxOWViX0F4NXVuVFFDeVJRU290MVdQdEphMlFoTUdyNDNhUzE0b3lyVU9pVGkwS2l3ZXUwMUZtQ3EwUDhKM1NTWXdOWWI2TE1Pb01mV2lHV1dzUWRqUXc2bjh6VnlNdk00Q215dUxLT0RzdVBBMmxieGU5bjVYTVJDNi1lMTRPNXk0VEVNOGR4OGZkQklCVU1pX3g5RFdKbDVOeEJNd0t5dG5XUDJ6cWNaYWpRdHBXVnhWS3VGb19IVG5uOUF3cXYxUVhhOEhBZlpSOUZtOTUzbGtqVDhrRUxiWjkyUFhvWjNfZHdaMlg3SnZPeFZXSkRPbThVVVdiQVFhZF9jUDFCMHJYM3JOY0Mzb2Y2MF9Da2dheWJyYlRXTnYzbWE4X3p4TUkwWEVWdlNKcVpGWlNiZXdnck9QSnZtSUtmdk1PcldIUHVlZmcqDQoLTEpBdDJSSEJoWUEqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CJwBEIf2BBgTIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "CJ0BEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CJ0BEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJ0BEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "LJAt2RHBhYA", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJ0BEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "LJAt2RHBhYA" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "LJAt2RHBhYA" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CJwBEIf2BBgTIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "LJAt2RHBhYA" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "Rating Korean Traditional Desserts out of 10!!!" + }, + "secondaryText": { + "content": "2M views" + } + }, + "loggingDirectives": { + "trackingParams": "CJwBEIf2BBgTIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CJsBEJmNBRgTIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-apL97zDoAY0", + "accessibilityText": "best bang for your buck, 1.6 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/apL97zDoAY0/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDTJ5F-kzUTGBPolJgqloUZWve4GQ", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CJgBEIf2BBgUIhMIre-HkoG3iAMVgkR6BR1KLBzyWhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2eaAQUIABDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/apL97zDoAY0", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "apL97zDoAY0", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSaBzbxXxzntcxcEvJBdee7gkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/apL97zDoAY0/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CJoBELC1BCITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIFBAjGo4G-gaKBgqHBkFSZEFDZzRqVzVzQV94OWVlXzZjOVk5MkZ5RVRVd1JQQnZXa1J1alF0b3RIbUU5RDJyUWJ3VjZZVnI1dWN2N3FRTHk4aVZhQ1Z4S1d1Z0I1ZnUwZlJlcndXU2xTaWdOZ2xGUVFpQ0YyR3dkRm1hOFVsMWZ1cHlpTzNJUFJKNTdUdjdHR2JuZjJfYzdta1oyVWxDSWJPRkNFel9zWVhLRWpGSlVqRkhIM1ZuUXgwcXc4QmVKdVV6UkNRMmVOUXRHSzBJbllBeXBEYXJfUkRfbk9fQXpIb3RiZTdLM0xmRnhhSXRmbjV2TFREcXdlNHpYRlkxdWZkbzJ0WFJvbWtuZGJHVXFQNXZCWG9BdEhHNmNvMmI3Wktpemw4MFZpTndFU2lnbWt3aHMxbFhuX3ZlNHpWUmIwRHp6a1gzX0FqSEN3a1QwZVJkTFRQc1hLN0EyQ1VHd2lTRlRDQmpDRU9xcUh6bVE2ZkFYRmViLU92a2M1RmJjaHRtQlIxRWY3U043c3daWGxaYlZGYjc2RGpDTTliZDVUTzNBU041Q29xaGZmbnJ1Um04Y25RSlduWmc0WUp2b09pZW5sdDV0RUNTMDZheF9qY1JXRGN3aV9icmhSNWdpSVJHaU5uckJBSnhyX29VM0Z1bjhkTHNEalNudW9XWFNiM3RzTmFvU3ZxR0J0NUJHd1ZHeFlkZHZ2UTVxTmk4a2g5WEVqcVNpRWR0SHdWRnRybGdJVXJqdTNMTXBiNVBkSVpNb1JSOWFyNmRUc3R2V1djUVE5SURGcklLNFViUjltb0ZVOUN6dXdmbnZOSG9wbDYxQnBrbll3ZDgtS0RmOXJyNExlenZsTWRKY1A3c3BBLWRKUXhFNkdzRlh1TW1XS3p1VEI3Tmd6NGtwel9iVk9OOG41cS00QjFybUxCbnZWYzExR2duTmZkT21QVkRZY09wNzBSaDZXa0VHR3BhSEpKSGJta0ZaalpkVFZWakNTdVVYZkJyLTgwV1JvOTh4eURVOFpRZEdQSzJDVTI0QnBKQTgqDQoLYXBMOTd6RG9BWTAqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CJgBEIf2BBgUIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "CJkBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CJkBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJkBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "apL97zDoAY0", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJkBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "apL97zDoAY0" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "apL97zDoAY0" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CJgBEIf2BBgUIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "apL97zDoAY0" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "best bang for your buck" + }, + "secondaryText": { + "content": "1.6M views" + } + }, + "loggingDirectives": { + "trackingParams": "CJgBEIf2BBgUIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CJcBEJmNBRgUIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-6au8hFOnUXI", + "accessibilityText": "don't judge a book by its cover, 4 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/6au8hFOnUXI/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCACe2S2wBTr0KVSFWzGda61k8Epw", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CJQBEIf2BBgVIhMIre-HkoG3iAMVgkR6BR1KLBzyWhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2eaAQUIABDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/6au8hFOnUXI", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "6au8hFOnUXI", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSZUGWcqBvgaH_Sqgun8GTYCkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/6au8hFOnUXI/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CJYBELC1BCITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIFRAjGo4G-gaKBgqHBkFSZEFDZzZMLVA2SEJQUDdSSEhlY0o3YUgwVzcxcVZnaF9WMmdTODZvUks0WW9TWFd0d28yeWUxZ3pzcmNZMTMzckUzVzU0a0FpeGl4V19ndWxiel9OektSWGlSTEg2dlViVUUxN0tONUFwSWhYLTIyd2x3YnIwSHdiNkVqTnlod1JpZ3c3dE9hbFgyVkdUajBQbGhtdVRwa3EtZTVrcXdpc3JrbFdjVjE4VGp1eFdJbXE4WHNkSDQ3YTVBMFREZDh5NV9MZGpKSlRNT0QzeDBQZUYzNWFLNHAtb1RJTFB5SmVEelhlRjdCQ0taa29tSDNEdGZjMVdqa0VBejhOYnBXenhaOEcya09NMjJKM1owcTVNRHlrY3hJNTBJNUNEeHVTT1hJejNXOVRPNkttb2xwa2xIekZfWlJ3ZlZLTmZrSWpVdnQxNnZ5MkpfYWlIZVhWUTN0M1ByM3dDZmZIX2Njb0QxT1VaUFFTU01zcEZSMnppb0kwTlhDWElmVHJybUs1YTJaaVg2QS0xM3FFcm1jY0I3WkJjcFBZamlGNlN3ZmRJWWFKaWxkNXQxS3VHWEQtaDJ3bVhFX2V1Q1BBUy1jSkIyWUxLUnE5eG1jTDZKbWdHS2NiRDJ6d2FnNGFqcDAxSTlqUjF2emJCWEFfT3JZOEJFYkZCNTFReW5JQ2o4RHJvbEJjT0VzZW1feWxIdWhtdkRtTjI5ZmJ3QWlJcVMxVmxEdWVMVk14WU96LUh5bGtfOWpSSzU3NTZjTGxqUUh1Wmo0SmVGOVF2cWlXRTNEZmxodWlPRTFtc3doclBWNUQxUGpyUWM4a3R2ZEJFblZGVWx4azltRmxqZUJ2V1ZMX00wWjBtTEtCYW51VlJBcnExTlhaX2hJVkM4MUZOMGc2aG8zc244VmFiZGQ5eXVCcURVZkNWelllQ01qVFJEY09oVVVINEdFY0pfRmNBVlpNNnhJcVVGV180cERlMWRjUjBmb1lickdhRmRacm8wbXlULTkzVTVCTzZKWGw2TkktSHJvYlUqDQoLNmF1OGhGT25VWEkqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CJQBEIf2BBgVIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "CJUBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CJUBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJUBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "6au8hFOnUXI", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJUBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "6au8hFOnUXI" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "6au8hFOnUXI" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CJQBEIf2BBgVIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "6au8hFOnUXI" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "don't judge a book by its cover" + }, + "secondaryText": { + "content": "4M views" + } + }, + "loggingDirectives": { + "trackingParams": "CJQBEIf2BBgVIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CJMBEJmNBRgVIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-4wJAOnnPYsI", + "accessibilityText": "I ❤️ feet, 1.6 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/4wJAOnnPYsI/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCwFBUxJXMhuiv1ZevlM6r2x7Wq-Q", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CJABEIf2BBgWIhMIre-HkoG3iAMVgkR6BR1KLBzyWhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2eaAQUIABDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/4wJAOnnPYsI", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "4wJAOnnPYsI", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSbazt-nsFhB0h2WQqM3acRkkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/4wJAOnnPYsI/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CJIBELC1BCITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIFhAjGo4G-gaKBgqHBkFSZEFDZzd4NnJYX1lfNGlfM2ZMdm85dHhhRnFjWjB2NzVpX2I5eERYRVZ2M2NBcl94dnplVVh3NThEYkdOeXl4aDhWekdFQ1p2RzFKMElCN2RkNkxCRC1xM3QxNzZ1SkI0UlJVUFVwVC1MX0I1Z0U3eGhNQnlUV3FqaU1ZMUF3ejZGbjhaUFJlb0lfemNqTE5WWnJYQm03UG1ENk9kelpyTjBuOUMxZ1lHR1N0YnhYQ1ZDR0syOUU4aHRCeWE0UWR4RUtzVVRoWlc1QVJqVTh5bVlVcGgxNWQ1bDlrQnJlYkhpQkVzLVFuLUlhRUF2U2l5bGhCdTBfazdqMm9jdDFCUUtxdFh0MnlPd3RSNWREUFk2SjVBZHlfRmZoYktaMEs2U1R3enc0NHJ6UzE1eUw3MDVwV21KckJjQ203Y2w3cEk5TTBrVVlDT2x6eUU0eGUyVGctN1V5Y0VmUjRDdUNIOGcyZ2FYc1djU3I1cU9KNWNnTHFyckJKa2VOdEl5VkJyWVhkQzl6YXNRYWwyWFcxQmQxbEt5dXMtem9idjkxNVE4ekdKd0xQZkI4ckpHR1J1V3ZDWlZQU0FlWGd4ZVp5eGhxamJOb1p6amJYY280XzQwZEtzUjdRN2Vuc19xYS0yMnZrZFp5Y1RpNG1IbUFtcE84c1F1OEdmdzREeWtjakxjd2xUc0xiR1c3ZF9xaEVKdm5EMGEyQVFNeWJvUkg2UGVvdVZqZ3dKNmxOSEdIZEtKSE41aWdZU0ZxOGJsQWVyUEliVndpc0VwMjZrVlVQZkVJUkxNdVFYMUVycmo1UlMyTzllMnZ3Z0RfMUFnSHhENnExY2RVMjZxWW9ZZFRyNm5BNlVnNVowZVJJc0xlUnJkTEp0cUxCZzc5RnFlakVCWWJzcHJ4ZXpxZEdaamJDdVhRY2ZfeTc0ZlkyRUhLcXZBVTlOcllTT2pZU3hOdy1oNVJQbGlGMldwMkh2MEpPQWtoS3A4OEtONGgtTk9FWXZqRDl2RllCM0h1SVljakIyZzFOVUkqDQoLNHdKQU9ublBZc0kqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CJABEIf2BBgWIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "CJEBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CJEBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CJEBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "4wJAOnnPYsI", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CJEBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "4wJAOnnPYsI" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "4wJAOnnPYsI" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CJABEIf2BBgWIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "4wJAOnnPYsI" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "I ❤️ feet" + }, + "secondaryText": { + "content": "1.6M views" + } + }, + "loggingDirectives": { + "trackingParams": "CJABEIf2BBgWIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CI8BEJmNBRgWIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-DDsWN4HcoWQ", + "accessibilityText": "Trying North Korean Food 🇰🇵 and Rating it out of 10, 3.4 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/DDsWN4HcoWQ/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBIBARX0aoleQ1NFxd_DGhhHT4gDg", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CIwBEIf2BBgXIhMIre-HkoG3iAMVgkR6BR1KLBzyWhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2eaAQUIABDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/DDsWN4HcoWQ", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "DDsWN4HcoWQ", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSYn3r9dcU10l7MfpJSeNmLwkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/DDsWN4HcoWQ/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CI4BELC1BCITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIFxAjGo4G-gaKBgqHBkFSZEFDZzRqMUplTEtpdE9Rc200TTFVRWVZN3B0Umd6dk9wc3JhckZGQXRSSG5VZWRHblRSNl8xdUkwT041aUFTNWFjaGJqRzhEMzVfbFRCSFJGblIyTUtPZy01RzlMYzQ0VW50R3M5YjVRam84bS1tQkU4cV9YNVZCd0dVam55dmh6WkpUMDBsSU5DMS01aUZPVk1CWkVkRWZiZmphUFl5a1EtWXJRVzNfVUp6SWNjS0ZBSXlqRWZMNlJzdnRXYjBvbDVhR3U3R1JjZ1Y0a1dDNG1IZGR5eTBCNWNFYlZ1NDdvUlo1dUtDbnNpLXlVWDlkRXhUeTFwUzktWFB4czY1MTNjQnk2YXY5eHc3RGktY21FemR0MU9fdjIwV0xxN0hBVzVLYUtCTWJwQ0U1dmZOREk3S2t5R3RaOTdaR0tqdV9Pb2JtU2xUdk1DSW1pMmhPMGh4X0E4TkZPTVZKdWxrQ09jUDJ4d29peGdPMUZGMlA0VXltNmF5YjZOZXAzSTB6dlNPZHIxdjMwVTlEX0hUWmw2TFFkWGMtVjR1cmpsSnF6S0trb0x1SnI5Y3VqVWZiRjJqQXVwLTZuTktDSkxvcUxIR3ZxanFDQWpLWmZMOEhGR2xNYW83ekdERXJHWnpBRzdjR21aekxrZi1DWmFod1NXMEZHcG1HUS12NXZuSXBGc2RMYW05WmR4dWJ5dndVdDNhbGlvLUFqdXBJckxEQ3ZVa2RlSWYyRFg4bU1jaHlEeFowUTVXRTAtZTQ4V1JQcmhhTkE0Q2NMS0ZHSjNGb2xVbEtwcDJ4WUFyaGVZWjgwVVI4ZlF6WGNyWURPRk05bWhNZTBJaWVxQkVlVThPRnNmTHNrT2laUTdqb0NRa25kUnQ0TmhSZFNscWpWNUpYTWI2Ri0yd3FJeHpDSzRQQUFrTTY0RmN1WGIwZEVNT1d2UmFqTGRycUdXNkMwNGFzMlNXLWVFVC1kYlVJQ2RKTktmb2p3OFlqajVoemlYdGU3c1RTUGpVSUE1cFp0Zlh3d05hV0kqDQoLRERzV040SGNvV1EqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CIwBEIf2BBgXIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "CI0BEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CI0BEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CI0BEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "DDsWN4HcoWQ", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CI0BEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "DDsWN4HcoWQ" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "DDsWN4HcoWQ" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CIwBEIf2BBgXIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "DDsWN4HcoWQ" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "Trying North Korean Food 🇰🇵 and Rating it out of 10" + }, + "secondaryText": { + "content": "3.4M views" + } + }, + "loggingDirectives": { + "trackingParams": "CIwBEIf2BBgXIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CIsBEJmNBRgXIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-oMIIEp8JMT0", + "accessibilityText": "get that bag 💰, 658K views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/oMIIEp8JMT0/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBKsO5-KQzqU-bJinHsPDWrEQBIzQ", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CIgBEIf2BBgYIhMIre-HkoG3iAMVgkR6BR1KLBzyWhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2eaAQUIABDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/oMIIEp8JMT0", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "oMIIEp8JMT0", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSbYmb8aE7CQYywHuaGh983-kAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/oMIIEp8JMT0/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CIoBELC1BCITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIGBAjGo4G-gaKBgqHBkFSZEFDZzR6QkZDaER1MUxMUjRIYnJBQzExRWg2anJuQnhBaG1GdXMyOWkwekFwUGpDTmM1eVYyQzRfNVRPMEE4c2ZZOU9XTlhHUGZGY2dXdGJhQm5MQ3JfY0I5bTZJdlJYaXdld2dETjNjNXc1M3VfU0tyTGFwVkRoU0x1ZkE3LUE5UE9idW1iaU9HbzhmS08tdXBzZ09NQTBfb1N1M0R5QzZWSnYtaURySnlzWjU1NFM0d0h1ODNKSnRfd2JnTzduTnY4U1g4V3Q4ZjRTLU5LMDV1eTVTRXRpZXZpRFJtS0xjTUV0WEtuOEkzNWlLU1AxQXhrT29GZWtWMi1ZSXQ2cE9lVThHa3FMaENlazNtNkpQS0NCcWEyLTFjN3k3SU1yRDJhaWlEcTlBTmZHN2N1RmZQN0JRYm9aV05qYnc3aDhkMHU4WjJFTkNSYk1oRU5rdmU1OGpoMWQ3cDM3MWwweVo5eGRNeXE3RmlZUWZCWXZiZC1fMl82aFVyLWFyZkpoQzJ6TmlCQWljeTRwbWpHSFFlbk5zRXM4WWM3UkhNTmZVeG90aEpLUVhWbnJZV0l3ZGhPUUNBME9DS1MyWXVCSHhNMlVWQTI1ekdsSWt4ZnVHU3J3Y3l3OFUwc3dFT0UyRzloWVNCb2FEN3FJZkd5ZDJqbVExZGx6cjFLbGFjakRSc1J0a2pDbllUU1ItRTltbGNBcloxd0trZ1loczNJOWVWbEkwaXdTVUduOTJEcTNjaDljWjhObmstNE1xOGNJTEdWTFJ3Vy1JQWF4YVBYZ0tBZi1COU5uSS1nWlg4dVF1U28wV3Q1a1htSjZFR3JzWmhRM09abWZtSFI1ak5Pb1JGODFrTTNDdUVsRlpxVVZOeTVJR2duSkFnSUJ5SWJ6N2VsY2toTGJkODlnc3pOS2tZUDJwYk1NT1c5MzljX3J2X0JFWjEydG41cFNHdEtmMTkxbHA5dkNtUEJwSUcyV05tMmJIdElpd1pMNHlhYXBFd3lPOVpBYjhDT1NmZkxEenFtb28qDQoLb01JSUVwOEpNVDAqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CIgBEIf2BBgYIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "CIkBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CIkBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIkBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "oMIIEp8JMT0", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIkBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "oMIIEp8JMT0" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "oMIIEp8JMT0" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CIgBEIf2BBgYIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "oMIIEp8JMT0" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "get that bag 💰" + }, + "secondaryText": { + "content": "658K views" + } + }, + "loggingDirectives": { + "trackingParams": "CIgBEIf2BBgYIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CIcBEJmNBRgYIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-ElEgDnx3Dfk", + "accessibilityText": "My Mom's 10-step Korean Skincare Routine, 1.6 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/ElEgDnx3Dfk/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLD4uT5fSWvTnjAh_BC6hsW48zoH1w", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CIQBEIf2BBgZIhMIre-HkoG3iAMVgkR6BR1KLBzyWhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2eaAQUIABDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/ElEgDnx3Dfk", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "ElEgDnx3Dfk", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSbKmV4AK_3vCqAFw3HwNmUDkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/ElEgDnx3Dfk/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CIYBELC1BCITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIGRAjGo4G-gaKBgqHBkFSZEFDZzZLYmxleTF3SXRPTGx2VHNEWnhlREozTnFDUVg0M0NKMEN5dW8xVmlMTVY0ZFdzX0tXM0QtYTZOMDE1akQ2Nk9yWExFSC1PM1Y5ZUJrQWRna1RyeEpmUXVSRTk1WklTRlh2SDFpS3FveXZIUWdIVFBVNll5WTdZYm1zT1JTV2VTdUpEZEhwMm1ObXl1WWhJYmhXUWVncEl6QW9Zd2RDaXNWeHMydVRoejJlX29MeHh3WlZtT2JuVER4LWtCQ3dDLS0xVk1wQmxrSTlXMnk5VVYxMEM5UlFSQzIwNjF2bUZXZVFwU1lYN0w2b3plSThPdjlxX0loRjIyV3RWN0ViY2hoNzVpUUllVkN5WVFaRzRlMUFTR2hXaDVmd0czOTM0TmYtVjZpcHl5UlUxTXlGalNCWm5ELU5PeldXMjFBM21CZG16MDJkNGxnMGF3eVhDd0wwRTRqWUNMZkVfRXdLaWhCSGp3THdlTWRVNjNrem5vQUlsakNzcTlmdHlMcjdoelRHMmZBRzE5elRHV3ZPZDM1cWpEMC1takp4Skw1ckZZU2xSMGl2QXN5c01pRGMyT0c2d1FYUmY5VDNlajZCSzB1TFNaZm5RbVJnVzVNUHk5VFoxYzRMTmR6RUNHOUJaZ1ZLQzRQTTRYNjdWNjZrZjVFSzBDTDF6T25yaHgwVHFsZFR4MHcxcUR0SWIwMWJkY0dac1hNdGdNVV9VNXVGRU9xcXIwRHJPZDluTEN3aWsxUzViMDhLblFWbHRQa0RXQzJRb0U4TjZxYkV0SVEwX3phWWJvVk1oY0MteTFCaWc0S0I3ME01b3dfSi1IRWYwV0lmblk1ZmxMMDRKU3EtczVHQkgwQWZmWWNmUUdJdEFjMDRUQnA1TDZ6RVFPOTBVRmR1MWJ3RS1WWmJBblNsVzVZOEd3Mjg2TW9GX3lTWURhei1WMXpkWE9MSjBhM2FpNnJuTEZvemVVM0c3NUlrZkN0XzVTM0g5RGtVamJLa1dpNENOVmp2dXg1ZV82MlhyOTAqDQoLRWxFZ0RueDNEZmsqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CIQBEIf2BBgZIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "CIUBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CIUBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIUBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "ElEgDnx3Dfk", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIUBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "ElEgDnx3Dfk" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "ElEgDnx3Dfk" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CIQBEIf2BBgZIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "ElEgDnx3Dfk" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "My Mom's 10-step Korean Skincare Routine" + }, + "secondaryText": { + "content": "1.6M views" + } + }, + "loggingDirectives": { + "trackingParams": "CIQBEIf2BBgZIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CIMBEJmNBRgZIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-kNpFjW0VAUQ", + "accessibilityText": "What Koreans eat on New Year's, 1.3 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/kNpFjW0VAUQ/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBJTK-xhUMSzq8MBJ3s4kSXR7pFlw", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CIABEIf2BBgaIhMIre-HkoG3iAMVgkR6BR1KLBzyWhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2eaAQUIABDyOA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/kNpFjW0VAUQ", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "kNpFjW0VAUQ", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSbkiIiBchTWT4IfW-9b4LX2kAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/kNpFjW0VAUQ/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CIIBELC1BCITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIGhAjGo4G-gaKBgqHBkFSZEFDZzZfWFo4NlhaMXQ0ODFoSUh3Q09od0JOT0w4WHBBV1pfNTRYbUFwZ29USU91SEw0SVMyWndYTnFjRjJtMXphbHU5dmQzVXpxTzFDcllkQ3dWdFB6LVV2bkMwLWFhZTdLNkdWOGNoR0ZiQ2U1S3M3WmJTcVFVXzc5THhLZnItZUdDZTZKOWZTRTdYYktLSV9qTmVuMTRCaFRTZGtFbFJGMnFlN1RUVEw5WGlaQ1hKelNvd1c5RHBYLVRKNV8taUw0WlZxS2NldlB3aFhJbDZLc3p2MGVmZHlpclZLUTBqcFVCWTNfdmtZNEVqclZJQnpzaXkyVjh0cmJBY1R1dlVnRXpmZVR1eDNaSExSNEhtRVdsdDNUdndVeTFwOHJPa2dkcTZVamxCX01zWklRZDlQRjJpaXJSdU9JZmpNX2lrekd4NnQybURVUWRvYkJQOEZ2Yy1taTR5UE03UnVHamlNUFBTaU53RlJUY0dLV1FYYW1rczJwTWdXdktxVzdBMmROemg0LTF5NThfR1FpR0U5ZnVMbzY4WVFOVmJBRWRrS2trelpRUDk5RnJaRDZxdmV3MXZocUNzb09uMVpVN19OcjlYcnIzRFc1b3RtbEZHQVZmSF9DdmIyR2VwUjY1cUxiTE85YnJGTV9pM0FFbnBCM0xvalgxNzV3TzdqLVBPS0VpT1pVQU1Ya0hKRGFuLWVrTFpZQmdzcUZGRGZLTHV4XzQxY0R2WkJROGN3MFVpZ3k0OWNVOXpwcHRHdHZlR1hfWjhEUzk3a3lST0I5YU1WSm5zMERqU0NRWk1abGx1azFGd1ZLcnVtTlVHcGtTbWI1RExUOWVvMHN0eFQyUU9Ia3paVXVUUm9BNTRFOGVwRTYzMFJYSkRFbGViNDVNcF9ySXAwVmoxNUV5Ml9oZjZwUV9FZTJJV2dwMWJCazk3LWpIRDZYR2lZUmpwM2NSTDFOQTk4bGxGNkZJYzVNbTZFdXc3NGUzNmpVaFJSazBRRllramM5RkR6dFJYekRkV2ZrdkEqDQoLa05wRmpXMFZBVVEqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CIABEIf2BBgaIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "CIEBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CIEBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CIEBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "kNpFjW0VAUQ", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CIEBEP6YBBgAIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "kNpFjW0VAUQ" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "kNpFjW0VAUQ" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CIABEIf2BBgaIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "kNpFjW0VAUQ" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "What Koreans eat on New Year's" + }, + "secondaryText": { + "content": "1.3M views" + } + }, + "loggingDirectives": { + "trackingParams": "CIABEIf2BBgaIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CH8QmY0FGBoiEwit74eSgbeIAxWCRHoFHUosHPI=" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-0_5Y3ZBo5cw", + "accessibilityText": "DOOBYMART, 829K views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/0_5Y3ZBo5cw/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBlcI8i0DqG2vKRFGDzIQXBEsifFQ", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CHwQh_YEGBsiEwit74eSgbeIAxWCRHoFHUosHPJaGFVDaDhnSGR0ek8ydFhkNTkzX2JqRXJXZ5oBBQgAEPI4", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/0_5Y3ZBo5cw", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "0_5Y3ZBo5cw", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSb-EnvS5yBG4snD8mml294AkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/0_5Y3ZBo5cw/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CH4QsLUEIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIGxAjGo4G-gaKBgqHBkFSZEFDZzRlbm1UNk8wTThhRVIwWl9GMFNRdXpYQjRSRmdFZnE4SlJYUVJEM3VXUHFLT2lKajR0U0RzT1hnZnBtcmlfaDVYZl81QmZjTzJrcUR1b1pySDItRWU0Y0t6ZldxQ280dFBjN1JZMXA5Ynp2ZUZtWGZvOGVHUTJVUlRGYnV2RDJQTEhYSTBVaFFiSTBtaVQzNE1nNTZpLXpRSXE2aDRsbjBxQ29vNm9FOVJoZFk3am5oZmhuUjg2dlhhaGxlRGlEN0VyRXRybmE4SHdURWlrU3dEVlNTQjQyQ2ZjUUcyUGdzMjN4Q2h3bl9BdWpiMDFCZnE4cVYzTEE3OE44eXRwSndyZl9EQm82Q19iNTUtZGtZU211ekpPb0pVUzNPR09PYl9SMGd4TlpCbEpmSE5OMXJsVzdOczVzWl9NS1lvX2sxeGJrUnlHZXlyRFgzSkVNM3JFM2RhVnhqRV95eVgxbXJkQzZXcnQ4eDdPUml2NXhvRF8waTdsTjRoS2JEQ0Q0WTZYcWwwcmRyZG5xMDlGWW5WdGJsQUdRdnZnUEV1SHExeXo3TUhwVGczUV9HOWpMeEFTZm1sRXNscVlBS3o2eUhmYVgwWU5vdDFUV29fVjdFaHZoNHlZbDEyby1VLXlWalltVmlleFhxMzd0aGU3QV9pZFZ0YTE4S1A0OUxUMXdQT2ZXNzFybTVhTzRvYzBlQlZmVGZSTk5mOTlwZFFhVjhRRjI4OTA3QTRVd1BXajh3NnpJZEJxNFRCVTVxY1VpdVdhajQxTEhURGlhX1BJdkdleEd3a2wwOU9yT2RsRjdLbUt1VkN0QkpyUlM5aTRESmxqUC1GRFNPdkFRZHdwaVFodXdpaXJWalFGR3RnNFlsdEp3TjctekZ6dnRYdU1aRUdfSzZsT1VmazNzbDFBbjRpWkpvRGVDNTcwZ2JvN3lMek1FODBlSWt5N3Fvc2RmUkhZaHhTWU9QaE9QWlJVSm5CVGFFTVdEX2RfWF9SbHpjeTlsWVBxMXZjeTd2bG9xdmMqDQoLMF81WTNaQm81Y3cqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CHwQh_YEGBsiEwit74eSgbeIAxWCRHoFHUosHPI=", + "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": "CH0Q_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CH0Q_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CH0Q_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "0_5Y3ZBo5cw", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CH0Q_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "0_5Y3ZBo5cw" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "0_5Y3ZBo5cw" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CHwQh_YEGBsiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "0_5Y3ZBo5cw" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "DOOBYMART" + }, + "secondaryText": { + "content": "829K views" + } + }, + "loggingDirectives": { + "trackingParams": "CHwQh_YEGBsiEwit74eSgbeIAxWCRHoFHUosHPI=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CHsQmY0FGBsiEwit74eSgbeIAxWCRHoFHUosHPI=" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-VyVs3GCQlG0", + "accessibilityText": "I love ogres, 1.6 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/VyVs3GCQlG0/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBsbPYKlWAAZNphAPobZQReZzk-lA", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CHgQh_YEGBwiEwit74eSgbeIAxWCRHoFHUosHPJaGFVDaDhnSGR0ek8ydFhkNTkzX2JqRXJXZ5oBBQgAEPI4", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/VyVs3GCQlG0", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "VyVs3GCQlG0", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSbRzFtx_ojBb_DNGUsB49gOkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/VyVs3GCQlG0/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CHoQsLUEIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIHBAjGo4G-gaKBgqHBkFSZEFDZzZMMVBkUVBUdGg5d2NyQ0RhM1hIYlI4bXNsd0NFYm4yT0lOa3U4R2FTYkdKYlhfWEpZcGVDekVHY2hialJXcE5SSWxhZHBJVU5YVWMwMk4wV2VaVTJuY3dxQ3g0U3BkWFpENEplZ281UTIwZFcxclhxaWQ3d3ppdTA0TGdGSWlJWWtLQk5BbHhFalQ2UGxDaktaV3VBNkwzTVoxdmYybnBUTWJSODF2VFhKYlA4Qk52REhRLVFmLXlYU0tCWXJRdjdReUxOSTlaSHE5bkxDako0TGdnRjEzb21ZQVVwMW1kMDZidWJfbl95VC1UREVnRy0zbDgxemM2b3FxLTVWY25uTG1Kb3JiTHFFVWY5bzljX3JhUFFkZWFIcVZPTE12UlVHV21LLWcyVkRjendqRWJrcHEwTGJVS1VaSW1TMl9EUndMVV9SbEFQNTJsUi1MWlpkeUV2UUgyZDAwQmdPX1JsbFl3TEVKZTlSXzlfS2pfV3VRdE1YR3U0ZkNwczRyT0ZfYlJWX2lvTGZqRnBza1hCdDI3Q1BDS1N1ZW0zVmVFNVFxRnJnYlYtUm5sSHdCTEFHUWtKbC11RTJKOUhZX3VDenlzWUZQcHkyNlpydHZfUEhWSjVSY1ZEd0p6Vjl5VEpOVE5iM211MGJ4N1RvcUR4cTZKTkNIcDRkZzlydFFoMEowNWVDX1VtODJTVTNaYmRqLVFBUDhfRl9uNGhJYUtLaHZTVkFOcHppVWxmRTFTSEtWLXY2T1NsZ2hrbHdteXZWUUktTXAtdnY3WUl0SVRlakhsQUlEVFJOWDhzTjJfN2ZwbXEwa3hucmU5cUpKWTh0TzFIanVQOXJ3OU9OMnhVdHl5NDA3Y1JTVEpjVTZyVzJ6czFQOGJ3VUZFb1FmREVwTEd3aFVEYThNbFpjZXF2OVVyOFNZLWR5eF9fLXB5MDNZQlRRNWwyaHRxU29rcG1kRE1NSElNR01JWXpjMzF0MzVuVmlyZ2JaZ01lX2lKZFVUVVVOWWVvVXQxOWNPZmMqDQoLVnlWczNHQ1FsRzAqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CHgQh_YEGBwiEwit74eSgbeIAxWCRHoFHUosHPI=", + "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": "CHkQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CHkQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CHkQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "VyVs3GCQlG0", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CHkQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "VyVs3GCQlG0" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "VyVs3GCQlG0" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CHgQh_YEGBwiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "VyVs3GCQlG0" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "I love ogres" + }, + "secondaryText": { + "content": "1.6M views" + } + }, + "loggingDirectives": { + "trackingParams": "CHgQh_YEGBwiEwit74eSgbeIAxWCRHoFHUosHPI=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CHcQmY0FGBwiEwit74eSgbeIAxWCRHoFHUosHPI=" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-_yMEpzXq3yI", + "accessibilityText": "Are you broke?😞📉📉📉, 3.2 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/_yMEpzXq3yI/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCRyJDCY-7MsSYbsl2ZZoC8DxPkKw", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CHQQh_YEGB0iEwit74eSgbeIAxWCRHoFHUosHPJaGFVDaDhnSGR0ek8ydFhkNTkzX2JqRXJXZ5oBBQgAEPI4", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/_yMEpzXq3yI", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "_yMEpzXq3yI", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSbqC6DjXmmZP5rqCxYQKtVpkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/_yMEpzXq3yI/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CHYQsLUEIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIHRAjGo4G-gaKBgqHBkFSZEFDZzZmQ1l1cHdHLWpvUDFJSWFUb1R2ZmlnWkFORGF4UUpIcDhfSnFiZ3A1ZWx0cVZRclVKbGVYY0R2ZXpfZ09FNHRVYmduUkVGTzVmUmZuNFpoNEIxWXJ5aDY4WUdKbTBSZXNEbDFxMUR5a2tiLWpwUHROZi13UGVWN3dlVmJkRXZOajg1aXE2aEtBLTV6T01MVy1IRFNnUW4xeElhWWhyV3dUTDIyZ0ZWcVE5TlJQTV9fV2ZyZmtRc0QwZUhpZ2pKQVRQdVZEd3ZqMDN2dkJMM3RxdWgxczZKZHJRcVRaNmJOY1AzTWhRTmZDcG96RWhaZ1lPVFZOWko2ME1HcGhnU0VjZDZDNF9wNUpBTUFqaGRtOWpLOTVNRDlYaE1GbHVQc3dfNk9kaG9UOFBkNDhFVXpMOC15VjNYU3pyQ0dadVByaVYtbU9hc3N6dVlvNTZJVU5DTVRXXzNOaEVydDF0emVLYUFScXRIa0lkUWJ4bWxEV2NfMzEtUDI4NWNzVVhjblpDTy1rb1daMnl5TWR2ZUlOYURvT1RmZkQtWWluMEdwbUZlNUxKQjE5MWFXd2xiZlNnRmc0WTJiSXBCZUZrb0pabnI2bzNEbElKdTI4c2RrZmxXTklxOXd6SlQ2bTNsUGFySU5qZkhDWGY4ZEFza0MyQlkzLXB0anBabGJZb3VhY3Fzb1MtTTVRb2VNYm5wd2xkQ056MjlyWm84VGFVUWljUUlkVnV1R092NWxqTUZTaHRxbzBNSm42clNZYTROaUJyT0xPbXlDX1daUlFKdTJQS2UzOXp2UEdFLVBJZHE2VTd3cy1UVE9fTDM0VUJ1d09qMUhDQ0VDS0dGUjlvUWg1ajllS3o5cFc1bWppQk5NTF8taERBakNlTkJQNElvTDVlM2VEWlFiNWtOMW5zUmo1ME5NdWNMcFUwVktlUXpPYnQxZTM3U25lbE5oaHhkOU1wLWJaOE81eE9ISERqNE1vdnE5dVVRRHN5NFV4TDBOMHRYYXV5VXlHS1dWNmFNLU0qDQoLX3lNRXB6WHEzeUkqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CHQQh_YEGB0iEwit74eSgbeIAxWCRHoFHUosHPI=", + "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": "CHUQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CHUQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CHUQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "_yMEpzXq3yI", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CHUQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "_yMEpzXq3yI" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "_yMEpzXq3yI" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CHQQh_YEGB0iEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "_yMEpzXq3yI" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "Are you broke?😞📉📉📉" + }, + "secondaryText": { + "content": "3.2M views" + } + }, + "loggingDirectives": { + "trackingParams": "CHQQh_YEGB0iEwit74eSgbeIAxWCRHoFHUosHPI=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CHMQmY0FGB0iEwit74eSgbeIAxWCRHoFHUosHPI=" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-sM1jIMnq0M0", + "accessibilityText": "best tteokbokki & dark sketchy alleys, 1.9 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/sM1jIMnq0M0/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCIQyuEFF2m676ZX7UpcK3hVHTzzw", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CHAQh_YEGB4iEwit74eSgbeIAxWCRHoFHUosHPJaGFVDaDhnSGR0ek8ydFhkNTkzX2JqRXJXZ5oBBQgAEPI4", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/sM1jIMnq0M0", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "sM1jIMnq0M0", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSZIAWXAOKCtSsBmXJr5Nf19kAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/sM1jIMnq0M0/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CHIQsLUEIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIHhAjGo4G-gaKBgqHBkFSZEFDZzVkZFFfRmptRV9Gbk8tVDFMWkpzcEdLa05EUVZ2TGtWV0xYZ0o0ZG0xS2k0bzZJWFhwb2MzRDFQLUYwaGhiMjU4TXFqR1c4UjdDOTE0NHR4RFpNb3cwOE5jcnZIUkRVVm9xT05HUnU0R2IyZ1FSRXdDN1BQMUgyRmRSbE1hVVpYZ21sX0tyTUNJWUlCU0JWNjZnZndSbUlodDJfbE5XZm9YRTJHWWh5N0NCWFpqOXJDaUhRTGp1M2ZZWExQOWlhcjBaUFozRHQzYnIzZmdPWUxzZFRsc0RPV1Y3eFVscWduMVBwZUctUnAyR3JlQjR3aXZWa096QlJ5ak02dnRZTjB1S011OGdaWEc4RDg0TkJRdW1xY2xnWkE0dkFfT3JUcEJoa1dISFB3amljN081cVFzUXljSXYyS1FpMEI1YzJjbHZqX092aTA2SmJST3luTmRjQnRLQ3R4ZnRUc05GVkUzbmpkRWRFWm1nVWhtQlVLelB3cjR3R0loUlpXZmUyaWhZOHhHcG9samJGdUJLS3BLVHJvVzhCeWNZN0NFUXByN2xxbFZRblBBaUZ0Sy11N3J0ZHZIbHN1WlgzX1JlZzFpRGFEOGR3UnBPd3BRbWhqV0oyS1g5NV9hVC1GNjZsSExaZzJ2Q05GYy1qQnpqVjZ1SHo2WjU4V1E4Nlpndmg4R3p6bXZwdnh5Y2FPWVV1QUJmenpOeGJKNjB3eUhtLV9fdDNGQXdrWkpzdlFSS083eERNem1VT0RZdEJIc2FBbm9sRC04VnVZeTlfTHQzWGRLbE82WVJRNDJ4RzZjTDdjZURuSXVfRjJkUmNCRmMyaDQ3dnVkalFtdE5ZeXdZZWZnRURfUlZnZEtSd3BNb2FvQ2VJVlZpNzdMcldIck5mS1lVYkZjVl9qenBKX3hZNGRvVE5aaXJ2VjkySmlNcThRQk5NSm9rYk1RYzJOYTBOLTdzVGtaN2NyRl9LV0FnVFhyQ1Q3V2hmOTRKMzhRZkxLQ3U0RG5YY3BtU2FDaGZMYXcqDQoLc00xaklNbnEwTTAqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CHAQh_YEGB4iEwit74eSgbeIAxWCRHoFHUosHPI=", + "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": "CHEQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CHEQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CHEQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "sM1jIMnq0M0", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CHEQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "sM1jIMnq0M0" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "sM1jIMnq0M0" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CHAQh_YEGB4iEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "sM1jIMnq0M0" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "best tteokbokki & dark sketchy alleys" + }, + "secondaryText": { + "content": "1.9M views" + } + }, + "loggingDirectives": { + "trackingParams": "CHAQh_YEGB4iEwit74eSgbeIAxWCRHoFHUosHPI=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CG8QmY0FGB4iEwit74eSgbeIAxWCRHoFHUosHPI=" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-nZg_Qoknu_M", + "accessibilityText": "moist., 1.5 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/nZg_Qoknu_M/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCcXipLuXAs9D8d1nRJbMh-BZkK1Q", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CGwQh_YEGB8iEwit74eSgbeIAxWCRHoFHUosHPJaGFVDaDhnSGR0ek8ydFhkNTkzX2JqRXJXZ5oBBQgAEPI4", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/nZg_Qoknu_M", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "nZg_Qoknu_M", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSYjetCZSLLNPGMekR3jL2SakAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/nZg_Qoknu_M/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CG4QsLUEIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIHxAjGo4G-gaKBgqHBkFSZEFDZzR5M1VZaU92QTZjLUxlbWUwTkIxSk9iWXRYMHRlOFVLU2laWEhLOTRySkxweFpsWUFKZDZjV2R3a2VDLTBTRVZtS292RExMV1N4TWVSaHVwbGdCVG5qRXVld1YxVUdSbUdPSnMxM0VRVG4zWm1PTGNTbFAzblNRdEZKTXZmaHpGSjd5aVBJSGthOVZyTFgtR1NpN0d3MWpsZjRZYUJQRWNvZGRheTQxNzFwcFJWVWNCcDA0TXlqaHhsRWsxTFd4WjR4TW9ubk1oNVlHdGkwbWFOQXpLeDFuNGVBY1F4T0lNeTBYSzZlbC1NdXhlMEk1dG5CUTlFVW11anJDeFdmTmEwbHl2d1E0anNtZ3VHU3ZkZVhZd2NDZW5HdllQYjVlZm0xazEwWHBqOGZBSFJERnBJVUM1WDJuYXNHbUR1Zy04ZmRjQlBYZGRQMUcwUHoxOVJCMXIxNEVwOWkySVUyN3lEelN1UWFvcUYtRVFmdXVrMTdCcFl1SUpzVS1oUkZJYXZieVVGd1JwOEk5amF3Ukk4Q1I5NHhaUXFIR0hKbTRsY0IwcHNJRktwNzZ5N1lXb1ZuQzhjVUNGWENnbG5IZlNpYjR0Q1lEbFg4SVVDeGIwbGFlclhoUlZiSkpTRXd4djFUS0pLQlA5ck4zT05GWU1WVU5Ubk1CdEI4VkFBay1Kd25UdXhsT1gwV3laUGpfRVI3Q2g1TGlTMXgxSHpqOXRUbVhGNmN6bzF5cjdQd295dlJwQWNBd1FobkpnX21CRlJQamlkVDBYd1FQUkdRT21JZEwzZ2ZfYV9EV1RlVmRldFI3TkVXT2ZBU0s0RXZVbm90ZFo2RTBNTjNFQXFoQUVtVDNDWXhaMG9kMmpiVVpRcGV3ZEtrSFZfbjdSZ212ZmwySkx6VkFBS1EyV3BCeTY2T2F4NUZVZTlpeVZ4SVVNbUxFbENJWm9TdzktTFpGR0RSamo2dVVBSFRUdTV1TzF1bkpyaFQ2RHNiSnJoTWoySHJGOFlJNTB6UDJyMTRnN1UqDQoLblpnX1Fva251X00qAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CGwQh_YEGB8iEwit74eSgbeIAxWCRHoFHUosHPI=", + "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": "CG0Q_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CG0Q_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CG0Q_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "nZg_Qoknu_M", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CG0Q_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "nZg_Qoknu_M" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "nZg_Qoknu_M" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CGwQh_YEGB8iEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "nZg_Qoknu_M" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "moist." + }, + "secondaryText": { + "content": "1.5M views" + } + }, + "loggingDirectives": { + "trackingParams": "CGwQh_YEGB8iEwit74eSgbeIAxWCRHoFHUosHPI=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CGsQmY0FGB8iEwit74eSgbeIAxWCRHoFHUosHPI=" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-CgS55gL33nY", + "accessibilityText": "Do you have any Korean Friends?, 2 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/CgS55gL33nY/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCVh8B6HRomEnQX6dyDJVbYhE-RGA", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CGgQh_YEGCAiEwit74eSgbeIAxWCRHoFHUosHPJaGFVDaDhnSGR0ek8ydFhkNTkzX2JqRXJXZ5oBBQgAEPI4", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/CgS55gL33nY", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "CgS55gL33nY", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSbjxrZbplufKXSACgcRmf0fkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/CgS55gL33nY/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CGoQsLUEIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIIBAjGo4G-gaKBgqHBkFSZEFDZzdIbDRKLTZwMGQwNUx6anBnVTRsVkhGOUw5NmlBWTRoNE5GLVRMX3NEYXhUYmNKX3REcmkwc2x0N2VCNUVpT09wcmhsNVFDWlp5Sl9ZcHhHVEl6VF8wLTQwNUVGa1hYb09PWXNTWWVGX2RZaGZIVW1wdGFMamU1NnJ2WEZYSWM3ZmVhUFhXcjhWYkFTR2JGSDJxTUU5bGxqak80ejlQV3c5bWtNa2JINFREcHdWTEdUenQwUmczNVJnVndQV3N1eXJ6cXZ6dTZyU041ekNoOFg0Z0puU3UyLWNtbG9WMklyM1N6a2ZRcFlSeWtZX1kweTM5S1ZESG81VUk3Wjl4R0ZlTkxvLXNMSVFmSEhSeWRldXlYX3RURElYMEtGV0duZjJKa0wxWHZ6Ym13dGpBc3JzWWMzbWtxN05CTUN4U3hzYk1OdjlFbS14aG9yWVpQRUJZQWNmTTl6TGdUSkwyWEFmQU5EWmd0RXNHaE5yMVFhWWFsU0pRaTNFNkEyZ3pHSmtEYk1WTHV1ZFlXbm9PcEh4MFk0TjA1cm1sYlFKeWRKRklaN3JMUXJxcW1kS0piRjV6YTdEc2RQNE1YNy11XzlqNWhPR1N3QTlKMGsxRl80R1FwenVTMHBSSFVGeHpXeWZmcS03emhKTlBQU096NGJBZk5BdU9fX2hndnZzcUFkVmI2dzcyTTc2WTBjcEpFbzdCaExWRjZrdU1wSWFjVFI5dXo1QUYtMzl2TmpOS3M4Q0pCbWczbkpvZnBlWHFVUVJ0TE85SXIxY1RlQkZUTHdxa09uVXFwaHU3ZWFiMmpEM2ExTkIySzIySE5GX3A5NGZkNDc5UjlsZFJZZFVUVVFlV1E0SXVIRTZWNkV5WDI3WEJ3WDNmZjl5ZTN4THZUM1lueVQwTC1vR1g1NTRPM29UOEtiUkhRc3RORmJEMjBpek00d2xZTXpQbmlLX2xpV1p3X195WlVMYmtoLUpoZVg5QTUtXzhsVXAwcTYxZ25xdzU3ZDZZUHFURUs4QUdRSzQqDQoLQ2dTNTVnTDMzblkqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CGgQh_YEGCAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "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": "CGkQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CGkQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CGkQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "CgS55gL33nY", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CGkQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "CgS55gL33nY" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "CgS55gL33nY" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CGgQh_YEGCAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "CgS55gL33nY" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "Do you have any Korean Friends?" + }, + "secondaryText": { + "content": "2M views" + } + }, + "loggingDirectives": { + "trackingParams": "CGgQh_YEGCAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CGcQmY0FGCAiEwit74eSgbeIAxWCRHoFHUosHPI=" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-VOxXkxFNOpM", + "accessibilityText": "take my money, 6.2 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/VOxXkxFNOpM/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAkP1n1_Oe8pBGluy_lyi4I3pO4SQ", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CGQQh_YEGCEiEwit74eSgbeIAxWCRHoFHUosHPJaGFVDaDhnSGR0ek8ydFhkNTkzX2JqRXJXZ5oBBQgAEPI4", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/VOxXkxFNOpM", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "VOxXkxFNOpM", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSa2n9u6jGLdqDDkmPa4LNOIkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/VOxXkxFNOpM/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CGYQsLUEIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIIRAjGo4G-gaKBgqHBkFSZEFDZzdhTXIzQURwWmR1ajFDeURLclBUVGVXcmF0UUV6SGFFa0lFZ0xDSzZWTnpvV2RmdkNUTTd6OE1vOUtoV3hNeE5pQ3dJeVNadGJKbXNVQzd5NC1hVHd4VmVucVVIcG91Y1lLWXlNU0EtWVJFMUd1NzJ0NFdPTGNCem5kbXY0aC10MkxjX0Y0bmNXTEVaZUdaVFhWNG9qWVNjdWxWN0kzVDNsMEpSTjUwRE9hNm00NmhxM0ZzQnNGd1hXRFh4cWg4bDJXOXM2TjVsVkNQbG5vVTZaWFhTTHp4V2FCZUw1cFAzRVhtcU1oS0d1TC1TNDRZM1JzR1h1LVVBQ0lDaWdFbDVwd3Y5OXlSaVZhcXo1TlhISmlhdy1WaERwX05EWWRmVzl4UFMyS1FmSlQ5WjRLYWhqNlFmcG1VV3ZJUFIwM0JLMmUyeDlRUjEwR291d2FiRy1sekRtN1VDR3VVWG1IcmpxaFBBcXgtU051Q1BZWF8xdTJ2cGNSVTBDQXZVQmltRUl4R2V1R1hleFBRUFBEODhJU1IzOW82R01YZ1ZHZ19QRW1VRzdYSFBLUDc0Y1VsQ1lFajZGRk1zRzJ2VkZncTJab3ZrOHp2ZFBCS3BXMUw5QlpLejFjdnp6N3dRMlpQNGIwZ3Fta19OMWhRcVBQb01laTVqYTFJSlJMc3NGV1dhYzFrTlgzVFV1aGJfTVZzTktUYnk1bl84UkN0bTVzOWV2a29LaUQycjFXSFJkUjlReDY3RDhFN2tYekNqQVVZa3ZTRnRMR0VOd3BTS1l2enRNTThScjVjbWJFNmdoWjhQaVVUWklPb2I5RmdSLVdXdEpFSFZUTjFleFpRcmlGMHVkSkdBOXh3czB4T1dYZWh5ZUVJcmtKRXlMeXoxaXFuLS1NSURVUFA0VENxRjZ6Z1d5VXNfaEVKei1yQjR3eDFtS1pkdjUwX3NDbFE2WndGWHJVT1ctelE5blJ2Q1VPa1JBT00xdWtxbTU4LVMxOEJRVXZidTVhY2E5Ul84bWlvbGMqDQoLVk94WGt4Rk5PcE0qAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CGQQh_YEGCEiEwit74eSgbeIAxWCRHoFHUosHPI=", + "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": "CGUQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CGUQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CGUQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "VOxXkxFNOpM", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CGUQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "VOxXkxFNOpM" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "VOxXkxFNOpM" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CGQQh_YEGCEiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "VOxXkxFNOpM" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "take my money" + }, + "secondaryText": { + "content": "6.2M views" + } + }, + "loggingDirectives": { + "trackingParams": "CGQQh_YEGCEiEwit74eSgbeIAxWCRHoFHUosHPI=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CGMQmY0FGCEiEwit74eSgbeIAxWCRHoFHUosHPI=" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-aZW65r9uUXA", + "accessibilityText": "i'm a mother?, 1.9 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/aZW65r9uUXA/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDIcJpRgW65hGv0GM8ak-L0PyErUw", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CGAQh_YEGCIiEwit74eSgbeIAxWCRHoFHUosHPJaGFVDaDhnSGR0ek8ydFhkNTkzX2JqRXJXZ5oBBQgAEPI4", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/aZW65r9uUXA", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "aZW65r9uUXA", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSYo6Ot8Nvpx6l_QLGzj1EbvkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/aZW65r9uUXA/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CGIQsLUEIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIIhAjGo4G-gaKBgqHBkFSZEFDZzZRQ013YnFnQWVpZnhWcFNVcXZTUmRmUGdHTzVRVlVNSFFXS2VXZVQ2d2FOZ283VU42QThzX0VGZHhxa21Jclh4M1pJMUQyTkdTcmZ3Mko2emNQSW96QjVRRlFJMjg3Z3hqNVM3b0FvRTJHZV83SXJWQkRnUmktMXphX2RPYV9kZE85NkFoTWU4V1Z1Vk1VRWtMUzZSeE91dmtuQVdCYmtvNWxZWFByX3RraE05MW9XSjJERmJXZTZpR1p2NXJ3VWdmdnBvSjdGdnBrRzI4cG1Ja1F4aVpwdVU3cjVRZmdYdGpncFp2RWlvLU13d1A0dUhJazNvUFlRSVJDaTJra3djWmFvQUFEYmZYYTRjcEJlRW5SbjBIWU9IbzZTS25YOUcwN0NjQnAxcGh5SzZNVnlzaXRNNWUxS2pOYkkta1AyZW1oNTNyT2tlYWxUT0d2ZVRVRHFSYTRBU2NmTlphRHBpNU56VlRnSktBVDE5MmU1ejcyRENOSkxubGFudXFnYXh2YVVFYl8wZDZCeDBqR0ZuVHB0cDJuY3BkVmNnREM3d1ZEdmF6VVltNGowSW41NG5nWHN3SWN3a0NTbTRRQmtzbGVHVk13Y3ppRUNveUQtN29zU1VkdHBMTEoyRDk5UUItaDdERmR2QTJGaUxRd2pYYlhRUzBJdmpwVVdQU3dtbnZ6ZVM1Uk9ReUdFVi1XRkhIeUVSbnlDVG5peWstR3RnVW5aT3J3Z2NLYWVQR083eVB6TVE4ZmlrZEgyQ0RZLS0wSWJiT3VTQ1VEd0c5Z2FERmhYQkt4bWZWU1BkVG9QbmtOMHpHbVJrRVpHb3dkRy02b0EzXzRqU0hCTTQ5dE5nMHRHMFlOd2cyM09kT2pDNGg3UkxSSEdlN0dPZ1lyZngzdmZ2ZjJCUnlWcGdUdDh5emxTS2d5LWt2SzZFQkM2WFBFQWVpSXpKbUEzV0diVGtER21oYWVGelZPZWt0TDdmX2F5bXdSMVVJQWx0SkkyWENaRndxSEM5a0h5RzBBZUkqDQoLYVpXNjVyOXVVWEEqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CGAQh_YEGCIiEwit74eSgbeIAxWCRHoFHUosHPI=", + "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": "CGEQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CGEQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CGEQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "aZW65r9uUXA", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CGEQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "aZW65r9uUXA" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "aZW65r9uUXA" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CGAQh_YEGCIiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "aZW65r9uUXA" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "i'm a mother?" + }, + "secondaryText": { + "content": "1.9M views" + } + }, + "loggingDirectives": { + "trackingParams": "CGAQh_YEGCIiEwit74eSgbeIAxWCRHoFHUosHPI=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CF8QmY0FGCIiEwit74eSgbeIAxWCRHoFHUosHPI=" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-CnI9or-Ings", + "accessibilityText": "moshi moshi (ASMR), 892K views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/CnI9or-Ings/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDIoImzeIOlO25vkY7j92YwUhAOdw", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CFwQh_YEGCMiEwit74eSgbeIAxWCRHoFHUosHPJaGFVDaDhnSGR0ek8ydFhkNTkzX2JqRXJXZ5oBBQgAEPI4", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/CnI9or-Ings", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "CnI9or-Ings", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSbKFvhvo3Qb3i7yZ17MDX4jkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/CnI9or-Ings/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CF4QsLUEIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIIxAjGo4G-gaKBgqHBkFSZEFDZzV0Mkk3aDJ0X2ZmaFJFbENuZ1I0VWNzc2J0TG9rNkwtc1dJcmZNTXpGTGJnVlBJU29VZjM3RG0yam93bnBuRXZqYkhMRWVuQ0JTc3p4Yk9veEZHdTBVSFl0aXJ1blBaZXRpRDdBSnVNcEo1bXRDT3hLN2RqV3R1UU1hNjJXYk1FOXlJVEF0SXFvYmNTZEtrOWctMjNhUVFhWWVLeVUxcUxVVWRwbnoycWlxNTR1OXFPY3lKUk1KcU03OUhxVEZmbEZCdzl4UzA5TVo1ancxWGVzeFMxVHI2UGFsV0hmZ25pejRVTVduNE9lUGQ3UkdpeHh0Yk8zN2pDcFhYZVdJcS0yMTdJbHh6Tmt6dkF6SzJQSVdSNENneVM1a29sd3pObktoYWthaExiZ0hOT1RHMEljcnpiakpFSTFOTGg0QWtodU5hOVAxLXdRTmFLZGp3bmNWeE4wb2JJRXJyWVJheWg2MVM3LTJwWEFKRkEzWUIzUXc2ci13LTRLRHNXZGREc1ZDSUFVLVhsM3d3WmtKc2V1aDhadFZVamdHOVBGVHR2TmpVUlp1LVBHX0dzX3RyaldickdQZlQzdVJlRDd2Q25zX2hJakdPQ1JpZ0dwSktRQU9fcFRZVEtIb0ZmVDkxaUZaVDZNbElKaU5JZ0gzTHdkOEY4dXNJZlpOOV85d00yeVFGa2JDaS1sckRjb2Q2MHFkNVhQbHJrUnV3U1pfYm1wQk94MVUwMWQwYmhudkR5VG1yd1U2WXROZTRiOGR3aUpTV2p1cWhvV2lPMHVwdFRYbTZyR1owTGhSQWV5U25oMGFKTTRUNEhBMGlPVWMtZUYycTRuS19hVGdPb2tSTmVLem50cFlTN1lsaGprSnBLX21MVjhaLU5HSUYtN21UT0tzMVhLcUFNT2ZsM0M2WFVuTmplNnpRclAzQ25UVkpoZ3pmQlRpdWRLWC1pcWozVUVQTWZxamNLa3ktRlJGZWdWbGY2S2x5VGt4TWlmQzN0ZHc2UHY2RGZibWtiYXlrLTAqDQoLQ25JOW9yLUluZ3MqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CFwQh_YEGCMiEwit74eSgbeIAxWCRHoFHUosHPI=", + "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": "CF0Q_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CF0Q_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CF0Q_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "CnI9or-Ings", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CF0Q_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "CnI9or-Ings" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "CnI9or-Ings" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CFwQh_YEGCMiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "CnI9or-Ings" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "moshi moshi (ASMR)" + }, + "secondaryText": { + "content": "892K views" + } + }, + "loggingDirectives": { + "trackingParams": "CFwQh_YEGCMiEwit74eSgbeIAxWCRHoFHUosHPI=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CFsQmY0FGCMiEwit74eSgbeIAxWCRHoFHUosHPI=" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-oYAp2v4PxdQ", + "accessibilityText": "perfect procrastination, 1 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/oYAp2v4PxdQ/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLA3PsooCO5Cot_z-vLFCF1Kdtshtg", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CFgQh_YEGCQiEwit74eSgbeIAxWCRHoFHUosHPJaGFVDaDhnSGR0ek8ydFhkNTkzX2JqRXJXZ5oBBQgAEPI4", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/oYAp2v4PxdQ", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "oYAp2v4PxdQ", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSYSKJOomcTVVFiXQJU1rHSOkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/oYAp2v4PxdQ/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CFoQsLUEIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIJBAjGo4G-gaKBgqHBkFSZEFDZzVxVWt4TDhuS2JOanBrV3RZaWtRTW41T2l1MHRaZm9LWDFQZlpyVHJzeFY3OUFleFpHUTg4bDJoYmRSLW01a3pCY2wySXQ4MUQtSU1TLThlZ3hKMzdwblJhRGI2b2xPYmcxYkp4THNEU1Q1MldsQVFkSHhMTlQ2TThfTWpjdjhNZWQ1RDNzakJ4cG1LeTZQY1dRMW1rWFdqRTFBOGotcERuTzZLVmlPYTBKdWFIQml1cFViNkRybGZaSjdLOVdoUHRuR0JZYjBUWmRTM2Jkbks1dk4xeDhGb1ZLVllyNFBWMG1zU0h5eVloaWRnR3pZWlI3aHRXSHpOUGxTdTZ0aUgwUkhGSzByTnROTUUteVM5R0JvblZucDAzaU9SamdKMjJ1aFVVd2JPd1lJUFpiQjhEV3kxRnhreWw2ZWxGNzVtaHV4M3R4U3Y3bThYdkZFVUwxY204cG1uZmdjdGpBYXZhUzMwMlhyYTVtUWZScm42MWo1NTllUlAtSU1UTEltZ1BBWXFWT251a09mYWlDVG5VY0hXVlR1LVY4Y0lQelZwYi1RMkhFN3ZZMFZSa29FTGpIcG1HczZFelEzd2l5cjZJal9fcTBPeU1WMEhvNFRQVTkxSHVEZURwMHdUNkFZdnRNOHBHUGtTbnJUQldxUzhlS3NjYTlTQ0lXNmNLMlhsNkVTdmZUc2JYY1BDY1J0U0w2VXUxemNZMXludUR2aTI2ZEJtalNZZWh6LTJwTjh2RVk3azg1b2huZkdVbmc0anFHQmM0eFVyelQxWkNwTXI2VXNsYlBKSnlBSmRRQU9kZ1lJcDRJTGdXMS1zOFphTXdGdUFKWW9uT29RZDg3elpIajFVUWtuR3FTdU81Mm84Y29MMTNqX0p1RVlwUEh1WHJsSHRLRWJhZEp0UEE2YmVwUi1TdVM2VzJvWXRPY3pHQ2ZMTHU5aF9QaU1NWmpJSDRRdTVITVpsMUtpYVZ6NFpLOGJkVWFBcnFEYmsyWUhhRjM1aEhIem03R1FSNkc5OXcqDQoLb1lBcDJ2NFB4ZFEqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CFgQh_YEGCQiEwit74eSgbeIAxWCRHoFHUosHPI=", + "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": "CFkQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CFkQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CFkQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "oYAp2v4PxdQ", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CFkQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "oYAp2v4PxdQ" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "oYAp2v4PxdQ" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CFgQh_YEGCQiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "oYAp2v4PxdQ" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "perfect procrastination" + }, + "secondaryText": { + "content": "1M views" + } + }, + "loggingDirectives": { + "trackingParams": "CFgQh_YEGCQiEwit74eSgbeIAxWCRHoFHUosHPI=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CFcQmY0FGCQiEwit74eSgbeIAxWCRHoFHUosHPI=" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-1ivqsJSGghU", + "accessibilityText": "THREE CHILI MAPO TOFU (Vegan), 1.1 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/1ivqsJSGghU/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCk5IRHy8TmJPzE9yD3M_OGXdww_g", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CFQQh_YEGCUiEwit74eSgbeIAxWCRHoFHUosHPJaGFVDaDhnSGR0ek8ydFhkNTkzX2JqRXJXZ5oBBQgAEPI4", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/1ivqsJSGghU", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "1ivqsJSGghU", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSZ3fCPuQTkk-mQRbCllherDkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/1ivqsJSGghU/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CFYQsLUEIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIJRAjGo4G-gaKBgqHBkFSZEFDZzRuTV9yd3dNNTAtc3VMdWhpb2tHRjVmOS05d1BWbHpLWGM0bzQxNTZOOE5uOV9KRXdKMm42clZma01tNUhFY2ZNc2dhRkJFVjR5UllycjMzMi1yUHJVVU1ralZEN2VmVGxrVWR4ajRVbVBwUjlXYkpVd280WGNfREtuMHhfZ2VCTElJNWhfdFpsTU8wY1FNX3ZvX3dFUThjM3Vnd0tiUXdITXgxNnJqb2didmNCOFp6RFA0eEdLb19saHJ5YUVSZVZ0WlFieUVDalk5YUtTUm9OVko2dlUwU2dwVW4wYTJqdS12WV9tWWU2LWdLS202ZWplTm1ndmx4eVdzNVNaY1MzNTMxejI1ejFYZzZRVGlLTy1YS1ZaNUs5akQzbzI1OWpDYVZhTUtPeG0xYlNpeGd0ZEJwV1hnMVV0TTZCRjlwVHl2YzN0Z2Z3RHJoLXJBNDJMRFBWenlsbmMtRXVSZmEtX1FteTNYZmJTVXNVdUZqV280VnItSkttaVlpTHJoUFMwTXYzVnkwUThwRXROOTJ1cXRWdWVRYnM3X29tVjRaa1ZVc2JheXk2UGVBN2FqZUlVQzljekcyd0VRems3enhnVWtrWnpKWTBiclgzbGV4MlQ1Z1lkV2phQS1DMHZ0SVd0S3pLM0pSN3F1NW1Rb3RxdzdaN3ZiWEZJcHlGZng4Zm9aN2Mzalk3TjNoMEJyZFBFaEUzOGV2a0o3clFYUnZaSS1HNmlyUTVsalh2dmM5SnhhdVlrcTlJcGNnQUtoT3FBQ2JLUFFJLXZ0N0NMOWFfNUdIMGlCOGp1RTFvbm8xV2hfbnZMV0s2VWpKdHYyUW1YNDVDbmJ4Njg2djA0enpGR2l2Uk5qa1Y1SlFTd2QwZDc0ckJmRG94d2dWaTA4VkFnTmJQcV9nbk54dzhuM3BZWkpLdnMzWmdabkdieTVVRTd5cms3QklOa044VU9KR1NheTloYnFkeVJTNmtQd2gxMWVGVC1QdWFpS1M3aUhNaEdERDA0Z1o2MG1fVVNtZGcqDQoLMWl2cXNKU0dnaFUqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CFQQh_YEGCUiEwit74eSgbeIAxWCRHoFHUosHPI=", + "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": "CFUQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CFUQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CFUQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "1ivqsJSGghU", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CFUQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "1ivqsJSGghU" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "1ivqsJSGghU" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CFQQh_YEGCUiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "1ivqsJSGghU" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "THREE CHILI MAPO TOFU (Vegan)" + }, + "secondaryText": { + "content": "1.1M views" + } + }, + "loggingDirectives": { + "trackingParams": "CFQQh_YEGCUiEwit74eSgbeIAxWCRHoFHUosHPI=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CFMQmY0FGCUiEwit74eSgbeIAxWCRHoFHUosHPI=" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-s56ctQoFi70", + "accessibilityText": "day 1 leaving seoul, 907K views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/s56ctQoFi70/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLCfn6oYumOdPd33WlDWaqBUZzaEiw", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CFAQh_YEGCYiEwit74eSgbeIAxWCRHoFHUosHPJaGFVDaDhnSGR0ek8ydFhkNTkzX2JqRXJXZ5oBBQgAEPI4", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/s56ctQoFi70", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "s56ctQoFi70", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSYe6ctt5gPypQMOi-C3sBBAkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/s56ctQoFi70/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CFIQsLUEIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIJhAjGo4G-gaKBgqHBkFSZEFDZzdZRmlwOGg3TDR6TndZcV9WMVZiamlRUnRXNm5UMWtzRE9BSkprejRLRFRQZWJOVnNQa19nR3FqSlhOMzluNXY4bmQyaGQxSkV0M01BamlNeVhVeE96d0FaZDBuYnAyT1lyQXRsMUlWQkRhZ2RCd2JYOGtoNWRkdHV1NUlqRk4xZ1dMdGdxTERVcFdQVG5Sa3hma3hITG5UcklSek1HRGFFblhmcEY3c0lIb0xsWWJSak9BUTdiVnRRTkR3blRYVnBweTBkdmFGSEpMSlRRZjlVSzl4X0NNLTR3RTRZb2xKdDVES2NqRWdpMXFuSXpBMEliY1hib2Vlc1o2al9fOHpadUxxZ3h1NDJ0V0l0TzdsTTFjaFRUM3QtMENtemdrel81VEhoZ2NhR3M2bTNKeWRjY0dFR1R0bkVVeGZ0VFl6SEZlRGl6Z3NsM1ZlY3hCbHBoVEZfWVBoc2lvYWtlSk93N0Zrc0xkcEtJb09mRHNBLWk5N1g0alE5c2JBLVNWOUN2UG4yem0wMzF2bkhzSUVBWGNHOHBSWmVIRkJOakNxTUMtOXhSLUExdWFnODM0SHFfVHpGZTY0VzZwSG9VY2xqMWkwRUtSYkM4SFBpbDFtVTlfcnQ4QU9PNEJTMFVIU0l5dXFOUzc2dWJ3dEhFZU05aTR1cUw0MUtzSTJ3eG5WdUFlQVdpbUFQajgtdGtZaUJRT1A0SkFGdjJ1QkVsX0Q5S0VvQ0QzaXU4MlYzcG9PamVCeDZzVzV4VWJlZ1A3aGJ5QUFvalRUeWpTQzI2Y05wRFRuc3BTZVFXV0RVMXp2Wnc2RjUtVlcyV0YzR3NGSmJOamJkODdhR3M4d0ZvYklCeUVlcXJYS1BBYVVLVl94NjdScUJJSlN2NkhKRWo2YlFPdHJweVV1T2hlY0JfTzJfeGVuLU5OaldDM0RHbmpDaHRsVW14N29SNTlvaVJQZW1DRkY0TTFnTVk3R2VQbmI4RFBLRHo2QTRUWnlZZ3BuV3kyam9fTUJBZHBwYjdaSWcqDQoLczU2Y3RRb0ZpNzAqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CFAQh_YEGCYiEwit74eSgbeIAxWCRHoFHUosHPI=", + "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": "CFEQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CFEQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CFEQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "s56ctQoFi70", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CFEQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "s56ctQoFi70" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "s56ctQoFi70" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CFAQh_YEGCYiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "s56ctQoFi70" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "day 1 leaving seoul" + }, + "secondaryText": { + "content": "907K views" + } + }, + "loggingDirectives": { + "trackingParams": "CFAQh_YEGCYiEwit74eSgbeIAxWCRHoFHUosHPI=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CE8QmY0FGCYiEwit74eSgbeIAxWCRHoFHUosHPI=" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-8XHcYgsJJjs", + "accessibilityText": "I love Korea but, 4.1 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/8XHcYgsJJjs/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAtj-QeOzONDGPzDWC8IdFGigmKYA", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEwQh_YEGCciEwit74eSgbeIAxWCRHoFHUosHPJaGFVDaDhnSGR0ek8ydFhkNTkzX2JqRXJXZ5oBBQgAEPI4", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/8XHcYgsJJjs", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "8XHcYgsJJjs", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSbRQwcUoyrd29KmkjEb7HVZkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/8XHcYgsJJjs/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CE4QsLUEIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIJxAjGo4G-gaKBgqHBkFSZEFDZzVhc3dXekhsdVJOZ25xc21MYktQYVVvWW1tWVBkclh1LVhaZFRCM0lpc3V6cWZZWF9NZzNndkVwVm1qeXVWb05qWm9wbkgwbjRkZVpnM0s3dmU3YkwtT1BPeVVkWGFwUUtoYzREcjRUOUxxUFFvZWsyQkR2eEhDalVPd2JRRGo1WUhXN1p1aGZvcGNMVGhtQlY5bHRvdG5WQ1B1T0FwdkF0RTEyNGtEZTlISjNDazUybDNqNkVWVHdsSTYzSlVCOC1CRkZxVGVKa21fa3pXNzlTT2J3Z2ZndUxoUXVhZUVtbDVHdU1ub0RDVW9CZy0xOHoxcmw4cEROTHhaY092dHEtZlRsUEd0bzJOc2JRTE1NbmVIOXFjc1RuUFhLbGdwb0c4MXF5U3VwSjlqT0pIOHhjbzN5ZHUxdVAzRGgzemxVbE5nSklPTkFWNF9UQml1M2tkVjg2QTlxVWJhOXJrMThTeWRDZjNvampadk94TzFPWTFJbHpST3lkN2MwTGZsb2VYR3pWanNKRlg0SDdNX2MzbENyYmNka0JxMlNhZ0ZNaUcwU1dUaHhYV2s2SkRYazVYRFBQUTlSbDdlVkE2VWJDV212YjQ4dzdLQlUxVFNDMkVQSlhDcXA0QnVjNFNta2Y5QWFNbUtYY3NsT19kNXBHSFVQSlIyUEluX2lxZ19fcWtUQmJGY3NIMFN1ekpxS2g3MXlra01yU1c3cUlQaFBQQzRIa3IwMTkwME1Vb0FWeGFWMGlRZ25EbnlXOXVOMENJbklDcnAzdzNmLXNhSjhIRjVCLUNHUDlHRGYtWVlzZnVFenNsUUhjbGVyaEhmZkh0Mml0UFFBclZtUXJSRVJZRXc1T0tXMGRkZVNiZ2VFNTF2ZzVneGE3MVp0MnlOckxvVDVodkJVc0JhUDRabHJ1bUtJQ1k5bEZoVlVPMWtOZHpwRDI3a0Voc0tuWGVSNzNZTU9XTGxkREVuRllNZ2wyeHFkaGwtLVl3UVJwUGp0dzJWNjg2M1ZkYmRDYUpCSjAqDQoLOFhIY1lnc0pKanMqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CEwQh_YEGCciEwit74eSgbeIAxWCRHoFHUosHPI=", + "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": "CE0Q_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CE0Q_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CE0Q_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "8XHcYgsJJjs", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CE0Q_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "8XHcYgsJJjs" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "8XHcYgsJJjs" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEwQh_YEGCciEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "8XHcYgsJJjs" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "I love Korea but" + }, + "secondaryText": { + "content": "4.1M views" + } + }, + "loggingDirectives": { + "trackingParams": "CEwQh_YEGCciEwit74eSgbeIAxWCRHoFHUosHPI=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CEsQmY0FGCciEwit74eSgbeIAxWCRHoFHUosHPI=" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-DXYbvkJEYzw", + "accessibilityText": "demogorgon rice, 2.2 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/DXYbvkJEYzw/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDd33uW_fC4Dz5JqYlDtGWGdMQn8A", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEgQh_YEGCgiEwit74eSgbeIAxWCRHoFHUosHPJaGFVDaDhnSGR0ek8ydFhkNTkzX2JqRXJXZ5oBBQgAEPI4", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/DXYbvkJEYzw", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "DXYbvkJEYzw", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSYGgMCIG9_RV1ltS3kMFA6lkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/DXYbvkJEYzw/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CEoQsLUEIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIKBAjGo4G-gaKBgqHBkFSZEFDZzR4RUlhRF96RzdOWTZGYW1aOTFKTWR0R3Yzck5Lc3pvOE16ZmJNYXFZMGF3aHY5dXN5V3RZZHU5ZjczT1VqLUlybm9ZM0xWR2FhSW5xdzlabmlsMFgtd0lobHJ6b2NsTGlVSEN4d0hrdHp5NjFPbk1rd01wempiVG5rVjcwemtrbkE5Nk84aU9GZmhETTRJM3c2VkVMb0hCcjQ3d18yTGdMaUxmSnBaeDhYNXdzeDVEc1JsbkRocW81TXdnSmZkN1hvTW1PaE5pYVhQV2prZTA1aFlsZjBySWZoTmFibmxqTTJVQ29PNU9JQWV2SVloYXFrSUNxeWVSUmplbnZGRS1UVXVxcDRTMU5tV1F4eUlRMUlvSGVCbnI2anRPbDJmeGdBSlZ3MXgyRlduY2ZEYmRVQWNOU3NhR2ZoZjI2NjU2Y1E5UzhOOWRrM3BUcEpuTU5DdkgzbGFiNUppTjNEaF9pazhtbUZUMU5ld01oQzF0aV9ZUnp1ODNvUXVNWVBYcU9ubGpUQ1k0LWtFUnZIVlZkUWJiRnVGSmVPWGtuc1l3TllWMURLUXM1NE9RRC1PTl9DUkJ2YXE2bmV2UGcySGhHWFd4ZU82WU94VHM3RmFnT3AzNjZ2ZElObnVEWEJtNWdDc0tXMHpjSXJTUUdiM2VpZVlKZmJCSDR1QzFULUpnQTRUZVpHMzU4RDFZYlFSZUZTME43ZExLeXRjM0ptVHRWVk9TSExoNlpocnBWTUdjbzRscl9UU0NGclJyS1RmaUxwMjMyaUZJRUw3S1N2ZVJYQ2tGS0FMOXZqQTc5U2w5NjVwNjdMck04NHNJR2taVDlDaThDNUtYRXR4dUE1dFpMVFVWb212R3RKQWNwMElHZVBoWlN0R0k2UGFVWXBNcUdNRTc5bjBxVUlnZFVOYnliY05SVWVQUjdxTllYdmhSdHBTM2o5SFktR0NIYWhpcUNlb0hpRDRfLUJJNVBsbnNvSGgtTTMzblpoWkwwd1RMVXVhWVVCcURMdlQ5cjdfU1kqDQoLRFhZYnZrSkVZencqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CEgQh_YEGCgiEwit74eSgbeIAxWCRHoFHUosHPI=", + "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": "CEkQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEkQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CEkQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "DXYbvkJEYzw", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CEkQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "DXYbvkJEYzw" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "DXYbvkJEYzw" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEgQh_YEGCgiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "DXYbvkJEYzw" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "demogorgon rice" + }, + "secondaryText": { + "content": "2.2M views" + } + }, + "loggingDirectives": { + "trackingParams": "CEgQh_YEGCgiEwit74eSgbeIAxWCRHoFHUosHPI=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CEcQmY0FGCgiEwit74eSgbeIAxWCRHoFHUosHPI=" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-3YGVw8RrB3U", + "accessibilityText": "Rating Everything I Ate at McDonald's Singapore 🇸🇬🤡, 3.3 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/3YGVw8RrB3U/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAV2y-_1JXq9RecS8ELjyUsoN52NA", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEQQh_YEGCkiEwit74eSgbeIAxWCRHoFHUosHPJaGFVDaDhnSGR0ek8ydFhkNTkzX2JqRXJXZ5oBBQgAEPI4", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/3YGVw8RrB3U", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "3YGVw8RrB3U", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSYnmpwh0TlTciSu15FC2PE3kAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/3YGVw8RrB3U/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CEYQsLUEIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIKRAjGo4G-gaKBgqHBkFSZEFDZzdaTFhNWkJBaFFPN1hKaXRsUmZYNGtFZl9obmxhOWpjTnp3M0l3SVl3c2Rfby1MZ3B1MmRaME9CVlF2Y1NtZWgtRHRSc0dJVkpkOVFrOFJ6NVZ2Z3I0V0NaLWJGVnVDVXpnekg2dlcxMHY2YklteWJ6Vnd4a3NHUWllSi15WkNadXZudWhIdzcxOFRaR2FlUk1EUXJrNmNiNnZFQ1pXYVY0aXVzYTc1aDVZWjBBVW9NT0dETmkzQl80YUZKeVh2MkkybjVMTzJfcmR4ZFN0ajF1TUIzdHp5N2VoUExieGlWbzlJakdfalRmTzkxcUQ4WTB4TGNVTW5YejV2VTBJTF8zdTdYTWd1eXV6ZVA1UnRRUEpBY0ZzVVBkc3B1b3h1ZVo4aWVHZzMydERFdGlocWV4TTlUZlFQZUt0QlF3XzF5cmloVWZzMTRzWkR4d3E3Nnc2ZjBFbC1IOVhuSnBDSEw1RlhXR0pjOU1WRGU3ck5iaHB3eTlwMmtlTzBTRVY1UXRpcHdLRW8talpJWlRUTFNVY04tMF9xSDNvNUVBRWdjLWhvSEdvV1VzOHRiVUVYcHY2WlhDbmF6eHB6X0VyX3NUekZuM1hlZXJnQWI1UHZtc1h3WHV5a3dNWjhCaXBLY2dXbWN1S0dLZ0I3TThOaWhzam5CVS1DZ05BNVFQMFFjYUtkQzREUlV3YUdJTmNSQ1dqVnBBVm5fakV3djRRZU1wajRoV09ULVBtTzBMazVrZkFBdnpoOTNSVUVEQUNlOVlxSDFNNGVRQnBGT1VQaksyNm9QUTlZcGZSbkdNSUExdU9mck1zY2x4bW9Yb3lhNjRfVmhsN0FHTHk4WUlSQmJlRWMxSERDQWhxLWk2cm1SeWI3emJ0dUpua1lNNzNuNU41dkltamZzcW9DZWJ3bXBWUFVrVUc0T2FQSVJZLWdlMjhCWTRxSnN3MjBLQ1lzQ0ZDaS1pYW9qWllqOVJXSGlncEZkTzBfTHZWRTZHajhma0ZSeHVkQ0xjUHJlbExLTjQqDQoLM1lHVnc4UnJCM1UqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CEQQh_YEGCkiEwit74eSgbeIAxWCRHoFHUosHPI=", + "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": "CEUQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEUQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CEUQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "3YGVw8RrB3U", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CEUQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "3YGVw8RrB3U" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "3YGVw8RrB3U" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEQQh_YEGCkiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "3YGVw8RrB3U" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "Rating Everything I Ate at McDonald's Singapore 🇸🇬🤡" + }, + "secondaryText": { + "content": "3.3M views" + } + }, + "loggingDirectives": { + "trackingParams": "CEQQh_YEGCkiEwit74eSgbeIAxWCRHoFHUosHPI=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CEMQmY0FGCkiEwit74eSgbeIAxWCRHoFHUosHPI=" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-VWh8hm-GlXw", + "accessibilityText": "the magic number: 25, 1.4 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/VWh8hm-GlXw/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLD1wp7tz9TU3Kx2Oho7mrVoFys8Jw", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEAQh_YEGCoiEwit74eSgbeIAxWCRHoFHUosHPJaGFVDaDhnSGR0ek8ydFhkNTkzX2JqRXJXZ5oBBQgAEPI4", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/VWh8hm-GlXw", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "VWh8hm-GlXw", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSZxNW3WbEyXzHlN942VHJJukAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/VWh8hm-GlXw/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CEIQsLUEIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIKhAjGo4G-gaKBgqHBkFSZEFDZzd0dGJwYVdNcFZmMkZ6WTZiOTJ0UHhQbHM2TWtlZmFobWJ3WnZuaTdVN3JDTVYwMUFocnVuaW04ZVFiSXN3VDFKRWU2Z0ZNbUxLMGRqbDd3cnZscEhfTlVJZ3ljRE9RZTd4YVZwYzVuYndDbEFVekN0ZkN0RWNleWk0MGhKeElQekVoYWJPSFB0dEtXbkgxd05JZmNPN2NZQzg0Qk9Da1REMndxSzEwWlJxZTFmU1V6X3VUZ0xRZTZrcTNSUUVQNTA0WEtzVVBCeDJGbDEtNTc5VVpGMzhRelFOai0zV0RUbzU0Tm01VE1WWEhxcDNLTEstOHJhWW9BNEpiMURnOXIzbUlMam5tRzB0UXdUMDQteVVpZlNOUGJDUVNTN0sxTmV1QzNISlIxd1dTZjB4dGE5WnZoZlJCdkJLUXlRTjRobVM3aUt5R2JFcUdxZ1Fmc0VnWU9Eb3VCSUhlQUJFNE4ybVFsM3oxWVdpS1VyQXpnNXJwNmozNmJhejBfYUZEa0E2RkhrLUR0dnJLNzZZWUhXMS1jM0xXTHZKOGhWd3NOdElVRzFRMFQxVERnZGVGWTNRQXB4X1lfVWpPZEdNLTVBQkVtM3VMaDdXTk9lZUpqLTJWTFpmVDJfUkhrT0hPdmVfT2hNQ0U2ejdWaDVWdlpjd2dmc1RCNF8wUVZLN2hSMjVfXzRyOC1JUWFzaGxvWE1qYlZIWnpVQVNTalpfYW5JektBeDhCN1ZKZlhKcjRKd2lNV1lUR1g4cXBFeHpSQmgzWjllZl9nYl9YZE5iTVBDTE9jNnJaTk1BMGJRQ0VLaTJMZXJuRHpiUEhPYlRFalVjUkpNR2gxWnJSc3VLNnFNUHF5djRDWkROaWVtRTJXQ1pvZnFteVdfdGwzWEJMdThEV1hGQ1pxcFBkeGFrcnVsR05SdTVaTkFyal9sTzc5ZWRvM2lHQkVnaWl2S0lpX0ZRMWFYVE44RkRnbGZkYWFNd0QxTGZ5MWpxdVlFajZIdlIyLTVndWxncEtTclY0NjgqDQoLVldoOGhtLUdsWHcqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CEAQh_YEGCoiEwit74eSgbeIAxWCRHoFHUosHPI=", + "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": "CEEQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEEQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CEEQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "VWh8hm-GlXw", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CEEQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "VWh8hm-GlXw" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "VWh8hm-GlXw" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CEAQh_YEGCoiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "VWh8hm-GlXw" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "the magic number: 25" + }, + "secondaryText": { + "content": "1.4M views" + } + }, + "loggingDirectives": { + "trackingParams": "CEAQh_YEGCoiEwit74eSgbeIAxWCRHoFHUosHPI=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CD8QmY0FGCoiEwit74eSgbeIAxWCRHoFHUosHPI=" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-ewpJQHj5jWY", + "accessibilityText": "How we started✨ the garden ✨, 2.4 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/ewpJQHj5jWY/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAOw5ntEtOhIgNJy2y1QQCFLUtGBQ", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDwQh_YEGCsiEwit74eSgbeIAxWCRHoFHUosHPJaGFVDaDhnSGR0ek8ydFhkNTkzX2JqRXJXZ5oBBQgAEPI4", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/ewpJQHj5jWY", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "ewpJQHj5jWY", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSaucmwsXETrHOL293Q0ytwpkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/ewpJQHj5jWY/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CD4QsLUEIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYIKxAjGo4G-gaKBgqHBkFSZEFDZzR3SW5vQjBHdFdGS1dkTFhqLTBZSlV6MGhWckV6UXRtcDFRcElHczZrVXQxRFBYSnphX1gtaXh2YzRzeXpjNkdOcUtLaFlsR2RXNW5sR1JzUXpaRE5Sb2M3Z0RzUUFCLXVxTTZBVDdiVm9PU0duQzNGNnhEbnhidXJYeDNRandFQi1JYVF6SkxUTnR6LUdlcndHN2doMkkzZEZPVVVPV2VGaFZjYUhFZGtDU3E5dktkRVFzSV85SElaR1kyeFl4U1JIbHp5VFNxYTVhUlZOaFpfNUxmcVFYWnFGWUpUT0oyRTdHNnFwbUpOYTk2ZlZ3OXFrSUd6MHg5SUZ0UXdCYjZtSDFjUnNhUG5kd0p4QVpFcG1uRFFVWjFWd3hVMkx5a3k5YndKMXdyREFPVWV2WkZpbHFJYnctTWRTUkd3VTVMYnpaRGFXektNMGRKZU5wNnZhSXJpTXMxTk5aVVhQY1NYOU1iMHRIb25XaDJ5VkpRMm1rU3BxcGJnLXdYVXI5RVN1TUJWTDlVRVNaSU1jSTRfUzZMMzB5a2pUanBqc3lPRlZTNmxLX1Rhb2lpaHMwblluM09XVFl4Q0hVLW1JQmxHWkVfRlVURG96RVlpY19NNlhVSndfcUtXa1phcnpRNmtPMEthcDIxSUhEMzMtajZyUlJDenVjaTdIOUN1UGg1ZXl6UFZ6Z3NDbGxvcnVmS21sZVdKLXQzSXpDTW9nbnhkVjE1QTRvREpGX3RXSlpNbnB2d3N4UEx3b0k3bUtpX0w4eG1naUxOWS1JSEpoLTQtZF8wMDF4YzFNdTh4YUlsbjY5QWJDcnBDZWN6aXBCMzVhcFlHLWIyUWVSREJUdGFBODVSOXVDVmo5dFZ6QnJkcGx2T1lVRTcxNlc4UE96cHk3TWdMQmZYWERqZURaUXdQY0ZPSE1yQUNXdkY5Vy1CWFM5Q203bElSY2hST3NOU2ZQSXZRSzBrWG43OG9qOGhHalA3Sml3eFkzajFwVUxneUlOV1VXbTg0R1Y0eDR1alkqDQoLZXdwSlFIajVqV1kqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CDwQh_YEGCsiEwit74eSgbeIAxWCRHoFHUosHPI=", + "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": "CD0Q_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CD0Q_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CD0Q_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "ewpJQHj5jWY", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CD0Q_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "ewpJQHj5jWY" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "ewpJQHj5jWY" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDwQh_YEGCsiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "ewpJQHj5jWY" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "How we started✨ the garden ✨" + }, + "secondaryText": { + "content": "2.4M views" + } + }, + "loggingDirectives": { + "trackingParams": "CDwQh_YEGCsiEwit74eSgbeIAxWCRHoFHUosHPI=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CDsQmY0FGCsiEwit74eSgbeIAxWCRHoFHUosHPI=" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-SRnHMGMJ6mM", + "accessibilityText": "How to Shop at Costco ✨economical milf✨, 4.1 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/SRnHMGMJ6mM/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLDrwe86eXSemFBKB3xLGnRIDcL_qA", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDgQh_YEGCwiEwit74eSgbeIAxWCRHoFHUosHPJaGFVDaDhnSGR0ek8ydFhkNTkzX2JqRXJXZ5oBBQgAEPI4", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/SRnHMGMJ6mM", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "SRnHMGMJ6mM", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSZ3JTn5M_0y2jFzSOZGl6AOkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/SRnHMGMJ6mM/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CDoQsLUEIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYILBAjGo4G-gaKBgqHBkFSZEFDZzctank3N2tJSkRBUnRKQ2tLbkY3ZUNVQ2ZoVTVYTXE3Y2ZXVXo0VFlRWVI0ek1Cak5rLWlybTFybGVTZTk3M08xbDBMVU9PVkJROUM5V0F3Z3dOOEtaX2E2amh4dFVuWUdLOVAzZVpLclpRTGh4ckFUUUdTa3NYTUFiMFJjbUxiMnZ4dk04eUV5ZFJSQk9oRWJaR3V6WlUxOTZDUHlBYkZ4Y0NxRnJFcW8wNFBKREFuYTFzTUhRMmQwdm81a1QyWlVBLWlhRGpOYXZmYzNjaWFZRHNzQ1NscURselJ1Ym9pYlhvYk5yVUstWnNXWWpnMW45Q21QNGNITk5VWjBObzI4QmFoU2V0U20ySnJaay03MDRtRHExR2pUMVdLU0dVSGdDNEVfa2xockZZdmpyVDkzTHpPTkxDaUhXQ1E2SzdkYTU2V29ZTEs5aFlBd0t3YTZBZ1VqVXBDaTB4Q1VXRm5CMkRpYUVQRXlUQnJhZGpDT2YyOTBualBQdUNaQXVKQ3hqOURLdm03NDQ0TlBpd1FvcjdWeHVvWkF0UTUxMDdJeTh3YWNESThBNF9NMVI5RUpnMFBvbUNmQXUyWmZweWdaNVpXclZRTFVPeE15ZVFxcTNoNFJpM1FfUS1CSzQ3T1lnR1lhOE5oRWdhb2hxSGR0Z2V5RU0yZ2N2QnpRVGFFN1llU3hnaHpxVHRQM21YMmVhNjVsNmhjblN6cXhSSU55N2FBd0UxWU5yT1VaUjc2UjV3UEViMzI3RHVjdjlyZjNzcFA5bHV1eG9SWGM3amo3LUpxSjJSWnRacmpEcHI0SWlLRmFTMkhuTG4wSnZwTVpLMjA4aXAzQTdqSVpmYVNUY3g0WWh2RTRIeVhiRHA0LTA3cmlaTWhtZm1UQnd3YnU3WUdqV3JtLWxfMzZKVEREV0hnM1NiNWM0bzlSRUNCZnFkZGlyc1ZwTGt6ZmFNWldGMmtEN0xEdFhhS3RfLXVWMjZUMC1DWU5EOGFiMVlXeVhleWc5ZjBnUnRweDN5MkkqDQoLU1JuSE1HTUo2bU0qAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CDgQh_YEGCwiEwit74eSgbeIAxWCRHoFHUosHPI=", + "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": "CDkQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDkQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CDkQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "SRnHMGMJ6mM", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CDkQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "SRnHMGMJ6mM" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "SRnHMGMJ6mM" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDgQh_YEGCwiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "SRnHMGMJ6mM" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "How to Shop at Costco ✨economical milf✨" + }, + "secondaryText": { + "content": "4.1M views" + } + }, + "loggingDirectives": { + "trackingParams": "CDgQh_YEGCwiEwit74eSgbeIAxWCRHoFHUosHPI=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CDcQmY0FGCwiEwit74eSgbeIAxWCRHoFHUosHPI=" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-bGXP83AU3Mc", + "accessibilityText": "do u wanna get swole?, 2.9 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/bGXP83AU3Mc/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBLGuAqqpjhQ_Y81P2pxchz-z971g", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDQQh_YEGC0iEwit74eSgbeIAxWCRHoFHUosHPJaGFVDaDhnSGR0ek8ydFhkNTkzX2JqRXJXZ5oBBQgAEPI4", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/bGXP83AU3Mc", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "bGXP83AU3Mc", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSah3evisaNVD0CpEcD7a-3DkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/bGXP83AU3Mc/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CDYQsLUEIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYILRAjGo4G-gaKBgqHBkFSZEFDZzZpNkE5Z2hvRmdURjRhNnNsRmwxRDE2WHNYQjBsLW40RGNUd1JZek8tSmtWTG5xbk9rR2dtSjQ0Q3pkQTFLMGxIeEZoZzEwVUlXZkw2Q0Q0RkpZZFdIRnNTaUJMckdNcEZHd1l4RTBPdmlhSmExbUxJNEc5d3NUUlJfZEZjTFY2bUEybjV5TDQxUF8zeGVZRDJlM2FOejZ5TkRGREwxM3laT0FPX0VOWHQ4RlhYTmlLcWR3dFU3Q05TQXNPeFBNSnNCS05sQ081NnhPYW5OSS1VcXp5SG1Rb3BHU1JrUWV6d3B2dllWbG01TWcwX1RCX2wtcTlzUFJWbWRmLXdGNG1nRnpPZzVIZ2pEWjY3Y0NoZ3hJVkxfcFdPZWxMYWF2amk3aFc3UG5yZXFGNkwtb29oTlZTaklVb3NzTUhHcXZfZEJ6VVFjT0tlQ2NFei1wM01iSFpIVlMyZTJ0UjBTQUlsNzZka2pJUnhVTzVqcEc5MVNDaDFSaTF3WnljT2lZVzVmUDZXbmIxUmZjajZuZjFLTmd4ZE03OGFJR3FLMFRXd0drYUw2VlhuTGZNd1ZYTG5PRXNKY3JtcS1kQ3diWkl6bk9tX29CdDdreDhFS19UMU9aOWl3VzFVRDlCUVp4UTZFNzBKLW5vMjNVOGZwbFpGRWZ1VVE1bzF0ZlRhX2M0ek1qY0EyWFdKUk5BMGtJR2dvT0NLWHY0MGxCVHpTRWZFWDVDbHRqaHpma3oxbk9aOEdMQV9Calhwc0dQWHBSM2J2SHkwc1NETGJYSVkxeC01WWdGMGZOQnVPUHV2eXo3RTJDTW8zZk1kZFZzYXNGbEt6NWUtMGlENWdCSjlMN1loUGxITHJmSG1ITTJmZUhxck4teURmNmhVRzhXYU5EV1VSOThVaWZHYVhsZEVqSjg5TkZUZU9BUE9jd3A0UUlZZEh2ZzhVLVFtaWdaTHoyZFUzWEhQbjA0ZFJFZmxWeWNKZERzTVpoMnh5blJZMWNlZFZwOXpnanVjaEZJT0xXWTQqDQoLYkdYUDgzQVUzTWMqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CDQQh_YEGC0iEwit74eSgbeIAxWCRHoFHUosHPI=", + "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": "CDUQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDUQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CDUQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "bGXP83AU3Mc", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CDUQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "bGXP83AU3Mc" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "bGXP83AU3Mc" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDQQh_YEGC0iEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "bGXP83AU3Mc" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "do u wanna get swole?" + }, + "secondaryText": { + "content": "2.9M views" + } + }, + "loggingDirectives": { + "trackingParams": "CDQQh_YEGC0iEwit74eSgbeIAxWCRHoFHUosHPI=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CDMQmY0FGC0iEwit74eSgbeIAxWCRHoFHUosHPI=" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-E52sSgZlgYs", + "accessibilityText": "the holy trinity of korean street food, 6 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/E52sSgZlgYs/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLAZr5j2o2IdpTLXUoSKT5QK-DFJgw", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDAQh_YEGC4iEwit74eSgbeIAxWCRHoFHUosHPJaGFVDaDhnSGR0ek8ydFhkNTkzX2JqRXJXZ5oBBQgAEPI4", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/E52sSgZlgYs", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "E52sSgZlgYs", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSZERVuwSyLLxGoyAVOmrav-kAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/E52sSgZlgYs/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CDIQsLUEIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYILhAjGo4G-gaKBgqHBkFSZEFDZzU1Y2JaUHFKUlpUYXRjYVpsMWd0dVotRFZWeVZVdEFYZzJLY3g1Zm5rR0pwUFNXUUhXN2s5WWV5XzRvMi1CcTZIaEtoTEszYlFUS3lkTDgyTGViZmtfTmdzTGNvNkVXV1oweVFKM1dua2RuR3lvRktEa0IxOXRDNUN6OElmczlXZVloMXA1NllrdFp3dXljSEwxSTlWV2o0ZVpsVlNWTmx0eXBOSzk2aE0wM1J5WGRhdG1DcEVyV1czSEdRS0dfYThQVEI5U0pwaE92ajM4d3VJMDZYTERVbWlhVWN0bEZqTkRxcDdGbVBZZVlSYVRHZTdMVTk4ZXBPc0lEaFlVd2dXcXhPaGhsSGk1Mmw0WndEQ3cyOFdtUVRJR0hDbmVhSE0wSTZkUmhTMjRhS191dU1Mek5xdUR0alRWTkM1MWRHQlBFNzF4RFhUSExTbHBSVVV2WjE5WHphTXFBQmJHd1g2MmczMjgwRmRGZTZHWGtkUmlzRU90ek5yTU5FMVYyRG05dTloNlBBZTV3S0xTMk9KWk5GSGU5RGZDRzZGR2s0M3ZtN3g2bHhXdDRqMzl0bjFRYk8zR1F1YlNmNDNpY2ZpQTYzcEROejRvOTB4TlhXdThCSWtkaGxhYzJNTDM3OEpsbDBLWHVVT0diVjA2OURYRkF5eThCTVY0LTJTQUw3Z2FCQVNJcVZOY3NNcVp1QmNFY082WHRlLW02dWpkS3RvY1haY1FPRXVVX3JpX0VCYm5EVmdnTURrQ1RWbGJ3OFlMbDRlRzdmOVp3eWZYdS15bUtOdWxiNEJhVzJjWDdCOWtwaHpHY1NsbmJseDk0RkJ0cVlOZlpRZzUzWWZCQzB2U3RLNFBMYk1ESm10MU1nQ3l3Sy1xV0JoMDJhRHhGdHBNbUJBNGJmaURkajZfa1doTDFDR1NudDNzS2VmTW9yTEh0U3dvaGIxZDd5OGw5TGNpWHBMeXFtYWE2X2FNeGMtVkF4WGtMTDNTM1Z2dExJNjBYOUZEaFctdlNtWDJrcU0qDQoLRTUyc1NnWmxnWXMqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CDAQh_YEGC4iEwit74eSgbeIAxWCRHoFHUosHPI=", + "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": "CDEQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDEQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CDEQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "E52sSgZlgYs", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CDEQ_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "E52sSgZlgYs" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "E52sSgZlgYs" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CDAQh_YEGC4iEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "E52sSgZlgYs" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "the holy trinity of korean street food" + }, + "secondaryText": { + "content": "6M views" + } + }, + "loggingDirectives": { + "trackingParams": "CDAQh_YEGC4iEwit74eSgbeIAxWCRHoFHUosHPI=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CC8QmY0FGC4iEwit74eSgbeIAxWCRHoFHUosHPI=" + } + }, + { + "richItemRenderer": { + "content": { + "shortsLockupViewModel": { + "entityId": "shorts-shelf-item-ovaHmfy3O6U", + "accessibilityText": "hangover food, 17 million views - play Short", + "thumbnail": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/ovaHmfy3O6U/oar2.jpg?sqp=-oaymwEdCJUDENAFSFWQAgHyq4qpAwwIARUAAIhCcAHAAQY=&rs=AOn4CLBg-kG4rAi-BQ8Xkp2hOtOu-oXDLQ", + "width": 405, + "height": 720 + } + ] + }, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CCwQh_YEGC8iEwit74eSgbeIAxWCRHoFHUosHPJaGFVDaDhnSGR0ek8ydFhkNTkzX2JqRXJXZ5oBBQgAEPI4", + "commandMetadata": { + "webCommandMetadata": { + "url": "/shorts/ovaHmfy3O6U", + "webPageType": "WEB_PAGE_TYPE_SHORTS", + "rootVe": 37414 + } + }, + "reelWatchEndpoint": { + "videoId": "ovaHmfy3O6U", + "playerParams": "8AEByAMkuAQ0ogYVAa6PwSYJcj9RuwXjWXD7OLsOvItzkAcC", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/ovaHmfy3O6U/frame0.jpg", + "width": 1080, + "height": 1920 + } + ], + "isOriginalAspectRatio": true + }, + "overlay": { + "reelPlayerOverlayRenderer": { + "style": "REEL_PLAYER_OVERLAY_STYLE_SHORTS", + "trackingParams": "CC4QsLUEIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "reelPlayerNavigationModel": "REEL_PLAYER_NAVIGATION_MODEL_UNSPECIFIED" + } + }, + "params": "CDMwAg%3D%3D", + "sequenceProvider": "REEL_WATCH_SEQUENCE_PROVIDER_RPC", + "sequenceParams": "GqkGIAFCpAYILxAjGo4G-gaKBgqHBkFSZEFDZzU5cmFmdzNINzZ3dml3RDZRUGdxNEtfWVpCZV96UG10V05sa3dZTzBndVVObWN4VXo3ZlZwbE9YNlZKMUNhOWdfdDVKakFUX3loYmc3WU5HdllYQUQxWUNxZFlSS1ozQnE5TENfeHItSDMzLVlGdjU1VHV6N3NLbWFSZWR3SUJsMUx0TU5vZ1hCZ195RnpDenJ4VjZIRU5selhHWEEyX3o4Z2ZOMTQ1Q0tzNnVrOXpXa0czMGdiTFpMeDdQSTdVUVdlMExpVzVMb24yRURjM0lOTS1YOWxCcVpMQVdNMjZTZjROOEhfYXVhcDUyemFrdnl5ZTladm44V0c2aS1wVmRCUHVzcE03b0tuck5Sa3Rkc05KdDV3elBsYXpPU1BPcDJjWlQwamFYaVRfQzNtMnJLVGtTU1lFQ3BfTi1ZUTlGYmpLcWk1T29EdHZNVjZpOXBSUVRwVm44VzFReEcyNlVOdmlQNXJJam52VlRKWWV6TXItUU1TMXRtTHMwUzJIWENoeDJKVmx2dmtER0NkQWFqRi1UWk5ma2hHS2k0SFJkV09OU190WUtiSXlwY0s0NENJTERsSGZidURCZF9jcE5HT2d6M0xXdUVwUU55VURyeEN0Yjl1Um9LQTFuc2kwQlFuci1tMlJHSHNUNmhyenJKU2J5MFVlMDlna1pDV1FhV3ZFZW1yT2d4WVFuVmU1V3VrUzNNa0VCZmVrSXA0Z19RZWhEMlFEck5fSmhVbjhuM3EzeHdzbm5zZkxuNndMUnduZkZxZkotWS1OQ2hjTlRjYlhzaGplTmUzVmQ1b0puemstMXhwMHc4bGxibHlGWl84eEpZV1JxbnBnWkpOZ1BmM2ZYWE9QMHVMcDlBWW1nQm1lLWZ2bGZ6R3ZObzljdEhtODk1U2lGNDg5VEJ2ZkFVWktESjRXamg3clExYnZVZlFUanRKdDEyQjVYMi1USGM4bTlKNmhMNERqclUtcVFITWR6Rl9ualc0NEI5cE9wNjdhNmJYbktmY0NSQlAxbkkqDQoLb3ZhSG1meTNPNlUqAhgzkAEN", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + }, + "qoeLoggingContext": { + "serializedContextData": "CgIIDA%3D%3D" + } + }, + "ustreamerConfig": "CAwSGG1MdndaZU9qYzlpR3pxNnFMMkxGS1Q0PQ==" + } + } + }, + "menuOnTap": { + "innertubeCommand": { + "clickTrackingParams": "CCwQh_YEGC8iEwit74eSgbeIAxWCRHoFHUosHPI=", + "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": "CC0Q_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CC0Q_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CC0Q_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "ovaHmfy3O6U", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CC0Q_pgEGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "ovaHmfy3O6U" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "ovaHmfy3O6U" + ] + } + } + ] + } + } + } + } + } + } + }, + { + "listItemViewModel": { + "title": { + "content": "Send feedback" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "FEEDBACK" + } + } + ] + }, + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CCwQh_YEGC8iEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "userFeedbackEndpoint": { + "additionalDatas": [ + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "video_id", + "value": "ovaHmfy3O6U" + } + }, + { + "userFeedbackEndpointProductSpecificValueData": { + "key": "lockup", + "value": "shelf" + } + } + ] + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "indexInCollection": 0, + "menuOnTapA11yLabel": "More actions", + "overlayMetadata": { + "primaryText": { + "content": "hangover food" + }, + "secondaryText": { + "content": "17M views" + } + }, + "loggingDirectives": { + "trackingParams": "CCwQh_YEGC8iEwit74eSgbeIAxWCRHoFHUosHPI=", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + }, + "trackingParams": "CCsQmY0FGC8iEwit74eSgbeIAxWCRHoFHUosHPI=" + } + }, + { + "continuationItemRenderer": { + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN", + "continuationEndpoint": { + "clickTrackingParams": "CCQQ8eIEIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse" + } + }, + "continuationCommand": { + "token": "4qmFsgLTChIYVUNoOGdIZHR6TzJ0WGQ1OTNfYmpFcldnGrYKOGdiaUJ4cmZCMUxjQndyWEJ3cXVCMEZTWkVGRFp6UjRZMGQ0TnpWTVRGZFZaMlUxVlUxUmVFUlRWRFZoTldWaVFrcDVVR1JxTnkxbFJUVkJZMWQzZUd4U01EUm1PR3hZZUdWM2FXWnFTWFJ0ZG1WV1RsOWpkM1pNZFhrd1pHVmtRMm94UTB0Tk4xaHRiVmwxYUZSWlRqVjFXVnBUVjJ4ek5HeGlaVkpNYVRoUmNsSjZVWHBvUTJJNVdEQTJWazFMVEZZd2RtaG5Wa1YwWW14TlpEaGxOR1pmVW5FMGVXNTFOSFZyVmxwSmMwNXNRMU5wVW5Wb2JUSlBhRTU0TUhFMFdtdE1VVUZ5V0hOWVZFaExZMDF5VWtoWlJEZFNVbmN0V2tWQmRWRXdaMHAyTTJkdWFIazVjVVpZTjIwM1RVbGxkR05EUTNwYU5HeEdkVlJtZG01ZlJXWmpkVkpvZFRrMWNFSnBWRFJSWDNaSFJHbzVVV2wzTjNrd2Nta3lkM0ZxWm10d1ZYbEdWMmhzUzA1TVMwVXhXSFExVFdzM2QyczRUMDFCYWpaVWNHdHlTMUZrTUhCRlZGSjVZalZzZWswdGIzaDNWR0kxTFRKbmRWUm1Vekl5VEhGUVFrZERlalpJT0RGcFNVOHlSV0pZTmtJNFNsZzBaRVpYYURoT05UZzVSMVJGT0ZseGRtRmpVMjVpYkZGM2NFRXljbXhUWjBwRlJpMUtOVXhKZGtJdGNIVjNhVWcyV210U2FWaGZhRVF5VVRSc1NtSkVaV2h6Y2t0R2RuTk5lRmxKY2xSRFVsQnBMVzk1ZHpOT1pteGtOVVF6Y0hGR1NYUjFWSFpsYkU1aGJqQnJOWFJRYW05a05sWjNkRUozWXpWSFpVdGZYMHMyVGxaS1F6YzVVRloxU0dSQ1kxUkdWbEozUjJGdVFVeEhNbGhzZUd4WVpYWk9ha2x3VG1kSGFHWm9XRkJEVVhKa2NFbHRjelo0UmxSeVZ6RlRNVWx0U25SVWFXNU5ORVpaUjNkdGFXdHZWVE5oU1c5bExYUTVkR2N6YUdSSVlWUkRZM1ZEY1RGR2J6ZEZXblZ5WDBGblNHdFdNUzFuZEdaellsVTNiRzR5YUdSV1dFNWpaRWxSVDBGclNHRmFRV05SY0hwblVWVkRiMUprTlMxeVZtVTBOR3RwVUVwd04wRlNOVWQyVTB0MlFYZHNZbDlyTVhGMGEySjRTME5JUWpOSE9VSnpZMDh6V0V0M1IyOXZVbEppTmpkSloweGhRMWhOYTJFelRIbHVRVEJYVWtsSlNGOVBSVFJGZUVNMFQxRkZVRXhhWWt0MFdqSlZNamxzTlZSMGVqY3lSR3hXVUd3M05uSktOVWhYUmpGdlNWWjRWVkJsTVc1Vk5rNXdhREZMTm01bVRFUk9abFJRZFhabWVHbFNORkk1VEdSc09WZEZkR3g2UlRFeVNuRmxNVk5TZWpScVdTMVlRakV6Wm1SdlJtbG1hbFY0VW1oRVZrOWtjWEV0VGtaTFVXeGlNVTVoU2xGaFZsUnNVM3BUZEhWNVZHeEhZMjFQYVRVd2FYQk9jVXR5ZG5jM2NUazBjVGRWTVVsZmQxbFJObFJqZDJNMlgwRkROSFZKYzBVMVpYVk1TUzA0Wm13MVZ6TXhSbnBPU1ZsTGRtWmZRbEl5UjNSc2MyNVVhV0ZIWkZaM1FSSWtOamN6TURRM1pHVXRNREF3TUMweVl6UmhMVGhoWm1FdE5UZ3lOREk1WW1RMU5tTTBJQVElM0Q%3D", + "request": "CONTINUATION_REQUEST_TYPE_BROWSE" + } + } + } + } + ], + "trackingParams": "CCQQ8eIEIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "header": { + "feedFilterChipBarRenderer": { + "contents": [ + { + "chipCloudChipRenderer": { + "text": { + "simpleText": "Latest" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCoQ_V0YACITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse" + } + }, + "continuationCommand": { + "token": "4qmFsgJkEhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2caSDhnWXVHaXhTS2hJbUNpUTJOek13TkRka1pTMHdNREF3TFRKak5HRXRPR0ZtWVMwMU9ESTBNamxpWkRVMll6UWdCQSUzRCUzRA%3D%3D", + "request": "CONTINUATION_REQUEST_TYPE_BROWSE", + "command": { + "clickTrackingParams": "CCoQ_V0YACITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "showReloadUiCommand": { + "targetId": "673047de-0000-2c4a-8afa-582429bd56c4" + } + } + } + }, + "trackingParams": "CCoQ_V0YACITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "isSelected": true + } + }, + { + "chipCloudChipRenderer": { + "text": { + "simpleText": "Popular" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCkQ_V0YASITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse" + } + }, + "continuationCommand": { + "token": "4qmFsgJkEhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2caSDhnWXVHaXhTS2hJbUNpUTJOek13TkRka1pTMHdNREF3TFRKak5HRXRPR0ZtWVMwMU9ESTBNamxpWkRVMll6UWdBZyUzRCUzRA%3D%3D", + "request": "CONTINUATION_REQUEST_TYPE_BROWSE", + "command": { + "clickTrackingParams": "CCkQ_V0YASITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "showReloadUiCommand": { + "targetId": "673047de-0000-2c4a-8afa-582429bd56c4" + } + } + } + }, + "trackingParams": "CCkQ_V0YASITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "isSelected": false + } + }, + { + "chipCloudChipRenderer": { + "text": { + "simpleText": "Oldest" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCgQ_V0YAiITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse" + } + }, + "continuationCommand": { + "token": "4qmFsgJkEhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2caSDhnWXVHaXhTS2hJbUNpUTJOek13TkRka1pTMHdNREF3TFRKak5HRXRPR0ZtWVMwMU9ESTBNamxpWkRVMll6UWdCUSUzRCUzRA%3D%3D", + "request": "CONTINUATION_REQUEST_TYPE_BROWSE", + "command": { + "clickTrackingParams": "CCgQ_V0YAiITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "showReloadUiCommand": { + "targetId": "673047de-0000-2c4a-8afa-582429bd56c4" + } + } + } + }, + "trackingParams": "CCgQ_V0YAiITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "isSelected": false + } + } + ], + "trackingParams": "CCUQ4M4DIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "nextButton": { + "buttonRenderer": { + "style": "STYLE_DEFAULT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "CHEVRON_RIGHT" + }, + "tooltip": "Next", + "trackingParams": "CCcQ8FsiEwit74eSgbeIAxWCRHoFHUosHPI=", + "accessibilityData": { + "accessibilityData": { + "label": "Next" + } + } + } + }, + "previousButton": { + "buttonRenderer": { + "style": "STYLE_DEFAULT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "CHEVRON_LEFT" + }, + "tooltip": "Previous", + "trackingParams": "CCYQ8FsiEwit74eSgbeIAxWCRHoFHUosHPI=", + "accessibilityData": { + "accessibilityData": { + "label": "Previous" + } + } + } + }, + "styleType": "FEED_FILTER_CHIP_BAR_STYLE_TYPE_CHANNEL_PAGE_GRID" + } + }, + "targetId": "673047de-0000-2c4a-8afa-582429bd56c4", + "style": "RICH_GRID_STYLE_SHORTS_GRID" + } + }, + "trackingParams": "CCMQ8JMBGAciEwit74eSgbeIAxWCRHoFHUosHPI=" + } + }, + { + "tabRenderer": { + "endpoint": { + "clickTrackingParams": "CCIQ8JMBGAgiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Doobydobap/playlists", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCh8gHdtzO2tXd593_bjErWg", + "params": "EglwbGF5bGlzdHPyBgQKAkIA", + "canonicalBaseUrl": "/@Doobydobap" + } + }, + "title": "Playlists", + "trackingParams": "CCIQ8JMBGAgiEwit74eSgbeIAxWCRHoFHUosHPI=" + } + }, + { + "tabRenderer": { + "endpoint": { + "clickTrackingParams": "CCEQ8JMBGAkiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Doobydobap/community", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCh8gHdtzO2tXd593_bjErWg", + "params": "Egljb21tdW5pdHnyBgQKAkoA", + "canonicalBaseUrl": "/@Doobydobap" + } + }, + "title": "Community", + "trackingParams": "CCEQ8JMBGAkiEwit74eSgbeIAxWCRHoFHUosHPI=" + } + }, + { + "expandableTabRenderer": { + "endpoint": { + "clickTrackingParams": "CAAQhGciEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Doobydobap/search", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCh8gHdtzO2tXd593_bjErWg", + "params": "EgZzZWFyY2jyBgQKAloA", + "canonicalBaseUrl": "/@Doobydobap" + } + }, + "title": "Search", + "selected": false + } + } + ] + } + }, + "header": { + "pageHeaderRenderer": { + "pageTitle": "Doobydobap", + "content": { + "pageHeaderViewModel": { + "title": { + "dynamicTextViewModel": { + "text": { + "content": "Doobydobap", + "styleRuns": [ + { + "startIndex": 10, + "styleRunExtensions": { + "styleRunColorMapExtension": { + "colorMap": [ + { + "key": "USER_INTERFACE_THEME_DARK", + "value": 4294967295 + }, + { + "key": "USER_INTERFACE_THEME_LIGHT", + "value": 4279440147 + } + ] + } + } + } + ], + "attachmentRuns": [ + { + "startIndex": 10, + "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": "CCAQj-QKIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 176655, + "veCounter": 1073586255 + } + } + }, + "accessibilityContext": { + "label": "Doobydobap, Verified" + } + } + } + }, + "image": { + "decoratedAvatarViewModel": { + "avatar": { + "avatarViewModel": { + "image": { + "sources": [ + { + "url": "https://yt3.googleusercontent.com/dm5Aq93xvVJz0NoVO88ieBkDXmuShCujGPlZ7qETMEPTrXvPUCFI3-BB6Xs_P-r6Uk3mnBy9zA=s72-c-k-c0x00ffffff-no-rj", + "width": 72, + "height": 72 + }, + { + "url": "https://yt3.googleusercontent.com/dm5Aq93xvVJz0NoVO88ieBkDXmuShCujGPlZ7qETMEPTrXvPUCFI3-BB6Xs_P-r6Uk3mnBy9zA=s120-c-k-c0x00ffffff-no-rj", + "width": 120, + "height": 120 + }, + { + "url": "https://yt3.googleusercontent.com/dm5Aq93xvVJz0NoVO88ieBkDXmuShCujGPlZ7qETMEPTrXvPUCFI3-BB6Xs_P-r6Uk3mnBy9zA=s160-c-k-c0x00ffffff-no-rj", + "width": 160, + "height": 160 + } + ], + "processor": { + "borderImageProcessor": { + "circular": true + } + } + }, + "avatarImageSize": "AVATAR_SIZE_XL", + "loggingDirectives": { + "trackingParams": "CB8Q6OENIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "enableDisplayloggerExperiment": true + } + } + } + } + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "text": { + "content": "@Doobydobap" + }, + "enableTruncation": true + } + ] + }, + { + "metadataParts": [ + { + "text": { + "content": "3.97M subscribers" + } + }, + { + "text": { + "content": "380 videos", + "styleRuns": [ + { + "startIndex": 0, + "length": 10 + } + ] + } + } + ] + } + ], + "delimiter": "•", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CB4Q9eQKIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 176757, + "veCounter": 1073586254 + } + } + } + } + } + }, + "actions": { + "flexibleActionsViewModel": { + "actionsRows": [ + { + "actions": [ + { + "buttonViewModel": { + "title": "Subscribe", + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBwQjqULIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "CB0Q_YYEIhMIre-HkoG3iAMVgkR6BR1KLBzyMglzdWJzY3JpYmU=", + "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%2540Doobydobap%252Fshorts%26continue_action%3DQUFFLUhqbFJaWXRwUzBIMmJJUTlPT0ZDV0o2NUxpOUV2Z3xBQ3Jtc0tta1E3NVI3RkVlVENLZVIySGg2SWxwZ2FUQ2tuRnVpUG52M3UwdWJHX1F3YkEteWFrejJIOGc5OWNqRDk2Z2FCdXhRM3lhbjVQZWVNMU9ndS01Wko3anNvV05CeVBWaWRmMzcwdzkyelB4VnV6RmFicnFRNzZ0aDl3SHYydUhfbzExWUZuWUh1SUJNdlpwNmdHVnV5RExoeVNSREM2QnpiZnZCaVVhUm1qUS1hSlA1NDE2Z2QxTEs5SzdDeGNLTVVYYWpHMmM&hl=en&ec=66429", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CB0Q_YYEIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@Doobydobap/shorts", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCh8gHdtzO2tXd593_bjErWg", + "params": "EgZzaG9ydHM%3D", + "canonicalBaseUrl": "/@Doobydobap" + } + }, + "continueAction": "QUFFLUhqbFJaWXRwUzBIMmJJUTlPT0ZDV0o2NUxpOUV2Z3xBQ3Jtc0tta1E3NVI3RkVlVENLZVIySGg2SWxwZ2FUQ2tuRnVpUG52M3UwdWJHX1F3YkEteWFrejJIOGc5OWNqRDk2Z2FCdXhRM3lhbjVQZWVNMU9ndS01Wko3anNvV05CeVBWaWRmMzcwdzkyelB4VnV6RmFicnFRNzZ0aDl3SHYydUhfbzExWUZuWUh1SUJNdlpwNmdHVnV5RExoeVNSREM2QnpiZnZCaVVhUm1qUS1hSlA1NDE2Z2QxTEs5SzdDeGNLTVVYYWpHMmM", + "idamTag": "66429" + } + }, + "trackingParams": "CB0Q_YYEIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + } + } + } + } + } + }, + "accessibilityText": "Subscribe", + "style": "BUTTON_VIEW_MODEL_STYLE_MONO", + "trackingParams": "CBwQjqULIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "isFullWidth": false, + "type": "BUTTON_VIEW_MODEL_TYPE_FILLED", + "buttonSize": "BUTTON_VIEW_MODEL_SIZE_DEFAULT", + "state": "BUTTON_VIEW_MODEL_STATE_ACTIVE" + } + } + ] + } + ], + "minimumRowHeight": 44, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CBwQjqULIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 184974, + "veCounter": 1073586253 + } + } + } + } + } + }, + "description": { + "descriptionPreviewViewModel": { + "description": { + "content": "Hi, I’m Tina, aka Doobydobap! " + }, + "maxLines": 2, + "truncationText": { + "content": "...more", + "styleRuns": [ + { + "startIndex": 0, + "length": 7, + "weight": 500 + } + ] + }, + "alwaysShowTruncationText": true, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CBcQr_4KIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 180015, + "veCounter": 1073586252 + } + } + }, + "accessibilityContext": { + "label": "Description. Hi, I’m Tina, aka Doobydobap!...tap for more." + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBcQr_4KIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "CBsQ8FsiEwit74eSgbeIAxWCRHoFHUosHPI=", + "accessibilityData": { + "accessibilityData": { + "label": "Close" + } + }, + "command": { + "clickTrackingParams": "CBsQ8FsiEwit74eSgbeIAxWCRHoFHUosHPI=", + "changeEngagementPanelVisibilityAction": { + "targetId": "673047e0-0000-2c4a-8afa-582429bd56c4", + "visibility": "ENGAGEMENT_PANEL_VISIBILITY_HIDDEN" + } + } + } + }, + "trackingParams": "CBgQ040EIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + "content": { + "sectionListRenderer": { + "contents": [ + { + "itemSectionRenderer": { + "contents": [ + { + "continuationItemRenderer": { + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN", + "continuationEndpoint": { + "clickTrackingParams": "CBoQuy8YACITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse" + } + }, + "continuationCommand": { + "token": "4qmFsgJgEhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2caRDhnWXJHaW1hQVNZS0pEWTNNekEwTjJVeExUQXdNREF0TW1NMFlTMDRZV1poTFRVNE1qUXlPV0prTlRaak5BJTNEJTNE", + "request": "CONTINUATION_REQUEST_TYPE_BROWSE" + } + } + } + } + ], + "trackingParams": "CBoQuy8YACITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "sectionIdentifier": "673047e1-0000-2c4a-8afa-582429bd56c4", + "targetId": "673047e1-0000-2c4a-8afa-582429bd56c4" + } + } + ], + "trackingParams": "CBkQui8iEwit74eSgbeIAxWCRHoFHUosHPI=", + "scrollPaneStyle": { + "scrollable": true + } + } + }, + "targetId": "673047e0-0000-2c4a-8afa-582429bd56c4", + "identifier": { + "surface": "ENGAGEMENT_PANEL_SURFACE_BROWSE", + "tag": "673047e0-0000-2c4a-8afa-582429bd56c4" + } + } + }, + "identifier": { + "surface": "ENGAGEMENT_PANEL_SURFACE_BROWSE", + "tag": "673047e0-0000-2c4a-8afa-582429bd56c4" + }, + "engagementPanelPresentationConfigs": { + "engagementPanelPopupPresentationConfig": { + "popupType": "PANEL_POPUP_TYPE_DIALOG" + } + } + } + } + } + } + } + } + }, + "attribution": { + "attributionViewModel": { + "text": { + "content": "instagram.com/doobydobap", + "commandRuns": [ + { + "startIndex": 0, + "length": 24, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBIQjaULIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://www.youtube.com/redirect?event=channel_header&redir_token=QUFFLUhqbXp6bHFLcGRQWGptZkx4NlkyMGZVWWkxcjVPUXxBQ3Jtc0tuR3k0bHlHTXBpa1ZCX1k1cC1acmFPek9fbUZoME5JNWphTFVFQU1ibVhFR2NHMDYwZ0ZVWWtxVkMyUnpXV1BPRTFjbFk1WFZUZGI0dU55dTdNSlp1RmRvQ0pSNHphQXpGaUhzMU5nZVBpZUpJTExGTQ&q=https%3A%2F%2Fwww.instagram.com%2Fdoobydobap%2F", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://www.youtube.com/redirect?event=channel_header&redir_token=QUFFLUhqbXp6bHFLcGRQWGptZkx4NlkyMGZVWWkxcjVPUXxBQ3Jtc0tuR3k0bHlHTXBpa1ZCX1k1cC1acmFPek9fbUZoME5JNWphTFVFQU1ibVhFR2NHMDYwZ0ZVWWtxVkMyUnpXV1BPRTFjbFk1WFZUZGI0dU55dTdNSlp1RmRvQ0pSNHphQXpGaUhzMU5nZVBpZUpJTExGTQ&q=https%3A%2F%2Fwww.instagram.com%2Fdoobydobap%2F", + "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 2 more links", + "commandRuns": [ + { + "startIndex": 0, + "length": 16, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBIQjaULIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "CBYQ8FsiEwit74eSgbeIAxWCRHoFHUosHPI=", + "accessibilityData": { + "accessibilityData": { + "label": "Close" + } + }, + "command": { + "clickTrackingParams": "CBYQ8FsiEwit74eSgbeIAxWCRHoFHUosHPI=", + "changeEngagementPanelVisibilityAction": { + "targetId": "673047e2-0000-2c4a-8afa-582429bd56c4", + "visibility": "ENGAGEMENT_PANEL_VISIBILITY_HIDDEN" + } + } + } + }, + "trackingParams": "CBMQ040EIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + "content": { + "sectionListRenderer": { + "contents": [ + { + "itemSectionRenderer": { + "contents": [ + { + "continuationItemRenderer": { + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN", + "continuationEndpoint": { + "clickTrackingParams": "CBUQuy8YACITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse" + } + }, + "continuationCommand": { + "token": "4qmFsgJgEhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2caRDhnWXJHaW1hQVNZS0pEWTNNekEwTjJVekxUQXdNREF0TW1NMFlTMDRZV1poTFRVNE1qUXlPV0prTlRaak5BJTNEJTNE", + "request": "CONTINUATION_REQUEST_TYPE_BROWSE" + } + } + } + } + ], + "trackingParams": "CBUQuy8YACITCK3vh5KBt4gDFYJEegUdSiwc8g==", + "sectionIdentifier": "673047e3-0000-2c4a-8afa-582429bd56c4", + "targetId": "673047e3-0000-2c4a-8afa-582429bd56c4" + } + } + ], + "trackingParams": "CBQQui8iEwit74eSgbeIAxWCRHoFHUosHPI=", + "scrollPaneStyle": { + "scrollable": true + } + } + }, + "targetId": "673047e2-0000-2c4a-8afa-582429bd56c4", + "identifier": { + "surface": "ENGAGEMENT_PANEL_SURFACE_BROWSE", + "tag": "673047e2-0000-2c4a-8afa-582429bd56c4" + } + } + }, + "identifier": { + "surface": "ENGAGEMENT_PANEL_SURFACE_BROWSE", + "tag": "673047e2-0000-2c4a-8afa-582429bd56c4" + }, + "engagementPanelPresentationConfigs": { + "engagementPanelPopupPresentationConfig": { + "popupType": "PANEL_POPUP_TYPE_DIALOG" + } + } + } + } + } + } + ], + "styleRuns": [ + { + "fontName": "", + "fontSize": 0, + "weightLabel": "FONT_WEIGHT_MEDIUM" + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CBIQjaULIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 184973, + "veCounter": 1073586251 + } + } + } + } + } + }, + "banner": { + "imageBannerViewModel": { + "image": { + "sources": [ + { + "url": "https://yt3.googleusercontent.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w1060-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + "width": 1060, + "height": 175 + }, + { + "url": "https://yt3.googleusercontent.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w1138-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + "width": 1138, + "height": 188 + }, + { + "url": "https://yt3.googleusercontent.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w1707-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + "width": 1707, + "height": 283 + }, + { + "url": "https://yt3.googleusercontent.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w2120-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + "width": 2120, + "height": 351 + }, + { + "url": "https://yt3.googleusercontent.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w2276-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + "width": 2276, + "height": 377 + }, + { + "url": "https://yt3.googleusercontent.com/BvnAqgiursrXpmS9AgDLtkOSTQfOG_Dqn0KzY5hcwO9XrHTEQTVgaflI913f9KRp7d0U2qBp=w2560-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + "width": 2560, + "height": 424 + } + ] + }, + "style": "IMAGE_BANNER_STYLE_INSET", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CBEQnfILIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 194845, + "veCounter": 1073586250 + } + } + } + } + } + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CBAQot8KIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 176034, + "veCounter": 1073586249 + } + } + } + } + } + } + } + }, + "metadata": { + "channelMetadataRenderer": { + "title": "Doobydobap", + "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", + "rssUrl": "https://www.youtube.com/feeds/videos.xml?channel_id=UCh8gHdtzO2tXd593_bjErWg", + "channelConversionUrl": "https://www.youtube.com/pagead/viewthroughconversion/962985656/?backend=innertube&cname=1&cver=2_20240909_01_00&foc_id=h8gHdtzO2tXd593_bjErWg&label=followon_cvisit&ptype=no_rmkt&utuid=h8gHdtzO2tXd593_bjErWg", + "externalId": "UCh8gHdtzO2tXd593_bjErWg", + "keywords": "", + "ownerUrls": [ + "http://www.youtube.com/@Doobydobap" + ], + "avatar": { + "thumbnails": [ + { + "url": "https://yt3.googleusercontent.com/dm5Aq93xvVJz0NoVO88ieBkDXmuShCujGPlZ7qETMEPTrXvPUCFI3-BB6Xs_P-r6Uk3mnBy9zA=s900-c-k-c0x00ffffff-no-rj", + "width": 900, + "height": 900 + } + ] + }, + "channelUrl": "https://www.youtube.com/channel/UCh8gHdtzO2tXd593_bjErWg", + "isFamilySafe": true, + "availableCountryCodes": [ + "KR", + "AM", + "RU", + "BN", + "FI", + "HN", + "PK", + "KN", + "PY", + "PS", + "IN", + "IE", + "FM", + "SX", + "AO", + "CG", + "LS", + "BB", + "RS", + "SC", + "ZM", + "GT", + "TV", + "GR", + "VA", + "PN", + "NC", + "TZ", + "BQ", + "DO", + "SY", + "MH", + "JM", + "TK", + "BT", + "CF", + "NL", + "WF", + "TT", + "AD", + "HK", + "AU", + "MF", + "AE", + "ET", + "MO", + "ZW", + "PM", + "PA", + "ME", + "PT", + "UY", + "RO", + "RE", + "ST", + "MU", + "LY", + "FJ", + "FK", + "BO", + "CR", + "HU", + "UG", + "TH", + "VU", + "KM", + "CD", + "LK", + "CL", + "UZ", + "FR", + "LI", + "CI", + "AL", + "AF", + "DJ", + "AG", + "IM", + "CO", + "CV", + "BH", + "CW", + "BE", + "GL", + "LR", + "MS", + "MV", + "CY", + "NF", + "IL", + "EG", + "CK", + "BZ", + "NR", + "BJ", + "AZ", + "TD", + "PE", + "SD", + "KW", + "FO", + "AS", + "CM", + "NI", + "KY", + "LC", + "PG", + "WS", + "GY", + "ID", + "LU", + "GH", + "UA", + "EH", + "BM", + "MM", + "VE", + "HR", + "TG", + "TL", + "SO", + "ZA", + "SA", + "QA", + "TF", + "GN", + "LB", + "JO", + "MD", + "SI", + "OM", + "BF", + "CH", + "SE", + "MG", + "MX", + "VG", + "PW", + "TW", + "KP", + "GD", + "AI", + "ML", + "DK", + "SH", + "LV", + "NO", + "TO", + "TN", + "MT", + "NZ", + "BV", + "GQ", + "MP", + "TC", + "TR", + "MQ", + "PH", + "YT", + "EE", + "GS", + "GM", + "IQ", + "LA", + "AT", + "MA", + "GG", + "JE", + "NE", + "BG", + "BD", + "BS", + "TM", + "GF", + "SB", + "ES", + "DM", + "MK", + "AW", + "CA", + "GE", + "SK", + "BR", + "PR", + "DE", + "IS", + "SG", + "EC", + "GB", + "MZ", + "HT", + "PF", + "DZ", + "SM", + "AR", + "BA", + "GP", + "AX", + "JP", + "BL", + "CN", + "KG", + "PL", + "HM", + "SS", + "IR", + "SV", + "AQ", + "SR", + "SZ", + "KE", + "LT", + "NG", + "CX", + "KZ", + "GI", + "NP", + "KI", + "KH", + "MW", + "VN", + "NU", + "MR", + "VC", + "MY", + "SJ", + "GW", + "GU", + "ER", + "IT", + "SL", + "IO", + "US", + "BY", + "MN", + "MC", + "YE", + "GA", + "NA", + "BW", + "CU", + "TJ", + "UM", + "VI", + "CC", + "SN", + "BI", + "RW", + "CZ" + ], + "androidDeepLink": "android-app://com.google.android.youtube/http/www.youtube.com/channel/UCh8gHdtzO2tXd593_bjErWg", + "androidAppindexingLink": "android-app://com.google.android.youtube/http/www.youtube.com/channel/UCh8gHdtzO2tXd593_bjErWg", + "iosAppindexingLink": "ios-app://544007664/vnd.youtube/www.youtube.com/channel/UCh8gHdtzO2tXd593_bjErWg", + "vanityChannelUrl": "http://www.youtube.com/@Doobydobap" + } + }, + "trackingParams": "CAAQhGciEwit74eSgbeIAxWCRHoFHUosHPI=", + "topbar": { + "desktopTopbarRenderer": { + "logo": { + "topbarLogoRenderer": { + "iconImage": { + "iconType": "YOUTUBE_LOGO" + }, + "tooltipText": { + "runs": [ + { + "text": "YouTube Home" + } + ] + }, + "endpoint": { + "clickTrackingParams": "CA8QsV4iEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/", + "webPageType": "WEB_PAGE_TYPE_BROWSE", + "rootVe": 3854, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "FEwhat_to_watch" + } + }, + "trackingParams": "CA8QsV4iEwit74eSgbeIAxWCRHoFHUosHPI=", + "overrideEntityKey": "EgZ0b3BiYXIg9QEoAQ%3D%3D" + } + }, + "searchbox": { + "fusionSearchboxRenderer": { + "icon": { + "iconType": "SEARCH" + }, + "placeholderText": { + "runs": [ + { + "text": "Search" + } + ] + }, + "config": { + "webSearchboxConfig": { + "requestLanguage": "en", + "requestDomain": "us", + "hasOnscreenKeyboard": false, + "focusSearchbox": true + } + }, + "trackingParams": "CA0Q7VAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "searchEndpoint": { + "clickTrackingParams": "CA0Q7VAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "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": "CA4Q8FsiEwit74eSgbeIAxWCRHoFHUosHPI=", + "accessibilityData": { + "accessibilityData": { + "label": "Clear search query" + } + } + } + } + } + }, + "trackingParams": "CAEQq6wBIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "topbarButtons": [ + { + "topbarMenuButtonRenderer": { + "icon": { + "iconType": "MORE_VERT" + }, + "menuRequest": { + "clickTrackingParams": "CAsQ_qsBGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/account/account_menu" + } + }, + "signalServiceEndpoint": { + "signal": "GET_ACCOUNT_MENU", + "actions": [ + { + "clickTrackingParams": "CAsQ_qsBGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "openPopupAction": { + "popup": { + "multiPageMenuRenderer": { + "trackingParams": "CAwQ_6sBIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "style": "MULTI_PAGE_MENU_STYLE_TYPE_SYSTEM", + "showLoadingSpinner": true + } + }, + "popupType": "DROPDOWN", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CAsQ_qsBGAAiEwit74eSgbeIAxWCRHoFHUosHPI=", + "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": "CAoQ1IAEGAEiEwit74eSgbeIAxWCRHoFHUosHPI=", + "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": "CAoQ1IAEGAEiEwit74eSgbeIAxWCRHoFHUosHPI=", + "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": "CAkQ8FsiEwit74eSgbeIAxWCRHoFHUosHPI=" + } + }, + "trackingParams": "CAgQteYDIhMIre-HkoG3iAMVgkR6BR1KLBzy" + } + }, + "backButton": { + "buttonRenderer": { + "trackingParams": "CAcQvIYDIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "command": { + "clickTrackingParams": "CAcQvIYDIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CAcQvIYDIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "signalAction": { + "signal": "HISTORY_BACK" + } + } + ] + } + } + } + }, + "forwardButton": { + "buttonRenderer": { + "trackingParams": "CAYQvYYDIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "command": { + "clickTrackingParams": "CAYQvYYDIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CAYQvYYDIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "signalAction": { + "signal": "HISTORY_FORWARD" + } + } + ] + } + } + } + }, + "a11ySkipNavigationButton": { + "buttonRenderer": { + "style": "STYLE_DEFAULT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Skip navigation" + } + ] + }, + "trackingParams": "CAUQ8FsiEwit74eSgbeIAxWCRHoFHUosHPI=", + "command": { + "clickTrackingParams": "CAUQ8FsiEwit74eSgbeIAxWCRHoFHUosHPI=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CAUQ8FsiEwit74eSgbeIAxWCRHoFHUosHPI=", + "signalAction": { + "signal": "SKIP_NAVIGATION" + } + } + ] + } + } + } + }, + "voiceSearchButton": { + "buttonRenderer": { + "style": "STYLE_DEFAULT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "serviceEndpoint": { + "clickTrackingParams": "CAIQ7a8FIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CAIQ7a8FIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "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": "CAQQ0LEFIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "accessibilityData": { + "accessibilityData": { + "label": "Cancel" + } + } + } + }, + "trackingParams": "CAMQ7q8FIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "microphoneOffPromptHeader": { + "runs": [ + { + "text": "Microphone off. Try again." + } + ] + } + } + }, + "popupType": "TOP_ALIGNED_DIALOG" + } + } + ] + } + }, + "icon": { + "iconType": "MICROPHONE_ON" + }, + "tooltip": "Search with your voice", + "trackingParams": "CAIQ7a8FIhMIre-HkoG3iAMVgkR6BR1KLBzy", + "accessibilityData": { + "accessibilityData": { + "label": "Search with your voice" + } + } + } + } + } + }, + "microformat": { + "microformatDataRenderer": { + "urlCanonical": "https://www.youtube.com/channel/UCh8gHdtzO2tXd593_bjErWg", + "title": "Doobydobap", + "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 do. Whether it’s because you’r...", + "thumbnail": { + "thumbnails": [ + { + "url": "https://yt3.googleusercontent.com/dm5Aq93xvVJz0NoVO88ieBkDXmuShCujGPlZ7qETMEPTrXvPUCFI3-BB6Xs_P-r6Uk3mnBy9zA=s200-c-k-c0x00ffffff-no-rj?days_since_epoch=19975", + "width": 200, + "height": 200 + } + ] + }, + "siteName": "YouTube", + "appName": "YouTube", + "androidPackage": "com.google.android.youtube", + "iosAppStoreId": "544007664", + "iosAppArguments": "https://www.youtube.com/channel/UCh8gHdtzO2tXd593_bjErWg", + "ogType": "yt-fb-app:channel", + "urlApplinksWeb": "https://www.youtube.com/channel/UCh8gHdtzO2tXd593_bjErWg?feature=applinks", + "urlApplinksIos": "vnd.youtube://www.youtube.com/channel/UCh8gHdtzO2tXd593_bjErWg?feature=applinks", + "urlApplinksAndroid": "vnd.youtube://www.youtube.com/channel/UCh8gHdtzO2tXd593_bjErWg?feature=applinks", + "urlTwitterIos": "vnd.youtube://www.youtube.com/channel/UCh8gHdtzO2tXd593_bjErWg?feature=twitter-deep-link", + "urlTwitterAndroid": "vnd.youtube://www.youtube.com/channel/UCh8gHdtzO2tXd593_bjErWg?feature=twitter-deep-link", + "twitterCardType": "summary", + "twitterSiteHandle": "@YouTube", + "schemaDotOrgType": "http://schema.org/http://schema.org/YoutubeChannelV2", + "noindex": false, + "unlisted": false, + "familySafe": true, + "availableCountries": [ + "KR", + "AM", + "RU", + "BN", + "FI", + "HN", + "PK", + "KN", + "PY", + "PS", + "IN", + "IE", + "FM", + "SX", + "AO", + "CG", + "LS", + "BB", + "RS", + "SC", + "ZM", + "GT", + "TV", + "GR", + "VA", + "PN", + "NC", + "TZ", + "BQ", + "DO", + "SY", + "MH", + "JM", + "TK", + "BT", + "CF", + "NL", + "WF", + "TT", + "AD", + "HK", + "AU", + "MF", + "AE", + "ET", + "MO", + "ZW", + "PM", + "PA", + "ME", + "PT", + "UY", + "RO", + "RE", + "ST", + "MU", + "LY", + "FJ", + "FK", + "BO", + "CR", + "HU", + "UG", + "TH", + "VU", + "KM", + "CD", + "LK", + "CL", + "UZ", + "FR", + "LI", + "CI", + "AL", + "AF", + "DJ", + "AG", + "IM", + "CO", + "CV", + "BH", + "CW", + "BE", + "GL", + "LR", + "MS", + "MV", + "CY", + "NF", + "IL", + "EG", + "CK", + "BZ", + "NR", + "BJ", + "AZ", + "TD", + "PE", + "SD", + "KW", + "FO", + "AS", + "CM", + "NI", + "KY", + "LC", + "PG", + "WS", + "GY", + "ID", + "LU", + "GH", + "UA", + "EH", + "BM", + "MM", + "VE", + "HR", + "TG", + "TL", + "SO", + "ZA", + "SA", + "QA", + "TF", + "GN", + "LB", + "JO", + "MD", + "SI", + "OM", + "BF", + "CH", + "SE", + "MG", + "MX", + "VG", + "PW", + "TW", + "KP", + "GD", + "AI", + "ML", + "DK", + "SH", + "LV", + "NO", + "TO", + "TN", + "MT", + "NZ", + "BV", + "GQ", + "MP", + "TC", + "TR", + "MQ", + "PH", + "YT", + "EE", + "GS", + "GM", + "IQ", + "LA", + "AT", + "MA", + "GG", + "JE", + "NE", + "BG", + "BD", + "BS", + "TM", + "GF", + "SB", + "ES", + "DM", + "MK", + "AW", + "CA", + "GE", + "SK", + "BR", + "PR", + "DE", + "IS", + "SG", + "EC", + "GB", + "MZ", + "HT", + "PF", + "DZ", + "SM", + "AR", + "BA", + "GP", + "AX", + "JP", + "BL", + "CN", + "KG", + "PL", + "HM", + "SS", + "IR", + "SV", + "AQ", + "SR", + "SZ", + "KE", + "LT", + "NG", + "CX", + "KZ", + "GI", + "NP", + "KI", + "KH", + "MW", + "VN", + "NU", + "MR", + "VC", + "MY", + "SJ", + "GW", + "GU", + "ER", + "IT", + "SL", + "IO", + "US", + "BY", + "MN", + "MC", + "YE", + "GA", + "NA", + "BW", + "CU", + "TJ", + "UM", + "VI", + "CC", + "SN", + "BI", + "RW", + "CZ" + ], + "linkAlternates": [ + { + "hrefUrl": "https://m.youtube.com/channel/UCh8gHdtzO2tXd593_bjErWg" + }, + { + "hrefUrl": "android-app://com.google.android.youtube/http/youtube.com/channel/UCh8gHdtzO2tXd593_bjErWg" + }, + { + "hrefUrl": "ios-app://544007664/http/youtube.com/channel/UCh8gHdtzO2tXd593_bjErWg" + } + ] + } + } +} diff --git a/tests/youtube.rs b/tests/youtube.rs index b6d5be6..a8c8dc7 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -221,13 +221,13 @@ async fn check_video_stream(s: impl YtStream) { true )] #[case::agelimit( - "laru0QoJUmI", - "DJ Robin x Schürze - Layla (Official Video)", - "Endlich ist es soweit! Zwei Männer aus dem Schwabenland", - 188, - "UCkJfSrMnLonOZWh-q5os5bg", - "Summerfield Records", - 10_000_000, + "ZDKQmBWTRnw", + "The Rinky Pink Pounder. Hitachi Magic Wand clone teardown.", + "violent adult toys for disassembly", + 1333, + "UCtM5z2gkrGRuWd0JQMx76qA", + "bigclivedotcom", + 250_000, false, false )] @@ -717,7 +717,7 @@ async fn get_video_details_live(rp: RustyPipe) { assert_eq!(details.id, "jfKfPfyJRdk"); assert_eq!( details.name, - "lofi hip hop radio 📚 - beats to relax/study to" + "lofi hip hop radio 📚 beats to relax/study to" ); let desc = details.description.to_plaintext(); assert!( @@ -752,24 +752,27 @@ async fn get_video_details_live(rp: RustyPipe) { #[rstest] #[tokio::test] async fn get_video_details_agegate(rp: RustyPipe) { - let details = rp.query().video_details("laru0QoJUmI").await.unwrap(); + let details = rp.query().video_details("ZDKQmBWTRnw").await.unwrap(); // dbg!(&details); - assert_eq!(details.id, "laru0QoJUmI"); - assert_eq!(details.name, "DJ Robin x Schürze - Layla (Official Video)"); + assert_eq!(details.id, "ZDKQmBWTRnw"); + assert_eq!( + details.name, + "The Rinky Pink Pounder. Hitachi Magic Wand clone teardown." + ); insta::assert_ron_snapshot!(details.description, @"RichText([])"); - assert_eq!(details.channel.id, "UCkJfSrMnLonOZWh-q5os5bg"); - assert_eq!(details.channel.name, "Summerfield Records"); + assert_eq!(details.channel.id, "UCtM5z2gkrGRuWd0JQMx76qA"); + assert_eq!(details.channel.name, "bigclivedotcom"); assert!(!details.channel.avatar.is_empty(), "no channel avatars"); assert_eq!(details.channel.verification, Verification::Verified); - assert_gteo(details.channel.subscriber_count, 250_000, "subscribers"); - assert_gte(details.view_count, 10_000_000, "views"); - assert_gteo(details.like_count, 150_000, "likes"); + assert_gteo(details.channel.subscriber_count, 1_000_000, "subscribers"); + assert_gte(details.view_count, 250_000, "views"); + assert_gteo(details.like_count, 5_000, "likes"); let date = details.publish_date.expect("publish_date"); - assert_eq!(date.date(), date!(2022 - 5 - 13)); + assert_eq!(date.date(), date!(2017 - 3 - 09)); assert!(!details.is_live); assert!(!details.is_ccommons); @@ -876,8 +879,11 @@ 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(); @@ -2153,7 +2159,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("Best Pop Music Videos - Top Pop Hits Playlist", true) + .music_search_playlists("Miku my beloved (Jaiden Animation Miku Playlist)", true) .await .unwrap(); @@ -2162,20 +2168,20 @@ async fn music_search_playlists_community(rp: RustyPipe) { .items .items .iter() - .find(|p| p.id == "PLMC9KNkIncKtGvr2kFRuXBVmBev6cAJ2u") + .find(|p| p.id == "PLgAAMoX4rK3KhSGmIsN0LEoC3qowEr2Lz") .unwrap_or_else(|| { panic!("could not find playlist, got {:#?}", &res.items.items); }); assert_eq!( playlist.name, - "Best Pop Music Videos - Top Pop Hits Playlist" + "Miku my beloved (Jaiden Animation Miku Playlist)" ); assert!(!playlist.thumbnail.is_empty(), "got no thumbnail"); let channel = playlist.channel.as_ref().unwrap(); - assert_eq!(channel.id, "UCs72iRpTEuwV3y6pdWYLgiw"); - assert_eq!(channel.name, "Redlist - Just Hits"); + assert_eq!(channel.id, "UCsXOMpqp3_ZPOmk-HGKEPRg"); + assert_eq!(channel.name, "Beanie Bean"); assert!(!playlist.from_ytm); } From 7a019f5706e19f7fe9f2e16e3b94d7b98cc8aca9 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 10 Sep 2024 03:15:41 +0200 Subject: [PATCH 143/347] feat: add RustyPipe version constant --- cli/Cargo.toml | 1 + cli/src/main.rs | 8 +++++++- src/lib.rs | 3 +++ src/report.rs | 2 +- 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 3b4df59..4fb5bd8 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -59,3 +59,4 @@ dirs.workspace = true anstream = "0.6.15" owo-colors = "4.0.0" +const_format = "0.2.33" diff --git a/cli/src/main.rs b/cli/src/main.rs index be5ae6a..ceeabb9 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -9,6 +9,7 @@ use std::{ }; use clap::{Parser, Subcommand, ValueEnum}; +use const_format::formatcp; use futures::stream::{self, StreamExt}; use indicatif::{MultiProgress, ProgressBar, ProgressStyle}; use owo_colors::OwoColorize; @@ -29,7 +30,12 @@ use tracing::level_filters::LevelFilter; use tracing_subscriber::{fmt::MakeWriter, EnvFilter}; #[derive(Parser)] -#[clap(author, version, about, long_about = None)] +#[clap( + author, + version = formatcp!("{}\nrustypipe {}", env!("CARGO_PKG_VERSION"), rustypipe::VERSION), + about, + long_about = None +)] struct Cli { #[clap(subcommand)] command: Commands, diff --git a/src/lib.rs b/src/lib.rs index 89837ae..012211e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -19,3 +19,6 @@ pub mod model; pub mod param; pub mod report; pub mod validate; + +/// Version of the RustyPipe crate +pub const VERSION: &str = env!("CARGO_PKG_VERSION"); diff --git a/src/report.rs b/src/report.rs index e0df4ff..a0a793c 100644 --- a/src/report.rs +++ b/src/report.rs @@ -108,7 +108,7 @@ impl RustyPipeInfo<'_> { pub(crate) fn new(language: Option) -> Self { Self { package: env!("CARGO_PKG_NAME"), - version: env!("CARGO_PKG_VERSION"), + version: crate::VERSION, date: util::now_sec(), language, } From 2d3914bc4bac79e40a767c2fcf35ea6abdda3cf7 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 10 Sep 2024 03:34:51 +0200 Subject: [PATCH 144/347] chore(release): release rustypipe v0.4.0 --- CHANGELOG.md | 20 ++++++++++++++++++++ Cargo.toml | 4 ++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 81c1f30..ad8300b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,26 @@ All notable changes to this project will be documented in this file. +## [v0.4.0](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe/v0.3.0..rustypipe/v0.4.0) - 2024-09-10 + +### 🚀 Features + +- Add RustyPipe version constant - ([7a019f5](https://codeberg.org/ThetaDev/rustypipe/commit/7a019f5706e19f7fe9f2e16e3b94d7b98cc8aca9)) + +### 🐛 Bug Fixes + +- Show docs.rs feature flags - ([67a231d](https://codeberg.org/ThetaDev/rustypipe/commit/67a231d6d1b6427f500667729a59032f2b28cc65)) +- A/B test 15 (parsing channel shortsLockupViewModel) - ([7972df0](https://codeberg.org/ThetaDev/rustypipe/commit/7972df0df498edd7801e25037b9b2456367f9204)) + +### 📚 Documentation + +- Fix license badge URL - ([4a253e1](https://codeberg.org/ThetaDev/rustypipe/commit/4a253e1a47317e9999e6ad31ac5c411956a0986a)) + +### ⚙️ Miscellaneous Tasks + +- *(deps)* Update rust crate tokio to 1.20.4 [security] (#10) - ([a445e51](https://codeberg.org/ThetaDev/rustypipe/commit/a445e51b54a9afc44cd9657260a0b3d2abddbfa6)) + + ## [v0.3.0](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe/v0.2.1..rustypipe/v0.3.0) - 2024-08-18 ### 🚀 Features diff --git a/Cargo.toml b/Cargo.toml index aa85b5f..754c4a7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe" -version = "0.3.0" +version = "0.4.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.3.0", default-features = false } +rustypipe = { path = ".", version = "0.4.0", default-features = false } rustypipe-downloader = { path = "./downloader", version = "0.2.0", default-features = false, features = [ "indicatif", "audiotag", From 90f79cc887ac8a8fcfcd2ed46336aec8a299672a Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 10 Sep 2024 03:36:29 +0200 Subject: [PATCH 145/347] chore(release): release rustypipe-downloader v0.2.1 --- Cargo.toml | 2 +- downloader/CHANGELOG.md | 11 +++++++++++ downloader/Cargo.toml | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 754c4a7..e4b9260 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -74,7 +74,7 @@ tracing-test = "0.2.5" # Included crates rustypipe = { path = ".", version = "0.4.0", default-features = false } -rustypipe-downloader = { path = "./downloader", version = "0.2.0", default-features = false, features = [ +rustypipe-downloader = { path = "./downloader", version = "0.2.1", default-features = false, features = [ "indicatif", "audiotag", ] } diff --git a/downloader/CHANGELOG.md b/downloader/CHANGELOG.md index aa89612..5e20ad2 100644 --- a/downloader/CHANGELOG.md +++ b/downloader/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. +## [v0.2.1](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-downloader/v0.2.0..rustypipe-downloader/v0.2.1) - 2024-09-10 + +### 📚 Documentation + +- Fix license badge URL - ([4a253e1](https://codeberg.org/ThetaDev/rustypipe/commit/4a253e1a47317e9999e6ad31ac5c411956a0986a)) + +### ⚙️ Miscellaneous Tasks + +- *(deps)* Update rust crate tokio to 1.20.4 [security] (#10) - ([a445e51](https://codeberg.org/ThetaDev/rustypipe/commit/a445e51b54a9afc44cd9657260a0b3d2abddbfa6)) + + ## [v0.2.0](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-downloader/v0.1.1..rustypipe-downloader/v0.2.0) - 2024-08-18 ### 🚀 Features diff --git a/downloader/Cargo.toml b/downloader/Cargo.toml index 2679252..8ef75d0 100644 --- a/downloader/Cargo.toml +++ b/downloader/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe-downloader" -version = "0.2.0" +version = "0.2.1" rust-version = "1.67.1" edition.workspace = true authors.workspace = true From d54277a1757952f297243fb697b83f6616ca0b76 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 10 Sep 2024 03:36:57 +0200 Subject: [PATCH 146/347] chore(release): release rustypipe-cli v0.2.1 --- cli/CHANGELOG.md | 15 +++++++++++++++ cli/Cargo.toml | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md index 5bbdd40..ae64f65 100644 --- a/cli/CHANGELOG.md +++ b/cli/CHANGELOG.md @@ -3,6 +3,21 @@ All notable changes to this project will be documented in this file. +## [v0.2.1](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-cli/v0.2.0..rustypipe-cli/v0.2.1) - 2024-09-10 + +### 🚀 Features + +- Add RustyPipe version constant - ([7a019f5](https://codeberg.org/ThetaDev/rustypipe/commit/7a019f5706e19f7fe9f2e16e3b94d7b98cc8aca9)) + +### 📚 Documentation + +- Fix license badge URL - ([4a253e1](https://codeberg.org/ThetaDev/rustypipe/commit/4a253e1a47317e9999e6ad31ac5c411956a0986a)) + +### ⚙️ Miscellaneous Tasks + +- *(deps)* Update rust crate tokio to 1.20.4 [security] (#10) - ([a445e51](https://codeberg.org/ThetaDev/rustypipe/commit/a445e51b54a9afc44cd9657260a0b3d2abddbfa6)) + + ## [v0.2.0](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-cli/v0.1.1..rustypipe-cli/v0.2.0) - 2024-08-18 ### 🚀 Features diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 4fb5bd8..1626347 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe-cli" -version = "0.2.0" +version = "0.2.1" rust-version = "1.70.0" edition.workspace = true authors.workspace = true From ace0fae1005217cd396000176e7c01682eae026f Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 12 Oct 2024 05:29:04 +0200 Subject: [PATCH 147/347] fix: prioritize visitor_data argument before opts --- src/client/mod.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/client/mod.rs b/src/client/mod.rs index 7546d8b..9293160 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -1193,7 +1193,7 @@ impl RustyPipeQuery { } else { (Language::En, Country::Us) }; - let visitor_data = self.opts.visitor_data.as_deref().or(visitor_data); + let visitor_data = visitor_data.or(self.opts.visitor_data.as_deref()); match ctype { ClientType::Desktop => YTContext { @@ -1514,7 +1514,7 @@ impl RustyPipeQuery { id, lang: self.opts.lang, deobf, - visitor_data, + visitor_data: visitor_data.or(self.opts.visitor_data.as_deref()), client_type: ctype, }; From 69d64e5aca444f756c0bc42153faee5f90af717b Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 12 Oct 2024 05:31:05 +0200 Subject: [PATCH 148/347] test: fix tests --- .../youtube__music_artist_no_more_albums.snap | 15 +++++++++++++ ...ube__music_artist_no_more_albums_intl.snap | 15 +++++++++++++ tests/youtube.rs | 22 +++++++++---------- 3 files changed, 41 insertions(+), 11 deletions(-) diff --git a/tests/snapshots/youtube__music_artist_no_more_albums.snap b/tests/snapshots/youtube__music_artist_no_more_albums.snap index 940f4a2..e9b1902 100644 --- a/tests/snapshots/youtube__music_artist_no_more_albums.snap +++ b/tests/snapshots/youtube__music_artist_no_more_albums.snap @@ -146,6 +146,21 @@ MusicArtist( year: Some(2014), by_va: false, ), + AlbumItem( + id: "MPREb_tdFqP579jQz", + name: "Bleib in der Schule (Live in Berlin)", + cover: "[cover]", + artists: [ + ArtistId( + id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + name: "Trailerpark", + ), + ], + artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + album_type: Single, + year: Some(2024), + by_va: false, + ), ], playlists: "[playlists]", similar_artists: "[artists]", 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 eb54f92..5b0fb81 100644 --- a/tests/snapshots/youtube__music_artist_no_more_albums_intl.snap +++ b/tests/snapshots/youtube__music_artist_no_more_albums_intl.snap @@ -146,6 +146,21 @@ MusicArtist( year: Some(2014), by_va: false, ), + AlbumItem( + id: "MPREb_tdFqP579jQz", + name: "[name]", + cover: "[cover]", + artists: [ + ArtistId( + id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + name: "[name]", + ), + ], + artist_id: Some("UCOR4_bSVIXPsGa4BbCSt60Q"), + album_type: Single, + year: Some(2024), + by_va: false, + ), ], playlists: "[playlists]", similar_artists: "[artists]", diff --git a/tests/youtube.rs b/tests/youtube.rs index a8c8dc7..91566eb 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -86,8 +86,8 @@ async fn get_player_from_client(#[case] client_type: ClientType, rp: RustyPipe) // Bitrates may change between requests assert_approx(video.bitrate, 2_341_408); - assert_eq!(video.average_bitrate, 1_660_210); - assert_eq!(video.size, Some(53_754_490)); + assert_eq!(video.average_bitrate, 1_661_658); + assert_eq!(video.size, Some(53_801_380)); assert_eq!(video.width, 1280); assert_eq!(video.height, 720); assert_eq!(video.fps, 30); @@ -1528,7 +1528,7 @@ async fn music_playlist( } #[rstest] -#[case::user("PLMC9KNkIncKtPzgY-5rmhvj7fax8fdxoj")] +#[case::user("PLZN_exA7d4RVmCQrG5VlWIjMOkMFZVVOc")] #[case::ytm("RDCLAK5uy_kb7EBi6y3GrtJri4_ZH56Ms786DFEimbM")] #[tokio::test] async fn music_playlist_cont(#[case] id: &str, rp: RustyPipe) { @@ -1539,7 +1539,7 @@ async fn music_playlist_cont(#[case] id: &str, rp: RustyPipe) { check_duplicates(&playlist.tracks.items); let track_count = playlist.track_count.unwrap(); - assert_gte(track_count, 100, "tracks"); + assert_gte(track_count, 90, "tracks"); assert_eq!(track_count, playlist.tracks.count.unwrap()); assert_gte( @@ -2038,13 +2038,13 @@ async fn music_search_episode(rp: RustyPipe, #[case] videos: bool) { false )] #[case::album( - "unbroken", - "Unbroken", - "MPREb_rMegpebUBPU", - "Demi Lovato", - "UCwem2sj-QUJCiWiPAo9JuAw", - 2011, - AlbumType::Album, + "where we come alive", + "Where We Come Alive", + "MPREb_Rh1zJSc0xPG", + "Ruelle", + "UCUCg0Z83rDmZUeBAEBlCdCw", + 2018, + AlbumType::Single, true )] #[tokio::test] From f3f2e1d3ca1e9c838c682356bb5a7ded6951c8e5 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 12 Oct 2024 05:33:23 +0200 Subject: [PATCH 149/347] fix: ignore live tracks in YTM searches --- src/client/music_search.rs | 1 + src/client/response/music_item.rs | 18 + ...ch__tests__map_music_search_main_live.snap | 658 + testfiles/music_search/main_live.json | 11162 ++++++++++++++++ 4 files changed, 11839 insertions(+) create mode 100644 src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_main_live.snap create mode 100644 testfiles/music_search/main_live.json diff --git a/src/client/music_search.rs b/src/client/music_search.rs index ea197c7..dfcc7f2 100644 --- a/src/client/music_search.rs +++ b/src/client/music_search.rs @@ -264,6 +264,7 @@ mod tests { #[case::typo("typo")] #[case::radio("radio")] #[case::artist("artist")] + #[case::live("live")] fn map_music_search_main(#[case] name: &str) { let json_path = path!(*TESTFILES / "music_search" / format!("main_{name}.json")); let json_file = File::open(json_path).unwrap(); diff --git a/src/client/response/music_item.rs b/src/client/response/music_item.rs index dc29688..7bfa31d 100644 --- a/src/client/response/music_item.rs +++ b/src/client/response/music_item.rs @@ -169,6 +169,9 @@ pub(crate) struct ListMusicItem { #[serde_as(as = "Option")] pub index: Option, pub menu: Option, + #[serde(default)] + #[serde_as(deserialize_as = "VecSkipError<_>")] + pub badges: Vec, } #[derive(Default, Debug, Copy, Clone, Deserialize)] @@ -419,6 +422,12 @@ pub(crate) struct SimpleHeaderRenderer { pub title: String, } +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) enum TrackBadge { + LiveBadgeRenderer {}, +} + /* #MAPPER */ @@ -588,6 +597,15 @@ impl MusicListMapper { view_count: Option, } + // Dont map music livestreams + if item + .badges + .iter() + .any(|b| matches!(b, TrackBadge::LiveBadgeRenderer {})) + { + return Ok(None); + } + let p = match item.flex_column_display_style { // Search result FlexColumnDisplayStyle::TwoLines => { 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 new file mode 100644 index 0000000..187099c --- /dev/null +++ b/src/client/snapshots/rustypipe__client__music_search__tests__map_music_search_main_live.snap @@ -0,0 +1,658 @@ +--- +source: src/client/music_search.rs +expression: map_res.c +--- +MusicSearchResult( + items: Paginator( + count: Some(24), + items: [ + Playlist(MusicPlaylistItem( + id: "RDATficG9wIHJhZGlv", + name: "Radio • Pop radio", + thumbnail: [ + Thumbnail( + url: "https://music.youtube.com/image/radioart?r=CjYKDS9nLzExYnhmeXNrY2cKCi9tLzAyODhjNGcKCi9tLzB2emdsdHQKDS9nLzExY2prcF95bTkQyAEYyAE", + width: 200, + height: 200, + ), + Thumbnail( + url: "https://music.youtube.com/image/radioart?r=CjYKDS9nLzExYnhmeXNrY2cKCi9tLzAyODhjNGcKCi9tLzB2emdsdHQKDS9nLzExY2prcF95bTkQ2AQY2AQ", + width: 600, + height: 600, + ), + Thumbnail( + url: "https://music.youtube.com/image/radioart?r=CjYKDS9nLzExYnhmeXNrY2cKCi9tLzAyODhjNGcKCi9tLzB2emdsdHQKDS9nLzExY2prcF95bTkQoAYYoAY", + width: 800, + height: 800, + ), + Thumbnail( + url: "https://music.youtube.com/image/radioart?r=CjYKDS9nLzExYnhmeXNrY2cKCi9tLzAyODhjNGcKCi9tLzB2emdsdHQKDS9nLzExY2prcF95bTkQ6AcY6Ac", + width: 1000, + height: 1000, + ), + ], + channel: None, + track_count: None, + from_ytm: true, + )), + Track(TrackItem( + id: "t-xeMn8D53o", + name: "Greatest Hits of the 50S Medley 1: Oh Carol! / Dream Lover / Livin\' Doll / Unchained Melody / Diana / Venus / Lipstick on Your Collar / For Your Precious Love / Maybe Tomorrow / Smoke Gets in Your Eyes / Rockin\' Robin / A Kiss from Your Lips / It\'s All In", + duration: Some(4572), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/Q1u5_zhRsAFtOHzVNX2DBU9HXOzUZ1mp-nECamkI3yUaYKvvw84iL3hmZdWnZu-rvqYQr4NklyeAF-R5=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/Q1u5_zhRsAFtOHzVNX2DBU9HXOzUZ1mp-nECamkI3yUaYKvvw84iL3hmZdWnZu-rvqYQr4NklyeAF-R5=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCIYXS1cfdBZkRdHRw3rfzJQ"), + name: "Various Artists", + ), + ], + artist_id: Some("UCIYXS1cfdBZkRdHRw3rfzJQ"), + album: Some(AlbumId( + id: "MPREb_soN0tFtPdTE", + name: "A Taste Of The 50\'s", + )), + view_count: Some(12000000), + is_video: false, + track_nr: None, + by_va: false, + )), + Track(TrackItem( + id: "Yx-sGL0xX-U", + name: "The Mega Kids Continuous Party Mix", + duration: Some(2637), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/rmPNW2T881pJc7lh_oOvk-peoqja2sYmpbG9A20pp_5yCGPKQFi0lpPLhrlZMnZCPIFnow6Ang8JcppZ=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/rmPNW2T881pJc7lh_oOvk-peoqja2sYmpbG9A20pp_5yCGPKQFi0lpPLhrlZMnZCPIFnow6Ang8JcppZ=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCRSKTrl7fcrfANL_WKpQYuA"), + name: "Kids Party DJs", + ), + ], + artist_id: Some("UCRSKTrl7fcrfANL_WKpQYuA"), + album: Some(AlbumId( + id: "MPREb_8DJc4Lj5xtw", + name: "Top 20 Kids Pop Chart Hits - The Very Best Children\'s Party Smash Hits!", + )), + view_count: Some(1800000), + is_video: false, + track_nr: None, + by_va: false, + )), + Track(TrackItem( + id: "HzdD8kbDzZA", + name: "Take on Me", + duration: Some(226), + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/8YZqnYRc52GUz0iyQTRZvzh8RSbCNTTC0NSrpRlKf8UfSyu87K7ziegM8aFfAyMgUXBisxT_weHb4pFE=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/8YZqnYRc52GUz0iyQTRZvzh8RSbCNTTC0NSrpRlKf8UfSyu87K7ziegM8aFfAyMgUXBisxT_weHb4pFE=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UCx00XxqRCfPS6zaTzRm3H2A"), + name: "a-ha", + ), + ], + artist_id: Some("UCx00XxqRCfPS6zaTzRm3H2A"), + album: Some(AlbumId( + id: "MPREb_5xYAryDnQqC", + name: "Hunting High and Low", + )), + view_count: Some(2400000000), + is_video: false, + track_nr: None, + by_va: false, + )), + Track(TrackItem( + id: "Zh7Un8gVFak", + name: "Japanese City Pop Radio: A Side", + duration: Some(8075), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/Zh7Un8gVFak/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kX-I5KVMB8bE1JxrFBwQLYhp0TkQ", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: Some("UCUUjvLsLlT1rj6N2oqM_tnw"), + name: "Coffee and Music Radio", + ), + ], + artist_id: Some("UCUUjvLsLlT1rj6N2oqM_tnw"), + album: None, + view_count: Some(53000), + is_video: true, + track_nr: None, + by_va: false, + )), + Track(TrackItem( + id: "BMnD36Abw_0", + name: "Hits Radio 1 Live Pop Radio\' Top Hits 2022 Pop Music 2022 New Songs 2023 Best English Songs 2022 New", + duration: Some(1491), + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/BMnD36Abw_0/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3ktKIjmM-6-_FNbu99jO-21dPvz3g", + width: 400, + height: 225, + ), + ], + artists: [ + ArtistId( + id: Some("UCKxW3x-6j8r0Yzm1i6bs9WA"), + name: "Best Of Mix", + ), + ], + artist_id: Some("UCKxW3x-6j8r0Yzm1i6bs9WA"), + album: None, + view_count: Some(23000), + is_video: true, + track_nr: None, + by_va: false, + )), + Album(AlbumItem( + id: "MPREb_UQFAF6UM4DN", + name: "Pop (Radio)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/YhDl79RlxB5oQqMdp5B4_fMkx_4M2Z01M9Y9RytYeA6pzi_NtJ-ERxb34ukuA6AqoN0JSJFiyrMZFfZKEQ=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/YhDl79RlxB5oQqMdp5B4_fMkx_4M2Z01M9Y9RytYeA6pzi_NtJ-ERxb34ukuA6AqoN0JSJFiyrMZFfZKEQ=w120-h120-l90-rj", + width: 120, + height: 120, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/YhDl79RlxB5oQqMdp5B4_fMkx_4M2Z01M9Y9RytYeA6pzi_NtJ-ERxb34ukuA6AqoN0JSJFiyrMZFfZKEQ=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/YhDl79RlxB5oQqMdp5B4_fMkx_4M2Z01M9Y9RytYeA6pzi_NtJ-ERxb34ukuA6AqoN0JSJFiyrMZFfZKEQ=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UC9StjndgeeKQmwjy47-FxyA"), + name: "Lou Jefe", + ), + ], + artist_id: Some("UC9StjndgeeKQmwjy47-FxyA"), + album_type: Single, + year: Some(2024), + by_va: false, + )), + Album(AlbumItem( + id: "MPREb_nLZMWyIu23q", + name: "Pop Radio", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/DzRT5Xr4VwiAORI8UCTZScRj34Qw4UkK3fGoORTEsEM1Ijzss4LiqMUyP--uo3jA7rG--U3GP8FkXodtnw=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/DzRT5Xr4VwiAORI8UCTZScRj34Qw4UkK3fGoORTEsEM1Ijzss4LiqMUyP--uo3jA7rG--U3GP8FkXodtnw=w120-h120-l90-rj", + width: 120, + height: 120, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/DzRT5Xr4VwiAORI8UCTZScRj34Qw4UkK3fGoORTEsEM1Ijzss4LiqMUyP--uo3jA7rG--U3GP8FkXodtnw=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/DzRT5Xr4VwiAORI8UCTZScRj34Qw4UkK3fGoORTEsEM1Ijzss4LiqMUyP--uo3jA7rG--U3GP8FkXodtnw=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UC0Gx6D-oHq-17IftnDlWPGA"), + name: "Universal Production Music", + ), + ], + artist_id: Some("UC0Gx6D-oHq-17IftnDlWPGA"), + album_type: Album, + year: Some(2014), + by_va: false, + )), + Album(AlbumItem( + id: "MPREb_W5z6dgGATp9", + name: "Pop Radio", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/vHVuF-fdKqYTCvw_kqYcCKSQ5AzQva18iDSf1b0l5jlkUDnX3r_8-M0AfQ96BqURlQIK2buNHBbG2lwa=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/vHVuF-fdKqYTCvw_kqYcCKSQ5AzQva18iDSf1b0l5jlkUDnX3r_8-M0AfQ96BqURlQIK2buNHBbG2lwa=w120-h120-l90-rj", + width: 120, + height: 120, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/vHVuF-fdKqYTCvw_kqYcCKSQ5AzQva18iDSf1b0l5jlkUDnX3r_8-M0AfQ96BqURlQIK2buNHBbG2lwa=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/vHVuF-fdKqYTCvw_kqYcCKSQ5AzQva18iDSf1b0l5jlkUDnX3r_8-M0AfQ96BqURlQIK2buNHBbG2lwa=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UCpqFkivR-Erb2npqfQEaaPQ"), + name: "Cody Price", + ), + ], + artist_id: Some("UCpqFkivR-Erb2npqfQEaaPQ"), + album_type: Album, + year: Some(2020), + by_va: false, + )), + Playlist(MusicPlaylistItem( + id: "RDCLAK5uy_nmS3YoxSwVVQk9lEQJ0UX4ZCjXsW_psU8", + name: "Pop\'s Biggest Hits", + thumbnail: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/ih5QdpqpkVNRXtD-joBWj3jo1woxAXJFyAoA3hWYNWAKX0M9B825HH2VOh7aDX-unf67oyCyJGN9TljR=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/ih5QdpqpkVNRXtD-joBWj3jo1woxAXJFyAoA3hWYNWAKX0M9B825HH2VOh7aDX-unf67oyCyJGN9TljR=w120-h120-l90-rj", + width: 120, + height: 120, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/ih5QdpqpkVNRXtD-joBWj3jo1woxAXJFyAoA3hWYNWAKX0M9B825HH2VOh7aDX-unf67oyCyJGN9TljR=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/ih5QdpqpkVNRXtD-joBWj3jo1woxAXJFyAoA3hWYNWAKX0M9B825HH2VOh7aDX-unf67oyCyJGN9TljR=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + channel: None, + track_count: Some(110), + from_ytm: true, + )), + Playlist(MusicPlaylistItem( + id: "RDCLAK5uy_nwiihKFMxWvkwG-hJlHX0VxKYFlbL3Muk", + name: "\'00s Pop Divas", + thumbnail: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/688p9Z4QwPzW8ZLnLP5L30qozF3FcyFaok_0yZXVEmSAc7-yHoQuckYE7MrDCK_f2KTxy1Ve3nGXbbc=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/688p9Z4QwPzW8ZLnLP5L30qozF3FcyFaok_0yZXVEmSAc7-yHoQuckYE7MrDCK_f2KTxy1Ve3nGXbbc=w120-h120-l90-rj", + width: 120, + height: 120, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/688p9Z4QwPzW8ZLnLP5L30qozF3FcyFaok_0yZXVEmSAc7-yHoQuckYE7MrDCK_f2KTxy1Ve3nGXbbc=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/688p9Z4QwPzW8ZLnLP5L30qozF3FcyFaok_0yZXVEmSAc7-yHoQuckYE7MrDCK_f2KTxy1Ve3nGXbbc=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + channel: None, + track_count: Some(154), + from_ytm: true, + )), + Playlist(MusicPlaylistItem( + id: "RDCLAK5uy_kskrFUGb5Tnz3-x4wyK9Q5j8RgfwQvq4k", + name: "Fresh Feel-good Morning Pop", + thumbnail: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/rz0JsK3pMOla5w8jS-5nlk69VnbhE8Y_6gsys800bZ0Pmuq2k2M0dyUUqufH9IHc4qO3pAgo_uleZA=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/rz0JsK3pMOla5w8jS-5nlk69VnbhE8Y_6gsys800bZ0Pmuq2k2M0dyUUqufH9IHc4qO3pAgo_uleZA=w120-h120-l90-rj", + width: 120, + height: 120, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/rz0JsK3pMOla5w8jS-5nlk69VnbhE8Y_6gsys800bZ0Pmuq2k2M0dyUUqufH9IHc4qO3pAgo_uleZA=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/rz0JsK3pMOla5w8jS-5nlk69VnbhE8Y_6gsys800bZ0Pmuq2k2M0dyUUqufH9IHc4qO3pAgo_uleZA=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + channel: None, + track_count: Some(85), + from_ytm: true, + )), + Playlist(MusicPlaylistItem( + id: "PLjPrfFZlhTgrv14nDcvsD5Ni9EYgdowe4", + name: "radio COLDPLAY (OneRepublic, Florence + The Machine, Adele, Maroon 5, Blur, Keane, Ed Sheeran, Artic Monkeys, James Blunt, King of Leon, etc)", + thumbnail: [ + Thumbnail( + url: "https://yt3.ggpht.com/BPS-G0J69HKcTT8wl_YNsBG7Uwca_NMSCifd3VuEyxl8co36DlCxqji4IlM_SbsNL6yBAUpv81Q=s192", + width: 192, + height: 192, + ), + Thumbnail( + url: "https://yt3.ggpht.com/BPS-G0J69HKcTT8wl_YNsBG7Uwca_NMSCifd3VuEyxl8co36DlCxqji4IlM_SbsNL6yBAUpv81Q=s576", + width: 576, + height: 576, + ), + Thumbnail( + url: "https://yt3.ggpht.com/BPS-G0J69HKcTT8wl_YNsBG7Uwca_NMSCifd3VuEyxl8co36DlCxqji4IlM_SbsNL6yBAUpv81Q=s1200", + width: 1200, + height: 1200, + ), + ], + channel: Some(ChannelId( + id: "UCujpSyP1YSh-Z81uaZF-otg", + name: "Tiago Pace", + )), + track_count: None, + from_ytm: false, + )), + Playlist(MusicPlaylistItem( + id: "PLGBuKfnErZlB3AThAEKz8_3kbYTocgfbB", + name: "Greatest 2010s Hits - Best Pop Songs of the Decade Playlist (Top Pop Music 2010 to 2019)", + thumbnail: [ + Thumbnail( + url: "https://yt3.googleusercontent.com/5SZBzsrGtSRhDVdowKwN7Nq1N07vtW-1PX_5edyNa3SomINr_3Nu6gSQ-RxzV35d865NcRZJJn18=s192", + width: 192, + height: 192, + ), + Thumbnail( + url: "https://yt3.googleusercontent.com/5SZBzsrGtSRhDVdowKwN7Nq1N07vtW-1PX_5edyNa3SomINr_3Nu6gSQ-RxzV35d865NcRZJJn18=s576", + width: 576, + height: 576, + ), + Thumbnail( + url: "https://yt3.googleusercontent.com/5SZBzsrGtSRhDVdowKwN7Nq1N07vtW-1PX_5edyNa3SomINr_3Nu6gSQ-RxzV35d865NcRZJJn18=s1200", + width: 1200, + height: 1200, + ), + ], + channel: Some(ChannelId( + id: "UCwtKO1Vwz-7g0nBxBQcU4bg", + name: "Redlist Decades", + )), + track_count: None, + from_ytm: false, + )), + Playlist(MusicPlaylistItem( + id: "PLBUQc1r4P3Zn8_48OHdcw_2w7wCTA87vo", + name: "2014 - Top 100 Pop Som do Rádio", + thumbnail: [ + Thumbnail( + url: "https://yt3.ggpht.com/wJD96HbZqZq_xCYgy2EZeKXLz9a5XgXwNbMfnni0sUm3o9aFHpePQJ37Iki23tFIJy3ekBJg72Kr=s192", + width: 192, + height: 192, + ), + Thumbnail( + url: "https://yt3.ggpht.com/wJD96HbZqZq_xCYgy2EZeKXLz9a5XgXwNbMfnni0sUm3o9aFHpePQJ37Iki23tFIJy3ekBJg72Kr=s576", + width: 576, + height: 576, + ), + Thumbnail( + url: "https://yt3.ggpht.com/wJD96HbZqZq_xCYgy2EZeKXLz9a5XgXwNbMfnni0sUm3o9aFHpePQJ37Iki23tFIJy3ekBJg72Kr=s1200", + width: 1200, + height: 1200, + ), + ], + channel: Some(ChannelId( + id: "UCwWlgHlHoOvS1Yv-ZOz_l3g", + name: "Ronaldo Mouro", + )), + track_count: None, + from_ytm: false, + )), + Artist(ArtistItem( + id: "UCBXkAv-NKkbiqWntYOfrX1g", + name: "Pop Radio", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/OWekWvgAF96ZvGJYUtKGMj8av444mc2aPYWKvnC4pCYGZ9ByB6_JfAke4OgCJpU1W0X9UEXDQmpwyVUZ=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/OWekWvgAF96ZvGJYUtKGMj8av444mc2aPYWKvnC4pCYGZ9ByB6_JfAke4OgCJpU1W0X9UEXDQmpwyVUZ=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + subscriber_count: Some(14), + )), + Artist(ArtistItem( + id: "UCsmNP7U8ilAk6UzHO07Ytlw", + name: "Musica Pop Radio", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/Cpg_Uo9J8_MH1frw4nNwGFYWlcuCiu9Gjb8Hee0H-iNGMi569j-znlsGcHfFM_SAlQtiJEizdPza__EP=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/Cpg_Uo9J8_MH1frw4nNwGFYWlcuCiu9Gjb8Hee0H-iNGMi569j-znlsGcHfFM_SAlQtiJEizdPza__EP=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + subscriber_count: Some(7), + )), + Artist(ArtistItem( + id: "UCL_NoCEau0Gj1dQ4ru7UzcA", + name: "City Pop Radio", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/qboJ2C1DmazfBiGgi0h5rBOOyy6QP0R-mMwInkCv0gUavon8KBRRA4xV2MlO_DozAIMFCwNCfKq9clAxIQ=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/qboJ2C1DmazfBiGgi0h5rBOOyy6QP0R-mMwInkCv0gUavon8KBRRA4xV2MlO_DozAIMFCwNCfKq9clAxIQ=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + subscriber_count: Some(5), + )), + Playlist(MusicPlaylistItem( + id: "PL-ijX1Uy5ZgUFapzL2MFyTggZQBHC7xH2", + name: "Culture Pop Radio Season 2", + thumbnail: [ + Thumbnail( + url: "https://www.gstatic.com/youtube/media/ytm/images/pbg/playlist-empty-state-@192.png", + width: 192, + height: 192, + ), + Thumbnail( + url: "https://www.gstatic.com/youtube/media/ytm/images/pbg/playlist-empty-state-@576.png", + width: 576, + height: 576, + ), + Thumbnail( + url: "https://www.gstatic.com/youtube/media/ytm/images/pbg/playlist-empty-state-@1200.png", + width: 1200, + height: 1200, + ), + ], + channel: None, + track_count: None, + from_ytm: false, + )), + Playlist(MusicPlaylistItem( + id: "PL-ijX1Uy5ZgU4hGBeJ6jLDvQeRaiFhNTd", + name: "Culture Pop Radio Season 3", + thumbnail: [ + Thumbnail( + url: "https://www.gstatic.com/youtube/media/ytm/images/pbg/playlist-empty-state-@192.png", + width: 192, + height: 192, + ), + Thumbnail( + url: "https://www.gstatic.com/youtube/media/ytm/images/pbg/playlist-empty-state-@576.png", + width: 576, + height: 576, + ), + Thumbnail( + url: "https://www.gstatic.com/youtube/media/ytm/images/pbg/playlist-empty-state-@1200.png", + width: 1200, + height: 1200, + ), + ], + channel: None, + track_count: None, + from_ytm: false, + )), + Playlist(MusicPlaylistItem( + id: "PL-ijX1Uy5ZgU1drn0TYDYHwr0dJ1qc_yD", + name: "Culture Pop Radio Season 4", + thumbnail: [ + Thumbnail( + url: "https://www.gstatic.com/youtube/media/ytm/images/pbg/playlist-empty-state-@192.png", + width: 192, + height: 192, + ), + Thumbnail( + url: "https://www.gstatic.com/youtube/media/ytm/images/pbg/playlist-empty-state-@576.png", + width: 576, + height: 576, + ), + Thumbnail( + url: "https://www.gstatic.com/youtube/media/ytm/images/pbg/playlist-empty-state-@1200.png", + width: 1200, + height: 1200, + ), + ], + channel: None, + track_count: None, + from_ytm: false, + )), + Track(TrackItem( + id: "M5q3wMm6D7Y", + name: "POPradio S2E6 Maglera Doe Boy - Trapping, Street Life, Champion Music, Diaspora album, Klerksdorp", + duration: None, + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/M5q3wMm6D7Y/hqdefault.jpg?sqp=-oaymwEWCOADEI4CIAQqCggAEOADGC0guwJIWg&rs=AMzJL3llTe-klOXWsYhrgo6uI2cDeZoE7A", + width: 480, + height: 270, + ), + ], + artists: [ + ArtistId( + id: None, + name: "POPradio Season 2", + ), + ], + artist_id: None, + album: None, + view_count: None, + is_video: true, + track_nr: None, + by_va: false, + )), + Track(TrackItem( + id: "MiVivWh7zrA", + name: "Jueves 11/01/24 Noche Paranormal Estreno Héctor Rossi Pop Radio 101.5 | Podcast Paranormal", + duration: None, + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/MiVivWh7zrA/hqdefault.jpg?sqp=-oaymwEWCOADEI4CIAQqCggAEOADGC0guwJIWg&rs=AMzJL3nYL-RCk85pNuNZ9Dq3nTUyi9DPbw", + width: 480, + height: 270, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Trasnoche Paranormal | CANAL OFICIAL", + ), + ], + artist_id: None, + album: None, + view_count: None, + is_video: true, + track_nr: None, + by_va: false, + )), + Track(TrackItem( + id: "7-hMhhUO8b8", + name: "Martes 02/04/24 Noche Paranormal Estreno Héctor Rossi Pop Radio 101.5 | Podcast Paranormal", + duration: None, + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/7-hMhhUO8b8/hqdefault.jpg?sqp=-oaymwEWCOADEI4CIAQqCggAEOADGC0guwJIWg&rs=AMzJL3nXrzAvG_nCkm5LjlRtSecicpaKdw", + width: 480, + height: 270, + ), + ], + artists: [ + ArtistId( + id: None, + name: "Trasnoche Paranormal | CANAL OFICIAL", + ), + ], + artist_id: None, + album: None, + view_count: None, + is_video: true, + track_nr: None, + by_va: false, + )), + ], + ctoken: None, + endpoint: music_search, + ), + corrected_query: None, +) diff --git a/testfiles/music_search/main_live.json b/testfiles/music_search/main_live.json new file mode 100644 index 0000000..5abc592 --- /dev/null +++ b/testfiles/music_search/main_live.json @@ -0,0 +1,11162 @@ +{ + "responseContext": { + "visitorData": "CgtPLWViRURUdkNEdyjjsKe4BjIKCgJERRIEEgAgIQ%3D%3D", + "serviceTrackingParams": [ + { + "service": "CSI", + "params": [ + { + "key": "c", + "value": "WEB_REMIX" + }, + { + "key": "cver", + "value": "1.20241007.00.00" + }, + { + "key": "yt_li", + "value": "0" + }, + { + "key": "GetSearch_rid", + "value": "0x27ea5927a52fea2f" + } + ] + }, + { + "service": "GFEEDBACK", + "params": [ + { + "key": "logged_in", + "value": "0" + }, + { + "key": "e", + "value": "23804281,23966208,24004644,24077241,24181174,24241378,24439361,24542367,24548629,24566687,51009781,51010235,51017346,51020570,51025415,51050361,51053689,51063643,51064835,51065188,51089007,51098297,51098299,51111738,51115184,51117318,51124104,51133103,51152050,51157411,51157841,51158514,51160338,51160545,51162170,51165467,51169118,51176511,51178982,51183909,51186528,51190652,51195231,51204329,51217504,51221011,51222973,51223961,51225967,51227037,51228350,51230241,51230478,51231814,51236920,51237842,51239093,51241028,51242448,51243940,51248255,51248734,51251836,51255676,51255680,51255743,51256074,51256084,51258066,51266454,51267568,51269940,51275785,51276557,51276565,51276640,51281227,51284653,51287196,51287500,51289938,51295132,51295408,51296439,51297233,51298019,51298829,51299169,51299710,51299724,51300414,51300533,51300699,51300760,51302083,51302359,51302492,51302679,51303667,51303669,51303789,51304121,51304155,51305839,51305952,51307502,51307722,51308044,51308059,51309313,51310323,51312153,51313149,51316415,51319207" + } + ] + }, + { + "service": "ECATCHER", + "params": [ + { + "key": "client.version", + "value": "1.20000101" + }, + { + "key": "client.name", + "value": "WEB_REMIX" + } + ] + } + ], + "maxAgeSeconds": 120 + }, + "contents": { + "tabbedSearchResultsRenderer": { + "tabs": [ + { + "tabRenderer": { + "title": "YT Music", + "selected": true, + "content": { + "sectionListRenderer": { + "contents": [ + { + "itemSectionRenderer": { + "contents": [ + { + "messageRenderer": { + "trackingParams": "CO8CEJY7GAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "button": { + "buttonRenderer": { + "style": "STYLE_TEXT", + "isDisabled": false, + "text": { + "simpleText": "About these results" + }, + "icon": { + "iconType": "INFO_OUTLINE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPACEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "urlEndpoint": { + "url": "https://www.youtube.com/howyoutubeworks/product-features/search/", + "target": "TARGET_NEW_WINDOW" + } + }, + "trackingParams": "CPACEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "iconPosition": "BUTTON_ICON_POSITION_TYPE_RIGHT_OF_TEXT" + } + }, + "style": { + "value": "RENDER_STYLE_PANEL" + } + } + } + ], + "trackingParams": "CO4CELsvGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + }, + { + "musicCardShelfRenderer": { + "trackingParams": "COECEO7zChgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://music.youtube.com/image/radioart?r=CjYKDS9nLzExYnhmeXNrY2cKCi9tLzAyODhjNGcKCi9tLzB2emdsdHQKDS9nLzExY2prcF95bTkQyAEYyAE", + "width": 200, + "height": 200 + }, + { + "url": "https://music.youtube.com/image/radioart?r=CjYKDS9nLzExYnhmeXNrY2cKCi9tLzAyODhjNGcKCi9tLzB2emdsdHQKDS9nLzExY2prcF95bTkQ2AQY2AQ", + "width": 600, + "height": 600 + }, + { + "url": "https://music.youtube.com/image/radioart?r=CjYKDS9nLzExYnhmeXNrY2cKCi9tLzAyODhjNGcKCi9tLzB2emdsdHQKDS9nLzExY2prcF95bTkQoAYYoAY", + "width": 800, + "height": 800 + }, + { + "url": "https://music.youtube.com/image/radioart?r=CjYKDS9nLzExYnhmeXNrY2cKCi9tLzAyODhjNGcKCi9tLzB2emdsdHQKDS9nLzExY2prcF95bTkQ6AcY6Ac", + "width": 1000, + "height": 1000 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CO0CEIS_AiITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + }, + "title": { + "runs": [ + { + "text": "Radio • Pop radio", + "navigationEndpoint": { + "clickTrackingParams": "COECEO7zChgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "browseEndpoint": { + "browseId": "VLRDATficG9wIHJhZGlv", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" + } + } + } + } + } + ] + }, + "subtitle": { + "runs": [ + { + "text": "Camila Cabello, Calvin Harris, Dua Lipa, and more" + } + ] + }, + "buttons": [ + { + "buttonRenderer": { + "style": "STYLE_DARK_ON_WHITE", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Play" + } + ] + }, + "icon": { + "iconType": "PLAY_ARROW" + }, + "accessibility": { + "label": "PLAY ALL" + }, + "trackingParams": "COwCEJTSBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "accessibilityData": { + "accessibilityData": { + "label": "PLAY ALL" + } + }, + "command": { + "clickTrackingParams": "COwCEJTSBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchPlaylistEndpoint": { + "playlistId": "RDATficG9wIHJhZGlv", + "params": "wAEB8gECGAI%3D" + } + } + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save radio to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "COoCEIT_BRgAIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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": "COsCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "COsCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove radio from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "COoCEIT_BRgAIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "RDATficG9wIHJhZGlv" + } + } + }, + "trackingParams": "COoCEIT_BRgAIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "COgCEMOUBhgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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": "COkCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "COkCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "trackingParams": "COgCEMOUBhgBIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "COQCEJH7BRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "confirmDialogEndpoint": { + "content": { + "confirmDialogRenderer": { + "title": { + "runs": [ + { + "text": "Share radio?" + } + ] + }, + "trackingParams": "COUCEMY4IhMIiZu00N-HiQMVZOhCBR0rzBDv", + "dialogMessages": [ + { + "runs": [ + { + "text": "Songs in this radio will be personalized for each person you share it with." + } + ] + } + ], + "confirmButton": { + "buttonRenderer": { + "style": "STYLE_LIGHT_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "COcCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "command": { + "clickTrackingParams": "COcCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "shareEntityEndpoint": { + "serializedShareEntity": "EhJSREFUZmljRzl3SUhKaFpHbHY%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + } + } + }, + "cancelButton": { + "buttonRenderer": { + "style": "STYLE_LIGHT_TEXT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Cancel" + } + ] + }, + "trackingParams": "COYCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "trackingParams": "COQCEJH7BRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + ], + "trackingParams": "COMCEKc7IhMIiZu00N-HiQMVZOhCBR0rzBDv", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "onTap": { + "clickTrackingParams": "COECEO7zChgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "browseEndpoint": { + "browseId": "VLRDATficG9wIHJhZGlv", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "header": { + "musicCardShelfHeaderBasicRenderer": { + "title": { + "runs": [ + { + "text": "Top result" + } + ] + }, + "trackingParams": "COICEO6gASITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + }, + "endIcon": { + "iconType": "CHEVRON_RIGHT" + } + } + }, + { + "musicShelfRenderer": { + "title": { + "runs": [ + { + "text": "Songs" + } + ] + }, + "contents": [ + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CNACEOFnGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/Q1u5_zhRsAFtOHzVNX2DBU9HXOzUZ1mp-nECamkI3yUaYKvvw84iL3hmZdWnZu-rvqYQr4NklyeAF-R5=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/Q1u5_zhRsAFtOHzVNX2DBU9HXOzUZ1mp-nECamkI3yUaYKvvw84iL3hmZdWnZu-rvqYQr4NklyeAF-R5=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "COACEIS_AiITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CN8CEMjeAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "watchEndpoint": { + "videoId": "t-xeMn8D53o", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CN8CEMjeAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "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 Greatest Hits of the 50S Medley 1: Oh Carol! / Dream Lover / Livin' Doll / Unchained Melody / Diana / Venus / Lipstick on Your Collar / For Your Precious Love / Maybe Tomorrow / Smoke Gets in Your Eyes / Rockin' Robin / A Kiss from Your Lips / It's All In - Various Artists" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Greatest Hits of the 50S Medley 1: Oh Carol! / Dream Lover / Livin' Doll / Unchained Melody / Diana / Venus / Lipstick on Your Collar / For Your Precious Love / Maybe Tomorrow / Smoke Gets in Your Eyes / Rockin' Robin / A Kiss from Your Lips / It's All In - Various Artists" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Greatest Hits of the 50S Medley 1: Oh Carol! / Dream Lover / Livin' Doll / Unchained Melody / Diana / Venus / Lipstick on Your Collar / For Your Precious Love / Maybe Tomorrow / Smoke Gets in Your Eyes / Rockin' Robin / A Kiss from Your Lips / It's All In", + "navigationEndpoint": { + "clickTrackingParams": "CNACEOFnGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO-aAQMQ9CQ=", + "watchEndpoint": { + "videoId": "t-xeMn8D53o", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Various Artists", + "navigationEndpoint": { + "clickTrackingParams": "CNACEOFnGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "UCIYXS1cfdBZkRdHRw3rfzJQ", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + }, + { + "text": " • " + }, + { + "text": "A Taste Of The 50's", + "navigationEndpoint": { + "clickTrackingParams": "CNACEOFnGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "MPREb_soN0tFtPdTE", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + }, + { + "text": " • " + }, + { + "text": "1:16:12" + } + ], + "accessibility": { + "accessibilityData": { + "label": "Various Artists • A Taste Of The 50's • 1 hour, 16 minutes, 12 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "12M plays" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CN4CEJvzBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDvmgEDEPQk", + "watchEndpoint": { + "videoId": "t-xeMn8D53o", + "playlistId": "RDAMVMt-xeMn8D53o", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk10LXhlTW44RDUzbw%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CN4CEJvzBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNwCEL7uBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "t-xeMn8D53o", + "onEmptyQueue": { + "clickTrackingParams": "CNwCEL7uBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "videoId": "t-xeMn8D53o" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CNwCEL7uBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CN0CEMrHAyITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + } + } + } + ] + } + }, + "trackingParams": "CNwCEL7uBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNoCEPvvBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "t-xeMn8D53o", + "onEmptyQueue": { + "clickTrackingParams": "CNoCEPvvBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "videoId": "t-xeMn8D53o" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CNoCEPvvBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CNsCEMrHAyITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + } + } + } + ] + } + }, + "trackingParams": "CNoCEPvvBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Add to liked songs" + } + ] + }, + "defaultIcon": { + "iconType": "FAVORITE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CNgCEIyfBhgDIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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": "CNkCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CNkCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove from liked songs" + } + ] + }, + "toggledIcon": { + "iconType": "UNFAVORITE" + }, + "trackingParams": "CNgCEIyfBhgDIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNYCEMOUBhgEIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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": "CNcCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CNcCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "trackingParams": "CNYCEMOUBhgEIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNUCEI_7BRgFIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "browseEndpoint": { + "browseId": "MPREb_soN0tFtPdTE", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CNUCEI_7BRgFIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNQCEJD7BRgGIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "browseEndpoint": { + "browseId": "UCIYXS1cfdBZkRdHRw3rfzJQ", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CNQCEJD7BRgGIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNMCEK-jChgHIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "browseEndpoint": { + "browseId": "MPTCt-xeMn8D53o", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "CNMCEK-jChgHIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNICEJH7BRgIIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "shareEntityEndpoint": { + "serializedShareEntity": "Cgt0LXhlTW44RDUzbw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CNICEJH7BRgIIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + ], + "trackingParams": "CNECEKc7IhMIiZu00N-HiQMVZOhCBR0rzBDv", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "playlistItemData": { + "videoId": "t-xeMn8D53o" + }, + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CL8CEOFnGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/rmPNW2T881pJc7lh_oOvk-peoqja2sYmpbG9A20pp_5yCGPKQFi0lpPLhrlZMnZCPIFnow6Ang8JcppZ=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/rmPNW2T881pJc7lh_oOvk-peoqja2sYmpbG9A20pp_5yCGPKQFi0lpPLhrlZMnZCPIFnow6Ang8JcppZ=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CM8CEIS_AiITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CM4CEMjeAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "watchEndpoint": { + "videoId": "Yx-sGL0xX-U", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CM4CEMjeAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "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 The Mega Kids Continuous Party Mix - Kids Party DJs" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause The Mega Kids Continuous Party Mix - Kids Party DJs" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "The Mega Kids Continuous Party Mix", + "navigationEndpoint": { + "clickTrackingParams": "CL8CEOFnGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO-aAQMQ9CQ=", + "watchEndpoint": { + "videoId": "Yx-sGL0xX-U", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Kids Party DJs", + "navigationEndpoint": { + "clickTrackingParams": "CL8CEOFnGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "UCRSKTrl7fcrfANL_WKpQYuA", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + }, + { + "text": " • " + }, + { + "text": "Top 20 Kids Pop Chart Hits - The Very Best Children's Party Smash Hits!", + "navigationEndpoint": { + "clickTrackingParams": "CL8CEOFnGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "MPREb_8DJc4Lj5xtw", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + }, + { + "text": " • " + }, + { + "text": "43:57" + } + ], + "accessibility": { + "accessibilityData": { + "label": "Kids Party DJs • Top 20 Kids Pop Chart Hits - The Very Best Children's Party Smash Hits! • 43 minutes, 57 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "1.8M plays" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CM0CEJvzBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDvmgEDEPQk", + "watchEndpoint": { + "videoId": "Yx-sGL0xX-U", + "playlistId": "RDAMVMYx-sGL0xX-U", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1ZeC1zR0wweFgtVQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CM0CEJvzBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMsCEL7uBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "Yx-sGL0xX-U", + "onEmptyQueue": { + "clickTrackingParams": "CMsCEL7uBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "videoId": "Yx-sGL0xX-U" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CMsCEL7uBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CMwCEMrHAyITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + } + } + } + ] + } + }, + "trackingParams": "CMsCEL7uBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMkCEPvvBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "Yx-sGL0xX-U", + "onEmptyQueue": { + "clickTrackingParams": "CMkCEPvvBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "videoId": "Yx-sGL0xX-U" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CMkCEPvvBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CMoCEMrHAyITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + } + } + } + ] + } + }, + "trackingParams": "CMkCEPvvBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Add to liked songs" + } + ] + }, + "defaultIcon": { + "iconType": "FAVORITE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CMcCEIyfBhgDIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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": "CMgCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CMgCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove from liked songs" + } + ] + }, + "toggledIcon": { + "iconType": "UNFAVORITE" + }, + "trackingParams": "CMcCEIyfBhgDIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMUCEMOUBhgEIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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": "CMYCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CMYCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "trackingParams": "CMUCEMOUBhgEIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMQCEI_7BRgFIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "browseEndpoint": { + "browseId": "MPREb_8DJc4Lj5xtw", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CMQCEI_7BRgFIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMMCEJD7BRgGIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "browseEndpoint": { + "browseId": "UCRSKTrl7fcrfANL_WKpQYuA", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CMMCEJD7BRgGIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMICEK-jChgHIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "browseEndpoint": { + "browseId": "MPTCYx-sGL0xX-U", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "CMICEK-jChgHIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMECEJH7BRgIIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtZeC1zR0wweFgtVQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CMECEJH7BRgIIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + ], + "trackingParams": "CMACEKc7IhMIiZu00N-HiQMVZOhCBR0rzBDv", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "playlistItemData": { + "videoId": "Yx-sGL0xX-U" + }, + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CK4CEOFnGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/8YZqnYRc52GUz0iyQTRZvzh8RSbCNTTC0NSrpRlKf8UfSyu87K7ziegM8aFfAyMgUXBisxT_weHb4pFE=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/8YZqnYRc52GUz0iyQTRZvzh8RSbCNTTC0NSrpRlKf8UfSyu87K7ziegM8aFfAyMgUXBisxT_weHb4pFE=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CL4CEIS_AiITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CL0CEMjeAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "watchEndpoint": { + "videoId": "HzdD8kbDzZA", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CL0CEMjeAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "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 Take on Me - a-ha" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Take on Me - a-ha" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Take on Me", + "navigationEndpoint": { + "clickTrackingParams": "CK4CEOFnGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO-aAQMQ9CQ=", + "watchEndpoint": { + "videoId": "HzdD8kbDzZA", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "a-ha", + "navigationEndpoint": { + "clickTrackingParams": "CK4CEOFnGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "UCx00XxqRCfPS6zaTzRm3H2A", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + }, + { + "text": " • " + }, + { + "text": "Hunting High and Low", + "navigationEndpoint": { + "clickTrackingParams": "CK4CEOFnGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "MPREb_5xYAryDnQqC", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + } + }, + { + "text": " • " + }, + { + "text": "3:46" + } + ], + "accessibility": { + "accessibilityData": { + "label": "a-ha • Hunting High and Low • 3 minutes, 46 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "2.4B plays" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLwCEJvzBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDvmgEDEPQk", + "watchEndpoint": { + "videoId": "HzdD8kbDzZA", + "playlistId": "RDAMVMHzdD8kbDzZA", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1IemREOGtiRHpaQQ%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "trackingParams": "CLwCEJvzBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLoCEL7uBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "HzdD8kbDzZA", + "onEmptyQueue": { + "clickTrackingParams": "CLoCEL7uBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "videoId": "HzdD8kbDzZA" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CLoCEL7uBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CLsCEMrHAyITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + } + } + } + ] + } + }, + "trackingParams": "CLoCEL7uBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLgCEPvvBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "HzdD8kbDzZA", + "onEmptyQueue": { + "clickTrackingParams": "CLgCEPvvBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "videoId": "HzdD8kbDzZA" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CLgCEPvvBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CLkCEMrHAyITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + } + } + } + ] + } + }, + "trackingParams": "CLgCEPvvBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Add to liked songs" + } + ] + }, + "defaultIcon": { + "iconType": "FAVORITE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CLYCEIyfBhgDIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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": "CLcCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CLcCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove from liked songs" + } + ] + }, + "toggledIcon": { + "iconType": "UNFAVORITE" + }, + "trackingParams": "CLYCEIyfBhgDIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLQCEMOUBhgEIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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": "CLUCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CLUCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "trackingParams": "CLQCEMOUBhgEIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLMCEI_7BRgFIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "browseEndpoint": { + "browseId": "MPREb_5xYAryDnQqC", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "trackingParams": "CLMCEI_7BRgFIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLICEJD7BRgGIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "browseEndpoint": { + "browseId": "UCx00XxqRCfPS6zaTzRm3H2A", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CLICEJD7BRgGIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLECEK-jChgHIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "browseEndpoint": { + "browseId": "MPTCHzdD8kbDzZA", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + } + } + }, + "trackingParams": "CLECEK-jChgHIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLACEJH7BRgIIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtIemREOGtiRHpaQQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CLACEJH7BRgIIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + ], + "trackingParams": "CK8CEKc7IhMIiZu00N-HiQMVZOhCBR0rzBDv", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "playlistItemData": { + "videoId": "HzdD8kbDzZA" + }, + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL" + } + } + ], + "trackingParams": "CK0CEPleGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "bottomText": { + "runs": [ + { + "text": "Show all" + } + ] + }, + "bottomEndpoint": { + "clickTrackingParams": "CK0CEPleGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "searchEndpoint": { + "query": "pop radio", + "params": "EgWKAQIIAWoSEAMQBBAJEA4QChAFEBEQEBAV" + } + }, + "shelfDivider": { + "musicShelfDividerRenderer": { + "hidden": true + } + } + } + }, + { + "musicShelfRenderer": { + "title": { + "runs": [ + { + "text": "Videos" + } + ] + }, + "contents": [ + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CJ8CENNoGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/Zh7Un8gVFak/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kX-I5KVMB8bE1JxrFBwQLYhp0TkQ", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CKwCEIS_AiITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CKsCEMjeAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "watchEndpoint": { + "videoId": "Zh7Un8gVFak", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_UGC" + } + } + } + }, + "trackingParams": "CKsCEMjeAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "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 Japanese City Pop Radio: A Side - Coffee and Music Radio" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Japanese City Pop Radio: A Side - Coffee and Music Radio" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Japanese City Pop Radio: A Side", + "navigationEndpoint": { + "clickTrackingParams": "CJ8CENNoGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO-aAQMQ9CQ=", + "watchEndpoint": { + "videoId": "Zh7Un8gVFak", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_UGC" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Video" + }, + { + "text": " • " + }, + { + "text": "Coffee and Music Radio", + "navigationEndpoint": { + "clickTrackingParams": "CJ8CENNoGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "UCUUjvLsLlT1rj6N2oqM_tnw", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_USER_CHANNEL" + } + } + } + } + }, + { + "text": " • " + }, + { + "text": "53K views" + }, + { + "text": " • " + }, + { + "text": "2:14:35" + } + ], + "accessibility": { + "accessibilityData": { + "label": "Video • Coffee and Music Radio • 53K views • 2 hours, 14 minutes, 35 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKoCEJvzBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDvmgEDEPQk", + "watchEndpoint": { + "videoId": "Zh7Un8gVFak", + "playlistId": "RDAMVMZh7Un8gVFak", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1aaDdVbjhnVkZhaw%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_UGC" + } + } + } + }, + "trackingParams": "CKoCEJvzBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKgCEL7uBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "Zh7Un8gVFak", + "onEmptyQueue": { + "clickTrackingParams": "CKgCEL7uBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "videoId": "Zh7Un8gVFak" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CKgCEL7uBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CKkCEMrHAyITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + } + } + } + ] + } + }, + "trackingParams": "CKgCEL7uBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKYCEPvvBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "Zh7Un8gVFak", + "onEmptyQueue": { + "clickTrackingParams": "CKYCEPvvBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "videoId": "Zh7Un8gVFak" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CKYCEPvvBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CKcCEMrHAyITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + } + } + } + ] + } + }, + "trackingParams": "CKYCEPvvBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Add to liked songs" + } + ] + }, + "defaultIcon": { + "iconType": "FAVORITE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CKQCEIyfBhgDIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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": "CKUCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CKUCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove from liked songs" + } + ] + }, + "toggledIcon": { + "iconType": "UNFAVORITE" + }, + "trackingParams": "CKQCEIyfBhgDIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKICEMOUBhgEIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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": "CKMCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CKMCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "trackingParams": "CKICEMOUBhgEIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKECEJH7BRgFIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtaaDdVbjhnVkZhaw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CKECEJH7BRgFIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + ], + "trackingParams": "CKACEKc7IhMIiZu00N-HiQMVZOhCBR0rzBDv", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "playlistItemData": { + "videoId": "Zh7Un8gVFak" + }, + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CJECENNoGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/BMnD36Abw_0/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3ktKIjmM-6-_FNbu99jO-21dPvz3g", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CJ4CEIS_AiITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CJ0CEMjeAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "watchEndpoint": { + "videoId": "BMnD36Abw_0", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_UGC" + } + } + } + }, + "trackingParams": "CJ0CEMjeAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "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 Hits Radio 1 Live Pop Radio' Top Hits 2022 Pop Music 2022 New Songs 2023 Best English Songs 2022 New - Best Of Mix" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Hits Radio 1 Live Pop Radio' Top Hits 2022 Pop Music 2022 New Songs 2023 Best English Songs 2022 New - Best Of Mix" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Hits Radio 1 Live Pop Radio' Top Hits 2022 Pop Music 2022 New Songs 2023 Best English Songs 2022 New", + "navigationEndpoint": { + "clickTrackingParams": "CJECENNoGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO-aAQMQ9CQ=", + "watchEndpoint": { + "videoId": "BMnD36Abw_0", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_UGC" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Video" + }, + { + "text": " • " + }, + { + "text": "Best Of Mix", + "navigationEndpoint": { + "clickTrackingParams": "CJECENNoGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "UCKxW3x-6j8r0Yzm1i6bs9WA", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_USER_CHANNEL" + } + } + } + } + }, + { + "text": " • " + }, + { + "text": "23K views" + }, + { + "text": " • " + }, + { + "text": "24:51" + } + ], + "accessibility": { + "accessibilityData": { + "label": "Video • Best Of Mix • 23K views • 24 minutes, 51 seconds" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJwCEJvzBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDvmgEDEPQk", + "watchEndpoint": { + "videoId": "BMnD36Abw_0", + "playlistId": "RDAMVMBMnD36Abw_0", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1CTW5EMzZBYndfMA%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_UGC" + } + } + } + }, + "trackingParams": "CJwCEJvzBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJoCEL7uBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "BMnD36Abw_0", + "onEmptyQueue": { + "clickTrackingParams": "CJoCEL7uBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "videoId": "BMnD36Abw_0" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CJoCEL7uBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CJsCEMrHAyITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + } + } + } + ] + } + }, + "trackingParams": "CJoCEL7uBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJgCEPvvBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "BMnD36Abw_0", + "onEmptyQueue": { + "clickTrackingParams": "CJgCEPvvBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "videoId": "BMnD36Abw_0" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CJgCEPvvBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CJkCEMrHAyITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + } + } + } + ] + } + }, + "trackingParams": "CJgCEPvvBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Add to liked songs" + } + ] + }, + "defaultIcon": { + "iconType": "FAVORITE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CJYCEIyfBhgDIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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": "CJcCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CJcCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove from liked songs" + } + ] + }, + "toggledIcon": { + "iconType": "UNFAVORITE" + }, + "trackingParams": "CJYCEIyfBhgDIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJQCEMOUBhgEIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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": "CJUCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CJUCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "trackingParams": "CJQCEMOUBhgEIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJMCEJH7BRgFIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtCTW5EMzZBYndfMA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CJMCEJH7BRgFIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + ], + "trackingParams": "CJICEKc7IhMIiZu00N-HiQMVZOhCBR0rzBDv", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "playlistItemData": { + "videoId": "BMnD36Abw_0" + }, + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CIMCENNoGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/36YnV9STBqc/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mEUTlB-i1kWBPqBSGMBC7JRQYVAQ", + "width": 400, + "height": 225 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CJACEIS_AiITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CI8CEMjeAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "watchEndpoint": { + "videoId": "36YnV9STBqc", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_UGC" + } + } + } + }, + "trackingParams": "CI8CEMjeAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "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 The Good Life Radio • 24/7 Live Radio | Best Relax House, Chillout, Study, Running, Gym, Happy Music - The Good Life Radio x Sensual Musique" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause The Good Life Radio • 24/7 Live Radio | Best Relax House, Chillout, Study, Running, Gym, Happy Music - The Good Life Radio x Sensual Musique" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "The Good Life Radio • 24/7 Live Radio | Best Relax House, Chillout, Study, Running, Gym, Happy Music", + "navigationEndpoint": { + "clickTrackingParams": "CIMCENNoGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO-aAQMQ9CQ=", + "watchEndpoint": { + "videoId": "36YnV9STBqc", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_UGC" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Video" + }, + { + "text": " • " + }, + { + "text": "The Good Life Radio x Sensual Musique", + "navigationEndpoint": { + "clickTrackingParams": "CIMCENNoGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "UChs0pSaEoNLV4mevBFGaoKA", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_USER_CHANNEL" + } + } + } + } + }, + { + "text": " • " + }, + { + "text": "165M views" + } + ], + "accessibility": { + "accessibilityData": { + "label": "Video • The Good Life Radio x Sensual Musique • 165M views" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CI4CEJvzBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDvmgEDEPQk", + "watchEndpoint": { + "videoId": "36YnV9STBqc", + "playlistId": "RDAMVM36YnV9STBqc", + "params": "wAEB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk0zNlluVjlTVEJxYw%3D%3D" + } + }, + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_UGC" + } + } + } + }, + "trackingParams": "CI4CEJvzBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIwCEL7uBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "36YnV9STBqc", + "onEmptyQueue": { + "clickTrackingParams": "CIwCEL7uBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "videoId": "36YnV9STBqc" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CIwCEL7uBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CI0CEMrHAyITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + } + } + } + ] + } + }, + "trackingParams": "CIwCEL7uBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIoCEPvvBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "36YnV9STBqc", + "onEmptyQueue": { + "clickTrackingParams": "CIoCEPvvBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "videoId": "36YnV9STBqc" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CIoCEPvvBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CIsCEMrHAyITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + } + } + } + ] + } + }, + "trackingParams": "CIoCEPvvBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Add to liked songs" + } + ] + }, + "defaultIcon": { + "iconType": "FAVORITE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CIgCEIyfBhgDIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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": "CIkCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CIkCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove from liked songs" + } + ] + }, + "toggledIcon": { + "iconType": "UNFAVORITE" + }, + "trackingParams": "CIgCEIyfBhgDIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIYCEMOUBhgEIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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": "CIcCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CIcCEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "trackingParams": "CIYCEMOUBhgEIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIUCEJH7BRgFIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "shareEntityEndpoint": { + "serializedShareEntity": "CgszNlluVjlTVEJxYw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CIUCEJH7BRgFIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + ], + "trackingParams": "CIQCEKc7IhMIiZu00N-HiQMVZOhCBR0rzBDv", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "badges": [ + { + "liveBadgeRenderer": { + "label": { + "runs": [ + { + "text": "Live" + } + ] + }, + "accessibility": { + "accessibilityData": { + "label": "Live" + } + } + } + } + ], + "playlistItemData": { + "videoId": "36YnV9STBqc" + }, + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL" + } + } + ], + "trackingParams": "CIICEPleGAMiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "bottomText": { + "runs": [ + { + "text": "Show all" + } + ] + }, + "bottomEndpoint": { + "clickTrackingParams": "CIICEPleGAMiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "searchEndpoint": { + "query": "pop radio", + "params": "EgWKAQIQAWoSEAMQBBAJEA4QChAFEBEQEBAV" + } + }, + "shelfDivider": { + "musicShelfDividerRenderer": { + "hidden": true + } + } + } + }, + { + "musicShelfRenderer": { + "title": { + "runs": [ + { + "text": "Albums" + } + ] + }, + "contents": [ + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CPIBENRoGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/YhDl79RlxB5oQqMdp5B4_fMkx_4M2Z01M9Y9RytYeA6pzi_NtJ-ERxb34ukuA6AqoN0JSJFiyrMZFfZKEQ=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/YhDl79RlxB5oQqMdp5B4_fMkx_4M2Z01M9Y9RytYeA6pzi_NtJ-ERxb34ukuA6AqoN0JSJFiyrMZFfZKEQ=w120-h120-l90-rj", + "width": 120, + "height": 120 + }, + { + "url": "https://lh3.googleusercontent.com/YhDl79RlxB5oQqMdp5B4_fMkx_4M2Z01M9Y9RytYeA6pzi_NtJ-ERxb34ukuA6AqoN0JSJFiyrMZFfZKEQ=w226-h226-l90-rj", + "width": 226, + "height": 226 + }, + { + "url": "https://lh3.googleusercontent.com/YhDl79RlxB5oQqMdp5B4_fMkx_4M2Z01M9Y9RytYeA6pzi_NtJ-ERxb34ukuA6AqoN0JSJFiyrMZFfZKEQ=w544-h544-l90-rj", + "width": 544, + "height": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CIECEIS_AiITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CIACEMjeAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_kY_cb7-dqt_EK1268iKHfWffx0o8gkgKE" + } + }, + "trackingParams": "CIACEMjeAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "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 Pop (Radio)" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Pop (Radio)" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Pop (Radio)" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "Lou Jefe", + "navigationEndpoint": { + "clickTrackingParams": "CPIBENRoGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "UC9StjndgeeKQmwjy47-FxyA", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + }, + { + "text": " • " + }, + { + "text": "2024" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CP8BEJrzBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_kY_cb7-dqt_EK1268iKHfWffx0o8gkgKE", + "params": "wAEB8gECKAE%3D" + } + }, + "trackingParams": "CP8BEJrzBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CP4BEJvzBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchPlaylistEndpoint": { + "playlistId": "RDAMPLOLAK5uy_kY_cb7-dqt_EK1268iKHfWffx0o8gkgKE", + "params": "wAEB" + } + }, + "trackingParams": "CP4BEJvzBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPwBEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "OLAK5uy_kY_cb7-dqt_EK1268iKHfWffx0o8gkgKE", + "onEmptyQueue": { + "clickTrackingParams": "CPwBEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "playlistId": "OLAK5uy_kY_cb7-dqt_EK1268iKHfWffx0o8gkgKE" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CPwBEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CP0BEMrHAyITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + } + } + } + ] + } + }, + "trackingParams": "CPwBEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPoBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "OLAK5uy_kY_cb7-dqt_EK1268iKHfWffx0o8gkgKE", + "onEmptyQueue": { + "clickTrackingParams": "CPoBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "playlistId": "OLAK5uy_kY_cb7-dqt_EK1268iKHfWffx0o8gkgKE" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CPoBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CPsBEMrHAyITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + } + } + } + ] + } + }, + "trackingParams": "CPoBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save album to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CPgBEIT_BRgEIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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": "CPkBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CPkBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CPgBEIT_BRgEIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_kY_cb7-dqt_EK1268iKHfWffx0o8gkgKE" + } + } + }, + "trackingParams": "CPgBEIT_BRgEIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPYBEMOUBhgFIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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": "CPcBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CPcBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "trackingParams": "CPYBEMOUBhgFIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPUBEJD7BRgGIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "browseEndpoint": { + "browseId": "UC9StjndgeeKQmwjy47-FxyA", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CPUBEJD7BRgGIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPQBEJH7BRgHIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2tZX2NiNy1kcXRfRUsxMjY4aUtIZldmZngwbzhna2dLRQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CPQBEJH7BRgHIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + ], + "trackingParams": "CPMBEKc7IhMIiZu00N-HiQMVZOhCBR0rzBDv", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "navigationEndpoint": { + "clickTrackingParams": "CPIBENRoGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "MPREb_UQFAF6UM4DN", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "COIBENRoGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/DzRT5Xr4VwiAORI8UCTZScRj34Qw4UkK3fGoORTEsEM1Ijzss4LiqMUyP--uo3jA7rG--U3GP8FkXodtnw=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/DzRT5Xr4VwiAORI8UCTZScRj34Qw4UkK3fGoORTEsEM1Ijzss4LiqMUyP--uo3jA7rG--U3GP8FkXodtnw=w120-h120-l90-rj", + "width": 120, + "height": 120 + }, + { + "url": "https://lh3.googleusercontent.com/DzRT5Xr4VwiAORI8UCTZScRj34Qw4UkK3fGoORTEsEM1Ijzss4LiqMUyP--uo3jA7rG--U3GP8FkXodtnw=w226-h226-l90-rj", + "width": 226, + "height": 226 + }, + { + "url": "https://lh3.googleusercontent.com/DzRT5Xr4VwiAORI8UCTZScRj34Qw4UkK3fGoORTEsEM1Ijzss4LiqMUyP--uo3jA7rG--U3GP8FkXodtnw=w544-h544-l90-rj", + "width": 544, + "height": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CPEBEIS_AiITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CPABEMjeAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_nmJrhVn98HgAn4XwCHqvrzMdTzFEj-5Ks" + } + }, + "trackingParams": "CPABEMjeAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "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 Pop Radio" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Pop Radio" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Pop Radio" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Album" + }, + { + "text": " • " + }, + { + "text": "Universal Production Music", + "navigationEndpoint": { + "clickTrackingParams": "COIBENRoGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "UC0Gx6D-oHq-17IftnDlWPGA", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + }, + { + "text": " • " + }, + { + "text": "2014" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CO8BEJrzBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_nmJrhVn98HgAn4XwCHqvrzMdTzFEj-5Ks", + "params": "wAEB8gECKAE%3D" + } + }, + "trackingParams": "CO8BEJrzBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CO4BEJvzBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchPlaylistEndpoint": { + "playlistId": "RDAMPLOLAK5uy_nmJrhVn98HgAn4XwCHqvrzMdTzFEj-5Ks", + "params": "wAEB" + } + }, + "trackingParams": "CO4BEJvzBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "COwBEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "OLAK5uy_nmJrhVn98HgAn4XwCHqvrzMdTzFEj-5Ks", + "onEmptyQueue": { + "clickTrackingParams": "COwBEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "playlistId": "OLAK5uy_nmJrhVn98HgAn4XwCHqvrzMdTzFEj-5Ks" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "COwBEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CO0BEMrHAyITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + } + } + } + ] + } + }, + "trackingParams": "COwBEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "COoBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "OLAK5uy_nmJrhVn98HgAn4XwCHqvrzMdTzFEj-5Ks", + "onEmptyQueue": { + "clickTrackingParams": "COoBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "playlistId": "OLAK5uy_nmJrhVn98HgAn4XwCHqvrzMdTzFEj-5Ks" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "COoBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "COsBEMrHAyITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + } + } + } + ] + } + }, + "trackingParams": "COoBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save album to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "COgBEIT_BRgEIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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": "COkBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "COkBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "COgBEIT_BRgEIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_nmJrhVn98HgAn4XwCHqvrzMdTzFEj-5Ks" + } + } + }, + "trackingParams": "COgBEIT_BRgEIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "COYBEMOUBhgFIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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": "COcBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "COcBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "trackingParams": "COYBEMOUBhgFIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "COUBEJD7BRgGIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "browseEndpoint": { + "browseId": "UC0Gx6D-oHq-17IftnDlWPGA", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "COUBEJD7BRgGIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "COQBEJH7BRgHIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X25tSnJoVm45OEhnQW40WHdDSHF2cnpNZFR6RkVqLTVLcw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "COQBEJH7BRgHIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + ], + "trackingParams": "COMBEKc7IhMIiZu00N-HiQMVZOhCBR0rzBDv", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "navigationEndpoint": { + "clickTrackingParams": "COIBENRoGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "MPREb_nLZMWyIu23q", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CNEBENRoGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/vHVuF-fdKqYTCvw_kqYcCKSQ5AzQva18iDSf1b0l5jlkUDnX3r_8-M0AfQ96BqURlQIK2buNHBbG2lwa=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/vHVuF-fdKqYTCvw_kqYcCKSQ5AzQva18iDSf1b0l5jlkUDnX3r_8-M0AfQ96BqURlQIK2buNHBbG2lwa=w120-h120-l90-rj", + "width": 120, + "height": 120 + }, + { + "url": "https://lh3.googleusercontent.com/vHVuF-fdKqYTCvw_kqYcCKSQ5AzQva18iDSf1b0l5jlkUDnX3r_8-M0AfQ96BqURlQIK2buNHBbG2lwa=w226-h226-l90-rj", + "width": 226, + "height": 226 + }, + { + "url": "https://lh3.googleusercontent.com/vHVuF-fdKqYTCvw_kqYcCKSQ5AzQva18iDSf1b0l5jlkUDnX3r_8-M0AfQ96BqURlQIK2buNHBbG2lwa=w544-h544-l90-rj", + "width": 544, + "height": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "COEBEIS_AiITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "COABEMjeAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_kUygZdmfLJz5id4eE9VljcfaVwI-wrUy0" + } + }, + "trackingParams": "COABEMjeAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "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 Pop Radio" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Pop Radio" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Pop Radio" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Album" + }, + { + "text": " • " + }, + { + "text": "Cody Price", + "navigationEndpoint": { + "clickTrackingParams": "CNEBENRoGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "UCpqFkivR-Erb2npqfQEaaPQ", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + } + }, + { + "text": " • " + }, + { + "text": "2020" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CN8BEJrzBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_kUygZdmfLJz5id4eE9VljcfaVwI-wrUy0", + "params": "wAEB8gECKAE%3D" + } + }, + "trackingParams": "CN8BEJrzBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CN4BEJvzBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchPlaylistEndpoint": { + "playlistId": "RDAMPLOLAK5uy_kUygZdmfLJz5id4eE9VljcfaVwI-wrUy0", + "params": "wAEB" + } + }, + "trackingParams": "CN4BEJvzBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNwBEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "OLAK5uy_kUygZdmfLJz5id4eE9VljcfaVwI-wrUy0", + "onEmptyQueue": { + "clickTrackingParams": "CNwBEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "playlistId": "OLAK5uy_kUygZdmfLJz5id4eE9VljcfaVwI-wrUy0" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CNwBEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CN0BEMrHAyITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + } + } + } + ] + } + }, + "trackingParams": "CNwBEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNoBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "OLAK5uy_kUygZdmfLJz5id4eE9VljcfaVwI-wrUy0", + "onEmptyQueue": { + "clickTrackingParams": "CNoBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "playlistId": "OLAK5uy_kUygZdmfLJz5id4eE9VljcfaVwI-wrUy0" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CNoBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CNsBEMrHAyITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + } + } + } + ] + } + }, + "trackingParams": "CNoBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save album to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CNgBEIT_BRgEIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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": "CNkBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CNkBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CNgBEIT_BRgEIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_kUygZdmfLJz5id4eE9VljcfaVwI-wrUy0" + } + } + }, + "trackingParams": "CNgBEIT_BRgEIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNYBEMOUBhgFIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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": "CNcBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CNcBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "trackingParams": "CNYBEMOUBhgFIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNUBEJD7BRgGIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "browseEndpoint": { + "browseId": "UCpqFkivR-Erb2npqfQEaaPQ", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "trackingParams": "CNUBEJD7BRgGIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNQBEJH7BRgHIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2tVeWdaZG1mTEp6NWlkNGVFOVZsamNmYVZ3SS13clV5MA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CNQBEJH7BRgHIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + ], + "trackingParams": "CNMBEKc7IhMIiZu00N-HiQMVZOhCBR0rzBDv", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "badges": [ + { + "musicInlineBadgeRenderer": { + "trackingParams": "CNIBEKHtAhgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + } + } + } + ], + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "navigationEndpoint": { + "clickTrackingParams": "CNEBENRoGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "MPREb_W5z6dgGATp9", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + } + } + }, + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL" + } + } + ], + "trackingParams": "CNABEPleGAQiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "bottomText": { + "runs": [ + { + "text": "Show all" + } + ] + }, + "bottomEndpoint": { + "clickTrackingParams": "CNABEPleGAQiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "searchEndpoint": { + "query": "pop radio", + "params": "EgWKAQIYAWoSEAMQBBAJEA4QChAFEBEQEBAV" + } + }, + "shelfDivider": { + "musicShelfDividerRenderer": { + "hidden": true + } + } + } + }, + { + "musicShelfRenderer": { + "title": { + "runs": [ + { + "text": "Featured playlists" + } + ] + }, + "contents": [ + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CMEBENWfBxgAIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/ih5QdpqpkVNRXtD-joBWj3jo1woxAXJFyAoA3hWYNWAKX0M9B825HH2VOh7aDX-unf67oyCyJGN9TljR=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/ih5QdpqpkVNRXtD-joBWj3jo1woxAXJFyAoA3hWYNWAKX0M9B825HH2VOh7aDX-unf67oyCyJGN9TljR=w120-h120-l90-rj", + "width": 120, + "height": 120 + }, + { + "url": "https://lh3.googleusercontent.com/ih5QdpqpkVNRXtD-joBWj3jo1woxAXJFyAoA3hWYNWAKX0M9B825HH2VOh7aDX-unf67oyCyJGN9TljR=w226-h226-l90-rj", + "width": 226, + "height": 226 + }, + { + "url": "https://lh3.googleusercontent.com/ih5QdpqpkVNRXtD-joBWj3jo1woxAXJFyAoA3hWYNWAKX0M9B825HH2VOh7aDX-unf67oyCyJGN9TljR=w544-h544-l90-rj", + "width": 544, + "height": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CM8BEIS_AiITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CM4BEMjeAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "watchPlaylistEndpoint": { + "playlistId": "RDCLAK5uy_nmS3YoxSwVVQk9lEQJ0UX4ZCjXsW_psU8", + "params": "wAEB" + } + }, + "trackingParams": "CM4BEMjeAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "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 Pop's Biggest Hits" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Pop's Biggest Hits" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Pop's Biggest Hits" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Playlist" + }, + { + "text": " • " + }, + { + "text": "YouTube Music" + }, + { + "text": " • " + }, + { + "text": "110 songs" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CM0BEJrzBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchPlaylistEndpoint": { + "playlistId": "RDCLAK5uy_nmS3YoxSwVVQk9lEQJ0UX4ZCjXsW_psU8", + "params": "wAEB8gECGAE%3D" + } + }, + "trackingParams": "CM0BEJrzBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMwBEJvzBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchPlaylistEndpoint": { + "playlistId": "RDAMPLRDCLAK5uy_nmS3YoxSwVVQk9lEQJ0UX4ZCjXsW_psU8", + "params": "wAEB" + } + }, + "trackingParams": "CMwBEJvzBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMoBEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "RDCLAK5uy_nmS3YoxSwVVQk9lEQJ0UX4ZCjXsW_psU8", + "onEmptyQueue": { + "clickTrackingParams": "CMoBEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "playlistId": "RDCLAK5uy_nmS3YoxSwVVQk9lEQJ0UX4ZCjXsW_psU8" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CMoBEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Playlist will play next" + } + ] + }, + "trackingParams": "CMsBEMrHAyITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + } + } + } + ] + } + }, + "trackingParams": "CMoBEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMgBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "RDCLAK5uy_nmS3YoxSwVVQk9lEQJ0UX4ZCjXsW_psU8", + "onEmptyQueue": { + "clickTrackingParams": "CMgBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "playlistId": "RDCLAK5uy_nmS3YoxSwVVQk9lEQJ0UX4ZCjXsW_psU8" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CMgBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Playlist added to queue" + } + ] + }, + "trackingParams": "CMkBEMrHAyITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + } + } + } + ] + } + }, + "trackingParams": "CMgBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save playlist to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CMYBEIT_BRgEIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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": "CMcBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CMcBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove playlist from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CMYBEIT_BRgEIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "RDCLAK5uy_nmS3YoxSwVVQk9lEQJ0UX4ZCjXsW_psU8" + } + } + }, + "trackingParams": "CMYBEIT_BRgEIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMQBEMOUBhgFIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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": "CMUBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CMUBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "trackingParams": "CMQBEMOUBhgFIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMMBEJH7BRgGIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "shareEntityEndpoint": { + "serializedShareEntity": "EitSRENMQUs1dXlfbm1TM1lveFN3VlZRazlsRVFKMFVYNFpDalhzV19wc1U4", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CMMBEJH7BRgGIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + ], + "trackingParams": "CMIBEKc7IhMIiZu00N-HiQMVZOhCBR0rzBDv", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "navigationEndpoint": { + "clickTrackingParams": "CMEBENWfBxgAIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "browseEndpoint": { + "browseId": "VLRDCLAK5uy_nmS3YoxSwVVQk9lEQJ0UX4ZCjXsW_psU8", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CLIBENWfBxgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/688p9Z4QwPzW8ZLnLP5L30qozF3FcyFaok_0yZXVEmSAc7-yHoQuckYE7MrDCK_f2KTxy1Ve3nGXbbc=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/688p9Z4QwPzW8ZLnLP5L30qozF3FcyFaok_0yZXVEmSAc7-yHoQuckYE7MrDCK_f2KTxy1Ve3nGXbbc=w120-h120-l90-rj", + "width": 120, + "height": 120 + }, + { + "url": "https://lh3.googleusercontent.com/688p9Z4QwPzW8ZLnLP5L30qozF3FcyFaok_0yZXVEmSAc7-yHoQuckYE7MrDCK_f2KTxy1Ve3nGXbbc=w226-h226-l90-rj", + "width": 226, + "height": 226 + }, + { + "url": "https://lh3.googleusercontent.com/688p9Z4QwPzW8ZLnLP5L30qozF3FcyFaok_0yZXVEmSAc7-yHoQuckYE7MrDCK_f2KTxy1Ve3nGXbbc=w544-h544-l90-rj", + "width": 544, + "height": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CMABEIS_AiITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CL8BEMjeAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "watchPlaylistEndpoint": { + "playlistId": "RDCLAK5uy_nwiihKFMxWvkwG-hJlHX0VxKYFlbL3Muk", + "params": "wAEB" + } + }, + "trackingParams": "CL8BEMjeAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "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 '00s Pop Divas" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause '00s Pop Divas" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "'00s Pop Divas" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Playlist" + }, + { + "text": " • " + }, + { + "text": "YouTube Music" + }, + { + "text": " • " + }, + { + "text": "154 songs" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CL4BEJrzBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchPlaylistEndpoint": { + "playlistId": "RDCLAK5uy_nwiihKFMxWvkwG-hJlHX0VxKYFlbL3Muk", + "params": "wAEB8gECGAE%3D" + } + }, + "trackingParams": "CL4BEJrzBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CL0BEJvzBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchPlaylistEndpoint": { + "playlistId": "RDAMPLRDCLAK5uy_nwiihKFMxWvkwG-hJlHX0VxKYFlbL3Muk", + "params": "wAEB" + } + }, + "trackingParams": "CL0BEJvzBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLsBEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "RDCLAK5uy_nwiihKFMxWvkwG-hJlHX0VxKYFlbL3Muk", + "onEmptyQueue": { + "clickTrackingParams": "CLsBEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "playlistId": "RDCLAK5uy_nwiihKFMxWvkwG-hJlHX0VxKYFlbL3Muk" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CLsBEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Playlist will play next" + } + ] + }, + "trackingParams": "CLwBEMrHAyITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + } + } + } + ] + } + }, + "trackingParams": "CLsBEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLkBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "RDCLAK5uy_nwiihKFMxWvkwG-hJlHX0VxKYFlbL3Muk", + "onEmptyQueue": { + "clickTrackingParams": "CLkBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "playlistId": "RDCLAK5uy_nwiihKFMxWvkwG-hJlHX0VxKYFlbL3Muk" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CLkBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Playlist added to queue" + } + ] + }, + "trackingParams": "CLoBEMrHAyITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + } + } + } + ] + } + }, + "trackingParams": "CLkBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save playlist to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CLcBEIT_BRgEIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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": "CLgBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CLgBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove playlist from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CLcBEIT_BRgEIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "RDCLAK5uy_nwiihKFMxWvkwG-hJlHX0VxKYFlbL3Muk" + } + } + }, + "trackingParams": "CLcBEIT_BRgEIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLUBEMOUBhgFIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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": "CLYBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CLYBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "trackingParams": "CLUBEMOUBhgFIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLQBEJH7BRgGIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "shareEntityEndpoint": { + "serializedShareEntity": "EitSRENMQUs1dXlfbndpaWhLRk14V3Zrd0ctaEpsSFgwVnhLWUZsYkwzTXVr", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CLQBEJH7BRgGIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + ], + "trackingParams": "CLMBEKc7IhMIiZu00N-HiQMVZOhCBR0rzBDv", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "navigationEndpoint": { + "clickTrackingParams": "CLIBENWfBxgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "browseEndpoint": { + "browseId": "VLRDCLAK5uy_nwiihKFMxWvkwG-hJlHX0VxKYFlbL3Muk", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CKMBENWfBxgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/rz0JsK3pMOla5w8jS-5nlk69VnbhE8Y_6gsys800bZ0Pmuq2k2M0dyUUqufH9IHc4qO3pAgo_uleZA=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/rz0JsK3pMOla5w8jS-5nlk69VnbhE8Y_6gsys800bZ0Pmuq2k2M0dyUUqufH9IHc4qO3pAgo_uleZA=w120-h120-l90-rj", + "width": 120, + "height": 120 + }, + { + "url": "https://lh3.googleusercontent.com/rz0JsK3pMOla5w8jS-5nlk69VnbhE8Y_6gsys800bZ0Pmuq2k2M0dyUUqufH9IHc4qO3pAgo_uleZA=w226-h226-l90-rj", + "width": 226, + "height": 226 + }, + { + "url": "https://lh3.googleusercontent.com/rz0JsK3pMOla5w8jS-5nlk69VnbhE8Y_6gsys800bZ0Pmuq2k2M0dyUUqufH9IHc4qO3pAgo_uleZA=w544-h544-l90-rj", + "width": 544, + "height": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CLEBEIS_AiITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CLABEMjeAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "watchPlaylistEndpoint": { + "playlistId": "RDCLAK5uy_kskrFUGb5Tnz3-x4wyK9Q5j8RgfwQvq4k", + "params": "wAEB" + } + }, + "trackingParams": "CLABEMjeAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "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 Fresh Feel-good Morning Pop" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Fresh Feel-good Morning Pop" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Fresh Feel-good Morning Pop" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Playlist" + }, + { + "text": " • " + }, + { + "text": "YouTube Music" + }, + { + "text": " • " + }, + { + "text": "85 songs" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CK8BEJrzBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchPlaylistEndpoint": { + "playlistId": "RDCLAK5uy_kskrFUGb5Tnz3-x4wyK9Q5j8RgfwQvq4k", + "params": "wAEB8gECGAE%3D" + } + }, + "trackingParams": "CK8BEJrzBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CK4BEJvzBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchPlaylistEndpoint": { + "playlistId": "RDAMPLRDCLAK5uy_kskrFUGb5Tnz3-x4wyK9Q5j8RgfwQvq4k", + "params": "wAEB" + } + }, + "trackingParams": "CK4BEJvzBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKwBEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "RDCLAK5uy_kskrFUGb5Tnz3-x4wyK9Q5j8RgfwQvq4k", + "onEmptyQueue": { + "clickTrackingParams": "CKwBEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "playlistId": "RDCLAK5uy_kskrFUGb5Tnz3-x4wyK9Q5j8RgfwQvq4k" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CKwBEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Playlist will play next" + } + ] + }, + "trackingParams": "CK0BEMrHAyITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + } + } + } + ] + } + }, + "trackingParams": "CKwBEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKoBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "RDCLAK5uy_kskrFUGb5Tnz3-x4wyK9Q5j8RgfwQvq4k", + "onEmptyQueue": { + "clickTrackingParams": "CKoBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "playlistId": "RDCLAK5uy_kskrFUGb5Tnz3-x4wyK9Q5j8RgfwQvq4k" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CKoBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Playlist added to queue" + } + ] + }, + "trackingParams": "CKsBEMrHAyITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + } + } + } + ] + } + }, + "trackingParams": "CKoBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save playlist to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CKgBEIT_BRgEIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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": "CKkBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CKkBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove playlist from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CKgBEIT_BRgEIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "RDCLAK5uy_kskrFUGb5Tnz3-x4wyK9Q5j8RgfwQvq4k" + } + } + }, + "trackingParams": "CKgBEIT_BRgEIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKYBEMOUBhgFIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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": "CKcBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CKcBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "trackingParams": "CKYBEMOUBhgFIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKUBEJH7BRgGIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "shareEntityEndpoint": { + "serializedShareEntity": "EitSRENMQUs1dXlfa3NrckZVR2I1VG56My14NHd5SzlRNWo4Umdmd1F2cTRr", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CKUBEJH7BRgGIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + ], + "trackingParams": "CKQBEKc7IhMIiZu00N-HiQMVZOhCBR0rzBDv", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "navigationEndpoint": { + "clickTrackingParams": "CKMBENWfBxgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "browseEndpoint": { + "browseId": "VLRDCLAK5uy_kskrFUGb5Tnz3-x4wyK9Q5j8RgfwQvq4k", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL" + } + } + ], + "trackingParams": "CKIBEPleGAUiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "bottomText": { + "runs": [ + { + "text": "Show all" + } + ] + }, + "bottomEndpoint": { + "clickTrackingParams": "CKIBEPleGAUiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "searchEndpoint": { + "query": "pop radio", + "params": "EgeKAQQoADgBahIQAxAEEAkQDhAKEAUQERAQEBU%3D" + } + }, + "shelfDivider": { + "musicShelfDividerRenderer": { + "hidden": true + } + } + } + }, + { + "musicShelfRenderer": { + "title": { + "runs": [ + { + "text": "Community playlists" + } + ] + }, + "contents": [ + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CJMBENafBxgAIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/BPS-G0J69HKcTT8wl_YNsBG7Uwca_NMSCifd3VuEyxl8co36DlCxqji4IlM_SbsNL6yBAUpv81Q=s192", + "width": 192, + "height": 192 + }, + { + "url": "https://yt3.ggpht.com/BPS-G0J69HKcTT8wl_YNsBG7Uwca_NMSCifd3VuEyxl8co36DlCxqji4IlM_SbsNL6yBAUpv81Q=s576", + "width": 576, + "height": 576 + }, + { + "url": "https://yt3.ggpht.com/BPS-G0J69HKcTT8wl_YNsBG7Uwca_NMSCifd3VuEyxl8co36DlCxqji4IlM_SbsNL6yBAUpv81Q=s1200", + "width": 1200, + "height": 1200 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CKEBEIS_AiITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CKABEMjeAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "watchPlaylistEndpoint": { + "playlistId": "PLjPrfFZlhTgrv14nDcvsD5Ni9EYgdowe4", + "params": "wAEB" + } + }, + "trackingParams": "CKABEMjeAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "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 radio COLDPLAY (OneRepublic, Florence + The Machine, Adele, Maroon 5, Blur, Keane, Ed Sheeran, Artic Monkeys, James Blunt, King of Leon, etc)" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause radio COLDPLAY (OneRepublic, Florence + The Machine, Adele, Maroon 5, Blur, Keane, Ed Sheeran, Artic Monkeys, James Blunt, King of Leon, etc)" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "radio COLDPLAY (OneRepublic, Florence + The Machine, Adele, Maroon 5, Blur, Keane, Ed Sheeran, Artic Monkeys, James Blunt, King of Leon, etc)" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Playlist" + }, + { + "text": " • " + }, + { + "text": "Tiago Pace", + "navigationEndpoint": { + "clickTrackingParams": "CJMBENafBxgAIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "browseEndpoint": { + "browseId": "UCujpSyP1YSh-Z81uaZF-otg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_USER_CHANNEL" + } + } + } + } + }, + { + "text": " • " + }, + { + "text": "839K views" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJ8BEJrzBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchPlaylistEndpoint": { + "playlistId": "PLjPrfFZlhTgrv14nDcvsD5Ni9EYgdowe4", + "params": "wAEB8gECKAE%3D" + } + }, + "trackingParams": "CJ8BEJrzBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJ4BEJvzBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchPlaylistEndpoint": { + "playlistId": "RDAMPLPLjPrfFZlhTgrv14nDcvsD5Ni9EYgdowe4", + "params": "wAEB" + } + }, + "trackingParams": "CJ4BEJvzBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJwBEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "PLjPrfFZlhTgrv14nDcvsD5Ni9EYgdowe4", + "onEmptyQueue": { + "clickTrackingParams": "CJwBEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "playlistId": "PLjPrfFZlhTgrv14nDcvsD5Ni9EYgdowe4" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CJwBEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Playlist will play next" + } + ] + }, + "trackingParams": "CJ0BEMrHAyITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + } + } + } + ] + } + }, + "trackingParams": "CJwBEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJoBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "PLjPrfFZlhTgrv14nDcvsD5Ni9EYgdowe4", + "onEmptyQueue": { + "clickTrackingParams": "CJoBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "playlistId": "PLjPrfFZlhTgrv14nDcvsD5Ni9EYgdowe4" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CJoBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Playlist added to queue" + } + ] + }, + "trackingParams": "CJsBEMrHAyITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + } + } + } + ] + } + }, + "trackingParams": "CJoBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save playlist to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CJgBEIT_BRgEIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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": "CJkBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CJkBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove playlist from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CJgBEIT_BRgEIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "PLjPrfFZlhTgrv14nDcvsD5Ni9EYgdowe4" + } + } + }, + "trackingParams": "CJgBEIT_BRgEIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJYBEMOUBhgFIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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": "CJcBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CJcBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "trackingParams": "CJYBEMOUBhgFIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJUBEJH7BRgGIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "shareEntityEndpoint": { + "serializedShareEntity": "EiJQTGpQcmZGWmxoVGdydjE0bkRjdnNENU5pOUVZZ2Rvd2U0", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CJUBEJH7BRgGIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + ], + "trackingParams": "CJQBEKc7IhMIiZu00N-HiQMVZOhCBR0rzBDv", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "navigationEndpoint": { + "clickTrackingParams": "CJMBENafBxgAIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "browseEndpoint": { + "browseId": "VLPLjPrfFZlhTgrv14nDcvsD5Ni9EYgdowe4", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CIQBENafBxgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://yt3.googleusercontent.com/5SZBzsrGtSRhDVdowKwN7Nq1N07vtW-1PX_5edyNa3SomINr_3Nu6gSQ-RxzV35d865NcRZJJn18=s192", + "width": 192, + "height": 192 + }, + { + "url": "https://yt3.googleusercontent.com/5SZBzsrGtSRhDVdowKwN7Nq1N07vtW-1PX_5edyNa3SomINr_3Nu6gSQ-RxzV35d865NcRZJJn18=s576", + "width": 576, + "height": 576 + }, + { + "url": "https://yt3.googleusercontent.com/5SZBzsrGtSRhDVdowKwN7Nq1N07vtW-1PX_5edyNa3SomINr_3Nu6gSQ-RxzV35d865NcRZJJn18=s1200", + "width": 1200, + "height": 1200 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CJIBEIS_AiITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CJEBEMjeAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "watchPlaylistEndpoint": { + "playlistId": "PLGBuKfnErZlB3AThAEKz8_3kbYTocgfbB", + "params": "wAEB" + } + }, + "trackingParams": "CJEBEMjeAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "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 Greatest 2010s Hits - Best Pop Songs of the Decade Playlist (Top Pop Music 2010 to 2019)" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Greatest 2010s Hits - Best Pop Songs of the Decade Playlist (Top Pop Music 2010 to 2019)" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Greatest 2010s Hits - Best Pop Songs of the Decade Playlist (Top Pop Music 2010 to 2019)" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Playlist" + }, + { + "text": " • " + }, + { + "text": "Redlist Decades", + "navigationEndpoint": { + "clickTrackingParams": "CIQBENafBxgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "browseEndpoint": { + "browseId": "UCwtKO1Vwz-7g0nBxBQcU4bg", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_USER_CHANNEL" + } + } + } + } + }, + { + "text": " • " + }, + { + "text": "21M views" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJABEJrzBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchPlaylistEndpoint": { + "playlistId": "PLGBuKfnErZlB3AThAEKz8_3kbYTocgfbB", + "params": "wAEB8gECKAE%3D" + } + }, + "trackingParams": "CJABEJrzBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CI8BEJvzBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchPlaylistEndpoint": { + "playlistId": "RDAMPLPLGBuKfnErZlB3AThAEKz8_3kbYTocgfbB", + "params": "wAEB" + } + }, + "trackingParams": "CI8BEJvzBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI0BEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "PLGBuKfnErZlB3AThAEKz8_3kbYTocgfbB", + "onEmptyQueue": { + "clickTrackingParams": "CI0BEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "playlistId": "PLGBuKfnErZlB3AThAEKz8_3kbYTocgfbB" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CI0BEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Playlist will play next" + } + ] + }, + "trackingParams": "CI4BEMrHAyITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + } + } + } + ] + } + }, + "trackingParams": "CI0BEL7uBRgCIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIsBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "PLGBuKfnErZlB3AThAEKz8_3kbYTocgfbB", + "onEmptyQueue": { + "clickTrackingParams": "CIsBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "playlistId": "PLGBuKfnErZlB3AThAEKz8_3kbYTocgfbB" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CIsBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Playlist added to queue" + } + ] + }, + "trackingParams": "CIwBEMrHAyITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + } + } + } + ] + } + }, + "trackingParams": "CIsBEPvvBRgDIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save playlist to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CIkBEIT_BRgEIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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": "CIoBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CIoBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove playlist from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CIkBEIT_BRgEIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "PLGBuKfnErZlB3AThAEKz8_3kbYTocgfbB" + } + } + }, + "trackingParams": "CIkBEIT_BRgEIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIcBEMOUBhgFIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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": "CIgBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CIgBEPBbIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + } + }, + "trackingParams": "CIcBEMOUBhgFIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIYBEJH7BRgGIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "shareEntityEndpoint": { + "serializedShareEntity": "EiJQTEdCdUtmbkVyWmxCM0FUaEFFS3o4XzNrYllUb2NnZmJC", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CIYBEJH7BRgGIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + ], + "trackingParams": "CIUBEKc7IhMIiZu00N-HiQMVZOhCBR0rzBDv", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "navigationEndpoint": { + "clickTrackingParams": "CIQBENafBxgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "browseEndpoint": { + "browseId": "VLPLGBuKfnErZlB3AThAEKz8_3kbYTocgfbB", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CHUQ1p8HGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/wJD96HbZqZq_xCYgy2EZeKXLz9a5XgXwNbMfnni0sUm3o9aFHpePQJ37Iki23tFIJy3ekBJg72Kr=s192", + "width": 192, + "height": 192 + }, + { + "url": "https://yt3.ggpht.com/wJD96HbZqZq_xCYgy2EZeKXLz9a5XgXwNbMfnni0sUm3o9aFHpePQJ37Iki23tFIJy3ekBJg72Kr=s576", + "width": 576, + "height": 576 + }, + { + "url": "https://yt3.ggpht.com/wJD96HbZqZq_xCYgy2EZeKXLz9a5XgXwNbMfnni0sUm3o9aFHpePQJ37Iki23tFIJy3ekBJg72Kr=s1200", + "width": 1200, + "height": 1200 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CIMBEIS_AiITCImbtNDfh4kDFWToQgUdK8wQ7w==" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CIIBEMjeAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "watchPlaylistEndpoint": { + "playlistId": "PLBUQc1r4P3Zn8_48OHdcw_2w7wCTA87vo", + "params": "wAEB" + } + }, + "trackingParams": "CIIBEMjeAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "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 2014 - Top 100 Pop Som do Rádio" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause 2014 - Top 100 Pop Som do Rádio" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "2014 - Top 100 Pop Som do Rádio" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Playlist" + }, + { + "text": " • " + }, + { + "text": "Ronaldo Mouro", + "navigationEndpoint": { + "clickTrackingParams": "CHUQ1p8HGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "UCwWlgHlHoOvS1Yv-ZOz_l3g", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_USER_CHANNEL" + } + } + } + } + }, + { + "text": " • " + }, + { + "text": "7.4M views" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIEBEJrzBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchPlaylistEndpoint": { + "playlistId": "PLBUQc1r4P3Zn8_48OHdcw_2w7wCTA87vo", + "params": "wAEB8gECKAE%3D" + } + }, + "trackingParams": "CIEBEJrzBRgAIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIABEJvzBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchPlaylistEndpoint": { + "playlistId": "RDAMPLPLBUQc1r4P3Zn8_48OHdcw_2w7wCTA87vo", + "params": "wAEB" + } + }, + "trackingParams": "CIABEJvzBRgBIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CH4Qvu4FGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "PLBUQc1r4P3Zn8_48OHdcw_2w7wCTA87vo", + "onEmptyQueue": { + "clickTrackingParams": "CH4Qvu4FGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "watchEndpoint": { + "playlistId": "PLBUQc1r4P3Zn8_48OHdcw_2w7wCTA87vo" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CH4Qvu4FGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Playlist will play next" + } + ] + }, + "trackingParams": "CH8QyscDIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + ] + } + }, + "trackingParams": "CH4Qvu4FGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CHwQ--8FGAMiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "queueAddEndpoint": { + "queueTarget": { + "playlistId": "PLBUQc1r4P3Zn8_48OHdcw_2w7wCTA87vo", + "onEmptyQueue": { + "clickTrackingParams": "CHwQ--8FGAMiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "watchEndpoint": { + "playlistId": "PLBUQc1r4P3Zn8_48OHdcw_2w7wCTA87vo" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CHwQ--8FGAMiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Playlist added to queue" + } + ] + }, + "trackingParams": "CH0QyscDIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + ] + } + }, + "trackingParams": "CHwQ--8FGAMiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save playlist to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CHoQhP8FGAQiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "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": "CHsQ8FsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CHsQ8FsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove playlist from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CHoQhP8FGAQiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "PLBUQc1r4P3Zn8_48OHdcw_2w7wCTA87vo" + } + } + }, + "trackingParams": "CHoQhP8FGAQiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CHgQw5QGGAUiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "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": "CHkQ8FsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CHkQ8FsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + } + } + } + } + }, + "trackingParams": "CHgQw5QGGAUiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CHcQkfsFGAYiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "shareEntityEndpoint": { + "serializedShareEntity": "EiJQTEJVUWMxcjRQM1puOF80OE9IZGN3XzJ3N3dDVEE4N3Zv", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CHcQkfsFGAYiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + } + ], + "trackingParams": "CHYQpzsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "navigationEndpoint": { + "clickTrackingParams": "CHUQ1p8HGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "VLPLBUQc1r4P3Zn8_48OHdcw_2w7wCTA87vo", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" + } + } + } + }, + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL" + } + } + ], + "trackingParams": "CHQQ-V4YBiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "bottomText": { + "runs": [ + { + "text": "Show all" + } + ] + }, + "bottomEndpoint": { + "clickTrackingParams": "CHQQ-V4YBiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "searchEndpoint": { + "query": "pop radio", + "params": "EgeKAQQoAEABahIQAxAEEAkQDhAKEAUQERAQEBU%3D" + } + }, + "shelfDivider": { + "musicShelfDividerRenderer": { + "hidden": true + } + } + } + }, + { + "musicShelfRenderer": { + "title": { + "runs": [ + { + "text": "Artists" + } + ] + }, + "contents": [ + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CG4Q1WgYACITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/OWekWvgAF96ZvGJYUtKGMj8av444mc2aPYWKvnC4pCYGZ9ByB6_JfAke4OgCJpU1W0X9UEXDQmpwyVUZ=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/OWekWvgAF96ZvGJYUtKGMj8av444mc2aPYWKvnC4pCYGZ9ByB6_JfAke4OgCJpU1W0X9UEXDQmpwyVUZ=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CHMQhL8CIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Pop Radio" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Artist" + }, + { + "text": " • " + }, + { + "text": "14 subscribers" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CHIQmvMFGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "watchPlaylistEndpoint": { + "playlistId": "RDAO8Oj0mLAfIdzCzNOnKfgdrg", + "params": "wAEB8gECGAE%3D" + } + }, + "trackingParams": "CHIQmvMFGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CHEQm_MFGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "watchPlaylistEndpoint": { + "playlistId": "RDEM8Oj0mLAfIdzCzNOnKfgdrg", + "params": "wAEB" + } + }, + "trackingParams": "CHEQm_MFGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CHAQkfsFGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ0JYa0F2LU5La2JpcVdudFlPZnJYMWc%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CHAQkfsFGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + } + ], + "trackingParams": "CG8QpzsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "navigationEndpoint": { + "clickTrackingParams": "CG4Q1WgYACITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "browseEndpoint": { + "browseId": "UCBXkAv-NKkbiqWntYOfrX1g", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CGgQ1WgYASITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/Cpg_Uo9J8_MH1frw4nNwGFYWlcuCiu9Gjb8Hee0H-iNGMi569j-znlsGcHfFM_SAlQtiJEizdPza__EP=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/Cpg_Uo9J8_MH1frw4nNwGFYWlcuCiu9Gjb8Hee0H-iNGMi569j-znlsGcHfFM_SAlQtiJEizdPza__EP=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CG0QhL8CIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Musica Pop Radio" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Artist" + }, + { + "text": " • " + }, + { + "text": "7 subscribers" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CGwQmvMFGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "watchPlaylistEndpoint": { + "playlistId": "RDAOz3KTzaE3h69w7Tp4yPbvJQ", + "params": "wAEB8gECGAE%3D" + } + }, + "trackingParams": "CGwQmvMFGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CGsQm_MFGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "watchPlaylistEndpoint": { + "playlistId": "RDEMz3KTzaE3h69w7Tp4yPbvJQ", + "params": "wAEB" + } + }, + "trackingParams": "CGsQm_MFGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CGoQkfsFGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ3NtTlA3VThpbEFrNlV6SE8wN1l0bHc%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CGoQkfsFGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + } + ], + "trackingParams": "CGkQpzsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "navigationEndpoint": { + "clickTrackingParams": "CGgQ1WgYASITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "browseEndpoint": { + "browseId": "UCsmNP7U8ilAk6UzHO07Ytlw", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CGIQ1WgYAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://lh3.googleusercontent.com/qboJ2C1DmazfBiGgi0h5rBOOyy6QP0R-mMwInkCv0gUavon8KBRRA4xV2MlO_DozAIMFCwNCfKq9clAxIQ=w60-h60-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://lh3.googleusercontent.com/qboJ2C1DmazfBiGgi0h5rBOOyy6QP0R-mMwInkCv0gUavon8KBRRA4xV2MlO_DozAIMFCwNCfKq9clAxIQ=w120-h120-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CGcQhL8CIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "City Pop Radio" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Artist" + }, + { + "text": " • " + }, + { + "text": "5 subscribers" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "icon": { + "iconType": "MUSIC_SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CGYQmvMFGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "watchPlaylistEndpoint": { + "playlistId": "RDAOVX6RWDFgOQB8zmGkeuLbTA", + "params": "wAEB8gECGAE%3D" + } + }, + "trackingParams": "CGYQmvMFGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CGUQm_MFGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "watchPlaylistEndpoint": { + "playlistId": "RDEMVX6RWDFgOQB8zmGkeuLbTA", + "params": "wAEB" + } + }, + "trackingParams": "CGUQm_MFGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CGQQkfsFGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ0xfTm9DRWF1MEdqMWRRNHJ1N1V6Y0E%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CGQQkfsFGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + } + ], + "trackingParams": "CGMQpzsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "navigationEndpoint": { + "clickTrackingParams": "CGIQ1WgYAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "browseEndpoint": { + "browseId": "UCL_NoCEau0Gj1dQ4ru7UzcA", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + } + } + }, + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL" + } + } + ], + "trackingParams": "CGEQ-V4YByITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "bottomText": { + "runs": [ + { + "text": "Show all" + } + ] + }, + "bottomEndpoint": { + "clickTrackingParams": "CGEQ-V4YByITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "searchEndpoint": { + "query": "pop radio", + "params": "EgWKAQIgAWoSEAMQBBAJEA4QChAFEBEQEBAV" + } + }, + "shelfDivider": { + "musicShelfDividerRenderer": { + "hidden": true + } + } + } + }, + { + "musicShelfRenderer": { + "title": { + "runs": [ + { + "text": "Podcasts" + } + ] + }, + "contents": [ + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CFoQ7uAIGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://www.gstatic.com/youtube/media/ytm/images/pbg/playlist-empty-state-@192.png", + "width": 192, + "height": 192 + }, + { + "url": "https://www.gstatic.com/youtube/media/ytm/images/pbg/playlist-empty-state-@576.png", + "width": 576, + "height": 576 + }, + { + "url": "https://www.gstatic.com/youtube/media/ytm/images/pbg/playlist-empty-state-@1200.png", + "width": 1200, + "height": 1200 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CGAQhL8CIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CF8QyN4CIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchPlaylistEndpoint": { + "playlistId": "PL-ijX1Uy5ZgUFapzL2MFyTggZQBHC7xH2" + } + }, + "trackingParams": "CF8QyN4CIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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 Culture Pop Radio Season 2" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Culture Pop Radio Season 2" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Culture Pop Radio Season 2" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Podcast" + }, + { + "text": " • " + }, + { + "text": "Julia Vamps", + "navigationEndpoint": { + "clickTrackingParams": "CFoQ7uAIGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "UC71M5Sr9Eh3W4P3DOt4fDbQ", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_USER_CHANNEL" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CF0QhP8FGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "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": "CF4Q8FsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CF4Q8FsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CF0QhP8FGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "PL-ijX1Uy5ZgUFapzL2MFyTggZQBHC7xH2" + } + } + }, + "trackingParams": "CF0QhP8FGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CFwQkfsFGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "shareEntityEndpoint": { + "serializedShareEntity": "EiJQTC1palgxVXk1WmdVRmFwekwyTUZ5VGdnWlFCSEM3eEgy", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CFwQkfsFGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + } + ], + "trackingParams": "CFsQpzsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "navigationEndpoint": { + "clickTrackingParams": "CFoQ7uAIGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "MPSPPL-ijX1Uy5ZgUFapzL2MFyTggZQBHC7xH2", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PODCAST_SHOW_DETAIL_PAGE" + } + } + } + }, + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CFMQ7uAIGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://www.gstatic.com/youtube/media/ytm/images/pbg/playlist-empty-state-@192.png", + "width": 192, + "height": 192 + }, + { + "url": "https://www.gstatic.com/youtube/media/ytm/images/pbg/playlist-empty-state-@576.png", + "width": 576, + "height": 576 + }, + { + "url": "https://www.gstatic.com/youtube/media/ytm/images/pbg/playlist-empty-state-@1200.png", + "width": 1200, + "height": 1200 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CFkQhL8CIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CFgQyN4CIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchPlaylistEndpoint": { + "playlistId": "PL-ijX1Uy5ZgU4hGBeJ6jLDvQeRaiFhNTd" + } + }, + "trackingParams": "CFgQyN4CIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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 Culture Pop Radio Season 3" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Culture Pop Radio Season 3" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Culture Pop Radio Season 3" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Podcast" + }, + { + "text": " • " + }, + { + "text": "Julia Vamps", + "navigationEndpoint": { + "clickTrackingParams": "CFMQ7uAIGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "UC71M5Sr9Eh3W4P3DOt4fDbQ", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_USER_CHANNEL" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CFYQhP8FGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "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": "CFcQ8FsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CFcQ8FsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CFYQhP8FGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "PL-ijX1Uy5ZgU4hGBeJ6jLDvQeRaiFhNTd" + } + } + }, + "trackingParams": "CFYQhP8FGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CFUQkfsFGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "shareEntityEndpoint": { + "serializedShareEntity": "EiJQTC1palgxVXk1WmdVNGhHQmVKNmpMRHZRZVJhaUZoTlRk", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CFUQkfsFGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + } + ], + "trackingParams": "CFQQpzsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "navigationEndpoint": { + "clickTrackingParams": "CFMQ7uAIGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "MPSPPL-ijX1Uy5ZgU4hGBeJ6jLDvQeRaiFhNTd", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PODCAST_SHOW_DETAIL_PAGE" + } + } + } + }, + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CEwQ7uAIGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://www.gstatic.com/youtube/media/ytm/images/pbg/playlist-empty-state-@192.png", + "width": 192, + "height": 192 + }, + { + "url": "https://www.gstatic.com/youtube/media/ytm/images/pbg/playlist-empty-state-@576.png", + "width": 576, + "height": 576 + }, + { + "url": "https://www.gstatic.com/youtube/media/ytm/images/pbg/playlist-empty-state-@1200.png", + "width": 1200, + "height": 1200 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CFIQhL8CIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CFEQyN4CIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchPlaylistEndpoint": { + "playlistId": "PL-ijX1Uy5ZgU1drn0TYDYHwr0dJ1qc_yD" + } + }, + "trackingParams": "CFEQyN4CIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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 Culture Pop Radio Season 4" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Culture Pop Radio Season 4" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Culture Pop Radio Season 4" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Podcast" + }, + { + "text": " • " + }, + { + "text": "Julia Vamps", + "navigationEndpoint": { + "clickTrackingParams": "CEwQ7uAIGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "UC71M5Sr9Eh3W4P3DOt4fDbQ", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_USER_CHANNEL" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "toggleMenuServiceItemRenderer": { + "defaultText": { + "runs": [ + { + "text": "Save to library" + } + ] + }, + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CE8QhP8FGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "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": "CFAQ8FsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CFAQ8FsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + } + } + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove from library" + } + ] + }, + "toggledIcon": { + "iconType": "LIBRARY_SAVED" + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CE8QhP8FGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "PL-ijX1Uy5ZgU1drn0TYDYHwr0dJ1qc_yD" + } + } + }, + "trackingParams": "CE8QhP8FGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CE4QkfsFGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "shareEntityEndpoint": { + "serializedShareEntity": "EiJQTC1palgxVXk1WmdVMWRybjBUWURZSHdyMGRKMXFjX3lE", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CE4QkfsFGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + } + ], + "trackingParams": "CE0QpzsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "navigationEndpoint": { + "clickTrackingParams": "CEwQ7uAIGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "MPSPPL-ijX1Uy5ZgU1drn0TYDYHwr0dJ1qc_yD", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PODCAST_SHOW_DETAIL_PAGE" + } + } + } + }, + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL" + } + } + ], + "trackingParams": "CEsQ-V4YCCITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "bottomText": { + "runs": [ + { + "text": "Show all" + } + ] + }, + "bottomEndpoint": { + "clickTrackingParams": "CEsQ-V4YCCITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "searchEndpoint": { + "query": "pop radio", + "params": "EgWKAQJQAWoSEAMQBBAJEA4QChAFEBEQEBAV" + } + }, + "shelfDivider": { + "musicShelfDividerRenderer": { + "hidden": true + } + } + } + }, + { + "musicShelfRenderer": { + "title": { + "runs": [ + { + "text": "Episodes" + } + ] + }, + "contents": [ + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CDsQ7eAIGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/M5q3wMm6D7Y/hqdefault.jpg?sqp=-oaymwEWCOADEI4CIAQqCggAEOADGC0guwJIWg&rs=AMzJL3llTe-klOXWsYhrgo6uI2cDeZoE7A", + "width": 480, + "height": 270 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CEoQhL8CIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CEkQyN4CIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "videoId": "M5q3wMm6D7Y", + "params": "8gEDmAEI", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_PODCAST_EPISODE" + } + } + } + }, + "trackingParams": "CEkQyN4CIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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 POPradio S2E6 Maglera Doe Boy - Trapping, Street Life, Champion Music, Diaspora album, Klerksdorp - The POPcast" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause POPradio S2E6 Maglera Doe Boy - Trapping, Street Life, Champion Music, Diaspora album, Klerksdorp - The POPcast" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "POPradio S2E6 Maglera Doe Boy - Trapping, Street Life, Champion Music, Diaspora album, Klerksdorp", + "navigationEndpoint": { + "clickTrackingParams": "CDsQ7eAIGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "MPEDM5q3wMm6D7Y", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_NON_MUSIC_AUDIO_TRACK_PAGE" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Episode" + }, + { + "text": " • " + }, + { + "text": "Nov 8, 2022" + }, + { + "text": " • " + }, + { + "text": "POPradio Season 2", + "navigationEndpoint": { + "clickTrackingParams": "CDsQ7eAIGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "MPSPPLKILil9ZNOAAuXs4gBWD1nJhFR0BiG7FS", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PODCAST_SHOW_DETAIL_PAGE" + } + } + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Episode • Nov 8, 2022 • POPradio Season 2" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEcQvu4FGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "M5q3wMm6D7Y", + "onEmptyQueue": { + "clickTrackingParams": "CEcQvu4FGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "watchEndpoint": { + "videoId": "M5q3wMm6D7Y" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CEcQvu4FGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Episode will play next" + } + ] + }, + "trackingParams": "CEgQyscDIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + ] + } + }, + "trackingParams": "CEcQvu4FGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEUQ--8FGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "M5q3wMm6D7Y", + "onEmptyQueue": { + "clickTrackingParams": "CEUQ--8FGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "watchEndpoint": { + "videoId": "M5q3wMm6D7Y" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CEUQ--8FGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Episode added to queue" + } + ] + }, + "trackingParams": "CEYQyscDIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + ] + } + }, + "trackingParams": "CEUQ--8FGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CEQQ0aoFGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "offlineVideoEndpoint": { + "videoId": "M5q3wMm6D7Y", + "onAddCommand": { + "clickTrackingParams": "CEQQ0aoFGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "getDownloadActionCommand": { + "videoId": "M5q3wMm6D7Y", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CEQQ0aoFGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEIQw5QGGAMiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "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": "CEMQ8FsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CEMQ8FsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + } + } + } + } + }, + "trackingParams": "CEIQw5QGGAMiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to podcast" + } + ] + }, + "icon": { + "iconType": "BROADCAST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEEQgqIJGAQiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "MPSPPLKILil9ZNOAAuXs4gBWD1nJhFR0BiG7FS", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PODCAST_SHOW_DETAIL_PAGE" + } + } + } + }, + "trackingParams": "CEEQgqIJGAQiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEAQkfsFGAUiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtNNXEzd01tNkQ3WQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CEAQkfsFGAUiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + } + ], + "trackingParams": "CDwQpzsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { + "videoId": "M5q3wMm6D7Y" + }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CD0QpUEYBiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "likesAllowed": true, + "dislikeNavigationEndpoint": { + "clickTrackingParams": "CD0QpUEYBiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "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": "CD8Q8FsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CD8Q8FsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + } + } + } + } + }, + "likeCommand": { + "clickTrackingParams": "CD0QpUEYBiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "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": "CD4Q8FsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CD4Q8FsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + } + } + } + } + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "playlistItemData": { + "videoId": "M5q3wMm6D7Y" + }, + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CCsQ7eAIGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/MiVivWh7zrA/hqdefault.jpg?sqp=-oaymwEWCOADEI4CIAQqCggAEOADGC0guwJIWg&rs=AMzJL3nYL-RCk85pNuNZ9Dq3nTUyi9DPbw", + "width": 480, + "height": 270 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CDoQhL8CIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CDkQyN4CIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "videoId": "MiVivWh7zrA", + "params": "8gEDmAEI", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_PODCAST_EPISODE" + } + } + } + }, + "trackingParams": "CDkQyN4CIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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 Jueves 11/01/24 Noche Paranormal Estreno Héctor Rossi Pop Radio 101.5 | Podcast Paranormal - TrasnocheParanormal" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Jueves 11/01/24 Noche Paranormal Estreno Héctor Rossi Pop Radio 101.5 | Podcast Paranormal - TrasnocheParanormal" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Jueves 11/01/24 Noche Paranormal Estreno Héctor Rossi Pop Radio 101.5 | Podcast Paranormal", + "navigationEndpoint": { + "clickTrackingParams": "CCsQ7eAIGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "MPEDMiVivWh7zrA", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_NON_MUSIC_AUDIO_TRACK_PAGE" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Episode" + }, + { + "text": " • " + }, + { + "text": "Jan 12" + }, + { + "text": " • " + }, + { + "text": "Trasnoche Paranormal | CANAL OFICIAL", + "navigationEndpoint": { + "clickTrackingParams": "CCsQ7eAIGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "MPSPPLrfPt7juBhaiiYuufupPdoaev6gH6th2q", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PODCAST_SHOW_DETAIL_PAGE" + } + } + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Episode • Jan 12 • Trasnoche Paranormal | CANAL OFICIAL" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDcQvu4FGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "MiVivWh7zrA", + "onEmptyQueue": { + "clickTrackingParams": "CDcQvu4FGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "watchEndpoint": { + "videoId": "MiVivWh7zrA" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CDcQvu4FGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Episode will play next" + } + ] + }, + "trackingParams": "CDgQyscDIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + ] + } + }, + "trackingParams": "CDcQvu4FGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDUQ--8FGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "MiVivWh7zrA", + "onEmptyQueue": { + "clickTrackingParams": "CDUQ--8FGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "watchEndpoint": { + "videoId": "MiVivWh7zrA" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CDUQ--8FGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Episode added to queue" + } + ] + }, + "trackingParams": "CDYQyscDIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + ] + } + }, + "trackingParams": "CDUQ--8FGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CDQQ0aoFGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "offlineVideoEndpoint": { + "videoId": "MiVivWh7zrA", + "onAddCommand": { + "clickTrackingParams": "CDQQ0aoFGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "getDownloadActionCommand": { + "videoId": "MiVivWh7zrA", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CDQQ0aoFGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDIQw5QGGAMiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "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": "CDMQ8FsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CDMQ8FsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + } + } + } + } + }, + "trackingParams": "CDIQw5QGGAMiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to podcast" + } + ] + }, + "icon": { + "iconType": "BROADCAST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDEQgqIJGAQiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "MPSPPLrfPt7juBhaiiYuufupPdoaev6gH6th2q", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PODCAST_SHOW_DETAIL_PAGE" + } + } + } + }, + "trackingParams": "CDEQgqIJGAQiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDAQkfsFGAUiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtNaVZpdldoN3pyQQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CDAQkfsFGAUiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + } + ], + "trackingParams": "CCwQpzsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { + "videoId": "MiVivWh7zrA" + }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CC0QpUEYBiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "likesAllowed": true, + "dislikeNavigationEndpoint": { + "clickTrackingParams": "CC0QpUEYBiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "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": "CC8Q8FsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CC8Q8FsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + } + } + } + } + }, + "likeCommand": { + "clickTrackingParams": "CC0QpUEYBiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "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": "CC4Q8FsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CC4Q8FsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + } + } + } + } + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "playlistItemData": { + "videoId": "MiVivWh7zrA" + }, + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CBsQ7eAIGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/7-hMhhUO8b8/hqdefault.jpg?sqp=-oaymwEWCOADEI4CIAQqCggAEOADGC0guwJIWg&rs=AMzJL3nXrzAvG_nCkm5LjlRtSecicpaKdw", + "width": 480, + "height": 270 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CCoQhL8CIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "playNavigationEndpoint": { + "clickTrackingParams": "CCkQyN4CIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "watchEndpoint": { + "videoId": "7-hMhhUO8b8", + "params": "8gEDmAEI", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_PODCAST_EPISODE" + } + } + } + }, + "trackingParams": "CCkQyN4CIhMIiZu00N-HiQMVZOhCBR0rzBDv", + "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 Martes 02/04/24 Noche Paranormal Estreno Héctor Rossi Pop Radio 101.5 | Podcast Paranormal - TrasnocheParanormal" + } + }, + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Martes 02/04/24 Noche Paranormal Estreno Héctor Rossi Pop Radio 101.5 | Podcast Paranormal - TrasnocheParanormal" + } + } + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Martes 02/04/24 Noche Paranormal Estreno Héctor Rossi Pop Radio 101.5 | Podcast Paranormal", + "navigationEndpoint": { + "clickTrackingParams": "CBsQ7eAIGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "MPED7-hMhhUO8b8", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_NON_MUSIC_AUDIO_TRACK_PAGE" + } + } + } + } + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Episode" + }, + { + "text": " • " + }, + { + "text": "Apr 3" + }, + { + "text": " • " + }, + { + "text": "Trasnoche Paranormal | CANAL OFICIAL", + "navigationEndpoint": { + "clickTrackingParams": "CBsQ7eAIGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "MPSPPLrfPt7juBhaiiYuufupPdoaev6gH6th2q", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PODCAST_SHOW_DETAIL_PAGE" + } + } + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Episode • Apr 3 • Trasnoche Paranormal | CANAL OFICIAL" + } + } + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CCcQvu4FGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "7-hMhhUO8b8", + "onEmptyQueue": { + "clickTrackingParams": "CCcQvu4FGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "watchEndpoint": { + "videoId": "7-hMhhUO8b8" + } + } + }, + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "commands": [ + { + "clickTrackingParams": "CCcQvu4FGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Episode will play next" + } + ] + }, + "trackingParams": "CCgQyscDIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + ] + } + }, + "trackingParams": "CCcQvu4FGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CCUQ--8FGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "queueAddEndpoint": { + "queueTarget": { + "videoId": "7-hMhhUO8b8", + "onEmptyQueue": { + "clickTrackingParams": "CCUQ--8FGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "watchEndpoint": { + "videoId": "7-hMhhUO8b8" + } + } + }, + "queueInsertPosition": "INSERT_AT_END", + "commands": [ + { + "clickTrackingParams": "CCUQ--8FGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Episode added to queue" + } + ] + }, + "trackingParams": "CCYQyscDIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + } + } + } + ] + } + }, + "trackingParams": "CCUQ--8FGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CCQQ0aoFGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "offlineVideoEndpoint": { + "videoId": "7-hMhhUO8b8", + "onAddCommand": { + "clickTrackingParams": "CCQQ0aoFGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "getDownloadActionCommand": { + "videoId": "7-hMhhUO8b8", + "params": "CAI%3D" + } + } + } + }, + "trackingParams": "CCQQ0aoFGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Save to playlist" + } + ] + }, + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCIQw5QGGAMiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "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": "CCMQ8FsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CCMQ8FsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + } + } + } + } + }, + "trackingParams": "CCIQw5QGGAMiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Go to podcast" + } + ] + }, + "icon": { + "iconType": "BROADCAST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCEQgqIJGAQiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "MPSPPLrfPt7juBhaiiYuufupPdoaev6gH6th2q", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PODCAST_SHOW_DETAIL_PAGE" + } + } + } + }, + "trackingParams": "CCEQgqIJGAQiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + }, + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCAQkfsFGAUiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "shareEntityEndpoint": { + "serializedShareEntity": "Cgs3LWhNaGhVTzhiOA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CCAQkfsFGAUiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + } + ], + "trackingParams": "CBwQpzsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "topLevelButtons": [ + { + "likeButtonRenderer": { + "target": { + "videoId": "7-hMhhUO8b8" + }, + "likeStatus": "INDIFFERENT", + "trackingParams": "CB0QpUEYBiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "likesAllowed": true, + "dislikeNavigationEndpoint": { + "clickTrackingParams": "CB0QpUEYBiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "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": "CB8Q8FsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CB8Q8FsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + } + } + } + } + }, + "likeCommand": { + "clickTrackingParams": "CB0QpUEYBiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "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": "CB4Q8FsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "signInEndpoint": { + "hack": true + } + }, + "trackingParams": "CB4Q8FsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + } + } + } + } + } + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "playlistItemData": { + "videoId": "7-hMhhUO8b8" + }, + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL" + } + } + ], + "trackingParams": "CBoQ-V4YCSITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "bottomText": { + "runs": [ + { + "text": "Show all" + } + ] + }, + "bottomEndpoint": { + "clickTrackingParams": "CBoQ-V4YCSITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "searchEndpoint": { + "query": "pop radio", + "params": "EgWKAQJIAWoSEAMQBBAJEA4QChAFEBEQEBAV" + } + }, + "shelfDivider": { + "musicShelfDividerRenderer": { + "hidden": true + } + } + } + }, + { + "musicShelfRenderer": { + "title": { + "runs": [ + { + "text": "Profiles" + } + ] + }, + "contents": [ + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CBYQgawKGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://yt3.googleusercontent.com/2Py1-HUmfdmgxE3PEL-EdCE4lgGktuklnIOPdBy0N1_51Ne65bW5gJnxcc-eJB9vxhbU4-JQCg=w60-c-h60-k-c0x00ffffff-no-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://yt3.googleusercontent.com/2Py1-HUmfdmgxE3PEL-EdCE4lgGktuklnIOPdBy0N1_51Ne65bW5gJnxcc-eJB9vxhbU4-JQCg=w120-c-h120-k-c0x00ffffff-no-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CBkQhL8CIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Pop Hist Radio" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Profile" + }, + { + "text": " • " + }, + { + "text": "@PopHistRadio" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBgQkfsFGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ2RRcldndkhEOWYtY2FNU24zU1MtV1E%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CBgQkfsFGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + } + ], + "trackingParams": "CBcQpzsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "navigationEndpoint": { + "clickTrackingParams": "CBYQgawKGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "UCdQrWgvHD9f-caMSn3SS-WQ", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_USER_CHANNEL" + } + } + } + }, + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CBIQgawKGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://yt3.googleusercontent.com/ytc/AIdro_kuTfeNrt95jHhzzMfQoqFSGWo2cCfUsZ_OHH5zpeM=w60-c-h60-k-c0x00ffffff-no-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://yt3.googleusercontent.com/ytc/AIdro_kuTfeNrt95jHhzzMfQoqFSGWo2cCfUsZ_OHH5zpeM=w120-c-h120-k-c0x00ffffff-no-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CBUQhL8CIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "HMD RADIO POP" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Profile" + }, + { + "text": " • " + }, + { + "text": "@hmdradiopop5581" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBQQkfsFGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQy1qMjVSNGVHQl9wanNhUnhGNVdPb1E%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CBQQkfsFGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + } + ], + "trackingParams": "CBMQpzsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "navigationEndpoint": { + "clickTrackingParams": "CBIQgawKGAEiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "UC-j25R4eGB_pjsaRxF5WOoQ", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_USER_CHANNEL" + } + } + } + }, + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL" + } + }, + { + "musicResponsiveListItemRenderer": { + "trackingParams": "CA4QgawKGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://yt3.googleusercontent.com/evLHWABaoAFyXkfnSH95NZ7Fj96AmPW4iHp7pQckNn48PBmKeIvrkgnMtSdwQCOuqLx3tpQIuA=w60-c-h60-k-c0x00ffffff-no-l90-rj", + "width": 60, + "height": 60 + }, + { + "url": "https://yt3.googleusercontent.com/evLHWABaoAFyXkfnSH95NZ7Fj96AmPW4iHp7pQckNn48PBmKeIvrkgnMtSdwQCOuqLx3tpQIuA=w120-c-h120-k-c0x00ffffff-no-l90-rj", + "width": 120, + "height": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CBEQhL8CIhMIiZu00N-HiQMVZOhCBR0rzBDv" + } + }, + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "MUSIC RADIO" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "text": { + "runs": [ + { + "text": "Profile" + }, + { + "text": " • " + }, + { + "text": "@musicradio8514" + } + ] + }, + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH" + } + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBAQkfsFGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ1JrRWlwaW4tTTlmUTEyVVd4YzlVR1E%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "trackingParams": "CBAQkfsFGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + } + ], + "trackingParams": "CA8QpzsiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "flexColumnDisplayStyle": "MUSIC_RESPONSIVE_LIST_ITEM_FLEX_COLUMN_DISPLAY_STYLE_TWO_LINE_STACK", + "navigationEndpoint": { + "clickTrackingParams": "CA4QgawKGAIiEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "browseEndpoint": { + "browseId": "UCRkEipin-M9fQ12UWxc9UGQ", + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_USER_CHANNEL" + } + } + } + }, + "itemHeight": "MUSIC_RESPONSIVE_LIST_ITEM_HEIGHT_TALL" + } + } + ], + "trackingParams": "CA0Q-V4YCiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "bottomText": { + "runs": [ + { + "text": "Show all" + } + ] + }, + "bottomEndpoint": { + "clickTrackingParams": "CA0Q-V4YCiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "searchEndpoint": { + "query": "pop radio", + "params": "EgWKAQJYAWoSEAMQBBAJEA4QChAFEBEQEBAV" + } + }, + "shelfDivider": { + "musicShelfDividerRenderer": { + "hidden": true + } + } + } + } + ], + "trackingParams": "CAIQui8iEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "header": { + "chipCloudRenderer": { + "chips": [ + { + "chipCloudChipRenderer": { + "style": { + "styleType": "STYLE_DEFAULT" + }, + "text": { + "runs": [ + { + "text": "Songs" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CAwQ_V0YACITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "searchEndpoint": { + "query": "pop radio", + "params": "EgWKAQIIAWoSEAMQBBAJEA4QChAFEBEQEBAV" + } + }, + "trackingParams": "CAwQ_V0YACITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "accessibilityData": { + "accessibilityData": { + "label": "Show song results" + } + }, + "isSelected": false, + "uniqueId": "Songs" + } + }, + { + "chipCloudChipRenderer": { + "style": { + "styleType": "STYLE_DEFAULT" + }, + "text": { + "runs": [ + { + "text": "Videos" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CAsQ_V0YASITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "searchEndpoint": { + "query": "pop radio", + "params": "EgWKAQIQAWoSEAMQBBAJEA4QChAFEBEQEBAV" + } + }, + "trackingParams": "CAsQ_V0YASITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "accessibilityData": { + "accessibilityData": { + "label": "Show video results" + } + }, + "isSelected": false, + "uniqueId": "Videos" + } + }, + { + "chipCloudChipRenderer": { + "style": { + "styleType": "STYLE_DEFAULT" + }, + "text": { + "runs": [ + { + "text": "Albums" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CAoQ_V0YAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "searchEndpoint": { + "query": "pop radio", + "params": "EgWKAQIYAWoSEAMQBBAJEA4QChAFEBEQEBAV" + } + }, + "trackingParams": "CAoQ_V0YAiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "accessibilityData": { + "accessibilityData": { + "label": "Show album results" + } + }, + "isSelected": false, + "uniqueId": "Albums" + } + }, + { + "chipCloudChipRenderer": { + "style": { + "styleType": "STYLE_DEFAULT" + }, + "text": { + "runs": [ + { + "text": "Featured playlists" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CAkQ_V0YAyITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "searchEndpoint": { + "query": "pop radio", + "params": "EgeKAQQoADgBahIQAxAEEAkQDhAKEAUQERAQEBU%3D" + } + }, + "trackingParams": "CAkQ_V0YAyITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "accessibilityData": { + "accessibilityData": { + "label": "Show featured playlist results" + } + }, + "isSelected": false, + "uniqueId": "Featured playlists" + } + }, + { + "chipCloudChipRenderer": { + "style": { + "styleType": "STYLE_DEFAULT" + }, + "text": { + "runs": [ + { + "text": "Community playlists" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CAgQ_V0YBCITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "searchEndpoint": { + "query": "pop radio", + "params": "EgeKAQQoAEABahIQAxAEEAkQDhAKEAUQERAQEBU%3D" + } + }, + "trackingParams": "CAgQ_V0YBCITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "accessibilityData": { + "accessibilityData": { + "label": "Show community playlist results" + } + }, + "isSelected": false, + "uniqueId": "Community playlists" + } + }, + { + "chipCloudChipRenderer": { + "style": { + "styleType": "STYLE_DEFAULT" + }, + "text": { + "runs": [ + { + "text": "Artists" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CAcQ_V0YBSITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "searchEndpoint": { + "query": "pop radio", + "params": "EgWKAQIgAWoSEAMQBBAJEA4QChAFEBEQEBAV" + } + }, + "trackingParams": "CAcQ_V0YBSITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "accessibilityData": { + "accessibilityData": { + "label": "Show artist results" + } + }, + "isSelected": false, + "uniqueId": "Artists" + } + }, + { + "chipCloudChipRenderer": { + "style": { + "styleType": "STYLE_DEFAULT" + }, + "text": { + "runs": [ + { + "text": "Podcasts" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CAYQ_V0YBiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "searchEndpoint": { + "query": "pop radio", + "params": "EgWKAQJQAWoSEAMQBBAJEA4QChAFEBEQEBAV" + } + }, + "trackingParams": "CAYQ_V0YBiITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "accessibilityData": { + "accessibilityData": { + "label": "Show podcast results" + } + }, + "isSelected": false, + "uniqueId": "Podcasts" + } + }, + { + "chipCloudChipRenderer": { + "style": { + "styleType": "STYLE_DEFAULT" + }, + "text": { + "runs": [ + { + "text": "Episodes" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CAUQ_V0YByITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "searchEndpoint": { + "query": "pop radio", + "params": "EgWKAQJIAWoSEAMQBBAJEA4QChAFEBEQEBAV" + } + }, + "trackingParams": "CAUQ_V0YByITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "accessibilityData": { + "accessibilityData": { + "label": "Show podcast episode results" + } + }, + "isSelected": false, + "uniqueId": "Episodes" + } + }, + { + "chipCloudChipRenderer": { + "style": { + "styleType": "STYLE_DEFAULT" + }, + "text": { + "runs": [ + { + "text": "Profiles" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CAQQ_V0YCCITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "searchEndpoint": { + "query": "pop radio", + "params": "EgWKAQJYAWoSEAMQBBAJEA4QChAFEBEQEBAV" + } + }, + "trackingParams": "CAQQ_V0YCCITCImbtNDfh4kDFWToQgUdK8wQ7w==", + "accessibilityData": { + "accessibilityData": { + "label": "Show profile results" + } + }, + "isSelected": false, + "uniqueId": "Profiles" + } + } + ], + "collapsedRowCount": 1, + "trackingParams": "CAMQ_F0iEwiJm7TQ34eJAxVk6EIFHSvMEO8=", + "horizontalScrollable": true + } + } + } + }, + "tabIdentifier": "music_search_catalog", + "trackingParams": "CAEQ8JMBGAAiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" + } + } + ] + } + }, + "trackingParams": "CAAQvGkiEwiJm7TQ34eJAxVk6EIFHSvMEO8=" +} From e65f14556f3003fa59fee3f9f1410fb5ddf63219 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 12 Oct 2024 05:47:47 +0200 Subject: [PATCH 150/347] fix: A/B test 16 (pageHeaderRenderer on playlist pages) --- codegen/src/abtest.rs | 19 + codegen/src/collect_chan_prefixes.rs | 75 + codegen/src/gen_dictionary.rs | 8 +- codegen/src/main.rs | 7 + codegen/src/model.rs | 8 +- notes/AB_Tests.md | 122 +- src/client/channel.rs | 8 +- src/client/playlist.rs | 147 +- src/client/response/channel.rs | 37 +- src/client/response/mod.rs | 61 +- src/client/response/playlist.rs | 96 +- src/client/response/url_endpoint.rs | 24 +- ...map_playlist_data_20241011_pageheader.snap | 456 ++ src/util/dictionary.rs | 162 + testfiles/dict/chan_prefixes.json | 85 + testfiles/dict/dictionary.json | 316 +- .../playlist_20241011_pageheader.json | 4986 +++++++++++++++++ 17 files changed, 6435 insertions(+), 182 deletions(-) create mode 100644 codegen/src/collect_chan_prefixes.rs create mode 100644 src/client/snapshots/rustypipe__client__playlist__tests__map_playlist_data_20241011_pageheader.snap create mode 100644 testfiles/dict/chan_prefixes.json create mode 100644 testfiles/playlist/playlist_20241011_pageheader.json diff --git a/codegen/src/abtest.rs b/codegen/src/abtest.rs index 8852cb9..eeb95d8 100644 --- a/codegen/src/abtest.rs +++ b/codegen/src/abtest.rs @@ -35,6 +35,7 @@ pub enum ABTest { MusicPlaylistTwoColumn = 13, CommentsFrameworkUpdate = 14, ChannelShortsLockup = 15, + PlaylistPageHeader = 16, } /// List of active A/B tests that are run when none is manually specified @@ -112,6 +113,7 @@ pub async fn run_test( ABTest::MusicPlaylistTwoColumn => music_playlist_two_column(&query).await, ABTest::CommentsFrameworkUpdate => comments_framework_update(&query).await, ABTest::ChannelShortsLockup => channel_shorts_lockup(&query).await, + ABTest::PlaylistPageHeader => playlist_page_header_renderer(&query).await, } .unwrap(); pb.inc(1); @@ -382,3 +384,20 @@ pub async fn channel_shorts_lockup(rp: &RustyPipeQuery) -> Result { .unwrap(); Ok(res.contains("\"shortsLockupViewModel\"")) } + +pub async fn playlist_page_header_renderer(rp: &RustyPipeQuery) -> Result { + let id = "VLPLZN_exA7d4RVmCQrG5VlWIjMOkMFZVVOc"; + let res = rp + .raw( + ClientType::Desktop, + "browse", + &QBrowse { + context: rp.get_context(ClientType::Desktop, true, None).await, + browse_id: id, + params: None, + }, + ) + .await + .unwrap(); + Ok(res.contains("\"pageHeaderRenderer\"")) +} diff --git a/codegen/src/collect_chan_prefixes.rs b/codegen/src/collect_chan_prefixes.rs new file mode 100644 index 0000000..0d15bba --- /dev/null +++ b/codegen/src/collect_chan_prefixes.rs @@ -0,0 +1,75 @@ +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}; + +#[derive(Debug, Serialize, Deserialize)] +struct Entry { + prefix: String, + suffix: String, +} + +pub async fn collect_chan_prefixes() { + let cname = "kiernanchrisman"; + let json_path = path!(*DICT_DIR / "chan_prefixes.json"); + let mut res = BTreeMap::new(); + + let rp = RustyPipe::new(); + + for lang in LANGUAGES { + let playlist = rp + .query() + .lang(lang) + .playlist("PLZN_exA7d4RVmCQrG5VlWIjMOkMFZVVOc") + .await + .unwrap(); + let n = playlist.channel.unwrap().name; + let offset = n.find(cname).unwrap(); + let prefix = &n[..offset]; + let suffix = &n[(offset + cname.len())..]; + + res.insert( + lang, + Entry { + prefix: prefix.to_owned(), + suffix: suffix.to_owned(), + }, + ); + } + + 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 / "chan_prefixes.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(); + dict_entry.chan_prefix = e.prefix.trim().to_owned(); + dict_entry.chan_suffix = e.suffix.trim().to_owned(); + + for lang in &dict_entry.equivalent { + let ee = collected.get(lang).unwrap(); + if ee.prefix != e.prefix || ee.suffix != e.suffix { + panic!("equivalent lang conflict, lang: {lang}"); + } + } + } + + util::write_dict(dict); +} diff --git a/codegen/src/gen_dictionary.rs b/codegen/src/gen_dictionary.rs index 452a47b..140f519 100644 --- a/codegen/src/gen_dictionary.rs +++ b/codegen/src/gen_dictionary.rs @@ -85,6 +85,10 @@ pub(crate) struct Entry { /// /// Format: Parsed text -> Album type pub album_types: phf::Map<&'static str, AlbumType>, + /// Channel name prefix on playlist pages (e.g. `by`) + pub chan_prefix: &'static str, + /// Channel name suffix on playlist pages + pub chan_suffix: &'static str, } "#; @@ -180,8 +184,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 }},\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).unwrap(); + 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(); } 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 7c8a5f2..b2dee3e 100644 --- a/codegen/src/main.rs +++ b/codegen/src/main.rs @@ -2,6 +2,7 @@ mod abtest; mod collect_album_types; +mod collect_chan_prefixes; mod collect_large_numbers; mod collect_playlist_dates; mod collect_video_dates; @@ -29,10 +30,12 @@ enum Commands { CollectAlbumTypes, CollectVideoDurations, CollectVideoDates, + CollectChanPrefixes, ParsePlaylistDates, ParseLargeNumbers, ParseAlbumTypes, ParseVideoDurations, + ParseChanPrefixes, GenLocales, GenDict, DownloadTestfiles, @@ -65,10 +68,14 @@ async fn main() { Commands::CollectVideoDates => { collect_video_dates::collect_video_dates(cli.concurrency).await; } + Commands::CollectChanPrefixes => { + collect_chan_prefixes::collect_chan_prefixes().await; + } Commands::ParsePlaylistDates => collect_playlist_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(), + Commands::ParseChanPrefixes => collect_chan_prefixes::write_samples_to_dict(), Commands::GenLocales => { gen_locales::generate_locales().await; } diff --git a/codegen/src/model.rs b/codegen/src/model.rs index 0f445a6..c487d94 100644 --- a/codegen/src/model.rs +++ b/codegen/src/model.rs @@ -50,10 +50,10 @@ pub struct DictEntry { /// /// Format: Parsed text -> Album type pub album_types: BTreeMap, - /// Names of item types (Song, Video, Artist, Playlist) - /// - /// Format: Parsed text -> Item type - pub item_types: BTreeMap, + /// Channel name prefix on playlist pages (e.g. `by`) + pub chan_prefix: String, + /// Channel name suffix on playlist pages + pub chan_suffix: String, } /// Parsed TimeAgo string, contains amount and time unit. diff --git a/notes/AB_Tests.md b/notes/AB_Tests.md index 3330a6b..800048f 100644 --- a/notes/AB_Tests.md +++ b/notes/AB_Tests.md @@ -312,7 +312,7 @@ The data model for the video shelves did not change. - **Encountered on:** 1.05.2023 - **Impact:** 🟢 Low - **Endpoint:** browse (trending videos) -- **Status:** Frequent (99%) +- **Status:** Stabilized YouTube changed the header renderer type on the trending page to a `pageHeaderRenderer`. @@ -489,7 +489,7 @@ looks needlessly complex but contains the same parsing-relevant data as the old - **Encountered on:** 29.01.2024 - **Impact:** 🟢 Low - **Endpoint:** browse -- **Status:** Frequent (55%) +- **Status:** Stabilized YouTube introduced a new data model for channel headers, based on a `"pageHeaderRenderer"`. The new model comes with more needless complexity that needs to @@ -598,7 +598,7 @@ be accomodated. There are also no mobile/TV header images available any more. - **Encountered on:** 29.02.2024 - **Impact:** 🟢 Low - **Endpoint:** browse -- **Status:** Discontinued (0%) +- **Status:** Stabilized ![A/B test 13 screenshot](./_img/ab_13.png) @@ -610,7 +610,7 @@ cover on the left side of the playlist content. - **Encountered on:** 31.01.2024 - **Impact:** 🟢 Low - **Endpoint:** next -- **Status:** Frequent (98%) +- **Status:** Stabilized YouTube changed the data model for YouTube comments, now putting the content into a seperate framework update object @@ -754,7 +754,7 @@ seperate framework update object - **Encountered on:** 10.09.2024 - **Impact:** 🟢 Low - **Endpoint:** browse -- **Status:** Common +- **Status:** Stabilized YouTube changed the data model for the channel shorts tab @@ -787,3 +787,115 @@ YouTube changed the data model for the channel shorts tab } } ``` + +## [16] New playlist header renderer + +- **Encountered on:** 11.10.2024 +- **Impact:** 🟢 Low +- **Endpoint:** browse +- **Status:** Common (99%) + +```json +{ + "pageHeaderRenderer": { + "pageTitle": "LilyPichu", + "content": { + "pageHeaderViewModel": { + "title": { + "dynamicTextViewModel": { + "text": { + "content": "LilyPichu" + } + } + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "avatarStack": { + "avatarStackViewModel": { + "avatars": [ + { + "avatarViewModel": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/ytc/AIdro_kcjhSY2e8WlYjQABOB65Za8n3QYycNHP9zXwxjKpBfOg=s48-c-k-c0x00ffffff-no-rj", + "width": 48, + "height": 48 + } + ] + } + } + } + ], + "text": { + "content": "by Kevin Ramirez", + "commandRuns": [ + { + "startIndex": 0, + "length": 16, + "onTap": { + "innertubeCommand": { + "browseEndpoint": { + "browseId": "UCai7BcI5lrXC2vdc3ySku8A", + "canonicalBaseUrl": "/@XxthekevinramirezxX" + } + } + } + } + ] + } + } + } + } + ] + }, + { + "metadataParts": [ + { + "text": { + "content": "Playlist" + } + }, + { + "text": { + "content": "10 videos" + } + }, + { + "text": { + "content": "856 views" + } + } + ] + } + ] + } + }, + "actions": {}, + "description": { + "descriptionPreviewViewModel": { + "description": { "content": "Hello World" } + } + }, + "heroImage": { + "contentPreviewImageViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/DXuNJ267Vss/hqdefault.jpg?sqp=-oaymwEWCKgBEF5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLAHp6V96b70x4SWm9Pe6WEHnQhP6A", + "width": 168, + "height": 94 + } + ] + } + } + } + } + } + } +} +``` diff --git a/src/client/channel.rs b/src/client/channel.rs index 41930a7..cd29b87 100644 --- a/src/client/channel.rs +++ b/src/client/channel.rs @@ -470,10 +470,10 @@ fn map_channel( ) }; let subscriber_count = sub_part.and_then(|t| { - util::parse_large_numstr_or_warn::(&t.text, ctx.lang, &mut warnings) + util::parse_large_numstr_or_warn::(t.as_str(), ctx.lang, &mut warnings) }); let video_count = - vc_part.and_then(|t| util::parse_numeric_or_warn(&t.text, &mut warnings)); + vc_part.and_then(|t| util::parse_numeric_or_warn(t.as_str(), &mut warnings)); Channel { id: metadata.external_id, @@ -482,7 +482,7 @@ fn map_channel( md_rows .first() .and_then(|md| md.metadata_parts.get(1)) - .map(|txt| txt.text.to_owned()) + .map(|txt| txt.as_str().to_owned()) .filter(|txt| util::CHANNEL_HANDLE_REGEX.is_match(txt)) }), subscriber_count, @@ -710,7 +710,7 @@ mod tests { #[case::livestreams("livestreams", "UC2DjFE7Xf11URZqWBigcVOQ")] #[case::pageheader("shorts_20240129_pageheader", "UCh8gHdtzO2tXd593_bjErWg")] #[case::pageheader2("videos_20240324_pageheader2", "UC2DjFE7Xf11URZqWBigcVOQ")] - #[case::shorts2("shorts_20240910_lockup", "UCh8gHdtzO2tXd593_bjErWg")] + #[case::lockup("shorts_20240910_lockup", "UCh8gHdtzO2tXd593_bjErWg")] fn map_channel_videos(#[case] name: &str, #[case] id: &str) { let json_path = path!(*TESTFILES / "channel" / format!("channel_{name}.json")); let json_file = File::open(json_path).unwrap(); diff --git a/src/client/playlist.rs b/src/client/playlist.rs index 1ca0ab3..0a7f556 100644 --- a/src/client/playlist.rs +++ b/src/client/playlist.rs @@ -10,7 +10,7 @@ use crate::{ ChannelId, Playlist, VideoItem, }, serializer::text::{TextComponent, TextComponents}, - util::{self, timeago, TryRemove}, + util::{self, dictionary, timeago, TryRemove}, }; use super::{response, ClientType, MapRespCtx, MapResponse, MapResult, QBrowse, RustyPipeQuery}; @@ -98,46 +98,105 @@ impl MapResponse for response::Playlist { .playlist_sidebar_primary_info_renderer .description .filter(|d| !d.0.is_empty()), - primary - .playlist_sidebar_primary_info_renderer - .thumbnail_renderer - .playlist_video_thumbnail_renderer - .thumbnail, + Some( + primary + .playlist_sidebar_primary_info_renderer + .thumbnail_renderer + .playlist_video_thumbnail_renderer + .thumbnail, + ), primary .playlist_sidebar_primary_info_renderer .stats .try_swap_remove(2), ) } - None => { - let header_banner = header - .playlist_header_renderer - .playlist_header_banner - .ok_or(ExtractionError::InvalidData(Cow::Borrowed( - "no thumbnail found", - )))?; - - let mut byline = header.playlist_header_renderer.byline; - let last_update_txt = byline - .try_swap_remove(1) - .map(|b| b.playlist_byline_renderer.text); - - ( - None, - header_banner.hero_playlist_thumbnail_renderer.thumbnail, - last_update_txt, - ) - } + None => (None, None, None), }; + let (name, playlist_id, channel, n_videos_txt, description2, thumbnails2, last_update_txt2) = + match header { + response::playlist::Header::PlaylistHeaderRenderer(header_renderer) => { + let mut byline = header_renderer.byline; + let last_update_txt = byline + .try_swap_remove(1) + .map(|b| b.playlist_byline_renderer.text); + + ( + header_renderer.title, + header_renderer.playlist_id, + header_renderer + .owner_text + .and_then(|link| ChannelId::try_from(link).ok()), + header_renderer.num_videos_text, + header_renderer + .description_text + .map(|text| TextComponents(vec![TextComponent::new(text)])), + header_renderer + .playlist_header_banner + .map(|b| b.hero_playlist_thumbnail_renderer.thumbnail), + last_update_txt, + ) + } + response::playlist::Header::PageHeaderRenderer(content_renderer) => { + let h = content_renderer.content.page_header_view_model; + let rows = h.metadata.content_metadata_view_model.metadata_rows; + let n_videos_txt = rows + .get(1) + .and_then(|r| r.metadata_parts.get(1)) + .map(|p| p.as_str().to_owned()) + .ok_or(ExtractionError::InvalidData("no video count".into()))?; + let mut channel = rows + .into_iter() + .next() + .and_then(|r| r.metadata_parts.into_iter().next()) + .and_then(|p| match p { + response::MetadataPart::Text(_) => None, + response::MetadataPart::AvatarStack { + avatar_stack_view_model, + } => ChannelId::try_from(avatar_stack_view_model.text).ok(), + }); + // remove "by" prefix + if let Some(c) = channel.as_mut() { + let entry = dictionary::entry(ctx.lang); + let n = c.name.strip_prefix(entry.chan_prefix).unwrap_or(&c.name); + let n = n.strip_suffix(entry.chan_suffix).unwrap_or(n); + c.name = n.trim().to_owned(); + } + + let playlist_id = h + .actions + .flexible_actions_view_model + .actions_rows + .into_iter() + .next() + .and_then(|r| r.actions.into_iter().next()) + .and_then(|a| { + a.button_view_model + .on_tap + .innertube_command + .into_playlist_id() + }) + .ok_or(ExtractionError::InvalidData("no playlist id".into()))?; + ( + h.title.dynamic_text_view_model.text, + playlist_id, + channel, + n_videos_txt, + h.description.description_preview_view_model.description, + h.hero_image.content_preview_image_view_model.image.into(), + None, + ) + } + }; + let n_videos = if mapper.ctoken.is_some() { - util::parse_numeric(&header.playlist_header_renderer.num_videos_text) - .map_err(|_| ExtractionError::InvalidData(Cow::Borrowed("no video count")))? + util::parse_numeric(&n_videos_txt) + .map_err(|_| ExtractionError::InvalidData("no video count".into()))? } else { mapper.items.len() as u64 }; - let playlist_id = header.playlist_header_renderer.playlist_id; if playlist_id != ctx.id { return Err(ExtractionError::WrongResult(format!( "got wrong playlist id {}, expected {}", @@ -145,24 +204,19 @@ impl MapResponse for response::Playlist { ))); } - let name = header.playlist_header_renderer.title; - let description = description - .or_else(|| { - header - .playlist_header_renderer - .description_text - .map(|text| TextComponents(vec![TextComponent::new(text)])) - }) - .map(RichText::from); - let channel = header - .playlist_header_renderer - .owner_text - .and_then(|link| ChannelId::try_from(link).ok()); - - let last_update = last_update_txt.as_ref().and_then(|txt| { - timeago::parse_textual_date_or_warn(ctx.lang, txt, &mut mapper.warnings) - .map(OffsetDateTime::date) - }); + let description = description.or(description2).map(RichText::from); + let thumbnails = thumbnails + .or(thumbnails2) + .ok_or(ExtractionError::InvalidData(Cow::Borrowed( + "no thumbnail found", + )))?; + let last_update = last_update_txt + .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) + }); Ok(MapResult { c: Playlist { @@ -207,6 +261,7 @@ mod tests { #[case::long("long", "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ")] #[case::nomusic("nomusic", "PL1J-6JOckZtE_P9Xx8D3b2O6w0idhuKBe")] #[case::live("live", "UULVvqRdlKsE5Q8mf8YXbdIJLw")] + #[case::pageheader("20241011_pageheader", "PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5")] fn map_playlist_data(#[case] name: &str, #[case] id: &str) { let json_path = path!(*TESTFILES / "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 c9b0440..a379d06 100644 --- a/src/client/response/channel.rs +++ b/src/client/response/channel.rs @@ -3,7 +3,8 @@ use serde_with::{rust::deserialize_ignore_any, serde_as, DefaultOnError, VecSkip use super::{ video_item::YouTubeListRenderer, Alert, ChannelBadge, ContentRenderer, ContentsRenderer, - ContinuationActionWrap, ImageView, ResponseContext, Thumbnails, TwoColumnBrowseResults, + ContinuationActionWrap, ImageView, PageHeaderRendererContent, PhMetadataView, ResponseContext, + Thumbnails, TwoColumnBrowseResults, }; use crate::serializer::text::{AttributedText, Text, TextComponent}; @@ -76,7 +77,7 @@ pub(crate) enum Header { C4TabbedHeaderRenderer(HeaderRenderer), /// Used for special channels like YouTube Music CarouselHeaderRenderer(ContentsRenderer), - PageHeaderRenderer(ContentRenderer), + PageHeaderRenderer(ContentRenderer>), } #[serde_as] @@ -114,12 +115,6 @@ pub(crate) enum CarouselHeaderRendererItem { None, } -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub(crate) struct PageHeaderRenderer { - pub page_header_view_model: PageHeaderRendererInner, -} - #[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] @@ -225,38 +220,12 @@ pub(crate) struct PhAvatarView3 { pub avatar_view_model: ImageView, } -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub(crate) struct PhMetadataView { - pub content_metadata_view_model: PhMetadataView2, -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub(crate) struct PhMetadataView2 { - pub metadata_rows: Vec, -} - -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub(crate) struct PhMetadataRow { - pub metadata_parts: Vec, -} - #[derive(Default, Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct PhBannerView { pub image_banner_view_model: ImageView, } -#[serde_as] -#[derive(Debug, Deserialize)] -#[serde(rename_all = "camelCase")] -pub(crate) struct TextWrap { - #[serde_as(deserialize_as = "Text")] - pub text: String, -} - #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct Metadata { diff --git a/src/client/response/mod.rs b/src/client/response/mod.rs index e8b7b52..cf946e6 100644 --- a/src/client/response/mod.rs +++ b/src/client/response/mod.rs @@ -57,7 +57,8 @@ use serde::{ use serde_with::{serde_as, DisplayFromStr, VecSkipError}; use crate::error::ExtractionError; -use crate::serializer::{text::Text, MapResult, VecSkipErrorWrap}; +use crate::serializer::text::{AttributedText, Text, TextComponent}; +use crate::serializer::{MapResult, VecSkipErrorWrap}; use self::video_item::YouTubeListRenderer; @@ -464,3 +465,61 @@ where deserializer.deserialize_seq(SeqVisitor(PhantomData::)) } } + +// PAGE HEADER + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct PageHeaderRendererContent { + pub page_header_view_model: T, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct PhMetadataView { + pub content_metadata_view_model: PhMetadataView2, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct PhMetadataView2 { + pub metadata_rows: Vec, +} + +#[serde_as] +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct PhMetadataRow { + #[serde_as(as = "VecSkipError<_>")] + pub metadata_parts: Vec, +} + +#[serde_as] +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) enum MetadataPart { + Text(#[serde_as(deserialize_as = "AttributedText")] String), + #[serde(rename_all = "camelCase")] + AvatarStack { + avatar_stack_view_model: AvatarStackViewModel, + }, +} + +impl MetadataPart { + pub fn as_str(&self) -> &str { + match self { + MetadataPart::Text(s) => s, + MetadataPart::AvatarStack { + avatar_stack_view_model, + } => avatar_stack_view_model.text.as_str(), + } + } +} + +#[serde_as] +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct AvatarStackViewModel { + #[serde_as(deserialize_as = "AttributedText")] + pub text: TextComponent, +} diff --git a/src/client/response/playlist.rs b/src/client/response/playlist.rs index 7d29635..619932e 100644 --- a/src/client/response/playlist.rs +++ b/src/client/response/playlist.rs @@ -1,11 +1,12 @@ use serde::Deserialize; -use serde_with::{serde_as, DefaultOnError}; +use serde_with::{serde_as, DefaultOnError, VecSkipError}; -use crate::serializer::text::{Text, TextComponent, TextComponents}; +use crate::serializer::text::{AttributedText, Text, TextComponent, TextComponents}; use super::{ - video_item::YouTubeListRenderer, Alert, ContentsRenderer, ResponseContext, SectionList, Tab, - ThumbnailsWrap, TwoColumnBrowseResults, + url_endpoint::NavigationEndpoint, video_item::YouTubeListRenderer, Alert, ContentRenderer, + ContentsRenderer, ImageView, PageHeaderRendererContent, PhMetadataView, ResponseContext, + SectionList, Tab, ThumbnailsWrap, TwoColumnBrowseResults, }; #[serde_as] @@ -35,8 +36,9 @@ pub(crate) struct PlaylistVideoListRenderer { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub(crate) struct Header { - pub playlist_header_renderer: HeaderRenderer, +pub(crate) enum Header { + PlaylistHeaderRenderer(HeaderRenderer), + PageHeaderRenderer(ContentRenderer>), } #[serde_as] @@ -111,3 +113,85 @@ pub(crate) struct PlaylistThumbnailRenderer { #[serde(alias = "playlistCustomThumbnailRenderer")] pub playlist_video_thumbnail_renderer: ThumbnailsWrap, } + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct PageHeaderRendererInner { + pub title: PhTitleView, + pub metadata: PhMetadataView, + pub actions: PhActions, + pub description: PhDescription, + pub hero_image: PhHeroImage, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct PhDescription { + pub description_preview_view_model: PhDescription2, +} + +#[serde_as] +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct PhDescription2 { + #[serde_as(as = "Option")] + pub description: Option, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct PhHeroImage { + pub content_preview_image_view_model: ImageView, +} + +#[derive(Default, Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct PhTitleView { + pub dynamic_text_view_model: PhTitleInner, +} + +#[serde_as] +#[derive(Default, Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct PhTitleInner { + #[serde_as(as = "AttributedText")] + pub text: String, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct PhActions { + pub flexible_actions_view_model: PhActions2, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct PhActions2 { + pub actions_rows: Vec, +} + +#[serde_as] +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct ActionsRow { + #[serde_as(as = "VecSkipError<_>")] + pub actions: Vec, +} + +#[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: ActionOnTap, +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub(crate) struct ActionOnTap { + pub innertube_command: NavigationEndpoint, +} diff --git a/src/client/response/url_endpoint.rs b/src/client/response/url_endpoint.rs index e94e06c..1eb5786 100644 --- a/src/client/response/url_endpoint.rs +++ b/src/client/response/url_endpoint.rs @@ -157,7 +157,7 @@ pub(crate) struct WatchEndpointConfig { #[derive(Default, Debug, Clone, Copy, Deserialize, PartialEq, Eq)] pub(crate) enum MusicVideoType { #[default] - #[serde(rename = "MUSIC_VIDEO_TYPE_OMV")] + #[serde(rename = "MUSIC_VIDEO_TYPE_OMV", alias = "MUSIC_VIDEO_TYPE_UGC")] Video, #[serde(rename = "MUSIC_VIDEO_TYPE_ATV")] Track, @@ -333,4 +333,26 @@ impl NavigationEndpoint { None } } + + pub(crate) fn into_playlist_id(self) -> Option { + match self { + NavigationEndpoint::Watch { watch_endpoint } => watch_endpoint.playlist_id, + NavigationEndpoint::Browse { + browse_endpoint, + command_metadata, + } => Some(browse_endpoint.browse_id).filter(|_| { + browse_endpoint + .browse_endpoint_context_supported_configs + .map(|c| c.browse_endpoint_context_music_config.page_type == PageType::Playlist) + .unwrap_or_default() + || command_metadata + .map(|c| c.web_command_metadata.web_page_type == PageType::Playlist) + .unwrap_or_default() + }), + NavigationEndpoint::Url { .. } => None, + NavigationEndpoint::WatchPlaylist { + watch_playlist_endpoint, + } => Some(watch_playlist_endpoint.playlist_id), + } + } } 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 new file mode 100644 index 0000000..99d94cf --- /dev/null +++ b/src/client/snapshots/rustypipe__client__playlist__tests__map_playlist_data_20241011_pageheader.snap @@ -0,0 +1,456 @@ +--- +source: src/client/playlist.rs +expression: map_res.c +--- +Playlist( + id: "PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5", + name: "LilyPichu", + videos: Paginator( + count: Some(10), + items: [ + VideoItem( + id: "DXuNJ267Vss", + name: "dreamy night ♫", + duration: Some(246), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/DXuNJ267Vss/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBQu39qIU8WKbC5KeXQ_a_Kmeq-Mw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/DXuNJ267Vss/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAFnmg4-mRI64nmz4R4GUGo720Jzw", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/DXuNJ267Vss/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLClxuSTfYdqfosJClOxA2osI934sw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/DXuNJ267Vss/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCVR7qAVJNM3flwQ_ZYfPS3iujF1w", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCde_xnXu2lPBmRgAp_nq29A", + name: "comfi beats", + avatar: [], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 years ago"), + view_count: Some(15000000), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "eutMcjJCVqc", + name: "these days it\'s hard to find the words ♫", + duration: Some(168), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/eutMcjJCVqc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDc3Ycpb5YaNFeHu8Nf5smL25Z07A", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/eutMcjJCVqc/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAScc3jmGa81fZ-rdds1pLhsyeHcA", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/eutMcjJCVqc/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCukgu31Ut9lp2E4t5BWlzit6JruA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/eutMcjJCVqc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBjeA0RixBcCP2w53Ke2H43HJ9j9w", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCde_xnXu2lPBmRgAp_nq29A", + name: "comfi beats", + avatar: [], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 years ago"), + view_count: Some(1200000), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "B5eM3Q3wj0M", + name: "a vision ♫", + duration: Some(169), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/B5eM3Q3wj0M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBK3FpJmFmAlA7ALGjJDXrWC-jtfw", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/B5eM3Q3wj0M/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCwzmil8fgPbrAd-ef4T3vzIzmlKg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/B5eM3Q3wj0M/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBDU2ur1UisffVmAXAG8lXbT49x5Q", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/B5eM3Q3wj0M/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBy46YLhKfVL6Wj71RWd1Ru9C3Z0w", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCde_xnXu2lPBmRgAp_nq29A", + name: "comfi beats", + avatar: [], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 years ago"), + view_count: Some(843000), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "MJedvm2TE8o", + name: "a stormy night ♫", + duration: Some(202), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/MJedvm2TE8o/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBtulKIBStuPyBYbBqlE5B4-2xBaQ", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/MJedvm2TE8o/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAEgWtwIZHLv5EKCZVIVibIkZLHlg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/MJedvm2TE8o/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBSlJy1g4t2np6JK4hBst8b6PA2ew", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/MJedvm2TE8o/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDkDGK867GRxs9b42P7hJkK6B2pRQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCde_xnXu2lPBmRgAp_nq29A", + name: "comfi beats", + avatar: [], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 years ago"), + view_count: Some(1300000), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "HHKmS7c5ai4", + name: "unknown waters ♫", + duration: Some(116), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/HHKmS7c5ai4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLArqrLnSpTLA-1qj-yF6AmfrHOsTA", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/HHKmS7c5ai4/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCOh-S60OM2Hhswihr3Glb1cM1AAg", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/HHKmS7c5ai4/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBEyk0qxSToWD_g9L3bTrtrsJjhsw", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/HHKmS7c5ai4/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDG12RCxjnm4JHG9T8Ow_thj_ecxA", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCde_xnXu2lPBmRgAp_nq29A", + name: "comfi beats", + avatar: [], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 years ago"), + view_count: Some(707000), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "zF32eh6PWPk", + name: "wilting memories ♫", + duration: Some(108), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/zF32eh6PWPk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDr2_1EoZ50kzSgDKwJQaY6Pv3WJA", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/zF32eh6PWPk/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC44h27mvgtl5QBA_ed1o4kXPieBA", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/zF32eh6PWPk/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDm1iJNfB4KbVMoqPMKrWNHIBaBgg", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/zF32eh6PWPk/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDCJEQasRwYLo-iK___zZ767PrCWQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCde_xnXu2lPBmRgAp_nq29A", + name: "comfi beats", + avatar: [], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 years ago"), + view_count: Some(797000), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "hbz-8K-pxpY", + name: "sunshine & butterflies ♫", + duration: Some(185), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/hbz-8K-pxpY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDMheaVKp1qI6AOcwrLl2K_U7EnAA", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/hbz-8K-pxpY/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDSWaobRJuSVZFDf9aj1kHVx6WuXw", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/hbz-8K-pxpY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDi33fhhNwD8Rtf56eIrPZV0Wh8ZQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/hbz-8K-pxpY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBt77gqVq8oLIUs7njZkvP2EvmTAw", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCde_xnXu2lPBmRgAp_nq29A", + name: "comfi beats", + avatar: [], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 years ago"), + view_count: Some(2500000), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "A2zepLiuEJU", + name: "foreverland ♫", + duration: Some(146), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/A2zepLiuEJU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAUpy0PRzet_xrPsGPj2Mw_ik5o0A", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/A2zepLiuEJU/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCgYyZQkAGdE25F-zZ6AAHY5GuNjQ", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/A2zepLiuEJU/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBWFlbG5J4x8J3pxGC2k_P2O7lKmA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/A2zepLiuEJU/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD6N47yuLYe5m50AwYPX9Cos4RSVA", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCde_xnXu2lPBmRgAp_nq29A", + name: "comfi beats", + avatar: [], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 years ago"), + view_count: Some(983000), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "5yaY7aG1Lpo", + name: "dreamy nightmares ♫", + duration: Some(197), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/5yaY7aG1Lpo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB-5OLhj51LzsZswqPsGVPOKfkhFA", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/5yaY7aG1Lpo/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDISujKyqhzBYW3SdgC5QTxv7i1KQ", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/5yaY7aG1Lpo/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDBkkukABZ_d3rsEzewfiHimbM2PA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/5yaY7aG1Lpo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCnqJbFB4UvqIKUQq5xvVH6RQBm7A", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCde_xnXu2lPBmRgAp_nq29A", + name: "comfi beats", + avatar: [], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 years ago"), + view_count: Some(1100000), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + ), + VideoItem( + id: "WwXJrMhbi-s", + name: "comfy vibes ♫", + duration: Some(194), + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/WwXJrMhbi-s/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLByFfew80T9RbyU8-EiLyb6HRU4Ww", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/WwXJrMhbi-s/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCcjh19GL-pWHpkpRD1ioCcyoZcrA", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/WwXJrMhbi-s/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCa7u5cp-4vH6mDG8HUOKyNTETgtQ", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/WwXJrMhbi-s/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB-vP4BDBiu9PfU-F6DQ75iUsL4xQ", + width: 336, + height: 188, + ), + ], + channel: Some(ChannelTag( + id: "UCde_xnXu2lPBmRgAp_nq29A", + name: "comfi beats", + avatar: [], + verification: None, + subscriber_count: None, + )), + publish_date: "[date]", + publish_date_txt: Some("4 years ago"), + view_count: Some(1800000), + is_live: false, + is_short: false, + is_upcoming: false, + short_description: None, + ), + ], + ctoken: None, + endpoint: browse, + ), + video_count: 10, + thumbnail: [ + Thumbnail( + url: "https://i.ytimg.com/vi/DXuNJ267Vss/hqdefault.jpg?sqp=-oaymwEWCKgBEF5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLAHp6V96b70x4SWm9Pe6WEHnQhP6A", + width: 168, + height: 94, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/DXuNJ267Vss/hqdefault.jpg?sqp=-oaymwEWCMQBEG5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLDPCehYWYW8HhToloH9MJWD_wKq1w", + width: 196, + height: 110, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/DXuNJ267Vss/hqdefault.jpg?sqp=-oaymwEXCPYBEIoBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLA7aSRV3Ymv8oEFYT7TUpwSZLPbCA", + width: 246, + height: 138, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/DXuNJ267Vss/hqdefault.jpg?sqp=-oaymwEXCNACELwBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAYMzfwTTZbTbHcDUK9kIa450u_7g", + width: 336, + height: 188, + ), + ], + description: None, + channel: Some(ChannelId( + id: "UCai7BcI5lrXC2vdc3ySku8A", + name: "Kevin Ramirez", + )), + last_update: "[date]", + last_update_txt: Some("Last updated on Oct 13, 2020"), + visitor_data: Some("CgtQNE9Wb3N1MU1HSSic8Ka4BjIKCgJERRIEEgAgMA%3D%3D"), +) diff --git a/src/util/dictionary.rs b/src/util/dictionary.rs index f2fbe2a..22fab6a 100644 --- a/src/util/dictionary.rs +++ b/src/util/dictionary.rs @@ -50,6 +50,10 @@ pub(crate) struct Entry { /// /// Format: Parsed text -> Album type pub album_types: phf::Map<&'static str, AlbumType>, + /// Channel name prefix on playlist pages (e.g. `by`) + pub chan_prefix: &'static str, + /// Channel name suffix on playlist pages + pub chan_suffix: &'static str, } #[rustfmt::skip] @@ -151,6 +155,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("enkelsnit", AlbumType::Single), ], }, + chan_prefix: "deur", + chan_suffix: "", }, Language::Am => Entry { timeago_tokens: ::phf::Map { @@ -252,6 +258,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("አልበም", AlbumType::Album), ], }, + chan_prefix: "በ", + chan_suffix: "", }, Language::Ar => Entry { timeago_tokens: ::phf::Map { @@ -355,6 +363,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("الكتب المسموعة", AlbumType::Audiobook), ], }, + chan_prefix: "بواسطة", + chan_suffix: "", }, Language::As => Entry { timeago_tokens: ::phf::Map { @@ -438,6 +448,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ep", AlbumType::Ep), ], }, + chan_prefix: "", + chan_suffix: "ৰ দ\u{9cd}ব\u{9be}ৰ\u{9be}", }, Language::Az => Entry { timeago_tokens: ::phf::Map { @@ -524,6 +536,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ep", AlbumType::Ep), ], }, + chan_prefix: "by", + chan_suffix: "", }, Language::Be => Entry { timeago_tokens: ::phf::Map { @@ -640,6 +654,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("міні-альбом", AlbumType::Ep), ], }, + chan_prefix: "ад", + chan_suffix: "", }, Language::Bg => Entry { timeago_tokens: ::phf::Map { @@ -725,6 +741,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("предаване", AlbumType::Show), ], }, + chan_prefix: "от", + chan_suffix: "", }, Language::Bn => Entry { timeago_tokens: ::phf::Map { @@ -816,6 +834,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("অ\u{9cd}য\u{9be}লব\u{9be}ম", AlbumType::Album), ], }, + chan_prefix: ",", + chan_suffix: "দ\u{9cd}ব\u{9be}র\u{9be}", }, Language::Bs => Entry { timeago_tokens: ::phf::Map { @@ -926,6 +946,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ep", AlbumType::Ep), ], }, + chan_prefix: "od", + chan_suffix: "", }, Language::Ca => Entry { timeago_tokens: ::phf::Map { @@ -1023,6 +1045,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("audiollibre", AlbumType::Audiobook), ], }, + chan_prefix: "de:", + chan_suffix: "", }, Language::Cs => Entry { timeago_tokens: ::phf::Map { @@ -1122,6 +1146,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("album", AlbumType::Album), ], }, + chan_prefix: "autor:", + chan_suffix: "", }, Language::Da => Entry { timeago_tokens: ::phf::Map { @@ -1218,6 +1244,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ep", AlbumType::Ep), ], }, + chan_prefix: "af", + chan_suffix: "", }, Language::De => Entry { timeago_tokens: ::phf::Map { @@ -1299,6 +1327,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("hörspiel", AlbumType::Show), ], }, + chan_prefix: "von", + chan_suffix: "", }, Language::El => Entry { timeago_tokens: ::phf::Map { @@ -1399,6 +1429,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("άλμπουμ", AlbumType::Album), ], }, + chan_prefix: "από το χρήστη", + chan_suffix: "", }, Language::En | Language::EnGb | Language::EnIn => Entry { timeago_tokens: ::phf::Map { @@ -1511,6 +1543,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("audiobook", AlbumType::Audiobook), ], }, + chan_prefix: "by", + chan_suffix: "", }, Language::Es => Entry { timeago_tokens: ::phf::Map { @@ -1608,6 +1642,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ep", AlbumType::Ep), ], }, + chan_prefix: "de", + chan_suffix: "", }, Language::EsUs | Language::Es419 => Entry { timeago_tokens: ::phf::Map { @@ -1706,6 +1742,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("álbum", AlbumType::Album), ], }, + chan_prefix: "de", + chan_suffix: "", }, Language::Et => Entry { timeago_tokens: ::phf::Map { @@ -1806,6 +1844,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("album", AlbumType::Album), ], }, + chan_prefix: "kanalilt", + chan_suffix: "", }, Language::Eu => Entry { timeago_tokens: ::phf::Map { @@ -1892,6 +1932,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("albuma", AlbumType::Album), ], }, + chan_prefix: "egilea:", + chan_suffix: "", }, Language::Fa => Entry { timeago_tokens: ::phf::Map { @@ -1978,6 +2020,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("کتاب صوتی", AlbumType::Audiobook), ], }, + chan_prefix: "توسط", + chan_suffix: "", }, Language::Fi => Entry { timeago_tokens: ::phf::Map { @@ -2066,6 +2110,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ep", AlbumType::Ep), ], }, + chan_prefix: "tekijä:", + chan_suffix: "", }, Language::Fil => Entry { timeago_tokens: ::phf::Map { @@ -2152,6 +2198,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ep", AlbumType::Ep), ], }, + chan_prefix: "ni/ng", + chan_suffix: "", }, Language::Fr | Language::FrCa => Entry { timeago_tokens: ::phf::Map { @@ -2256,6 +2304,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("single", AlbumType::Single), ], }, + chan_prefix: "de", + chan_suffix: "", }, Language::Gl => Entry { timeago_tokens: ::phf::Map { @@ -2352,6 +2402,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("audiolibro", AlbumType::Audiobook), ], }, + chan_prefix: "de", + chan_suffix: "", }, Language::Gu => Entry { timeago_tokens: ::phf::Map { @@ -2437,6 +2489,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("સિ\u{a82}ગલ", AlbumType::Single), ], }, + chan_prefix: "", + chan_suffix: "દ\u{acd}વારા", }, Language::Hi => Entry { timeago_tokens: ::phf::Map { @@ -2526,6 +2580,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("एल\u{94d}\u{200d}बम", AlbumType::Album), ], }, + chan_prefix: "", + chan_suffix: "क\u{947} ज\u{93c}रिए", }, Language::Hr => Entry { timeago_tokens: ::phf::Map { @@ -2635,6 +2691,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("singl", AlbumType::Single), ], }, + chan_prefix: "omogućio kanal", + chan_suffix: "", }, Language::Hu => Entry { timeago_tokens: ::phf::Map { @@ -2734,6 +2792,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("műsor", AlbumType::Show), ], }, + chan_prefix: "", + chan_suffix: "csatornától", }, Language::Hy => Entry { timeago_tokens: ::phf::Map { @@ -2826,6 +2886,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ալբոմ", AlbumType::Album), ], }, + chan_prefix: "հեղինակ՝", + chan_suffix: "", }, Language::Id => Entry { timeago_tokens: ::phf::Map { @@ -2918,6 +2980,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("acara", AlbumType::Show), ], }, + chan_prefix: "oleh", + chan_suffix: "", }, Language::Is => Entry { timeago_tokens: ::phf::Map { @@ -3023,6 +3087,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ep", AlbumType::Ep), ], }, + chan_prefix: "eftir", + chan_suffix: "", }, Language::It => Entry { timeago_tokens: ::phf::Map { @@ -3125,6 +3191,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("programma", AlbumType::Show), ], }, + chan_prefix: "di", + chan_suffix: "", }, Language::Iw => Entry { timeago_tokens: ::phf::Map { @@ -3233,6 +3301,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("סינגל", AlbumType::Single), ], }, + chan_prefix: "מאת", + chan_suffix: "", }, Language::Ja => Entry { timeago_tokens: ::phf::Map { @@ -3300,6 +3370,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("表示", AlbumType::Show), ], }, + chan_prefix: "作成者:", + chan_suffix: "", }, Language::Ka => Entry { timeago_tokens: ::phf::Map { @@ -3392,6 +3464,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("სინგლი", AlbumType::Single), ], }, + chan_prefix: "", + chan_suffix: "-ის მიერ", }, Language::Kk => Entry { timeago_tokens: ::phf::Map { @@ -3485,6 +3559,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("альбом", AlbumType::Album), ], }, + chan_prefix: "қосқан", + chan_suffix: "", }, Language::Km => Entry { timeago_tokens: ::phf::Map { @@ -3570,6 +3646,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ចម\u{17d2}រៀងទោល", AlbumType::Single), ], }, + chan_prefix: "ដោយ", + chan_suffix: "", }, Language::Kn => Entry { timeago_tokens: ::phf::Map { @@ -3671,6 +3749,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ಆಲ\u{ccd}ಬಮ\u{ccd}", AlbumType::Album), ], }, + chan_prefix: "", + chan_suffix: "ಚಾನಲ\u{ccd}\u{200c}ನ\u{cbf}ಂದ", }, Language::Ko => Entry { timeago_tokens: ::phf::Map { @@ -3741,6 +3821,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("싱글", AlbumType::Single), ], }, + chan_prefix: "게시자:", + chan_suffix: "", }, Language::Ky => Entry { timeago_tokens: ::phf::Map { @@ -3829,6 +3911,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("чакан альбом", AlbumType::Ep), ], }, + chan_prefix: "", + chan_suffix: "каналы аркылуу", }, Language::Lo => Entry { timeago_tokens: ::phf::Map { @@ -3923,6 +4007,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ສະແດງ", AlbumType::Show), ], }, + chan_prefix: "ໂດຍ", + chan_suffix: "", }, Language::Lt => Entry { timeago_tokens: ::phf::Map { @@ -4026,6 +4112,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("garsinė knyga", AlbumType::Audiobook), ], }, + chan_prefix: "pridėjo", + chan_suffix: "", }, Language::Lv => Entry { timeago_tokens: ::phf::Map { @@ -4132,6 +4220,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("pārraide", AlbumType::Show), ], }, + chan_prefix: "autors:", + chan_suffix: "", }, Language::Mk => Entry { timeago_tokens: ::phf::Map { @@ -4215,6 +4305,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("серија", AlbumType::Show), ], }, + chan_prefix: "од", + chan_suffix: "", }, Language::Ml => Entry { timeago_tokens: ::phf::Map { @@ -4302,6 +4394,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ആല\u{d4d}\u{200d}\u{200c}ബം", AlbumType::Album), ], }, + chan_prefix: "", + chan_suffix: "മ\u{d41}ഖേന", }, Language::Mn => Entry { timeago_tokens: ::phf::Map { @@ -4379,6 +4473,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("цомог", AlbumType::Album), ], }, + chan_prefix: "сувгийн нэр:", + chan_suffix: "", }, Language::Mr => Entry { timeago_tokens: ::phf::Map { @@ -4481,6 +4577,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("शो", AlbumType::Show), ], }, + chan_prefix: "", + chan_suffix: "द\u{94d}वार\u{947}", }, Language::Ms => Entry { timeago_tokens: ::phf::Map { @@ -4570,6 +4668,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ep", AlbumType::Ep), ], }, + chan_prefix: "oleh", + chan_suffix: "", }, Language::My => Entry { timeago_tokens: ::phf::Map { @@ -4663,6 +4763,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("အော\u{103a}ဒ\u{102e}ယ\u{102d}\u{102f}စာအ\u{102f}ပ\u{103a}", AlbumType::Audiobook), ], }, + chan_prefix: "", + chan_suffix: "မ\u{103e}", }, Language::Ne => Entry { timeago_tokens: ::phf::Map { @@ -4750,6 +4852,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("अडियोब\u{941}क", AlbumType::Audiobook), ], }, + chan_prefix: "", + chan_suffix: "द\u{94d}वारा", }, Language::Nl => Entry { timeago_tokens: ::phf::Map { @@ -4843,6 +4947,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ep", AlbumType::Ep), ], }, + chan_prefix: "door", + chan_suffix: "", }, Language::No => Entry { timeago_tokens: ::phf::Map { @@ -4946,6 +5052,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ep", AlbumType::Ep), ], }, + chan_prefix: "av", + chan_suffix: "", }, Language::Or => Entry { timeago_tokens: ::phf::Map { @@ -5046,6 +5154,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ep", AlbumType::Ep), ], }, + chan_prefix: "", + chan_suffix: "ଦ\u{b4d}ଵ\u{b3e}ର\u{b3e}", }, Language::Pa => Entry { timeago_tokens: ::phf::Map { @@ -5135,6 +5245,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ਸ\u{a3c}\u{a4b}ਅ", AlbumType::Show), ], }, + chan_prefix: "", + chan_suffix: "ਵ\u{a71}ਲ\u{a4b}\u{a02}", }, Language::Pl => Entry { timeago_tokens: ::phf::Map { @@ -5250,6 +5362,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("audiobook", AlbumType::Audiobook), ], }, + chan_prefix: "autor:", + chan_suffix: "", }, Language::Pt => Entry { timeago_tokens: ::phf::Map { @@ -5349,6 +5463,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("audiolivro", AlbumType::Audiobook), ], }, + chan_prefix: "por", + chan_suffix: "", }, Language::PtPt => Entry { timeago_tokens: ::phf::Map { @@ -5430,6 +5546,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("audiolivro", AlbumType::Audiobook), ], }, + chan_prefix: "de", + chan_suffix: "", }, Language::Ro => Entry { timeago_tokens: ::phf::Map { @@ -5529,6 +5647,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("album", AlbumType::Album), ], }, + chan_prefix: "de", + chan_suffix: "", }, Language::Ru => Entry { timeago_tokens: ::phf::Map { @@ -5642,6 +5762,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("аудиошоу", AlbumType::Show), ], }, + chan_prefix: "", + chan_suffix: "", }, Language::Si => Entry { timeago_tokens: ::phf::Map { @@ -5729,6 +5851,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ඇල\u{dca}බමය", AlbumType::Album), ], }, + chan_prefix: "", + chan_suffix: "ව\u{dd2}ස\u{dd2}න\u{dca}", }, Language::Sk => Entry { timeago_tokens: ::phf::Map { @@ -5828,6 +5952,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("audiokniha", AlbumType::Audiobook), ], }, + chan_prefix: "Autori:", + chan_suffix: "", }, Language::Sl => Entry { timeago_tokens: ::phf::Map { @@ -5948,6 +6074,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ep", AlbumType::Ep), ], }, + chan_prefix: "kanal", + chan_suffix: "", }, Language::Sq => Entry { timeago_tokens: ::phf::Map { @@ -6039,6 +6167,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("single", AlbumType::Single), ], }, + chan_prefix: "nga", + chan_suffix: "", }, Language::Sr => Entry { timeago_tokens: ::phf::Map { @@ -6127,6 +6257,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("серија", AlbumType::Show), ], }, + chan_prefix: "са канала", + chan_suffix: "", }, Language::SrLatn => Entry { timeago_tokens: ::phf::Map { @@ -6215,6 +6347,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("serija", AlbumType::Show), ], }, + chan_prefix: "sa kanala", + chan_suffix: "", }, Language::Sv => Entry { timeago_tokens: ::phf::Map { @@ -6313,6 +6447,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("singel", AlbumType::Single), ], }, + chan_prefix: "från", + chan_suffix: "", }, Language::Sw => Entry { timeago_tokens: ::phf::Map { @@ -6400,6 +6536,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("kipindi", AlbumType::Show), ], }, + chan_prefix: "kutoka", + chan_suffix: "", }, Language::Ta => Entry { timeago_tokens: ::phf::Map { @@ -6503,6 +6641,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("ஆடியோ புத\u{bcd}தகம\u{bcd}", AlbumType::Audiobook), ], }, + chan_prefix: "வழங\u{bcd}கியவர\u{bcd}:", + chan_suffix: "", }, Language::Te => Entry { timeago_tokens: ::phf::Map { @@ -6603,6 +6743,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("స\u{c3f}ంగ\u{c3f}ల\u{c4d}", AlbumType::Single), ], }, + chan_prefix: "", + chan_suffix: "ఛ\u{c3e}న\u{c46}ల\u{c4d} ద\u{c4d}వ\u{c3e}ర\u{c3e}", }, Language::Th => Entry { timeago_tokens: ::phf::Map { @@ -6704,6 +6846,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("อ\u{e31}ลบ\u{e31}\u{e49}ม", AlbumType::Album), ], }, + chan_prefix: "โดย", + chan_suffix: "", }, Language::Tr => Entry { timeago_tokens: ::phf::Map { @@ -6794,6 +6938,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("albüm", AlbumType::Album), ], }, + chan_prefix: "", + chan_suffix: "tarafından", }, Language::Uk => Entry { timeago_tokens: ::phf::Map { @@ -6911,6 +7057,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("аудіодрама", AlbumType::Show), ], }, + chan_prefix: "власник:", + chan_suffix: "", }, Language::Ur => Entry { timeago_tokens: ::phf::Map { @@ -7006,6 +7154,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("شو", AlbumType::Show), ], }, + chan_prefix: "منجانب", + chan_suffix: "", }, Language::Uz => Entry { timeago_tokens: ::phf::Map { @@ -7091,6 +7241,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("audiokitob", AlbumType::Audiobook), ], }, + chan_prefix: "muallif:", + chan_suffix: "", }, Language::Vi => Entry { timeago_tokens: ::phf::Map { @@ -7159,6 +7311,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("đĩa nhạc", AlbumType::Album), ], }, + chan_prefix: "của", + chan_suffix: "", }, Language::ZhCn => Entry { timeago_tokens: ::phf::Map { @@ -7228,6 +7382,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("单曲", AlbumType::Single), ], }, + chan_prefix: "创建者:", + chan_suffix: "", }, Language::ZhHk => Entry { timeago_tokens: ::phf::Map { @@ -7296,6 +7452,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("單曲", AlbumType::Single), ], }, + chan_prefix: "來自", + chan_suffix: "", }, Language::ZhTw => Entry { timeago_tokens: ::phf::Map { @@ -7363,6 +7521,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("單曲", AlbumType::Single), ], }, + chan_prefix: "由", + chan_suffix: "建立", }, Language::Zu => Entry { timeago_tokens: ::phf::Map { @@ -7467,6 +7627,8 @@ pub(crate) fn entry(lang: Language) -> Entry { ("i-ep", AlbumType::Ep), ], }, + chan_prefix: "ka-", + chan_suffix: "", }, } } diff --git a/testfiles/dict/chan_prefixes.json b/testfiles/dict/chan_prefixes.json new file mode 100644 index 0000000..9a15b68 --- /dev/null +++ b/testfiles/dict/chan_prefixes.json @@ -0,0 +1,85 @@ +{ + "af": { "prefix": "deur ", "suffix": "" }, + "am": { "prefix": "በ", "suffix": "" }, + "ar": { "prefix": "بواسطة", "suffix": "" }, + "as": { "prefix": "", "suffix": "ৰ দ্বাৰা" }, + "az": { "prefix": "by ", "suffix": "" }, + "be": { "prefix": "ад ", "suffix": "" }, + "bg": { "prefix": "от ", "suffix": "" }, + "bn": { "prefix": ", ", "suffix": " দ্বারা" }, + "bs": { "prefix": "od ", "suffix": "" }, + "ca": { "prefix": "de: ", "suffix": "" }, + "cs": { "prefix": "autor: ", "suffix": "" }, + "da": { "prefix": "af ", "suffix": "" }, + "de": { "prefix": "von ", "suffix": "" }, + "el": { "prefix": "από το χρήστη ", "suffix": "" }, + "en": { "prefix": "by ", "suffix": "" }, + "en-GB": { "prefix": "by ", "suffix": "" }, + "en-IN": { "prefix": "by ", "suffix": "" }, + "es": { "prefix": "de ", "suffix": "" }, + "es-419": { "prefix": "de ", "suffix": "" }, + "es-US": { "prefix": "de ", "suffix": "" }, + "et": { "prefix": "kanalilt ", "suffix": "" }, + "eu": { "prefix": "egilea: ", "suffix": "" }, + "fa": { "prefix": "توسط ", "suffix": "" }, + "fi": { "prefix": "tekijä: ", "suffix": "" }, + "fil": { "prefix": "ni/ng ", "suffix": "" }, + "fr": { "prefix": "de ", "suffix": "" }, + "fr-CA": { "prefix": "de ", "suffix": "" }, + "gl": { "prefix": "de ", "suffix": "" }, + "gu": { "prefix": "", "suffix": " દ્વારા" }, + "hi": { "prefix": "", "suffix": " के ज़रिए" }, + "hr": { "prefix": "omogućio kanal ", "suffix": "" }, + "hu": { "prefix": "", "suffix": " csatornától" }, + "hy": { "prefix": "հեղինակ՝ ", "suffix": "" }, + "id": { "prefix": "oleh ", "suffix": "" }, + "is": { "prefix": "eftir ", "suffix": "" }, + "it": { "prefix": "di ", "suffix": "" }, + "iw": { "prefix": "מאת ", "suffix": "" }, + "ja": { "prefix": "作成者: ", "suffix": "" }, + "ka": { "prefix": "", "suffix": "-ის მიერ" }, + "kk": { "prefix": "қосқан ", "suffix": "" }, + "km": { "prefix": "ដោយ ", "suffix": "" }, + "kn": { "prefix": "", "suffix": " ಚಾನಲ್‌ನಿಂದ" }, + "ko": { "prefix": "게시자: ", "suffix": "" }, + "ky": { "prefix": "", "suffix": " каналы аркылуу" }, + "lo": { "prefix": "ໂດຍ ", "suffix": "" }, + "lt": { "prefix": "pridėjo ", "suffix": "" }, + "lv": { "prefix": "autors: ", "suffix": "" }, + "mk": { "prefix": "од ", "suffix": "" }, + "ml": { "prefix": "", "suffix": " മുഖേന" }, + "mn": { "prefix": "сувгийн нэр: ", "suffix": "" }, + "mr": { "prefix": "", "suffix": "द्वारे" }, + "ms": { "prefix": "oleh ", "suffix": "" }, + "my": { "prefix": "", "suffix": " မှ" }, + "ne": { "prefix": "", "suffix": " द्वारा" }, + "nl": { "prefix": "door ", "suffix": "" }, + "no": { "prefix": "av ", "suffix": "" }, + "or": { "prefix": "", "suffix": " ଦ୍ଵାରା" }, + "pa": { "prefix": "", "suffix": " ਵੱਲੋਂ" }, + "pl": { "prefix": "autor: ", "suffix": "" }, + "pt": { "prefix": "por ", "suffix": "" }, + "pt-PT": { "prefix": "de ", "suffix": "" }, + "ro": { "prefix": "de ", "suffix": "" }, + "ru": { "prefix": "", "suffix": "" }, + "si": { "prefix": "", "suffix": " විසින්" }, + "sk": { "prefix": "Autori: ", "suffix": "" }, + "sl": { "prefix": "kanal ", "suffix": "" }, + "sq": { "prefix": "nga ", "suffix": "" }, + "sr": { "prefix": "са канала ", "suffix": "" }, + "sr-Latn": { "prefix": "sa kanala ", "suffix": "" }, + "sv": { "prefix": "från ", "suffix": "" }, + "sw": { "prefix": "kutoka ", "suffix": "" }, + "ta": { "prefix": "வழங்கியவர்: ", "suffix": "" }, + "te": { "prefix": "", "suffix": " ఛానెల్ ద్వారా" }, + "th": { "prefix": "โดย ", "suffix": "" }, + "tr": { "prefix": "", "suffix": " tarafından" }, + "uk": { "prefix": "власник: ", "suffix": "" }, + "ur": { "prefix": "منجانب ", "suffix": "" }, + "uz": { "prefix": "muallif: ", "suffix": "" }, + "vi": { "prefix": "của ", "suffix": "" }, + "zh-CN": { "prefix": "创建者:", "suffix": "" }, + "zh-HK": { "prefix": "來自", "suffix": "" }, + "zh-TW": { "prefix": "由", "suffix": "建立" }, + "zu": { "prefix": "ka-", "suffix": "" } +} diff --git a/testfiles/dict/dictionary.json b/testfiles/dict/dictionary.json index 0a7032e..d4c47cf 100644 --- a/testfiles/dict/dictionary.json +++ b/testfiles/dict/dictionary.json @@ -55,7 +55,9 @@ "ep": "Ep", "drama": "Show", "enkelsnit": "Single" - } + }, + "chan_prefix": "deur", + "chan_suffix": "" }, "am": { "equivalent": [], @@ -117,7 +119,9 @@ "የተራዘመ አልበም": "Ep", "ትዕይንት": "Show", "ነጠላ": "Single" - } + }, + "chan_prefix": "በ", + "chan_suffix": "" }, "ar": { "equivalent": [], @@ -180,7 +184,9 @@ "ألبوم قصير": "Ep", "عرض": "Show", "أغنية منفردة": "Single" - } + }, + "chan_prefix": "بواسطة", + "chan_suffix": "" }, "as": { "equivalent": [], @@ -226,7 +232,9 @@ "ep": "Ep", "শ্ব’": "Show", "একক": "Single" - } + }, + "chan_prefix": "", + "chan_suffix": "ৰ দ্বাৰা" }, "az": { "equivalent": [], @@ -275,7 +283,9 @@ "ep": "Ep", "şou": "Show", "tək": "Single" - } + }, + "chan_prefix": "by", + "chan_suffix": "" }, "be": { "equivalent": [], @@ -349,7 +359,9 @@ "міні-альбом": "Ep", "шоу": "Show", "сінгл": "Single" - } + }, + "chan_prefix": "ад", + "chan_suffix": "" }, "bg": { "equivalent": [], @@ -397,7 +409,9 @@ "миниалбум": "Ep", "предаване": "Show", "сингъл": "Single" - } + }, + "chan_prefix": "от", + "chan_suffix": "" }, "bn": { "equivalent": [], @@ -450,7 +464,9 @@ "ইপি": "Ep", "শো": "Show", "সিঙ্গেল": "Single" - } + }, + "chan_prefix": ",", + "chan_suffix": "দ্বারা" }, "bs": { "equivalent": [], @@ -519,7 +535,9 @@ "ep": "Ep", "serija": "Show", "singl": "Single" - } + }, + "chan_prefix": "od", + "chan_suffix": "" }, "ca": { "equivalent": [], @@ -577,7 +595,9 @@ "ep": "Ep", "programa": "Show", "single": "Single" - } + }, + "chan_prefix": "de:", + "chan_suffix": "" }, "cs": { "equivalent": [], @@ -636,7 +656,9 @@ "ep": "Ep", "zobrazit": "Show", "singl": "Single" - } + }, + "chan_prefix": "autor:", + "chan_suffix": "" }, "da": { "equivalent": [], @@ -693,7 +715,9 @@ "ep": "Ep", "lyddrama": "Show", "single": "Single" - } + }, + "chan_prefix": "af", + "chan_suffix": "" }, "de": { "equivalent": [], @@ -737,7 +761,9 @@ "ep": "Ep", "hörspiel": "Show", "single": "Single" - } + }, + "chan_prefix": "von", + "chan_suffix": "" }, "el": { "equivalent": [], @@ -798,7 +824,9 @@ "ep": "Ep", "εκπομπή": "Show", "single": "Single" - } + }, + "chan_prefix": "από το χρήστη", + "chan_suffix": "" }, "en": { "equivalent": [ @@ -872,7 +900,9 @@ "ep": "Ep", "show": "Show", "single": "Single" - } + }, + "chan_prefix": "by", + "chan_suffix": "" }, "es": { "equivalent": [], @@ -930,7 +960,9 @@ "ep": "Ep", "audiodrama": "Show", "single": "Single" - } + }, + "chan_prefix": "de", + "chan_suffix": "" }, "es-US": { "equivalent": [ @@ -991,7 +1023,9 @@ "ep": "Ep", "programa": "Show", "sencillo": "Single" - } + }, + "chan_prefix": "de", + "chan_suffix": "" }, "et": { "equivalent": [], @@ -1052,7 +1086,9 @@ "ep": "Ep", "sari": "Show", "singel": "Single" - } + }, + "chan_prefix": "kanalilt", + "chan_suffix": "" }, "eu": { "equivalent": [], @@ -1101,7 +1137,9 @@ "ep": "Ep", "saioa": "Show", "singlea": "Single" - } + }, + "chan_prefix": "egilea:", + "chan_suffix": "" }, "fa": { "equivalent": [], @@ -1150,7 +1188,9 @@ "پخش فوق‌العاده": "Ep", "نمایش": "Show", "تک آهنگ": "Single" - } + }, + "chan_prefix": "توسط", + "chan_suffix": "" }, "fi": { "equivalent": [], @@ -1200,7 +1240,9 @@ "ep": "Ep", "näytä": "Show", "single": "Single" - } + }, + "chan_prefix": "tekijä:", + "chan_suffix": "" }, "fil": { "equivalent": [], @@ -1249,7 +1291,9 @@ "ep": "Ep", "palabas": "Show", "single": "Single" - } + }, + "chan_prefix": "ni/ng", + "chan_suffix": "" }, "fr": { "equivalent": [ @@ -1315,7 +1359,9 @@ "émission": "Show", "simple": "Single", "single": "Single" - } + }, + "chan_prefix": "de", + "chan_suffix": "" }, "gl": { "equivalent": [], @@ -1372,7 +1418,9 @@ "ep": "Ep", "programa": "Show", "single": "Single" - } + }, + "chan_prefix": "de", + "chan_suffix": "" }, "gu": { "equivalent": [], @@ -1420,7 +1468,9 @@ "ep": "Ep", "શો": "Show", "સિંગલ": "Single" - } + }, + "chan_prefix": "", + "chan_suffix": "દ્વારા" }, "hi": { "equivalent": [], @@ -1472,7 +1522,9 @@ "ईपी": "Ep", "शो": "Show", "सिंगल": "Single" - } + }, + "chan_prefix": "", + "chan_suffix": "के ज़रिए" }, "hr": { "equivalent": [], @@ -1540,7 +1592,9 @@ "ep": "Ep", "serija": "Show", "singl": "Single" - } + }, + "chan_prefix": "omogućio kanal", + "chan_suffix": "" }, "hu": { "equivalent": [], @@ -1600,7 +1654,9 @@ "ep": "Ep", "műsor": "Show", "kislemez": "Single" - } + }, + "chan_prefix": "", + "chan_suffix": "csatornától" }, "hy": { "equivalent": [], @@ -1654,7 +1710,9 @@ "ep": "Ep", "աուդիոդրամա": "Show", "սինգլ": "Single" - } + }, + "chan_prefix": "հեղինակ՝", + "chan_suffix": "" }, "id": { "equivalent": [], @@ -1708,7 +1766,9 @@ "ep": "Ep", "acara": "Show", "single": "Single" - } + }, + "chan_prefix": "oleh", + "chan_suffix": "" }, "is": { "equivalent": [], @@ -1773,7 +1833,9 @@ "ep": "Ep", "þáttur": "Show", "smáskífa": "Single" - } + }, + "chan_prefix": "eftir", + "chan_suffix": "" }, "it": { "equivalent": [], @@ -1835,7 +1897,9 @@ "ep": "Ep", "programma": "Show", "singolo": "Single" - } + }, + "chan_prefix": "di", + "chan_suffix": "" }, "iw": { "equivalent": [], @@ -1902,7 +1966,9 @@ "מיני-אלבום": "Ep", "תסכית": "Show", "סינגל": "Single" - } + }, + "chan_prefix": "מאת", + "chan_suffix": "" }, "ja": { "equivalent": [], @@ -1934,7 +2000,9 @@ "ep": "Ep", "表示": "Show", "シングル": "Single" - } + }, + "chan_prefix": "作成者:", + "chan_suffix": "" }, "ka": { "equivalent": [], @@ -1988,7 +2056,9 @@ "მინი-ალბომი": "Ep", "ჩვენება": "Show", "სინგლი": "Single" - } + }, + "chan_prefix": "", + "chan_suffix": "-ის მიერ" }, "kk": { "equivalent": [], @@ -2043,7 +2113,9 @@ "ep": "Ep", "шоу": "Show", "сингл": "Single" - } + }, + "chan_prefix": "қосқан", + "chan_suffix": "" }, "km": { "equivalent": [], @@ -2091,7 +2163,9 @@ "ep": "Ep", "កម្មវិធីទូរទស្សន៍": "Show", "ចម្រៀងទោល": "Single" - } + }, + "chan_prefix": "ដោយ", + "chan_suffix": "" }, "kn": { "equivalent": [], @@ -2152,7 +2226,9 @@ "ep": "Ep", "ಶೋ": "Show", "ಒಂದೇ": "Single" - } + }, + "chan_prefix": "", + "chan_suffix": "ಚಾನಲ್‌ನಿಂದ" }, "ko": { "equivalent": [], @@ -2187,7 +2263,9 @@ "ep": "Ep", "표시": "Show", "싱글": "Single" - } + }, + "chan_prefix": "게시자:", + "chan_suffix": "" }, "ky": { "equivalent": [], @@ -2238,7 +2316,9 @@ "чакан альбом": "Ep", "шоу": "Show", "сингл": "Single" - } + }, + "chan_prefix": "", + "chan_suffix": "каналы аркылуу" }, "lo": { "equivalent": [], @@ -2294,7 +2374,9 @@ "ep": "Ep", "ສະແດງ": "Show", "ຊິງເກິນ": "Single" - } + }, + "chan_prefix": "ໂດຍ", + "chan_suffix": "" }, "lt": { "equivalent": [], @@ -2357,7 +2439,9 @@ "mini albumas": "Ep", "serialas": "Show", "singlas": "Single" - } + }, + "chan_prefix": "pridėjo", + "chan_suffix": "" }, "lv": { "equivalent": [], @@ -2423,7 +2507,9 @@ "ep ieraksts": "Ep", "pārraide": "Show", "singls": "Single" - } + }, + "chan_prefix": "autors:", + "chan_suffix": "" }, "mk": { "equivalent": [], @@ -2469,7 +2555,9 @@ "ep": "Ep", "серија": "Show", "сингл": "Single" - } + }, + "chan_prefix": "од", + "chan_suffix": "" }, "ml": { "equivalent": [], @@ -2519,7 +2607,9 @@ "ep": "Ep", "ഷോ": "Show", "സിംഗിൾ": "Single" - } + }, + "chan_prefix": "", + "chan_suffix": "മുഖേന" }, "mn": { "equivalent": [], @@ -2560,7 +2650,9 @@ "ep": "Ep", "жүжиг": "Show", "сингл": "Single" - } + }, + "chan_prefix": "сувгийн нэр:", + "chan_suffix": "" }, "mr": { "equivalent": [], @@ -2623,7 +2715,9 @@ "भाग": "Ep", "शो": "Show", "सिंगल": "Single" - } + }, + "chan_prefix": "", + "chan_suffix": "द्वारे" }, "ms": { "equivalent": [], @@ -2674,7 +2768,9 @@ "ep": "Ep", "rancangan": "Show", "rekod single": "Single" - } + }, + "chan_prefix": "oleh", + "chan_suffix": "" }, "my": { "equivalent": [], @@ -2729,7 +2825,9 @@ "ep": "Ep", "ရှိုး": "Show", "တစ်ကိုယ်တော်": "Single" - } + }, + "chan_prefix": "", + "chan_suffix": "မှ" }, "ne": { "equivalent": [], @@ -2779,7 +2877,9 @@ "ep": "Ep", "टिभी सो": "Show", "एकल एल्बम": "Single" - } + }, + "chan_prefix": "", + "chan_suffix": "द्वारा" }, "nl": { "equivalent": [], @@ -2834,7 +2934,9 @@ "ep": "Ep", "aflevering": "Show", "single": "Single" - } + }, + "chan_prefix": "door", + "chan_suffix": "" }, "no": { "equivalent": [], @@ -2898,7 +3000,9 @@ "ep": "Ep", "hørespill": "Show", "singel": "Single" - } + }, + "chan_prefix": "av", + "chan_suffix": "" }, "or": { "equivalent": [], @@ -2959,7 +3063,9 @@ "ep": "Ep", "ଶୋ": "Show", "ସିଙ୍ଗଲ୍": "Single" - } + }, + "chan_prefix": "", + "chan_suffix": "ଦ୍ଵାରା" }, "pa": { "equivalent": [], @@ -3011,7 +3117,9 @@ "ep": "Ep", "ਸ਼ੋਅ": "Show", "ਸਿੰਗਲ": "Single" - } + }, + "chan_prefix": "", + "chan_suffix": "ਵੱਲੋਂ" }, "pl": { "equivalent": [], @@ -3084,7 +3192,9 @@ "ep": "Ep", "słuchowisko": "Show", "singiel": "Single" - } + }, + "chan_prefix": "autor:", + "chan_suffix": "" }, "pt": { "equivalent": [], @@ -3144,7 +3254,9 @@ "ep": "Ep", "programa": "Show", "single": "Single" - } + }, + "chan_prefix": "por", + "chan_suffix": "" }, "pt-PT": { "equivalent": [], @@ -3188,7 +3300,9 @@ "ep": "Ep", "programa": "Show", "single": "Single" - } + }, + "chan_prefix": "de", + "chan_suffix": "" }, "ro": { "equivalent": [], @@ -3248,7 +3362,9 @@ "ep": "Ep", "emisiune": "Show", "single": "Single" - } + }, + "chan_prefix": "de", + "chan_suffix": "" }, "ru": { "equivalent": [], @@ -3319,7 +3435,9 @@ "ep": "Ep", "аудиошоу": "Show", "сингл": "Single" - } + }, + "chan_prefix": "", + "chan_suffix": "" }, "si": { "equivalent": [], @@ -3369,7 +3487,9 @@ "දීවා": "Ep", "සංදර්ශනය": "Show", "තනි": "Single" - } + }, + "chan_prefix": "", + "chan_suffix": "විසින්" }, "sk": { "equivalent": [], @@ -3428,7 +3548,9 @@ "ep": "Ep", "relácia": "Show", "singel": "Single" - } + }, + "chan_prefix": "Autori:", + "chan_suffix": "" }, "sl": { "equivalent": [], @@ -3505,7 +3627,9 @@ "ep": "Ep", "oddaja": "Show", "singel": "Single" - } + }, + "chan_prefix": "kanal", + "chan_suffix": "" }, "sq": { "equivalent": [], @@ -3558,7 +3682,9 @@ "ep": "Ep", "shfaq": "Show", "single": "Single" - } + }, + "chan_prefix": "nga", + "chan_suffix": "" }, "sr": { "equivalent": [], @@ -3608,7 +3734,9 @@ "ep": "Ep", "серија": "Show", "сингл": "Single" - } + }, + "chan_prefix": "са канала", + "chan_suffix": "" }, "sr-Latn": { "equivalent": [], @@ -3658,7 +3786,9 @@ "ep": "Ep", "serija": "Show", "singl": "Single" - } + }, + "chan_prefix": "sa kanala", + "chan_suffix": "" }, "sv": { "equivalent": [], @@ -3717,7 +3847,9 @@ "ep": "Ep", "ljuddrama": "Show", "singel": "Single" - } + }, + "chan_prefix": "från", + "chan_suffix": "" }, "sw": { "equivalent": [], @@ -3767,7 +3899,9 @@ "ep": "Ep", "kipindi": "Show", "singo": "Single" - } + }, + "chan_prefix": "kutoka", + "chan_suffix": "" }, "ta": { "equivalent": [], @@ -3830,7 +3964,9 @@ "ep": "Ep", "ஆடியோ ஷோ": "Show", "சிங்கிள்": "Single" - } + }, + "chan_prefix": "வழங்கியவர்:", + "chan_suffix": "" }, "te": { "equivalent": [], @@ -3891,7 +4027,9 @@ "ep": "Ep", "చూపించు": "Show", "సింగిల్": "Single" - } + }, + "chan_prefix": "", + "chan_suffix": "ఛానెల్ ద్వారా" }, "th": { "equivalent": [], @@ -3952,7 +4090,9 @@ "ep": "Ep", "รายการ": "Show", "ซิงเกิล": "Single" - } + }, + "chan_prefix": "โดย", + "chan_suffix": "" }, "tr": { "equivalent": [], @@ -4004,7 +4144,9 @@ "ep": "Ep", "program": "Show", "single": "Single" - } + }, + "chan_prefix": "", + "chan_suffix": "tarafından" }, "uk": { "equivalent": [], @@ -4079,7 +4221,9 @@ "мініальбом": "Ep", "аудіодрама": "Show", "сингл": "Single" - } + }, + "chan_prefix": "власник:", + "chan_suffix": "" }, "ur": { "equivalent": [], @@ -4136,7 +4280,9 @@ "ep": "Ep", "شو": "Show", "واحد": "Single" - } + }, + "chan_prefix": "منجانب", + "chan_suffix": "" }, "uz": { "equivalent": [], @@ -4184,7 +4330,9 @@ "ep": "Ep", "shou": "Show", "singl": "Single" - } + }, + "chan_prefix": "muallif:", + "chan_suffix": "" }, "vi": { "equivalent": [], @@ -4217,7 +4365,9 @@ "đĩa nhạc mở rộng (ep)": "Ep", "chương trình": "Show", "đĩa đơn": "Single" - } + }, + "chan_prefix": "của", + "chan_suffix": "" }, "zh-CN": { "equivalent": [], @@ -4251,7 +4401,9 @@ "迷你专辑": "Ep", "广播剧": "Show", "单曲": "Single" - } + }, + "chan_prefix": "创建者:", + "chan_suffix": "" }, "zh-HK": { "equivalent": [], @@ -4284,7 +4436,9 @@ "ep": "Ep", "節目": "Show", "單曲": "Single" - } + }, + "chan_prefix": "來自", + "chan_suffix": "" }, "zh-TW": { "equivalent": [], @@ -4316,7 +4470,9 @@ "ep": "Ep", "節目": "Show", "單曲": "Single" - } + }, + "chan_prefix": "由", + "chan_suffix": "建立" }, "zu": { "equivalent": [], @@ -4380,6 +4536,8 @@ "i-ep": "Ep", "bonisa": "Show", "i-single": "Single" - } + }, + "chan_prefix": "ka-", + "chan_suffix": "" } } diff --git a/testfiles/playlist/playlist_20241011_pageheader.json b/testfiles/playlist/playlist_20241011_pageheader.json new file mode 100644 index 0000000..52591b7 --- /dev/null +++ b/testfiles/playlist/playlist_20241011_pageheader.json @@ -0,0 +1,4986 @@ +{ + "responseContext": { + "visitorData": "CgtQNE9Wb3N1MU1HSSic8Ka4BjIKCgJERRIEEgAgMA%3D%3D", + "serviceTrackingParams": [ + { + "service": "GFEEDBACK", + "params": [ + { + "key": "is_podcast_show_page", + "value": "0" + }, + { + "key": "browse_id", + "value": "VLPLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5" + }, + { + "key": "browse_id_prefix", + "value": "" + }, + { + "key": "logged_in", + "value": "0" + }, + { + "key": "e", + "value": "23804281,23966208,23986027,24004644,24077241,24166867,24181174,24241378,24439361,24453989,24499534,24542367,24547316,24548629,24552798,24566687,24699899,39325854,39326986,51009781,51010235,51017346,51020570,51025415,51030101,51037346,51037349,51050361,51053689,51057846,51057857,51063643,51064835,51072748,51091058,51095478,51098297,51098299,51101169,51105628,51111738,51112978,51115184,51117318,51124104,51131427,51133103,51138233,51141472,51152050,51157411,51157430,51157432,51157841,51157895,51158514,51160545,51162170,51165467,51169118,51176511,51178314,51178333,51178344,51178355,51178768,51178982,51183909,51184990,51186528,51190652,51195231,51204329,51212458,51217504,51220492,51221011,51221148,51222973,51223962,51224135,51225967,51227037,51227778,51228350,51230241,51230478,51231814,51235078,51237842,51239093,51241028,51242448,51243940,51248255,51248734,51249749,51251610,51251836,51255676,51255680,51255743,51256074,51256084,51257665,51257895,51257900,51257909,51257916,51257945,51258066,51259135,51260456,51265337,51265362,51265373,51266454,51267567,51267746,51272458,51272491,51272508,51272521,51272530,51272580,51272591,51272845,51275146,51275157,51275168,51275179,51275198,51275396,51275785,51276557,51276565,51276640,51279285,51281227,51281875,51282069,51282084,51282792,51284653,51285105,51285417,51287196,51287500,51288824,51289920,51289935,51289938,51289952,51289963,51289976,51290807,51293344,51295132,51295408,51296439,51296900,51298019,51298829,51299291,51299627,51299711,51299724,51299971,51299999,51300012,51300176,51300241,51300414,51300532,51300585,51300699,51300761,51301116,51302082,51302359,51302492,51302680,51303667,51303669,51303790,51303820,51304121,51304156,51304276,51304558,51305582,51305839,51305952,51306259,51307501,51307723,51308059,51309313,51309488,51310323,51310688,51311025,51311040,51311504,51312061,51312144,51312153,51313149,51314677,51314692,51314699,51314710,51314727,51315912,51315919,51315928,51315931,51315942,51315945,51315952,51315961,51315970,51315977,51316846,51317910,51319208" + }, + { + "key": "visitor_data", + "value": "CgtQNE9Wb3N1MU1HSSic8Ka4BjIKCgJERRIEEgAgMA%3D%3D" + } + ] + }, + { + "service": "GOOGLE_HELP", + "params": [ + { + "key": "is_podcast_show_page", + "value": "0" + }, + { + "key": "browse_id", + "value": "VLPLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5" + }, + { + "key": "browse_id_prefix", + "value": "" + } + ] + }, + { + "service": "CSI", + "params": [ + { + "key": "c", + "value": "WEB" + }, + { + "key": "cver", + "value": "2.20241010.09.00" + }, + { + "key": "yt_li", + "value": "0" + }, + { + "key": "GetPlaylist_rid", + "value": "0xa3686798fe4453c8" + } + ] + }, + { + "service": "GUIDED_HELP", + "params": [ + { + "key": "logged_in", + "value": "0" + } + ] + }, + { + "service": "ECATCHER", + "params": [ + { + "key": "client.version", + "value": "2.20241010" + }, + { + "key": "client.name", + "value": "WEB" + } + ] + } + ], + "mainAppWebResponseContext": { + "loggedOut": true, + "trackingParam": "kx_fmPxhoPZRKNSPfjI7eDTbADuo7JuSklsl0zlYYsC30NwRgkuswmIBwOcCE59TDtslLKPQ-SS" + }, + "webResponseContextExtensionData": { + "hasDecorated": true + } + }, + "contents": { + "twoColumnBrowseResultsRenderer": { + "tabs": [ + { + "tabRenderer": { + "selected": true, + "content": { + "sectionListRenderer": { + "contents": [ + { + "itemSectionRenderer": { + "contents": [ + { + "playlistVideoListRenderer": { + "contents": [ + { + "playlistVideoRenderer": { + "videoId": "DXuNJ267Vss", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/DXuNJ267Vss/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBQu39qIU8WKbC5KeXQ_a_Kmeq-Mw", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/DXuNJ267Vss/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAFnmg4-mRI64nmz4R4GUGo720Jzw", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/DXuNJ267Vss/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLClxuSTfYdqfosJClOxA2osI934sw", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/DXuNJ267Vss/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCVR7qAVJNM3flwQ_ZYfPS3iujF1w", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "dreamy night ♫" + } + ], + "accessibility": { + "accessibilityData": { + "label": "dreamy night ♫ by comfi beats 15,316,716 views 4 years ago 4 minutes, 6 seconds" + } + } + }, + "index": { + "simpleText": "1" + }, + "shortBylineText": { + "runs": [ + { + "text": "comfi beats", + "navigationEndpoint": { + "clickTrackingParams": "CE4QxjQYACITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@comfibeats", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCde_xnXu2lPBmRgAp_nq29A", + "canonicalBaseUrl": "/@comfibeats" + } + } + } + ] + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 6 seconds" + } + }, + "simpleText": "4:06" + }, + "navigationEndpoint": { + "clickTrackingParams": "CE4QxjQYACITCPGkqOzAh4kDFbXkQgUdzt0gpTIKcGxwcF92aWRlb1okVkxQTFQydzJvQmYxVFpLeXZZX002SnNBU3M3M20td2pMekg1mgEHCAwQ-iwYAQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=DXuNJ267Vss&list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5&index=1&pp=iAQB8AUB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "DXuNJ267Vss", + "playlistId": "PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5", + "index": 0, + "params": "OAI%3D", + "playerParams": "iAQB8AUB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTFQydzJvQmYxVFpLeXZZX002SnNBU3M3M20td2pMekg1" + } + }, + "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=0d7b8d276ebb56cb&ip=79.205.210.218&initcwndbps=1851250&mt=1728689816&oweuc=&pxtags=Cg4KAnR4Egg1MTMwMzgyMA&rxtags=Cg4KAnR4Egg1MTMwMzgxOA%2CCg4KAnR4Egg1MTMwMzgxOQ%2CCg4KAnR4Egg1MTMwMzgyMA%2CCg4KAnR4Egg1MTMwMzgyMQ" + } + } + } + } + }, + "lengthSeconds": "246", + "trackingParams": "CE4QxjQYACITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "isPlayable": true, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CFEQ_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CFEQ_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "DXuNJ267Vss", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CFEQ_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "DXuNJ267Vss" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "DXuNJ267Vss" + ] + } + } + ] + } + }, + "trackingParams": "CFEQ_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CFAQ0aoFGAciEwjxpKjswIeJAxW15EIFHc7dIKU=", + "offlineVideoEndpoint": { + "videoId": "DXuNJ267Vss", + "onAddCommand": { + "clickTrackingParams": "CFAQ0aoFGAciEwjxpKjswIeJAxW15EIFHc7dIKU=", + "getDownloadActionCommand": { + "videoId": "DXuNJ267Vss", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "CFAQ0aoFGAciEwjxpKjswIeJAxW15EIFHc7dIKU=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CE4QxjQYACITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtEWHVOSjI2N1Zzcw%3D%3D", + "commands": [ + { + "clickTrackingParams": "CE4QxjQYACITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CE8QjmIiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CE4QxjQYACITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "hasSeparator": true + } + } + ], + "trackingParams": "CE4QxjQYACITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 minutes, 6 seconds" + } + }, + "simpleText": "4:06" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "videoInfo": { + "runs": [ + { + "text": "15M views" + }, + { + "text": " • " + }, + { + "text": "4 years ago" + } + ] + } + } + }, + { + "playlistVideoRenderer": { + "videoId": "eutMcjJCVqc", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/eutMcjJCVqc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDc3Ycpb5YaNFeHu8Nf5smL25Z07A", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/eutMcjJCVqc/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAScc3jmGa81fZ-rdds1pLhsyeHcA", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/eutMcjJCVqc/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCukgu31Ut9lp2E4t5BWlzit6JruA", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/eutMcjJCVqc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBjeA0RixBcCP2w53Ke2H43HJ9j9w", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "these days it's hard to find the words ♫" + } + ], + "accessibility": { + "accessibilityData": { + "label": "these days it's hard to find the words ♫ by comfi beats 1,272,275 views 4 years ago 2 minutes, 48 seconds" + } + } + }, + "index": { + "simpleText": "2" + }, + "shortBylineText": { + "runs": [ + { + "text": "comfi beats", + "navigationEndpoint": { + "clickTrackingParams": "CEoQxjQYASITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@comfibeats", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCde_xnXu2lPBmRgAp_nq29A", + "canonicalBaseUrl": "/@comfibeats" + } + } + } + ] + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 48 seconds" + } + }, + "simpleText": "2:48" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEoQxjQYASITCPGkqOzAh4kDFbXkQgUdzt0gpTIKcGxwcF92aWRlb1okVkxQTFQydzJvQmYxVFpLeXZZX002SnNBU3M3M20td2pMekg1mgEHCAwQ-iwYAQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=eutMcjJCVqc&list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5&index=2&pp=iAQB8AUB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "eutMcjJCVqc", + "playlistId": "PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5", + "index": 1, + "params": "OAI%3D", + "playerParams": "iAQB8AUB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTFQydzJvQmYxVFpLeXZZX002SnNBU3M3M20td2pMekg1" + } + }, + "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&msp=1&odepv=1&id=7aeb4c72324256a7&ip=79.205.210.218&initcwndbps=1851250&mt=1728689816&oweuc=&pxtags=Cg4KAnR4Egg1MTMwMzgyMA&rxtags=Cg4KAnR4Egg1MTMwMzgxOA%2CCg4KAnR4Egg1MTMwMzgxOQ%2CCg4KAnR4Egg1MTMwMzgyMA%2CCg4KAnR4Egg1MTMwMzgyMQ" + } + } + } + } + }, + "lengthSeconds": "168", + "trackingParams": "CEoQxjQYASITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "isPlayable": true, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CE0Q_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CE0Q_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "eutMcjJCVqc", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CE0Q_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "eutMcjJCVqc" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "eutMcjJCVqc" + ] + } + } + ] + } + }, + "trackingParams": "CE0Q_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CEwQ0aoFGAciEwjxpKjswIeJAxW15EIFHc7dIKU=", + "offlineVideoEndpoint": { + "videoId": "eutMcjJCVqc", + "onAddCommand": { + "clickTrackingParams": "CEwQ0aoFGAciEwjxpKjswIeJAxW15EIFHc7dIKU=", + "getDownloadActionCommand": { + "videoId": "eutMcjJCVqc", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "CEwQ0aoFGAciEwjxpKjswIeJAxW15EIFHc7dIKU=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEoQxjQYASITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtldXRNY2pKQ1ZxYw%3D%3D", + "commands": [ + { + "clickTrackingParams": "CEoQxjQYASITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CEsQjmIiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CEoQxjQYASITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "hasSeparator": true + } + } + ], + "trackingParams": "CEoQxjQYASITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 48 seconds" + } + }, + "simpleText": "2:48" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "videoInfo": { + "runs": [ + { + "text": "1.2M views" + }, + { + "text": " • " + }, + { + "text": "4 years ago" + } + ] + } + } + }, + { + "playlistVideoRenderer": { + "videoId": "B5eM3Q3wj0M", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/B5eM3Q3wj0M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBK3FpJmFmAlA7ALGjJDXrWC-jtfw", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/B5eM3Q3wj0M/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCwzmil8fgPbrAd-ef4T3vzIzmlKg", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/B5eM3Q3wj0M/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBDU2ur1UisffVmAXAG8lXbT49x5Q", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/B5eM3Q3wj0M/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBy46YLhKfVL6Wj71RWd1Ru9C3Z0w", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "a vision ♫" + } + ], + "accessibility": { + "accessibilityData": { + "label": "a vision ♫ by comfi beats 843,353 views 4 years ago 2 minutes, 49 seconds" + } + } + }, + "index": { + "simpleText": "3" + }, + "shortBylineText": { + "runs": [ + { + "text": "comfi beats", + "navigationEndpoint": { + "clickTrackingParams": "CEYQxjQYAiITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@comfibeats", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCde_xnXu2lPBmRgAp_nq29A", + "canonicalBaseUrl": "/@comfibeats" + } + } + } + ] + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 49 seconds" + } + }, + "simpleText": "2:49" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEYQxjQYAiITCPGkqOzAh4kDFbXkQgUdzt0gpTIKcGxwcF92aWRlb1okVkxQTFQydzJvQmYxVFpLeXZZX002SnNBU3M3M20td2pMekg1mgEHCAwQ-iwYAQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=B5eM3Q3wj0M&list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5&index=3&pp=iAQB8AUB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "B5eM3Q3wj0M", + "playlistId": "PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5", + "index": 2, + "params": "OAI%3D", + "playerParams": "iAQB8AUB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTFQydzJvQmYxVFpLeXZZX002SnNBU3M3M20td2pMekg1" + } + }, + "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=07978cdd0df08f43&ip=79.205.210.218&initcwndbps=1971250&mt=1728689816&oweuc=&pxtags=Cg4KAnR4Egg1MTMwMzgyMA&rxtags=Cg4KAnR4Egg1MTMwMzgxOA%2CCg4KAnR4Egg1MTMwMzgxOQ%2CCg4KAnR4Egg1MTMwMzgyMA%2CCg4KAnR4Egg1MTMwMzgyMQ" + } + } + } + } + }, + "lengthSeconds": "169", + "trackingParams": "CEYQxjQYAiITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "isPlayable": true, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEkQ_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CEkQ_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "B5eM3Q3wj0M", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CEkQ_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "B5eM3Q3wj0M" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "B5eM3Q3wj0M" + ] + } + } + ] + } + }, + "trackingParams": "CEkQ_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CEgQ0aoFGAciEwjxpKjswIeJAxW15EIFHc7dIKU=", + "offlineVideoEndpoint": { + "videoId": "B5eM3Q3wj0M", + "onAddCommand": { + "clickTrackingParams": "CEgQ0aoFGAciEwjxpKjswIeJAxW15EIFHc7dIKU=", + "getDownloadActionCommand": { + "videoId": "B5eM3Q3wj0M", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "CEgQ0aoFGAciEwjxpKjswIeJAxW15EIFHc7dIKU=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEYQxjQYAiITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtCNWVNM1Ezd2owTQ%3D%3D", + "commands": [ + { + "clickTrackingParams": "CEYQxjQYAiITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CEcQjmIiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CEYQxjQYAiITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "hasSeparator": true + } + } + ], + "trackingParams": "CEYQxjQYAiITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 49 seconds" + } + }, + "simpleText": "2:49" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "videoInfo": { + "runs": [ + { + "text": "843K views" + }, + { + "text": " • " + }, + { + "text": "4 years ago" + } + ] + } + } + }, + { + "playlistVideoRenderer": { + "videoId": "MJedvm2TE8o", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/MJedvm2TE8o/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBtulKIBStuPyBYbBqlE5B4-2xBaQ", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/MJedvm2TE8o/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAEgWtwIZHLv5EKCZVIVibIkZLHlg", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/MJedvm2TE8o/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBSlJy1g4t2np6JK4hBst8b6PA2ew", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/MJedvm2TE8o/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDkDGK867GRxs9b42P7hJkK6B2pRQ", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "a stormy night ♫" + } + ], + "accessibility": { + "accessibilityData": { + "label": "a stormy night ♫ by comfi beats 1,380,590 views 4 years ago 3 minutes, 22 seconds" + } + } + }, + "index": { + "simpleText": "4" + }, + "shortBylineText": { + "runs": [ + { + "text": "comfi beats", + "navigationEndpoint": { + "clickTrackingParams": "CEIQxjQYAyITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@comfibeats", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCde_xnXu2lPBmRgAp_nq29A", + "canonicalBaseUrl": "/@comfibeats" + } + } + } + ] + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 22 seconds" + } + }, + "simpleText": "3:22" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEIQxjQYAyITCPGkqOzAh4kDFbXkQgUdzt0gpTIKcGxwcF92aWRlb1okVkxQTFQydzJvQmYxVFpLeXZZX002SnNBU3M3M20td2pMekg1mgEHCAwQ-iwYAQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=MJedvm2TE8o&list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5&index=4&pp=iAQB8AUB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "MJedvm2TE8o", + "playlistId": "PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5", + "index": 3, + "params": "OAI%3D", + "playerParams": "iAQB8AUB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTFQydzJvQmYxVFpLeXZZX002SnNBU3M3M20td2pMekg1" + } + }, + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---sn-h0jeenek.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odepv=1&id=30979dbe6d9313ca&ip=79.205.210.218&initcwndbps=1971250&mt=1728689816&oweuc=&pxtags=Cg4KAnR4Egg1MTMwMzgyMA&rxtags=Cg4KAnR4Egg1MTMwMzgxOA%2CCg4KAnR4Egg1MTMwMzgxOQ%2CCg4KAnR4Egg1MTMwMzgyMA%2CCg4KAnR4Egg1MTMwMzgyMQ" + } + } + } + } + }, + "lengthSeconds": "202", + "trackingParams": "CEIQxjQYAyITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "isPlayable": true, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEUQ_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CEUQ_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "MJedvm2TE8o", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CEUQ_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "MJedvm2TE8o" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "MJedvm2TE8o" + ] + } + } + ] + } + }, + "trackingParams": "CEUQ_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CEQQ0aoFGAciEwjxpKjswIeJAxW15EIFHc7dIKU=", + "offlineVideoEndpoint": { + "videoId": "MJedvm2TE8o", + "onAddCommand": { + "clickTrackingParams": "CEQQ0aoFGAciEwjxpKjswIeJAxW15EIFHc7dIKU=", + "getDownloadActionCommand": { + "videoId": "MJedvm2TE8o", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "CEQQ0aoFGAciEwjxpKjswIeJAxW15EIFHc7dIKU=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEIQxjQYAyITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtNSmVkdm0yVEU4bw%3D%3D", + "commands": [ + { + "clickTrackingParams": "CEIQxjQYAyITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CEMQjmIiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CEIQxjQYAyITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "hasSeparator": true + } + } + ], + "trackingParams": "CEIQxjQYAyITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 22 seconds" + } + }, + "simpleText": "3:22" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "videoInfo": { + "runs": [ + { + "text": "1.3M views" + }, + { + "text": " • " + }, + { + "text": "4 years ago" + } + ] + } + } + }, + { + "playlistVideoRenderer": { + "videoId": "HHKmS7c5ai4", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/HHKmS7c5ai4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLArqrLnSpTLA-1qj-yF6AmfrHOsTA", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/HHKmS7c5ai4/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCOh-S60OM2Hhswihr3Glb1cM1AAg", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/HHKmS7c5ai4/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBEyk0qxSToWD_g9L3bTrtrsJjhsw", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/HHKmS7c5ai4/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDG12RCxjnm4JHG9T8Ow_thj_ecxA", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "unknown waters ♫" + } + ], + "accessibility": { + "accessibilityData": { + "label": "unknown waters ♫ by comfi beats 707,948 views 4 years ago 1 minute, 56 seconds" + } + } + }, + "index": { + "simpleText": "5" + }, + "shortBylineText": { + "runs": [ + { + "text": "comfi beats", + "navigationEndpoint": { + "clickTrackingParams": "CD4QxjQYBCITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@comfibeats", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCde_xnXu2lPBmRgAp_nq29A", + "canonicalBaseUrl": "/@comfibeats" + } + } + } + ] + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 56 seconds" + } + }, + "simpleText": "1:56" + }, + "navigationEndpoint": { + "clickTrackingParams": "CD4QxjQYBCITCPGkqOzAh4kDFbXkQgUdzt0gpTIKcGxwcF92aWRlb1okVkxQTFQydzJvQmYxVFpLeXZZX002SnNBU3M3M20td2pMekg1mgEHCAwQ-iwYAQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=HHKmS7c5ai4&list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5&index=5&pp=iAQB8AUB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "HHKmS7c5ai4", + "playlistId": "PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5", + "index": 4, + "params": "OAI%3D", + "playerParams": "iAQB8AUB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTFQydzJvQmYxVFpLeXZZX002SnNBU3M3M20td2pMekg1" + } + }, + "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&msp=1&odepv=1&id=1c72a64bb7396a2e&ip=79.205.210.218&initcwndbps=1971250&mt=1728689816&oweuc=&pxtags=Cg4KAnR4Egg1MTMwMzgyMA&rxtags=Cg4KAnR4Egg1MTMwMzgxOA%2CCg4KAnR4Egg1MTMwMzgxOQ%2CCg4KAnR4Egg1MTMwMzgyMA%2CCg4KAnR4Egg1MTMwMzgyMQ" + } + } + } + } + }, + "lengthSeconds": "116", + "trackingParams": "CD4QxjQYBCITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "isPlayable": true, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEEQ_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CEEQ_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "HHKmS7c5ai4", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CEEQ_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "HHKmS7c5ai4" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "HHKmS7c5ai4" + ] + } + } + ] + } + }, + "trackingParams": "CEEQ_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CEAQ0aoFGAciEwjxpKjswIeJAxW15EIFHc7dIKU=", + "offlineVideoEndpoint": { + "videoId": "HHKmS7c5ai4", + "onAddCommand": { + "clickTrackingParams": "CEAQ0aoFGAciEwjxpKjswIeJAxW15EIFHc7dIKU=", + "getDownloadActionCommand": { + "videoId": "HHKmS7c5ai4", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "CEAQ0aoFGAciEwjxpKjswIeJAxW15EIFHc7dIKU=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CD4QxjQYBCITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtISEttUzdjNWFpNA%3D%3D", + "commands": [ + { + "clickTrackingParams": "CD4QxjQYBCITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CD8QjmIiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CD4QxjQYBCITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "hasSeparator": true + } + } + ], + "trackingParams": "CD4QxjQYBCITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 56 seconds" + } + }, + "simpleText": "1:56" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "videoInfo": { + "runs": [ + { + "text": "707K views" + }, + { + "text": " • " + }, + { + "text": "4 years ago" + } + ] + } + } + }, + { + "playlistVideoRenderer": { + "videoId": "zF32eh6PWPk", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/zF32eh6PWPk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDr2_1EoZ50kzSgDKwJQaY6Pv3WJA", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/zF32eh6PWPk/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLC44h27mvgtl5QBA_ed1o4kXPieBA", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/zF32eh6PWPk/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDm1iJNfB4KbVMoqPMKrWNHIBaBgg", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/zF32eh6PWPk/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDCJEQasRwYLo-iK___zZ767PrCWQ", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "wilting memories ♫" + } + ], + "accessibility": { + "accessibilityData": { + "label": "wilting memories ♫ by comfi beats 797,946 views 4 years ago 1 minute, 48 seconds" + } + } + }, + "index": { + "simpleText": "6" + }, + "shortBylineText": { + "runs": [ + { + "text": "comfi beats", + "navigationEndpoint": { + "clickTrackingParams": "CDoQxjQYBSITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@comfibeats", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCde_xnXu2lPBmRgAp_nq29A", + "canonicalBaseUrl": "/@comfibeats" + } + } + } + ] + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 48 seconds" + } + }, + "simpleText": "1:48" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDoQxjQYBSITCPGkqOzAh4kDFbXkQgUdzt0gpTIKcGxwcF92aWRlb1okVkxQTFQydzJvQmYxVFpLeXZZX002SnNBU3M3M20td2pMekg1mgEHCAwQ-iwYAQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=zF32eh6PWPk&list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5&index=6&pp=iAQB8AUB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "zF32eh6PWPk", + "playlistId": "PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5", + "index": 5, + "params": "OAI%3D", + "playerParams": "iAQB8AUB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTFQydzJvQmYxVFpLeXZZX002SnNBU3M3M20td2pMekg1" + } + }, + "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=cc5df67a1e8f58f9&ip=79.205.210.218&initcwndbps=1971250&mt=1728689816&oweuc=&pxtags=Cg4KAnR4Egg1MTMwMzgyMA&rxtags=Cg4KAnR4Egg1MTMwMzgxOA%2CCg4KAnR4Egg1MTMwMzgxOQ%2CCg4KAnR4Egg1MTMwMzgyMA%2CCg4KAnR4Egg1MTMwMzgyMQ" + } + } + } + } + }, + "lengthSeconds": "108", + "trackingParams": "CDoQxjQYBSITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "isPlayable": true, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CD0Q_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CD0Q_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "zF32eh6PWPk", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CD0Q_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "zF32eh6PWPk" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "zF32eh6PWPk" + ] + } + } + ] + } + }, + "trackingParams": "CD0Q_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CDwQ0aoFGAciEwjxpKjswIeJAxW15EIFHc7dIKU=", + "offlineVideoEndpoint": { + "videoId": "zF32eh6PWPk", + "onAddCommand": { + "clickTrackingParams": "CDwQ0aoFGAciEwjxpKjswIeJAxW15EIFHc7dIKU=", + "getDownloadActionCommand": { + "videoId": "zF32eh6PWPk", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "CDwQ0aoFGAciEwjxpKjswIeJAxW15EIFHc7dIKU=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDoQxjQYBSITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "Cgt6RjMyZWg2UFdQaw%3D%3D", + "commands": [ + { + "clickTrackingParams": "CDoQxjQYBSITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CDsQjmIiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CDoQxjQYBSITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "hasSeparator": true + } + } + ], + "trackingParams": "CDoQxjQYBSITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "1 minute, 48 seconds" + } + }, + "simpleText": "1:48" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "videoInfo": { + "runs": [ + { + "text": "797K views" + }, + { + "text": " • " + }, + { + "text": "4 years ago" + } + ] + } + } + }, + { + "playlistVideoRenderer": { + "videoId": "hbz-8K-pxpY", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/hbz-8K-pxpY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDMheaVKp1qI6AOcwrLl2K_U7EnAA", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/hbz-8K-pxpY/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDSWaobRJuSVZFDf9aj1kHVx6WuXw", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/hbz-8K-pxpY/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDi33fhhNwD8Rtf56eIrPZV0Wh8ZQ", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/hbz-8K-pxpY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBt77gqVq8oLIUs7njZkvP2EvmTAw", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "sunshine & butterflies ♫" + } + ], + "accessibility": { + "accessibilityData": { + "label": "sunshine & butterflies ♫ by comfi beats 2,551,746 views 4 years ago 3 minutes, 5 seconds" + } + } + }, + "index": { + "simpleText": "7" + }, + "shortBylineText": { + "runs": [ + { + "text": "comfi beats", + "navigationEndpoint": { + "clickTrackingParams": "CDYQxjQYBiITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@comfibeats", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCde_xnXu2lPBmRgAp_nq29A", + "canonicalBaseUrl": "/@comfibeats" + } + } + } + ] + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 5 seconds" + } + }, + "simpleText": "3:05" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDYQxjQYBiITCPGkqOzAh4kDFbXkQgUdzt0gpTIKcGxwcF92aWRlb1okVkxQTFQydzJvQmYxVFpLeXZZX002SnNBU3M3M20td2pMekg1mgEHCAwQ-iwYAQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=hbz-8K-pxpY&list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5&index=7&pp=iAQB8AUB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "hbz-8K-pxpY", + "playlistId": "PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5", + "index": 6, + "params": "OAI%3D", + "playerParams": "iAQB8AUB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTFQydzJvQmYxVFpLeXZZX002SnNBU3M3M20td2pMekg1" + } + }, + "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&msp=1&odepv=1&id=85bcfef0afa9c696&ip=79.205.210.218&initcwndbps=1851250&mt=1728689816&oweuc=&pxtags=Cg4KAnR4Egg1MTMwMzgyMA&rxtags=Cg4KAnR4Egg1MTMwMzgxOA%2CCg4KAnR4Egg1MTMwMzgxOQ%2CCg4KAnR4Egg1MTMwMzgyMA%2CCg4KAnR4Egg1MTMwMzgyMQ" + } + } + } + } + }, + "lengthSeconds": "185", + "trackingParams": "CDYQxjQYBiITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "isPlayable": true, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDkQ_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CDkQ_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "hbz-8K-pxpY", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CDkQ_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "hbz-8K-pxpY" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "hbz-8K-pxpY" + ] + } + } + ] + } + }, + "trackingParams": "CDkQ_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CDgQ0aoFGAciEwjxpKjswIeJAxW15EIFHc7dIKU=", + "offlineVideoEndpoint": { + "videoId": "hbz-8K-pxpY", + "onAddCommand": { + "clickTrackingParams": "CDgQ0aoFGAciEwjxpKjswIeJAxW15EIFHc7dIKU=", + "getDownloadActionCommand": { + "videoId": "hbz-8K-pxpY", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "CDgQ0aoFGAciEwjxpKjswIeJAxW15EIFHc7dIKU=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDYQxjQYBiITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtoYnotOEstcHhwWQ%3D%3D", + "commands": [ + { + "clickTrackingParams": "CDYQxjQYBiITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CDcQjmIiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CDYQxjQYBiITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "hasSeparator": true + } + } + ], + "trackingParams": "CDYQxjQYBiITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 5 seconds" + } + }, + "simpleText": "3:05" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "videoInfo": { + "runs": [ + { + "text": "2.5M views" + }, + { + "text": " • " + }, + { + "text": "4 years ago" + } + ] + } + } + }, + { + "playlistVideoRenderer": { + "videoId": "A2zepLiuEJU", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/A2zepLiuEJU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAUpy0PRzet_xrPsGPj2Mw_ik5o0A", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/A2zepLiuEJU/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCgYyZQkAGdE25F-zZ6AAHY5GuNjQ", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/A2zepLiuEJU/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBWFlbG5J4x8J3pxGC2k_P2O7lKmA", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/A2zepLiuEJU/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD6N47yuLYe5m50AwYPX9Cos4RSVA", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "foreverland ♫" + } + ], + "accessibility": { + "accessibilityData": { + "label": "foreverland ♫ by comfi beats 983,497 views 4 years ago 2 minutes, 26 seconds" + } + } + }, + "index": { + "simpleText": "8" + }, + "shortBylineText": { + "runs": [ + { + "text": "comfi beats", + "navigationEndpoint": { + "clickTrackingParams": "CDIQxjQYByITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@comfibeats", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCde_xnXu2lPBmRgAp_nq29A", + "canonicalBaseUrl": "/@comfibeats" + } + } + } + ] + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 26 seconds" + } + }, + "simpleText": "2:26" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDIQxjQYByITCPGkqOzAh4kDFbXkQgUdzt0gpTIKcGxwcF92aWRlb1okVkxQTFQydzJvQmYxVFpLeXZZX002SnNBU3M3M20td2pMekg1mgEHCAwQ-iwYAQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=A2zepLiuEJU&list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5&index=8&pp=iAQB8AUB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "A2zepLiuEJU", + "playlistId": "PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5", + "index": 7, + "params": "OAI%3D", + "playerParams": "iAQB8AUB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTFQydzJvQmYxVFpLeXZZX002SnNBU3M3M20td2pMekg1" + } + }, + "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=036cdea4b8ae1095&ip=79.205.210.218&initcwndbps=1971250&mt=1728689816&oweuc=&pxtags=Cg4KAnR4Egg1MTMwMzgyMA&rxtags=Cg4KAnR4Egg1MTMwMzgxOA%2CCg4KAnR4Egg1MTMwMzgxOQ%2CCg4KAnR4Egg1MTMwMzgyMA%2CCg4KAnR4Egg1MTMwMzgyMQ" + } + } + } + } + }, + "lengthSeconds": "146", + "trackingParams": "CDIQxjQYByITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "isPlayable": true, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDUQ_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CDUQ_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "A2zepLiuEJU", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CDUQ_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "A2zepLiuEJU" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "A2zepLiuEJU" + ] + } + } + ] + } + }, + "trackingParams": "CDUQ_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CDQQ0aoFGAciEwjxpKjswIeJAxW15EIFHc7dIKU=", + "offlineVideoEndpoint": { + "videoId": "A2zepLiuEJU", + "onAddCommand": { + "clickTrackingParams": "CDQQ0aoFGAciEwjxpKjswIeJAxW15EIFHc7dIKU=", + "getDownloadActionCommand": { + "videoId": "A2zepLiuEJU", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "CDQQ0aoFGAciEwjxpKjswIeJAxW15EIFHc7dIKU=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDIQxjQYByITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtBMnplcExpdUVKVQ%3D%3D", + "commands": [ + { + "clickTrackingParams": "CDIQxjQYByITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CDMQjmIiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CDIQxjQYByITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "hasSeparator": true + } + } + ], + "trackingParams": "CDIQxjQYByITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 minutes, 26 seconds" + } + }, + "simpleText": "2:26" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "videoInfo": { + "runs": [ + { + "text": "983K views" + }, + { + "text": " • " + }, + { + "text": "4 years ago" + } + ] + } + } + }, + { + "playlistVideoRenderer": { + "videoId": "5yaY7aG1Lpo", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/5yaY7aG1Lpo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLB-5OLhj51LzsZswqPsGVPOKfkhFA", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/5yaY7aG1Lpo/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDISujKyqhzBYW3SdgC5QTxv7i1KQ", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/5yaY7aG1Lpo/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDBkkukABZ_d3rsEzewfiHimbM2PA", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/5yaY7aG1Lpo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCnqJbFB4UvqIKUQq5xvVH6RQBm7A", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "dreamy nightmares ♫" + } + ], + "accessibility": { + "accessibilityData": { + "label": "dreamy nightmares ♫ by comfi beats 1,107,163 views 4 years ago 3 minutes, 17 seconds" + } + } + }, + "index": { + "simpleText": "9" + }, + "shortBylineText": { + "runs": [ + { + "text": "comfi beats", + "navigationEndpoint": { + "clickTrackingParams": "CC4QxjQYCCITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@comfibeats", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCde_xnXu2lPBmRgAp_nq29A", + "canonicalBaseUrl": "/@comfibeats" + } + } + } + ] + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 17 seconds" + } + }, + "simpleText": "3:17" + }, + "navigationEndpoint": { + "clickTrackingParams": "CC4QxjQYCCITCPGkqOzAh4kDFbXkQgUdzt0gpTIKcGxwcF92aWRlb1okVkxQTFQydzJvQmYxVFpLeXZZX002SnNBU3M3M20td2pMekg1mgEHCAwQ-iwYAQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=5yaY7aG1Lpo&list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5&index=9&pp=iAQB8AUB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "5yaY7aG1Lpo", + "playlistId": "PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5", + "index": 8, + "params": "OAI%3D", + "playerParams": "iAQB8AUB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTFQydzJvQmYxVFpLeXZZX002SnNBU3M3M20td2pMekg1" + } + }, + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---sn-h0jelnes.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odepv=1&id=e72698eda1b52e9a&ip=79.205.210.218&initcwndbps=1971250&mt=1728689816&oweuc=&pxtags=Cg4KAnR4Egg1MTMwMzgyMA&rxtags=Cg4KAnR4Egg1MTMwMzgxOA%2CCg4KAnR4Egg1MTMwMzgxOQ%2CCg4KAnR4Egg1MTMwMzgyMA%2CCg4KAnR4Egg1MTMwMzgyMQ" + } + } + } + } + }, + "lengthSeconds": "197", + "trackingParams": "CC4QxjQYCCITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "isPlayable": true, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDEQ_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CDEQ_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "5yaY7aG1Lpo", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CDEQ_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "5yaY7aG1Lpo" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "5yaY7aG1Lpo" + ] + } + } + ] + } + }, + "trackingParams": "CDEQ_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CDAQ0aoFGAciEwjxpKjswIeJAxW15EIFHc7dIKU=", + "offlineVideoEndpoint": { + "videoId": "5yaY7aG1Lpo", + "onAddCommand": { + "clickTrackingParams": "CDAQ0aoFGAciEwjxpKjswIeJAxW15EIFHc7dIKU=", + "getDownloadActionCommand": { + "videoId": "5yaY7aG1Lpo", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "CDAQ0aoFGAciEwjxpKjswIeJAxW15EIFHc7dIKU=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CC4QxjQYCCITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "Cgs1eWFZN2FHMUxwbw%3D%3D", + "commands": [ + { + "clickTrackingParams": "CC4QxjQYCCITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CC8QjmIiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CC4QxjQYCCITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "hasSeparator": true + } + } + ], + "trackingParams": "CC4QxjQYCCITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 17 seconds" + } + }, + "simpleText": "3:17" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "videoInfo": { + "runs": [ + { + "text": "1.1M views" + }, + { + "text": " • " + }, + { + "text": "4 years ago" + } + ] + } + } + }, + { + "playlistVideoRenderer": { + "videoId": "WwXJrMhbi-s", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/WwXJrMhbi-s/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLByFfew80T9RbyU8-EiLyb6HRU4Ww", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/WwXJrMhbi-s/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCcjh19GL-pWHpkpRD1ioCcyoZcrA", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/WwXJrMhbi-s/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCa7u5cp-4vH6mDG8HUOKyNTETgtQ", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/WwXJrMhbi-s/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB-vP4BDBiu9PfU-F6DQ75iUsL4xQ", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "comfy vibes ♫" + } + ], + "accessibility": { + "accessibilityData": { + "label": "comfy vibes ♫ by comfi beats 1,854,224 views 4 years ago 3 minutes, 14 seconds" + } + } + }, + "index": { + "simpleText": "10" + }, + "shortBylineText": { + "runs": [ + { + "text": "comfi beats", + "navigationEndpoint": { + "clickTrackingParams": "CCoQxjQYCSITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@comfibeats", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCde_xnXu2lPBmRgAp_nq29A", + "canonicalBaseUrl": "/@comfibeats" + } + } + } + ] + }, + "lengthText": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 14 seconds" + } + }, + "simpleText": "3:14" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCoQxjQYCSITCPGkqOzAh4kDFbXkQgUdzt0gpTIKcGxwcF92aWRlb1okVkxQTFQydzJvQmYxVFpLeXZZX002SnNBU3M3M20td2pMekg1mgEHCAwQ-iwYAQ==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=WwXJrMhbi-s&list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5&index=10&pp=iAQB8AUB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "WwXJrMhbi-s", + "playlistId": "PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5", + "index": 9, + "params": "OAI%3D", + "playerParams": "iAQB8AUB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTFQydzJvQmYxVFpLeXZZX002SnNBU3M3M20td2pMekg1" + } + }, + "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=5b05c9acc85b8beb&ip=79.205.210.218&initcwndbps=1851250&mt=1728689816&oweuc=&pxtags=Cg4KAnR4Egg1MTMwMzgyMA&rxtags=Cg4KAnR4Egg1MTMwMzgxOA%2CCg4KAnR4Egg1MTMwMzgxOQ%2CCg4KAnR4Egg1MTMwMzgyMA%2CCg4KAnR4Egg1MTMwMzgyMQ" + } + } + } + } + }, + "lengthSeconds": "194", + "trackingParams": "CCoQxjQYCSITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "isPlayable": true, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "icon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "serviceEndpoint": { + "clickTrackingParams": "CC0Q_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CC0Q_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "WwXJrMhbi-s", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CC0Q_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": [ + "WwXJrMhbi-s" + ], + "params": "CAQ%3D" + } + }, + "videoIds": [ + "WwXJrMhbi-s" + ] + } + } + ] + } + }, + "trackingParams": "CC0Q_pgEGAYiEwjxpKjswIeJAxW15EIFHc7dIKU=" + } + }, + { + "menuServiceItemDownloadRenderer": { + "serviceEndpoint": { + "clickTrackingParams": "CCwQ0aoFGAciEwjxpKjswIeJAxW15EIFHc7dIKU=", + "offlineVideoEndpoint": { + "videoId": "WwXJrMhbi-s", + "onAddCommand": { + "clickTrackingParams": "CCwQ0aoFGAciEwjxpKjswIeJAxW15EIFHc7dIKU=", + "getDownloadActionCommand": { + "videoId": "WwXJrMhbi-s", + "params": "CAIQAA%3D%3D" + } + } + } + }, + "trackingParams": "CCwQ0aoFGAciEwjxpKjswIeJAxW15EIFHc7dIKU=" + } + }, + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "icon": { + "iconType": "SHARE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CCoQxjQYCSITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "CgtXd1hKck1oYmktcw%3D%3D", + "commands": [ + { + "clickTrackingParams": "CCoQxjQYCSITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CCsQjmIiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CCoQxjQYCSITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "hasSeparator": true + } + } + ], + "trackingParams": "CCoQxjQYCSITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 minutes, 14 seconds" + } + }, + "simpleText": "3:14" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { + "runs": [ + { + "text": "Now playing" + } + ] + } + } + } + ], + "videoInfo": { + "runs": [ + { + "text": "1.8M views" + }, + { + "text": " • " + }, + { + "text": "4 years ago" + } + ] + } + } + } + ], + "playlistId": "PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5", + "isEditable": false, + "canReorder": false, + "trackingParams": "CCkQ7zsYACITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "targetId": "PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5" + } + } + ], + "trackingParams": "CCgQuy8YACITCPGkqOzAh4kDFbXkQgUdzt0gpQ==" + } + }, + { + "continuationItemRenderer": { + "trigger": "CONTINUATION_TRIGGER_ON_ITEM_SHOWN", + "continuationEndpoint": { + "clickTrackingParams": "CCcQui8iEwjxpKjswIeJAxW15EIFHc7dIKU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse" + } + }, + "continuationCommand": { + "token": "4qmFsgJXEiRWTFBMVDJ3Mm9CZjFUWkt5dllfTTZKc0FTczczbS13akx6SDUaCGtnRURDT01JmgIkVkxQTFQydzJvQmYxVFpLeXZZX002SnNBU3M3M20td2pMekg1", + "request": "CONTINUATION_REQUEST_TYPE_BROWSE" + } + } + } + } + ], + "trackingParams": "CCcQui8iEwjxpKjswIeJAxW15EIFHc7dIKU=", + "targetId": "VLPLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5" + } + }, + "trackingParams": "CCYQ8JMBGAQiEwjxpKjswIeJAxW15EIFHc7dIKU=" + } + } + ] + } + }, + "header": { + "pageHeaderRenderer": { + "pageTitle": "LilyPichu", + "content": { + "pageHeaderViewModel": { + "title": { + "dynamicTextViewModel": { + "text": { + "content": "LilyPichu" + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CCUQj-QKIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 176655, + "veCounter": 548284775 + } + } + } + } + } + }, + "metadata": { + "contentMetadataViewModel": { + "metadataRows": [ + { + "metadataParts": [ + { + "avatarStack": { + "avatarStackViewModel": { + "avatars": [ + { + "avatarViewModel": { + "image": { + "sources": [ + { + "url": "https://yt3.ggpht.com/ytc/AIdro_kcjhSY2e8WlYjQABOB65Za8n3QYycNHP9zXwxjKpBfOg=s48-c-k-c0x00ffffff-no-rj", + "width": 48, + "height": 48 + } + ], + "processor": { + "borderImageProcessor": { + "circular": true + } + } + }, + "avatarImageSize": "AVATAR_SIZE_XS" + } + } + ], + "text": { + "content": "by Kevin Ramirez", + "commandRuns": [ + { + "startIndex": 0, + "length": 16, + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CCQQi6ULIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@XxthekevinramirezxX", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCai7BcI5lrXC2vdc3ySku8A", + "canonicalBaseUrl": "/@XxthekevinramirezxX" + } + } + } + } + ], + "styleRuns": [ + { + "startIndex": 0, + "length": 16, + "fontColor": 4294967295, + "weightLabel": "FONT_WEIGHT_NORMAL" + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CCQQi6ULIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 184971, + "veCounter": 548284774 + } + } + }, + "accessibilityContext": { + "label": "by Kevin Ramirez" + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CCQQi6ULIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@XxthekevinramirezxX", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCai7BcI5lrXC2vdc3ySku8A", + "canonicalBaseUrl": "/@XxthekevinramirezxX" + } + } + } + } + } + } + } + } + ] + }, + { + "metadataParts": [ + { + "text": { + "content": "Playlist" + } + }, + { + "text": { + "content": "10 videos" + } + }, + { + "text": { + "content": "856 views" + } + } + ] + } + ], + "delimiter": "•", + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CCMQ9eQKIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 176757, + "veCounter": 548284773 + } + } + } + } + } + }, + "actions": { + "flexibleActionsViewModel": { + "actionsRows": [ + { + "actions": [ + { + "buttonViewModel": { + "iconName": "PLAY_ARROW", + "title": "Play all", + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CCIQ2M8CGAEiEwjxpKjswIeJAxW15EIFHc7dIKVaJFZMUExUMncyb0JmMVRaS3l2WV9NNkpzQVNzNzNtLXdqTHpINZoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=DXuNJ267Vss&list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5&pp=iAQB8AUB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "DXuNJ267Vss", + "playlistId": "PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5", + "playerParams": "iAQB8AUB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTFQydzJvQmYxVFpLeXZZX002SnNBU3M3M20td2pMekg1" + } + }, + "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=0d7b8d276ebb56cb&ip=79.205.210.218&initcwndbps=1851250&mt=1728689816&oweuc=&pxtags=Cg4KAnR4Egg1MTMwMzgyMA&rxtags=Cg4KAnR4Egg1MTMwMzgxOA%2CCg4KAnR4Egg1MTMwMzgxOQ%2CCg4KAnR4Egg1MTMwMzgyMA%2CCg4KAnR4Egg1MTMwMzgyMQ" + } + } + } + } + } + }, + "accessibilityText": "Play all", + "style": "BUTTON_VIEW_MODEL_STYLE_OVERLAY", + "trackingParams": "CCIQ2M8CGAEiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "isFullWidth": false, + "type": "BUTTON_VIEW_MODEL_TYPE_FILLED", + "buttonSize": "BUTTON_VIEW_MODEL_SIZE_DEFAULT" + } + }, + { + "toggleButtonViewModel": { + "defaultButtonViewModel": { + "buttonViewModel": { + "iconName": "PLAYLIST_ADD", + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CB4QjqULIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "simpleText": "Want to save this playlist?" + }, + "content": { + "simpleText": "Sign in to save this playlist." + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "simpleText": "Sign in" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCEQ_IYEIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "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%252Fplaylist%253Flist%253DPLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5&hl=en&ec=66428", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CCEQ_IYEIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5" + } + }, + "idamTag": "66428" + } + }, + "trackingParams": "CCEQ_IYEIhMI8aSo7MCHiQMVteRCBR3O3SCl" + } + } + } + } + } + } + }, + "accessibilityText": "Save playlist", + "style": "BUTTON_VIEW_MODEL_STYLE_OVERLAY", + "trackingParams": "CB4QjqULIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "isFullWidth": false, + "type": "BUTTON_VIEW_MODEL_TYPE_TONAL", + "buttonSize": "BUTTON_VIEW_MODEL_SIZE_DEFAULT", + "tooltip": "Save playlist" + } + }, + "toggledButtonViewModel": { + "buttonViewModel": { + "iconName": "PLAYLIST_ADD_CHECK", + "accessibilityText": "Remove from Library", + "style": "BUTTON_VIEW_MODEL_STYLE_OVERLAY", + "trackingParams": "CB4QjqULIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "isFullWidth": false, + "type": "BUTTON_VIEW_MODEL_TYPE_TONAL", + "buttonSize": "BUTTON_VIEW_MODEL_SIZE_DEFAULT", + "tooltip": "Remove from Library" + } + }, + "isToggled": false, + "identifier": "", + "trackingParams": "CB4QjqULIhMI8aSo7MCHiQMVteRCBR3O3SCl" + } + }, + { + "buttonViewModel": { + "iconName": "SHARE", + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CB4QjqULIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "EiJQTFQydzJvQmYxVFpLeXZZX002SnNBU3M3M20td2pMekg1", + "commands": [ + { + "clickTrackingParams": "CB4QjqULIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CCAQjmIiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + } + }, + "accessibilityText": "Share", + "style": "BUTTON_VIEW_MODEL_STYLE_OVERLAY", + "trackingParams": "CB4QjqULIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "isFullWidth": false, + "type": "BUTTON_VIEW_MODEL_TYPE_TONAL", + "buttonSize": "BUTTON_VIEW_MODEL_SIZE_DEFAULT", + "tooltip": "Share" + } + }, + { + "buttonViewModel": { + "iconName": "MORE_VERT", + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CB4QjqULIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "showSheetCommand": { + "panelLoadingStrategy": { + "inlineContent": { + "sheetViewModel": { + "content": { + "listViewModel": { + "listItems": [ + { + "listItemViewModel": { + "title": { + "content": "Shuffle" + }, + "leadingImage": { + "sources": [ + { + "clientResource": { + "imageName": "SHUFFLE" + } + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CB8QsssCGAUiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "enableDisplayloggerExperiment": true + } + }, + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CB8QsssCGAUiEwjxpKjswIeJAxW15EIFHc7dIKVaJFZMUExUMncyb0JmMVRaS3l2WV9NNkpzQVNzNzNtLXdqTHpINZoBAxD6LA==", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=MJedvm2TE8o&list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5&pp=iAQB8AUB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "MJedvm2TE8o", + "playlistId": "PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5", + "params": "CP0LIAM%3D", + "playerParams": "iAQB8AUB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTFQydzJvQmYxVFpLeXZZX002SnNBU3M3M20td2pMekg1" + } + }, + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---sn-h0jeenek.googlevideo.com/initplayback?source=youtube&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&msp=1&odepv=1&id=30979dbe6d9313ca&ip=79.205.210.218&initcwndbps=1971250&mt=1728689816&oweuc=&pxtags=Cg4KAnR4Egg1MTMwMzgyMA&rxtags=Cg4KAnR4Egg1MTMwMzgxOA%2CCg4KAnR4Egg1MTMwMzgxOQ%2CCg4KAnR4Egg1MTMwMzgyMA%2CCg4KAnR4Egg1MTMwMzgyMQ" + } + } + } + } + } + } + } + } + } + } + ] + } + } + } + } + } + } + } + }, + "accessibilityText": "More actions", + "style": "BUTTON_VIEW_MODEL_STYLE_OVERLAY", + "trackingParams": "CB4QjqULIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "isFullWidth": false, + "type": "BUTTON_VIEW_MODEL_TYPE_TONAL", + "buttonSize": "BUTTON_VIEW_MODEL_SIZE_DEFAULT", + "state": "BUTTON_VIEW_MODEL_STATE_ACTIVE", + "enableIconButton": true + } + } + ] + } + ], + "minimumRowHeight": 44, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CB4QjqULIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 184974, + "veCounter": 548284772 + } + } + } + } + } + }, + "description": { + "descriptionPreviewViewModel": { + "truncationText": { + "content": "...more", + "styleRuns": [ + { + "startIndex": 0, + "length": 7, + "weight": 500 + } + ] + }, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CB0Qr_4KIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 180015, + "veCounter": 548284771 + } + } + } + } + } + }, + "heroImage": { + "contentPreviewImageViewModel": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/DXuNJ267Vss/hqdefault.jpg?sqp=-oaymwEWCKgBEF5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLAHp6V96b70x4SWm9Pe6WEHnQhP6A", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/DXuNJ267Vss/hqdefault.jpg?sqp=-oaymwEWCMQBEG5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLDPCehYWYW8HhToloH9MJWD_wKq1w", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/DXuNJ267Vss/hqdefault.jpg?sqp=-oaymwEXCPYBEIoBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLA7aSRV3Ymv8oEFYT7TUpwSZLPbCA", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/DXuNJ267Vss/hqdefault.jpg?sqp=-oaymwEXCNACELwBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAYMzfwTTZbTbHcDUK9kIa450u_7g", + "width": 336, + "height": 188 + } + ] + }, + "style": "CONTENT_PREVIEW_IMAGE_STYLE_HORIZONTAL_RECTANGLE_16_BY_9", + "layoutMode": "CONTENT_PREVIEW_IMAGE_LAYOUT_MODE_FULL_WIDTH", + "overlays": [ + { + "thumbnailHoverOverlayViewModel": { + "icon": { + "sources": [ + { + "clientResource": { + "imageName": "PLAY_ALL" + } + } + ] + }, + "text": { + "content": "Play all", + "styleRuns": [ + { + "startIndex": 0, + "length": 8 + } + ] + }, + "style": "THUMBNAIL_HOVER_OVERLAY_STYLE_COVER", + "rendererContext": { + "commandContext": { + "onTap": { + "innertubeCommand": { + "clickTrackingParams": "CBwQiqULIhMI8aSo7MCHiQMVteRCBR3O3SClWiRWTFBMVDJ3Mm9CZjFUWkt5dllfTTZKc0FTczczbS13akx6SDWaAQMQ-iw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=DXuNJ267Vss&list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5&pp=iAQB8AUB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "DXuNJ267Vss", + "playlistId": "PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5", + "playerParams": "iAQB8AUB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTFQydzJvQmYxVFpLeXZZX002SnNBU3M3M20td2pMekg1" + } + }, + "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=0d7b8d276ebb56cb&ip=79.205.210.218&initcwndbps=1851250&mt=1728689816&oweuc=&pxtags=Cg4KAnR4Egg1MTMwMzgyMA&rxtags=Cg4KAnR4Egg1MTMwMzgxOA%2CCg4KAnR4Egg1MTMwMzgxOQ%2CCg4KAnR4Egg1MTMwMzgyMA%2CCg4KAnR4Egg1MTMwMzgyMQ" + } + } + } + } + } + } + } + } + } + } + ], + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CBwQiqULIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 184970, + "veCounter": 548284770 + } + } + }, + "accessibilityContext": { + "label": "Play all" + } + } + } + }, + "background": { + "cinematicContainerViewModel": { + "backgroundImageConfig": { + "image": { + "sources": [ + { + "url": "https://i.ytimg.com/vi/DXuNJ267Vss/hqdefault.jpg?sqp=-oaymwEWCKgBEF5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLAHp6V96b70x4SWm9Pe6WEHnQhP6A", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/DXuNJ267Vss/hqdefault.jpg?sqp=-oaymwEWCMQBEG5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLDPCehYWYW8HhToloH9MJWD_wKq1w", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/DXuNJ267Vss/hqdefault.jpg?sqp=-oaymwEXCPYBEIoBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLA7aSRV3Ymv8oEFYT7TUpwSZLPbCA", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/DXuNJ267Vss/hqdefault.jpg?sqp=-oaymwEXCNACELwBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAYMzfwTTZbTbHcDUK9kIa450u_7g", + "width": 336, + "height": 188 + } + ] + } + }, + "gradientColorConfig": [ + { + "lightThemeColor": 3426562162, + "darkThemeColor": 3426562162, + "startLocation": 0 + }, + { + "lightThemeColor": 1279078514, + "darkThemeColor": 1279078514, + "startLocation": 0.33 + }, + { + "lightThemeColor": 3426562162, + "darkThemeColor": 4279176975, + "startLocation": 1 + } + ], + "config": { + "lightThemeBackgroundColor": 4282200178, + "darkThemeBackgroundColor": 4282200178, + "colorSourceSizeMultiplier": 2, + "applyClientImageBlur": true + } + } + }, + "hasTopbarAnimation": true, + "rendererContext": { + "loggingContext": { + "loggingDirectives": { + "trackingParams": "CBsQot8KIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "visibility": { + "types": "12" + }, + "clientVeSpec": { + "uiType": 176034, + "veCounter": 548284769 + } + } + } + } + } + }, + "enableSidebarView": true + } + }, + "metadata": { + "playlistMetadataRenderer": { + "title": "LilyPichu", + "androidAppindexingLink": "android-app://com.google.android.youtube/http/www.youtube.com/playlist?list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5", + "iosAppindexingLink": "ios-app://544007664/vnd.youtube/www.youtube.com/playlist?list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5" + } + }, + "trackingParams": "CAAQhGciEwjxpKjswIeJAxW15EIFHc7dIKU=", + "topbar": { + "desktopTopbarRenderer": { + "logo": { + "topbarLogoRenderer": { + "iconImage": { + "iconType": "YOUTUBE_LOGO" + }, + "tooltipText": { + "runs": [ + { + "text": "YouTube Home" + } + ] + }, + "endpoint": { + "clickTrackingParams": "CBoQsV4iEwjxpKjswIeJAxW15EIFHc7dIKU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/", + "webPageType": "WEB_PAGE_TYPE_BROWSE", + "rootVe": 3854, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "FEwhat_to_watch" + } + }, + "trackingParams": "CBoQsV4iEwjxpKjswIeJAxW15EIFHc7dIKU=", + "overrideEntityKey": "EgZ0b3BiYXIg9QEoAQ%3D%3D" + } + }, + "searchbox": { + "fusionSearchboxRenderer": { + "icon": { + "iconType": "SEARCH" + }, + "placeholderText": { + "runs": [ + { + "text": "Search" + } + ] + }, + "config": { + "webSearchboxConfig": { + "requestLanguage": "en", + "requestDomain": "us", + "hasOnscreenKeyboard": false, + "focusSearchbox": true + } + }, + "trackingParams": "CBgQ7VAiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "searchEndpoint": { + "clickTrackingParams": "CBgQ7VAiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "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": "CBkQ8FsiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "accessibilityData": { + "accessibilityData": { + "label": "Clear search query" + } + } + } + } + } + }, + "trackingParams": "CAwQq6wBIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "topbarButtons": [ + { + "topbarMenuButtonRenderer": { + "icon": { + "iconType": "MORE_VERT" + }, + "menuRequest": { + "clickTrackingParams": "CBYQ_qsBGAAiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/account/account_menu" + } + }, + "signalServiceEndpoint": { + "signal": "GET_ACCOUNT_MENU", + "actions": [ + { + "clickTrackingParams": "CBYQ_qsBGAAiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "openPopupAction": { + "popup": { + "multiPageMenuRenderer": { + "trackingParams": "CBcQ_6sBIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "style": "MULTI_PAGE_MENU_STYLE_TYPE_SYSTEM", + "showLoadingSpinner": true + } + }, + "popupType": "DROPDOWN", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CBYQ_qsBGAAiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "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": "CBUQ1IAEGAEiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "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": "CBUQ1IAEGAEiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "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": "CBQQ8FsiEwjxpKjswIeJAxW15EIFHc7dIKU=" + } + }, + "trackingParams": "CBMQteYDIhMI8aSo7MCHiQMVteRCBR3O3SCl" + } + }, + "backButton": { + "buttonRenderer": { + "trackingParams": "CBIQvIYDIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "command": { + "clickTrackingParams": "CBIQvIYDIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CBIQvIYDIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "signalAction": { + "signal": "HISTORY_BACK" + } + } + ] + } + } + } + }, + "forwardButton": { + "buttonRenderer": { + "trackingParams": "CBEQvYYDIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "command": { + "clickTrackingParams": "CBEQvYYDIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CBEQvYYDIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "signalAction": { + "signal": "HISTORY_FORWARD" + } + } + ] + } + } + } + }, + "a11ySkipNavigationButton": { + "buttonRenderer": { + "style": "STYLE_DEFAULT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Skip navigation" + } + ] + }, + "trackingParams": "CBAQ8FsiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "command": { + "clickTrackingParams": "CBAQ8FsiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CBAQ8FsiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "signalAction": { + "signal": "SKIP_NAVIGATION" + } + } + ] + } + } + } + }, + "voiceSearchButton": { + "buttonRenderer": { + "style": "STYLE_DEFAULT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "serviceEndpoint": { + "clickTrackingParams": "CA0Q7a8FIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CA0Q7a8FIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "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": "CA8Q0LEFIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "accessibilityData": { + "accessibilityData": { + "label": "Cancel" + } + } + } + }, + "trackingParams": "CA4Q7q8FIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "microphoneOffPromptHeader": { + "runs": [ + { + "text": "Microphone off. Try again." + } + ] + } + } + }, + "popupType": "TOP_ALIGNED_DIALOG" + } + } + ] + } + }, + "icon": { + "iconType": "MICROPHONE_ON" + }, + "tooltip": "Search with your voice", + "trackingParams": "CA0Q7a8FIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "accessibilityData": { + "accessibilityData": { + "label": "Search with your voice" + } + } + } + } + } + }, + "microformat": { + "microformatDataRenderer": { + "urlCanonical": "http://www.youtube.com/playlist?list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5", + "title": "LilyPichu", + "description": "", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/DXuNJ267Vss/hqdefault.jpg?sqp=-oaymwEXCOADEI4CSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDBEcCw2mrex0rozvhImix0ITAXwA&days_since_epoch=20007", + "width": 480, + "height": 270 + } + ] + }, + "siteName": "YouTube", + "appName": "YouTube", + "androidPackage": "com.google.android.youtube", + "iosAppStoreId": "544007664", + "iosAppArguments": "http://www.youtube.com/playlist?list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5", + "ogType": "website", + "urlApplinksWeb": "http://www.youtube.com/playlist?list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5&feature=applinks", + "urlApplinksIos": "http://www.youtube.com/playlist?list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5&feature=applinks", + "urlApplinksAndroid": "http://www.youtube.com/playlist?list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5&feature=applinks", + "urlTwitterIos": "http://www.youtube.com/playlist?list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5&feature=twitter-deep-link", + "urlTwitterAndroid": "http://www.youtube.com/playlist?list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5&feature=twitter-deep-link", + "twitterCardType": "summary", + "twitterSiteHandle": "@YouTube", + "schemaDotOrgType": "http://schema.org/WebPage", + "noindex": false, + "unlisted": false, + "linkAlternates": [ + { + "hrefUrl": "http://www.youtube.com/playlist?list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5" + }, + { + "hrefUrl": "android-app://com.google.android.youtube/http/youtube.comhttp://www.youtube.com/playlist?list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5" + }, + { + "hrefUrl": "ios-app://544007664/http/youtube.comhttp://www.youtube.com/playlist?list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5" + } + ] + } + }, + "sidebar": { + "playlistSidebarRenderer": { + "items": [ + { + "playlistSidebarPrimaryInfoRenderer": { + "thumbnailRenderer": { + "playlistVideoThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/DXuNJ267Vss/hqdefault.jpg?sqp=-oaymwEWCKgBEF5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLAHp6V96b70x4SWm9Pe6WEHnQhP6A", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/DXuNJ267Vss/hqdefault.jpg?sqp=-oaymwEWCMQBEG5IWvKriqkDCQgBFQAAiEIYAQ==&rs=AOn4CLDPCehYWYW8HhToloH9MJWD_wKq1w", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/DXuNJ267Vss/hqdefault.jpg?sqp=-oaymwEXCPYBEIoBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLA7aSRV3Ymv8oEFYT7TUpwSZLPbCA", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/DXuNJ267Vss/hqdefault.jpg?sqp=-oaymwEXCNACELwBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLAYMzfwTTZbTbHcDUK9kIa450u_7g", + "width": 336, + "height": 188 + } + ] + }, + "trackingParams": "CAsQy-wJIhMI8aSo7MCHiQMVteRCBR3O3SCl" + } + }, + "title": { + "runs": [ + { + "text": "LilyPichu", + "navigationEndpoint": { + "clickTrackingParams": "CAEQk-8CIhMI8aSo7MCHiQMVteRCBR3O3SClWiRWTFBMVDJ3Mm9CZjFUWkt5dllfTTZKc0FTczczbS13akx6SDWaAQMQ-iw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=DXuNJ267Vss&list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5&pp=iAQB8AUB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "DXuNJ267Vss", + "playlistId": "PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5", + "playerParams": "iAQB8AUB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTFQydzJvQmYxVFpLeXZZX002SnNBU3M3M20td2pMekg1" + } + }, + "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=0d7b8d276ebb56cb&ip=79.205.210.218&initcwndbps=1851250&mt=1728689816&oweuc=&pxtags=Cg4KAnR4Egg1MTMwMzgyMA&rxtags=Cg4KAnR4Egg1MTMwMzgxOA%2CCg4KAnR4Egg1MTMwMzgxOQ%2CCg4KAnR4Egg1MTMwMzgyMA%2CCg4KAnR4Egg1MTMwMzgyMQ" + } + } + } + } + } + } + ] + }, + "stats": [ + { + "runs": [ + { + "text": "10" + }, + { + "text": " videos" + } + ] + }, + { + "simpleText": "856 views" + }, + { + "runs": [ + { + "text": "Last updated on " + }, + { + "text": "Oct 13, 2020" + } + ] + } + ], + "menu": { + "menuRenderer": { + "items": [ + { + "menuNavigationItemRenderer": { + "text": { + "simpleText": "Report playlist" + }, + "icon": { + "iconType": "FLAG" + }, + "navigationEndpoint": { + "clickTrackingParams": "CAEQk-8CIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "simpleText": "Need to report the playlist?" + }, + "content": { + "simpleText": "Sign in to report inappropriate content." + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BRAND", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CAoQ8FsiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "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%252Fchannel%252FPLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5&hl=en", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAoQ8FsiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5", + "webPageType": "WEB_PAGE_TYPE_BROWSE", + "rootVe": 6827, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5" + } + } + } + }, + "trackingParams": "CAoQ8FsiEwjxpKjswIeJAxW15EIFHc7dIKU=" + } + } + } + } + } + }, + "trackingParams": "CAEQk-8CIhMI8aSo7MCHiQMVteRCBR3O3SCl" + } + } + ], + "trackingParams": "CAEQk-8CIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "topLevelButtons": [ + { + "toggleButtonRenderer": { + "style": { + "styleType": "STYLE_TEXT" + }, + "size": { + "sizeType": "SIZE_DEFAULT" + }, + "isToggled": false, + "isDisabled": false, + "defaultIcon": { + "iconType": "PLAYLIST_ADD" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "trackingParams": "CAgQmE0YCCITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "defaultTooltip": "Save playlist", + "toggledTooltip": "Remove from Library", + "defaultNavigationEndpoint": { + "clickTrackingParams": "CAgQmE0YCCITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "commandMetadata": { + "webCommandMetadata": { + "ignoreNavigation": true + } + }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { + "simpleText": "Want to save this playlist?" + }, + "content": { + "simpleText": "Sign in to save this playlist." + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "simpleText": "Sign in" + }, + "navigationEndpoint": { + "clickTrackingParams": "CAkQ_IYEIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "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%252Fplaylist%253Flist%253DPLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5&hl=en&ec=66428", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAkQ_IYEIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5" + } + }, + "idamTag": "66428" + } + }, + "trackingParams": "CAkQ_IYEIhMI8aSo7MCHiQMVteRCBR3O3SCl" + } + } + } + } + } + }, + "accessibilityData": { + "accessibilityData": { + "label": "Save playlist" + } + }, + "toggledAccessibilityData": { + "accessibilityData": { + "label": "Remove from Library" + } + } + } + }, + { + "buttonRenderer": { + "style": "STYLE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { + "iconType": "SHUFFLE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CAcQ8FsYCSITCPGkqOzAh4kDFbXkQgUdzt0gpVokVkxQTFQydzJvQmYxVFpLeXZZX002SnNBU3M3M20td2pMekg1mgEDEPos", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=A2zepLiuEJU&list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5&pp=iAQB8AUB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "A2zepLiuEJU", + "playlistId": "PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5", + "params": "CLA-IAc%3D", + "playerParams": "iAQB8AUB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTFQydzJvQmYxVFpLeXZZX002SnNBU3M3M20td2pMekg1" + } + }, + "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=036cdea4b8ae1095&ip=79.205.210.218&initcwndbps=1971250&mt=1728689816&oweuc=&pxtags=Cg4KAnR4Egg1MTMwMzgyMA&rxtags=Cg4KAnR4Egg1MTMwMzgxOA%2CCg4KAnR4Egg1MTMwMzgxOQ%2CCg4KAnR4Egg1MTMwMzgyMA%2CCg4KAnR4Egg1MTMwMzgyMQ" + } + } + } + } + }, + "accessibility": { + "label": "Shuffle play" + }, + "tooltip": "Shuffle play", + "trackingParams": "CAcQ8FsYCSITCPGkqOzAh4kDFbXkQgUdzt0gpQ==" + } + }, + { + "buttonRenderer": { + "style": "STYLE_DEFAULT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "serviceEndpoint": { + "clickTrackingParams": "CAUQ8FsYCiITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/share/get_share_panel" + } + }, + "shareEntityServiceEndpoint": { + "serializedShareEntity": "EiJQTFQydzJvQmYxVFpLeXZZX002SnNBU3M3M20td2pMekg1", + "commands": [ + { + "clickTrackingParams": "CAUQ8FsYCiITCPGkqOzAh4kDFbXkQgUdzt0gpQ==", + "openPopupAction": { + "popup": { + "unifiedSharePanelRenderer": { + "trackingParams": "CAYQjmIiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "showLoadingSpinner": true + } + }, + "popupType": "DIALOG", + "beReused": true + } + } + ] + } + }, + "icon": { + "iconType": "SHARE" + }, + "accessibility": { + "label": "Share" + }, + "tooltip": "Share", + "trackingParams": "CAUQ8FsYCiITCPGkqOzAh4kDFbXkQgUdzt0gpQ==" + } + } + ], + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlaySidePanelRenderer": { + "text": { + "simpleText": "PLAY ALL" + }, + "icon": { + "iconType": "PLAY_ALL" + } + } + } + ], + "navigationEndpoint": { + "clickTrackingParams": "CAEQk-8CIhMI8aSo7MCHiQMVteRCBR3O3SClWiRWTFBMVDJ3Mm9CZjFUWkt5dllfTTZKc0FTczczbS13akx6SDWaAQMQ-iw=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=DXuNJ267Vss&list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5&pp=iAQB8AUB", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "DXuNJ267Vss", + "playlistId": "PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5", + "playerParams": "iAQB8AUB", + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GiJQTFQydzJvQmYxVFpLeXZZX002SnNBU3M3M20td2pMekg1" + } + }, + "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=0d7b8d276ebb56cb&ip=79.205.210.218&initcwndbps=1851250&mt=1728689816&oweuc=&pxtags=Cg4KAnR4Egg1MTMwMzgyMA&rxtags=Cg4KAnR4Egg1MTMwMzgxOA%2CCg4KAnR4Egg1MTMwMzgxOQ%2CCg4KAnR4Egg1MTMwMzgyMA%2CCg4KAnR4Egg1MTMwMzgyMQ" + } + } + } + } + }, + "description": {}, + "showMoreText": { + "runs": [ + { + "text": "Show more" + } + ] + } + } + }, + { + "playlistSidebarSecondaryInfoRenderer": { + "videoOwner": { + "videoOwnerRenderer": { + "thumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/ytc/AIdro_kcjhSY2e8WlYjQABOB65Za8n3QYycNHP9zXwxjKpBfOg=s48-c-k-c0x00ffffff-no-rj", + "width": 48, + "height": 48 + }, + { + "url": "https://yt3.ggpht.com/ytc/AIdro_kcjhSY2e8WlYjQABOB65Za8n3QYycNHP9zXwxjKpBfOg=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + }, + { + "url": "https://yt3.ggpht.com/ytc/AIdro_kcjhSY2e8WlYjQABOB65Za8n3QYycNHP9zXwxjKpBfOg=s176-c-k-c0x00ffffff-no-rj", + "width": 176, + "height": 176 + } + ] + }, + "title": { + "runs": [ + { + "text": "Kevin Ramirez", + "navigationEndpoint": { + "clickTrackingParams": "CAQQ4TkiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@XxthekevinramirezxX", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCai7BcI5lrXC2vdc3ySku8A", + "canonicalBaseUrl": "/@XxthekevinramirezxX" + } + } + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CAQQ4TkiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/@XxthekevinramirezxX", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCai7BcI5lrXC2vdc3ySku8A", + "canonicalBaseUrl": "/@XxthekevinramirezxX" + } + }, + "trackingParams": "CAQQ4TkiEwjxpKjswIeJAxW15EIFHc7dIKU=" + } + }, + "button": { + "buttonRenderer": { + "style": "STYLE_DESTRUCTIVE", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { + "runs": [ + { + "text": "Subscribe" + } + ] + }, + "navigationEndpoint": { + "clickTrackingParams": "CAIQ8FsiEwjxpKjswIeJAxW15EIFHc7dIKU=", + "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": "CAMQ_YYEIhMI8aSo7MCHiQMVteRCBR3O3SClMglzdWJzY3JpYmU=", + "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%252Fplaylist%253Flist%253DPLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5%26continue_action%3DQUFFLUhqbGJjc3lRYkF2cVE4VnlxNTZpX2Q1dTRLcEUzd3xBQ3Jtc0tucXVYNHoyX2lrWm95dTVUaWV2bmNLa2llN2c3ZUFJcU5IaFhEOFFOYXlmVWQ2RlZpejlUWERLdzBnbzJVM1VuVnJqdzRWQXByMWVZOHVidTBXclNqQkVBd3QtRk9iaTBIZXBzbjVFNmswOHQxUmdSR2I3ZXdyYUROUzRmODMyWTV6bVAxbWp1R0pDSnY0eWVIV0xBVmVSSnNJelRMdlFTRmdQc2t0XzJyT05kWHRvZHlmUHUwTmJUaG8wS29kZUJQRHFoMXk&hl=en&ec=66429", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CAMQ_YYEIhMI8aSo7MCHiQMVteRCBR3O3SCl", + "commandMetadata": { + "webCommandMetadata": { + "url": "/playlist?list=PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5", + "webPageType": "WEB_PAGE_TYPE_PLAYLIST", + "rootVe": 5754, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "VLPLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5" + } + }, + "continueAction": "QUFFLUhqbGJjc3lRYkF2cVE4VnlxNTZpX2Q1dTRLcEUzd3xBQ3Jtc0tucXVYNHoyX2lrWm95dTVUaWV2bmNLa2llN2c3ZUFJcU5IaFhEOFFOYXlmVWQ2RlZpejlUWERLdzBnbzJVM1VuVnJqdzRWQXByMWVZOHVidTBXclNqQkVBd3QtRk9iaTBIZXBzbjVFNmswOHQxUmdSR2I3ZXdyYUROUzRmODMyWTV6bVAxbWp1R0pDSnY0eWVIV0xBVmVSSnNJelRMdlFTRmdQc2t0XzJyT05kWHRvZHlmUHUwTmJUaG8wS29kZUJQRHFoMXk", + "idamTag": "66429" + } + }, + "trackingParams": "CAMQ_YYEIhMI8aSo7MCHiQMVteRCBR3O3SCl" + } + } + } + } + } + }, + "trackingParams": "CAIQ8FsiEwjxpKjswIeJAxW15EIFHc7dIKU=" + } + } + } + } + ], + "trackingParams": "CAEQk-8CIhMI8aSo7MCHiQMVteRCBR3O3SCl" + } + } +} From 96776e98d76fa1d31d5f84dbceafbe8f9dfd9085 Mon Sep 17 00:00:00 2001 From: ThetaBot Date: Sat, 12 Oct 2024 03:58:22 +0000 Subject: [PATCH 151/347] chore(deps): update rust crate rstest to 0.23.0 (#12) --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index e4b9260..6587cd2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -66,7 +66,7 @@ dirs = "5.0.0" filenamify = "0.1.0" # Testing -rstest = "0.22.0" +rstest = "0.23.0" tokio-test = "0.4.2" insta = { version = "1.17.1", features = ["ron", "redactions"] } path_macro = "1.0.0" From f293cb40449fcd0180ff8d8871acc72f07d8fe16 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sat, 12 Oct 2024 05:59:18 +0200 Subject: [PATCH 152/347] ci: update renovate config --- renovate.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/renovate.json b/renovate.json index 3ff20b1..0aac422 100644 --- a/renovate.json +++ b/renovate.json @@ -1,7 +1,8 @@ { "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": [ - "config:best-practices" + "config:best-practices", + ":semanticCommitTypeAll(chore)" ], "semanticCommits": "enabled", "automerge": true, From 71d3ec65ddafa966ef6b41cf4eb71687ba4b594c Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 13 Oct 2024 05:06:13 +0200 Subject: [PATCH 153/347] feat: add mobile client --- cli/src/main.rs | 2 + src/client/mod.rs | 332 +++++++++++++++------------------- src/client/player.rs | 1 + src/client/response/player.rs | 8 +- tests/youtube.rs | 6 +- 5 files changed, 161 insertions(+), 188 deletions(-) diff --git a/cli/src/main.rs b/cli/src/main.rs index ceeabb9..67d36fb 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -270,6 +270,7 @@ enum MusicSearchCategory { #[derive(Copy, Clone, PartialEq, Eq, ValueEnum)] enum ClientTypeArg { Desktop, + Mobile, Tv, TvEmbed, Android, @@ -322,6 +323,7 @@ impl From for ClientType { fn from(value: ClientTypeArg) -> Self { match value { ClientTypeArg::Desktop => Self::Desktop, + ClientTypeArg::Mobile => Self::Mobile, ClientTypeArg::TvEmbed => Self::TvHtml5Embed, ClientTypeArg::Tv => Self::Tv, ClientTypeArg::Android => Self::Android, diff --git a/src/client/mod.rs b/src/client/mod.rs index 9293160..772afc1 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -22,6 +22,7 @@ mod video_details; #[cfg_attr(docsrs, doc(cfg(feature = "rss")))] mod channel_rss; +use std::collections::HashMap; use std::path::PathBuf; use std::sync::Arc; use std::{borrow::Cow, fmt::Debug, time::Duration}; @@ -55,21 +56,32 @@ pub enum ClientType { Desktop, /// Client used by music.youtube.com /// - /// can access YTM-specific data, cannot access non-music content + /// - can access YTM-specific data + /// - cannot access non-music content DesktopMusic, + /// Client used by m.youtube.com + /// + /// - includes lower resolution audio streams + /// - does not return audio tracks in different languages + Mobile, /// Client used by the embedded player for Smart TVs /// - /// can access age-restricted videos, cannot access non-embeddable videos + /// - can access age-restricted videos + /// - cannot access non-embeddable videos TvHtml5Embed, /// Client used by youtube.com/tv + /// + /// - Does not return video metadata when fetching the player Tv, /// Client used by the Android app /// - /// no obfuscated stream URLs, includes lower resolution audio streams + /// - no obfuscated stream URLs + /// - includes lower resolution audio streams Android, /// Client used by the iOS app /// - /// no obfuscated stream URLs + /// - no obfuscated stream URLs + /// - does not include opus audio streams Ios, } @@ -78,6 +90,7 @@ impl ClientType { match self { ClientType::Desktop | ClientType::DesktopMusic + | ClientType::Mobile | ClientType::TvHtml5Embed | ClientType::Tv => true, ClientType::Android | ClientType::Ios => false, @@ -188,6 +201,7 @@ struct QContinuation<'a> { } const DEFAULT_UA: &str = "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.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"; const CONSENT_COOKIE: &str = "SOCS=CAISAiAD"; @@ -195,20 +209,23 @@ 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/"; 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_TV_URL: &str = "https://www.youtube.com/tv"; const DISABLE_PRETTY_PRINT_PARAMETER: &str = "prettyPrint=false"; -// Desktop client -const DESKTOP_CLIENT_VERSION: &str = "2.20230126.00.00"; -const DESKTOP_MUSIC_CLIENT_VERSION: &str = "1.20230123.01.01"; -const TV_CLIENT_VERSION: &str = "7.20240724.13.00"; +// 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 TVHTML5_CLIENT_VERSION: &str = "2.0"; -// Mobile client -const MOBILE_CLIENT_VERSION: &str = "18.03.33"; +// Mobile app client +const APP_CLIENT_VERSION: &str = "18.03.33"; const IOS_DEVICE_MODEL: &str = "iPhone14,5"; static CLIENT_VERSION_REGEX: Lazy = @@ -370,22 +387,14 @@ impl Default for RustyPipeOpts { #[derive(Default, Debug)] struct CacheHolder { - desktop_client: RwLock>, - music_client: RwLock>, - tv_client: RwLock>, + clients: HashMap>>, deobf: RwLock>, } #[derive(Default, Debug, Clone, Serialize, Deserialize)] #[serde(default)] struct CacheData { - #[serde(skip_serializing_if = "CacheEntry::is_none")] - desktop_client: CacheEntry, - #[serde(skip_serializing_if = "CacheEntry::is_none")] - music_client: CacheEntry, - #[serde(skip_serializing_if = "CacheEntry::is_none")] - tv_client: CacheEntry, - #[serde(skip_serializing_if = "CacheEntry::is_none")] + clients: HashMap>, deobf: CacheEntry, } @@ -436,10 +445,6 @@ impl CacheEntry { CacheEntry::None => None, } } - - fn is_none(&self) -> bool { - matches!(self, Self::None) - } } impl From for CacheEntry { @@ -506,7 +511,7 @@ impl RustyPipeBuilder { Box::new(FileStorage::new(cache_file)) }); - let cdata = storage + let mut cdata = storage .as_ref() .and_then(|storage| storage.read()) .and_then(|data| match serde_json::from_str::(&data) { @@ -518,6 +523,16 @@ impl RustyPipeBuilder { }) .unwrap_or_default(); + let cache_clients = [ + ClientType::Desktop, + ClientType::DesktopMusic, + ClientType::Mobile, + ClientType::Tv, + ] + .into_iter() + .map(|c| (c, RwLock::new(cdata.clients.remove(&c).unwrap_or_default()))) + .collect::>(); + Ok(RustyPipe { inner: Arc::new(RustyPipeRef { http, @@ -529,9 +544,7 @@ impl RustyPipeBuilder { }), n_http_retries: self.n_http_retries, cache: CacheHolder { - desktop_client: RwLock::new(cdata.desktop_client), - music_client: RwLock::new(cdata.music_client), - tv_client: RwLock::new(cdata.tv_client), + clients: cache_clients, deobf: RwLock::new(cdata.deobf), }, default_opts: self.default_opts, @@ -804,41 +817,30 @@ impl RustyPipe { Ok(self.http_request_estatus(request).await?.text().await?) } - /// Extract the current version of the YouTube desktop client from the website. - async fn extract_desktop_client_version(&self) -> Result { - self.extract_client_version( - Some("https://www.youtube.com/sw.js"), - "https://www.youtube.com/results?search_query=", - YOUTUBE_HOME_URL, - None, - ) - .await - } + async fn extract_client_version(&self, client_type: ClientType) -> Result { + let (sw_url, html_url, origin, ua) = match client_type { + ClientType::Desktop => ( + Some("https://www.youtube.com/sw.js"), + "https://www.youtube.com/results?search_query=", + YOUTUBE_HOME_URL, + None, + ), + ClientType::DesktopMusic => ( + Some("https://music.youtube.com/sw.js"), + YOUTUBE_MUSIC_HOME_URL, + YOUTUBE_MUSIC_HOME_URL, + None, + ), + ClientType::Mobile => ( + Some("https://m.youtube.com/sw.js"), + "https://m.youtube.com/results?search_query=", + YOUTUBE_MUSIC_HOME_URL, + Some(MOBILE_UA), + ), + ClientType::Tv => (None, YOUTUBE_TV_URL, YOUTUBE_TV_URL, Some(TV_UA)), + _ => panic!("cannot extract client version for {client_type:?}"), + }; - /// Extract the current version of the YouTube Music desktop client from the website. - async fn extract_music_client_version(&self) -> Result { - self.extract_client_version( - Some("https://music.youtube.com/sw.js"), - YOUTUBE_MUSIC_HOME_URL, - YOUTUBE_MUSIC_HOME_URL, - None, - ) - .await - } - - /// Extract the current version of the YouTube TV client from the website. - async fn extract_tv_client_version(&self) -> Result { - self.extract_client_version(None, YOUTUBE_TV_URL, YOUTUBE_TV_URL, Some(TV_UA)) - .await - } - - async fn extract_client_version( - &self, - sw_url: Option<&str>, - html_url: &str, - origin: &str, - ua: Option<&str>, - ) -> Result { let from_swjs = sw_url.map(|sw_url| async move { let swjs = self .http_request_txt( @@ -855,9 +857,7 @@ impl RustyPipe { .await?; util::get_cg_from_regex(&CLIENT_VERSION_REGEX, &swjs, 1).ok_or(Error::Extraction( - ExtractionError::InvalidData(Cow::Borrowed( - "Could not find client version in sw.js", - )), + ExtractionError::InvalidData("Could not find client version in sw.js".into()), )) }); @@ -870,9 +870,7 @@ impl RustyPipe { let html = self.http_request_txt(&builder.build().unwrap()).await?; util::get_cg_from_regex(&CLIENT_VERSION_REGEX, &html, 1).ok_or(Error::Extraction( - ExtractionError::InvalidData(Cow::Borrowed( - "Could not find client version on html page", - )), + ExtractionError::InvalidData("Could not find client version on html page".into()), )) }; @@ -886,95 +884,35 @@ impl RustyPipe { } } - /// Get the current version of the YouTube web client from the following sources - /// - /// 1. from cache - /// 2. from YouTube's service worker script (`sw.js`) - /// 3. from the YouTube website - /// 4. fall back to the hardcoded version - async fn get_desktop_client_version(&self) -> String { + async fn get_client_version(&self, client_type: ClientType) -> Cow<'static, str> { // Write lock here to prevent concurrent tasks from fetching the same data - let mut desktop_client = self.inner.cache.desktop_client.write().await; + let mut client = self.inner.cache.clients[&client_type].write().await; - match desktop_client.get() { - Some(cdata) => cdata.version.clone(), + match client.get() { + Some(cdata) => cdata.version.clone().into(), None => { - tracing::debug!("getting desktop client version"); - match self.extract_desktop_client_version().await { + tracing::debug!("getting {client_type:?} client version"); + match self.extract_client_version(client_type).await { Ok(version) => { - *desktop_client = CacheEntry::from(ClientData { + *client = CacheEntry::from(ClientData { version: version.clone(), }); - drop(desktop_client); + drop(client); self.store_cache().await; - version + version.into() } Err(e) => { - tracing::warn!("{}, falling back to hardcoded desktop client version", e); - DESKTOP_CLIENT_VERSION.to_owned() - } - } - } - } - } - - /// Get the current version of the YouTube Music web client from the following sources - /// - /// 1. from cache - /// 2. from YouTube Music's service worker script (`sw.js`) - /// 3. from the YouTube Music website - /// 4. fall back to the hardcoded version - async fn get_music_client_version(&self) -> String { - // Write lock here to prevent concurrent tasks from fetching the same data - let mut music_client = self.inner.cache.music_client.write().await; - - match music_client.get() { - Some(cdata) => cdata.version.clone(), - None => { - tracing::debug!("getting music client version"); - match self.extract_music_client_version().await { - Ok(version) => { - *music_client = CacheEntry::from(ClientData { - version: version.clone(), - }); - drop(music_client); - self.store_cache().await; - version - } - Err(e) => { - tracing::warn!("{}, falling back to hardcoded music client version", e); - DESKTOP_MUSIC_CLIENT_VERSION.to_owned() - } - } - } - } - } - - /// Get the current version of the YouTube TV client from the following sources - /// - /// 1. from cache - /// 2. from the YouTube TV website - /// 3. fall back to the hardcoded version - async fn get_tv_client_version(&self) -> String { - // Write lock here to prevent concurrent tasks from fetching the same data - let mut tv_client = self.inner.cache.tv_client.write().await; - - match tv_client.get() { - Some(cdata) => cdata.version.clone(), - None => { - tracing::debug!("getting TV client version"); - match self.extract_tv_client_version().await { - Ok(version) => { - *tv_client = CacheEntry::from(ClientData { - version: version.clone(), - }); - drop(tv_client); - self.store_cache().await; - version - } - Err(e) => { - tracing::warn!("{}, falling back to hardcoded TV client version", e); - DESKTOP_MUSIC_CLIENT_VERSION.to_owned() + 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!(), + } + .into() } } } @@ -1018,11 +956,14 @@ impl RustyPipe { /// Write the current cache data to the storage backend. async fn store_cache(&self) { + let mut cache_clients = HashMap::new(); + for (c, lk) in &self.inner.cache.clients { + cache_clients.insert(*c, lk.read().await.clone()); + } + if let Some(storage) = &self.inner.storage { let cdata = CacheData { - desktop_client: self.inner.cache.desktop_client.read().await.clone(), - music_client: self.inner.cache.music_client.read().await.clone(), - tv_client: self.inner.cache.tv_client.read().await.clone(), + clients: cache_clients, deobf: self.inner.cache.deobf.read().await.clone(), }; @@ -1075,9 +1016,9 @@ impl RustyPipe { let html = resp.text().await?; util::get_cg_from_regex(&VISITOR_DATA_REGEX, &html, 1).ok_or(Error::Extraction( - ExtractionError::InvalidData(Cow::Borrowed( - "Could not find visitor data on html page", - )), + ExtractionError::InvalidData( + "Could not find visitor data on html page".into(), + ), )) } else { Err(Error::Extraction(ExtractionError::InvalidData( @@ -1162,15 +1103,16 @@ impl RustyPipeQuery { ClientType::Desktop | ClientType::DesktopMusic | ClientType::TvHtml5Embed => { Cow::Borrowed(&self.client.inner.user_agent) } + ClientType::Mobile => MOBILE_UA.into(), ClientType::Tv => TV_UA.into(), ClientType::Android => format!( "com.google.android.youtube/{} (Linux; U; Android 12; {}) gzip", - MOBILE_CLIENT_VERSION, self.opts.country + APP_CLIENT_VERSION, self.opts.country ) .into(), ClientType::Ios => format!( "com.google.ios.youtube/{} ({}; U; CPU iOS 15_4 like Mac OS X; {})", - MOBILE_CLIENT_VERSION, IOS_DEVICE_MODEL, self.opts.country + APP_CLIENT_VERSION, IOS_DEVICE_MODEL, self.opts.country ) .into(), } @@ -1199,7 +1141,7 @@ impl RustyPipeQuery { ClientType::Desktop => YTContext { client: ClientInfo { client_name: "WEB", - client_version: Cow::Owned(self.client.get_desktop_client_version().await), + client_version: self.client.get_client_version(ctype).await, platform: "DESKTOP", original_url: Some(YOUTUBE_HOME_URL), visitor_data, @@ -1214,7 +1156,7 @@ impl RustyPipeQuery { ClientType::DesktopMusic => YTContext { client: ClientInfo { client_name: "WEB_REMIX", - client_version: Cow::Owned(self.client.get_music_client_version().await), + client_version: self.client.get_client_version(ctype).await, platform: "DESKTOP", original_url: Some(YOUTUBE_MUSIC_HOME_URL), visitor_data, @@ -1226,10 +1168,25 @@ impl RustyPipeQuery { user: User::default(), third_party: None, }, + ClientType::Mobile => YTContext { + client: ClientInfo { + client_name: "MWEB", + client_version: self.client.get_client_version(ctype).await, + platform: "MOBILE", + original_url: Some(YOUTUBE_MOBILE_HOME_URL), + visitor_data, + hl, + gl, + ..Default::default() + }, + request: Some(RequestYT::default()), + user: User::default(), + third_party: None, + }, ClientType::TvHtml5Embed => YTContext { client: ClientInfo { client_name: "TVHTML5_SIMPLY_EMBEDDED_PLAYER", - client_version: Cow::Borrowed(TVHTML5_CLIENT_VERSION), + client_version: TVHTML5_CLIENT_VERSION.into(), client_screen: Some("EMBED"), platform: "TV", visitor_data, @@ -1246,7 +1203,7 @@ impl RustyPipeQuery { ClientType::Tv => YTContext { client: ClientInfo { client_name: "TVHTML5", - client_version: Cow::Owned(self.client.get_tv_client_version().await), + client_version: self.client.get_client_version(ctype).await, client_screen: Some("WATCH"), platform: "TV", device_model: Some("SmartTV"), @@ -1264,7 +1221,7 @@ impl RustyPipeQuery { ClientType::Android => YTContext { client: ClientInfo { client_name: "ANDROID", - client_version: Cow::Borrowed(MOBILE_CLIENT_VERSION), + client_version: APP_CLIENT_VERSION.into(), platform: "MOBILE", visitor_data, hl, @@ -1278,7 +1235,7 @@ impl RustyPipeQuery { ClientType::Ios => YTContext { client: ClientInfo { client_name: "IOS", - client_version: Cow::Borrowed(MOBILE_CLIENT_VERSION), + client_version: APP_CLIENT_VERSION.into(), device_model: Some(IOS_DEVICE_MODEL), platform: "MOBILE", visitor_data, @@ -1321,7 +1278,7 @@ impl RustyPipeQuery { .header("X-YouTube-Client-Name", "1") .header( "X-YouTube-Client-Version", - self.client.get_desktop_client_version().await, + self.client.get_client_version(ctype).await.into_owned(), ), ClientType::DesktopMusic => self .client @@ -1336,7 +1293,22 @@ impl RustyPipeQuery { .header("X-YouTube-Client-Name", "67") .header( "X-YouTube-Client-Version", - self.client.get_music_client_version().await, + self.client.get_client_version(ctype).await.into_owned(), + ), + ClientType::Mobile => self + .client + .inner + .http + .post(format!( + "{YOUTUBEI_MOBILE_V1_URL}{endpoint}?{DISABLE_PRETTY_PRINT_PARAMETER}" + )) + .header(header::ORIGIN, YOUTUBE_MUSIC_HOME_URL) + .header(header::REFERER, YOUTUBE_MUSIC_HOME_URL) + .header(header::COOKIE, CONSENT_COOKIE) + .header("X-YouTube-Client-Name", "2") + .header( + "X-YouTube-Client-Version", + self.client.get_client_version(ctype).await.into_owned(), ), ClientType::TvHtml5Embed => self .client @@ -1359,7 +1331,10 @@ impl RustyPipeQuery { .header(header::ORIGIN, YOUTUBE_HOME_URL) .header(header::REFERER, YOUTUBE_TV_URL) .header("X-YouTube-Client-Name", "7") - .header("X-YouTube-Client-Version", TV_CLIENT_VERSION), + .header( + "X-YouTube-Client-Version", + self.client.get_client_version(ctype).await.into_owned(), + ), ClientType::Android => self .client .inner @@ -1729,6 +1704,8 @@ fn validate_country(country: Country) -> Country { mod tests { use super::*; + use rstest::rstest; + // 1.20240506.01.00-canary_control_1.20240508.01.01 // 1.20240508.01.01-canary_experiment_1.20240506.01.00 fn get_major_version(version: &str) -> u32 { @@ -1737,25 +1714,16 @@ mod tests { parts[0].parse().unwrap() } + #[rstest] + #[case(ClientType::Desktop, 2)] + #[case(ClientType::DesktopMusic, 1)] + #[case(ClientType::Mobile, 2)] + #[case(ClientType::Tv, 1)] #[tokio::test] - async fn extract_desktop_client_version() { + async fn extract_desktop_client_version(#[case] client_type: ClientType, #[case] major: u32) { let rp = RustyPipe::new(); - let version = rp.extract_desktop_client_version().await.unwrap(); - assert!(get_major_version(&version) >= 2); - } - - #[tokio::test] - async fn extract_music_client_version() { - let rp = RustyPipe::new(); - let version = rp.extract_music_client_version().await.unwrap(); - assert!(get_major_version(&version) >= 1); - } - - #[tokio::test] - async fn extract_tv_client_version() { - let rp = RustyPipe::new(); - let version = rp.extract_tv_client_version().await.unwrap(); - assert!(get_major_version(&version) >= 7); + let version = rp.extract_client_version(client_type).await.unwrap(); + assert!(get_major_version(&version) >= major); } #[tokio::test] diff --git a/src/client/player.rs b/src/client/player.rs index 76b16a5..0122d61 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -127,6 +127,7 @@ impl RustyPipeQuery { client_type: ClientType, ) -> Result { let video_id = video_id.as_ref(); + // let vdata = self.get_visitor_data().await?; let (context, deobf) = tokio::join!( self.get_context(client_type, false, None), self.client.get_deobf_data() diff --git a/src/client/response/player.rs b/src/client/response/player.rs index fa9a295..b974716 100644 --- a/src/client/response/player.rs +++ b/src/client/response/player.rs @@ -170,11 +170,13 @@ pub(crate) enum Quality { #[derive(Clone, Copy, Debug, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)] pub(crate) enum AudioQuality { - #[serde(rename = "AUDIO_QUALITY_LOW", alias = "low")] + #[serde(rename = "AUDIO_QUALITY_ULTRALOW")] + UltraLow, + #[serde(rename = "AUDIO_QUALITY_LOW")] Low, - #[serde(rename = "AUDIO_QUALITY_MEDIUM", alias = "medium")] + #[serde(rename = "AUDIO_QUALITY_MEDIUM")] Medium, - #[serde(rename = "AUDIO_QUALITY_HIGH", alias = "high")] + #[serde(rename = "AUDIO_QUALITY_HIGH")] High, } diff --git a/tests/youtube.rs b/tests/youtube.rs index 91566eb..66f7854 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -27,6 +27,7 @@ use rustypipe::validate; #[rstest] #[case::desktop(ClientType::Desktop)] #[case::tv(ClientType::Tv)] +#[case::mobile(ClientType::Mobile)] #[case::tv_html5_embed(ClientType::TvHtml5Embed)] #[case::android(ClientType::Android)] #[case::ios(ClientType::Ios)] @@ -200,7 +201,7 @@ async fn check_video_stream(s: impl YtStream) { )] #[case::live( "jfKfPfyJRdk", - "lofi hip hop radio 📚 - beats to relax/study to", + "lofi hip hop radio 📚 beats to relax/study to", "Listen on Spotify, Apple music and more", 0, "UCSJ4gkVC6NrvII8umztf0Ow", @@ -2193,8 +2194,7 @@ async fn music_search_genre_radio(rp: RustyPipe) { } #[rstest] -// TODO: reenable when music search suggestions work again -// #[case::default("ed sheer", Some("ed sheeran"), Some("UClmXPfaYhXOYsNn_QUyheWQ"))] +#[case::default("ed sheer", Some("ed sheeran"), Some("UClmXPfaYhXOYsNn_QUyheWQ"))] #[case::empty("reujbhevmfndxnjrze", None, None)] #[tokio::test] async fn music_search_suggestion( From 1ee4fa5d7f3fabe044dcabb46693bf8a1aea67a9 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 13 Oct 2024 17:01:58 +0200 Subject: [PATCH 154/347] chore(release): release rustypipe v0.5.0 --- CHANGELOG.md | 17 +++++++++++++++++ Cargo.toml | 4 ++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ad8300b..cdec64d 100644 --- a/CHANGELOG.md +++ b/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/v0.4.0..rustypipe/v0.5.0) - 2024-10-13 + +### 🚀 Features + +- Add mobile client - ([71d3ec6](https://codeberg.org/ThetaDev/rustypipe/commit/71d3ec65ddafa966ef6b41cf4eb71687ba4b594c)) + +### 🐛 Bug Fixes + +- Prioritize visitor_data argument before opts - ([ace0fae](https://codeberg.org/ThetaDev/rustypipe/commit/ace0fae1005217cd396000176e7c01682eae026f)) +- Ignore live tracks in YTM searches - ([f3f2e1d](https://codeberg.org/ThetaDev/rustypipe/commit/f3f2e1d3ca1e9c838c682356bb5a7ded6951c8e5)) +- A/B test 16 (pageHeaderRenderer on playlist pages) - ([e65f145](https://codeberg.org/ThetaDev/rustypipe/commit/e65f14556f3003fa59fee3f9f1410fb5ddf63219)) + +### ⚙️ Miscellaneous Tasks + +- *(deps)* Update rust crate rstest to 0.23.0 (#12) - ([96776e9](https://codeberg.org/ThetaDev/rustypipe/commit/96776e98d76fa1d31d5f84dbceafbe8f9dfd9085)) + + ## [v0.4.0](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe/v0.3.0..rustypipe/v0.4.0) - 2024-09-10 ### 🚀 Features diff --git a/Cargo.toml b/Cargo.toml index 6587cd2..576f1e9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe" -version = "0.4.0" +version = "0.5.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.4.0", default-features = false } +rustypipe = { path = ".", version = "0.5.0", default-features = false } rustypipe-downloader = { path = "./downloader", version = "0.2.1", default-features = false, features = [ "indicatif", "audiotag", From 61b2a4a5dc427dc3dbafb0822bf16f2d55043497 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 13 Oct 2024 17:02:49 +0200 Subject: [PATCH 155/347] chore(release): release rustypipe-downloader v0.2.2 --- downloader/CHANGELOG.md | 8 ++++++++ downloader/Cargo.toml | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/downloader/CHANGELOG.md b/downloader/CHANGELOG.md index 5e20ad2..b0d30c1 100644 --- a/downloader/CHANGELOG.md +++ b/downloader/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. +## [v0.2.2](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-downloader/v0.2.1..rustypipe-downloader/v0.2.2) - 2024-10-13 + +### ⚙️ Miscellaneous Tasks + +- *(deps)* Update rust crate rstest to 0.23.0 (#12) - ([96776e9](https://codeberg.org/ThetaDev/rustypipe/commit/96776e98d76fa1d31d5f84dbceafbe8f9dfd9085)) +- *(deps)* Update rustypipe to 0.5.0 + + ## [v0.2.1](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-downloader/v0.2.0..rustypipe-downloader/v0.2.1) - 2024-09-10 ### 📚 Documentation diff --git a/downloader/Cargo.toml b/downloader/Cargo.toml index 8ef75d0..7c8445d 100644 --- a/downloader/Cargo.toml +++ b/downloader/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe-downloader" -version = "0.2.1" +version = "0.2.2" rust-version = "1.67.1" edition.workspace = true authors.workspace = true From 913bb127555b888f660679da32847820d9810913 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 13 Oct 2024 17:03:13 +0200 Subject: [PATCH 156/347] chore(release): release rustypipe-cli v0.2.2 --- 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 ae64f65..2a7635c 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.2.2](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-cli/v0.2.1..rustypipe-cli/v0.2.2) - 2024-10-13 + +### 🚀 Features + +- Add mobile client - ([71d3ec6](https://codeberg.org/ThetaDev/rustypipe/commit/71d3ec65ddafa966ef6b41cf4eb71687ba4b594c)) + +### ⚙️ Miscellaneous Tasks + +- *(deps)* Update rust crate rstest to 0.23.0 (#12) - ([96776e9](https://codeberg.org/ThetaDev/rustypipe/commit/96776e98d76fa1d31d5f84dbceafbe8f9dfd9085)) +- *(deps)* Update rustypipe to 0.5.0 + + ## [v0.2.1](https://codeberg.org/ThetaDev/rustypipe/compare/rustypipe-cli/v0.2.0..rustypipe-cli/v0.2.1) - 2024-09-10 ### 🚀 Features diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 1626347..bbdd8d9 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustypipe-cli" -version = "0.2.1" +version = "0.2.2" rust-version = "1.70.0" edition.workspace = true authors.workspace = true From be18d89ea65e35ddcf0f31bea3360e5db209fb9f Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Sun, 13 Oct 2024 22:42:21 +0200 Subject: [PATCH 157/347] fix: skip serializing empty cache entries --- src/client/mod.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/client/mod.rs b/src/client/mod.rs index 772afc1..a5d57ad 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -395,6 +395,7 @@ struct CacheHolder { #[serde(default)] struct CacheData { clients: HashMap>, + #[serde(skip_serializing_if = "CacheEntry::is_none")] deobf: CacheEntry, } @@ -445,6 +446,10 @@ impl CacheEntry { CacheEntry::None => None, } } + + fn is_none(&self) -> bool { + matches!(self, Self::None) + } } impl From for CacheEntry { @@ -958,7 +963,10 @@ impl RustyPipe { async fn store_cache(&self) { let mut cache_clients = HashMap::new(); for (c, lk) in &self.inner.cache.clients { - cache_clients.insert(*c, lk.read().await.clone()); + let v = lk.read().await.clone(); + if !v.is_none() { + cache_clients.insert(*c, v); + } } if let Some(storage) = &self.inner.storage { From b589061a40245637b4fe619a26892291d87d25e6 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 22 Oct 2024 23:56:59 +0200 Subject: [PATCH 158/347] fix: fetch artist albums continuation --- src/client/mod.rs | 61 +- src/client/music_artist.rs | 164 +- src/client/music_details.rs | 6 +- src/client/music_playlist.rs | 9 +- src/client/pagination.rs | 53 +- src/client/player.rs | 11 +- src/client/playlist.rs | 12 +- src/client/response/music_item.rs | 5 + ...tist__tests__map_music_artist_default.snap | 3172 +- ...tist__tests__map_music_artist_no_cont.snap | 834 +- src/param/mod.rs | 23 +- src/param/search_filter.rs | 2 +- src/util/protobuf.rs | 14 +- testfiles/music_artist/artist_default.json | 19063 ++--- testfiles/music_artist/artist_default_1.json | 57296 ++++++++-------- testfiles/music_artist/artist_default_2.json | 8442 +++ tests/youtube.rs | 48 +- 17 files changed, 50309 insertions(+), 38906 deletions(-) create mode 100644 testfiles/music_artist/artist_default_2.json diff --git a/src/client/mod.rs b/src/client/mod.rs index a5d57ad..14eade2 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -38,6 +38,7 @@ use crate::{ cache::{CacheStorage, FileStorage, DEFAULT_CACHE_FILE}, deobfuscate::DeobfData, error::{Error, ExtractionError}, + model::ArtistId, param::{Country, Language}, report::{FileReporter, Level, Report, Reporter, RustyPipeInfo, DEFAULT_REPORT_DIR}, serializer::MapResult, @@ -1415,7 +1416,7 @@ impl RustyPipeQuery { } }; - tracing::debug!("mapped response"); + tracing::trace!("mapped response"); Ok(RequestResult { res, status, body }) } @@ -1468,10 +1469,9 @@ impl RustyPipeQuery { /// - `method`: HTTP method /// - `endpoint`: YouTube API endpoint (`https://www.youtube.com/youtubei/v1/?key=...`) /// - `body`: Serializable request body to be sent in json format - /// - `visitor_data`: YouTube visitor data cookie - /// - `deobf`: Deobfuscator (is passed to the mapper to deobfuscate stream URLs). + /// - `ctx_src`: Context source (additional parameters for fetching and mapping, used to build the MapRespCtx) #[allow(clippy::too_many_arguments)] - async fn execute_request_deobf< + async fn execute_request_ctx< R: DeserializeOwned + MapResponse + Debug, M, B: Serialize + ?Sized, @@ -1482,25 +1482,25 @@ impl RustyPipeQuery { id: &str, endpoint: &str, body: &B, - visitor_data: Option<&str>, - deobf: Option<&DeobfData>, + ctx_src: MapRespCtxSource<'_>, ) -> Result { tracing::debug!("getting {}({})", operation, id); - let request = self - .request_builder(ctype, endpoint, visitor_data) - .await - .json(body) - .build()?; - let ctx = MapRespCtx { id, lang: self.opts.lang, - deobf, - visitor_data: visitor_data.or(self.opts.visitor_data.as_deref()), + deobf: ctx_src.deobf, + visitor_data: ctx_src.visitor_data.or(self.opts.visitor_data.as_deref()), client_type: ctype, + artist: ctx_src.artist, }; + let request = self + .request_builder(ctype, endpoint, ctx.visitor_data) + .await + .json(body) + .build()?; + let req_res = self.yt_request::(&request, &ctx).await?; // Uncomment to debug response text @@ -1533,7 +1533,7 @@ impl RustyPipeQuery { operation: &format!("{operation}({id})"), error, msgs, - deobf_data: deobf.cloned(), + deobf_data: ctx.deobf.cloned(), http_request: crate::report::HTTPRequest { url: request.url().as_str(), method: request.method().as_str(), @@ -1587,10 +1587,18 @@ impl RustyPipeQuery { endpoint: &str, body: &B, ) -> Result { - self.execute_request_deobf::(ctype, operation, id, endpoint, body, None, None) - .await + self.execute_request_ctx::( + ctype, + operation, + id, + endpoint, + body, + MapRespCtxSource::default(), + ) + .await } + /* /// Execute a request to the YouTube API, then map the response. /// /// Creates a report in case of failure for easy debugging. @@ -1629,6 +1637,7 @@ impl RustyPipeQuery { ) .await } + */ /// Execute a request to the YouTube API and return the response string /// @@ -1664,6 +1673,14 @@ struct MapRespCtx<'a> { deobf: Option<&'a DeobfData>, visitor_data: Option<&'a str>, client_type: ClientType, + artist: Option, +} + +#[derive(Default)] +struct MapRespCtxSource<'a> { + visitor_data: Option<&'a str>, + deobf: Option<&'a DeobfData>, + artist: Option, } impl<'a> MapRespCtx<'a> { @@ -1676,6 +1693,16 @@ impl<'a> MapRespCtx<'a> { deobf: None, visitor_data: None, client_type: ClientType::Desktop, + artist: None, + } + } +} + +impl<'a> MapRespCtxSource<'a> { + fn visitor_data(visitor_data: &'a str) -> Self { + Self { + visitor_data: Some(visitor_data), + ..Default::default() } } } diff --git a/src/client/music_artist.rs b/src/client/music_artist.rs index 9009644..9c2bf94 100644 --- a/src/client/music_artist.rs +++ b/src/client/music_artist.rs @@ -5,16 +5,19 @@ use regex::Regex; use tracing::debug; use crate::{ - client::response::url_endpoint::NavigationEndpoint, + client::{response::url_endpoint::NavigationEndpoint, MapRespCtxSource, QContinuation}, error::{Error, ExtractionError}, - model::{AlbumItem, ArtistId, MusicArtist}, + model::{ + paginator::Paginator, traits::FromYtItem, AlbumItem, ArtistId, MusicArtist, MusicItem, + }, + param::{AlbumFilter, AlbumOrder}, serializer::MapResult, - util, + util::{self, ProtoBuilder}, }; use super::{ response::{self, music_item::MusicListMapper, url_endpoint::PageType}, - ClientType, MapRespCtx, MapResponse, QBrowse, RustyPipeQuery, + ClientType, MapRespCtx, MapResponse, QBrowse, QBrowseParams, RustyPipeQuery, }; impl RustyPipeQuery { @@ -56,7 +59,9 @@ impl RustyPipeQuery { .await?; if can_fetch_more { - artist.albums = self.music_artist_albums(artist_id).await?; + artist.albums = self + .music_artist_albums(artist_id, None, Some(AlbumOrder::Recency)) + .await?; } Ok(artist) @@ -73,21 +78,62 @@ impl RustyPipeQuery { } /// Get a list of all albums of a YouTube Music artist - pub async fn music_artist_albums(&self, artist_id: &str) -> Result, Error> { - let context = self.get_context(ClientType::DesktopMusic, true, None).await; - let request_body = QBrowse { - context, + pub async fn music_artist_albums( + &self, + artist_id: &str, + filter: Option, + order: Option, + ) -> Result, Error> { + let visitor_data = self.get_visitor_data().await?; + let context = self + .get_context(ClientType::DesktopMusic, true, Some(&visitor_data)) + .await; + let request_body = QBrowseParams { + context: context.clone(), browse_id: &format!("{}{}", util::ARTIST_DISCOGRAPHY_PREFIX, artist_id), + params: &albums_param(filter, order), }; - self.execute_request::( - ClientType::DesktopMusic, - "music_artist_albums", - artist_id, - "browse", - &request_body, - ) - .await + let first_page = self + .execute_request_ctx::( + ClientType::DesktopMusic, + "music_artist_albums", + artist_id, + "browse", + &request_body, + MapRespCtxSource::visitor_data(&visitor_data), + ) + .await?; + + let mut albums = first_page.albums; + let mut ctoken = first_page.ctoken; + + while let Some(tkn) = &ctoken { + let request_body = QContinuation { + context: context.clone(), + continuation: tkn, + }; + let resp: Paginator = self + .execute_request_ctx::, _>( + ClientType::DesktopMusic, + "music_artist_albums_cont", + artist_id, + "browse", + &request_body, + MapRespCtxSource { + artist: Some(first_page.artist.clone()), + visitor_data: Some(&visitor_data), + ..Default::default() + }, + ) + .await?; + if resp.items.is_empty() { + tracing::warn!("artist albums [{artist_id}] empty continuation"); + } + ctoken = resp.ctoken; + albums.extend(resp.items.into_iter().filter_map(AlbumItem::from_ytm_item)); + } + Ok(albums) } } @@ -280,11 +326,18 @@ fn map_artist_page( }) } -impl MapResponse> for response::MusicArtistAlbums { +#[derive(Debug)] +struct FirstAlbumPage { + albums: Vec, + ctoken: Option, + artist: ArtistId, +} + +impl MapResponse for response::MusicArtistAlbums { fn map_response( self, ctx: &MapRespCtx<'_>, - ) -> Result>, ExtractionError> { + ) -> Result, ExtractionError> { // dbg!(&self); let Some(header) = self.header else { @@ -306,27 +359,55 @@ impl MapResponse> for response::MusicArtistAlbums { .section_list_renderer .contents; - let mut mapper = MusicListMapper::with_artist( - ctx.lang, - ArtistId { - id: Some(ctx.id.to_owned()), - name: header.music_header_renderer.title, - }, - ); - + let artist_id = ArtistId { + id: Some(ctx.id.to_owned()), + name: header.music_header_renderer.title, + }; + let mut mapper = MusicListMapper::with_artist(ctx.lang, artist_id.clone()); + let mut ctoken = None; for grid in grids { mapper.map_response(grid.grid_renderer.items); + if ctoken.is_none() { + ctoken = grid + .grid_renderer + .continuations + .into_iter() + .next() + .map(|g| g.next_continuation_data.continuation); + } } let mapped = mapper.group_items(); Ok(MapResult { - c: mapped.c.albums, + c: FirstAlbumPage { + albums: mapped.c.albums, + ctoken, + artist: artist_id, + }, warnings: mapped.warnings, }) } } +fn albums_param(filter: Option, order: Option) -> String { + let mut pb_filter = ProtoBuilder::new(); + if let Some(filter) = filter { + pb_filter.varint(1, filter as u64); + } + if let Some(order) = order { + pb_filter.varint(2, order as u64); + } + pb_filter.bytes(3, &[1, 2]); + + let mut pb_48 = ProtoBuilder::new(); + pb_48.embedded(15, pb_filter); + + let mut pb_3 = ProtoBuilder::new(); + pb_3.embedded(48, pb_48); + pb_3.to_base64() +} + #[cfg(test)] mod tests { use std::{fs::File, io::BufReader}; @@ -366,11 +447,12 @@ mod tests { ); assert_eq!(can_fetch_more, album_page_path.is_some()); + // Album overview if let Some(album_page_path) = album_page_path { let json_file = File::open(album_page_path).unwrap(); let resp: response::MusicArtistAlbums = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let mut map_res: MapResult> = + let map_res: MapResult = resp.map_response(&MapRespCtx::test(id)).unwrap(); assert!( @@ -378,7 +460,29 @@ mod tests { "deserialization/mapping warnings: {:?}", map_res.warnings ); - artist.albums.append(&mut map_res.c); + artist.albums = map_res.c.albums; + + // Album overview continuation + for i in 2..10 { + let cont_path = + path!(*TESTFILES / "music_artist" / format!("artist_{name}_{i}.json")); + if !cont_path.is_file() { + break; + } + let json_file = File::open(cont_path).unwrap(); + let resp: response::MusicContinuation = + serde_json::from_reader(BufReader::new(json_file)).unwrap(); + let map_res: MapResult> = + resp.map_response(&MapRespCtx::test(id)).unwrap(); + assert!(!map_res.c.items.is_empty()); + artist.albums.extend( + map_res + .c + .items + .into_iter() + .filter_map(AlbumItem::from_ytm_item), + ); + } } insta::assert_ron_snapshot!(format!("map_music_artist_{name}"), artist); diff --git a/src/client/music_details.rs b/src/client/music_details.rs index e5ff5f5..ca0630b 100644 --- a/src/client/music_details.rs +++ b/src/client/music_details.rs @@ -16,7 +16,7 @@ use super::{ self, music_item::{map_queue_item, MusicListMapper}, }, - ClientType, MapRespCtx, MapResponse, QBrowse, RustyPipeQuery, YTContext, + ClientType, MapRespCtx, MapRespCtxSource, MapResponse, QBrowse, RustyPipeQuery, YTContext, }; #[derive(Debug, Serialize)] @@ -134,13 +134,13 @@ impl RustyPipeQuery { tuner_setting_value: "AUTOMIX_SETTING_NORMAL", }; - self.execute_request_vdata::( + self.execute_request_ctx::( ClientType::DesktopMusic, "music_radio", radio_id, "next", &request_body, - Some(&visitor_data), + MapRespCtxSource::visitor_data(&visitor_data), ) .await } diff --git a/src/client/music_playlist.rs b/src/client/music_playlist.rs index 0d1ec26..3345651 100644 --- a/src/client/music_playlist.rs +++ b/src/client/music_playlist.rs @@ -17,7 +17,7 @@ use super::{ self, music_item::{map_album_type, map_artist_id, map_artists, MusicListMapper}, }, - ClientType, MapRespCtx, MapResponse, QBrowse, RustyPipeQuery, + ClientType, MapRespCtx, MapRespCtxSource, MapResponse, QBrowse, RustyPipeQuery, }; impl RustyPipeQuery { @@ -42,13 +42,16 @@ impl RustyPipeQuery { browse_id: &format!("VL{playlist_id}"), }; - self.execute_request_vdata::( + self.execute_request_ctx::( ClientType::DesktopMusic, "music_playlist", playlist_id, "browse", &request_body, - visitor_data.as_deref(), + MapRespCtxSource { + visitor_data: visitor_data.as_deref(), + ..Default::default() + }, ) .await } diff --git a/src/client/pagination.rs b/src/client/pagination.rs index e8f53dc..b6e22d1 100644 --- a/src/client/pagination.rs +++ b/src/client/pagination.rs @@ -10,7 +10,9 @@ use crate::model::{ use crate::serializer::MapResult; use super::response::music_item::{map_queue_item, MusicListMapper, PlaylistPanelVideo}; -use super::{response, ClientType, MapRespCtx, MapResponse, QContinuation, RustyPipeQuery}; +use super::{ + response, ClientType, MapRespCtx, MapRespCtxSource, MapResponse, QContinuation, RustyPipeQuery, +}; impl RustyPipeQuery { /// Get more YouTube items from the given continuation token and endpoint @@ -37,13 +39,13 @@ impl RustyPipeQuery { }; let p = self - .execute_request_vdata::, _>( + .execute_request_ctx::, _>( ClientType::DesktopMusic, "music_continuation", ctoken, endpoint.as_str(), &request_body, - Some(&visitor_data), + MapRespCtxSource::visitor_data(&visitor_data), ) .await?; @@ -138,7 +140,11 @@ impl MapResponse> for response::MusicContinuation { self, ctx: &MapRespCtx<'_>, ) -> Result>, ExtractionError> { - let mut mapper = MusicListMapper::new(ctx.lang); + let mut mapper = if let Some(artist) = &ctx.artist { + MusicListMapper::with_artist(ctx.lang, artist.clone()) + } else { + MusicListMapper::new(ctx.lang) + }; let mut continuations = Vec::new(); match self.continuation_contents { @@ -156,7 +162,11 @@ impl MapResponse> for response::MusicContinuation { response::music_item::ItemSection::MusicCarouselShelfRenderer(shelf) => { mapper.map_response(shelf.contents); } - _ => {} + response::music_item::ItemSection::GridRenderer(mut grid) => { + mapper.map_response(grid.items); + continuations.append(&mut grid.continuations); + } + response::music_item::ItemSection::None => {} } } } @@ -173,6 +183,10 @@ impl MapResponse> for response::MusicContinuation { } }); } + Some(response::music_item::ContinuationContents::GridContinuation(mut grid)) => { + mapper.map_response(grid.items); + continuations.append(&mut grid.continuations); + } None => {} } @@ -257,6 +271,19 @@ impl Paginator { } Ok(()) } + + /// Extend the items of the paginator until the paginator is exhausted. + pub async fn extend_all>(&mut self, query: Q) -> Result<(), Error> { + let query = query.as_ref(); + loop { + match self.extend(query).await { + Ok(false) => break, + Err(e) => return Err(e), + _ => {} + } + } + Ok(()) + } } impl Paginator { @@ -334,6 +361,22 @@ macro_rules! paginator { } Ok(()) } + + /// Extend the items of the paginator until the paginator is exhausted. + pub async fn extend_all>( + &mut self, + query: Q, + ) -> Result<(), Error> { + let query = query.as_ref(); + loop { + match self.extend(query).await { + Ok(false) => break, + Err(e) => return Err(e), + _ => {} + } + } + Ok(()) + } } }; } diff --git a/src/client/player.rs b/src/client/player.rs index 0122d61..9b48d54 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -24,7 +24,7 @@ use super::{ self, player::{self, Format}, }, - ClientType, MapRespCtx, MapResponse, MapResult, RustyPipeQuery, YTContext, + ClientType, MapRespCtx, MapRespCtxSource, MapResponse, MapResult, RustyPipeQuery, YTContext, DEFAULT_PLAYER_CLIENT_ORDER, }; @@ -162,14 +162,16 @@ impl RustyPipeQuery { } }; - self.execute_request_deobf::( + self.execute_request_ctx::( client_type, "player", video_id, "player", &request_body, - None, - Some(&deobf), + MapRespCtxSource { + deobf: Some(&deobf), + ..Default::default() + }, ) .await } @@ -763,6 +765,7 @@ mod tests { deobf: Some(&DEOBF_DATA), visitor_data: None, client_type, + artist: None, }) .unwrap(); diff --git a/src/client/playlist.rs b/src/client/playlist.rs index 0a7f556..f61b7ef 100644 --- a/src/client/playlist.rs +++ b/src/client/playlist.rs @@ -13,7 +13,10 @@ use crate::{ util::{self, dictionary, timeago, TryRemove}, }; -use super::{response, ClientType, MapRespCtx, MapResponse, MapResult, QBrowse, RustyPipeQuery}; +use super::{ + response, ClientType, MapRespCtx, MapRespCtxSource, MapResponse, MapResult, QBrowse, + RustyPipeQuery, +}; impl RustyPipeQuery { /// Get a YouTube playlist @@ -34,13 +37,16 @@ impl RustyPipeQuery { browse_id: &format!("VL{playlist_id}"), }; - self.execute_request_vdata::( + self.execute_request_ctx::( ClientType::Desktop, "playlist", playlist_id, "browse", &request_body, - visitor_data.as_deref(), + MapRespCtxSource { + visitor_data: visitor_data.as_deref(), + ..Default::default() + }, ) .await } diff --git a/src/client/response/music_item.rs b/src/client/response/music_item.rs index 7bfa31d..1282a8f 100644 --- a/src/client/response/music_item.rs +++ b/src/client/response/music_item.rs @@ -335,6 +335,7 @@ pub(crate) enum ContinuationContents { MusicShelfContinuation(MusicShelf), SectionListContinuation(ContentsRenderer), PlaylistPanelContinuation(PlaylistPanelRenderer), + GridContinuation(GridRenderer), } #[derive(Debug, Deserialize)] @@ -381,11 +382,15 @@ pub(crate) struct Grid { pub grid_renderer: GridRenderer, } +#[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct GridRenderer { pub items: MapResult>, pub header: Option, + #[serde(default)] + #[serde_as(as = "VecSkipError<_>")] + pub continuations: Vec, } #[derive(Debug, Deserialize)] 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 f2e7be8..7494cb7 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 @@ -34,40 +34,8 @@ MusicArtist( ], description: Some("Edward Christopher Sheeran MBE is an English singer-songwriter. Born in Halifax, West Yorkshire, and raised in Framlingham, Suffolk, he began writing songs around the age of eleven. In early 2011, Sheeran independently released the extended play No. 5 Collaborations Project. He signed with Asylum Records the same year.\nSheeran\'s debut album, +, was released in September 2011 and topped the UK Albums Chart. It contained his first hit single \"The A Team\". In 2012, Sheeran won the Brit Awards for Best British Male Solo Artist and British Breakthrough Act. Sheeran\'s second studio album, ×, topped charts around the world upon its release in June 2014. It was named the second-best-selling album worldwide of 2015. In the same year, × won Album of the Year at the 2015 Brit Awards, and he received the Ivor Novello Award for Songwriter of the Year from the British Academy of Songwriters, Composers and Authors. A single from ×, \"Thinking Out Loud\", earned him the 2016 Grammy Awards for Song of the Year and Best Pop Solo Performance.\nSheeran\'s third album, ÷, was released in March 2017, and was the best-selling album worldwide of 2017.\n\nFrom Wikipedia (https://en.wikipedia.org/wiki/Ed_Sheeran) 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/Ed_Sheeran"), - subscriber_count: Some(53300000), + subscriber_count: Some(55300000), tracks: [ - TrackItem( - id: "xTvyyoF_LZY", - name: "Shape of You", - duration: None, - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/TMbA3LImAL96nFkm5cI1x6LiEMvMbRg4IRxEeABd9qpXsfmwKhZHRD1MucnjG5QIsVEp0Vpn7h7M51FH3Q=w60-h60-l90-rj", - width: 60, - height: 60, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/TMbA3LImAL96nFkm5cI1x6LiEMvMbRg4IRxEeABd9qpXsfmwKhZHRD1MucnjG5QIsVEp0Vpn7h7M51FH3Q=w120-h120-l90-rj", - width: 120, - height: 120, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album: Some(AlbumId( - id: "MPREb_Y8THSupSgRO", - name: "Shape of You", - )), - view_count: None, - is_video: false, - track_nr: None, - by_va: false, - ), TrackItem( id: "ORrFJ63nlcA", name: "Perfect", @@ -95,23 +63,23 @@ MusicArtist( id: "MPREb_T5s950Swfdy", name: "÷ (Deluxe)", )), - view_count: None, + view_count: Some(5700000000), is_video: false, track_nr: None, by_va: false, ), TrackItem( - id: "pDW0e5SO5Co", - name: "Curtains", + id: "xTvyyoF_LZY", + name: "Shape of You", duration: None, cover: [ Thumbnail( - url: "https://lh3.googleusercontent.com/e9X9JBO2XNUiMatV8gepjLWktB7uGb8W3HWN8zgxjiMFjVr8hVymX-FKgULPMpQBiQaJY5MDEgeFNEKc=w60-h60-l90-rj", + url: "https://lh3.googleusercontent.com/TMbA3LImAL96nFkm5cI1x6LiEMvMbRg4IRxEeABd9qpXsfmwKhZHRD1MucnjG5QIsVEp0Vpn7h7M51FH3Q=w60-h60-l90-rj", width: 60, height: 60, ), Thumbnail( - url: "https://lh3.googleusercontent.com/e9X9JBO2XNUiMatV8gepjLWktB7uGb8W3HWN8zgxjiMFjVr8hVymX-FKgULPMpQBiQaJY5MDEgeFNEKc=w120-h120-l90-rj", + url: "https://lh3.googleusercontent.com/TMbA3LImAL96nFkm5cI1x6LiEMvMbRg4IRxEeABd9qpXsfmwKhZHRD1MucnjG5QIsVEp0Vpn7h7M51FH3Q=w120-h120-l90-rj", width: 120, height: 120, ), @@ -124,42 +92,10 @@ MusicArtist( ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: Some(AlbumId( - id: "MPREb_9jsAP3C5OSC", - name: "- (Deluxe)", + id: "MPREb_Y8THSupSgRO", + name: "Shape of You", )), - view_count: None, - is_video: false, - track_nr: None, - by_va: false, - ), - TrackItem( - id: "fdz_cabS9BU", - name: "Thinking out Loud", - duration: None, - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/emeqGnTWaGFe5roPNKOsSe5WFl81hEScrwhlaJkSrmZn8F-rcYVg_VtYKSj5v59eU5ZrUo3uzlbI0wDV=w60-h60-l90-rj", - width: 60, - height: 60, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/emeqGnTWaGFe5roPNKOsSe5WFl81hEScrwhlaJkSrmZn8F-rcYVg_VtYKSj5v59eU5ZrUo3uzlbI0wDV=w120-h120-l90-rj", - width: 120, - height: 120, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album: Some(AlbumId( - id: "MPREb_A4r9EfLZzYN", - name: "x (Deluxe Edition)", - )), - view_count: None, + view_count: Some(8700000000), is_video: false, track_nr: None, by_va: false, @@ -191,25 +127,25 @@ MusicArtist( id: "MPREb_A4r9EfLZzYN", name: "x (Deluxe Edition)", )), - view_count: None, + view_count: Some(3300000000), is_video: false, track_nr: None, by_va: false, ), TrackItem( - id: "2tZjT3L1wD4", - name: "Life Goes On", + id: "fdz_cabS9BU", + name: "Thinking out Loud", duration: None, cover: [ Thumbnail( - url: "https://i.ytimg.com/vi/2tZjT3L1wD4/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nIEIwcHRRamRRlklKoD_QXwG1Efg", - width: 400, - height: 225, + url: "https://lh3.googleusercontent.com/emeqGnTWaGFe5roPNKOsSe5WFl81hEScrwhlaJkSrmZn8F-rcYVg_VtYKSj5v59eU5ZrUo3uzlbI0wDV=w60-h60-l90-rj", + width: 60, + height: 60, ), Thumbnail( - url: "https://i.ytimg.com/vi/2tZjT3L1wD4/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3nOvPF3UCMZ0w-ykO-1XeNLFD9GLg", - width: 800, - height: 450, + url: "https://lh3.googleusercontent.com/emeqGnTWaGFe5roPNKOsSe5WFl81hEScrwhlaJkSrmZn8F-rcYVg_VtYKSj5v59eU5ZrUo3uzlbI0wDV=w120-h120-l90-rj", + width: 120, + height: 120, ), ], artists: [ @@ -219,24 +155,59 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album: None, - view_count: Some(419000), - is_video: true, + album: Some(AlbumId( + id: "MPREb_A4r9EfLZzYN", + name: "x (Deluxe Edition)", + )), + view_count: Some(4500000000), + is_video: false, track_nr: None, by_va: false, ), TrackItem( - id: "wLvIBvKNaig", - name: "Life Goes On", + id: "hJWSZDJb-W4", + name: "Bad Habits", duration: None, cover: [ Thumbnail( - url: "https://i.ytimg.com/vi/wLvIBvKNaig/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nRNf5VOzrUxF_1e0Lb6mKukUO_rw", + url: "https://lh3.googleusercontent.com/3xN5Rqah_iSMqbl3ZMCr9MjnEBVyBLmLng0f-MCvFFdfPNhK619ikGwAD0iOBkzCOXIlucWE0lLLXJA=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/3xN5Rqah_iSMqbl3ZMCr9MjnEBVyBLmLng0f-MCvFFdfPNhK619ikGwAD0iOBkzCOXIlucWE0lLLXJA=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album: Some(AlbumId( + id: "MPREb_917r4nW96j5", + name: "Bad Habits", + )), + view_count: Some(1100000000), + is_video: false, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "fezKpDFKf5U", + name: "Perfect", + duration: None, + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/fezKpDFKf5U/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lK0JufCIof0Y3osGxnKsh44Q8rEQ", width: 400, height: 225, ), Thumbnail( - url: "https://i.ytimg.com/vi/wLvIBvKNaig/sddefault.jpg?sqp=-oaymwEWCKoDEPABIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3noBnXkkLuga0HeXwNLuY-UJcnTzQ", + url: "https://i.ytimg.com/vi/fezKpDFKf5U/sddefault.jpg?sqp=-oaymwEWCKoDEPABIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3m7ijpu1bTDhhEjY2EFqxlCklk4Sw", width: 426, height: 240, ), @@ -249,23 +220,23 @@ MusicArtist( ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, - view_count: Some(181000), + view_count: Some(378000), is_video: true, track_nr: None, by_va: false, ), TrackItem( - id: "bOr2N0R2mWs", - name: "Borderline (Apple Music Live)", + id: "doGzjheI604", + name: "The A Team", duration: None, cover: [ Thumbnail( - url: "https://i.ytimg.com/vi/bOr2N0R2mWs/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lvBTyfHI4DIYCQQY3jlunC0NYu-Q", + url: "https://i.ytimg.com/vi/doGzjheI604/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kU_80uHngmJhFXOlUoNaHUu93Smg", width: 400, height: 225, ), Thumbnail( - url: "https://i.ytimg.com/vi/bOr2N0R2mWs/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3nW0d-er5K2MSIMdMFWXeBJpitoOw", + url: "https://i.ytimg.com/vi/doGzjheI604/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3k9gH9fgxjt0jUT3ptDZBfYmSj-2Q", width: 800, height: 450, ), @@ -278,23 +249,23 @@ MusicArtist( ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, - view_count: Some(127000), + view_count: Some(250000), is_video: true, track_nr: None, by_va: false, ), TrackItem( - id: "29lq-cvvlSo", - name: "The Hills of Aberfeldy", + id: "zjEdX8-3CD8", + name: "Lego House", duration: None, cover: [ Thumbnail( - url: "https://i.ytimg.com/vi/29lq-cvvlSo/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lX75As76WxiWqUwMUXni6K5_1krg", + url: "https://i.ytimg.com/vi/zjEdX8-3CD8/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nkjuS26FLwYDmm573Wx7lnSVN9YQ", width: 400, height: 225, ), Thumbnail( - url: "https://i.ytimg.com/vi/29lq-cvvlSo/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3lWnbuFQQ6uWIVVZqXnxEL7Gajg5g", + url: "https://i.ytimg.com/vi/zjEdX8-3CD8/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3lFOrdkqtSsEEnftHdjPoB7jwSZYg", width: 800, height: 450, ), @@ -307,23 +278,23 @@ MusicArtist( ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, - view_count: Some(1700000), + view_count: Some(372000), is_video: true, track_nr: None, by_va: false, ), TrackItem( - id: "juwh4K2Dvrk", - name: "No Strings", + id: "DQZcxN9v0RA", + name: "Dive", duration: None, cover: [ Thumbnail( - url: "https://i.ytimg.com/vi/juwh4K2Dvrk/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3l5GoPZGzrO16keZ1xQkDKuNdK9Ig", + url: "https://i.ytimg.com/vi/DQZcxN9v0RA/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3m-wzWW924f_UkHeAARDYLmE90ANg", width: 400, height: 225, ), Thumbnail( - url: "https://i.ytimg.com/vi/juwh4K2Dvrk/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3l-rS2t3P8Qw23whGMH8VtNUVF-5g", + url: "https://i.ytimg.com/vi/DQZcxN9v0RA/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3m3PQZ8HE21VPgZj92C7kHNyDk6Vg", width: 800, height: 450, ), @@ -336,36 +307,7 @@ MusicArtist( ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, - view_count: Some(2100000), - is_video: true, - track_nr: None, - by_va: false, - ), - TrackItem( - id: "JGwWNGJdvx8", - name: "Shape of You", - duration: None, - cover: [ - Thumbnail( - url: "https://i.ytimg.com/vi/JGwWNGJdvx8/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kWA2X-8_-P2As6JMBtJDLWaPSjOQ", - width: 400, - height: 225, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/JGwWNGJdvx8/sddefault.jpg?sqp=-oaymwEWCKoDEPABIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3n5bppMMMu0X7cXTBMs84X79XOttA", - width: 426, - height: 240, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album: None, - view_count: Some(5900000000), + view_count: Some(1000000), is_video: true, track_nr: None, by_va: false, @@ -394,25 +336,25 @@ MusicArtist( ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, - view_count: Some(3400000000), + view_count: Some(3800000000), is_video: true, track_nr: None, by_va: false, ), TrackItem( - id: "YxSj3TP90SA", - name: "Curtains", + id: "JGwWNGJdvx8", + name: "Shape of You", duration: None, cover: [ Thumbnail( - url: "https://i.ytimg.com/vi/YxSj3TP90SA/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nKOD3bA2Sb-8nB5hXGn1aJZzMMFQ", + url: "https://i.ytimg.com/vi/JGwWNGJdvx8/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kWA2X-8_-P2As6JMBtJDLWaPSjOQ", width: 400, height: 225, ), Thumbnail( - url: "https://i.ytimg.com/vi/YxSj3TP90SA/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3mGg6TjM1kr9OzXxahvmab-1WmPOg", - width: 800, - height: 450, + url: "https://i.ytimg.com/vi/JGwWNGJdvx8/sddefault.jpg?sqp=-oaymwEWCKoDEPABIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3n5bppMMMu0X7cXTBMs84X79XOttA", + width: 426, + height: 240, ), ], artists: [ @@ -423,36 +365,7 @@ MusicArtist( ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, - view_count: Some(8600000), - is_video: true, - track_nr: None, - by_va: false, - ), - TrackItem( - id: "lp-EO5I60KA", - name: "Thinking Out Loud", - duration: None, - cover: [ - Thumbnail( - url: "https://i.ytimg.com/vi/lp-EO5I60KA/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mu6BO8nHKcEzWdeZSd-sWgcIUiLQ", - width: 400, - height: 225, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/lp-EO5I60KA/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3mZqDZb-TPcLwepwoQH8ZifYHp96A", - width: 800, - height: 450, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album: None, - view_count: Some(3500000000), + view_count: Some(6300000000), is_video: true, track_nr: None, by_va: false, @@ -481,13 +394,230 @@ MusicArtist( ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, - view_count: Some(1200000000), + view_count: Some(1400000000), + is_video: true, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "lp-EO5I60KA", + name: "Thinking out Loud", + duration: None, + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/lp-EO5I60KA/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mu6BO8nHKcEzWdeZSd-sWgcIUiLQ", + width: 400, + height: 225, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/lp-EO5I60KA/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3mZqDZb-TPcLwepwoQH8ZifYHp96A", + width: 800, + height: 450, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album: None, + view_count: Some(3800000000), + is_video: true, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "orJSJGHjBLI", + name: "Bad Habits", + duration: None, + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/orJSJGHjBLI/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kuWcj3GFn0KIrIk9yjaPHYxOaIvg", + width: 400, + height: 225, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/orJSJGHjBLI/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3lNMLo9uVag3GNRhhhblGO0NpT4hA", + width: 800, + height: 450, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album: None, + view_count: Some(641000000), + is_video: true, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "Il0S8BoucSA", + name: "Shivers", + duration: None, + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/Il0S8BoucSA/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3md0OdolJfM7sSx62zb9Wr86LIsEA", + width: 400, + height: 225, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Il0S8BoucSA/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3l584OTAFrn2AeZulvXXEqdKVzhjQ", + width: 800, + height: 450, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album: None, + view_count: Some(364000000), is_video: true, track_nr: None, by_va: false, ), ], albums: [ + AlbumItem( + id: "MPREb_HPmSSZo0SwK", + name: "+-=÷× (Tour Collection)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/ryGcoZEPTIrtIulTIzQM3jP3Uye4AihlqMFJ5e6mzHyKAPVw6A34qDCA-UNO6K33kjcxrYL00lM8WaNX=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/ryGcoZEPTIrtIulTIzQM3jP3Uye4AihlqMFJ5e6mzHyKAPVw6A34qDCA-UNO6K33kjcxrYL00lM8WaNX=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Album, + year: Some(2024), + by_va: false, + ), + AlbumItem( + id: "MPREb_tYL9F3mHJcO", + name: "x (10th Anniversary Edition)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/qzaY7mGHBLDfY3_g58NSuX5eh2iGcTRoAc8MVEtmQVu6qY_i4KvfkOU3fu9RMi4RxbiPPFXAodSEdQlY=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/qzaY7mGHBLDfY3_g58NSuX5eh2iGcTRoAc8MVEtmQVu6qY_i4KvfkOU3fu9RMi4RxbiPPFXAodSEdQlY=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Album, + year: Some(2024), + by_va: false, + ), + AlbumItem( + id: "MPREb_LDIo5ZWELzD", + name: "Autumn Variations (Fan Living Room Sessions)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/noOqFYwFPI9_-dK61yAB-EMfK4WPruvXRZh2GBr8lhCgdmz6OTVQUZPxFcNJh6FkE13aXcfLqdGmUdiklA=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/noOqFYwFPI9_-dK61yAB-EMfK4WPruvXRZh2GBr8lhCgdmz6OTVQUZPxFcNJh6FkE13aXcfLqdGmUdiklA=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Album, + year: Some(2023), + by_va: false, + ), + AlbumItem( + id: "MPREb_uEnbnIYJjMT", + name: "Autumn Variations", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/YAQJ6XzfFOmwYHBmNO2ROAeI2hcRiPdhXnLpj9OdgM6F5E8NfxlEWNrfv18bu3DSdtAtsPeNQrVfR2Rt=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/YAQJ6XzfFOmwYHBmNO2ROAeI2hcRiPdhXnLpj9OdgM6F5E8NfxlEWNrfv18bu3DSdtAtsPeNQrVfR2Rt=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Album, + year: Some(2023), + by_va: false, + ), + AlbumItem( + id: "MPREb_J3TRP3oprCB", + name: "A Beautiful Game", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/N8puXGTJbxb4YyujbLTkmomBQVH1MrpQMwSR-wg3U6535UAckbR4Hu_5mTiNs4eEC-UIP6dds3cUzBPMdA=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/N8puXGTJbxb4YyujbLTkmomBQVH1MrpQMwSR-wg3U6535UAckbR4Hu_5mTiNs4eEC-UIP6dds3cUzBPMdA=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2023), + by_va: false, + ), AlbumItem( id: "MPREb_ZkVjx6hEPfJ", name: "Life Goes On (feat. Luke Combs)", @@ -618,6 +748,32 @@ MusicArtist( year: Some(2023), by_va: false, ), + AlbumItem( + id: "MPREb_fZNv5ElWNqo", + name: "Eyes Closed (Lost Frequencies Remix)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/HdIO1ivyZIMz0Zc9X3T0zH-WkwnJJWwbrn16OR_PUSRVUyKbznXhBZDACfHgi-twjMlR0E765Wqw2p3uYw=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/HdIO1ivyZIMz0Zc9X3T0zH-WkwnJJWwbrn16OR_PUSRVUyKbznXhBZDACfHgi-twjMlR0E765Wqw2p3uYw=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2023), + by_va: false, + ), AlbumItem( id: "MPREb_boUIBO6m7u6", name: "F64", @@ -775,16 +931,16 @@ MusicArtist( by_va: false, ), AlbumItem( - id: "MPREb_JSWUcZ11cM7", - name: "Are You Entertained", + id: "MPREb_CoHB9zZwxV2", + name: "2step (The Remixes)", cover: [ Thumbnail( - url: "https://lh3.googleusercontent.com/WEr3fB_IMs3qNRce0mejdN-rHz2p6gioqM_2tXsbGVtNc9VWQBxek1TqKZLF1i9rUGbZz7uH9x2mhayj=w226-h226-l90-rj", + url: "https://lh3.googleusercontent.com/I6ckB2xTisbuu7f0rX5RKpW1H5pBi5aLCrjBYwGl_KO3kABTSlAHZWDJ7UyugxdcaeBM4gLSkPOZf3er=w226-h226-l90-rj", width: 226, height: 226, ), Thumbnail( - url: "https://lh3.googleusercontent.com/WEr3fB_IMs3qNRce0mejdN-rHz2p6gioqM_2tXsbGVtNc9VWQBxek1TqKZLF1i9rUGbZz7uH9x2mhayj=w544-h544-l90-rj", + url: "https://lh3.googleusercontent.com/I6ckB2xTisbuu7f0rX5RKpW1H5pBi5aLCrjBYwGl_KO3kABTSlAHZWDJ7UyugxdcaeBM4gLSkPOZf3er=w544-h544-l90-rj", width: 544, height: 544, ), @@ -796,7 +952,7 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, + album_type: Album, year: Some(2022), by_va: false, ), @@ -982,6 +1138,32 @@ MusicArtist( year: Some(2022), by_va: false, ), + AlbumItem( + id: "MPREb_M6lSUKZ0USh", + name: "2step (Star.One Remix)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/_jXpUv6XDy72f3D05vkXkMGHJgmesuJa6gGIrnAJjJSIqJao54XzSNzyDkv3erQtd1u7geYdYhZmfy46=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/_jXpUv6XDy72f3D05vkXkMGHJgmesuJa6gGIrnAJjJSIqJao54XzSNzyDkv3erQtd1u7geYdYhZmfy46=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2022), + by_va: false, + ), AlbumItem( id: "MPREb_JE3cETpOAVy", name: "2step (feat. Budjerah)", @@ -1164,6 +1346,32 @@ MusicArtist( year: Some(2022), by_va: false, ), + AlbumItem( + id: "MPREb_649GGrRZiU0", + name: "Peru (R3HAB Remix)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/pUgXdqaX2_q7FT4CrE_OIdmwiJoiZckDCk3r0RGfSJWAwG7AX-3a6wymtP1BF0RkzH4ePYPSkag5LoI=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/pUgXdqaX2_q7FT4CrE_OIdmwiJoiZckDCk3r0RGfSJWAwG7AX-3a6wymtP1BF0RkzH4ePYPSkag5LoI=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2022), + by_va: false, + ), AlbumItem( id: "MPREb_HJ6D0OWrWu8", name: "The Joker And The Queen (feat. Taylor Swift)", @@ -1320,32 +1528,6 @@ MusicArtist( year: Some(2021), by_va: false, ), - AlbumItem( - id: "MPREb_k3zSCIhuy8Z", - name: "=", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/thG9CVPO7TNRjN46ACoToQvAcBnSUN5wdD849PHg-7zoFRpB2c6GbHOPJ8FntFQc2_NxteEeNoW6p_c=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/thG9CVPO7TNRjN46ACoToQvAcBnSUN5wdD849PHg-7zoFRpB2c6GbHOPJ8FntFQc2_NxteEeNoW6p_c=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Album, - year: Some(2021), - by_va: false, - ), AlbumItem( id: "MPREb_r4N9aqbEyO6", name: "Shivers (feat. Jessi & SUNMI)", @@ -1372,994 +1554,6 @@ MusicArtist( year: Some(2021), by_va: false, ), - AlbumItem( - id: "MPREb_FSP8P482Yww", - name: "Shivers (Acoustic Version)", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/Ca15xJfTWA--68fPSupMdTAOvY9Rd4MxFSk0bD0feSxybe5whNd4ysVsAd1x78SUwpJcrOJUDZz2QZI=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/Ca15xJfTWA--68fPSupMdTAOvY9Rd4MxFSk0bD0feSxybe5whNd4ysVsAd1x78SUwpJcrOJUDZz2QZI=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, - year: Some(2021), - by_va: false, - ), - AlbumItem( - id: "MPREb_0qzA9qC504a", - name: "Shivers", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/LDjFD-70y9c3aYL3-2zTUXkmlWfNlryJllQpHZLxZgi0i73pGx9JaJkNzDTo2LO9cGBDJx7E4eWdytMA=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/LDjFD-70y9c3aYL3-2zTUXkmlWfNlryJllQpHZLxZgi0i73pGx9JaJkNzDTo2LO9cGBDJx7E4eWdytMA=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, - year: Some(2021), - by_va: false, - ), - AlbumItem( - id: "MPREb_LJQn89VQCXo", - name: "Visiting Hours", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/NeLeE39EJubJPPdRzYE49q3QyB-8mmfIjyWw_o0m40fOUBDqLVpMNH_jdApO9SHck9pDNMx-Vj-O53SBIg=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/NeLeE39EJubJPPdRzYE49q3QyB-8mmfIjyWw_o0m40fOUBDqLVpMNH_jdApO9SHck9pDNMx-Vj-O53SBIg=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, - year: Some(2021), - by_va: false, - ), - AlbumItem( - id: "MPREb_L6fwH6dF0r0", - name: "Bad Habits (Acoustic Version)", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/C8f5HPHhFHaXtg7GbL_MXeaQ_nlWSCDyUWLPy7UfsrkoG0Ogt4d4c8TKdwHWApeTZgcV89hLvOv2i3E=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/C8f5HPHhFHaXtg7GbL_MXeaQ_nlWSCDyUWLPy7UfsrkoG0Ogt4d4c8TKdwHWApeTZgcV89hLvOv2i3E=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, - year: Some(2021), - by_va: false, - ), - AlbumItem( - id: "MPREb_917r4nW96j5", - name: "Bad Habits", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/3xN5Rqah_iSMqbl3ZMCr9MjnEBVyBLmLng0f-MCvFFdfPNhK619ikGwAD0iOBkzCOXIlucWE0lLLXJA=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/3xN5Rqah_iSMqbl3ZMCr9MjnEBVyBLmLng0f-MCvFFdfPNhK619ikGwAD0iOBkzCOXIlucWE0lLLXJA=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, - year: Some(2021), - by_va: false, - ), - AlbumItem( - id: "MPREb_cJ3E2IfwzTh", - name: "Afterglow", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/dzpmzTpQLVrjYIZfMeyXeIHer10zf4cUU6GHSmgaV-RosRg-OaxjwvVFcj__bAiiBz19emxU7f5KHog=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/dzpmzTpQLVrjYIZfMeyXeIHer10zf4cUU6GHSmgaV-RosRg-OaxjwvVFcj__bAiiBz19emxU7f5KHog=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, - year: Some(2020), - by_va: false, - ), - AlbumItem( - id: "MPREb_3WBQ4njLUp6", - name: "South of the Border (Acoustic) (feat. Camila Cabello)", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/DlNfga41lyp3QDA0YGtJYs138V77xlKZaMjRXomOdQGzSxmNKXayb5P4N9BpH4q4Ys-_JJaCdwcvHCDGqg=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/DlNfga41lyp3QDA0YGtJYs138V77xlKZaMjRXomOdQGzSxmNKXayb5P4N9BpH4q4Ys-_JJaCdwcvHCDGqg=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, - year: Some(2019), - by_va: false, - ), - AlbumItem( - id: "MPREb_VIXO8xFh4IZ", - name: "No.6 Collaborations Project", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/2rSqxXTYIox46twhc2zC73tSPuzHz9XBx04tojSXQmXN4SK7NgYdwX5PgqcX7reoPG_3WrjnIu-hbm5G=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/2rSqxXTYIox46twhc2zC73tSPuzHz9XBx04tojSXQmXN4SK7NgYdwX5PgqcX7reoPG_3WrjnIu-hbm5G=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Album, - year: Some(2019), - by_va: false, - ), - AlbumItem( - id: "MPREb_CyMAAeTdw1p", - name: "Best Part of Me (feat. Yebba )", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/aMADkfYpKT-mm2P7GdMIPvFIgbY4RCf_8OZCBCykB_gtxEkWUvKtLzKJDvAol0MCfBlOX83bKaf3tp4l=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/aMADkfYpKT-mm2P7GdMIPvFIgbY4RCf_8OZCBCykB_gtxEkWUvKtLzKJDvAol0MCfBlOX83bKaf3tp4l=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, - year: Some(2019), - by_va: false, - ), - AlbumItem( - id: "MPREb_P3ADtHY53Fe", - name: "BLOW", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/ao3pNzel9rJ3JoW5TQmnUZTa6ADc-rUk5bgTMHtnm2SWPiYh6vygBvfCV0QJZPWhIXuURiVde1eaIojk=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/ao3pNzel9rJ3JoW5TQmnUZTa6ADc-rUk5bgTMHtnm2SWPiYh6vygBvfCV0QJZPWhIXuURiVde1eaIojk=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, - year: Some(2019), - by_va: false, - ), - AlbumItem( - id: "MPREb_AVphTUtHNCE", - name: "Beautiful People (Acoustic)", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/_fAsm5XrN9i5aLcLVTXuT56gypsHcZ8DnBle6E61SvFJrlQCgjaRVF0KDG2vgUetq5yVKHWvgokwzjuw_Q=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/_fAsm5XrN9i5aLcLVTXuT56gypsHcZ8DnBle6E61SvFJrlQCgjaRVF0KDG2vgUetq5yVKHWvgokwzjuw_Q=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, - year: Some(2019), - by_va: false, - ), - AlbumItem( - id: "MPREb_twQ88DmN7lm", - name: "Beautiful People (feat. Khalid)", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/mLYowfEczgSkvmg-dsOG20VbBR95_1gNnhPF5RYcaJLI8mS0ZOtaEd3l80r7KRsM2sAU8sxpIKaenZs=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/mLYowfEczgSkvmg-dsOG20VbBR95_1gNnhPF5RYcaJLI8mS0ZOtaEd3l80r7KRsM2sAU8sxpIKaenZs=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, - year: Some(2019), - by_va: false, - ), - AlbumItem( - id: "MPREb_616RtSdo4UU", - name: "Cross Me (feat. Chance The Rapper & PnB Rock)", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/pWiNnmgAvecsn7JqMnYP6rXMUo0mPs0rXaBHLQwjpIvRIRLkfotLIhhFz8njeD7kHPCBk5t29Q2fIjsdRw=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/pWiNnmgAvecsn7JqMnYP6rXMUo0mPs0rXaBHLQwjpIvRIRLkfotLIhhFz8njeD7kHPCBk5t29Q2fIjsdRw=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, - year: Some(2019), - by_va: false, - ), - AlbumItem( - id: "MPREb_npDhgdB9yJF", - name: "I Don\'t Care", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/TOs6EF6cy4xJL9TKOiPk3WuR7U5jnA-In5CY6Mb0HGMzbpQ9rUGJPslabC-b2dJbJRSlcuUqRe0Zwgo=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/TOs6EF6cy4xJL9TKOiPk3WuR7U5jnA-In5CY6Mb0HGMzbpQ9rUGJPslabC-b2dJbJRSlcuUqRe0Zwgo=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, - year: Some(2019), - by_va: false, - ), - AlbumItem( - id: "MPREb_vGa5krfHkE8", - name: "Happier (Acoustic)", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/39eatOjceZ4phjdFp21jHJS-wCEkNph51VNCzdBF7JVFeH68EXAEyTGdQv9VWkClEh__1hCbJtL-jeIt=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/39eatOjceZ4phjdFp21jHJS-wCEkNph51VNCzdBF7JVFeH68EXAEyTGdQv9VWkClEh__1hCbJtL-jeIt=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, - year: Some(2018), - by_va: false, - ), - AlbumItem( - id: "MPREb_kVHz8wXHGCv", - name: "Perfect Symphony (feat. Andrea Bocelli)", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/gt2VLko0VPeGpEwZwen50BQ7KLTCC_La1Z5o2bpRfe4mqQakRcdct1adWV2Qkn5HZUOob9iAL5AU6PM=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/gt2VLko0VPeGpEwZwen50BQ7KLTCC_La1Z5o2bpRfe4mqQakRcdct1adWV2Qkn5HZUOob9iAL5AU6PM=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, - year: Some(2017), - by_va: false, - ), - AlbumItem( - id: "MPREb_GQuLaofFeh4", - name: "Perfect Duet (feat. Beyoncé)", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/WcRXfdBQQ1k92rfIQYZCHXdTgRfmxEAcpGMzOtX1XN3tUkQdVjlk-Sc4NjuMeXbrjlfxWmn_AhA_-EUMMg=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/WcRXfdBQQ1k92rfIQYZCHXdTgRfmxEAcpGMzOtX1XN3tUkQdVjlk-Sc4NjuMeXbrjlfxWmn_AhA_-EUMMg=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, - year: Some(2017), - by_va: false, - ), - AlbumItem( - id: "MPREb_VplSXzEydMQ", - name: "Perfect (Acoustic)", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/7SN8J78BRhTj1Lxp78eOQiSyOzaRWUfWkShx5EwDj502OnoNQ6Fk8dGZLCA-8jZNGGLxTvnAZW3s-6YOEg=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/7SN8J78BRhTj1Lxp78eOQiSyOzaRWUfWkShx5EwDj502OnoNQ6Fk8dGZLCA-8jZNGGLxTvnAZW3s-6YOEg=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, - year: Some(2017), - by_va: false, - ), - AlbumItem( - id: "MPREb_T5s950Swfdy", - name: "÷ (Deluxe)", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/xpDEOr2TeqEn1QpXosXhqtj149FzNnTgAG3oqPnpTxTbQk-oceO90Sz4Axq0s4Jp_QLGQha_um6_EG3WGQ=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/xpDEOr2TeqEn1QpXosXhqtj149FzNnTgAG3oqPnpTxTbQk-oceO90Sz4Axq0s4Jp_QLGQha_um6_EG3WGQ=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Album, - year: Some(2017), - by_va: false, - ), - AlbumItem( - id: "MPREb_iw09vpSYqaZ", - name: "How Would You Feel (Paean)", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/Q55rIAk_fG3Q4HmtuD9ZQOniqMdd5wPK9ZnecT-pqaINoBPGkZpQdty93QCUF1pMLS1hk-QTwGM5HtcP=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/Q55rIAk_fG3Q4HmtuD9ZQOniqMdd5wPK9ZnecT-pqaINoBPGkZpQdty93QCUF1pMLS1hk-QTwGM5HtcP=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, - year: Some(2017), - by_va: false, - ), - AlbumItem( - id: "MPREb_X7o29iaA2pL", - name: "Shape of You (Acoustic)", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/bwy4-vj9NW0ZwqNnLff1pJwDeY86q_0r31JiaetMc5pFQyjYAwuC3eYLT3mc9sjeSrQQQfXZOsItBL9y=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/bwy4-vj9NW0ZwqNnLff1pJwDeY86q_0r31JiaetMc5pFQyjYAwuC3eYLT3mc9sjeSrQQQfXZOsItBL9y=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, - year: Some(2017), - by_va: false, - ), - AlbumItem( - id: "MPREb_9afeNFZkAHG", - name: "Castle on the Hill", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/ZjsspviQCPTW7akHOuEuft-UEE_W_Ge_qBx5CRc06K5pzrKIVc3BzyiqB2WB2vD648JGEP7wQBbaEn3aSw=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/ZjsspviQCPTW7akHOuEuft-UEE_W_Ge_qBx5CRc06K5pzrKIVc3BzyiqB2WB2vD648JGEP7wQBbaEn3aSw=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, - year: Some(2017), - by_va: false, - ), - AlbumItem( - id: "MPREb_FNeOTtNjbu3", - name: "Don\'t", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/Jgi4oz7s7ckM3gEAQQgIgCWZEFDITqChMqSaPPX1QtDSBlaZDenoxcfCHAl-O_6X3pn5f6Q3O4utfHvBbA=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/Jgi4oz7s7ckM3gEAQQgIgCWZEFDITqChMqSaPPX1QtDSBlaZDenoxcfCHAl-O_6X3pn5f6Q3O4utfHvBbA=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Ep, - year: Some(2014), - by_va: false, - ), - AlbumItem( - id: "MPREb_A4r9EfLZzYN", - name: "x (Deluxe Edition)", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/emeqGnTWaGFe5roPNKOsSe5WFl81hEScrwhlaJkSrmZn8F-rcYVg_VtYKSj5v59eU5ZrUo3uzlbI0wDV=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/emeqGnTWaGFe5roPNKOsSe5WFl81hEScrwhlaJkSrmZn8F-rcYVg_VtYKSj5v59eU5ZrUo3uzlbI0wDV=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Album, - year: Some(2014), - by_va: false, - ), - AlbumItem( - id: "MPREb_BZlJAuZP4ab", - name: "Bloodstream", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/TgtfJ5qVk7CXg9Q3aP5gO6YatBdsIX_S5OIn0wYp4_ur8EcOYN0yET6XVVgi32rvu60JUsjgvLGifEMOVQ=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/TgtfJ5qVk7CXg9Q3aP5gO6YatBdsIX_S5OIn0wYp4_ur8EcOYN0yET6XVVgi32rvu60JUsjgvLGifEMOVQ=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, - year: Some(2014), - by_va: false, - ), - AlbumItem( - id: "MPREb_BRb3zdRHvHB", - name: "I Don\'t Care (Acoustic)", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/yUNn6qIle5EaOJfD2SLWzbzYhYuFjg6XA911-l26DYgaPd1JAjxwo8VmbyQpoPUAwykTIuRuTA-NaaY=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/yUNn6qIle5EaOJfD2SLWzbzYhYuFjg6XA911-l26DYgaPd1JAjxwo8VmbyQpoPUAwykTIuRuTA-NaaY=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, - year: Some(2014), - by_va: false, - ), - AlbumItem( - id: "MPREb_HQMyFGXfn7Q", - name: "Sing", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/eEvPKcOR-o7x5Hf5vhYxMW2O3p47_QoN0P7dEZ2b4BiC8F2dGl9D8Kk6ltZCGIK2mEhDwbpKqDWt4Wh9=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/eEvPKcOR-o7x5Hf5vhYxMW2O3p47_QoN0P7dEZ2b4BiC8F2dGl9D8Kk6ltZCGIK2mEhDwbpKqDWt4Wh9=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, - year: Some(2014), - by_va: false, - ), - AlbumItem( - id: "MPREb_H0GkUrdjcC9", - name: "Lego House", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/SWX7Xcu5W8RVYn2URT-WuU9wxyuqpSBUENwYWFYMZOeNEMEqHgGki-4zohvbu5ppP54zvIR2iJO9YZ8=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/SWX7Xcu5W8RVYn2URT-WuU9wxyuqpSBUENwYWFYMZOeNEMEqHgGki-4zohvbu5ppP54zvIR2iJO9YZ8=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, - year: Some(2011), - by_va: false, - ), - AlbumItem( - id: "MPREb_KYP1Wsy4NQn", - name: "+", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/5-Z0bmxl8Smil_IosCTw95oPxleiktQjx9DBusLmQDMJ_8EinzpmvvYqSUVimNzsftg3aEUFTM6y0TFM=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/5-Z0bmxl8Smil_IosCTw95oPxleiktQjx9DBusLmQDMJ_8EinzpmvvYqSUVimNzsftg3aEUFTM6y0TFM=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Album, - year: Some(2011), - by_va: false, - ), - AlbumItem( - id: "MPREb_rglJNvRZR9v", - name: "No. 5 Collaborations Project", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/7wdqo8xOHm9VGruKlzukzOuLIVAl3QzMqldt0itaY_FsGv5al1zcs9tpKIAJZaDQbErO2bmaurbLsT6V=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/7wdqo8xOHm9VGruKlzukzOuLIVAl3QzMqldt0itaY_FsGv5al1zcs9tpKIAJZaDQbErO2bmaurbLsT6V=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Album, - year: Some(2011), - by_va: false, - ), - AlbumItem( - id: "MPREb_aRZymyCfxCE", - name: "Songs I Wrote with Amy", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/5J-U6RzheXK9QqZBMFJG_EFzo-P_8b-RrD987IWQ8_EmyvvDjdk92OU2u0xsTrqnbCH4XkLGN2VWL5pWdg=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/5J-U6RzheXK9QqZBMFJG_EFzo-P_8b-RrD987IWQ8_EmyvvDjdk92OU2u0xsTrqnbCH4XkLGN2VWL5pWdg=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Ep, - year: Some(2010), - by_va: false, - ), - AlbumItem( - id: "MPREb_TZyh5Fu0Iel", - name: "Loose Change", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/xESC6YGPy6Jj3LES1NuhyAWBxVJrDgWL_pViNBZ0wPYgTNzmDSlNt9zeSLLgoc82mD7SKTUswO6oAZf3=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/xESC6YGPy6Jj3LES1NuhyAWBxVJrDgWL_pViNBZ0wPYgTNzmDSlNt9zeSLLgoc82mD7SKTUswO6oAZf3=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Album, - year: Some(2010), - by_va: false, - ), - AlbumItem( - id: "MPREb_nJ5BUdCWCr1", - name: "You Need Me", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/XJ1XRgHQdNcCSYYWXcgwjpLu6F-KimhB-l-pSjjKflqBLe4aRyXLMDbkkZLLfLIX8Dg6OiYFksiCGA4=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/XJ1XRgHQdNcCSYYWXcgwjpLu6F-KimhB-l-pSjjKflqBLe4aRyXLMDbkkZLLfLIX8Dg6OiYFksiCGA4=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Ep, - year: Some(2009), - by_va: false, - ), - AlbumItem( - id: "MPREb_UqnUOFNrfOf", - name: "Live at the Bedford", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/p0iWkMVsjDYyxOfLMFK3V7ZoWvK9uJOw4W5hiBCNQ4GG-t1e93KgBUKiUj9BsRXtx10m27q6cO276Pfo=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/p0iWkMVsjDYyxOfLMFK3V7ZoWvK9uJOw4W5hiBCNQ4GG-t1e93KgBUKiUj9BsRXtx10m27q6cO276Pfo=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Ep, - year: Some(2010), - by_va: false, - ), - AlbumItem( - id: "MPREb_NFPi1ZlYqj0", - name: "Eyes Closed (Overmono Remix)", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/kaO2Pv5AIBJbfWePJiBj1dqSD9NUpdKl7zKRZ8OCXfHq3SScTtvkrTNqc8nb_IcOyqLRKZg-RnqxKiZl=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/kaO2Pv5AIBJbfWePJiBj1dqSD9NUpdKl7zKRZ8OCXfHq3SScTtvkrTNqc8nb_IcOyqLRKZg-RnqxKiZl=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, - year: Some(2023), - by_va: false, - ), - AlbumItem( - id: "MPREb_CoHB9zZwxV2", - name: "2step (The Remixes)", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/I6ckB2xTisbuu7f0rX5RKpW1H5pBi5aLCrjBYwGl_KO3kABTSlAHZWDJ7UyugxdcaeBM4gLSkPOZf3er=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/I6ckB2xTisbuu7f0rX5RKpW1H5pBi5aLCrjBYwGl_KO3kABTSlAHZWDJ7UyugxdcaeBM4gLSkPOZf3er=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Album, - year: Some(2022), - by_va: false, - ), - AlbumItem( - id: "MPREb_M6lSUKZ0USh", - name: "2step (Star.One Remix)", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/_jXpUv6XDy72f3D05vkXkMGHJgmesuJa6gGIrnAJjJSIqJao54XzSNzyDkv3erQtd1u7geYdYhZmfy46=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/_jXpUv6XDy72f3D05vkXkMGHJgmesuJa6gGIrnAJjJSIqJao54XzSNzyDkv3erQtd1u7geYdYhZmfy46=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, - year: Some(2022), - by_va: false, - ), - AlbumItem( - id: "MPREb_649GGrRZiU0", - name: "Peru (R3HAB Remix)", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/pUgXdqaX2_q7FT4CrE_OIdmwiJoiZckDCk3r0RGfSJWAwG7AX-3a6wymtP1BF0RkzH4ePYPSkag5LoI=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/pUgXdqaX2_q7FT4CrE_OIdmwiJoiZckDCk3r0RGfSJWAwG7AX-3a6wymtP1BF0RkzH4ePYPSkag5LoI=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, - year: Some(2022), - by_va: false, - ), AlbumItem( id: "MPREb_sJFtpMCXgWS", name: "Overpass Graffiti (Alle Farben Remix)", @@ -2464,6 +1658,32 @@ MusicArtist( year: Some(2021), by_va: false, ), + AlbumItem( + id: "MPREb_k3zSCIhuy8Z", + name: "=", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/thG9CVPO7TNRjN46ACoToQvAcBnSUN5wdD849PHg-7zoFRpB2c6GbHOPJ8FntFQc2_NxteEeNoW6p_c=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/thG9CVPO7TNRjN46ACoToQvAcBnSUN5wdD849PHg-7zoFRpB2c6GbHOPJ8FntFQc2_NxteEeNoW6p_c=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Album, + year: Some(2021), + by_va: false, + ), AlbumItem( id: "MPREb_vgEs2FwtTAB", name: "Shivers (Jax Jones Remix)", @@ -2568,6 +1788,84 @@ MusicArtist( year: Some(2021), by_va: false, ), + AlbumItem( + id: "MPREb_FSP8P482Yww", + name: "Shivers (Acoustic Version)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/Ca15xJfTWA--68fPSupMdTAOvY9Rd4MxFSk0bD0feSxybe5whNd4ysVsAd1x78SUwpJcrOJUDZz2QZI=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/Ca15xJfTWA--68fPSupMdTAOvY9Rd4MxFSk0bD0feSxybe5whNd4ysVsAd1x78SUwpJcrOJUDZz2QZI=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2021), + by_va: false, + ), + AlbumItem( + id: "MPREb_0qzA9qC504a", + name: "Shivers", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/LDjFD-70y9c3aYL3-2zTUXkmlWfNlryJllQpHZLxZgi0i73pGx9JaJkNzDTo2LO9cGBDJx7E4eWdytMA=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/LDjFD-70y9c3aYL3-2zTUXkmlWfNlryJllQpHZLxZgi0i73pGx9JaJkNzDTo2LO9cGBDJx7E4eWdytMA=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2021), + by_va: false, + ), + AlbumItem( + id: "MPREb_LJQn89VQCXo", + name: "Visiting Hours", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/NeLeE39EJubJPPdRzYE49q3QyB-8mmfIjyWw_o0m40fOUBDqLVpMNH_jdApO9SHck9pDNMx-Vj-O53SBIg=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/NeLeE39EJubJPPdRzYE49q3QyB-8mmfIjyWw_o0m40fOUBDqLVpMNH_jdApO9SHck9pDNMx-Vj-O53SBIg=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2021), + by_va: false, + ), AlbumItem( id: "MPREb_FERuqELs3mh", name: "Bad Habits (Fumez The Engineer Remix) (feat. Tion Wayne & Central Cee)", @@ -2672,6 +1970,84 @@ MusicArtist( year: Some(2021), by_va: false, ), + AlbumItem( + id: "MPREb_L6fwH6dF0r0", + name: "Bad Habits (Acoustic Version)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/C8f5HPHhFHaXtg7GbL_MXeaQ_nlWSCDyUWLPy7UfsrkoG0Ogt4d4c8TKdwHWApeTZgcV89hLvOv2i3E=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/C8f5HPHhFHaXtg7GbL_MXeaQ_nlWSCDyUWLPy7UfsrkoG0Ogt4d4c8TKdwHWApeTZgcV89hLvOv2i3E=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2021), + by_va: false, + ), + AlbumItem( + id: "MPREb_917r4nW96j5", + name: "Bad Habits", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/3xN5Rqah_iSMqbl3ZMCr9MjnEBVyBLmLng0f-MCvFFdfPNhK619ikGwAD0iOBkzCOXIlucWE0lLLXJA=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/3xN5Rqah_iSMqbl3ZMCr9MjnEBVyBLmLng0f-MCvFFdfPNhK619ikGwAD0iOBkzCOXIlucWE0lLLXJA=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2021), + by_va: false, + ), + AlbumItem( + id: "MPREb_cJ3E2IfwzTh", + name: "Afterglow", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/dzpmzTpQLVrjYIZfMeyXeIHer10zf4cUU6GHSmgaV-RosRg-OaxjwvVFcj__bAiiBz19emxU7f5KHog=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/dzpmzTpQLVrjYIZfMeyXeIHer10zf4cUU6GHSmgaV-RosRg-OaxjwvVFcj__bAiiBz19emxU7f5KHog=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2020), + by_va: false, + ), AlbumItem( id: "MPREb_k72GvmjzLXR", name: "Antisocial (MK Remix)", @@ -2724,6 +2100,32 @@ MusicArtist( year: Some(2019), by_va: false, ), + AlbumItem( + id: "MPREb_3WBQ4njLUp6", + name: "South of the Border (Acoustic) (feat. Camila Cabello)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/DlNfga41lyp3QDA0YGtJYs138V77xlKZaMjRXomOdQGzSxmNKXayb5P4N9BpH4q4Ys-_JJaCdwcvHCDGqg=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/DlNfga41lyp3QDA0YGtJYs138V77xlKZaMjRXomOdQGzSxmNKXayb5P4N9BpH4q4Ys-_JJaCdwcvHCDGqg=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2019), + by_va: false, + ), AlbumItem( id: "MPREb_QnBf7Ep5aVv", name: "South of the Border (Cheat Codes Remix) (feat. Camila Cabello & Cardi B)", @@ -2854,6 +2256,110 @@ MusicArtist( year: Some(2019), by_va: false, ), + AlbumItem( + id: "MPREb_VIXO8xFh4IZ", + name: "No.6 Collaborations Project", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/2rSqxXTYIox46twhc2zC73tSPuzHz9XBx04tojSXQmXN4SK7NgYdwX5PgqcX7reoPG_3WrjnIu-hbm5G=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/2rSqxXTYIox46twhc2zC73tSPuzHz9XBx04tojSXQmXN4SK7NgYdwX5PgqcX7reoPG_3WrjnIu-hbm5G=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Album, + year: Some(2019), + by_va: false, + ), + AlbumItem( + id: "MPREb_CyMAAeTdw1p", + name: "Best Part of Me (feat. Yebba )", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/aMADkfYpKT-mm2P7GdMIPvFIgbY4RCf_8OZCBCykB_gtxEkWUvKtLzKJDvAol0MCfBlOX83bKaf3tp4l=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/aMADkfYpKT-mm2P7GdMIPvFIgbY4RCf_8OZCBCykB_gtxEkWUvKtLzKJDvAol0MCfBlOX83bKaf3tp4l=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2019), + by_va: false, + ), + AlbumItem( + id: "MPREb_P3ADtHY53Fe", + name: "BLOW", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/ao3pNzel9rJ3JoW5TQmnUZTa6ADc-rUk5bgTMHtnm2SWPiYh6vygBvfCV0QJZPWhIXuURiVde1eaIojk=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/ao3pNzel9rJ3JoW5TQmnUZTa6ADc-rUk5bgTMHtnm2SWPiYh6vygBvfCV0QJZPWhIXuURiVde1eaIojk=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2019), + by_va: false, + ), + AlbumItem( + id: "MPREb_AVphTUtHNCE", + name: "Beautiful People (Acoustic)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/_fAsm5XrN9i5aLcLVTXuT56gypsHcZ8DnBle6E61SvFJrlQCgjaRVF0KDG2vgUetq5yVKHWvgokwzjuw_Q=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/_fAsm5XrN9i5aLcLVTXuT56gypsHcZ8DnBle6E61SvFJrlQCgjaRVF0KDG2vgUetq5yVKHWvgokwzjuw_Q=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2019), + by_va: false, + ), AlbumItem( id: "MPREb_jUrQouht1aX", name: "Beautiful People (Jack Wins Remix) (feat. Khalid)", @@ -2932,6 +2438,32 @@ MusicArtist( year: Some(2019), by_va: false, ), + AlbumItem( + id: "MPREb_twQ88DmN7lm", + name: "Beautiful People (feat. Khalid)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/mLYowfEczgSkvmg-dsOG20VbBR95_1gNnhPF5RYcaJLI8mS0ZOtaEd3l80r7KRsM2sAU8sxpIKaenZs=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/mLYowfEczgSkvmg-dsOG20VbBR95_1gNnhPF5RYcaJLI8mS0ZOtaEd3l80r7KRsM2sAU8sxpIKaenZs=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2019), + by_va: false, + ), AlbumItem( id: "MPREb_rwojmesGd0y", name: "Cross Me (M-22 Remix) (feat. Chance The Rapper & PnB Rock)", @@ -2958,6 +2490,58 @@ MusicArtist( year: Some(2019), by_va: false, ), + AlbumItem( + id: "MPREb_616RtSdo4UU", + name: "Cross Me (feat. Chance The Rapper & PnB Rock)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/pWiNnmgAvecsn7JqMnYP6rXMUo0mPs0rXaBHLQwjpIvRIRLkfotLIhhFz8njeD7kHPCBk5t29Q2fIjsdRw=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/pWiNnmgAvecsn7JqMnYP6rXMUo0mPs0rXaBHLQwjpIvRIRLkfotLIhhFz8njeD7kHPCBk5t29Q2fIjsdRw=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2019), + by_va: false, + ), + AlbumItem( + id: "MPREb_npDhgdB9yJF", + name: "I Don\'t Care", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/TOs6EF6cy4xJL9TKOiPk3WuR7U5jnA-In5CY6Mb0HGMzbpQ9rUGJPslabC-b2dJbJRSlcuUqRe0Zwgo=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/TOs6EF6cy4xJL9TKOiPk3WuR7U5jnA-In5CY6Mb0HGMzbpQ9rUGJPslabC-b2dJbJRSlcuUqRe0Zwgo=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2019), + by_va: false, + ), AlbumItem( id: "MPREb_wzuwDlIpQoe", name: "I Don\'t Care (Jonas Blue Remix)", @@ -3062,6 +2646,32 @@ MusicArtist( year: Some(2018), by_va: false, ), + AlbumItem( + id: "MPREb_vGa5krfHkE8", + name: "Happier (Acoustic)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/39eatOjceZ4phjdFp21jHJS-wCEkNph51VNCzdBF7JVFeH68EXAEyTGdQv9VWkClEh__1hCbJtL-jeIt=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/39eatOjceZ4phjdFp21jHJS-wCEkNph51VNCzdBF7JVFeH68EXAEyTGdQv9VWkClEh__1hCbJtL-jeIt=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2018), + by_va: false, + ), AlbumItem( id: "MPREb_QhaA3O3dTQJ", name: "Happier (Tiësto’s AFTR:HRS Remix)", @@ -3088,6 +2698,864 @@ MusicArtist( year: Some(2018), by_va: false, ), + AlbumItem( + id: "MPREb_ai4tf2gU8M2", + name: "Happier (Cazzette Remix)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/XjCQ31TKzwPly-VWy7e3NgbelbLJ6Zw9RoCthhcSdiduxSwDfWw4Hvc5SIXql6LKEjdeXnDB24nJ3L5P=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/XjCQ31TKzwPly-VWy7e3NgbelbLJ6Zw9RoCthhcSdiduxSwDfWw4Hvc5SIXql6LKEjdeXnDB24nJ3L5P=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2018), + by_va: false, + ), + AlbumItem( + id: "MPREb_kVHz8wXHGCv", + name: "Perfect Symphony (feat. Andrea Bocelli)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/gt2VLko0VPeGpEwZwen50BQ7KLTCC_La1Z5o2bpRfe4mqQakRcdct1adWV2Qkn5HZUOob9iAL5AU6PM=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/gt2VLko0VPeGpEwZwen50BQ7KLTCC_La1Z5o2bpRfe4mqQakRcdct1adWV2Qkn5HZUOob9iAL5AU6PM=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2017), + by_va: false, + ), + AlbumItem( + id: "MPREb_digcAbZKm2w", + name: "Perfect (Mike Perry Remix)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/6_ZOj86m_zkA1E0hHmL79LnOlFGB45klRtTp1GYl3qcmxULQnd0_VA2NyFaT3cvjuMU7yUh1SKahsK4=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/6_ZOj86m_zkA1E0hHmL79LnOlFGB45klRtTp1GYl3qcmxULQnd0_VA2NyFaT3cvjuMU7yUh1SKahsK4=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2017), + by_va: false, + ), + AlbumItem( + id: "MPREb_GQuLaofFeh4", + name: "Perfect Duet (feat. Beyoncé)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/WcRXfdBQQ1k92rfIQYZCHXdTgRfmxEAcpGMzOtX1XN3tUkQdVjlk-Sc4NjuMeXbrjlfxWmn_AhA_-EUMMg=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/WcRXfdBQQ1k92rfIQYZCHXdTgRfmxEAcpGMzOtX1XN3tUkQdVjlk-Sc4NjuMeXbrjlfxWmn_AhA_-EUMMg=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2017), + by_va: false, + ), + AlbumItem( + id: "MPREb_VplSXzEydMQ", + name: "Perfect (Acoustic)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/7SN8J78BRhTj1Lxp78eOQiSyOzaRWUfWkShx5EwDj502OnoNQ6Fk8dGZLCA-8jZNGGLxTvnAZW3s-6YOEg=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/7SN8J78BRhTj1Lxp78eOQiSyOzaRWUfWkShx5EwDj502OnoNQ6Fk8dGZLCA-8jZNGGLxTvnAZW3s-6YOEg=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2017), + by_va: false, + ), + AlbumItem( + id: "MPREb_XtB3GgzBm5d", + name: "Perfect (Robin Schulz Remix)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/xpDEOr2TeqEn1QpXosXhqtj149FzNnTgAG3oqPnpTxTbQk-oceO90Sz4Axq0s4Jp_QLGQha_um6_EG3WGQ=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/xpDEOr2TeqEn1QpXosXhqtj149FzNnTgAG3oqPnpTxTbQk-oceO90Sz4Axq0s4Jp_QLGQha_um6_EG3WGQ=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2017), + by_va: false, + ), + AlbumItem( + id: "MPREb_IOyG5MA08D0", + name: "Galway Girl (Martin Jensen Remix)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/80AWRdggafegQQjG5SCaCO4MrqJutunTBzvqTjYyi0ezKsAG67WjkXaldDqAwgXgdTcCV2lWFWgshOo6=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/80AWRdggafegQQjG5SCaCO4MrqJutunTBzvqTjYyi0ezKsAG67WjkXaldDqAwgXgdTcCV2lWFWgshOo6=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2017), + by_va: false, + ), + AlbumItem( + id: "MPREb_T5s950Swfdy", + name: "÷ (Deluxe)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/xpDEOr2TeqEn1QpXosXhqtj149FzNnTgAG3oqPnpTxTbQk-oceO90Sz4Axq0s4Jp_QLGQha_um6_EG3WGQ=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/xpDEOr2TeqEn1QpXosXhqtj149FzNnTgAG3oqPnpTxTbQk-oceO90Sz4Axq0s4Jp_QLGQha_um6_EG3WGQ=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Album, + year: Some(2017), + by_va: false, + ), + AlbumItem( + id: "MPREb_iw09vpSYqaZ", + name: "How Would You Feel (Paean)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/Q55rIAk_fG3Q4HmtuD9ZQOniqMdd5wPK9ZnecT-pqaINoBPGkZpQdty93QCUF1pMLS1hk-QTwGM5HtcP=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/Q55rIAk_fG3Q4HmtuD9ZQOniqMdd5wPK9ZnecT-pqaINoBPGkZpQdty93QCUF1pMLS1hk-QTwGM5HtcP=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2017), + by_va: false, + ), + AlbumItem( + id: "MPREb_6XnCnv0sKzE", + name: "Castle on the Hill (Seeb Remix)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/Gk9hVnyh_b4JhXObZz2XY-8Dift47Kb3hy3UXunbXW1aGYHqfO_xqGHWOtZZ1ZIGOedByxsncuBZDzAK=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/Gk9hVnyh_b4JhXObZz2XY-8Dift47Kb3hy3UXunbXW1aGYHqfO_xqGHWOtZZ1ZIGOedByxsncuBZDzAK=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2017), + by_va: false, + ), + AlbumItem( + id: "MPREb_PU8CEtvTo4J", + name: "Shape of You (Latin Remix) (feat. Zion & Lennox)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/p1_hH4TSu684inQ_brUpIFR59YCNtAdI_Ci7I1Dn7Ej7etS5bOXWf7jpojtYKMpGm7zIwGLfTtDHZbhWaw=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/p1_hH4TSu684inQ_brUpIFR59YCNtAdI_Ci7I1Dn7Ej7etS5bOXWf7jpojtYKMpGm7zIwGLfTtDHZbhWaw=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2017), + by_va: false, + ), + AlbumItem( + id: "MPREb_fxyjJtNC3Ms", + name: "Shape of You (Major Lazer Remix)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/c_i53SPZ6Ly8Ygiowl_yT8Iqm8-FcMKGNntu4ZQNJ1UDvaibdPbPbymxuBErdVuEkOLSYluZFVQ3XmfN=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/c_i53SPZ6Ly8Ygiowl_yT8Iqm8-FcMKGNntu4ZQNJ1UDvaibdPbPbymxuBErdVuEkOLSYluZFVQ3XmfN=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2017), + by_va: false, + ), + AlbumItem( + id: "MPREb_jg5X1A4aoxu", + name: "Shape of You (Yxng Bane Remix)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/TOyICy5Om20aeXJ9YKkQ7uXuhy1mLW4BU9aJiv2XYsGuDPfMJAJEClI5oPao-dhYENmF9iCjaM33eoA=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/TOyICy5Om20aeXJ9YKkQ7uXuhy1mLW4BU9aJiv2XYsGuDPfMJAJEClI5oPao-dhYENmF9iCjaM33eoA=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2017), + by_va: false, + ), + AlbumItem( + id: "MPREb_X7o29iaA2pL", + name: "Shape of You (Acoustic)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/bwy4-vj9NW0ZwqNnLff1pJwDeY86q_0r31JiaetMc5pFQyjYAwuC3eYLT3mc9sjeSrQQQfXZOsItBL9y=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/bwy4-vj9NW0ZwqNnLff1pJwDeY86q_0r31JiaetMc5pFQyjYAwuC3eYLT3mc9sjeSrQQQfXZOsItBL9y=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2017), + by_va: false, + ), + AlbumItem( + id: "MPREb_9afeNFZkAHG", + name: "Castle on the Hill", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/ZjsspviQCPTW7akHOuEuft-UEE_W_Ge_qBx5CRc06K5pzrKIVc3BzyiqB2WB2vD648JGEP7wQBbaEn3aSw=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/ZjsspviQCPTW7akHOuEuft-UEE_W_Ge_qBx5CRc06K5pzrKIVc3BzyiqB2WB2vD648JGEP7wQBbaEn3aSw=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Single, + year: Some(2017), + by_va: false, + ), + AlbumItem( + id: "MPREb_BISrGiTAXgq", + name: "5", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/OTZSWr6A0tGLj10SQ25AQ9zFfW2qOxm1xVZ1_oMuPWIPOJB3lCsm9474WXHP99KxX0hkEa4EWGSt_Sae=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/OTZSWr6A0tGLj10SQ25AQ9zFfW2qOxm1xVZ1_oMuPWIPOJB3lCsm9474WXHP99KxX0hkEa4EWGSt_Sae=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: None, + name: "2015", + ), + ], + artist_id: None, + album_type: Album, + year: None, + by_va: false, + ), + AlbumItem( + id: "MPREb_FNeOTtNjbu3", + name: "Don\'t", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/Jgi4oz7s7ckM3gEAQQgIgCWZEFDITqChMqSaPPX1QtDSBlaZDenoxcfCHAl-O_6X3pn5f6Q3O4utfHvBbA=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/Jgi4oz7s7ckM3gEAQQgIgCWZEFDITqChMqSaPPX1QtDSBlaZDenoxcfCHAl-O_6X3pn5f6Q3O4utfHvBbA=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: None, + name: "2014", + ), + ], + artist_id: None, + album_type: Ep, + year: None, + by_va: false, + ), + AlbumItem( + id: "MPREb_uwYFp848Tmr", + name: "Photograph (Felix Jaehn Remix)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/TFw1IamXQrn5hzkraRvYgtwzDw28X1SLulnOaAUvstXh1f5bHvUwF0AcjNdDIV8-0DpQkl__SBFZ0fNGbQ=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/TFw1IamXQrn5hzkraRvYgtwzDw28X1SLulnOaAUvstXh1f5bHvUwF0AcjNdDIV8-0DpQkl__SBFZ0fNGbQ=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: None, + name: "2014", + ), + ], + artist_id: None, + album_type: Single, + year: None, + by_va: false, + ), + AlbumItem( + id: "MPREb_A4r9EfLZzYN", + name: "x (Deluxe Edition)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/emeqGnTWaGFe5roPNKOsSe5WFl81hEScrwhlaJkSrmZn8F-rcYVg_VtYKSj5v59eU5ZrUo3uzlbI0wDV=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/emeqGnTWaGFe5roPNKOsSe5WFl81hEScrwhlaJkSrmZn8F-rcYVg_VtYKSj5v59eU5ZrUo3uzlbI0wDV=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: None, + name: "2014", + ), + ], + artist_id: None, + album_type: Album, + year: None, + by_va: false, + ), + AlbumItem( + id: "MPREb_mbu8NjPadMx", + name: "Thinking Out Loud (Alex Adair Remix)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/JU6c3mZdiDMeTZnSnmUgGF_RjQfQ8JVEn2EfM4P7bot2A2fBuMa8Q4L0brAd8fUKGdSW0ick6I2izJPp=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/JU6c3mZdiDMeTZnSnmUgGF_RjQfQ8JVEn2EfM4P7bot2A2fBuMa8Q4L0brAd8fUKGdSW0ick6I2izJPp=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: None, + name: "2014", + ), + ], + artist_id: None, + album_type: Single, + year: None, + by_va: false, + ), + AlbumItem( + id: "MPREb_BZlJAuZP4ab", + name: "Bloodstream", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/TgtfJ5qVk7CXg9Q3aP5gO6YatBdsIX_S5OIn0wYp4_ur8EcOYN0yET6XVVgi32rvu60JUsjgvLGifEMOVQ=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/TgtfJ5qVk7CXg9Q3aP5gO6YatBdsIX_S5OIn0wYp4_ur8EcOYN0yET6XVVgi32rvu60JUsjgvLGifEMOVQ=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: None, + name: "2014", + ), + ], + artist_id: None, + album_type: Single, + year: None, + by_va: false, + ), + AlbumItem( + id: "MPREb_2XIV4ErBDbZ", + name: "Don\'t (X Ambassadors Remix)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/0E0z_EATMrbJ5yww3DQogNsMObZR9UC-eFDY99xiDAfUu8TSPwiqYeCm38TV5PluPf4AmTu9-_4BfnmsUA=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/0E0z_EATMrbJ5yww3DQogNsMObZR9UC-eFDY99xiDAfUu8TSPwiqYeCm38TV5PluPf4AmTu9-_4BfnmsUA=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: None, + name: "2014", + ), + ], + artist_id: None, + album_type: Single, + year: None, + by_va: false, + ), + AlbumItem( + id: "MPREb_mKuODL5O2kJ", + name: "Don\'t (Don Diablo Remix)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/OJ-W_3ceuqZIsl78f_sFfoGUgfvWCd1JaXmOoactakct8MTkSoJTD2u2StxaKjpEyB72JXv2wQ0-l5NV=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/OJ-W_3ceuqZIsl78f_sFfoGUgfvWCd1JaXmOoactakct8MTkSoJTD2u2StxaKjpEyB72JXv2wQ0-l5NV=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: None, + name: "2014", + ), + ], + artist_id: None, + album_type: Single, + year: None, + by_va: false, + ), + AlbumItem( + id: "MPREb_BRb3zdRHvHB", + name: "I Don\'t Care (Acoustic)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/yUNn6qIle5EaOJfD2SLWzbzYhYuFjg6XA911-l26DYgaPd1JAjxwo8VmbyQpoPUAwykTIuRuTA-NaaY=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/yUNn6qIle5EaOJfD2SLWzbzYhYuFjg6XA911-l26DYgaPd1JAjxwo8VmbyQpoPUAwykTIuRuTA-NaaY=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: None, + name: "2014", + ), + ], + artist_id: None, + album_type: Single, + year: None, + by_va: false, + ), + AlbumItem( + id: "MPREb_HQMyFGXfn7Q", + name: "Sing", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/eEvPKcOR-o7x5Hf5vhYxMW2O3p47_QoN0P7dEZ2b4BiC8F2dGl9D8Kk6ltZCGIK2mEhDwbpKqDWt4Wh9=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/eEvPKcOR-o7x5Hf5vhYxMW2O3p47_QoN0P7dEZ2b4BiC8F2dGl9D8Kk6ltZCGIK2mEhDwbpKqDWt4Wh9=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: None, + name: "2014", + ), + ], + artist_id: None, + album_type: Single, + year: None, + by_va: false, + ), + AlbumItem( + id: "MPREb_H0GkUrdjcC9", + name: "Lego House", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/SWX7Xcu5W8RVYn2URT-WuU9wxyuqpSBUENwYWFYMZOeNEMEqHgGki-4zohvbu5ppP54zvIR2iJO9YZ8=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/SWX7Xcu5W8RVYn2URT-WuU9wxyuqpSBUENwYWFYMZOeNEMEqHgGki-4zohvbu5ppP54zvIR2iJO9YZ8=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: None, + name: "2011", + ), + ], + artist_id: None, + album_type: Single, + year: None, + by_va: false, + ), + AlbumItem( + id: "MPREb_KYP1Wsy4NQn", + name: "+", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/5-Z0bmxl8Smil_IosCTw95oPxleiktQjx9DBusLmQDMJ_8EinzpmvvYqSUVimNzsftg3aEUFTM6y0TFM=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/5-Z0bmxl8Smil_IosCTw95oPxleiktQjx9DBusLmQDMJ_8EinzpmvvYqSUVimNzsftg3aEUFTM6y0TFM=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: None, + name: "2011", + ), + ], + artist_id: None, + album_type: Album, + year: None, + by_va: false, + ), + AlbumItem( + id: "MPREb_nd0QmmAnIHw", + name: "The A Team", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/JH8vdTbtfIHuimHoLhfPpZdpYjA_jmqTBKTYF0Nu_C10FX69mYQU60gF9B8ObXIB9R1UGNqeN6LvK5U=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/JH8vdTbtfIHuimHoLhfPpZdpYjA_jmqTBKTYF0Nu_C10FX69mYQU60gF9B8ObXIB9R1UGNqeN6LvK5U=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: None, + name: "2011", + ), + ], + artist_id: None, + album_type: Ep, + year: None, + by_va: false, + ), + AlbumItem( + id: "MPREb_rglJNvRZR9v", + name: "No.5 Collaborations Project", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/7wdqo8xOHm9VGruKlzukzOuLIVAl3QzMqldt0itaY_FsGv5al1zcs9tpKIAJZaDQbErO2bmaurbLsT6V=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/7wdqo8xOHm9VGruKlzukzOuLIVAl3QzMqldt0itaY_FsGv5al1zcs9tpKIAJZaDQbErO2bmaurbLsT6V=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: None, + name: "2011", + ), + ], + artist_id: None, + album_type: Album, + year: None, + by_va: false, + ), + AlbumItem( + id: "MPREb_UqnUOFNrfOf", + name: "Live at the Bedford", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/p0iWkMVsjDYyxOfLMFK3V7ZoWvK9uJOw4W5hiBCNQ4GG-t1e93KgBUKiUj9BsRXtx10m27q6cO276Pfo=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/p0iWkMVsjDYyxOfLMFK3V7ZoWvK9uJOw4W5hiBCNQ4GG-t1e93KgBUKiUj9BsRXtx10m27q6cO276Pfo=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: None, + name: "2010", + ), + ], + artist_id: None, + album_type: Ep, + year: None, + by_va: false, + ), + AlbumItem( + id: "MPREb_aRZymyCfxCE", + name: "Songs I Wrote with Amy", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/5J-U6RzheXK9QqZBMFJG_EFzo-P_8b-RrD987IWQ8_EmyvvDjdk92OU2u0xsTrqnbCH4XkLGN2VWL5pWdg=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/5J-U6RzheXK9QqZBMFJG_EFzo-P_8b-RrD987IWQ8_EmyvvDjdk92OU2u0xsTrqnbCH4XkLGN2VWL5pWdg=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: None, + name: "2010", + ), + ], + artist_id: None, + album_type: Ep, + year: None, + by_va: false, + ), + AlbumItem( + id: "MPREb_TZyh5Fu0Iel", + name: "Loose Change", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/xESC6YGPy6Jj3LES1NuhyAWBxVJrDgWL_pViNBZ0wPYgTNzmDSlNt9zeSLLgoc82mD7SKTUswO6oAZf3=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/xESC6YGPy6Jj3LES1NuhyAWBxVJrDgWL_pViNBZ0wPYgTNzmDSlNt9zeSLLgoc82mD7SKTUswO6oAZf3=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: None, + name: "2010", + ), + ], + artist_id: None, + album_type: Album, + year: None, + by_va: false, + ), + AlbumItem( + id: "MPREb_nJ5BUdCWCr1", + name: "You Need Me", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/XJ1XRgHQdNcCSYYWXcgwjpLu6F-KimhB-l-pSjjKflqBLe4aRyXLMDbkkZLLfLIX8Dg6OiYFksiCGA4=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/XJ1XRgHQdNcCSYYWXcgwjpLu6F-KimhB-l-pSjjKflqBLe4aRyXLMDbkkZLLfLIX8Dg6OiYFksiCGA4=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: None, + name: "2009", + ), + ], + artist_id: None, + album_type: Ep, + year: None, + by_va: false, + ), ], playlists: [ MusicPlaylistItem( @@ -3110,16 +3578,16 @@ MusicArtist( from_ytm: true, ), MusicPlaylistItem( - id: "RDCLAK5uy_nHSqCJjDrW9HBhCNdF6tWPdnOMngOv0wA", - name: "Pop Gold", + id: "RDCLAK5uy_mkPdnadBmgXk28mbGxm_5uGeKvHrec208", + name: "Acoustic Pop", thumbnail: [ Thumbnail( - url: "https://lh3.googleusercontent.com/rAUuEbLF7CYEYBXU3yAY4npMCzTgPxMhlD-ygH9iv_SuDXGDuDvO0Z4MTh33xAI6o3UnpWFe26MS_hBZ=w226-h226-l90-rj", + url: "https://lh3.googleusercontent.com/tE56EFMRtd1aLWwyhIOPH55gNMF2c_h_PP30_gGMl1jpbrA48GTbFpuWgKlbRHKo_7gwN-9QvVdp1lZd=w226-h226-l90-rj", width: 226, height: 226, ), Thumbnail( - url: "https://lh3.googleusercontent.com/rAUuEbLF7CYEYBXU3yAY4npMCzTgPxMhlD-ygH9iv_SuDXGDuDvO0Z4MTh33xAI6o3UnpWFe26MS_hBZ=w544-h544-l90-rj", + url: "https://lh3.googleusercontent.com/tE56EFMRtd1aLWwyhIOPH55gNMF2c_h_PP30_gGMl1jpbrA48GTbFpuWgKlbRHKo_7gwN-9QvVdp1lZd=w544-h544-l90-rj", width: 544, height: 544, ), @@ -3129,73 +3597,16 @@ MusicArtist( from_ytm: true, ), MusicPlaylistItem( - id: "RDCLAK5uy_nSq67AJ2d75MFNJ3j_4ClEtSgC-opBM84", - name: "Pop Hits", + id: "RDCLAK5uy_m0wlRoNn5iCTTgBedfoOQ19Jq9P3XTLIA", + name: "Feel-Good Pop & Rock", thumbnail: [ Thumbnail( - url: "https://lh3.googleusercontent.com/TVlUnnDTtw4uOJnFHX9E6x7R-JjM-2DLTTGFW6QzFx12c4vi8_0KEj9aDXsGLkHs6PPsjkiOP7qtYQ=w226-h226-l90-rj", + url: "https://lh3.googleusercontent.com/CTtOLB0zp54cCxc6hgTqSAZhMGruxyX0X2hUtRXk_z7XfXGYDwM_tgwTXNvog_knvQ7qvXqLy5_EKMQ=w226-h226-l90-rj", width: 226, height: 226, ), Thumbnail( - url: "https://lh3.googleusercontent.com/TVlUnnDTtw4uOJnFHX9E6x7R-JjM-2DLTTGFW6QzFx12c4vi8_0KEj9aDXsGLkHs6PPsjkiOP7qtYQ=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - channel: None, - track_count: None, - from_ytm: true, - ), - MusicPlaylistItem( - id: "RDCLAK5uy_nDL8KeBrUagwyISwNmyEiSfYgz1gVCesg", - name: "Mellow Pop Classics", - thumbnail: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/XyREm3Y-HafFR_mxyJF99Pd9zerLQiJ0q62_XEnzPK2g30m_V04iVdzAwyP1T9-_3ruclUASulQFjSY=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/XyREm3Y-HafFR_mxyJF99Pd9zerLQiJ0q62_XEnzPK2g30m_V04iVdzAwyP1T9-_3ruclUASulQFjSY=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - channel: None, - track_count: None, - from_ytm: true, - ), - MusicPlaylistItem( - id: "RDCLAK5uy_m_0U5VQNyyzwwH1lRi7cPAAGXqNQnAOqY", - name: "Laid-Back Sofa Pop", - thumbnail: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/IKBTW8jZAxhiUfUkM9u-BLTuuFYrO2833EMuUmH4od_9Acn2pOhh0xOda0iSxo_C24TW3EHGPkkXF2o=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/IKBTW8jZAxhiUfUkM9u-BLTuuFYrO2833EMuUmH4od_9Acn2pOhh0xOda0iSxo_C24TW3EHGPkkXF2o=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - channel: None, - track_count: None, - from_ytm: true, - ), - MusicPlaylistItem( - id: "RDCLAK5uy_mdwsZFtQhJyGQPuQA612VoRPXp-OJfzx8", - name: "Hits Unplugged ", - thumbnail: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/65MUtlrAGhOKw4_lh5ZC5RDbScBQMy_PKrFRLPIFkGe-0jPQCfVvXzik3VNvteuvqbmPuLoWC9GzCNE=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/65MUtlrAGhOKw4_lh5ZC5RDbScBQMy_PKrFRLPIFkGe-0jPQCfVvXzik3VNvteuvqbmPuLoWC9GzCNE=w544-h544-l90-rj", + url: "https://lh3.googleusercontent.com/CTtOLB0zp54cCxc6hgTqSAZhMGruxyX0X2hUtRXk_z7XfXGYDwM_tgwTXNvog_knvQ7qvXqLy5_EKMQ=w544-h544-l90-rj", width: 544, height: 544, ), @@ -3209,12 +3620,69 @@ MusicArtist( name: "Sweetheart Pop", thumbnail: [ Thumbnail( - url: "https://lh3.googleusercontent.com/PgqPJM_3mqB-QZSMPCfMvRKmOYMnNFZtzW-Y6UqT4V9va_nYKC24Y5OGhUAWaaM78eTMlIAWbHbcdQuB=w226-h226-l90-rj", + url: "https://lh3.googleusercontent.com/6bfm92uZPSSVQSMGPA7lE0H7AUuxSiJvAy6PaeHKh6qIP_8vvF4aDk-y_YUXFe3KwNtf91G6q2XKzZQ=w226-h226-l90-rj", width: 226, height: 226, ), Thumbnail( - url: "https://lh3.googleusercontent.com/PgqPJM_3mqB-QZSMPCfMvRKmOYMnNFZtzW-Y6UqT4V9va_nYKC24Y5OGhUAWaaM78eTMlIAWbHbcdQuB=w544-h544-l90-rj", + url: "https://lh3.googleusercontent.com/6bfm92uZPSSVQSMGPA7lE0H7AUuxSiJvAy6PaeHKh6qIP_8vvF4aDk-y_YUXFe3KwNtf91G6q2XKzZQ=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + channel: None, + track_count: None, + from_ytm: true, + ), + MusicPlaylistItem( + id: "RDCLAK5uy_khs3a0YMI9WYs2k1Oqb2ukWX3dA3-lnwI", + name: "Relaxing Soft Pop", + thumbnail: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/zWQOCjLKxyRWYRe8KEdxnrPDC5ADY211UKQLENHc3qxeInQdpXIlM7No6YM_DYaPvfat3vKttpPNQnA8=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/zWQOCjLKxyRWYRe8KEdxnrPDC5ADY211UKQLENHc3qxeInQdpXIlM7No6YM_DYaPvfat3vKttpPNQnA8=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + channel: None, + track_count: None, + from_ytm: true, + ), + MusicPlaylistItem( + id: "RDCLAK5uy_mfdqvCAl8wodlx2P2_Ai2gNkiRDAufkkI", + name: "Happy Pop Hits", + thumbnail: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/-ZNC3w71iSs1df7ogBe-LmZj98AzwhHVxJpQVe-nO5VKw8s2M3B8g_7v0mih9NV2dRwX8_a0znewkJI=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/-ZNC3w71iSs1df7ogBe-LmZj98AzwhHVxJpQVe-nO5VKw8s2M3B8g_7v0mih9NV2dRwX8_a0znewkJI=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + channel: None, + track_count: None, + from_ytm: true, + ), + MusicPlaylistItem( + id: "RDCLAK5uy_nxuz8sV0R7aWiLsbDv5W9_Bvp0X9PxFjY", + name: "\'10s Pop", + thumbnail: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/ovdrE4a-S81t54orNlhkCVp69Zw-HqPV91fU8TsPeh9ymlmQGz1hwcM-YFL_lF-_s3xsLjZWE86FHA=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/ovdrE4a-S81t54orNlhkCVp69Zw-HqPV91fU8TsPeh9ymlmQGz1hwcM-YFL_lF-_s3xsLjZWE86FHA=w544-h544-l90-rj", width: 544, height: 544, ), @@ -3243,16 +3711,16 @@ MusicArtist( from_ytm: true, ), MusicPlaylistItem( - id: "RDCLAK5uy_lBNUteBRencHzKelu5iDHwLF6mYqjL-JU", - name: "Pop Certified", + id: "RDCLAK5uy_nfs_t4FUu00E5ED6lveEBBX1VMYe1mFjk", + name: "Dance-Pop Bangers", thumbnail: [ Thumbnail( - url: "https://lh3.googleusercontent.com/B26Q3bpmcX4gacK4BWxbB57ABCd1ibmXeKPXK5ISlXKEyRgqxGMOggdrt4gOqky_Ad8tKbpwn1M0mq8U=w226-h226-l90-rj", + url: "https://lh3.googleusercontent.com/371QuBVeCF9Q2wygw9z69I1GqwXXpmrSHsgmbhc1YofGXEloyB2EiV5vFx_GEDu23J2ieG9CTNOa7A=w226-h226-l90-rj", width: 226, height: 226, ), Thumbnail( - url: "https://lh3.googleusercontent.com/B26Q3bpmcX4gacK4BWxbB57ABCd1ibmXeKPXK5ISlXKEyRgqxGMOggdrt4gOqky_Ad8tKbpwn1M0mq8U=w544-h544-l90-rj", + url: "https://lh3.googleusercontent.com/371QuBVeCF9Q2wygw9z69I1GqwXXpmrSHsgmbhc1YofGXEloyB2EiV5vFx_GEDu23J2ieG9CTNOa7A=w544-h544-l90-rj", width: 544, height: 544, ), @@ -3262,16 +3730,16 @@ MusicArtist( from_ytm: true, ), MusicPlaylistItem( - id: "RDCLAK5uy_kY7Uomg8uSGAGuvMIKc3HsVg_ipocKTrE", - name: "Feel-good Pop Hits", + id: "RDCLAK5uy_kEeMXVnyMll_xhEBH1Aza4lEYO58yeQ0M", + name: "Easy Pop", thumbnail: [ Thumbnail( - url: "https://lh3.googleusercontent.com/PiXWU8bqSkti4dEbt7LKktLiNd0ugLjUv2UC4_j5cmlosNRC5Cuas-sN8w-tLHs1Nvd9fIT72L7kVXqE=w226-h226-l90-rj", + url: "https://lh3.googleusercontent.com/sjJmo2UHHhmJPwk7Nc-qRraxmWUUVF1OL-WUCKH4NpKxpRiBah7pbS47BwbwRfqfL7IRlFmjhdx82iQ=w226-h226-l90-rj", width: 226, height: 226, ), Thumbnail( - url: "https://lh3.googleusercontent.com/PiXWU8bqSkti4dEbt7LKktLiNd0ugLjUv2UC4_j5cmlosNRC5Cuas-sN8w-tLHs1Nvd9fIT72L7kVXqE=w544-h544-l90-rj", + url: "https://lh3.googleusercontent.com/sjJmo2UHHhmJPwk7Nc-qRraxmWUUVF1OL-WUCKH4NpKxpRiBah7pbS47BwbwRfqfL7IRlFmjhdx82iQ=w544-h544-l90-rj", width: 544, height: 544, ), @@ -3287,68 +3755,17 @@ MusicArtist( name: "Lewis Capaldi", avatar: [ Thumbnail( - url: "https://lh3.googleusercontent.com/a-/ACB-R5QMZT913rWvdAb53sd2bP0-iPjP8MOi-7n5Dcps=w226-h226-l90-rj", + url: "https://lh3.googleusercontent.com/a-/ALV-UjVuVuwStswGeRiYCLjwBsa9zql7OdAHp6tXa9Q2gYnIyPJRY2E=w226-h226-l90-rj", width: 226, height: 226, ), Thumbnail( - url: "https://lh3.googleusercontent.com/a-/ACB-R5QMZT913rWvdAb53sd2bP0-iPjP8MOi-7n5Dcps=w544-h544-l90-rj", + url: "https://lh3.googleusercontent.com/a-/ALV-UjVuVuwStswGeRiYCLjwBsa9zql7OdAHp6tXa9Q2gYnIyPJRY2E=w544-h544-l90-rj", width: 544, height: 544, ), ], - subscriber_count: Some(6630000), - ), - ArtistItem( - id: "UCiDBtu8whAdUgiJ5o1g7sQQ", - name: "James Bay", - avatar: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/lsTSUtfX9JIjT2Z44QCd-Wi6coedAV0OeHdq3fB0puqTt2-OvKuuMcCdwmxAm5r4BfUAB3swOEYvG48z=w226-h226-p-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/lsTSUtfX9JIjT2Z44QCd-Wi6coedAV0OeHdq3fB0puqTt2-OvKuuMcCdwmxAm5r4BfUAB3swOEYvG48z=w544-h544-p-l90-rj", - width: 544, - height: 544, - ), - ], - subscriber_count: Some(1950000), - ), - ArtistItem( - id: "UCgpBsaDW2n_6ruzht3wvP0A", - name: "Sam Smith", - avatar: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/TjSOLC2wjZtZZ6vKHV0PfHx6xxsk1csVyV-O-NEeASSAuxhgin8y_TE5Ee-fOuO1jrbaQUi0ZejiMrVv=w226-h226-p-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/TjSOLC2wjZtZZ6vKHV0PfHx6xxsk1csVyV-O-NEeASSAuxhgin8y_TE5Ee-fOuO1jrbaQUi0ZejiMrVv=w544-h544-p-l90-rj", - width: 544, - height: 544, - ), - ], - subscriber_count: Some(16200000), - ), - ArtistItem( - id: "UCl6-24cszKqIYLkBzo02XzQ", - name: "Lukas Graham", - avatar: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/gJqf-39ut3mK8h9xMWcd1vD-C0LPfx9G5mWQ73gXwpyDX124GpFdd4fk3D8L6kUJRg58-IoLVQ=w226-h226-p-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/gJqf-39ut3mK8h9xMWcd1vD-C0LPfx9G5mWQ73gXwpyDX124GpFdd4fk3D8L6kUJRg58-IoLVQ=w544-h544-p-l90-rj", - width: 544, - height: 544, - ), - ], - subscriber_count: Some(5130000), + subscriber_count: Some(7500000), ), ArtistItem( id: "UC6ZjlLJhqP79nqGr3Ic6Adg", @@ -3365,7 +3782,75 @@ MusicArtist( height: 544, ), ], - subscriber_count: Some(29900000), + subscriber_count: Some(30300000), + ), + ArtistItem( + id: "UCgpBsaDW2n_6ruzht3wvP0A", + name: "Sam Smith", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/TjSOLC2wjZtZZ6vKHV0PfHx6xxsk1csVyV-O-NEeASSAuxhgin8y_TE5Ee-fOuO1jrbaQUi0ZejiMrVv=w226-h226-p-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/TjSOLC2wjZtZZ6vKHV0PfHx6xxsk1csVyV-O-NEeASSAuxhgin8y_TE5Ee-fOuO1jrbaQUi0ZejiMrVv=w544-h544-p-l90-rj", + width: 544, + height: 544, + ), + ], + subscriber_count: Some(16700000), + ), + ArtistItem( + id: "UCrrbm1toLPud8fFIisPuxpg", + name: "OneRepublic", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/8NOpUYB7nTsAMcpoRTnJVCsaJjS8a-rLUMGEkBpShczDEvWRvP0Fd0qc6hcmTSA1nrYRIL_4IY4t1u5o=w226-h226-p-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/8NOpUYB7nTsAMcpoRTnJVCsaJjS8a-rLUMGEkBpShczDEvWRvP0Fd0qc6hcmTSA1nrYRIL_4IY4t1u5o=w544-h544-p-l90-rj", + width: 544, + height: 544, + ), + ], + subscriber_count: Some(10900000), + ), + ArtistItem( + id: "UCl6-24cszKqIYLkBzo02XzQ", + name: "Lukas Graham", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/ViqsW7h9xDTjYkR0Xu9j5igMjK2SveLcLNsMuDr8145qJwvgCfV-XWSW5O2nJ24zfQ3j0zirPRzRmh8=w226-h226-p-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/ViqsW7h9xDTjYkR0Xu9j5igMjK2SveLcLNsMuDr8145qJwvgCfV-XWSW5O2nJ24zfQ3j0zirPRzRmh8=w544-h544-p-l90-rj", + width: 544, + height: 544, + ), + ], + subscriber_count: Some(5460000), + ), + ArtistItem( + id: "UCiDBtu8whAdUgiJ5o1g7sQQ", + name: "James Bay", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/lsTSUtfX9JIjT2Z44QCd-Wi6coedAV0OeHdq3fB0puqTt2-OvKuuMcCdwmxAm5r4BfUAB3swOEYvG48z=w226-h226-p-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/lsTSUtfX9JIjT2Z44QCd-Wi6coedAV0OeHdq3fB0puqTt2-OvKuuMcCdwmxAm5r4BfUAB3swOEYvG48z=w544-h544-p-l90-rj", + width: 544, + height: 544, + ), + ], + subscriber_count: Some(1990000), ), ArtistItem( id: "UCuPY6msZGySMzTpKLjyeO8g", @@ -3382,75 +3867,58 @@ MusicArtist( height: 544, ), ], - subscriber_count: Some(6380000), + subscriber_count: Some(6710000), ), ArtistItem( - id: "UCrrbm1toLPud8fFIisPuxpg", - name: "OneRepublic", + id: "UCySKHMJ31dcWmdOUyMQUJPQ", + name: "Jess Glynne", avatar: [ Thumbnail( - url: "https://lh3.googleusercontent.com/qvD1cR5jT6Afoq_irOWSDuu0SXNyvmnZ8TN5kAydv_-UMsiPDvQMUsQv-WPPP1Qolw6AY-OQO_f8w2I=w226-h226-p-l90-rj", + url: "https://lh3.googleusercontent.com/sUth0oDLCaVORjE42BE8eeQ0RZ38OvFBUgwrVTy97QXftYcuLWMwKkjvLG3VMe1-HuJcX41bb1J3YVw=w226-h226-p-l90-rj", width: 226, height: 226, ), Thumbnail( - url: "https://lh3.googleusercontent.com/qvD1cR5jT6Afoq_irOWSDuu0SXNyvmnZ8TN5kAydv_-UMsiPDvQMUsQv-WPPP1Qolw6AY-OQO_f8w2I=w544-h544-p-l90-rj", + url: "https://lh3.googleusercontent.com/sUth0oDLCaVORjE42BE8eeQ0RZ38OvFBUgwrVTy97QXftYcuLWMwKkjvLG3VMe1-HuJcX41bb1J3YVw=w544-h544-p-l90-rj", width: 544, height: 544, ), ], - subscriber_count: Some(10300000), + subscriber_count: Some(1670000), ), ArtistItem( - id: "UCFGwp4FHyvU1pJv9w6Jcx8w", - name: "The Script", + id: "UCdFe4KkWwZ_twpo-UECR-Nw", + name: "Maroon 5", avatar: [ Thumbnail( - url: "https://lh3.googleusercontent.com/4f5qk1izKPLk5EKm9WO3_RT7PqEo8j2FmZ39UPPVcRagm93fZ2EjzIDuyV6otYS0t22FlIveKty9vlVg=w226-h226-p-l90-rj", + url: "https://lh3.googleusercontent.com/7jndWy5UJwFJKueBCrizeFWOFwxKUOZZjRMIcPyRlv1X18tY9aJpkuSz_PpamnHVjbYV6s_oER8oi4g=w226-h226-p-l90-rj", width: 226, height: 226, ), Thumbnail( - url: "https://lh3.googleusercontent.com/4f5qk1izKPLk5EKm9WO3_RT7PqEo8j2FmZ39UPPVcRagm93fZ2EjzIDuyV6otYS0t22FlIveKty9vlVg=w544-h544-p-l90-rj", + url: "https://lh3.googleusercontent.com/7jndWy5UJwFJKueBCrizeFWOFwxKUOZZjRMIcPyRlv1X18tY9aJpkuSz_PpamnHVjbYV6s_oER8oi4g=w544-h544-p-l90-rj", width: 544, height: 544, ), ], - subscriber_count: Some(4190000), + subscriber_count: Some(37200000), ), ArtistItem( id: "UCNAbUat5xDtp6FeBphe2V_Q", name: "James Arthur", avatar: [ Thumbnail( - url: "https://lh3.googleusercontent.com/VWyzSUVLJjSH6f57sMAo5bDeBU0Hn78p8-Qiydc13N3aMhw3Lr2-4NoHHoqLx93JzXBoMiEX1AqqC2Y=w226-h226-p-l90-rj", + url: "https://lh3.googleusercontent.com/DVyahI2CBTfB2Mz889tKorFyaDLqtur7aqSte81Pzwl8tSnucAspeebn5XNCHLDpqizepWRn032t608=w226-h226-p-l90-rj", width: 226, height: 226, ), Thumbnail( - url: "https://lh3.googleusercontent.com/VWyzSUVLJjSH6f57sMAo5bDeBU0Hn78p8-Qiydc13N3aMhw3Lr2-4NoHHoqLx93JzXBoMiEX1AqqC2Y=w544-h544-p-l90-rj", + url: "https://lh3.googleusercontent.com/DVyahI2CBTfB2Mz889tKorFyaDLqtur7aqSte81Pzwl8tSnucAspeebn5XNCHLDpqizepWRn032t608=w544-h544-p-l90-rj", width: 544, height: 544, ), ], - subscriber_count: Some(6920000), - ), - ArtistItem( - id: "UCCEzq-Gv6gU-bdM82rtZN4g", - name: "James Blunt", - avatar: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/sXHg22Fqjb3cxKE9Yo1WwF7-RifZ7lYEugJon7AUBI0hzbDe7_WxTAAJEAYGi4r0mLfi2CPn7e0mDg=w226-h226-p-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/sXHg22Fqjb3cxKE9Yo1WwF7-RifZ7lYEugJon7AUBI0hzbDe7_WxTAAJEAYGi4r0mLfi2CPn7e0mDg=w544-h544-p-l90-rj", - width: 544, - height: 544, - ), - ], - subscriber_count: Some(3140000), + subscriber_count: Some(7510000), ), ], tracks_playlist_id: Some("OLAK5uy_mHzt_lZ0Vdnv3NAqvCLQw5CiYe0q96iBs"), 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 bfb3f7d..9cb877d 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 @@ -34,40 +34,8 @@ MusicArtist( ], description: Some("Edward Christopher Sheeran MBE is an English singer-songwriter. Born in Halifax, West Yorkshire, and raised in Framlingham, Suffolk, he began writing songs around the age of eleven. In early 2011, Sheeran independently released the extended play No. 5 Collaborations Project. He signed with Asylum Records the same year.\nSheeran\'s debut album, +, was released in September 2011 and topped the UK Albums Chart. It contained his first hit single \"The A Team\". In 2012, Sheeran won the Brit Awards for Best British Male Solo Artist and British Breakthrough Act. Sheeran\'s second studio album, ×, topped charts around the world upon its release in June 2014. It was named the second-best-selling album worldwide of 2015. In the same year, × won Album of the Year at the 2015 Brit Awards, and he received the Ivor Novello Award for Songwriter of the Year from the British Academy of Songwriters, Composers and Authors. A single from ×, \"Thinking Out Loud\", earned him the 2016 Grammy Awards for Song of the Year and Best Pop Solo Performance.\nSheeran\'s third album, ÷, was released in March 2017, and was the best-selling album worldwide of 2017.\n\nFrom Wikipedia (https://en.wikipedia.org/wiki/Ed_Sheeran) 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/Ed_Sheeran"), - subscriber_count: Some(53300000), + subscriber_count: Some(55300000), tracks: [ - TrackItem( - id: "xTvyyoF_LZY", - name: "Shape of You", - duration: None, - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/TMbA3LImAL96nFkm5cI1x6LiEMvMbRg4IRxEeABd9qpXsfmwKhZHRD1MucnjG5QIsVEp0Vpn7h7M51FH3Q=w60-h60-l90-rj", - width: 60, - height: 60, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/TMbA3LImAL96nFkm5cI1x6LiEMvMbRg4IRxEeABd9qpXsfmwKhZHRD1MucnjG5QIsVEp0Vpn7h7M51FH3Q=w120-h120-l90-rj", - width: 120, - height: 120, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album: Some(AlbumId( - id: "MPREb_Y8THSupSgRO", - name: "Shape of You", - )), - view_count: None, - is_video: false, - track_nr: None, - by_va: false, - ), TrackItem( id: "ORrFJ63nlcA", name: "Perfect", @@ -95,23 +63,23 @@ MusicArtist( id: "MPREb_T5s950Swfdy", name: "÷ (Deluxe)", )), - view_count: None, + view_count: Some(5700000000), is_video: false, track_nr: None, by_va: false, ), TrackItem( - id: "pDW0e5SO5Co", - name: "Curtains", + id: "xTvyyoF_LZY", + name: "Shape of You", duration: None, cover: [ Thumbnail( - url: "https://lh3.googleusercontent.com/e9X9JBO2XNUiMatV8gepjLWktB7uGb8W3HWN8zgxjiMFjVr8hVymX-FKgULPMpQBiQaJY5MDEgeFNEKc=w60-h60-l90-rj", + url: "https://lh3.googleusercontent.com/TMbA3LImAL96nFkm5cI1x6LiEMvMbRg4IRxEeABd9qpXsfmwKhZHRD1MucnjG5QIsVEp0Vpn7h7M51FH3Q=w60-h60-l90-rj", width: 60, height: 60, ), Thumbnail( - url: "https://lh3.googleusercontent.com/e9X9JBO2XNUiMatV8gepjLWktB7uGb8W3HWN8zgxjiMFjVr8hVymX-FKgULPMpQBiQaJY5MDEgeFNEKc=w120-h120-l90-rj", + url: "https://lh3.googleusercontent.com/TMbA3LImAL96nFkm5cI1x6LiEMvMbRg4IRxEeABd9qpXsfmwKhZHRD1MucnjG5QIsVEp0Vpn7h7M51FH3Q=w120-h120-l90-rj", width: 120, height: 120, ), @@ -124,42 +92,10 @@ MusicArtist( ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: Some(AlbumId( - id: "MPREb_9jsAP3C5OSC", - name: "- (Deluxe)", + id: "MPREb_Y8THSupSgRO", + name: "Shape of You", )), - view_count: None, - is_video: false, - track_nr: None, - by_va: false, - ), - TrackItem( - id: "fdz_cabS9BU", - name: "Thinking out Loud", - duration: None, - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/emeqGnTWaGFe5roPNKOsSe5WFl81hEScrwhlaJkSrmZn8F-rcYVg_VtYKSj5v59eU5ZrUo3uzlbI0wDV=w60-h60-l90-rj", - width: 60, - height: 60, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/emeqGnTWaGFe5roPNKOsSe5WFl81hEScrwhlaJkSrmZn8F-rcYVg_VtYKSj5v59eU5ZrUo3uzlbI0wDV=w120-h120-l90-rj", - width: 120, - height: 120, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album: Some(AlbumId( - id: "MPREb_A4r9EfLZzYN", - name: "x (Deluxe Edition)", - )), - view_count: None, + view_count: Some(8700000000), is_video: false, track_nr: None, by_va: false, @@ -191,25 +127,25 @@ MusicArtist( id: "MPREb_A4r9EfLZzYN", name: "x (Deluxe Edition)", )), - view_count: None, + view_count: Some(3300000000), is_video: false, track_nr: None, by_va: false, ), TrackItem( - id: "2tZjT3L1wD4", - name: "Life Goes On", + id: "fdz_cabS9BU", + name: "Thinking out Loud", duration: None, cover: [ Thumbnail( - url: "https://i.ytimg.com/vi/2tZjT3L1wD4/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nIEIwcHRRamRRlklKoD_QXwG1Efg", - width: 400, - height: 225, + url: "https://lh3.googleusercontent.com/emeqGnTWaGFe5roPNKOsSe5WFl81hEScrwhlaJkSrmZn8F-rcYVg_VtYKSj5v59eU5ZrUo3uzlbI0wDV=w60-h60-l90-rj", + width: 60, + height: 60, ), Thumbnail( - url: "https://i.ytimg.com/vi/2tZjT3L1wD4/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3nOvPF3UCMZ0w-ykO-1XeNLFD9GLg", - width: 800, - height: 450, + url: "https://lh3.googleusercontent.com/emeqGnTWaGFe5roPNKOsSe5WFl81hEScrwhlaJkSrmZn8F-rcYVg_VtYKSj5v59eU5ZrUo3uzlbI0wDV=w120-h120-l90-rj", + width: 120, + height: 120, ), ], artists: [ @@ -219,24 +155,59 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album: None, - view_count: Some(419000), - is_video: true, + album: Some(AlbumId( + id: "MPREb_A4r9EfLZzYN", + name: "x (Deluxe Edition)", + )), + view_count: Some(4500000000), + is_video: false, track_nr: None, by_va: false, ), TrackItem( - id: "wLvIBvKNaig", - name: "Life Goes On", + id: "hJWSZDJb-W4", + name: "Bad Habits", duration: None, cover: [ Thumbnail( - url: "https://i.ytimg.com/vi/wLvIBvKNaig/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nRNf5VOzrUxF_1e0Lb6mKukUO_rw", + url: "https://lh3.googleusercontent.com/3xN5Rqah_iSMqbl3ZMCr9MjnEBVyBLmLng0f-MCvFFdfPNhK619ikGwAD0iOBkzCOXIlucWE0lLLXJA=w60-h60-l90-rj", + width: 60, + height: 60, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/3xN5Rqah_iSMqbl3ZMCr9MjnEBVyBLmLng0f-MCvFFdfPNhK619ikGwAD0iOBkzCOXIlucWE0lLLXJA=w120-h120-l90-rj", + width: 120, + height: 120, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album: Some(AlbumId( + id: "MPREb_917r4nW96j5", + name: "Bad Habits", + )), + view_count: Some(1100000000), + is_video: false, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "fezKpDFKf5U", + name: "Perfect", + duration: None, + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/fezKpDFKf5U/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lK0JufCIof0Y3osGxnKsh44Q8rEQ", width: 400, height: 225, ), Thumbnail( - url: "https://i.ytimg.com/vi/wLvIBvKNaig/sddefault.jpg?sqp=-oaymwEWCKoDEPABIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3noBnXkkLuga0HeXwNLuY-UJcnTzQ", + url: "https://i.ytimg.com/vi/fezKpDFKf5U/sddefault.jpg?sqp=-oaymwEWCKoDEPABIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3m7ijpu1bTDhhEjY2EFqxlCklk4Sw", width: 426, height: 240, ), @@ -249,23 +220,23 @@ MusicArtist( ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, - view_count: Some(181000), + view_count: Some(378000), is_video: true, track_nr: None, by_va: false, ), TrackItem( - id: "bOr2N0R2mWs", - name: "Borderline (Apple Music Live)", + id: "doGzjheI604", + name: "The A Team", duration: None, cover: [ Thumbnail( - url: "https://i.ytimg.com/vi/bOr2N0R2mWs/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lvBTyfHI4DIYCQQY3jlunC0NYu-Q", + url: "https://i.ytimg.com/vi/doGzjheI604/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kU_80uHngmJhFXOlUoNaHUu93Smg", width: 400, height: 225, ), Thumbnail( - url: "https://i.ytimg.com/vi/bOr2N0R2mWs/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3nW0d-er5K2MSIMdMFWXeBJpitoOw", + url: "https://i.ytimg.com/vi/doGzjheI604/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3k9gH9fgxjt0jUT3ptDZBfYmSj-2Q", width: 800, height: 450, ), @@ -278,23 +249,23 @@ MusicArtist( ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, - view_count: Some(127000), + view_count: Some(250000), is_video: true, track_nr: None, by_va: false, ), TrackItem( - id: "29lq-cvvlSo", - name: "The Hills of Aberfeldy", + id: "zjEdX8-3CD8", + name: "Lego House", duration: None, cover: [ Thumbnail( - url: "https://i.ytimg.com/vi/29lq-cvvlSo/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lX75As76WxiWqUwMUXni6K5_1krg", + url: "https://i.ytimg.com/vi/zjEdX8-3CD8/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nkjuS26FLwYDmm573Wx7lnSVN9YQ", width: 400, height: 225, ), Thumbnail( - url: "https://i.ytimg.com/vi/29lq-cvvlSo/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3lWnbuFQQ6uWIVVZqXnxEL7Gajg5g", + url: "https://i.ytimg.com/vi/zjEdX8-3CD8/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3lFOrdkqtSsEEnftHdjPoB7jwSZYg", width: 800, height: 450, ), @@ -307,23 +278,23 @@ MusicArtist( ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, - view_count: Some(1700000), + view_count: Some(372000), is_video: true, track_nr: None, by_va: false, ), TrackItem( - id: "juwh4K2Dvrk", - name: "No Strings", + id: "DQZcxN9v0RA", + name: "Dive", duration: None, cover: [ Thumbnail( - url: "https://i.ytimg.com/vi/juwh4K2Dvrk/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3l5GoPZGzrO16keZ1xQkDKuNdK9Ig", + url: "https://i.ytimg.com/vi/DQZcxN9v0RA/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3m-wzWW924f_UkHeAARDYLmE90ANg", width: 400, height: 225, ), Thumbnail( - url: "https://i.ytimg.com/vi/juwh4K2Dvrk/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3l-rS2t3P8Qw23whGMH8VtNUVF-5g", + url: "https://i.ytimg.com/vi/DQZcxN9v0RA/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3m3PQZ8HE21VPgZj92C7kHNyDk6Vg", width: 800, height: 450, ), @@ -336,36 +307,7 @@ MusicArtist( ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, - view_count: Some(2100000), - is_video: true, - track_nr: None, - by_va: false, - ), - TrackItem( - id: "JGwWNGJdvx8", - name: "Shape of You", - duration: None, - cover: [ - Thumbnail( - url: "https://i.ytimg.com/vi/JGwWNGJdvx8/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kWA2X-8_-P2As6JMBtJDLWaPSjOQ", - width: 400, - height: 225, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/JGwWNGJdvx8/sddefault.jpg?sqp=-oaymwEWCKoDEPABIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3n5bppMMMu0X7cXTBMs84X79XOttA", - width: 426, - height: 240, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album: None, - view_count: Some(5900000000), + view_count: Some(1000000), is_video: true, track_nr: None, by_va: false, @@ -394,25 +336,25 @@ MusicArtist( ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, - view_count: Some(3400000000), + view_count: Some(3800000000), is_video: true, track_nr: None, by_va: false, ), TrackItem( - id: "YxSj3TP90SA", - name: "Curtains", + id: "JGwWNGJdvx8", + name: "Shape of You", duration: None, cover: [ Thumbnail( - url: "https://i.ytimg.com/vi/YxSj3TP90SA/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nKOD3bA2Sb-8nB5hXGn1aJZzMMFQ", + url: "https://i.ytimg.com/vi/JGwWNGJdvx8/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kWA2X-8_-P2As6JMBtJDLWaPSjOQ", width: 400, height: 225, ), Thumbnail( - url: "https://i.ytimg.com/vi/YxSj3TP90SA/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3mGg6TjM1kr9OzXxahvmab-1WmPOg", - width: 800, - height: 450, + url: "https://i.ytimg.com/vi/JGwWNGJdvx8/sddefault.jpg?sqp=-oaymwEWCKoDEPABIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3n5bppMMMu0X7cXTBMs84X79XOttA", + width: 426, + height: 240, ), ], artists: [ @@ -423,36 +365,7 @@ MusicArtist( ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, - view_count: Some(8600000), - is_video: true, - track_nr: None, - by_va: false, - ), - TrackItem( - id: "lp-EO5I60KA", - name: "Thinking Out Loud", - duration: None, - cover: [ - Thumbnail( - url: "https://i.ytimg.com/vi/lp-EO5I60KA/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mu6BO8nHKcEzWdeZSd-sWgcIUiLQ", - width: 400, - height: 225, - ), - Thumbnail( - url: "https://i.ytimg.com/vi/lp-EO5I60KA/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3mZqDZb-TPcLwepwoQH8ZifYHp96A", - width: 800, - height: 450, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album: None, - view_count: Some(3500000000), + view_count: Some(6300000000), is_video: true, track_nr: None, by_va: false, @@ -481,13 +394,178 @@ MusicArtist( ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), album: None, - view_count: Some(1200000000), + view_count: Some(1400000000), + is_video: true, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "lp-EO5I60KA", + name: "Thinking out Loud", + duration: None, + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/lp-EO5I60KA/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mu6BO8nHKcEzWdeZSd-sWgcIUiLQ", + width: 400, + height: 225, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/lp-EO5I60KA/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3mZqDZb-TPcLwepwoQH8ZifYHp96A", + width: 800, + height: 450, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album: None, + view_count: Some(3800000000), + is_video: true, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "orJSJGHjBLI", + name: "Bad Habits", + duration: None, + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/orJSJGHjBLI/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kuWcj3GFn0KIrIk9yjaPHYxOaIvg", + width: 400, + height: 225, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/orJSJGHjBLI/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3lNMLo9uVag3GNRhhhblGO0NpT4hA", + width: 800, + height: 450, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album: None, + view_count: Some(641000000), + is_video: true, + track_nr: None, + by_va: false, + ), + TrackItem( + id: "Il0S8BoucSA", + name: "Shivers", + duration: None, + cover: [ + Thumbnail( + url: "https://i.ytimg.com/vi/Il0S8BoucSA/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3md0OdolJfM7sSx62zb9Wr86LIsEA", + width: 400, + height: 225, + ), + Thumbnail( + url: "https://i.ytimg.com/vi/Il0S8BoucSA/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3l584OTAFrn2AeZulvXXEqdKVzhjQ", + width: 800, + height: 450, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album: None, + view_count: Some(364000000), is_video: true, track_nr: None, by_va: false, ), ], albums: [ + AlbumItem( + id: "MPREb_tYL9F3mHJcO", + name: "x (10th Anniversary Edition)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/qzaY7mGHBLDfY3_g58NSuX5eh2iGcTRoAc8MVEtmQVu6qY_i4KvfkOU3fu9RMi4RxbiPPFXAodSEdQlY=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/qzaY7mGHBLDfY3_g58NSuX5eh2iGcTRoAc8MVEtmQVu6qY_i4KvfkOU3fu9RMi4RxbiPPFXAodSEdQlY=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Album, + year: Some(2024), + by_va: false, + ), + AlbumItem( + id: "MPREb_LDIo5ZWELzD", + name: "Autumn Variations (Fan Living Room Sessions)", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/noOqFYwFPI9_-dK61yAB-EMfK4WPruvXRZh2GBr8lhCgdmz6OTVQUZPxFcNJh6FkE13aXcfLqdGmUdiklA=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/noOqFYwFPI9_-dK61yAB-EMfK4WPruvXRZh2GBr8lhCgdmz6OTVQUZPxFcNJh6FkE13aXcfLqdGmUdiklA=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Album, + year: Some(2023), + by_va: false, + ), + AlbumItem( + id: "MPREb_uEnbnIYJjMT", + name: "Autumn Variations", + cover: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/YAQJ6XzfFOmwYHBmNO2ROAeI2hcRiPdhXnLpj9OdgM6F5E8NfxlEWNrfv18bu3DSdtAtsPeNQrVfR2Rt=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/YAQJ6XzfFOmwYHBmNO2ROAeI2hcRiPdhXnLpj9OdgM6F5E8NfxlEWNrfv18bu3DSdtAtsPeNQrVfR2Rt=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + artists: [ + ArtistId( + id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + name: "Ed Sheeran", + ), + ], + artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), + album_type: Album, + year: Some(2023), + by_va: false, + ), AlbumItem( id: "MPREb_9jsAP3C5OSC", name: "- (Deluxe)", @@ -671,16 +749,16 @@ MusicArtist( by_va: false, ), AlbumItem( - id: "MPREb_rglJNvRZR9v", - name: "No. 5 Collaborations Project", + id: "MPREb_J3TRP3oprCB", + name: "A Beautiful Game", cover: [ Thumbnail( - url: "https://lh3.googleusercontent.com/7wdqo8xOHm9VGruKlzukzOuLIVAl3QzMqldt0itaY_FsGv5al1zcs9tpKIAJZaDQbErO2bmaurbLsT6V=w226-h226-l90-rj", + url: "https://lh3.googleusercontent.com/N8puXGTJbxb4YyujbLTkmomBQVH1MrpQMwSR-wg3U6535UAckbR4Hu_5mTiNs4eEC-UIP6dds3cUzBPMdA=w226-h226-l90-rj", width: 226, height: 226, ), Thumbnail( - url: "https://lh3.googleusercontent.com/7wdqo8xOHm9VGruKlzukzOuLIVAl3QzMqldt0itaY_FsGv5al1zcs9tpKIAJZaDQbErO2bmaurbLsT6V=w544-h544-l90-rj", + url: "https://lh3.googleusercontent.com/N8puXGTJbxb4YyujbLTkmomBQVH1MrpQMwSR-wg3U6535UAckbR4Hu_5mTiNs4eEC-UIP6dds3cUzBPMdA=w544-h544-l90-rj", width: 544, height: 544, ), @@ -692,60 +770,8 @@ MusicArtist( ), ], artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Album, - year: Some(2011), - by_va: false, - ), - AlbumItem( - id: "MPREb_aRZymyCfxCE", - name: "Songs I Wrote with Amy", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/5J-U6RzheXK9QqZBMFJG_EFzo-P_8b-RrD987IWQ8_EmyvvDjdk92OU2u0xsTrqnbCH4XkLGN2VWL5pWdg=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/5J-U6RzheXK9QqZBMFJG_EFzo-P_8b-RrD987IWQ8_EmyvvDjdk92OU2u0xsTrqnbCH4XkLGN2VWL5pWdg=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Ep, - year: Some(2010), - by_va: false, - ), - AlbumItem( - id: "MPREb_TZyh5Fu0Iel", - name: "Loose Change", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/xESC6YGPy6Jj3LES1NuhyAWBxVJrDgWL_pViNBZ0wPYgTNzmDSlNt9zeSLLgoc82mD7SKTUswO6oAZf3=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/xESC6YGPy6Jj3LES1NuhyAWBxVJrDgWL_pViNBZ0wPYgTNzmDSlNt9zeSLLgoc82mD7SKTUswO6oAZf3=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Album, - year: Some(2010), + album_type: Single, + year: Some(2023), by_va: false, ), AlbumItem( @@ -852,32 +878,6 @@ MusicArtist( year: Some(2023), by_va: false, ), - AlbumItem( - id: "MPREb_NFPi1ZlYqj0", - name: "Eyes Closed (Overmono Remix)", - cover: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/kaO2Pv5AIBJbfWePJiBj1dqSD9NUpdKl7zKRZ8OCXfHq3SScTtvkrTNqc8nb_IcOyqLRKZg-RnqxKiZl=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/kaO2Pv5AIBJbfWePJiBj1dqSD9NUpdKl7zKRZ8OCXfHq3SScTtvkrTNqc8nb_IcOyqLRKZg-RnqxKiZl=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - artists: [ - ArtistId( - id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - name: "Ed Sheeran", - ), - ], - artist_id: Some("UClmXPfaYhXOYsNn_QUyheWQ"), - album_type: Single, - year: Some(2023), - by_va: false, - ), AlbumItem( id: "MPREb_boUIBO6m7u6", name: "F64", @@ -1030,16 +1030,16 @@ MusicArtist( from_ytm: true, ), MusicPlaylistItem( - id: "RDCLAK5uy_nHSqCJjDrW9HBhCNdF6tWPdnOMngOv0wA", - name: "Pop Gold", + id: "RDCLAK5uy_mkPdnadBmgXk28mbGxm_5uGeKvHrec208", + name: "Acoustic Pop", thumbnail: [ Thumbnail( - url: "https://lh3.googleusercontent.com/rAUuEbLF7CYEYBXU3yAY4npMCzTgPxMhlD-ygH9iv_SuDXGDuDvO0Z4MTh33xAI6o3UnpWFe26MS_hBZ=w226-h226-l90-rj", + url: "https://lh3.googleusercontent.com/tE56EFMRtd1aLWwyhIOPH55gNMF2c_h_PP30_gGMl1jpbrA48GTbFpuWgKlbRHKo_7gwN-9QvVdp1lZd=w226-h226-l90-rj", width: 226, height: 226, ), Thumbnail( - url: "https://lh3.googleusercontent.com/rAUuEbLF7CYEYBXU3yAY4npMCzTgPxMhlD-ygH9iv_SuDXGDuDvO0Z4MTh33xAI6o3UnpWFe26MS_hBZ=w544-h544-l90-rj", + url: "https://lh3.googleusercontent.com/tE56EFMRtd1aLWwyhIOPH55gNMF2c_h_PP30_gGMl1jpbrA48GTbFpuWgKlbRHKo_7gwN-9QvVdp1lZd=w544-h544-l90-rj", width: 544, height: 544, ), @@ -1049,73 +1049,16 @@ MusicArtist( from_ytm: true, ), MusicPlaylistItem( - id: "RDCLAK5uy_nSq67AJ2d75MFNJ3j_4ClEtSgC-opBM84", - name: "Pop Hits", + id: "RDCLAK5uy_m0wlRoNn5iCTTgBedfoOQ19Jq9P3XTLIA", + name: "Feel-Good Pop & Rock", thumbnail: [ Thumbnail( - url: "https://lh3.googleusercontent.com/TVlUnnDTtw4uOJnFHX9E6x7R-JjM-2DLTTGFW6QzFx12c4vi8_0KEj9aDXsGLkHs6PPsjkiOP7qtYQ=w226-h226-l90-rj", + url: "https://lh3.googleusercontent.com/CTtOLB0zp54cCxc6hgTqSAZhMGruxyX0X2hUtRXk_z7XfXGYDwM_tgwTXNvog_knvQ7qvXqLy5_EKMQ=w226-h226-l90-rj", width: 226, height: 226, ), Thumbnail( - url: "https://lh3.googleusercontent.com/TVlUnnDTtw4uOJnFHX9E6x7R-JjM-2DLTTGFW6QzFx12c4vi8_0KEj9aDXsGLkHs6PPsjkiOP7qtYQ=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - channel: None, - track_count: None, - from_ytm: true, - ), - MusicPlaylistItem( - id: "RDCLAK5uy_nDL8KeBrUagwyISwNmyEiSfYgz1gVCesg", - name: "Mellow Pop Classics", - thumbnail: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/XyREm3Y-HafFR_mxyJF99Pd9zerLQiJ0q62_XEnzPK2g30m_V04iVdzAwyP1T9-_3ruclUASulQFjSY=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/XyREm3Y-HafFR_mxyJF99Pd9zerLQiJ0q62_XEnzPK2g30m_V04iVdzAwyP1T9-_3ruclUASulQFjSY=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - channel: None, - track_count: None, - from_ytm: true, - ), - MusicPlaylistItem( - id: "RDCLAK5uy_m_0U5VQNyyzwwH1lRi7cPAAGXqNQnAOqY", - name: "Laid-Back Sofa Pop", - thumbnail: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/IKBTW8jZAxhiUfUkM9u-BLTuuFYrO2833EMuUmH4od_9Acn2pOhh0xOda0iSxo_C24TW3EHGPkkXF2o=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/IKBTW8jZAxhiUfUkM9u-BLTuuFYrO2833EMuUmH4od_9Acn2pOhh0xOda0iSxo_C24TW3EHGPkkXF2o=w544-h544-l90-rj", - width: 544, - height: 544, - ), - ], - channel: None, - track_count: None, - from_ytm: true, - ), - MusicPlaylistItem( - id: "RDCLAK5uy_mdwsZFtQhJyGQPuQA612VoRPXp-OJfzx8", - name: "Hits Unplugged ", - thumbnail: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/65MUtlrAGhOKw4_lh5ZC5RDbScBQMy_PKrFRLPIFkGe-0jPQCfVvXzik3VNvteuvqbmPuLoWC9GzCNE=w226-h226-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/65MUtlrAGhOKw4_lh5ZC5RDbScBQMy_PKrFRLPIFkGe-0jPQCfVvXzik3VNvteuvqbmPuLoWC9GzCNE=w544-h544-l90-rj", + url: "https://lh3.googleusercontent.com/CTtOLB0zp54cCxc6hgTqSAZhMGruxyX0X2hUtRXk_z7XfXGYDwM_tgwTXNvog_knvQ7qvXqLy5_EKMQ=w544-h544-l90-rj", width: 544, height: 544, ), @@ -1129,12 +1072,69 @@ MusicArtist( name: "Sweetheart Pop", thumbnail: [ Thumbnail( - url: "https://lh3.googleusercontent.com/PgqPJM_3mqB-QZSMPCfMvRKmOYMnNFZtzW-Y6UqT4V9va_nYKC24Y5OGhUAWaaM78eTMlIAWbHbcdQuB=w226-h226-l90-rj", + url: "https://lh3.googleusercontent.com/6bfm92uZPSSVQSMGPA7lE0H7AUuxSiJvAy6PaeHKh6qIP_8vvF4aDk-y_YUXFe3KwNtf91G6q2XKzZQ=w226-h226-l90-rj", width: 226, height: 226, ), Thumbnail( - url: "https://lh3.googleusercontent.com/PgqPJM_3mqB-QZSMPCfMvRKmOYMnNFZtzW-Y6UqT4V9va_nYKC24Y5OGhUAWaaM78eTMlIAWbHbcdQuB=w544-h544-l90-rj", + url: "https://lh3.googleusercontent.com/6bfm92uZPSSVQSMGPA7lE0H7AUuxSiJvAy6PaeHKh6qIP_8vvF4aDk-y_YUXFe3KwNtf91G6q2XKzZQ=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + channel: None, + track_count: None, + from_ytm: true, + ), + MusicPlaylistItem( + id: "RDCLAK5uy_khs3a0YMI9WYs2k1Oqb2ukWX3dA3-lnwI", + name: "Relaxing Soft Pop", + thumbnail: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/zWQOCjLKxyRWYRe8KEdxnrPDC5ADY211UKQLENHc3qxeInQdpXIlM7No6YM_DYaPvfat3vKttpPNQnA8=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/zWQOCjLKxyRWYRe8KEdxnrPDC5ADY211UKQLENHc3qxeInQdpXIlM7No6YM_DYaPvfat3vKttpPNQnA8=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + channel: None, + track_count: None, + from_ytm: true, + ), + MusicPlaylistItem( + id: "RDCLAK5uy_mfdqvCAl8wodlx2P2_Ai2gNkiRDAufkkI", + name: "Happy Pop Hits", + thumbnail: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/-ZNC3w71iSs1df7ogBe-LmZj98AzwhHVxJpQVe-nO5VKw8s2M3B8g_7v0mih9NV2dRwX8_a0znewkJI=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/-ZNC3w71iSs1df7ogBe-LmZj98AzwhHVxJpQVe-nO5VKw8s2M3B8g_7v0mih9NV2dRwX8_a0znewkJI=w544-h544-l90-rj", + width: 544, + height: 544, + ), + ], + channel: None, + track_count: None, + from_ytm: true, + ), + MusicPlaylistItem( + id: "RDCLAK5uy_nxuz8sV0R7aWiLsbDv5W9_Bvp0X9PxFjY", + name: "\'10s Pop", + thumbnail: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/ovdrE4a-S81t54orNlhkCVp69Zw-HqPV91fU8TsPeh9ymlmQGz1hwcM-YFL_lF-_s3xsLjZWE86FHA=w226-h226-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/ovdrE4a-S81t54orNlhkCVp69Zw-HqPV91fU8TsPeh9ymlmQGz1hwcM-YFL_lF-_s3xsLjZWE86FHA=w544-h544-l90-rj", width: 544, height: 544, ), @@ -1163,16 +1163,16 @@ MusicArtist( from_ytm: true, ), MusicPlaylistItem( - id: "RDCLAK5uy_lBNUteBRencHzKelu5iDHwLF6mYqjL-JU", - name: "Pop Certified", + id: "RDCLAK5uy_nfs_t4FUu00E5ED6lveEBBX1VMYe1mFjk", + name: "Dance-Pop Bangers", thumbnail: [ Thumbnail( - url: "https://lh3.googleusercontent.com/B26Q3bpmcX4gacK4BWxbB57ABCd1ibmXeKPXK5ISlXKEyRgqxGMOggdrt4gOqky_Ad8tKbpwn1M0mq8U=w226-h226-l90-rj", + url: "https://lh3.googleusercontent.com/371QuBVeCF9Q2wygw9z69I1GqwXXpmrSHsgmbhc1YofGXEloyB2EiV5vFx_GEDu23J2ieG9CTNOa7A=w226-h226-l90-rj", width: 226, height: 226, ), Thumbnail( - url: "https://lh3.googleusercontent.com/B26Q3bpmcX4gacK4BWxbB57ABCd1ibmXeKPXK5ISlXKEyRgqxGMOggdrt4gOqky_Ad8tKbpwn1M0mq8U=w544-h544-l90-rj", + url: "https://lh3.googleusercontent.com/371QuBVeCF9Q2wygw9z69I1GqwXXpmrSHsgmbhc1YofGXEloyB2EiV5vFx_GEDu23J2ieG9CTNOa7A=w544-h544-l90-rj", width: 544, height: 544, ), @@ -1182,16 +1182,16 @@ MusicArtist( from_ytm: true, ), MusicPlaylistItem( - id: "RDCLAK5uy_kY7Uomg8uSGAGuvMIKc3HsVg_ipocKTrE", - name: "Feel-good Pop Hits", + id: "RDCLAK5uy_kEeMXVnyMll_xhEBH1Aza4lEYO58yeQ0M", + name: "Easy Pop", thumbnail: [ Thumbnail( - url: "https://lh3.googleusercontent.com/PiXWU8bqSkti4dEbt7LKktLiNd0ugLjUv2UC4_j5cmlosNRC5Cuas-sN8w-tLHs1Nvd9fIT72L7kVXqE=w226-h226-l90-rj", + url: "https://lh3.googleusercontent.com/sjJmo2UHHhmJPwk7Nc-qRraxmWUUVF1OL-WUCKH4NpKxpRiBah7pbS47BwbwRfqfL7IRlFmjhdx82iQ=w226-h226-l90-rj", width: 226, height: 226, ), Thumbnail( - url: "https://lh3.googleusercontent.com/PiXWU8bqSkti4dEbt7LKktLiNd0ugLjUv2UC4_j5cmlosNRC5Cuas-sN8w-tLHs1Nvd9fIT72L7kVXqE=w544-h544-l90-rj", + url: "https://lh3.googleusercontent.com/sjJmo2UHHhmJPwk7Nc-qRraxmWUUVF1OL-WUCKH4NpKxpRiBah7pbS47BwbwRfqfL7IRlFmjhdx82iQ=w544-h544-l90-rj", width: 544, height: 544, ), @@ -1207,68 +1207,17 @@ MusicArtist( name: "Lewis Capaldi", avatar: [ Thumbnail( - url: "https://lh3.googleusercontent.com/a-/ACB-R5QMZT913rWvdAb53sd2bP0-iPjP8MOi-7n5Dcps=w226-h226-l90-rj", + url: "https://lh3.googleusercontent.com/a-/ALV-UjVuVuwStswGeRiYCLjwBsa9zql7OdAHp6tXa9Q2gYnIyPJRY2E=w226-h226-l90-rj", width: 226, height: 226, ), Thumbnail( - url: "https://lh3.googleusercontent.com/a-/ACB-R5QMZT913rWvdAb53sd2bP0-iPjP8MOi-7n5Dcps=w544-h544-l90-rj", + url: "https://lh3.googleusercontent.com/a-/ALV-UjVuVuwStswGeRiYCLjwBsa9zql7OdAHp6tXa9Q2gYnIyPJRY2E=w544-h544-l90-rj", width: 544, height: 544, ), ], - subscriber_count: Some(6630000), - ), - ArtistItem( - id: "UCiDBtu8whAdUgiJ5o1g7sQQ", - name: "James Bay", - avatar: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/lsTSUtfX9JIjT2Z44QCd-Wi6coedAV0OeHdq3fB0puqTt2-OvKuuMcCdwmxAm5r4BfUAB3swOEYvG48z=w226-h226-p-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/lsTSUtfX9JIjT2Z44QCd-Wi6coedAV0OeHdq3fB0puqTt2-OvKuuMcCdwmxAm5r4BfUAB3swOEYvG48z=w544-h544-p-l90-rj", - width: 544, - height: 544, - ), - ], - subscriber_count: Some(1950000), - ), - ArtistItem( - id: "UCgpBsaDW2n_6ruzht3wvP0A", - name: "Sam Smith", - avatar: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/TjSOLC2wjZtZZ6vKHV0PfHx6xxsk1csVyV-O-NEeASSAuxhgin8y_TE5Ee-fOuO1jrbaQUi0ZejiMrVv=w226-h226-p-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/TjSOLC2wjZtZZ6vKHV0PfHx6xxsk1csVyV-O-NEeASSAuxhgin8y_TE5Ee-fOuO1jrbaQUi0ZejiMrVv=w544-h544-p-l90-rj", - width: 544, - height: 544, - ), - ], - subscriber_count: Some(16200000), - ), - ArtistItem( - id: "UCl6-24cszKqIYLkBzo02XzQ", - name: "Lukas Graham", - avatar: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/gJqf-39ut3mK8h9xMWcd1vD-C0LPfx9G5mWQ73gXwpyDX124GpFdd4fk3D8L6kUJRg58-IoLVQ=w226-h226-p-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/gJqf-39ut3mK8h9xMWcd1vD-C0LPfx9G5mWQ73gXwpyDX124GpFdd4fk3D8L6kUJRg58-IoLVQ=w544-h544-p-l90-rj", - width: 544, - height: 544, - ), - ], - subscriber_count: Some(5130000), + subscriber_count: Some(7500000), ), ArtistItem( id: "UC6ZjlLJhqP79nqGr3Ic6Adg", @@ -1285,7 +1234,75 @@ MusicArtist( height: 544, ), ], - subscriber_count: Some(29900000), + subscriber_count: Some(30300000), + ), + ArtistItem( + id: "UCgpBsaDW2n_6ruzht3wvP0A", + name: "Sam Smith", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/TjSOLC2wjZtZZ6vKHV0PfHx6xxsk1csVyV-O-NEeASSAuxhgin8y_TE5Ee-fOuO1jrbaQUi0ZejiMrVv=w226-h226-p-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/TjSOLC2wjZtZZ6vKHV0PfHx6xxsk1csVyV-O-NEeASSAuxhgin8y_TE5Ee-fOuO1jrbaQUi0ZejiMrVv=w544-h544-p-l90-rj", + width: 544, + height: 544, + ), + ], + subscriber_count: Some(16700000), + ), + ArtistItem( + id: "UCrrbm1toLPud8fFIisPuxpg", + name: "OneRepublic", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/8NOpUYB7nTsAMcpoRTnJVCsaJjS8a-rLUMGEkBpShczDEvWRvP0Fd0qc6hcmTSA1nrYRIL_4IY4t1u5o=w226-h226-p-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/8NOpUYB7nTsAMcpoRTnJVCsaJjS8a-rLUMGEkBpShczDEvWRvP0Fd0qc6hcmTSA1nrYRIL_4IY4t1u5o=w544-h544-p-l90-rj", + width: 544, + height: 544, + ), + ], + subscriber_count: Some(10900000), + ), + ArtistItem( + id: "UCl6-24cszKqIYLkBzo02XzQ", + name: "Lukas Graham", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/ViqsW7h9xDTjYkR0Xu9j5igMjK2SveLcLNsMuDr8145qJwvgCfV-XWSW5O2nJ24zfQ3j0zirPRzRmh8=w226-h226-p-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/ViqsW7h9xDTjYkR0Xu9j5igMjK2SveLcLNsMuDr8145qJwvgCfV-XWSW5O2nJ24zfQ3j0zirPRzRmh8=w544-h544-p-l90-rj", + width: 544, + height: 544, + ), + ], + subscriber_count: Some(5460000), + ), + ArtistItem( + id: "UCiDBtu8whAdUgiJ5o1g7sQQ", + name: "James Bay", + avatar: [ + Thumbnail( + url: "https://lh3.googleusercontent.com/lsTSUtfX9JIjT2Z44QCd-Wi6coedAV0OeHdq3fB0puqTt2-OvKuuMcCdwmxAm5r4BfUAB3swOEYvG48z=w226-h226-p-l90-rj", + width: 226, + height: 226, + ), + Thumbnail( + url: "https://lh3.googleusercontent.com/lsTSUtfX9JIjT2Z44QCd-Wi6coedAV0OeHdq3fB0puqTt2-OvKuuMcCdwmxAm5r4BfUAB3swOEYvG48z=w544-h544-p-l90-rj", + width: 544, + height: 544, + ), + ], + subscriber_count: Some(1990000), ), ArtistItem( id: "UCuPY6msZGySMzTpKLjyeO8g", @@ -1302,75 +1319,58 @@ MusicArtist( height: 544, ), ], - subscriber_count: Some(6380000), + subscriber_count: Some(6710000), ), ArtistItem( - id: "UCrrbm1toLPud8fFIisPuxpg", - name: "OneRepublic", + id: "UCySKHMJ31dcWmdOUyMQUJPQ", + name: "Jess Glynne", avatar: [ Thumbnail( - url: "https://lh3.googleusercontent.com/qvD1cR5jT6Afoq_irOWSDuu0SXNyvmnZ8TN5kAydv_-UMsiPDvQMUsQv-WPPP1Qolw6AY-OQO_f8w2I=w226-h226-p-l90-rj", + url: "https://lh3.googleusercontent.com/sUth0oDLCaVORjE42BE8eeQ0RZ38OvFBUgwrVTy97QXftYcuLWMwKkjvLG3VMe1-HuJcX41bb1J3YVw=w226-h226-p-l90-rj", width: 226, height: 226, ), Thumbnail( - url: "https://lh3.googleusercontent.com/qvD1cR5jT6Afoq_irOWSDuu0SXNyvmnZ8TN5kAydv_-UMsiPDvQMUsQv-WPPP1Qolw6AY-OQO_f8w2I=w544-h544-p-l90-rj", + url: "https://lh3.googleusercontent.com/sUth0oDLCaVORjE42BE8eeQ0RZ38OvFBUgwrVTy97QXftYcuLWMwKkjvLG3VMe1-HuJcX41bb1J3YVw=w544-h544-p-l90-rj", width: 544, height: 544, ), ], - subscriber_count: Some(10300000), + subscriber_count: Some(1670000), ), ArtistItem( - id: "UCFGwp4FHyvU1pJv9w6Jcx8w", - name: "The Script", + id: "UCdFe4KkWwZ_twpo-UECR-Nw", + name: "Maroon 5", avatar: [ Thumbnail( - url: "https://lh3.googleusercontent.com/4f5qk1izKPLk5EKm9WO3_RT7PqEo8j2FmZ39UPPVcRagm93fZ2EjzIDuyV6otYS0t22FlIveKty9vlVg=w226-h226-p-l90-rj", + url: "https://lh3.googleusercontent.com/7jndWy5UJwFJKueBCrizeFWOFwxKUOZZjRMIcPyRlv1X18tY9aJpkuSz_PpamnHVjbYV6s_oER8oi4g=w226-h226-p-l90-rj", width: 226, height: 226, ), Thumbnail( - url: "https://lh3.googleusercontent.com/4f5qk1izKPLk5EKm9WO3_RT7PqEo8j2FmZ39UPPVcRagm93fZ2EjzIDuyV6otYS0t22FlIveKty9vlVg=w544-h544-p-l90-rj", + url: "https://lh3.googleusercontent.com/7jndWy5UJwFJKueBCrizeFWOFwxKUOZZjRMIcPyRlv1X18tY9aJpkuSz_PpamnHVjbYV6s_oER8oi4g=w544-h544-p-l90-rj", width: 544, height: 544, ), ], - subscriber_count: Some(4190000), + subscriber_count: Some(37200000), ), ArtistItem( id: "UCNAbUat5xDtp6FeBphe2V_Q", name: "James Arthur", avatar: [ Thumbnail( - url: "https://lh3.googleusercontent.com/VWyzSUVLJjSH6f57sMAo5bDeBU0Hn78p8-Qiydc13N3aMhw3Lr2-4NoHHoqLx93JzXBoMiEX1AqqC2Y=w226-h226-p-l90-rj", + url: "https://lh3.googleusercontent.com/DVyahI2CBTfB2Mz889tKorFyaDLqtur7aqSte81Pzwl8tSnucAspeebn5XNCHLDpqizepWRn032t608=w226-h226-p-l90-rj", width: 226, height: 226, ), Thumbnail( - url: "https://lh3.googleusercontent.com/VWyzSUVLJjSH6f57sMAo5bDeBU0Hn78p8-Qiydc13N3aMhw3Lr2-4NoHHoqLx93JzXBoMiEX1AqqC2Y=w544-h544-p-l90-rj", + url: "https://lh3.googleusercontent.com/DVyahI2CBTfB2Mz889tKorFyaDLqtur7aqSte81Pzwl8tSnucAspeebn5XNCHLDpqizepWRn032t608=w544-h544-p-l90-rj", width: 544, height: 544, ), ], - subscriber_count: Some(6920000), - ), - ArtistItem( - id: "UCCEzq-Gv6gU-bdM82rtZN4g", - name: "James Blunt", - avatar: [ - Thumbnail( - url: "https://lh3.googleusercontent.com/sXHg22Fqjb3cxKE9Yo1WwF7-RifZ7lYEugJon7AUBI0hzbDe7_WxTAAJEAYGi4r0mLfi2CPn7e0mDg=w226-h226-p-l90-rj", - width: 226, - height: 226, - ), - Thumbnail( - url: "https://lh3.googleusercontent.com/sXHg22Fqjb3cxKE9Yo1WwF7-RifZ7lYEugJon7AUBI0hzbDe7_WxTAAJEAYGi4r0mLfi2CPn7e0mDg=w544-h544-p-l90-rj", - width: 544, - height: 544, - ), - ], - subscriber_count: Some(3140000), + subscriber_count: Some(7510000), ), ], tracks_playlist_id: Some("OLAK5uy_mHzt_lZ0Vdnv3NAqvCLQw5CiYe0q96iBs"), diff --git a/src/param/mod.rs b/src/param/mod.rs index 884a8c9..920da45 100644 --- a/src/param/mod.rs +++ b/src/param/mod.rs @@ -23,9 +23,10 @@ pub enum ChannelVideoTab { } /// Sort order for channel videos -#[derive(Debug, Clone, Copy, PartialEq, Eq)] +#[derive(Default, Debug, Clone, Copy, PartialEq, Eq)] pub enum ChannelOrder { /// Order videos with the latest upload date first (default) + #[default] Latest = 1, /// Order videos with the highest number of views first Popular = 2, @@ -43,3 +44,23 @@ impl ChannelVideoTab { } } } + +/// Sort order for YTM artist albums +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum AlbumOrder { + /// Sort albums by release date + Recency = 1, + /// Sort albums by popularity + Popularity = 2, + /// Sort albums by their name + Alphabetical = 3, +} + +/// Filter for YTM artist albums +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum AlbumFilter { + /// Only show albums + Albums = 1, + /// Only show singles + Singles = 2, +} diff --git a/src/param/search_filter.rs b/src/param/search_filter.rs index dddddc0..9dbbb8f 100644 --- a/src/param/search_filter.rs +++ b/src/param/search_filter.rs @@ -204,7 +204,7 @@ impl SearchFilter { if let Some(sort) = self.sort { pb.varint(1, sort as u64); } - if !filters.bytes.is_empty() { + if !filters.is_empty() { pb.embedded(2, filters); } if self.verbatim { diff --git a/src/util/protobuf.rs b/src/util/protobuf.rs index ade9388..b441b85 100644 --- a/src/util/protobuf.rs +++ b/src/util/protobuf.rs @@ -1,7 +1,7 @@ /// [`ProtoBuilder`] is used to construct protobuf messages using a builder pattern #[derive(Debug, Default)] pub struct ProtoBuilder { - pub bytes: Vec, + bytes: Vec, } impl ProtoBuilder { @@ -39,6 +39,11 @@ impl ProtoBuilder { self._varint(val); } + /// Returns `true` if the builder contains no data + pub fn is_empty(&self) -> bool { + self.bytes.is_empty() + } + /// Write a varint field pub fn varint(&mut self, field: u32, val: u64) { self._field(field, 0); @@ -52,6 +57,13 @@ impl ProtoBuilder { self.bytes.extend_from_slice(string.as_bytes()); } + /// Write a bytes field + pub fn bytes(&mut self, field: u32, bytes: &[u8]) { + self._field(field, 2); + self._varint(bytes.len() as u64); + self.bytes.extend_from_slice(bytes); + } + /// Write an embedded message /// /// Requires passing another [`ProtoBuilder`] with the embedded message. diff --git a/testfiles/music_artist/artist_default.json b/testfiles/music_artist/artist_default.json index e501c57..9322fd6 100644 --- a/testfiles/music_artist/artist_default.json +++ b/testfiles/music_artist/artist_default.json @@ -19,7 +19,7 @@ "browseId": "VLOLAK5uy_mHzt_lZ0Vdnv3NAqvCLQw5CiYe0q96iBs", "params": "ggMCCAI%3D" }, - "clickTrackingParams": "CMMFEPleGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "clickTrackingParams": "CMQFEPleGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=" }, "bottomText": { "runs": [ @@ -39,511 +39,7 @@ "runs": [ { "navigationEndpoint": { - "clickTrackingParams": "CIQGEMn0AhgAIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", - "watchEndpoint": { - "loggingContext": { - "vssLoggingContext": { - "serializedContextData": "GilPTEFLNXV5X21IenRfbFowVmRudjNOQXF2Q0xRdzVDaVllMHE5NmlCcw%3D%3D" - } - }, - "playlistId": "OLAK5uy_mHzt_lZ0Vdnv3NAqvCLQw5CiYe0q96iBs", - "videoId": "xTvyyoF_LZY", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" - } - } - } - }, - "text": "Shape of You" - } - ] - } - } - }, - { - "musicResponsiveListItemFlexColumnRenderer": { - "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", - "text": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CIQGEMn0AhgAIhMI59zswMPz_gIVcOARCB3yMAhr" - }, - "text": "Ed Sheeran" - } - ] - } - } - }, - { - "musicResponsiveListItemFlexColumnRenderer": { - "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", - "text": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_Y8THSupSgRO" - }, - "clickTrackingParams": "CIQGEMn0AhgAIhMI59zswMPz_gIVcOARCB3yMAhr" - }, - "text": "Shape of You" - } - ] - } - } - } - ], - "menu": { - "menuRenderer": { - "accessibility": { - "accessibilityData": { - "label": "Action menu" - } - }, - "items": [ - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CJEGEJvzBRgAIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", - "watchEndpoint": { - "loggingContext": { - "vssLoggingContext": { - "serializedContextData": "GhFSREFNVk14VHZ5eW9GX0xaWQ%3D%3D" - } - }, - "params": "wAEB", - "playlistId": "RDAMVMxTvyyoF_LZY", - "videoId": "xTvyyoF_LZY", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" - } - } - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CJEGEJvzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CI8GEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Song will play next" - } - ] - }, - "trackingParams": "CJAGEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "CI8GEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "videoId": "xTvyyoF_LZY" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CI8GEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CI0GEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Song added to queue" - } - ] - }, - "trackingParams": "CI4GEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "CI0GEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "videoId": "xTvyyoF_LZY" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CI0GEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CIsGEMOUBhgDIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CIwGEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CIwGEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "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": "CIsGEMOUBhgDIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ALBUM" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_Y8THSupSgRO" - }, - "clickTrackingParams": "CIoGEI_7BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" - }, - "text": { - "runs": [ - { - "text": "Go to album" - } - ] - }, - "trackingParams": "CIoGEI_7BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CIkGEJH7BRgFIhMI59zswMPz_gIVcOARCB3yMAhr", - "shareEntityEndpoint": { - "serializedShareEntity": "Cgt4VHZ5eW9GX0xaWQ%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CIkGEJH7BRgFIhMI59zswMPz_gIVcOARCB3yMAhr" - } - } - ], - "topLevelButtons": [ - { - "likeButtonRenderer": { - "dislikeNavigationEndpoint": { - "clickTrackingParams": "CIYGEKVBGAYiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CIgGEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CIgGEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "content": { - "runs": [ - { - "text": "Improve your recommendations after signing in" - } - ] - }, - "title": { - "runs": [ - { - "text": "Not a fan?" - } - ] - } - } - } - } - }, - "likeCommand": { - "clickTrackingParams": "CIYGEKVBGAYiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CIcGEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CIcGEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "content": { - "runs": [ - { - "text": "Improve recommendations and save music after signing in" - } - ] - }, - "title": { - "runs": [ - { - "text": "Like this song" - } - ] - } - } - } - } - }, - "likeStatus": "INDIFFERENT", - "likesAllowed": true, - "target": { - "videoId": "xTvyyoF_LZY" - }, - "trackingParams": "CIYGEKVBGAYiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - } - ], - "trackingParams": "CIUGEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "overlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "3422552064", - "3422552064" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Shape of You" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Shape of You" - } - }, - "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": "CJIGEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", - "watchEndpoint": { - "loggingContext": { - "vssLoggingContext": { - "serializedContextData": "GilPTEFLNXV5X21IenRfbFowVmRudjNOQXF2Q0xRdzVDaVllMHE5NmlCcw%3D%3D" - } - }, - "playlistId": "OLAK5uy_mHzt_lZ0Vdnv3NAqvCLQw5CiYe0q96iBs", - "videoId": "xTvyyoF_LZY", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" - } - } - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CJIGEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", - "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" - } - }, - "playlistItemData": { - "videoId": "xTvyyoF_LZY" - }, - "thumbnail": { - "musicThumbnailRenderer": { - "thumbnail": { - "thumbnails": [ - { - "height": 60, - "url": "https://lh3.googleusercontent.com/TMbA3LImAL96nFkm5cI1x6LiEMvMbRg4IRxEeABd9qpXsfmwKhZHRD1MucnjG5QIsVEp0Vpn7h7M51FH3Q=w60-h60-l90-rj", - "width": 60 - }, - { - "height": 120, - "url": "https://lh3.googleusercontent.com/TMbA3LImAL96nFkm5cI1x6LiEMvMbRg4IRxEeABd9qpXsfmwKhZHRD1MucnjG5QIsVEp0Vpn7h7M51FH3Q=w120-h120-l90-rj", - "width": 120 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", - "trackingParams": "CJMGEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "trackingParams": "CIQGEMn0AhgAIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "musicResponsiveListItemRenderer": { - "flexColumns": [ - { - "musicResponsiveListItemFlexColumnRenderer": { - "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", - "text": { - "runs": [ - { - "navigationEndpoint": { - "clickTrackingParams": "CPQFEMn0AhgBIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", + "clickTrackingParams": "CIkGEMn0AhgAIhMI6p7w7_qiiQMV49BCBR3lZyZrmgEEEMPYAg==", "watchEndpoint": { "loggingContext": { "vssLoggingContext": { @@ -580,7 +76,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CPQFEMn0AhgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CIkGEMn0AhgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "text": "Ed Sheeran" } @@ -588,6 +84,18 @@ } } }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "5.7B plays" + } + ] + } + } + }, { "musicResponsiveListItemFlexColumnRenderer": { "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", @@ -603,7 +111,7 @@ }, "browseId": "MPREb_T5s950Swfdy" }, - "clickTrackingParams": "CPQFEMn0AhgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CIkGEMn0AhgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "text": "÷ (Deluxe)" } @@ -626,7 +134,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CIEGEJvzBRgAIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", + "clickTrackingParams": "CJcGEJvzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZrmgEEEMPYAg==", "watchEndpoint": { "loggingContext": { "vssLoggingContext": { @@ -650,7 +158,7 @@ } ] }, - "trackingParams": "CIEGEJvzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CJcGEJvzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -659,7 +167,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CP8FEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CJUGEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -673,15 +181,21 @@ } ] }, - "trackingParams": "CIAGEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CJYGEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CP8FEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CJUGEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJUGEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "videoId": "ORrFJ63nlcA" + } + }, "videoId": "ORrFJ63nlcA" } } @@ -693,7 +207,7 @@ } ] }, - "trackingParams": "CP8FEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CJUGEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -702,7 +216,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CP0FEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CJMGEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -716,15 +230,21 @@ } ] }, - "trackingParams": "CP4FEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CJQGEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CP0FEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CJMGEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJMGEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "videoId": "ORrFJ63nlcA" + } + }, "videoId": "ORrFJ63nlcA" } } @@ -736,7 +256,7 @@ } ] }, - "trackingParams": "CP0FEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CJMGEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -745,7 +265,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CPsFEMOUBhgDIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CJEGEMOUBhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -753,7 +273,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CPwFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CJIGEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -766,7 +286,7 @@ } ] }, - "trackingParams": "CPwFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CJIGEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -790,11 +310,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CPsFEMOUBhgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CJEGEMOUBhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -811,7 +331,7 @@ }, "browseId": "MPREb_T5s950Swfdy" }, - "clickTrackingParams": "CPoFEI_7BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CJAGEI_7BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "text": { "runs": [ @@ -820,7 +340,33 @@ } ] }, - "trackingParams": "CPoFEI_7BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CJAGEI_7BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTCORrFJ63nlcA" + }, + "clickTrackingParams": "CI8GEK-jChgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "CI8GEK-jChgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -829,7 +375,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CPkFEJH7BRgFIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CI4GEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", "shareEntityEndpoint": { "serializedShareEntity": "CgtPUnJGSjYzbmxjQQ%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -842,7 +388,7 @@ } ] }, - "trackingParams": "CPkFEJH7BRgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CI4GEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], @@ -850,7 +396,7 @@ { "likeButtonRenderer": { "dislikeNavigationEndpoint": { - "clickTrackingParams": "CPYFEKVBGAYiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CIsGEKVBGAciEwjqnvDv-qKJAxXj0EIFHeVnJms=", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -858,7 +404,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CPgFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CI0GEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -871,7 +417,7 @@ } ] }, - "trackingParams": "CPgFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CI0GEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -893,7 +439,7 @@ } }, "likeCommand": { - "clickTrackingParams": "CPYFEKVBGAYiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CIsGEKVBGAciEwjqnvDv-qKJAxXj0EIFHeVnJms=", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -901,7 +447,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CPcFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CIwGEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -914,7 +460,7 @@ } ] }, - "trackingParams": "CPcFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIwGEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -940,11 +486,11 @@ "target": { "videoId": "ORrFJ63nlcA" }, - "trackingParams": "CPYFEKVBGAYiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CIsGEKVBGAciEwjqnvDv-qKJAxXj0EIFHeVnJms=" } } ], - "trackingParams": "CPUFEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIoGEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "overlay": { @@ -975,7 +521,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", "iconColor": 4294967295, "iconLoadingColor": 0, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -983,8 +529,9 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CIIGEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", + "clickTrackingParams": "CJgGEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", "watchEndpoint": { + "index": 0, "loggingContext": { "vssLoggingContext": { "serializedContextData": "GilPTEFLNXV5X21IenRfbFowVmRudjNOQXF2Q0xRdzVDaVllMHE5NmlCcw%3D%3D" @@ -1003,7 +550,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CIIGEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CJgGEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", @@ -1031,10 +578,10 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", - "trackingParams": "CIMGEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CJkGEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, - "trackingParams": "CPQFEMn0AhgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIkGEMn0AhgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -1047,7 +594,7 @@ "runs": [ { "navigationEndpoint": { - "clickTrackingParams": "COQFEMn0AhgCIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", + "clickTrackingParams": "CPgFEMn0AhgBIhMI6p7w7_qiiQMV49BCBR3lZyZrmgEEEMPYAg==", "watchEndpoint": { "loggingContext": { "vssLoggingContext": { @@ -1055,7 +602,7 @@ } }, "playlistId": "OLAK5uy_mHzt_lZ0Vdnv3NAqvCLQw5CiYe0q96iBs", - "videoId": "pDW0e5SO5Co", + "videoId": "xTvyyoF_LZY", "watchEndpointMusicSupportedConfigs": { "watchEndpointMusicConfig": { "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" @@ -1063,7 +610,7 @@ } } }, - "text": "Curtains" + "text": "Shape of You" } ] } @@ -1084,7 +631,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "COQFEMn0AhgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CPgFEMn0AhgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "text": "Ed Sheeran" } @@ -1092,6 +639,18 @@ } } }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "8.7B plays" + } + ] + } + } + }, { "musicResponsiveListItemFlexColumnRenderer": { "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", @@ -1105,11 +664,11 @@ "pageType": "MUSIC_PAGE_TYPE_ALBUM" } }, - "browseId": "MPREb_9jsAP3C5OSC" + "browseId": "MPREb_Y8THSupSgRO" }, - "clickTrackingParams": "COQFEMn0AhgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CPgFEMn0AhgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, - "text": "- (Deluxe)" + "text": "Shape of You" } ] } @@ -1130,16 +689,16 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CPEFEJvzBRgAIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", + "clickTrackingParams": "CIYGEJvzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZrmgEEEMPYAg==", "watchEndpoint": { "loggingContext": { "vssLoggingContext": { - "serializedContextData": "GhFSREFNVk1wRFcwZTVTTzVDbw%3D%3D" + "serializedContextData": "GhFSREFNVk14VHZ5eW9GX0xaWQ%3D%3D" } }, "params": "wAEB", - "playlistId": "RDAMVMpDW0e5SO5Co", - "videoId": "pDW0e5SO5Co", + "playlistId": "RDAMVMxTvyyoF_LZY", + "videoId": "xTvyyoF_LZY", "watchEndpointMusicSupportedConfigs": { "watchEndpointMusicConfig": { "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" @@ -1154,7 +713,7 @@ } ] }, - "trackingParams": "CPEFEJvzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIYGEJvzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -1163,7 +722,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CO8FEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CIQGEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -1177,16 +736,22 @@ } ] }, - "trackingParams": "CPAFEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CIUGEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CO8FEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CIQGEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { - "videoId": "pDW0e5SO5Co" + "onEmptyQueue": { + "clickTrackingParams": "CIQGEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "videoId": "xTvyyoF_LZY" + } + }, + "videoId": "xTvyyoF_LZY" } } }, @@ -1197,7 +762,7 @@ } ] }, - "trackingParams": "CO8FEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIQGEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -1206,7 +771,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CO0FEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CIIGEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -1220,16 +785,22 @@ } ] }, - "trackingParams": "CO4FEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CIMGEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CO0FEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CIIGEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { - "videoId": "pDW0e5SO5Co" + "onEmptyQueue": { + "clickTrackingParams": "CIIGEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "videoId": "xTvyyoF_LZY" + } + }, + "videoId": "xTvyyoF_LZY" } } }, @@ -1240,7 +811,7 @@ } ] }, - "trackingParams": "CO0FEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIIGEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -1249,7 +820,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "COsFEMOUBhgDIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CIAGEMOUBhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -1257,7 +828,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "COwFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CIEGEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -1270,7 +841,7 @@ } ] }, - "trackingParams": "COwFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIEGEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -1294,11 +865,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "COsFEMOUBhgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIAGEMOUBhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -1313,9 +884,9 @@ "pageType": "MUSIC_PAGE_TYPE_ALBUM" } }, - "browseId": "MPREb_9jsAP3C5OSC" + "browseId": "MPREb_Y8THSupSgRO" }, - "clickTrackingParams": "COoFEI_7BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CP8FEI_7BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "text": { "runs": [ @@ -1324,7 +895,33 @@ } ] }, - "trackingParams": "COoFEI_7BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CP8FEI_7BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTCxTvyyoF_LZY" + }, + "clickTrackingParams": "CP4FEK-jChgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "CP4FEK-jChgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -1333,9 +930,9 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "COkFEJH7BRgFIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CP0FEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", "shareEntityEndpoint": { - "serializedShareEntity": "CgtwRFcwZTVTTzVDbw%3D%3D", + "serializedShareEntity": "Cgt4VHZ5eW9GX0xaWQ%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" } }, @@ -1346,7 +943,7 @@ } ] }, - "trackingParams": "COkFEJH7BRgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CP0FEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], @@ -1354,7 +951,7 @@ { "likeButtonRenderer": { "dislikeNavigationEndpoint": { - "clickTrackingParams": "COYFEKVBGAYiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CPoFEKVBGAciEwjqnvDv-qKJAxXj0EIFHeVnJms=", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -1362,7 +959,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "COgFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CPwFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -1375,7 +972,7 @@ } ] }, - "trackingParams": "COgFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPwFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -1397,7 +994,7 @@ } }, "likeCommand": { - "clickTrackingParams": "COYFEKVBGAYiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CPoFEKVBGAciEwjqnvDv-qKJAxXj0EIFHeVnJms=", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -1405,7 +1002,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "COcFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CPsFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -1418,7 +1015,7 @@ } ] }, - "trackingParams": "COcFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPsFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -1442,13 +1039,13 @@ "likeStatus": "INDIFFERENT", "likesAllowed": true, "target": { - "videoId": "pDW0e5SO5Co" + "videoId": "xTvyyoF_LZY" }, - "trackingParams": "COYFEKVBGAYiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CPoFEKVBGAciEwjqnvDv-qKJAxXj0EIFHeVnJms=" } } ], - "trackingParams": "COUFEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPkFEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "overlay": { @@ -1465,12 +1062,12 @@ "musicPlayButtonRenderer": { "accessibilityPauseData": { "accessibilityData": { - "label": "Pause Curtains" + "label": "Pause Shape of You" } }, "accessibilityPlayData": { "accessibilityData": { - "label": "Play Curtains" + "label": "Play Shape of You" } }, "activeBackgroundColor": 0, @@ -1479,7 +1076,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", "iconColor": 4294967295, "iconLoadingColor": 0, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -1487,15 +1084,16 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CPIFEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", + "clickTrackingParams": "CIcGEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", "watchEndpoint": { + "index": 1, "loggingContext": { "vssLoggingContext": { "serializedContextData": "GilPTEFLNXV5X21IenRfbFowVmRudjNOQXF2Q0xRdzVDaVllMHE5NmlCcw%3D%3D" } }, "playlistId": "OLAK5uy_mHzt_lZ0Vdnv3NAqvCLQw5CiYe0q96iBs", - "videoId": "pDW0e5SO5Co", + "videoId": "xTvyyoF_LZY", "watchEndpointMusicSupportedConfigs": { "watchEndpointMusicConfig": { "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" @@ -1507,7 +1105,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CPIFEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CIcGEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", @@ -1515,7 +1113,7 @@ } }, "playlistItemData": { - "videoId": "pDW0e5SO5Co" + "videoId": "xTvyyoF_LZY" }, "thumbnail": { "musicThumbnailRenderer": { @@ -1523,22 +1121,22 @@ "thumbnails": [ { "height": 60, - "url": "https://lh3.googleusercontent.com/e9X9JBO2XNUiMatV8gepjLWktB7uGb8W3HWN8zgxjiMFjVr8hVymX-FKgULPMpQBiQaJY5MDEgeFNEKc=w60-h60-l90-rj", + "url": "https://lh3.googleusercontent.com/TMbA3LImAL96nFkm5cI1x6LiEMvMbRg4IRxEeABd9qpXsfmwKhZHRD1MucnjG5QIsVEp0Vpn7h7M51FH3Q=w60-h60-l90-rj", "width": 60 }, { "height": 120, - "url": "https://lh3.googleusercontent.com/e9X9JBO2XNUiMatV8gepjLWktB7uGb8W3HWN8zgxjiMFjVr8hVymX-FKgULPMpQBiQaJY5MDEgeFNEKc=w120-h120-l90-rj", + "url": "https://lh3.googleusercontent.com/TMbA3LImAL96nFkm5cI1x6LiEMvMbRg4IRxEeABd9qpXsfmwKhZHRD1MucnjG5QIsVEp0Vpn7h7M51FH3Q=w120-h120-l90-rj", "width": 120 } ] }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", - "trackingParams": "CPMFEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CIgGEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, - "trackingParams": "COQFEMn0AhgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPgFEMn0AhgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -1551,511 +1149,7 @@ "runs": [ { "navigationEndpoint": { - "clickTrackingParams": "CNQFEMn0AhgDIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", - "watchEndpoint": { - "loggingContext": { - "vssLoggingContext": { - "serializedContextData": "GilPTEFLNXV5X21IenRfbFowVmRudjNOQXF2Q0xRdzVDaVllMHE5NmlCcw%3D%3D" - } - }, - "playlistId": "OLAK5uy_mHzt_lZ0Vdnv3NAqvCLQw5CiYe0q96iBs", - "videoId": "fdz_cabS9BU", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" - } - } - } - }, - "text": "Thinking out Loud" - } - ] - } - } - }, - { - "musicResponsiveListItemFlexColumnRenderer": { - "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", - "text": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CNQFEMn0AhgDIhMI59zswMPz_gIVcOARCB3yMAhr" - }, - "text": "Ed Sheeran" - } - ] - } - } - }, - { - "musicResponsiveListItemFlexColumnRenderer": { - "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", - "text": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_A4r9EfLZzYN" - }, - "clickTrackingParams": "CNQFEMn0AhgDIhMI59zswMPz_gIVcOARCB3yMAhr" - }, - "text": "x (Deluxe Edition)" - } - ] - } - } - } - ], - "menu": { - "menuRenderer": { - "accessibility": { - "accessibilityData": { - "label": "Action menu" - } - }, - "items": [ - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "COEFEJvzBRgAIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", - "watchEndpoint": { - "loggingContext": { - "vssLoggingContext": { - "serializedContextData": "GhFSREFNVk1mZHpfY2FiUzlCVQ%3D%3D" - } - }, - "params": "wAEB", - "playlistId": "RDAMVMfdz_cabS9BU", - "videoId": "fdz_cabS9BU", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" - } - } - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "COEFEJvzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CN8FEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Song will play next" - } - ] - }, - "trackingParams": "COAFEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "CN8FEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "videoId": "fdz_cabS9BU" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CN8FEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CN0FEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Song added to queue" - } - ] - }, - "trackingParams": "CN4FEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "CN0FEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "videoId": "fdz_cabS9BU" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CN0FEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CNsFEMOUBhgDIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CNwFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CNwFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "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": "CNsFEMOUBhgDIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ALBUM" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_A4r9EfLZzYN" - }, - "clickTrackingParams": "CNoFEI_7BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" - }, - "text": { - "runs": [ - { - "text": "Go to album" - } - ] - }, - "trackingParams": "CNoFEI_7BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CNkFEJH7BRgFIhMI59zswMPz_gIVcOARCB3yMAhr", - "shareEntityEndpoint": { - "serializedShareEntity": "CgtmZHpfY2FiUzlCVQ%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CNkFEJH7BRgFIhMI59zswMPz_gIVcOARCB3yMAhr" - } - } - ], - "topLevelButtons": [ - { - "likeButtonRenderer": { - "dislikeNavigationEndpoint": { - "clickTrackingParams": "CNYFEKVBGAYiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CNgFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CNgFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "content": { - "runs": [ - { - "text": "Improve your recommendations after signing in" - } - ] - }, - "title": { - "runs": [ - { - "text": "Not a fan?" - } - ] - } - } - } - } - }, - "likeCommand": { - "clickTrackingParams": "CNYFEKVBGAYiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CNcFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CNcFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "content": { - "runs": [ - { - "text": "Improve recommendations and save music after signing in" - } - ] - }, - "title": { - "runs": [ - { - "text": "Like this song" - } - ] - } - } - } - } - }, - "likeStatus": "INDIFFERENT", - "likesAllowed": true, - "target": { - "videoId": "fdz_cabS9BU" - }, - "trackingParams": "CNYFEKVBGAYiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - } - ], - "trackingParams": "CNUFEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "overlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "3422552064", - "3422552064" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Thinking out Loud" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Thinking out Loud" - } - }, - "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": "COIFEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", - "watchEndpoint": { - "loggingContext": { - "vssLoggingContext": { - "serializedContextData": "GilPTEFLNXV5X21IenRfbFowVmRudjNOQXF2Q0xRdzVDaVllMHE5NmlCcw%3D%3D" - } - }, - "playlistId": "OLAK5uy_mHzt_lZ0Vdnv3NAqvCLQw5CiYe0q96iBs", - "videoId": "fdz_cabS9BU", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" - } - } - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "COIFEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", - "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" - } - }, - "playlistItemData": { - "videoId": "fdz_cabS9BU" - }, - "thumbnail": { - "musicThumbnailRenderer": { - "thumbnail": { - "thumbnails": [ - { - "height": 60, - "url": "https://lh3.googleusercontent.com/emeqGnTWaGFe5roPNKOsSe5WFl81hEScrwhlaJkSrmZn8F-rcYVg_VtYKSj5v59eU5ZrUo3uzlbI0wDV=w60-h60-l90-rj", - "width": 60 - }, - { - "height": 120, - "url": "https://lh3.googleusercontent.com/emeqGnTWaGFe5roPNKOsSe5WFl81hEScrwhlaJkSrmZn8F-rcYVg_VtYKSj5v59eU5ZrUo3uzlbI0wDV=w120-h120-l90-rj", - "width": 120 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", - "trackingParams": "COMFEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "trackingParams": "CNQFEMn0AhgDIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "musicResponsiveListItemRenderer": { - "flexColumns": [ - { - "musicResponsiveListItemFlexColumnRenderer": { - "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", - "text": { - "runs": [ - { - "navigationEndpoint": { - "clickTrackingParams": "CMQFEMn0AhgEIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", + "clickTrackingParams": "COcFEMn0AhgCIhMI6p7w7_qiiQMV49BCBR3lZyZrmgEEEMPYAg==", "watchEndpoint": { "loggingContext": { "vssLoggingContext": { @@ -2092,7 +1186,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CMQFEMn0AhgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "COcFEMn0AhgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "text": "Ed Sheeran" } @@ -2100,6 +1194,18 @@ } } }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "3.3B plays" + } + ] + } + } + }, { "musicResponsiveListItemFlexColumnRenderer": { "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", @@ -2115,7 +1221,7 @@ }, "browseId": "MPREb_A4r9EfLZzYN" }, - "clickTrackingParams": "CMQFEMn0AhgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "COcFEMn0AhgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "text": "x (Deluxe Edition)" } @@ -2138,7 +1244,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CNEFEJvzBRgAIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", + "clickTrackingParams": "CPUFEJvzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZrmgEEEMPYAg==", "watchEndpoint": { "loggingContext": { "vssLoggingContext": { @@ -2162,7 +1268,7 @@ } ] }, - "trackingParams": "CNEFEJvzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPUFEJvzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -2171,7 +1277,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CM8FEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CPMFEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -2185,15 +1291,21 @@ } ] }, - "trackingParams": "CNAFEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CPQFEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CM8FEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CPMFEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CPMFEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "videoId": "SlbfAYvA_gI" + } + }, "videoId": "SlbfAYvA_gI" } } @@ -2205,7 +1317,7 @@ } ] }, - "trackingParams": "CM8FEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPMFEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -2214,7 +1326,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CM0FEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CPEFEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -2228,15 +1340,21 @@ } ] }, - "trackingParams": "CM4FEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CPIFEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CM0FEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CPEFEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CPEFEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "videoId": "SlbfAYvA_gI" + } + }, "videoId": "SlbfAYvA_gI" } } @@ -2248,7 +1366,7 @@ } ] }, - "trackingParams": "CM0FEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPEFEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -2257,7 +1375,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CMsFEMOUBhgDIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CO8FEMOUBhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -2265,7 +1383,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CMwFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CPAFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -2278,7 +1396,7 @@ } ] }, - "trackingParams": "CMwFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPAFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -2302,11 +1420,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CMsFEMOUBhgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CO8FEMOUBhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -2323,7 +1441,7 @@ }, "browseId": "MPREb_A4r9EfLZzYN" }, - "clickTrackingParams": "CMoFEI_7BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CO4FEI_7BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "text": { "runs": [ @@ -2332,7 +1450,33 @@ } ] }, - "trackingParams": "CMoFEI_7BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CO4FEI_7BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTCSlbfAYvA_gI" + }, + "clickTrackingParams": "CO0FEK-jChgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "CO0FEK-jChgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -2341,7 +1485,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CMkFEJH7BRgFIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "COwFEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", "shareEntityEndpoint": { "serializedShareEntity": "CgtTbGJmQVl2QV9nSQ%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -2354,7 +1498,7 @@ } ] }, - "trackingParams": "CMkFEJH7BRgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COwFEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], @@ -2362,7 +1506,7 @@ { "likeButtonRenderer": { "dislikeNavigationEndpoint": { - "clickTrackingParams": "CMYFEKVBGAYiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "COkFEKVBGAciEwjqnvDv-qKJAxXj0EIFHeVnJms=", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -2370,7 +1514,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CMgFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "COsFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -2383,7 +1527,7 @@ } ] }, - "trackingParams": "CMgFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COsFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -2405,7 +1549,7 @@ } }, "likeCommand": { - "clickTrackingParams": "CMYFEKVBGAYiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "COkFEKVBGAciEwjqnvDv-qKJAxXj0EIFHeVnJms=", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -2413,7 +1557,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CMcFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "COoFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -2426,7 +1570,7 @@ } ] }, - "trackingParams": "CMcFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COoFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -2452,11 +1596,11 @@ "target": { "videoId": "SlbfAYvA_gI" }, - "trackingParams": "CMYFEKVBGAYiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "COkFEKVBGAciEwjqnvDv-qKJAxXj0EIFHeVnJms=" } } ], - "trackingParams": "CMUFEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COgFEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "overlay": { @@ -2487,7 +1631,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_SMALL", "iconColor": 4294967295, "iconLoadingColor": 0, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -2495,8 +1639,9 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CNIFEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", + "clickTrackingParams": "CPYFEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", "watchEndpoint": { + "index": 2, "loggingContext": { "vssLoggingContext": { "serializedContextData": "GilPTEFLNXV5X21IenRfbFowVmRudjNOQXF2Q0xRdzVDaVllMHE5NmlCcw%3D%3D" @@ -2515,7 +1660,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CNIFEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CPYFEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", @@ -2543,46 +1688,103 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", - "trackingParams": "CNMFEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CPcFEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, - "trackingParams": "CMQFEMn0AhgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COcFEMn0AhgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } - } - ], - "shelfDivider": { - "musicShelfDividerRenderer": { - "hidden": true - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" - } - }, - "browseId": "VLOLAK5uy_mHzt_lZ0Vdnv3NAqvCLQw5CiYe0q96iBs", - "params": "ggMCCAI%3D" - }, - "clickTrackingParams": "CMMFEPleGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - }, - "text": "Songs" - } - ] - }, - "trackingParams": "CMMFEPleGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - }, - { - "musicCarouselShelfRenderer": { - "contents": [ + }, { - "musicTwoRowItemRenderer": { - "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_SQUARE", + "musicResponsiveListItemRenderer": { + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CNYFEMn0AhgDIhMI6p7w7_qiiQMV49BCBR3lZyZrmgEEEMPYAg==", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21IenRfbFowVmRudjNOQXF2Q0xRdzVDaVllMHE5NmlCcw%3D%3D" + } + }, + "playlistId": "OLAK5uy_mHzt_lZ0Vdnv3NAqvCLQw5CiYe0q96iBs", + "videoId": "fdz_cabS9BU", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": "Thinking out Loud" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CNYFEMn0AhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "text": "Ed Sheeran" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "4.5B plays" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_A4r9EfLZzYN" + }, + "clickTrackingParams": "CNYFEMn0AhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "text": "x (Deluxe Edition)" + } + ] + } + } + } + ], "menu": { "menuRenderer": { "accessibility": { @@ -2591,38 +1793,27 @@ } }, "items": [ - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MUSIC_SHUFFLE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CL8FEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_nKFZ59l5PiClSiv-wVYt2e_jypXtFipE0" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CL8FEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, { "menuNavigationItemRenderer": { "icon": { "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CL4FEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", - "watchPlaylistEndpoint": { + "clickTrackingParams": "COQFEJvzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZrmgEEEMPYAg==", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1mZHpfY2FiUzlCVQ%3D%3D" + } + }, "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_nKFZ59l5PiClSiv-wVYt2e_jypXtFipE0" + "playlistId": "RDAMVMfdz_cabS9BU", + "videoId": "fdz_cabS9BU", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } } }, "text": { @@ -2632,7 +1823,7 @@ } ] }, - "trackingParams": "CL4FEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COQFEJvzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -2641,7 +1832,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CLwFEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "COIFEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -2651,20 +1842,26 @@ "successResponseText": { "runs": [ { - "text": "Album will play next" + "text": "Song will play next" } ] }, - "trackingParams": "CL0FEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "COMFEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CLwFEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "COIFEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { - "playlistId": "OLAK5uy_nKFZ59l5PiClSiv-wVYt2e_jypXtFipE0" + "onEmptyQueue": { + "clickTrackingParams": "COIFEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "videoId": "fdz_cabS9BU" + } + }, + "videoId": "fdz_cabS9BU" } } }, @@ -2675,7 +1872,7 @@ } ] }, - "trackingParams": "CLwFEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COIFEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -2684,7 +1881,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CLoFEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "COAFEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -2694,20 +1891,26 @@ "successResponseText": { "runs": [ { - "text": "Album added to queue" + "text": "Song added to queue" } ] }, - "trackingParams": "CLsFEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "COEFEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CLoFEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "COAFEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { - "playlistId": "OLAK5uy_nKFZ59l5PiClSiv-wVYt2e_jypXtFipE0" + "onEmptyQueue": { + "clickTrackingParams": "COAFEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "videoId": "fdz_cabS9BU" + } + }, + "videoId": "fdz_cabS9BU" } } }, @@ -2718,84 +1921,7 @@ } ] }, - "trackingParams": "CLoFEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CLgFEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CLkFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CLkFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CLgFEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_nKFZ59l5PiClSiv-wVYt2e_jypXtFipE0" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CLgFEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COAFEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -2804,7 +1930,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CLYFEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CN4FEMOUBhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -2812,7 +1938,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CLcFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CN8FEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -2825,7 +1951,7 @@ } ] }, - "trackingParams": "CLcFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CN8FEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -2849,11 +1975,63 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CLYFEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CN4FEMOUBhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_A4r9EfLZzYN" + }, + "clickTrackingParams": "CN0FEI_7BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "trackingParams": "CN0FEI_7BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTCfdz_cabS9BU" + }, + "clickTrackingParams": "CNwFEK-jChgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "CNwFEK-jChgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -2862,7 +2040,2431 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CLUFEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CNsFEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtmZHpfY2FiUzlCVQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CNsFEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "dislikeNavigationEndpoint": { + "clickTrackingParams": "CNgFEKVBGAciEwjqnvDv-qKJAxXj0EIFHeVnJms=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CNoFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CNoFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "content": { + "runs": [ + { + "text": "Improve your recommendations after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Not a fan?" + } + ] + } + } + } + } + }, + "likeCommand": { + "clickTrackingParams": "CNgFEKVBGAciEwjqnvDv-qKJAxXj0EIFHeVnJms=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CNkFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CNkFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "content": { + "runs": [ + { + "text": "Improve recommendations and save music after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Like this song" + } + ] + } + } + } + } + }, + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "target": { + "videoId": "fdz_cabS9BU" + }, + "trackingParams": "CNgFEKVBGAciEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + } + ], + "trackingParams": "CNcFEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Thinking out Loud" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Thinking out Loud" + } + }, + "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": "COUFEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", + "watchEndpoint": { + "index": 3, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21IenRfbFowVmRudjNOQXF2Q0xRdzVDaVllMHE5NmlCcw%3D%3D" + } + }, + "playlistId": "OLAK5uy_mHzt_lZ0Vdnv3NAqvCLQw5CiYe0q96iBs", + "videoId": "fdz_cabS9BU", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "COUFEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "fdz_cabS9BU" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/emeqGnTWaGFe5roPNKOsSe5WFl81hEScrwhlaJkSrmZn8F-rcYVg_VtYKSj5v59eU5ZrUo3uzlbI0wDV=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/emeqGnTWaGFe5roPNKOsSe5WFl81hEScrwhlaJkSrmZn8F-rcYVg_VtYKSj5v59eU5ZrUo3uzlbI0wDV=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "COYFEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "trackingParams": "CNYFEMn0AhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "musicResponsiveListItemRenderer": { + "flexColumns": [ + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CMUFEMn0AhgEIhMI6p7w7_qiiQMV49BCBR3lZyZrmgEEEMPYAg==", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21IenRfbFowVmRudjNOQXF2Q0xRdzVDaVllMHE5NmlCcw%3D%3D" + } + }, + "playlistId": "OLAK5uy_mHzt_lZ0Vdnv3NAqvCLQw5CiYe0q96iBs", + "videoId": "hJWSZDJb-W4", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": "Bad Habits" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CMUFEMn0AhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "text": "Ed Sheeran" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_HIGH", + "text": { + "runs": [ + { + "text": "1.1B plays" + } + ] + } + } + }, + { + "musicResponsiveListItemFlexColumnRenderer": { + "displayPriority": "MUSIC_RESPONSIVE_LIST_ITEM_COLUMN_DISPLAY_PRIORITY_MEDIUM", + "text": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_917r4nW96j5" + }, + "clickTrackingParams": "CMUFEMn0AhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "text": "Bad Habits" + } + ] + } + } + } + ], + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNMFEJvzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZrmgEEEMPYAg==", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1oSldTWkRKYi1XNA%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVMhJWSZDJb-W4", + "videoId": "hJWSZDJb-W4", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CNMFEJvzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNEFEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CNIFEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "CNEFEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNEFEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "videoId": "hJWSZDJb-W4" + } + }, + "videoId": "hJWSZDJb-W4" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CNEFEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM8FEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CNAFEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "CM8FEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CM8FEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "videoId": "hJWSZDJb-W4" + } + }, + "videoId": "hJWSZDJb-W4" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CM8FEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CM0FEMOUBhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CM4FEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CM4FEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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": "CM0FEMOUBhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ALBUM" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_917r4nW96j5" + }, + "clickTrackingParams": "CMwFEI_7BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "text": { + "runs": [ + { + "text": "Go to album" + } + ] + }, + "trackingParams": "CMwFEI_7BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "PEOPLE_GROUP" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_TRACK_CREDITS" + } + }, + "browseId": "MPTChJWSZDJb-W4" + }, + "clickTrackingParams": "CMsFEK-jChgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "text": { + "runs": [ + { + "text": "View song credits" + } + ] + }, + "trackingParams": "CMsFEK-jChgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMoFEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtoSldTWkRKYi1XNA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CMoFEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + } + ], + "topLevelButtons": [ + { + "likeButtonRenderer": { + "dislikeNavigationEndpoint": { + "clickTrackingParams": "CMcFEKVBGAciEwjqnvDv-qKJAxXj0EIFHeVnJms=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CMkFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CMkFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "content": { + "runs": [ + { + "text": "Improve your recommendations after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Not a fan?" + } + ] + } + } + } + } + }, + "likeCommand": { + "clickTrackingParams": "CMcFEKVBGAciEwjqnvDv-qKJAxXj0EIFHeVnJms=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CMgFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CMgFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "content": { + "runs": [ + { + "text": "Improve recommendations and save music after signing in" + } + ] + }, + "title": { + "runs": [ + { + "text": "Like this song" + } + ] + } + } + } + } + }, + "likeStatus": "INDIFFERENT", + "likesAllowed": true, + "target": { + "videoId": "hJWSZDJb-W4" + }, + "trackingParams": "CMcFEKVBGAciEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + } + ], + "trackingParams": "CMYFEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "overlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "3422552064", + "3422552064" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Bad Habits" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Bad Habits" + } + }, + "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": "CNQFEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", + "watchEndpoint": { + "index": 4, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X21IenRfbFowVmRudjNOQXF2Q0xRdzVDaVllMHE5NmlCcw%3D%3D" + } + }, + "playlistId": "OLAK5uy_mHzt_lZ0Vdnv3NAqvCLQw5CiYe0q96iBs", + "videoId": "hJWSZDJb-W4", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_ATV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CNQFEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "playlistItemData": { + "videoId": "hJWSZDJb-W4" + }, + "thumbnail": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 60, + "url": "https://lh3.googleusercontent.com/3xN5Rqah_iSMqbl3ZMCr9MjnEBVyBLmLng0f-MCvFFdfPNhK619ikGwAD0iOBkzCOXIlucWE0lLLXJA=w60-h60-l90-rj", + "width": 60 + }, + { + "height": 120, + "url": "https://lh3.googleusercontent.com/3xN5Rqah_iSMqbl3ZMCr9MjnEBVyBLmLng0f-MCvFFdfPNhK619ikGwAD0iOBkzCOXIlucWE0lLLXJA=w120-h120-l90-rj", + "width": 120 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FIT", + "trackingParams": "CNUFEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "trackingParams": "CMUFEMn0AhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + } + ], + "shelfDivider": { + "musicShelfDividerRenderer": { + "hidden": true + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" + } + }, + "browseId": "VLOLAK5uy_mHzt_lZ0Vdnv3NAqvCLQw5CiYe0q96iBs", + "params": "ggMCCAI%3D" + }, + "clickTrackingParams": "CMQFEPleGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + }, + "text": "Songs" + } + ] + }, + "trackingParams": "CMQFEPleGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + }, + { + "musicCarouselShelfRenderer": { + "contents": [ + { + "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": "CMAFEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_mj5Q-zWPVpr9fdLkrQG5e-paQx2QJqfaU" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CMAFEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CL8FEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_mj5Q-zWPVpr9fdLkrQG5e-paQx2QJqfaU" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CL8FEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL0FEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CL4FEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "CL0FEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CL0FEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_mj5Q-zWPVpr9fdLkrQG5e-paQx2QJqfaU" + } + }, + "playlistId": "OLAK5uy_mj5Q-zWPVpr9fdLkrQG5e-paQx2QJqfaU" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CL0FEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLsFEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CLwFEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "CLsFEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CLsFEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_mj5Q-zWPVpr9fdLkrQG5e-paQx2QJqfaU" + } + }, + "playlistId": "OLAK5uy_mj5Q-zWPVpr9fdLkrQG5e-paQx2QJqfaU" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CLsFEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CLkFEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CLoFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CLoFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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": "CLkFEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_mj5Q-zWPVpr9fdLkrQG5e-paQx2QJqfaU" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CLkFEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLcFEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CLgFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CLgFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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": "CLcFEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLYFEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X21qNVEteldQVnByOWZkTGtyUUc1ZS1wYVF4MlFKcWZhVQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CLYFEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + } + ], + "trackingParams": "CLUFEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_tYL9F3mHJcO", + "params": "ggMrGilPTEFLNXV5X21qNVEteldQVnByOWZkTGtyUUc1ZS1wYVF4MlFKcWZhVQ%3D%3D" + }, + "clickTrackingParams": "CLMFEKCzAhgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "subtitle": { + "runs": [ + { + "text": "Album" + }, + { + "text": " • " + }, + { + "text": "2024" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause x (10th Anniversary Edition)" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play x (10th Anniversary Edition)" + } + }, + "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": "CLQFEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_mj5Q-zWPVpr9fdLkrQG5e-paQx2QJqfaU" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CLQFEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "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/qzaY7mGHBLDfY3_g58NSuX5eh2iGcTRoAc8MVEtmQVu6qY_i4KvfkOU3fu9RMi4RxbiPPFXAodSEdQlY=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/qzaY7mGHBLDfY3_g58NSuX5eh2iGcTRoAc8MVEtmQVu6qY_i4KvfkOU3fu9RMi4RxbiPPFXAodSEdQlY=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CMEFEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_tYL9F3mHJcO", + "params": "ggMrGilPTEFLNXV5X21qNVEteldQVnByOWZkTGtyUUc1ZS1wYVF4MlFKcWZhVQ%3D%3D" + }, + "clickTrackingParams": "CLMFEKCzAhgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "text": "x (10th Anniversary Edition)" + } + ] + }, + "trackingParams": "CLMFEKCzAhgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "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": "CLEFEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_kFdWx9zNdW6BYVfRRzIEHpne05rxCjGcI" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CLEFEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLAFEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_kFdWx9zNdW6BYVfRRzIEHpne05rxCjGcI" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CLAFEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK4FEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CK8FEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "CK4FEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CK4FEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_kFdWx9zNdW6BYVfRRzIEHpne05rxCjGcI" + } + }, + "playlistId": "OLAK5uy_kFdWx9zNdW6BYVfRRzIEHpne05rxCjGcI" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CK4FEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKwFEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CK0FEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "CKwFEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKwFEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_kFdWx9zNdW6BYVfRRzIEHpne05rxCjGcI" + } + }, + "playlistId": "OLAK5uy_kFdWx9zNdW6BYVfRRzIEHpne05rxCjGcI" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CKwFEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CKoFEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CKsFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CKsFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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": "CKoFEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_kFdWx9zNdW6BYVfRRzIEHpne05rxCjGcI" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CKoFEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKgFEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CKkFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CKkFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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": "CKgFEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKcFEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2tGZFd4OXpOZFc2QllWZlJSeklFSHBuZTA1cnhDakdjSQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CKcFEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + } + ], + "trackingParams": "CKYFEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_LDIo5ZWELzD", + "params": "ggMrGilPTEFLNXV5X2tGZFd4OXpOZFc2QllWZlJSeklFSHBuZTA1cnhDakdjSQ%3D%3D" + }, + "clickTrackingParams": "CKMFEKCzAhgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "subtitle": { + "runs": [ + { + "text": "Album" + }, + { + "text": " • " + }, + { + "text": "2023" + } + ] + }, + "subtitleBadges": [ + { + "musicInlineBadgeRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + }, + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "trackingParams": "CKQFEKHtAhgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + } + ], + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Autumn Variations (Fan Living Room Sessions)" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Autumn Variations (Fan Living Room Sessions)" + } + }, + "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": "CKUFEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_kFdWx9zNdW6BYVfRRzIEHpne05rxCjGcI" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CKUFEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "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/noOqFYwFPI9_-dK61yAB-EMfK4WPruvXRZh2GBr8lhCgdmz6OTVQUZPxFcNJh6FkE13aXcfLqdGmUdiklA=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/noOqFYwFPI9_-dK61yAB-EMfK4WPruvXRZh2GBr8lhCgdmz6OTVQUZPxFcNJh6FkE13aXcfLqdGmUdiklA=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CLIFEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_LDIo5ZWELzD", + "params": "ggMrGilPTEFLNXV5X2tGZFd4OXpOZFc2QllWZlJSeklFSHBuZTA1cnhDakdjSQ%3D%3D" + }, + "clickTrackingParams": "CKMFEKCzAhgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "text": "Autumn Variations (Fan Living Room Sessions)" + } + ] + }, + "trackingParams": "CKMFEKCzAhgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "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": "CKEFEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_k-3zgXpmRwgCxb1FTmuV9_lulAVOqbacU" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CKEFEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKAFEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_k-3zgXpmRwgCxb1FTmuV9_lulAVOqbacU" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CKAFEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ4FEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CJ8FEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "CJ4FEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJ4FEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_k-3zgXpmRwgCxb1FTmuV9_lulAVOqbacU" + } + }, + "playlistId": "OLAK5uy_k-3zgXpmRwgCxb1FTmuV9_lulAVOqbacU" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CJ4FEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJwFEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CJ0FEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "CJwFEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJwFEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_k-3zgXpmRwgCxb1FTmuV9_lulAVOqbacU" + } + }, + "playlistId": "OLAK5uy_k-3zgXpmRwgCxb1FTmuV9_lulAVOqbacU" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJwFEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CJoFEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CJsFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CJsFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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": "CJoFEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_k-3zgXpmRwgCxb1FTmuV9_lulAVOqbacU" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CJoFEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJgFEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CJkFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CJkFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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": "CJgFEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJcFEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2stM3pnWHBtUndnQ3hiMUZUbXVWOV9sdWxBVk9xYmFjVQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJcFEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + } + ], + "trackingParams": "CJYFEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_uEnbnIYJjMT", + "params": "ggMrGilPTEFLNXV5X2stM3pnWHBtUndnQ3hiMUZUbXVWOV9sdWxBVk9xYmFjVQ%3D%3D" + }, + "clickTrackingParams": "CJMFEKCzAhgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "subtitle": { + "runs": [ + { + "text": "Album" + }, + { + "text": " • " + }, + { + "text": "2023" + } + ] + }, + "subtitleBadges": [ + { + "musicInlineBadgeRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + }, + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "trackingParams": "CJQFEKHtAhgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + } + ], + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Autumn Variations" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Autumn Variations" + } + }, + "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": "CJUFEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_k-3zgXpmRwgCxb1FTmuV9_lulAVOqbacU" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CJUFEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "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/YAQJ6XzfFOmwYHBmNO2ROAeI2hcRiPdhXnLpj9OdgM6F5E8NfxlEWNrfv18bu3DSdtAtsPeNQrVfR2Rt=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/YAQJ6XzfFOmwYHBmNO2ROAeI2hcRiPdhXnLpj9OdgM6F5E8NfxlEWNrfv18bu3DSdtAtsPeNQrVfR2Rt=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CKIFEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_uEnbnIYJjMT", + "params": "ggMrGilPTEFLNXV5X2stM3pnWHBtUndnQ3hiMUZUbXVWOV9sdWxBVk9xYmFjVQ%3D%3D" + }, + "clickTrackingParams": "CJMFEKCzAhgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "text": "Autumn Variations" + } + ] + }, + "trackingParams": "CJMFEKCzAhgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "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": "CJEFEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_nKFZ59l5PiClSiv-wVYt2e_jypXtFipE0" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CJEFEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJAFEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_nKFZ59l5PiClSiv-wVYt2e_jypXtFipE0" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CJAFEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI4FEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CI8FEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "CI4FEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CI4FEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_nKFZ59l5PiClSiv-wVYt2e_jypXtFipE0" + } + }, + "playlistId": "OLAK5uy_nKFZ59l5PiClSiv-wVYt2e_jypXtFipE0" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CI4FEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIwFEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CI0FEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "CIwFEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIwFEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_nKFZ59l5PiClSiv-wVYt2e_jypXtFipE0" + } + }, + "playlistId": "OLAK5uy_nKFZ59l5PiClSiv-wVYt2e_jypXtFipE0" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CIwFEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CIoFEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CIsFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CIsFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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": "CIoFEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_nKFZ59l5PiClSiv-wVYt2e_jypXtFipE0" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CIoFEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIgFEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CIkFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CIkFEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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": "CIgFEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIcFEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X25LRlo1OWw1UGlDbFNpdi13Vll0MmVfanlwWHRGaXBFMA%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -2875,11 +4477,11 @@ } ] }, - "trackingParams": "CLUFEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIcFEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], - "trackingParams": "CLQFEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIYFEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "navigationEndpoint": { @@ -2892,7 +4494,7 @@ "browseId": "MPREb_9jsAP3C5OSC", "params": "ggMrGilPTEFLNXV5X25LRlo1OWw1UGlDbFNpdi13Vll0MmVfanlwWHRGaXBFMA%3D%3D" }, - "clickTrackingParams": "CLIFEKCzAhgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CIQFEKCzAhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "subtitle": { "runs": [ @@ -2936,7 +4538,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -2944,7 +4546,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CLMFEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", + "clickTrackingParams": "CIUFEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_nKFZ59l5PiClSiv-wVYt2e_jypXtFipE0" } @@ -2953,7 +4555,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CLMFEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CIUFEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -2978,7 +4580,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CMAFEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CJIFEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "title": { @@ -2994,13 +4596,13 @@ "browseId": "MPREb_9jsAP3C5OSC", "params": "ggMrGilPTEFLNXV5X25LRlo1OWw1UGlDbFNpdi13Vll0MmVfanlwWHRGaXBFMA%3D%3D" }, - "clickTrackingParams": "CLIFEKCzAhgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CIQFEKCzAhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "text": "- (Deluxe)" } ] }, - "trackingParams": "CLIFEKCzAhgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIQFEKCzAhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -3020,7 +4622,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CLAFEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CIIFEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_nHdqIgO1TNI8wr_GPvq1X7oUSMxvFU4Jw" @@ -3033,7 +4635,7 @@ } ] }, - "trackingParams": "CLAFEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIIFEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -3042,7 +4644,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CK8FEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CIEFEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_nHdqIgO1TNI8wr_GPvq1X7oUSMxvFU4Jw" @@ -3055,7 +4657,7 @@ } ] }, - "trackingParams": "CK8FEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIEFEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -3064,7 +4666,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CK0FEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CP8EEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -3078,15 +4680,21 @@ } ] }, - "trackingParams": "CK4FEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CIAFEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CK0FEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CP8EEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CP8EEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_nHdqIgO1TNI8wr_GPvq1X7oUSMxvFU4Jw" + } + }, "playlistId": "OLAK5uy_nHdqIgO1TNI8wr_GPvq1X7oUSMxvFU4Jw" } } @@ -3098,7 +4706,7 @@ } ] }, - "trackingParams": "CK0FEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CP8EEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -3107,7 +4715,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CKsFEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CP0EEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -3121,15 +4729,21 @@ } ] }, - "trackingParams": "CKwFEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CP4EEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CKsFEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CP0EEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CP0EEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_nHdqIgO1TNI8wr_GPvq1X7oUSMxvFU4Jw" + } + }, "playlistId": "OLAK5uy_nHdqIgO1TNI8wr_GPvq1X7oUSMxvFU4Jw" } } @@ -3141,7 +4755,7 @@ } ] }, - "trackingParams": "CKsFEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CP0EEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -3150,7 +4764,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CKkFEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CPsEEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -3158,7 +4772,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CKoFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CPwEEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -3171,13 +4785,13 @@ } ] }, - "trackingParams": "CKoFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPwEEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -3195,7 +4809,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -3203,7 +4817,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CKkFEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CPsEEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -3218,7 +4832,7 @@ } ] }, - "trackingParams": "CKkFEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPsEEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -3227,7 +4841,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CKcFEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CPkEEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -3235,7 +4849,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CKgFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CPoEEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -3248,7 +4862,7 @@ } ] }, - "trackingParams": "CKgFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPoEEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -3272,11 +4886,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CKcFEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPkEEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -3285,7 +4899,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CKYFEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CPgEEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X25IZHFJZ08xVE5JOHdyX0dQdnExWDdvVVNNeHZGVTRKdw%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -3298,11 +4912,11 @@ } ] }, - "trackingParams": "CKYFEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPgEEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], - "trackingParams": "CKUFEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPcEEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "navigationEndpoint": { @@ -3315,7 +4929,7 @@ "browseId": "MPREb_k3zSCIhuy8Z", "params": "ggMrGilPTEFLNXV5X25IZHFJZ08xVE5JOHdyX0dQdnExWDdvVVNNeHZGVTRKdw%3D%3D" }, - "clickTrackingParams": "CKMFEKCzAhgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CPUEEKCzAhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "subtitle": { "runs": [ @@ -3359,7 +4973,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -3367,7 +4981,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CKQFEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", + "clickTrackingParams": "CPYEEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_nHdqIgO1TNI8wr_GPvq1X7oUSMxvFU4Jw" } @@ -3376,7 +4990,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CKQFEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CPYEEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -3401,7 +5015,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CLEFEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CIMFEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "title": { @@ -3417,13 +5031,13 @@ "browseId": "MPREb_k3zSCIhuy8Z", "params": "ggMrGilPTEFLNXV5X25IZHFJZ08xVE5JOHdyX0dQdnExWDdvVVNNeHZGVTRKdw%3D%3D" }, - "clickTrackingParams": "CKMFEKCzAhgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CPUEEKCzAhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "text": "=" } ] }, - "trackingParams": "CKMFEKCzAhgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPUEEKCzAhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -3443,7 +5057,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CKEFEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CPMEEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_kwPPyWyXMc28XV-SsyhvhpfZm8E1DIxOY" @@ -3456,7 +5070,7 @@ } ] }, - "trackingParams": "CKEFEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPMEEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -3465,7 +5079,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CKAFEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CPIEEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_kwPPyWyXMc28XV-SsyhvhpfZm8E1DIxOY" @@ -3478,7 +5092,7 @@ } ] }, - "trackingParams": "CKAFEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPIEEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -3487,7 +5101,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CJ4FEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CPAEEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -3501,15 +5115,21 @@ } ] }, - "trackingParams": "CJ8FEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CPEEEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CJ4FEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CPAEEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CPAEEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_kwPPyWyXMc28XV-SsyhvhpfZm8E1DIxOY" + } + }, "playlistId": "OLAK5uy_kwPPyWyXMc28XV-SsyhvhpfZm8E1DIxOY" } } @@ -3521,7 +5141,7 @@ } ] }, - "trackingParams": "CJ4FEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPAEEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -3530,7 +5150,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CJwFEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CO4EEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -3544,15 +5164,21 @@ } ] }, - "trackingParams": "CJ0FEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CO8EEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CJwFEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CO4EEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CO4EEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_kwPPyWyXMc28XV-SsyhvhpfZm8E1DIxOY" + } + }, "playlistId": "OLAK5uy_kwPPyWyXMc28XV-SsyhvhpfZm8E1DIxOY" } } @@ -3564,7 +5190,7 @@ } ] }, - "trackingParams": "CJwFEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CO4EEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -3573,7 +5199,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CJoFEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "COwEEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -3581,7 +5207,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CJsFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CO0EEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -3594,13 +5220,13 @@ } ] }, - "trackingParams": "CJsFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CO0EEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -3618,7 +5244,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -3626,7 +5252,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CJoFEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "COwEEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -3641,7 +5267,7 @@ } ] }, - "trackingParams": "CJoFEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COwEEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -3650,7 +5276,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CJgFEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "COoEEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -3658,7 +5284,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CJkFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "COsEEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -3671,7 +5297,7 @@ } ] }, - "trackingParams": "CJkFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COsEEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -3695,11 +5321,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CJgFEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COoEEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -3708,7 +5334,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CJcFEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "COkEEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X2t3UFB5V3lYTWMyOFhWLVNzeWh2aHBmWm04RTFESXhPWQ%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -3721,11 +5347,11 @@ } ] }, - "trackingParams": "CJcFEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COkEEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], - "trackingParams": "CJYFEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COgEEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "navigationEndpoint": { @@ -3738,7 +5364,7 @@ "browseId": "MPREb_VIXO8xFh4IZ", "params": "ggMrGilPTEFLNXV5X2t3UFB5V3lYTWMyOFhWLVNzeWh2aHBmWm04RTFESXhPWQ%3D%3D" }, - "clickTrackingParams": "CJMFEKCzAhgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "COUEEKCzAhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "subtitle": { "runs": [ @@ -3764,7 +5390,7 @@ "icon": { "iconType": "MUSIC_EXPLICIT_BADGE" }, - "trackingParams": "CJQFEKHtAhgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COYEEKHtAhgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], @@ -3797,7 +5423,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -3805,7 +5431,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CJUFEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", + "clickTrackingParams": "COcEEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_kwPPyWyXMc28XV-SsyhvhpfZm8E1DIxOY" } @@ -3814,7 +5440,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CJUFEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "COcEEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -3839,7 +5465,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CKIFEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CPQEEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "title": { @@ -3855,13 +5481,13 @@ "browseId": "MPREb_VIXO8xFh4IZ", "params": "ggMrGilPTEFLNXV5X2t3UFB5V3lYTWMyOFhWLVNzeWh2aHBmWm04RTFESXhPWQ%3D%3D" }, - "clickTrackingParams": "CJMFEKCzAhgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "COUEEKCzAhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "text": "No.6 Collaborations Project" } ] }, - "trackingParams": "CJMFEKCzAhgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COUEEKCzAhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -3881,7 +5507,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CJEFEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "COMEEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_mizQEF9wXLFxAjGlDF83JskTg49IZ1Ito" @@ -3894,7 +5520,7 @@ } ] }, - "trackingParams": "CJEFEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COMEEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -3903,7 +5529,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CJAFEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "COIEEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_mizQEF9wXLFxAjGlDF83JskTg49IZ1Ito" @@ -3916,7 +5542,7 @@ } ] }, - "trackingParams": "CJAFEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COIEEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -3925,7 +5551,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CI4FEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "COAEEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -3939,15 +5565,21 @@ } ] }, - "trackingParams": "CI8FEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "COEEEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CI4FEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "COAEEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "COAEEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_mizQEF9wXLFxAjGlDF83JskTg49IZ1Ito" + } + }, "playlistId": "OLAK5uy_mizQEF9wXLFxAjGlDF83JskTg49IZ1Ito" } } @@ -3959,7 +5591,7 @@ } ] }, - "trackingParams": "CI4FEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COAEEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -3968,7 +5600,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CIwFEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CN4EEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -3982,15 +5614,21 @@ } ] }, - "trackingParams": "CI0FEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CN8EEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CIwFEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CN4EEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CN4EEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_mizQEF9wXLFxAjGlDF83JskTg49IZ1Ito" + } + }, "playlistId": "OLAK5uy_mizQEF9wXLFxAjGlDF83JskTg49IZ1Ito" } } @@ -4002,7 +5640,7 @@ } ] }, - "trackingParams": "CIwFEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CN4EEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -4011,7 +5649,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CIoFEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CNwEEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -4019,7 +5657,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CIsFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CN0EEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -4032,13 +5670,13 @@ } ] }, - "trackingParams": "CIsFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CN0EEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -4056,7 +5694,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -4064,7 +5702,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CIoFEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CNwEEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -4079,7 +5717,7 @@ } ] }, - "trackingParams": "CIoFEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CNwEEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -4088,7 +5726,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CIgFEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CNoEEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -4096,7 +5734,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CIkFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CNsEEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -4109,7 +5747,7 @@ } ] }, - "trackingParams": "CIkFEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CNsEEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -4133,11 +5771,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CIgFEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CNoEEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -4146,7 +5784,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CIcFEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CNkEEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X21pelFFRjl3WExGeEFqR2xERjgzSnNrVGc0OUlaMUl0bw%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -4159,11 +5797,11 @@ } ] }, - "trackingParams": "CIcFEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CNkEEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], - "trackingParams": "CIYFEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CNgEEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "navigationEndpoint": { @@ -4176,7 +5814,7 @@ "browseId": "MPREb_T5s950Swfdy", "params": "ggMrGilPTEFLNXV5X21pelFFRjl3WExGeEFqR2xERjgzSnNrVGc0OUlaMUl0bw%3D%3D" }, - "clickTrackingParams": "CIQFEKCzAhgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CNYEEKCzAhgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "subtitle": { "runs": [ @@ -4220,7 +5858,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -4228,7 +5866,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CIUFEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", + "clickTrackingParams": "CNcEEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_mizQEF9wXLFxAjGlDF83JskTg49IZ1Ito" } @@ -4237,7 +5875,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CIUFEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CNcEEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -4262,7 +5900,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CJIFEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "COQEEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "title": { @@ -4278,13 +5916,13 @@ "browseId": "MPREb_T5s950Swfdy", "params": "ggMrGilPTEFLNXV5X21pelFFRjl3WExGeEFqR2xERjgzSnNrVGc0OUlaMUl0bw%3D%3D" }, - "clickTrackingParams": "CIQFEKCzAhgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CNYEEKCzAhgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "text": "÷ (Deluxe)" } ] }, - "trackingParams": "CIQFEKCzAhgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CNYEEKCzAhgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -4304,7 +5942,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CIIFEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CNQEEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_nLYh3bXau7EV_lgxTQEFVcUo3OSkJ8Dy4" @@ -4317,7 +5955,7 @@ } ] }, - "trackingParams": "CIIFEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CNQEEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -4326,7 +5964,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CIEFEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CNMEEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_nLYh3bXau7EV_lgxTQEFVcUo3OSkJ8Dy4" @@ -4339,7 +5977,7 @@ } ] }, - "trackingParams": "CIEFEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CNMEEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -4348,7 +5986,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CP8EEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CNEEEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -4362,15 +6000,21 @@ } ] }, - "trackingParams": "CIAFEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CNIEEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CP8EEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CNEEEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNEEEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_nLYh3bXau7EV_lgxTQEFVcUo3OSkJ8Dy4" + } + }, "playlistId": "OLAK5uy_nLYh3bXau7EV_lgxTQEFVcUo3OSkJ8Dy4" } } @@ -4382,7 +6026,7 @@ } ] }, - "trackingParams": "CP8EEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CNEEEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -4391,7 +6035,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CP0EEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CM8EEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -4405,15 +6049,21 @@ } ] }, - "trackingParams": "CP4EEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CNAEEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CP0EEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CM8EEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CM8EEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_nLYh3bXau7EV_lgxTQEFVcUo3OSkJ8Dy4" + } + }, "playlistId": "OLAK5uy_nLYh3bXau7EV_lgxTQEFVcUo3OSkJ8Dy4" } } @@ -4425,7 +6075,7 @@ } ] }, - "trackingParams": "CP0EEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CM8EEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -4434,7 +6084,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CPsEEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CM0EEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -4442,7 +6092,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CPwEEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CM4EEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -4455,13 +6105,13 @@ } ] }, - "trackingParams": "CPwEEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CM4EEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -4479,7 +6129,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -4487,7 +6137,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CPsEEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CM0EEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -4502,7 +6152,7 @@ } ] }, - "trackingParams": "CPsEEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CM0EEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -4511,7 +6161,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CPkEEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CMsEEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -4519,7 +6169,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CPoEEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CMwEEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -4532,7 +6182,7 @@ } ] }, - "trackingParams": "CPoEEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CMwEEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -4556,11 +6206,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CPkEEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CMsEEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -4569,7 +6219,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CPgEEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CMoEEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X25MWWgzYlhhdTdFVl9sZ3hUUUVGVmNVbzNPU2tKOER5NA%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -4582,11 +6232,11 @@ } ] }, - "trackingParams": "CPgEEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CMoEEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], - "trackingParams": "CPcEEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CMkEEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "navigationEndpoint": { @@ -4599,7 +6249,7 @@ "browseId": "MPREb_FNeOTtNjbu3", "params": "ggMrGilPTEFLNXV5X25MWWgzYlhhdTdFVl9sZ3hUUUVGVmNVbzNPU2tKOER5NA%3D%3D" }, - "clickTrackingParams": "CPQEEKCzAhgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CMYEEKCzAhgHIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "subtitle": { "runs": [ @@ -4625,7 +6275,7 @@ "icon": { "iconType": "MUSIC_EXPLICIT_BADGE" }, - "trackingParams": "CPUEEKHtAhgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CMcEEKHtAhgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], @@ -4658,7 +6308,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -4666,7 +6316,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CPYEEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", + "clickTrackingParams": "CMgEEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_nLYh3bXau7EV_lgxTQEFVcUo3OSkJ8Dy4" } @@ -4675,7 +6325,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CPYEEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CMgEEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -4700,7 +6350,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CIMFEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CNUEEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "title": { @@ -4716,13 +6366,13 @@ "browseId": "MPREb_FNeOTtNjbu3", "params": "ggMrGilPTEFLNXV5X25MWWgzYlhhdTdFVl9sZ3hUUUVGVmNVbzNPU2tKOER5NA%3D%3D" }, - "clickTrackingParams": "CPQEEKCzAhgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CMYEEKCzAhgHIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "text": "Don't" } ] }, - "trackingParams": "CPQEEKCzAhgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CMYEEKCzAhgHIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -4742,7 +6392,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CPIEEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CMQEEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_lkFY4oZHG2FXKLKirsBIa3sff0ToSxLSY" @@ -4755,7 +6405,7 @@ } ] }, - "trackingParams": "CPIEEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CMQEEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -4764,7 +6414,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CPEEEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CMMEEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_lkFY4oZHG2FXKLKirsBIa3sff0ToSxLSY" @@ -4777,7 +6427,7 @@ } ] }, - "trackingParams": "CPEEEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CMMEEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -4786,7 +6436,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CO8EEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CMEEEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -4800,15 +6450,21 @@ } ] }, - "trackingParams": "CPAEEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CMIEEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CO8EEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CMEEEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMEEEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_lkFY4oZHG2FXKLKirsBIa3sff0ToSxLSY" + } + }, "playlistId": "OLAK5uy_lkFY4oZHG2FXKLKirsBIa3sff0ToSxLSY" } } @@ -4820,7 +6476,7 @@ } ] }, - "trackingParams": "CO8EEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CMEEEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -4829,7 +6485,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CO0EEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CL8EEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -4843,15 +6499,21 @@ } ] }, - "trackingParams": "CO4EEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CMAEEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CO0EEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CL8EEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CL8EEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_lkFY4oZHG2FXKLKirsBIa3sff0ToSxLSY" + } + }, "playlistId": "OLAK5uy_lkFY4oZHG2FXKLKirsBIa3sff0ToSxLSY" } } @@ -4863,7 +6525,7 @@ } ] }, - "trackingParams": "CO0EEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CL8EEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -4872,7 +6534,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "COsEEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CL0EEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -4880,7 +6542,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "COwEEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CL4EEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -4893,13 +6555,13 @@ } ] }, - "trackingParams": "COwEEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CL4EEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -4917,7 +6579,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -4925,7 +6587,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "COsEEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CL0EEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -4940,7 +6602,7 @@ } ] }, - "trackingParams": "COsEEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CL0EEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -4949,7 +6611,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "COkEEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLsEEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -4957,7 +6619,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "COoEEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLwEEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -4970,7 +6632,7 @@ } ] }, - "trackingParams": "COoEEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLwEEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -4994,11 +6656,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "COkEEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLsEEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -5007,7 +6669,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "COgEEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLoEEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X2xrRlk0b1pIRzJGWEtMS2lyc0JJYTNzZmYwVG9TeExTWQ%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -5020,11 +6682,11 @@ } ] }, - "trackingParams": "COgEEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLoEEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], - "trackingParams": "COcEEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLkEEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "navigationEndpoint": { @@ -5037,7 +6699,7 @@ "browseId": "MPREb_A4r9EfLZzYN", "params": "ggMrGilPTEFLNXV5X2xrRlk0b1pIRzJGWEtMS2lyc0JJYTNzZmYwVG9TeExTWQ%3D%3D" }, - "clickTrackingParams": "COUEEKCzAhgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CLcEEKCzAhgIIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "subtitle": { "runs": [ @@ -5081,7 +6743,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -5089,7 +6751,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "COYEEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", + "clickTrackingParams": "CLgEEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_lkFY4oZHG2FXKLKirsBIa3sff0ToSxLSY" } @@ -5098,7 +6760,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "COYEEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CLgEEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -5123,7 +6785,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CPMEEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CMUEEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "title": { @@ -5139,13 +6801,13 @@ "browseId": "MPREb_A4r9EfLZzYN", "params": "ggMrGilPTEFLNXV5X2xrRlk0b1pIRzJGWEtMS2lyc0JJYTNzZmYwVG9TeExTWQ%3D%3D" }, - "clickTrackingParams": "COUEEKCzAhgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CLcEEKCzAhgIIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "text": "x (Deluxe Edition)" } ] }, - "trackingParams": "COUEEKCzAhgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLcEEKCzAhgIIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -5165,7 +6827,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "COMEEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLUEEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_l2X7oT-Tsacd9_S4HKZ_I_LfNj6kyXs70" @@ -5178,7 +6840,7 @@ } ] }, - "trackingParams": "COMEEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLUEEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -5187,7 +6849,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "COIEEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLQEEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_l2X7oT-Tsacd9_S4HKZ_I_LfNj6kyXs70" @@ -5200,7 +6862,7 @@ } ] }, - "trackingParams": "COIEEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLQEEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -5209,7 +6871,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "COAEEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLIEEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -5223,15 +6885,21 @@ } ] }, - "trackingParams": "COEEEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CLMEEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "COAEEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CLIEEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CLIEEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_l2X7oT-Tsacd9_S4HKZ_I_LfNj6kyXs70" + } + }, "playlistId": "OLAK5uy_l2X7oT-Tsacd9_S4HKZ_I_LfNj6kyXs70" } } @@ -5243,7 +6911,7 @@ } ] }, - "trackingParams": "COAEEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLIEEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -5252,7 +6920,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CN4EEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLAEEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -5266,15 +6934,21 @@ } ] }, - "trackingParams": "CN8EEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CLEEEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CN4EEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CLAEEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CLAEEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_l2X7oT-Tsacd9_S4HKZ_I_LfNj6kyXs70" + } + }, "playlistId": "OLAK5uy_l2X7oT-Tsacd9_S4HKZ_I_LfNj6kyXs70" } } @@ -5286,7 +6960,7 @@ } ] }, - "trackingParams": "CN4EEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLAEEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -5295,7 +6969,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CNwEEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CK4EEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -5303,7 +6977,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CN0EEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CK8EEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -5316,13 +6990,13 @@ } ] }, - "trackingParams": "CN0EEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CK8EEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -5340,7 +7014,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -5348,7 +7022,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CNwEEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CK4EEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -5363,7 +7037,7 @@ } ] }, - "trackingParams": "CNwEEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CK4EEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -5372,7 +7046,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CNoEEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CKwEEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -5380,7 +7054,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CNsEEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CK0EEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -5393,7 +7067,7 @@ } ] }, - "trackingParams": "CNsEEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CK0EEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -5417,11 +7091,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CNoEEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CKwEEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -5430,7 +7104,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CNkEEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CKsEEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X2wyWDdvVC1Uc2FjZDlfUzRIS1pfSV9MZk5qNmt5WHM3MA%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -5443,11 +7117,11 @@ } ] }, - "trackingParams": "CNkEEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CKsEEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], - "trackingParams": "CNgEEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CKoEEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "navigationEndpoint": { @@ -5460,7 +7134,7 @@ "browseId": "MPREb_KYP1Wsy4NQn", "params": "ggMrGilPTEFLNXV5X2wyWDdvVC1Uc2FjZDlfUzRIS1pfSV9MZk5qNmt5WHM3MA%3D%3D" }, - "clickTrackingParams": "CNUEEKCzAhgGIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CKcEEKCzAhgJIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "subtitle": { "runs": [ @@ -5486,7 +7160,7 @@ "icon": { "iconType": "MUSIC_EXPLICIT_BADGE" }, - "trackingParams": "CNYEEKHtAhgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CKgEEKHtAhgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], @@ -5519,7 +7193,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -5527,7 +7201,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CNcEEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", + "clickTrackingParams": "CKkEEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_l2X7oT-Tsacd9_S4HKZ_I_LfNj6kyXs70" } @@ -5536,7 +7210,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CNcEEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CKkEEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -5561,7 +7235,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "COQEEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CLYEEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "title": { @@ -5577,1297 +7251,13 @@ "browseId": "MPREb_KYP1Wsy4NQn", "params": "ggMrGilPTEFLNXV5X2wyWDdvVC1Uc2FjZDlfUzRIS1pfSV9MZk5qNmt5WHM3MA%3D%3D" }, - "clickTrackingParams": "CNUEEKCzAhgGIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CKcEEKCzAhgJIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "text": "+" } ] }, - "trackingParams": "CNUEEKCzAhgGIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "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": "CNMEEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_lTt5OEFrNFprf9dvMg4zqzfNAWOYfqvEE" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CNMEEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CNIEEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_lTt5OEFrNFprf9dvMg4zqzfNAWOYfqvEE" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CNIEEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CNAEEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CNEEEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "CNAEEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_lTt5OEFrNFprf9dvMg4zqzfNAWOYfqvEE" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CNAEEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CM4EEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CM8EEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "CM4EEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_lTt5OEFrNFprf9dvMg4zqzfNAWOYfqvEE" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CM4EEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CMwEEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CM0EEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CM0EEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CMwEEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_lTt5OEFrNFprf9dvMg4zqzfNAWOYfqvEE" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CMwEEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CMoEEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CMsEEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CMsEEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "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": "CMoEEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CMkEEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2xUdDVPRUZyTkZwcmY5ZHZNZzR6cXpmTkFXT1lmcXZFRQ%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CMkEEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr" - } - } - ], - "trackingParams": "CMgEEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_rglJNvRZR9v", - "params": "ggMrGilPTEFLNXV5X2xUdDVPRUZyTkZwcmY5ZHZNZzR6cXpmTkFXT1lmcXZFRQ%3D%3D" - }, - "clickTrackingParams": "CMUEEKCzAhgHIhMI59zswMPz_gIVcOARCB3yMAhr" - }, - "subtitle": { - "runs": [ - { - "text": "Album" - }, - { - "text": " • " - }, - { - "text": "2011" - } - ] - }, - "subtitleBadges": [ - { - "musicInlineBadgeRenderer": { - "accessibilityData": { - "accessibilityData": { - "label": "Explicit" - } - }, - "icon": { - "iconType": "MUSIC_EXPLICIT_BADGE" - }, - "trackingParams": "CMYEEKHtAhgAIhMI59zswMPz_gIVcOARCB3yMAhr" - } - } - ], - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause No. 5 Collaborations Project" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play No. 5 Collaborations Project" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CMcEEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_lTt5OEFrNFprf9dvMg4zqzfNAWOYfqvEE" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CMcEEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "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/7wdqo8xOHm9VGruKlzukzOuLIVAl3QzMqldt0itaY_FsGv5al1zcs9tpKIAJZaDQbErO2bmaurbLsT6V=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/7wdqo8xOHm9VGruKlzukzOuLIVAl3QzMqldt0itaY_FsGv5al1zcs9tpKIAJZaDQbErO2bmaurbLsT6V=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CNQEEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_rglJNvRZR9v", - "params": "ggMrGilPTEFLNXV5X2xUdDVPRUZyTkZwcmY5ZHZNZzR6cXpmTkFXT1lmcXZFRQ%3D%3D" - }, - "clickTrackingParams": "CMUEEKCzAhgHIhMI59zswMPz_gIVcOARCB3yMAhr" - }, - "text": "No. 5 Collaborations Project" - } - ] - }, - "trackingParams": "CMUEEKCzAhgHIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "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": "CMMEEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_kHf-z-vqi54t7BY975E5ucnP4IkQHaUwo" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CMMEEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CMIEEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_kHf-z-vqi54t7BY975E5ucnP4IkQHaUwo" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CMIEEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CMAEEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CMEEEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "CMAEEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_kHf-z-vqi54t7BY975E5ucnP4IkQHaUwo" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CMAEEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CL4EEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CL8EEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "CL4EEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_kHf-z-vqi54t7BY975E5ucnP4IkQHaUwo" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CL4EEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CLwEEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CL0EEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CL0EEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CLwEEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_kHf-z-vqi54t7BY975E5ucnP4IkQHaUwo" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CLwEEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CLoEEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CLsEEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CLsEEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "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": "CLoEEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CLkEEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2tIZi16LXZxaTU0dDdCWTk3NUU1dWNuUDRJa1FIYVV3bw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CLkEEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr" - } - } - ], - "trackingParams": "CLgEEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_aRZymyCfxCE", - "params": "ggMrGilPTEFLNXV5X2tIZi16LXZxaTU0dDdCWTk3NUU1dWNuUDRJa1FIYVV3bw%3D%3D" - }, - "clickTrackingParams": "CLYEEKCzAhgIIhMI59zswMPz_gIVcOARCB3yMAhr" - }, - "subtitle": { - "runs": [ - { - "text": "EP" - }, - { - "text": " • " - }, - { - "text": "2010" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Songs I Wrote with Amy" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Songs I Wrote with Amy" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CLcEEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_kHf-z-vqi54t7BY975E5ucnP4IkQHaUwo" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CLcEEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "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/5J-U6RzheXK9QqZBMFJG_EFzo-P_8b-RrD987IWQ8_EmyvvDjdk92OU2u0xsTrqnbCH4XkLGN2VWL5pWdg=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/5J-U6RzheXK9QqZBMFJG_EFzo-P_8b-RrD987IWQ8_EmyvvDjdk92OU2u0xsTrqnbCH4XkLGN2VWL5pWdg=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CMQEEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_aRZymyCfxCE", - "params": "ggMrGilPTEFLNXV5X2tIZi16LXZxaTU0dDdCWTk3NUU1dWNuUDRJa1FIYVV3bw%3D%3D" - }, - "clickTrackingParams": "CLYEEKCzAhgIIhMI59zswMPz_gIVcOARCB3yMAhr" - }, - "text": "Songs I Wrote with Amy" - } - ] - }, - "trackingParams": "CLYEEKCzAhgIIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "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": "CLQEEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_lEeZ9Bmb-6nN4v8UgTzja_FQhDKKpDWSk" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CLQEEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CLMEEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_lEeZ9Bmb-6nN4v8UgTzja_FQhDKKpDWSk" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CLMEEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CLEEEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CLIEEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "CLEEEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_lEeZ9Bmb-6nN4v8UgTzja_FQhDKKpDWSk" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CLEEEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CK8EEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CLAEEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "CK8EEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_lEeZ9Bmb-6nN4v8UgTzja_FQhDKKpDWSk" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CK8EEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CK0EEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CK4EEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CK4EEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CK0EEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_lEeZ9Bmb-6nN4v8UgTzja_FQhDKKpDWSk" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CK0EEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CKsEEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CKwEEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CKwEEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "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": "CKsEEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CKoEEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2xFZVo5Qm1iLTZuTjR2OFVnVHpqYV9GUWhES0twRFdTaw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CKoEEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr" - } - } - ], - "trackingParams": "CKkEEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_TZyh5Fu0Iel", - "params": "ggMrGilPTEFLNXV5X2xFZVo5Qm1iLTZuTjR2OFVnVHpqYV9GUWhES0twRFdTaw%3D%3D" - }, - "clickTrackingParams": "CKcEEKCzAhgJIhMI59zswMPz_gIVcOARCB3yMAhr" - }, - "subtitle": { - "runs": [ - { - "text": "Album" - }, - { - "text": " • " - }, - { - "text": "2010" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Loose Change" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Loose Change" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CKgEEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_lEeZ9Bmb-6nN4v8UgTzja_FQhDKKpDWSk" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CKgEEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "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/xESC6YGPy6Jj3LES1NuhyAWBxVJrDgWL_pViNBZ0wPYgTNzmDSlNt9zeSLLgoc82mD7SKTUswO6oAZf3=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/xESC6YGPy6Jj3LES1NuhyAWBxVJrDgWL_pViNBZ0wPYgTNzmDSlNt9zeSLLgoc82mD7SKTUswO6oAZf3=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CLUEEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_TZyh5Fu0Iel", - "params": "ggMrGilPTEFLNXV5X2xFZVo5Qm1iLTZuTjR2OFVnVHpqYV9GUWhES0twRFdTaw%3D%3D" - }, - "clickTrackingParams": "CKcEEKCzAhgJIhMI59zswMPz_gIVcOARCB3yMAhr" - }, - "text": "Loose Change" - } - ] - }, - "trackingParams": "CKcEEKCzAhgJIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CKcEEKCzAhgJIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], @@ -6890,13 +7280,13 @@ "browseEndpoint": { "browseEndpointContextSupportedConfigs": { "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" + "pageType": "MUSIC_PAGE_TYPE_ARTIST_DISCOGRAPHY" } }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ", - "params": "6gPjAUdxY0JXcGdCQ3BVQkNpUjVkRjl3WVdkbFgzTnVZWEJ6YUc5MFgyMTFjMmxqWDNCaFoyVmZjbVZuYVc5dVlXd1NIMVYzVERSaVRXbENlRmxGV0hkRFJFbFBZM2h6Vms1NlR6QTNjRFZuVW1jYVRBQUFaVzRBQVZWVEFBRkVSUUFCQUVaRmJYVnphV05mWkdWMFlXbHNYMkZ5ZEdsemRBQUJBVU1BQUFFQUFRQUFBUUVBVlVOc2JWaFFabUZaYUZoUFdYTk9ibDlSVlhsb1pWZFJBQUh5MnJPcUNnWkFBVWdBVUJB" + "browseId": "MPADUClmXPfaYhXOYsNn_QUyheWQ", + "params": "ggMIegYIARoCAQI%3D" }, - "clickTrackingParams": "CMIFEOvLBSITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "clickTrackingParams": "CMMFEOvLBSITCOqe8O_6ookDFePQQgUd5Wcmaw==" }, "style": "STYLE_TEXT", "text": { @@ -6906,7 +7296,7 @@ } ] }, - "trackingParams": "CMIFEOvLBSITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CMMFEOvLBSITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "title": { @@ -6916,23 +7306,23 @@ "browseEndpoint": { "browseEndpointContextSupportedConfigs": { "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" + "pageType": "MUSIC_PAGE_TYPE_ARTIST_DISCOGRAPHY" } }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ", - "params": "6gPjAUdxY0JXcGdCQ3BVQkNpUjVkRjl3WVdkbFgzTnVZWEJ6YUc5MFgyMTFjMmxqWDNCaFoyVmZjbVZuYVc5dVlXd1NIMVYzVERSaVRXbENlRmxGV0hkRFJFbFBZM2h6Vms1NlR6QTNjRFZuVW1jYVRBQUFaVzRBQVZWVEFBRkVSUUFCQUVaRmJYVnphV05mWkdWMFlXbHNYMkZ5ZEdsemRBQUJBVU1BQUFFQUFRQUFBUUVBVlVOc2JWaFFabUZaYUZoUFdYTk9ibDlSVlhsb1pWZFJBQUh5MnJPcUNnWkFBVWdBVUJB" + "browseId": "MPADUClmXPfaYhXOYsNn_QUyheWQ", + "params": "ggMIegYIARoCAQI%3D" }, - "clickTrackingParams": "CMEFEIi8BCITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "clickTrackingParams": "CMIFEIi8BCITCOqe8O_6ookDFePQQgUd5Wcmaw==" }, "text": "Albums" } ] }, - "trackingParams": "CMEFEIi8BCITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CMIFEIi8BCITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "itemSize": "COLLECTION_STYLE_ITEM_SIZE_MEDIUM", - "trackingParams": "CKYEEKGzAhgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CKYEEKGzAhgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -6955,10 +7345,10 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CKIEEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CKIEEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_nBWNER9LUem1mBokVrhh3nVmlSNUqcSng" + "playlistId": "OLAK5uy_lfjJl4VPu5W7WZ6lfR13Sqqfo3j9xc_Xc" } }, "text": { @@ -6968,7 +7358,7 @@ } ] }, - "trackingParams": "CKIEEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CKIEEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -6977,10 +7367,10 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CKEEEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CKEEEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_nBWNER9LUem1mBokVrhh3nVmlSNUqcSng" + "playlistId": "RDAMPLOLAK5uy_lfjJl4VPu5W7WZ6lfR13Sqqfo3j9xc_Xc" } }, "text": { @@ -6990,7 +7380,7 @@ } ] }, - "trackingParams": "CKEEEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CKEEEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -6999,7 +7389,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CJ8EEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CJ8EEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -7013,16 +7403,22 @@ } ] }, - "trackingParams": "CKAEEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CKAEEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CJ8EEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CJ8EEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { - "playlistId": "OLAK5uy_nBWNER9LUem1mBokVrhh3nVmlSNUqcSng" + "onEmptyQueue": { + "clickTrackingParams": "CJ8EEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_lfjJl4VPu5W7WZ6lfR13Sqqfo3j9xc_Xc" + } + }, + "playlistId": "OLAK5uy_lfjJl4VPu5W7WZ6lfR13Sqqfo3j9xc_Xc" } } }, @@ -7033,7 +7429,7 @@ } ] }, - "trackingParams": "CJ8EEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CJ8EEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -7042,7 +7438,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CJ0EEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CJ0EEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -7056,16 +7452,22 @@ } ] }, - "trackingParams": "CJ4EEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CJ4EEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CJ0EEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CJ0EEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { - "playlistId": "OLAK5uy_nBWNER9LUem1mBokVrhh3nVmlSNUqcSng" + "onEmptyQueue": { + "clickTrackingParams": "CJ0EEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_lfjJl4VPu5W7WZ6lfR13Sqqfo3j9xc_Xc" + } + }, + "playlistId": "OLAK5uy_lfjJl4VPu5W7WZ6lfR13Sqqfo3j9xc_Xc" } } }, @@ -7076,7 +7478,7 @@ } ] }, - "trackingParams": "CJ0EEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CJ0EEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -7085,7 +7487,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CJsEEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CJsEEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -7093,7 +7495,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CJwEEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CJwEEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -7106,13 +7508,13 @@ } ] }, - "trackingParams": "CJwEEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CJwEEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -7130,7 +7532,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -7138,11 +7540,11 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CJsEEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CJsEEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "likeEndpoint": { "status": "INDIFFERENT", "target": { - "playlistId": "OLAK5uy_nBWNER9LUem1mBokVrhh3nVmlSNUqcSng" + "playlistId": "OLAK5uy_lfjJl4VPu5W7WZ6lfR13Sqqfo3j9xc_Xc" } } }, @@ -7153,7 +7555,7 @@ } ] }, - "trackingParams": "CJsEEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CJsEEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -7162,7 +7564,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CJkEEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CJkEEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -7170,7 +7572,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CJoEEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CJoEEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -7183,7 +7585,7 @@ } ] }, - "trackingParams": "CJoEEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CJoEEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -7207,11 +7609,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CJkEEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CJkEEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -7220,7 +7622,436 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CJgEEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CJgEEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2xmakpsNFZQdTVXN1daNmxmUjEzU3FxZm8zajl4Y19YYw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJgEEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + } + ], + "trackingParams": "CJcEEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_J3TRP3oprCB", + "params": "ggMrGilPTEFLNXV5X2xmakpsNFZQdTVXN1daNmxmUjEzU3FxZm8zajl4Y19YYw%3D%3D" + }, + "clickTrackingParams": "CJUEEKCzAhgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "subtitle": { + "runs": [ + { + "text": "2023" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause A Beautiful Game" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play A Beautiful Game" + } + }, + "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": "CJYEEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_lfjJl4VPu5W7WZ6lfR13Sqqfo3j9xc_Xc" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CJYEEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "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/N8puXGTJbxb4YyujbLTkmomBQVH1MrpQMwSR-wg3U6535UAckbR4Hu_5mTiNs4eEC-UIP6dds3cUzBPMdA=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/N8puXGTJbxb4YyujbLTkmomBQVH1MrpQMwSR-wg3U6535UAckbR4Hu_5mTiNs4eEC-UIP6dds3cUzBPMdA=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CKMEEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_J3TRP3oprCB", + "params": "ggMrGilPTEFLNXV5X2xmakpsNFZQdTVXN1daNmxmUjEzU3FxZm8zajl4Y19YYw%3D%3D" + }, + "clickTrackingParams": "CJUEEKCzAhgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "text": "A Beautiful Game" + } + ] + }, + "trackingParams": "CJUEEKCzAhgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "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": "CJMEEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_nBWNER9LUem1mBokVrhh3nVmlSNUqcSng" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CJMEEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJIEEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_nBWNER9LUem1mBokVrhh3nVmlSNUqcSng" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CJIEEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJAEEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CJEEEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "CJAEEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJAEEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_nBWNER9LUem1mBokVrhh3nVmlSNUqcSng" + } + }, + "playlistId": "OLAK5uy_nBWNER9LUem1mBokVrhh3nVmlSNUqcSng" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CJAEEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI4EEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CI8EEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "CI4EEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CI4EEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_nBWNER9LUem1mBokVrhh3nVmlSNUqcSng" + } + }, + "playlistId": "OLAK5uy_nBWNER9LUem1mBokVrhh3nVmlSNUqcSng" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CI4EEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CIwEEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CI0EEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CI0EEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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": "CIwEEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_nBWNER9LUem1mBokVrhh3nVmlSNUqcSng" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CIwEEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIoEEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CIsEEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CIsEEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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": "CIoEEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIkEEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X25CV05FUjlMVWVtMW1Cb2tWcmhoM25WbWxTTlVxY1NuZw%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -7233,11 +8064,11 @@ } ] }, - "trackingParams": "CJgEEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIkEEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], - "trackingParams": "CJcEEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIgEEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "navigationEndpoint": { @@ -7250,7 +8081,7 @@ "browseId": "MPREb_ZkVjx6hEPfJ", "params": "ggMrGilPTEFLNXV5X25CV05FUjlMVWVtMW1Cb2tWcmhoM25WbWxTTlVxY1NuZw%3D%3D" }, - "clickTrackingParams": "CJUEEKCzAhgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CIYEEKCzAhgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "subtitle": { "runs": [ @@ -7288,7 +8119,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -7296,7 +8127,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CJYEEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", + "clickTrackingParams": "CIcEEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_nBWNER9LUem1mBokVrhh3nVmlSNUqcSng" } @@ -7305,7 +8136,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CJYEEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CIcEEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -7330,7 +8161,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CKMEEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CJQEEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "title": { @@ -7346,13 +8177,13 @@ "browseId": "MPREb_ZkVjx6hEPfJ", "params": "ggMrGilPTEFLNXV5X25CV05FUjlMVWVtMW1Cb2tWcmhoM25WbWxTTlVxY1NuZw%3D%3D" }, - "clickTrackingParams": "CJUEEKCzAhgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CIYEEKCzAhgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "text": "Life Goes On (feat. Luke Combs)" } ] }, - "trackingParams": "CJUEEKCzAhgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIYEEKCzAhgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -7372,7 +8203,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CJMEEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CIQEEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_nXWSLX0uaRYbLT7G4CPyYV1RdTwUqjO_o" @@ -7385,7 +8216,7 @@ } ] }, - "trackingParams": "CJMEEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIQEEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -7394,7 +8225,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CJIEEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CIMEEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_nXWSLX0uaRYbLT7G4CPyYV1RdTwUqjO_o" @@ -7407,7 +8238,7 @@ } ] }, - "trackingParams": "CJIEEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIMEEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -7416,7 +8247,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CJAEEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CIEEEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -7430,15 +8261,21 @@ } ] }, - "trackingParams": "CJEEEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CIIEEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CJAEEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CIEEEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIEEEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_nXWSLX0uaRYbLT7G4CPyYV1RdTwUqjO_o" + } + }, "playlistId": "OLAK5uy_nXWSLX0uaRYbLT7G4CPyYV1RdTwUqjO_o" } } @@ -7450,7 +8287,7 @@ } ] }, - "trackingParams": "CJAEEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIEEEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -7459,7 +8296,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CI4EEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CP8DEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -7473,15 +8310,21 @@ } ] }, - "trackingParams": "CI8EEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CIAEEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CI4EEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CP8DEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CP8DEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_nXWSLX0uaRYbLT7G4CPyYV1RdTwUqjO_o" + } + }, "playlistId": "OLAK5uy_nXWSLX0uaRYbLT7G4CPyYV1RdTwUqjO_o" } } @@ -7493,7 +8336,7 @@ } ] }, - "trackingParams": "CI4EEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CP8DEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -7502,7 +8345,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CIwEEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CP0DEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -7510,7 +8353,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CI0EEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CP4DEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -7523,13 +8366,13 @@ } ] }, - "trackingParams": "CI0EEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CP4DEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -7547,7 +8390,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -7555,7 +8398,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CIwEEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CP0DEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -7570,7 +8413,7 @@ } ] }, - "trackingParams": "CIwEEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CP0DEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -7579,7 +8422,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CIoEEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CPsDEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -7587,7 +8430,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CIsEEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CPwDEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -7600,7 +8443,7 @@ } ] }, - "trackingParams": "CIsEEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPwDEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -7624,11 +8467,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CIoEEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPsDEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -7637,7 +8480,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CIkEEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CPoDEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X25YV1NMWDB1YVJZYkxUN0c0Q1B5WVYxUmRUd1Vxak9fbw%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -7650,11 +8493,11 @@ } ] }, - "trackingParams": "CIkEEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPoDEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], - "trackingParams": "CIgEEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPkDEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "navigationEndpoint": { @@ -7667,7 +8510,7 @@ "browseId": "MPREb_WcJCE3syWlv", "params": "ggMrGilPTEFLNXV5X25YV1NMWDB1YVJZYkxUN0c0Q1B5WVYxUmRUd1Vxak9fbw%3D%3D" }, - "clickTrackingParams": "CIYEEKCzAhgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CPcDEKCzAhgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "subtitle": { "runs": [ @@ -7705,7 +8548,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -7713,7 +8556,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CIcEEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", + "clickTrackingParams": "CPgDEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_nXWSLX0uaRYbLT7G4CPyYV1RdTwUqjO_o" } @@ -7722,7 +8565,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CIcEEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CPgDEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -7747,7 +8590,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CJQEEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CIUEEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "title": { @@ -7763,13 +8606,13 @@ "browseId": "MPREb_WcJCE3syWlv", "params": "ggMrGilPTEFLNXV5X25YV1NMWDB1YVJZYkxUN0c0Q1B5WVYxUmRUd1Vxak9fbw%3D%3D" }, - "clickTrackingParams": "CIYEEKCzAhgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CPcDEKCzAhgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "text": "Boat" } ] }, - "trackingParams": "CIYEEKCzAhgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPcDEKCzAhgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -7789,7 +8632,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CIQEEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CPUDEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_lrsEqVe8-eymLW_7L1ZBF0tuxQx-wFAcg" @@ -7802,7 +8645,7 @@ } ] }, - "trackingParams": "CIQEEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPUDEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -7811,7 +8654,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CIMEEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CPQDEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_lrsEqVe8-eymLW_7L1ZBF0tuxQx-wFAcg" @@ -7824,7 +8667,7 @@ } ] }, - "trackingParams": "CIMEEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPQDEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -7833,7 +8676,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CIEEEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CPIDEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -7847,15 +8690,21 @@ } ] }, - "trackingParams": "CIIEEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CPMDEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CIEEEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CPIDEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CPIDEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_lrsEqVe8-eymLW_7L1ZBF0tuxQx-wFAcg" + } + }, "playlistId": "OLAK5uy_lrsEqVe8-eymLW_7L1ZBF0tuxQx-wFAcg" } } @@ -7867,7 +8716,7 @@ } ] }, - "trackingParams": "CIEEEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPIDEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -7876,7 +8725,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CP8DEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CPADEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -7890,15 +8739,21 @@ } ] }, - "trackingParams": "CIAEEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CPEDEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CP8DEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CPADEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CPADEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_lrsEqVe8-eymLW_7L1ZBF0tuxQx-wFAcg" + } + }, "playlistId": "OLAK5uy_lrsEqVe8-eymLW_7L1ZBF0tuxQx-wFAcg" } } @@ -7910,7 +8765,7 @@ } ] }, - "trackingParams": "CP8DEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPADEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -7919,7 +8774,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CP0DEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CO4DEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -7927,7 +8782,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CP4DEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CO8DEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -7940,13 +8795,13 @@ } ] }, - "trackingParams": "CP4DEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CO8DEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -7964,7 +8819,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -7972,7 +8827,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CP0DEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CO4DEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -7987,7 +8842,7 @@ } ] }, - "trackingParams": "CP0DEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CO4DEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -7996,7 +8851,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CPsDEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "COwDEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -8004,7 +8859,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CPwDEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CO0DEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -8017,7 +8872,7 @@ } ] }, - "trackingParams": "CPwDEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CO0DEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -8041,11 +8896,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CPsDEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COwDEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -8054,7 +8909,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CPoDEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "COsDEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X2xyc0VxVmU4LWV5bUxXXzdMMVpCRjB0dXhReC13RkFjZw%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -8067,11 +8922,11 @@ } ] }, - "trackingParams": "CPoDEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COsDEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], - "trackingParams": "CPkDEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COoDEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "navigationEndpoint": { @@ -8084,7 +8939,7 @@ "browseId": "MPREb_g9c75ZTnHKo", "params": "ggMrGilPTEFLNXV5X2xyc0VxVmU4LWV5bUxXXzdMMVpCRjB0dXhReC13RkFjZw%3D%3D" }, - "clickTrackingParams": "CPcDEKCzAhgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "COgDEKCzAhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "subtitle": { "runs": [ @@ -8122,7 +8977,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -8130,7 +8985,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CPgDEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", + "clickTrackingParams": "COkDEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_lrsEqVe8-eymLW_7L1ZBF0tuxQx-wFAcg" } @@ -8139,7 +8994,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CPgDEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "COkDEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -8164,7 +9019,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CIUEEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CPYDEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "title": { @@ -8180,13 +9035,13 @@ "browseId": "MPREb_g9c75ZTnHKo", "params": "ggMrGilPTEFLNXV5X2xyc0VxVmU4LWV5bUxXXzdMMVpCRjB0dXhReC13RkFjZw%3D%3D" }, - "clickTrackingParams": "CPcDEKCzAhgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "COgDEKCzAhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "text": "Eyes Closed (Piano Version)" } ] }, - "trackingParams": "CPcDEKCzAhgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COgDEKCzAhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -8206,7 +9061,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CPUDEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "COYDEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_kXQcBeosMlwt7DncpHfQnFpiOSsF86Jgg" @@ -8219,7 +9074,7 @@ } ] }, - "trackingParams": "CPUDEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COYDEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -8228,7 +9083,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CPQDEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "COUDEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_kXQcBeosMlwt7DncpHfQnFpiOSsF86Jgg" @@ -8241,7 +9096,7 @@ } ] }, - "trackingParams": "CPQDEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COUDEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -8250,7 +9105,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CPIDEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "COMDEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -8264,15 +9119,21 @@ } ] }, - "trackingParams": "CPMDEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "COQDEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CPIDEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "COMDEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "COMDEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_kXQcBeosMlwt7DncpHfQnFpiOSsF86Jgg" + } + }, "playlistId": "OLAK5uy_kXQcBeosMlwt7DncpHfQnFpiOSsF86Jgg" } } @@ -8284,7 +9145,7 @@ } ] }, - "trackingParams": "CPIDEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COMDEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -8293,7 +9154,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CPADEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "COEDEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -8307,15 +9168,21 @@ } ] }, - "trackingParams": "CPEDEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "COIDEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CPADEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "COEDEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "COEDEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_kXQcBeosMlwt7DncpHfQnFpiOSsF86Jgg" + } + }, "playlistId": "OLAK5uy_kXQcBeosMlwt7DncpHfQnFpiOSsF86Jgg" } } @@ -8327,7 +9194,7 @@ } ] }, - "trackingParams": "CPADEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COEDEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -8336,7 +9203,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CO4DEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CN8DEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -8344,7 +9211,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CO8DEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "COADEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -8357,13 +9224,13 @@ } ] }, - "trackingParams": "CO8DEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COADEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -8381,7 +9248,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -8389,7 +9256,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CO4DEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CN8DEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -8404,7 +9271,7 @@ } ] }, - "trackingParams": "CO4DEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CN8DEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -8413,7 +9280,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "COwDEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CN0DEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -8421,7 +9288,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CO0DEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CN4DEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -8434,7 +9301,7 @@ } ] }, - "trackingParams": "CO0DEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CN4DEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -8458,11 +9325,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "COwDEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CN0DEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -8471,7 +9338,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "COsDEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CNwDEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X2tYUWNCZW9zTWx3dDdEbmNwSGZRbkZwaU9Tc0Y4NkpnZw%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -8484,11 +9351,11 @@ } ] }, - "trackingParams": "COsDEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CNwDEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], - "trackingParams": "COoDEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CNsDEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "navigationEndpoint": { @@ -8501,7 +9368,7 @@ "browseId": "MPREb_CrQXpRc2xsH", "params": "ggMrGilPTEFLNXV5X2tYUWNCZW9zTWx3dDdEbmNwSGZRbkZwaU9Tc0Y4NkpnZw%3D%3D" }, - "clickTrackingParams": "COgDEKCzAhgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CNkDEKCzAhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "subtitle": { "runs": [ @@ -8539,7 +9406,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -8547,7 +9414,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "COkDEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", + "clickTrackingParams": "CNoDEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_kXQcBeosMlwt7DncpHfQnFpiOSsF86Jgg" } @@ -8556,7 +9423,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "COkDEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CNoDEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -8581,7 +9448,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CPYDEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "COcDEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "title": { @@ -8597,13 +9464,13 @@ "browseId": "MPREb_CrQXpRc2xsH", "params": "ggMrGilPTEFLNXV5X2tYUWNCZW9zTWx3dDdEbmNwSGZRbkZwaU9Tc0Y4NkpnZw%3D%3D" }, - "clickTrackingParams": "COgDEKCzAhgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CNkDEKCzAhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "text": "Eyes Closed" } ] }, - "trackingParams": "COgDEKCzAhgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CNkDEKCzAhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -8623,424 +9490,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "COYDEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_nqG51O-5iSdy6QbYOqs3eUK9WeI6WGd9c" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "COYDEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "COUDEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_nqG51O-5iSdy6QbYOqs3eUK9WeI6WGd9c" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "COUDEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "COMDEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "COQDEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "COMDEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_nqG51O-5iSdy6QbYOqs3eUK9WeI6WGd9c" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "COMDEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "COEDEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "COIDEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "COEDEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_nqG51O-5iSdy6QbYOqs3eUK9WeI6WGd9c" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "COEDEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CN8DEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "COADEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "COADEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CN8DEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_nqG51O-5iSdy6QbYOqs3eUK9WeI6WGd9c" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CN8DEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CN0DEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CN4DEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CN4DEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "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": "CN0DEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CNwDEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X25xRzUxTy01aVNkeTZRYllPcXMzZVVLOVdlSTZXR2Q5Yw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CNwDEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr" - } - } - ], - "trackingParams": "CNsDEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_NFPi1ZlYqj0", - "params": "ggMrGilPTEFLNXV5X25xRzUxTy01aVNkeTZRYllPcXMzZVVLOVdlSTZXR2Q5Yw%3D%3D" - }, - "clickTrackingParams": "CNkDEKCzAhgEIhMI59zswMPz_gIVcOARCB3yMAhr" - }, - "subtitle": { - "runs": [ - { - "text": "2023" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Eyes Closed (Overmono Remix)" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Eyes Closed (Overmono Remix)" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CNoDEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_nqG51O-5iSdy6QbYOqs3eUK9WeI6WGd9c" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CNoDEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "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/kaO2Pv5AIBJbfWePJiBj1dqSD9NUpdKl7zKRZ8OCXfHq3SScTtvkrTNqc8nb_IcOyqLRKZg-RnqxKiZl=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/kaO2Pv5AIBJbfWePJiBj1dqSD9NUpdKl7zKRZ8OCXfHq3SScTtvkrTNqc8nb_IcOyqLRKZg-RnqxKiZl=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "COcDEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_NFPi1ZlYqj0", - "params": "ggMrGilPTEFLNXV5X25xRzUxTy01aVNkeTZRYllPcXMzZVVLOVdlSTZXR2Q5Yw%3D%3D" - }, - "clickTrackingParams": "CNkDEKCzAhgEIhMI59zswMPz_gIVcOARCB3yMAhr" - }, - "text": "Eyes Closed (Overmono Remix)" - } - ] - }, - "trackingParams": "CNkDEKCzAhgEIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "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": "CNcDEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CNcDEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_kAVV2Wkl-5py7pkDOW--vxwr_JleBvQyo" @@ -9053,7 +9503,7 @@ } ] }, - "trackingParams": "CNcDEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CNcDEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -9062,7 +9512,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CNYDEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CNYDEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_kAVV2Wkl-5py7pkDOW--vxwr_JleBvQyo" @@ -9075,7 +9525,7 @@ } ] }, - "trackingParams": "CNYDEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CNYDEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -9084,7 +9534,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CNQDEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CNQDEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -9098,15 +9548,21 @@ } ] }, - "trackingParams": "CNUDEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CNUDEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CNQDEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CNQDEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNQDEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_kAVV2Wkl-5py7pkDOW--vxwr_JleBvQyo" + } + }, "playlistId": "OLAK5uy_kAVV2Wkl-5py7pkDOW--vxwr_JleBvQyo" } } @@ -9118,7 +9574,7 @@ } ] }, - "trackingParams": "CNQDEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CNQDEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -9127,7 +9583,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CNIDEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CNIDEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -9141,15 +9597,21 @@ } ] }, - "trackingParams": "CNMDEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CNMDEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CNIDEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CNIDEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNIDEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_kAVV2Wkl-5py7pkDOW--vxwr_JleBvQyo" + } + }, "playlistId": "OLAK5uy_kAVV2Wkl-5py7pkDOW--vxwr_JleBvQyo" } } @@ -9161,7 +9623,7 @@ } ] }, - "trackingParams": "CNIDEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CNIDEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -9170,7 +9632,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CNADEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CNADEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -9178,7 +9640,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CNEDEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CNEDEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -9191,13 +9653,13 @@ } ] }, - "trackingParams": "CNEDEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CNEDEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -9215,7 +9677,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -9223,7 +9685,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CNADEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CNADEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -9238,7 +9700,7 @@ } ] }, - "trackingParams": "CNADEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CNADEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -9247,7 +9709,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CM4DEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CM4DEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -9255,7 +9717,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CM8DEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CM8DEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -9268,7 +9730,7 @@ } ] }, - "trackingParams": "CM8DEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CM8DEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -9292,11 +9754,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CM4DEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CM4DEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -9305,7 +9767,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CM0DEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CM0DEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X2tBVlYyV2tsLTVweTdwa0RPVy0tdnh3cl9KbGVCdlF5bw%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -9318,11 +9780,11 @@ } ] }, - "trackingParams": "CM0DEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CM0DEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], - "trackingParams": "CMwDEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CMwDEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "navigationEndpoint": { @@ -9335,7 +9797,7 @@ "browseId": "MPREb_boUIBO6m7u6", "params": "ggMrGilPTEFLNXV5X2tBVlYyV2tsLTVweTdwa0RPVy0tdnh3cl9KbGVCdlF5bw%3D%3D" }, - "clickTrackingParams": "CMkDEKCzAhgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CMkDEKCzAhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "subtitle": { "runs": [ @@ -9355,7 +9817,7 @@ "icon": { "iconType": "MUSIC_EXPLICIT_BADGE" }, - "trackingParams": "CMoDEKHtAhgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CMoDEKHtAhgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], @@ -9388,7 +9850,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -9396,7 +9858,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CMsDEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", + "clickTrackingParams": "CMsDEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_kAVV2Wkl-5py7pkDOW--vxwr_JleBvQyo" } @@ -9405,7 +9867,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CMsDEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CMsDEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -9430,7 +9892,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CNgDEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CNgDEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "title": { @@ -9446,13 +9908,13 @@ "browseId": "MPREb_boUIBO6m7u6", "params": "ggMrGilPTEFLNXV5X2tBVlYyV2tsLTVweTdwa0RPVy0tdnh3cl9KbGVCdlF5bw%3D%3D" }, - "clickTrackingParams": "CMkDEKCzAhgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CMkDEKCzAhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "text": "F64" } ] }, - "trackingParams": "CMkDEKCzAhgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CMkDEKCzAhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -9472,7 +9934,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CMcDEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CMcDEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_kzr8oo2GMNSj1G8uaE0bFn5399YzzYsu8" @@ -9485,7 +9947,7 @@ } ] }, - "trackingParams": "CMcDEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CMcDEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -9494,7 +9956,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CMYDEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CMYDEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_kzr8oo2GMNSj1G8uaE0bFn5399YzzYsu8" @@ -9507,7 +9969,7 @@ } ] }, - "trackingParams": "CMYDEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CMYDEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -9516,7 +9978,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CMQDEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CMQDEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -9530,15 +9992,21 @@ } ] }, - "trackingParams": "CMUDEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CMUDEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CMQDEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CMQDEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMQDEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_kzr8oo2GMNSj1G8uaE0bFn5399YzzYsu8" + } + }, "playlistId": "OLAK5uy_kzr8oo2GMNSj1G8uaE0bFn5399YzzYsu8" } } @@ -9550,7 +10018,7 @@ } ] }, - "trackingParams": "CMQDEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CMQDEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -9559,7 +10027,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CMIDEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CMIDEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -9573,15 +10041,21 @@ } ] }, - "trackingParams": "CMMDEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CMMDEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CMIDEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CMIDEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMIDEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_kzr8oo2GMNSj1G8uaE0bFn5399YzzYsu8" + } + }, "playlistId": "OLAK5uy_kzr8oo2GMNSj1G8uaE0bFn5399YzzYsu8" } } @@ -9593,7 +10067,7 @@ } ] }, - "trackingParams": "CMIDEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CMIDEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -9602,7 +10076,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CMADEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CMADEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -9610,7 +10084,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CMEDEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CMEDEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -9623,13 +10097,13 @@ } ] }, - "trackingParams": "CMEDEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CMEDEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -9647,7 +10121,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -9655,7 +10129,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CMADEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CMADEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -9670,7 +10144,7 @@ } ] }, - "trackingParams": "CMADEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CMADEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -9679,7 +10153,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CL4DEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CL4DEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -9687,7 +10161,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CL8DEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CL8DEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -9700,7 +10174,7 @@ } ] }, - "trackingParams": "CL8DEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CL8DEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -9724,11 +10198,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CL4DEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CL4DEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -9737,7 +10211,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CL0DEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CL0DEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X2t6cjhvbzJHTU5TajFHOHVhRTBiRm41Mzk5WXp6WXN1OA%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -9750,11 +10224,11 @@ } ] }, - "trackingParams": "CL0DEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CL0DEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], - "trackingParams": "CLwDEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLwDEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "navigationEndpoint": { @@ -9767,7 +10241,7 @@ "browseId": "MPREb_iylYq94dZBe", "params": "ggMrGilPTEFLNXV5X2t6cjhvbzJHTU5TajFHOHVhRTBiRm41Mzk5WXp6WXN1OA%3D%3D" }, - "clickTrackingParams": "CLoDEKCzAhgGIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CLoDEKCzAhgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "subtitle": { "runs": [ @@ -9805,7 +10279,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -9813,7 +10287,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CLsDEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", + "clickTrackingParams": "CLsDEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_kzr8oo2GMNSj1G8uaE0bFn5399YzzYsu8" } @@ -9822,7 +10296,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CLsDEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CLsDEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -9847,7 +10321,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CMgDEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CMgDEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "title": { @@ -9863,13 +10337,13 @@ "browseId": "MPREb_iylYq94dZBe", "params": "ggMrGilPTEFLNXV5X2t6cjhvbzJHTU5TajFHOHVhRTBiRm41Mzk5WXp6WXN1OA%3D%3D" }, - "clickTrackingParams": "CLoDEKCzAhgGIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CLoDEKCzAhgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "text": "Call on me (feat. Ed Sheeran)" } ] }, - "trackingParams": "CLoDEKCzAhgGIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLoDEKCzAhgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -9889,7 +10363,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CLgDEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLgDEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_mkm3siVsoI026ieRoxU49WOUkv2FI6U_0" @@ -9902,7 +10376,7 @@ } ] }, - "trackingParams": "CLgDEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLgDEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -9911,7 +10385,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CLcDEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLcDEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_mkm3siVsoI026ieRoxU49WOUkv2FI6U_0" @@ -9924,7 +10398,7 @@ } ] }, - "trackingParams": "CLcDEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLcDEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -9933,7 +10407,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CLUDEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLUDEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -9947,15 +10421,21 @@ } ] }, - "trackingParams": "CLYDEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CLYDEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CLUDEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CLUDEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CLUDEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_mkm3siVsoI026ieRoxU49WOUkv2FI6U_0" + } + }, "playlistId": "OLAK5uy_mkm3siVsoI026ieRoxU49WOUkv2FI6U_0" } } @@ -9967,7 +10447,7 @@ } ] }, - "trackingParams": "CLUDEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLUDEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -9976,7 +10456,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CLMDEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLMDEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -9990,15 +10470,21 @@ } ] }, - "trackingParams": "CLQDEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CLQDEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CLMDEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CLMDEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CLMDEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_mkm3siVsoI026ieRoxU49WOUkv2FI6U_0" + } + }, "playlistId": "OLAK5uy_mkm3siVsoI026ieRoxU49WOUkv2FI6U_0" } } @@ -10010,7 +10496,7 @@ } ] }, - "trackingParams": "CLMDEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLMDEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -10019,7 +10505,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CLEDEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLEDEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -10027,7 +10513,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CLIDEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLIDEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -10040,13 +10526,13 @@ } ] }, - "trackingParams": "CLIDEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLIDEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -10064,7 +10550,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -10072,7 +10558,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CLEDEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLEDEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -10087,7 +10573,7 @@ } ] }, - "trackingParams": "CLEDEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLEDEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -10096,7 +10582,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CK8DEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CK8DEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -10104,7 +10590,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CLADEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLADEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -10117,7 +10603,7 @@ } ] }, - "trackingParams": "CLADEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLADEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -10141,11 +10627,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CK8DEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CK8DEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -10154,7 +10640,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CK4DEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CK4DEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X21rbTNzaVZzb0kwMjZpZVJveFU0OVdPVWt2MkZJNlVfMA%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -10167,11 +10653,11 @@ } ] }, - "trackingParams": "CK4DEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CK4DEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], - "trackingParams": "CK0DEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CK0DEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "navigationEndpoint": { @@ -10184,7 +10670,7 @@ "browseId": "MPREb_J8oBiEZMFNu", "params": "ggMrGilPTEFLNXV5X21rbTNzaVZzb0kwMjZpZVJveFU0OVdPVWt2MkZJNlVfMA%3D%3D" }, - "clickTrackingParams": "CKsDEKCzAhgHIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CKsDEKCzAhgHIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "subtitle": { "runs": [ @@ -10222,7 +10708,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -10230,7 +10716,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CKwDEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", + "clickTrackingParams": "CKwDEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_mkm3siVsoI026ieRoxU49WOUkv2FI6U_0" } @@ -10239,7 +10725,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CKwDEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CKwDEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -10264,7 +10750,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CLkDEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CLkDEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "title": { @@ -10280,13 +10766,13 @@ "browseId": "MPREb_J8oBiEZMFNu", "params": "ggMrGilPTEFLNXV5X21rbTNzaVZzb0kwMjZpZVJveFU0OVdPVWt2MkZJNlVfMA%3D%3D" }, - "clickTrackingParams": "CKsDEKCzAhgHIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CKsDEKCzAhgHIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "text": "Celestial" } ] }, - "trackingParams": "CKsDEKCzAhgHIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CKsDEKCzAhgHIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -10306,7 +10792,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CKkDEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CKkDEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_m4g8jFVllH0WqYjBXGxQy-Yq0lf65NNm0" @@ -10319,7 +10805,7 @@ } ] }, - "trackingParams": "CKkDEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CKkDEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -10328,7 +10814,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CKgDEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CKgDEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_m4g8jFVllH0WqYjBXGxQy-Yq0lf65NNm0" @@ -10341,7 +10827,7 @@ } ] }, - "trackingParams": "CKgDEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CKgDEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -10350,7 +10836,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CKYDEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CKYDEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -10364,15 +10850,21 @@ } ] }, - "trackingParams": "CKcDEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CKcDEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CKYDEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CKYDEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKYDEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_m4g8jFVllH0WqYjBXGxQy-Yq0lf65NNm0" + } + }, "playlistId": "OLAK5uy_m4g8jFVllH0WqYjBXGxQy-Yq0lf65NNm0" } } @@ -10384,7 +10876,7 @@ } ] }, - "trackingParams": "CKYDEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CKYDEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -10393,7 +10885,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CKQDEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CKQDEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -10407,15 +10899,21 @@ } ] }, - "trackingParams": "CKUDEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CKUDEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CKQDEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CKQDEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKQDEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_m4g8jFVllH0WqYjBXGxQy-Yq0lf65NNm0" + } + }, "playlistId": "OLAK5uy_m4g8jFVllH0WqYjBXGxQy-Yq0lf65NNm0" } } @@ -10427,7 +10925,7 @@ } ] }, - "trackingParams": "CKQDEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CKQDEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -10436,7 +10934,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CKIDEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CKIDEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -10444,7 +10942,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CKMDEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CKMDEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -10457,13 +10955,13 @@ } ] }, - "trackingParams": "CKMDEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CKMDEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -10481,7 +10979,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -10489,7 +10987,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CKIDEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CKIDEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -10504,7 +11002,7 @@ } ] }, - "trackingParams": "CKIDEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CKIDEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -10513,7 +11011,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CKADEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CKADEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -10521,7 +11019,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CKEDEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CKEDEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -10534,7 +11032,7 @@ } ] }, - "trackingParams": "CKEDEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CKEDEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -10558,11 +11056,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CKADEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CKADEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -10571,7 +11069,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CJ8DEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CJ8DEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X200ZzhqRlZsbEgwV3FZakJYR3hReS1ZcTBsZjY1Tk5tMA%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -10584,11 +11082,11 @@ } ] }, - "trackingParams": "CJ8DEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CJ8DEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], - "trackingParams": "CJ4DEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CJ4DEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "navigationEndpoint": { @@ -10601,7 +11099,7 @@ "browseId": "MPREb_nQJVJcUOc9V", "params": "ggMrGilPTEFLNXV5X200ZzhqRlZsbEgwV3FZakJYR3hReS1ZcTBsZjY1Tk5tMA%3D%3D" }, - "clickTrackingParams": "CJsDEKCzAhgIIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CJsDEKCzAhgIIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "subtitle": { "runs": [ @@ -10621,7 +11119,7 @@ "icon": { "iconType": "MUSIC_EXPLICIT_BADGE" }, - "trackingParams": "CJwDEKHtAhgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CJwDEKHtAhgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], @@ -10654,7 +11152,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -10662,7 +11160,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CJ0DEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", + "clickTrackingParams": "CJ0DEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_m4g8jFVllH0WqYjBXGxQy-Yq0lf65NNm0" } @@ -10671,7 +11169,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CJ0DEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CJ0DEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -10696,7 +11194,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CKoDEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CKoDEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "title": { @@ -10712,13 +11210,13 @@ "browseId": "MPREb_nQJVJcUOc9V", "params": "ggMrGilPTEFLNXV5X200ZzhqRlZsbEgwV3FZakJYR3hReS1ZcTBsZjY1Tk5tMA%3D%3D" }, - "clickTrackingParams": "CJsDEKCzAhgIIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CJsDEKCzAhgIIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "text": "Lonely Lovers" } ] }, - "trackingParams": "CJsDEKCzAhgIIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CJsDEKCzAhgIIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -10738,7 +11236,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CJkDEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CJkDEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_lkWpmy0US4S8Y2yPNnUaCQLy3bJBHXqRg" @@ -10751,7 +11249,7 @@ } ] }, - "trackingParams": "CJkDEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CJkDEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -10760,7 +11258,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CJgDEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CJgDEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_lkWpmy0US4S8Y2yPNnUaCQLy3bJBHXqRg" @@ -10773,7 +11271,7 @@ } ] }, - "trackingParams": "CJgDEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CJgDEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -10782,7 +11280,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CJYDEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CJYDEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -10796,15 +11294,21 @@ } ] }, - "trackingParams": "CJcDEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CJcDEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CJYDEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CJYDEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJYDEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_lkWpmy0US4S8Y2yPNnUaCQLy3bJBHXqRg" + } + }, "playlistId": "OLAK5uy_lkWpmy0US4S8Y2yPNnUaCQLy3bJBHXqRg" } } @@ -10816,7 +11320,7 @@ } ] }, - "trackingParams": "CJYDEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CJYDEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -10825,7 +11329,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CJQDEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CJQDEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -10839,15 +11343,21 @@ } ] }, - "trackingParams": "CJUDEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CJUDEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CJQDEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CJQDEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJQDEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "OLAK5uy_lkWpmy0US4S8Y2yPNnUaCQLy3bJBHXqRg" + } + }, "playlistId": "OLAK5uy_lkWpmy0US4S8Y2yPNnUaCQLy3bJBHXqRg" } } @@ -10859,7 +11369,7 @@ } ] }, - "trackingParams": "CJQDEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CJQDEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -10868,7 +11378,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CJIDEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CJIDEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -10876,7 +11386,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CJMDEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CJMDEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -10889,13 +11399,13 @@ } ] }, - "trackingParams": "CJMDEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CJMDEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -10913,7 +11423,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -10921,7 +11431,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CJIDEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CJIDEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -10936,7 +11446,7 @@ } ] }, - "trackingParams": "CJIDEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CJIDEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -10945,7 +11455,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CJADEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CJADEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -10953,7 +11463,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CJEDEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CJEDEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -10966,7 +11476,7 @@ } ] }, - "trackingParams": "CJEDEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CJEDEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -10990,11 +11500,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CJADEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CJADEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -11003,7 +11513,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CI8DEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CI8DEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X2xrV3BteTBVUzRTOFkyeVBOblVhQ1FMeTNiSkJIWHFSZw%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -11016,11 +11526,11 @@ } ] }, - "trackingParams": "CI8DEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CI8DEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], - "trackingParams": "CI4DEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CI4DEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "navigationEndpoint": { @@ -11033,7 +11543,7 @@ "browseId": "MPREb_z1fvGaWTkwE", "params": "ggMrGilPTEFLNXV5X2xrV3BteTBVUzRTOFkyeVBOblVhQ1FMeTNiSkJIWHFSZw%3D%3D" }, - "clickTrackingParams": "CIsDEKCzAhgJIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CIsDEKCzAhgJIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "subtitle": { "runs": [ @@ -11053,7 +11563,7 @@ "icon": { "iconType": "MUSIC_EXPLICIT_BADGE" }, - "trackingParams": "CIwDEKHtAhgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIwDEKHtAhgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], @@ -11086,7 +11596,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -11094,7 +11604,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CI0DEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", + "clickTrackingParams": "CI0DEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_lkWpmy0US4S8Y2yPNnUaCQLy3bJBHXqRg" } @@ -11103,7 +11613,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CI0DEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CI0DEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -11128,7 +11638,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CJoDEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CJoDEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "title": { @@ -11144,13 +11654,13 @@ "browseId": "MPREb_z1fvGaWTkwE", "params": "ggMrGilPTEFLNXV5X2xrV3BteTBVUzRTOFkyeVBOblVhQ1FMeTNiSkJIWHFSZw%3D%3D" }, - "clickTrackingParams": "CIsDEKCzAhgJIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CIsDEKCzAhgJIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "text": "Groundwork" } ] }, - "trackingParams": "CIsDEKCzAhgJIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIsDEKCzAhgJIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], @@ -11173,13 +11683,13 @@ "browseEndpoint": { "browseEndpointContextSupportedConfigs": { "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" + "pageType": "MUSIC_PAGE_TYPE_ARTIST_DISCOGRAPHY" } }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ", - "params": "6gPjAUdxY0JXcGdCQ3BVQkNpUjVkRjl3WVdkbFgzTnVZWEJ6YUc5MFgyMTFjMmxqWDNCaFoyVmZjbVZuYVc5dVlXd1NIMVYzVERSaVRXbENlRmxGV0hkRFJFbFBZM2h6Vms1NlR6QTNjRFZuVW1jYVRBQUFaVzRBQVZWVEFBRkVSUUFCQUVaRmJYVnphV05mWkdWMFlXbHNYMkZ5ZEdsemRBQUJBVU1BQUFFQUFRQUFBUUVBVlVOc2JWaFFabUZaYUZoUFdYTk9ibDlSVlhsb1pWZFJBQUh5MnJPcUNnWkFBa2dBVUdJ" + "browseId": "MPADUClmXPfaYhXOYsNn_QUyheWQ", + "params": "ggMIegYIAhoCAQI%3D" }, - "clickTrackingParams": "CKUEEOvLBSITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "clickTrackingParams": "CKUEEOvLBSITCOqe8O_6ookDFePQQgUd5Wcmaw==" }, "style": "STYLE_TEXT", "text": { @@ -11189,7 +11699,7 @@ } ] }, - "trackingParams": "CKUEEOvLBSITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CKUEEOvLBSITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "title": { @@ -11199,23 +11709,23 @@ "browseEndpoint": { "browseEndpointContextSupportedConfigs": { "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" + "pageType": "MUSIC_PAGE_TYPE_ARTIST_DISCOGRAPHY" } }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ", - "params": "6gPjAUdxY0JXcGdCQ3BVQkNpUjVkRjl3WVdkbFgzTnVZWEJ6YUc5MFgyMTFjMmxqWDNCaFoyVmZjbVZuYVc5dVlXd1NIMVYzVERSaVRXbENlRmxGV0hkRFJFbFBZM2h6Vms1NlR6QTNjRFZuVW1jYVRBQUFaVzRBQVZWVEFBRkVSUUFCQUVaRmJYVnphV05mWkdWMFlXbHNYMkZ5ZEdsemRBQUJBVU1BQUFFQUFRQUFBUUVBVlVOc2JWaFFabUZaYUZoUFdYTk9ibDlSVlhsb1pWZFJBQUh5MnJPcUNnWkFBa2dBVUdJ" + "browseId": "MPADUClmXPfaYhXOYsNn_QUyheWQ", + "params": "ggMIegYIAhoCAQI%3D" }, - "clickTrackingParams": "CKQEEIi8BCITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "clickTrackingParams": "CKQEEIi8BCITCOqe8O_6ookDFePQQgUd5Wcmaw==" }, "text": "Singles" } ] }, - "trackingParams": "CKQEEIi8BCITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CKQEEIi8BCITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "itemSize": "COLLECTION_STYLE_ITEM_SIZE_MEDIUM", - "trackingParams": "CIoDEKGzAhgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIoDEKGzAhgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -11238,16 +11748,16 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CIYDEJvzBRgAIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", + "clickTrackingParams": "CIYDEJvzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZrmgEEEMPYAg==", "watchEndpoint": { "loggingContext": { "vssLoggingContext": { - "serializedContextData": "GhFSREFNVk0ydFpqVDNMMXdENA%3D%3D" + "serializedContextData": "GhFSREFNVk1mZXpLcERGS2Y1VQ%3D%3D" } }, "params": "wAEB", - "playlistId": "RDAMVM2tZjT3L1wD4", - "videoId": "2tZjT3L1wD4", + "playlistId": "RDAMVMfezKpDFKf5U", + "videoId": "fezKpDFKf5U", "watchEndpointMusicSupportedConfigs": { "watchEndpointMusicConfig": { "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" @@ -11262,7 +11772,7 @@ } ] }, - "trackingParams": "CIYDEJvzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIYDEJvzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -11271,7 +11781,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CIQDEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CIQDEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -11285,16 +11795,22 @@ } ] }, - "trackingParams": "CIUDEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CIUDEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CIQDEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CIQDEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { - "videoId": "2tZjT3L1wD4" + "onEmptyQueue": { + "clickTrackingParams": "CIQDEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "videoId": "fezKpDFKf5U" + } + }, + "videoId": "fezKpDFKf5U" } } }, @@ -11305,7 +11821,7 @@ } ] }, - "trackingParams": "CIQDEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIQDEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -11314,7 +11830,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CIIDEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CIIDEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -11328,16 +11844,22 @@ } ] }, - "trackingParams": "CIMDEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CIMDEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CIIDEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CIIDEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { - "videoId": "2tZjT3L1wD4" + "onEmptyQueue": { + "clickTrackingParams": "CIIDEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "videoId": "fezKpDFKf5U" + } + }, + "videoId": "fezKpDFKf5U" } } }, @@ -11348,7 +11870,7 @@ } ] }, - "trackingParams": "CIIDEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIIDEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -11357,7 +11879,7 @@ "iconType": "FAVORITE" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CIADEIyfBhgDIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CIADEIyfBhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -11365,7 +11887,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CIEDEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CIEDEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -11378,7 +11900,7 @@ } ] }, - "trackingParams": "CIEDEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIEDEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -11416,7 +11938,7 @@ } ] }, - "trackingParams": "CIADEIyfBhgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIADEIyfBhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -11425,7 +11947,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CP4CEMOUBhgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CP4CEMOUBhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -11433,7 +11955,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CP8CEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CP8CEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -11446,7 +11968,7 @@ } ] }, - "trackingParams": "CP8CEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CP8CEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -11470,11 +11992,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CP4CEMOUBhgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CP4CEMOUBhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -11483,9 +12005,9 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CP0CEJH7BRgFIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CP0CEJH7BRgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", "shareEntityEndpoint": { - "serializedShareEntity": "CgsydFpqVDNMMXdENA%3D%3D", + "serializedShareEntity": "CgtmZXpLcERGS2Y1VQ%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" } }, @@ -11496,15 +12018,15 @@ } ] }, - "trackingParams": "CP0CEJH7BRgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CP0CEJH7BRgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], - "trackingParams": "CPwCEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPwCEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "navigationEndpoint": { - "clickTrackingParams": "CPoCEKCzAhgAIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", + "clickTrackingParams": "CPoCEKCzAhgAIhMI6p7w7_qiiQMV49BCBR3lZyZrSJX_qYrD1LL2fZoBBBDD2AI=", "watchEndpoint": { "index": 0, "loggingContext": { @@ -11513,7 +12035,7 @@ } }, "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", - "videoId": "2tZjT3L1wD4", + "videoId": "fezKpDFKf5U", "watchEndpointMusicSupportedConfigs": { "watchEndpointMusicConfig": { "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" @@ -11533,7 +12055,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CPoCEKCzAhgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CPoCEKCzAhgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "text": "Ed Sheeran" }, @@ -11541,2515 +12063,7 @@ "text": " • " }, { - "text": "419K views" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "2147483648" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Life Goes On" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Life Goes On" - } - }, - "activeBackgroundColor": 0, - "activeScaleFactor": 1, - "backgroundColor": 0, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_HUGE", - "iconColor": 4294967295, - "iconLoadingColor": 0, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CPsCEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", - "watchEndpoint": { - "loggingContext": { - "vssLoggingContext": { - "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" - } - }, - "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", - "videoId": "2tZjT3L1wD4", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" - } - } - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_ANCESTOR", - "trackingParams": "CPsCEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", - "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" - } - }, - "thumbnailRenderer": { - "musicThumbnailRenderer": { - "thumbnail": { - "thumbnails": [ - { - "height": 225, - "url": "https://i.ytimg.com/vi/2tZjT3L1wD4/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nIEIwcHRRamRRlklKoD_QXwG1Efg", - "width": 400 - }, - { - "height": 450, - "url": "https://i.ytimg.com/vi/2tZjT3L1wD4/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3nOvPF3UCMZ0w-ykO-1XeNLFD9GLg", - "width": 800 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CIcDEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "title": { - "runs": [ - { - "text": "Life Goes On" - } - ] - }, - "trackingParams": "CPoCEKCzAhgAIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "musicTwoRowItemRenderer": { - "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_RECTANGLE_16_9", - "menu": { - "menuRenderer": { - "accessibility": { - "accessibilityData": { - "label": "Action menu" - } - }, - "items": [ - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CPgCEJvzBRgAIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", - "watchEndpoint": { - "loggingContext": { - "vssLoggingContext": { - "serializedContextData": "GhFSREFNVk13THZJQnZLTmFpZw%3D%3D" - } - }, - "params": "wAEB", - "playlistId": "RDAMVMwLvIBvKNaig", - "videoId": "wLvIBvKNaig", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" - } - } - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CPgCEJvzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CPYCEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Song will play next" - } - ] - }, - "trackingParams": "CPcCEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "CPYCEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "videoId": "wLvIBvKNaig" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CPYCEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CPQCEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Song added to queue" - } - ] - }, - "trackingParams": "CPUCEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "CPQCEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "videoId": "wLvIBvKNaig" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CPQCEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "FAVORITE" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CPICEIyfBhgDIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CPMCEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CPMCEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "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": "CPICEIyfBhgDIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CPACEMOUBhgEIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CPECEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CPECEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "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": "CPACEMOUBhgEIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CO8CEJH7BRgFIhMI59zswMPz_gIVcOARCB3yMAhr", - "shareEntityEndpoint": { - "serializedShareEntity": "Cgt3THZJQnZLTmFpZw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CO8CEJH7BRgFIhMI59zswMPz_gIVcOARCB3yMAhr" - } - } - ], - "trackingParams": "CO4CEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "navigationEndpoint": { - "clickTrackingParams": "COwCEKCzAhgBIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", - "watchEndpoint": { - "index": 1, - "loggingContext": { - "vssLoggingContext": { - "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" - } - }, - "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", - "videoId": "wLvIBvKNaig", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" - } - } - } - }, - "subtitle": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "COwCEKCzAhgBIhMI59zswMPz_gIVcOARCB3yMAhr" - }, - "text": "Ed Sheeran" - }, - { - "text": " • " - }, - { - "text": "181K views" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "2147483648" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Life Goes On" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Life Goes On" - } - }, - "activeBackgroundColor": 0, - "activeScaleFactor": 1, - "backgroundColor": 0, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_HUGE", - "iconColor": 4294967295, - "iconLoadingColor": 0, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CO0CEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", - "watchEndpoint": { - "loggingContext": { - "vssLoggingContext": { - "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" - } - }, - "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", - "videoId": "wLvIBvKNaig", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" - } - } - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_ANCESTOR", - "trackingParams": "CO0CEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", - "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" - } - }, - "thumbnailRenderer": { - "musicThumbnailRenderer": { - "thumbnail": { - "thumbnails": [ - { - "height": 225, - "url": "https://i.ytimg.com/vi/wLvIBvKNaig/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nRNf5VOzrUxF_1e0Lb6mKukUO_rw", - "width": 400 - }, - { - "height": 240, - "url": "https://i.ytimg.com/vi/wLvIBvKNaig/sddefault.jpg?sqp=-oaymwEWCKoDEPABIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3noBnXkkLuga0HeXwNLuY-UJcnTzQ", - "width": 426 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CPkCEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "title": { - "runs": [ - { - "text": "Life Goes On" - } - ] - }, - "trackingParams": "COwCEKCzAhgBIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "musicTwoRowItemRenderer": { - "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_RECTANGLE_16_9", - "menu": { - "menuRenderer": { - "accessibility": { - "accessibilityData": { - "label": "Action menu" - } - }, - "items": [ - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "COoCEJvzBRgAIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", - "watchEndpoint": { - "loggingContext": { - "vssLoggingContext": { - "serializedContextData": "GhFSREFNVk1iT3IyTjBSMm1Xcw%3D%3D" - } - }, - "params": "wAEB", - "playlistId": "RDAMVMbOr2N0R2mWs", - "videoId": "bOr2N0R2mWs", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" - } - } - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "COoCEJvzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "COgCEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Song will play next" - } - ] - }, - "trackingParams": "COkCEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "COgCEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "videoId": "bOr2N0R2mWs" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "COgCEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "COYCEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Song added to queue" - } - ] - }, - "trackingParams": "COcCEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "COYCEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "videoId": "bOr2N0R2mWs" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "COYCEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "FAVORITE" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "COQCEIyfBhgDIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "COUCEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "COUCEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "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": "COQCEIyfBhgDIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "COICEMOUBhgEIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "COMCEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "COMCEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "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": "COICEMOUBhgEIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "COECEJH7BRgFIhMI59zswMPz_gIVcOARCB3yMAhr", - "shareEntityEndpoint": { - "serializedShareEntity": "CgtiT3IyTjBSMm1Xcw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "COECEJH7BRgFIhMI59zswMPz_gIVcOARCB3yMAhr" - } - } - ], - "trackingParams": "COACEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "navigationEndpoint": { - "clickTrackingParams": "CN4CEKCzAhgCIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", - "watchEndpoint": { - "index": 2, - "loggingContext": { - "vssLoggingContext": { - "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" - } - }, - "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", - "videoId": "bOr2N0R2mWs", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" - } - } - } - }, - "subtitle": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CN4CEKCzAhgCIhMI59zswMPz_gIVcOARCB3yMAhr" - }, - "text": "Ed Sheeran" - }, - { - "text": " • " - }, - { - "text": "127K views" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "2147483648" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Borderline (Apple Music Live)" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Borderline (Apple Music Live)" - } - }, - "activeBackgroundColor": 0, - "activeScaleFactor": 1, - "backgroundColor": 0, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_HUGE", - "iconColor": 4294967295, - "iconLoadingColor": 0, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CN8CEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", - "watchEndpoint": { - "loggingContext": { - "vssLoggingContext": { - "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" - } - }, - "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", - "videoId": "bOr2N0R2mWs", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" - } - } - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_ANCESTOR", - "trackingParams": "CN8CEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", - "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" - } - }, - "thumbnailRenderer": { - "musicThumbnailRenderer": { - "thumbnail": { - "thumbnails": [ - { - "height": 225, - "url": "https://i.ytimg.com/vi/bOr2N0R2mWs/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lvBTyfHI4DIYCQQY3jlunC0NYu-Q", - "width": 400 - }, - { - "height": 450, - "url": "https://i.ytimg.com/vi/bOr2N0R2mWs/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3nW0d-er5K2MSIMdMFWXeBJpitoOw", - "width": 800 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "COsCEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "title": { - "runs": [ - { - "text": "Borderline (Apple Music Live)" - } - ] - }, - "trackingParams": "CN4CEKCzAhgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "musicTwoRowItemRenderer": { - "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_RECTANGLE_16_9", - "menu": { - "menuRenderer": { - "accessibility": { - "accessibilityData": { - "label": "Action menu" - } - }, - "items": [ - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CNwCEJvzBRgAIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", - "watchEndpoint": { - "loggingContext": { - "vssLoggingContext": { - "serializedContextData": "GhFSREFNVk0yOWxxLWN2dmxTbw%3D%3D" - } - }, - "params": "wAEB", - "playlistId": "RDAMVM29lq-cvvlSo", - "videoId": "29lq-cvvlSo", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" - } - } - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CNwCEJvzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CNoCEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Song will play next" - } - ] - }, - "trackingParams": "CNsCEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "CNoCEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "videoId": "29lq-cvvlSo" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CNoCEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CNgCEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Song added to queue" - } - ] - }, - "trackingParams": "CNkCEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "CNgCEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "videoId": "29lq-cvvlSo" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CNgCEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "FAVORITE" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CNYCEIyfBhgDIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CNcCEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CNcCEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "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": "CNYCEIyfBhgDIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CNQCEMOUBhgEIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CNUCEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CNUCEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "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": "CNQCEMOUBhgEIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CNMCEJH7BRgFIhMI59zswMPz_gIVcOARCB3yMAhr", - "shareEntityEndpoint": { - "serializedShareEntity": "CgsyOWxxLWN2dmxTbw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CNMCEJH7BRgFIhMI59zswMPz_gIVcOARCB3yMAhr" - } - } - ], - "trackingParams": "CNICEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "navigationEndpoint": { - "clickTrackingParams": "CNACEKCzAhgDIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", - "watchEndpoint": { - "index": 3, - "loggingContext": { - "vssLoggingContext": { - "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" - } - }, - "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", - "videoId": "29lq-cvvlSo", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" - } - } - } - }, - "subtitle": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CNACEKCzAhgDIhMI59zswMPz_gIVcOARCB3yMAhr" - }, - "text": "Ed Sheeran" - }, - { - "text": " • " - }, - { - "text": "1.7M views" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "2147483648" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause The Hills of Aberfeldy" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play The Hills of Aberfeldy" - } - }, - "activeBackgroundColor": 0, - "activeScaleFactor": 1, - "backgroundColor": 0, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_HUGE", - "iconColor": 4294967295, - "iconLoadingColor": 0, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CNECEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", - "watchEndpoint": { - "loggingContext": { - "vssLoggingContext": { - "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" - } - }, - "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", - "videoId": "29lq-cvvlSo", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" - } - } - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_ANCESTOR", - "trackingParams": "CNECEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", - "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" - } - }, - "thumbnailRenderer": { - "musicThumbnailRenderer": { - "thumbnail": { - "thumbnails": [ - { - "height": 225, - "url": "https://i.ytimg.com/vi/29lq-cvvlSo/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lX75As76WxiWqUwMUXni6K5_1krg", - "width": 400 - }, - { - "height": 450, - "url": "https://i.ytimg.com/vi/29lq-cvvlSo/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3lWnbuFQQ6uWIVVZqXnxEL7Gajg5g", - "width": 800 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CN0CEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "title": { - "runs": [ - { - "text": "The Hills of Aberfeldy" - } - ] - }, - "trackingParams": "CNACEKCzAhgDIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "musicTwoRowItemRenderer": { - "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_RECTANGLE_16_9", - "menu": { - "menuRenderer": { - "accessibility": { - "accessibilityData": { - "label": "Action menu" - } - }, - "items": [ - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CM4CEJvzBRgAIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", - "watchEndpoint": { - "loggingContext": { - "vssLoggingContext": { - "serializedContextData": "GhFSREFNVk1qdXdoNEsyRHZyaw%3D%3D" - } - }, - "params": "wAEB", - "playlistId": "RDAMVMjuwh4K2Dvrk", - "videoId": "juwh4K2Dvrk", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" - } - } - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CM4CEJvzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CMwCEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Song will play next" - } - ] - }, - "trackingParams": "CM0CEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "CMwCEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "videoId": "juwh4K2Dvrk" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CMwCEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CMoCEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Song added to queue" - } - ] - }, - "trackingParams": "CMsCEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "CMoCEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "videoId": "juwh4K2Dvrk" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CMoCEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "FAVORITE" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CMgCEIyfBhgDIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CMkCEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CMkCEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "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": "CMgCEIyfBhgDIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CMYCEMOUBhgEIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CMcCEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CMcCEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "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": "CMYCEMOUBhgEIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CMUCEJH7BRgFIhMI59zswMPz_gIVcOARCB3yMAhr", - "shareEntityEndpoint": { - "serializedShareEntity": "CgtqdXdoNEsyRHZyaw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CMUCEJH7BRgFIhMI59zswMPz_gIVcOARCB3yMAhr" - } - } - ], - "trackingParams": "CMQCEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "navigationEndpoint": { - "clickTrackingParams": "CMICEKCzAhgEIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", - "watchEndpoint": { - "index": 4, - "loggingContext": { - "vssLoggingContext": { - "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" - } - }, - "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", - "videoId": "juwh4K2Dvrk", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" - } - } - } - }, - "subtitle": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CMICEKCzAhgEIhMI59zswMPz_gIVcOARCB3yMAhr" - }, - "text": "Ed Sheeran" - }, - { - "text": " • " - }, - { - "text": "2.1M views" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "2147483648" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause No Strings" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play No Strings" - } - }, - "activeBackgroundColor": 0, - "activeScaleFactor": 1, - "backgroundColor": 0, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_HUGE", - "iconColor": 4294967295, - "iconLoadingColor": 0, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CMMCEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", - "watchEndpoint": { - "loggingContext": { - "vssLoggingContext": { - "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" - } - }, - "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", - "videoId": "juwh4K2Dvrk", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" - } - } - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_ANCESTOR", - "trackingParams": "CMMCEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", - "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" - } - }, - "thumbnailRenderer": { - "musicThumbnailRenderer": { - "thumbnail": { - "thumbnails": [ - { - "height": 225, - "url": "https://i.ytimg.com/vi/juwh4K2Dvrk/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3l5GoPZGzrO16keZ1xQkDKuNdK9Ig", - "width": 400 - }, - { - "height": 450, - "url": "https://i.ytimg.com/vi/juwh4K2Dvrk/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3l-rS2t3P8Qw23whGMH8VtNUVF-5g", - "width": 800 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CM8CEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "title": { - "runs": [ - { - "text": "No Strings" - } - ] - }, - "trackingParams": "CMICEKCzAhgEIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "musicTwoRowItemRenderer": { - "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_RECTANGLE_16_9", - "menu": { - "menuRenderer": { - "accessibility": { - "accessibilityData": { - "label": "Action menu" - } - }, - "items": [ - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CMACEJvzBRgAIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", - "watchEndpoint": { - "loggingContext": { - "vssLoggingContext": { - "serializedContextData": "GhFSREFNVk1KR3dXTkdKZHZ4OA%3D%3D" - } - }, - "params": "wAEB", - "playlistId": "RDAMVMJGwWNGJdvx8", - "videoId": "JGwWNGJdvx8", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" - } - } - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CMACEJvzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CL4CEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Song will play next" - } - ] - }, - "trackingParams": "CL8CEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "CL4CEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "videoId": "JGwWNGJdvx8" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CL4CEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CLwCEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Song added to queue" - } - ] - }, - "trackingParams": "CL0CEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "CLwCEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "videoId": "JGwWNGJdvx8" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CLwCEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "FAVORITE" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CLoCEIyfBhgDIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CLsCEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CLsCEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "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": "CLoCEIyfBhgDIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CLgCEMOUBhgEIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CLkCEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CLkCEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "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": "CLgCEMOUBhgEIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CLcCEJH7BRgFIhMI59zswMPz_gIVcOARCB3yMAhr", - "shareEntityEndpoint": { - "serializedShareEntity": "CgtKR3dXTkdKZHZ4OA%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CLcCEJH7BRgFIhMI59zswMPz_gIVcOARCB3yMAhr" - } - } - ], - "trackingParams": "CLYCEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "navigationEndpoint": { - "clickTrackingParams": "CLQCEKCzAhgFIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", - "watchEndpoint": { - "index": 5, - "loggingContext": { - "vssLoggingContext": { - "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" - } - }, - "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", - "videoId": "JGwWNGJdvx8", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" - } - } - } - }, - "subtitle": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CLQCEKCzAhgFIhMI59zswMPz_gIVcOARCB3yMAhr" - }, - "text": "Ed Sheeran" - }, - { - "text": " • " - }, - { - "text": "5.9B views" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "2147483648" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Shape of You" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Shape of You" - } - }, - "activeBackgroundColor": 0, - "activeScaleFactor": 1, - "backgroundColor": 0, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_HUGE", - "iconColor": 4294967295, - "iconLoadingColor": 0, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CLUCEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", - "watchEndpoint": { - "loggingContext": { - "vssLoggingContext": { - "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" - } - }, - "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", - "videoId": "JGwWNGJdvx8", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" - } - } - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_ANCESTOR", - "trackingParams": "CLUCEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", - "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" - } - }, - "thumbnailRenderer": { - "musicThumbnailRenderer": { - "thumbnail": { - "thumbnails": [ - { - "height": 225, - "url": "https://i.ytimg.com/vi/JGwWNGJdvx8/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kWA2X-8_-P2As6JMBtJDLWaPSjOQ", - "width": 400 - }, - { - "height": 240, - "url": "https://i.ytimg.com/vi/JGwWNGJdvx8/sddefault.jpg?sqp=-oaymwEWCKoDEPABIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3n5bppMMMu0X7cXTBMs84X79XOttA", - "width": 426 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CMECEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "title": { - "runs": [ - { - "text": "Shape of You" - } - ] - }, - "trackingParams": "CLQCEKCzAhgFIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "musicTwoRowItemRenderer": { - "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_RECTANGLE_16_9", - "menu": { - "menuRenderer": { - "accessibility": { - "accessibilityData": { - "label": "Action menu" - } - }, - "items": [ - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CLICEJvzBRgAIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", - "watchEndpoint": { - "loggingContext": { - "vssLoggingContext": { - "serializedContextData": "GhFSREFNVk0yVnYtQmZWb3E0Zw%3D%3D" - } - }, - "params": "wAEB", - "playlistId": "RDAMVM2Vv-BfVoq4g", - "videoId": "2Vv-BfVoq4g", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" - } - } - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CLICEJvzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CLACEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Song will play next" - } - ] - }, - "trackingParams": "CLECEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "CLACEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "videoId": "2Vv-BfVoq4g" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CLACEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CK4CEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Song added to queue" - } - ] - }, - "trackingParams": "CK8CEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "CK4CEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "videoId": "2Vv-BfVoq4g" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CK4CEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "FAVORITE" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CKwCEIyfBhgDIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CK0CEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CK0CEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "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": "CKwCEIyfBhgDIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CKoCEMOUBhgEIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CKsCEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CKsCEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "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": "CKoCEMOUBhgEIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CKkCEJH7BRgFIhMI59zswMPz_gIVcOARCB3yMAhr", - "shareEntityEndpoint": { - "serializedShareEntity": "CgsyVnYtQmZWb3E0Zw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CKkCEJH7BRgFIhMI59zswMPz_gIVcOARCB3yMAhr" - } - } - ], - "trackingParams": "CKgCEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "navigationEndpoint": { - "clickTrackingParams": "CKYCEKCzAhgGIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", - "watchEndpoint": { - "index": 6, - "loggingContext": { - "vssLoggingContext": { - "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" - } - }, - "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", - "videoId": "2Vv-BfVoq4g", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" - } - } - } - }, - "subtitle": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CKYCEKCzAhgGIhMI59zswMPz_gIVcOARCB3yMAhr" - }, - "text": "Ed Sheeran" - }, - { - "text": " • " - }, - { - "text": "3.4B views" + "text": "378K views" } ] }, @@ -14081,7 +12095,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_HUGE", "iconColor": 4294967295, "iconLoadingColor": 0, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -14089,8 +12103,1733 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CKcCEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", + "clickTrackingParams": "CPsCEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", "watchEndpoint": { + "index": 0, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" + } + }, + "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", + "videoId": "fezKpDFKf5U", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_ANCESTOR", + "trackingParams": "CPsCEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 225, + "url": "https://i.ytimg.com/vi/fezKpDFKf5U/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lK0JufCIof0Y3osGxnKsh44Q8rEQ", + "width": 400 + }, + { + "height": 240, + "url": "https://i.ytimg.com/vi/fezKpDFKf5U/sddefault.jpg?sqp=-oaymwEWCKoDEPABIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3m7ijpu1bTDhhEjY2EFqxlCklk4Sw", + "width": 426 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CIcDEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "title": { + "runs": [ + { + "text": "Perfect" + } + ] + }, + "trackingParams": "CPoCEKCzAhgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "musicTwoRowItemRenderer": { + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_RECTANGLE_16_9", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPgCEJvzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZrmgEEEMPYAg==", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1kb0d6amhlSTYwNA%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVMdoGzjheI604", + "videoId": "doGzjheI604", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CPgCEJvzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPYCEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CPcCEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "CPYCEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CPYCEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "videoId": "doGzjheI604" + } + }, + "videoId": "doGzjheI604" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CPYCEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPQCEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CPUCEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "CPQCEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CPQCEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "videoId": "doGzjheI604" + } + }, + "videoId": "doGzjheI604" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CPQCEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "FAVORITE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CPICEIyfBhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CPMCEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CPMCEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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": "CPICEIyfBhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPACEMOUBhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CPECEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CPECEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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": "CPACEMOUBhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CO8CEJH7BRgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "shareEntityEndpoint": { + "serializedShareEntity": "Cgtkb0d6amhlSTYwNA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CO8CEJH7BRgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + } + ], + "trackingParams": "CO4CEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "COwCEKCzAhgBIhMI6p7w7_qiiQMV49BCBR3lZyZrSM7Wo7zh8ezAdpoBBBDD2AI=", + "watchEndpoint": { + "index": 1, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" + } + }, + "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", + "videoId": "doGzjheI604", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "subtitle": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "COwCEKCzAhgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "text": "Ed Sheeran" + }, + { + "text": " • " + }, + { + "text": "250K views" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "2147483648" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause The A Team" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play The A Team" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_HUGE", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CO0CEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", + "watchEndpoint": { + "index": 1, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" + } + }, + "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", + "videoId": "doGzjheI604", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_ANCESTOR", + "trackingParams": "CO0CEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 225, + "url": "https://i.ytimg.com/vi/doGzjheI604/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kU_80uHngmJhFXOlUoNaHUu93Smg", + "width": 400 + }, + { + "height": 450, + "url": "https://i.ytimg.com/vi/doGzjheI604/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3k9gH9fgxjt0jUT3ptDZBfYmSj-2Q", + "width": 800 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CPkCEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "title": { + "runs": [ + { + "text": "The A Team" + } + ] + }, + "trackingParams": "COwCEKCzAhgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "musicTwoRowItemRenderer": { + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_RECTANGLE_16_9", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "COoCEJvzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZrmgEEEMPYAg==", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk16akVkWDgtM0NEOA%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVMzjEdX8-3CD8", + "videoId": "zjEdX8-3CD8", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "COoCEJvzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "COgCEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "COkCEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "COgCEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "COgCEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "videoId": "zjEdX8-3CD8" + } + }, + "videoId": "zjEdX8-3CD8" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "COgCEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "COYCEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "COcCEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "COYCEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "COYCEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "videoId": "zjEdX8-3CD8" + } + }, + "videoId": "zjEdX8-3CD8" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "COYCEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "FAVORITE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "COQCEIyfBhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "COUCEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "COUCEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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": "COQCEIyfBhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "COICEMOUBhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "COMCEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "COMCEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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": "COICEMOUBhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "COECEJH7BRgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "shareEntityEndpoint": { + "serializedShareEntity": "Cgt6akVkWDgtM0NEOA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "COECEJH7BRgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + } + ], + "trackingParams": "COACEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CN4CEKCzAhgCIhMI6p7w7_qiiQMV49BCBR3lZyZrSL-Q3P38q8eYzgGaAQQQw9gC", + "watchEndpoint": { + "index": 2, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" + } + }, + "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", + "videoId": "zjEdX8-3CD8", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "subtitle": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CN4CEKCzAhgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "text": "Ed Sheeran" + }, + { + "text": " • " + }, + { + "text": "372K views" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "2147483648" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Lego House" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Lego House" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_HUGE", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CN8CEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", + "watchEndpoint": { + "index": 2, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" + } + }, + "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", + "videoId": "zjEdX8-3CD8", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_ANCESTOR", + "trackingParams": "CN8CEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 225, + "url": "https://i.ytimg.com/vi/zjEdX8-3CD8/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nkjuS26FLwYDmm573Wx7lnSVN9YQ", + "width": 400 + }, + { + "height": 450, + "url": "https://i.ytimg.com/vi/zjEdX8-3CD8/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3lFOrdkqtSsEEnftHdjPoB7jwSZYg", + "width": 800 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "COsCEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "title": { + "runs": [ + { + "text": "Lego House" + } + ] + }, + "trackingParams": "CN4CEKCzAhgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "musicTwoRowItemRenderer": { + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_RECTANGLE_16_9", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNwCEJvzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZrmgEEEMPYAg==", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1EUVpjeE45djBSQQ%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVMDQZcxN9v0RA", + "videoId": "DQZcxN9v0RA", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CNwCEJvzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNoCEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CNsCEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "CNoCEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNoCEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "videoId": "DQZcxN9v0RA" + } + }, + "videoId": "DQZcxN9v0RA" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CNoCEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNgCEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CNkCEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "CNgCEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNgCEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "videoId": "DQZcxN9v0RA" + } + }, + "videoId": "DQZcxN9v0RA" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CNgCEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "FAVORITE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CNYCEIyfBhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CNcCEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CNcCEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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": "CNYCEIyfBhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNQCEMOUBhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CNUCEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CNUCEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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": "CNQCEMOUBhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNMCEJH7BRgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtEUVpjeE45djBSQQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CNMCEJH7BRgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + } + ], + "trackingParams": "CNICEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CNACEKCzAhgDIhMI6p7w7_qiiQMV49BCBR3lZyZrSJCiv_vNmJeDDZoBBBDD2AI=", + "watchEndpoint": { + "index": 3, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" + } + }, + "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", + "videoId": "DQZcxN9v0RA", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "subtitle": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CNACEKCzAhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "text": "Ed Sheeran" + }, + { + "text": " • " + }, + { + "text": "1M views" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "2147483648" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Dive" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Dive" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_HUGE", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CNECEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", + "watchEndpoint": { + "index": 3, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" + } + }, + "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", + "videoId": "DQZcxN9v0RA", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_ANCESTOR", + "trackingParams": "CNECEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 225, + "url": "https://i.ytimg.com/vi/DQZcxN9v0RA/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3m-wzWW924f_UkHeAARDYLmE90ANg", + "width": 400 + }, + { + "height": 450, + "url": "https://i.ytimg.com/vi/DQZcxN9v0RA/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3m3PQZ8HE21VPgZj92C7kHNyDk6Vg", + "width": 800 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CN0CEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "title": { + "runs": [ + { + "text": "Dive" + } + ] + }, + "trackingParams": "CNACEKCzAhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "musicTwoRowItemRenderer": { + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_RECTANGLE_16_9", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CM4CEJvzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZrmgEEEMPYAg==", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk0yVnYtQmZWb3E0Zw%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVM2Vv-BfVoq4g", + "videoId": "2Vv-BfVoq4g", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CM4CEJvzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMwCEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CM0CEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "CMwCEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMwCEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "videoId": "2Vv-BfVoq4g" + } + }, + "videoId": "2Vv-BfVoq4g" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CMwCEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMoCEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CMsCEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "CMoCEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMoCEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "videoId": "2Vv-BfVoq4g" + } + }, + "videoId": "2Vv-BfVoq4g" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CMoCEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "FAVORITE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CMgCEIyfBhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CMkCEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CMkCEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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": "CMgCEIyfBhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMYCEMOUBhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CMcCEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CMcCEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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": "CMYCEMOUBhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMUCEJH7BRgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "shareEntityEndpoint": { + "serializedShareEntity": "CgsyVnYtQmZWb3E0Zw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CMUCEJH7BRgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + } + ], + "trackingParams": "CMQCEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CMICEKCzAhgEIhMI6p7w7_qiiQMV49BCBR3lZyZrSIjXoqvfwP-t2QGaAQQQw9gC", + "watchEndpoint": { + "index": 4, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" + } + }, + "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", + "videoId": "2Vv-BfVoq4g", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "subtitle": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CMICEKCzAhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "text": "Ed Sheeran" + }, + { + "text": " • " + }, + { + "text": "3.8B views" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "2147483648" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Perfect" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Perfect" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_HUGE", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CMMCEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", + "watchEndpoint": { + "index": 4, "loggingContext": { "vssLoggingContext": { "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" @@ -14109,7 +13848,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_ANCESTOR", - "trackingParams": "CKcCEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CMMCEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", @@ -14134,7 +13873,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CLMCEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CM8CEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "title": { @@ -14144,7 +13883,7 @@ } ] }, - "trackingParams": "CKYCEKCzAhgGIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CMICEKCzAhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -14164,16 +13903,16 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CKQCEJvzBRgAIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", + "clickTrackingParams": "CMACEJvzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZrmgEEEMPYAg==", "watchEndpoint": { "loggingContext": { "vssLoggingContext": { - "serializedContextData": "GhFSREFNVk1ZeFNqM1RQOTBTQQ%3D%3D" + "serializedContextData": "GhFSREFNVk1KR3dXTkdKZHZ4OA%3D%3D" } }, "params": "wAEB", - "playlistId": "RDAMVMYxSj3TP90SA", - "videoId": "YxSj3TP90SA", + "playlistId": "RDAMVMJGwWNGJdvx8", + "videoId": "JGwWNGJdvx8", "watchEndpointMusicSupportedConfigs": { "watchEndpointMusicConfig": { "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" @@ -14188,7 +13927,7 @@ } ] }, - "trackingParams": "CKQCEJvzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CMACEJvzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -14197,7 +13936,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CKICEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CL4CEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -14211,16 +13950,22 @@ } ] }, - "trackingParams": "CKMCEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CL8CEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CKICEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CL4CEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { - "videoId": "YxSj3TP90SA" + "onEmptyQueue": { + "clickTrackingParams": "CL4CEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "videoId": "JGwWNGJdvx8" + } + }, + "videoId": "JGwWNGJdvx8" } } }, @@ -14231,7 +13976,7 @@ } ] }, - "trackingParams": "CKICEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CL4CEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -14240,7 +13985,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CKACEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLwCEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -14254,16 +13999,22 @@ } ] }, - "trackingParams": "CKECEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CL0CEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CKACEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CLwCEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { - "videoId": "YxSj3TP90SA" + "onEmptyQueue": { + "clickTrackingParams": "CLwCEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "videoId": "JGwWNGJdvx8" + } + }, + "videoId": "JGwWNGJdvx8" } } }, @@ -14274,7 +14025,7 @@ } ] }, - "trackingParams": "CKACEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLwCEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -14283,7 +14034,7 @@ "iconType": "FAVORITE" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CJ4CEIyfBhgDIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLoCEIyfBhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -14291,7 +14042,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CJ8CEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLsCEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -14304,7 +14055,7 @@ } ] }, - "trackingParams": "CJ8CEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLsCEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -14342,7 +14093,7 @@ } ] }, - "trackingParams": "CJ4CEIyfBhgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLoCEIyfBhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -14351,7 +14102,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CJwCEMOUBhgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLgCEMOUBhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -14359,7 +14110,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CJ0CEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLkCEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -14372,7 +14123,7 @@ } ] }, - "trackingParams": "CJ0CEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLkCEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -14396,11 +14147,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CJwCEMOUBhgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLgCEMOUBhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -14409,9 +14160,9 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CJsCEJH7BRgFIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLcCEJH7BRgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", "shareEntityEndpoint": { - "serializedShareEntity": "CgtZeFNqM1RQOTBTQQ%3D%3D", + "serializedShareEntity": "CgtKR3dXTkdKZHZ4OA%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" } }, @@ -14422,24 +14173,24 @@ } ] }, - "trackingParams": "CJsCEJH7BRgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLcCEJH7BRgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], - "trackingParams": "CJoCEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLYCEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "navigationEndpoint": { - "clickTrackingParams": "CJgCEKCzAhgHIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", + "clickTrackingParams": "CLQCEKCzAhgFIhMI6p7w7_qiiQMV49BCBR3lZyZrSJ_-9pLGxoW2JJoBBBDD2AI=", "watchEndpoint": { - "index": 7, + "index": 5, "loggingContext": { "vssLoggingContext": { "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" } }, "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", - "videoId": "YxSj3TP90SA", + "videoId": "JGwWNGJdvx8", "watchEndpointMusicSupportedConfigs": { "watchEndpointMusicConfig": { "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" @@ -14459,7 +14210,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CJgCEKCzAhgHIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CLQCEKCzAhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "text": "Ed Sheeran" }, @@ -14467,7 +14218,7 @@ "text": " • " }, { - "text": "8.6M views" + "text": "6.3B views" } ] }, @@ -14485,12 +14236,12 @@ "musicPlayButtonRenderer": { "accessibilityPauseData": { "accessibilityData": { - "label": "Pause Curtains" + "label": "Pause Shape of You" } }, "accessibilityPlayData": { "accessibilityData": { - "label": "Play Curtains" + "label": "Play Shape of You" } }, "activeBackgroundColor": 0, @@ -14499,7 +14250,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_HUGE", "iconColor": 4294967295, "iconLoadingColor": 0, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -14507,15 +14258,16 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CJkCEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", + "clickTrackingParams": "CLUCEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", "watchEndpoint": { + "index": 5, "loggingContext": { "vssLoggingContext": { "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" } }, "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", - "videoId": "YxSj3TP90SA", + "videoId": "JGwWNGJdvx8", "watchEndpointMusicSupportedConfigs": { "watchEndpointMusicConfig": { "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" @@ -14527,7 +14279,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_ANCESTOR", - "trackingParams": "CJkCEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CLUCEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", @@ -14540,29 +14292,29 @@ "thumbnails": [ { "height": 225, - "url": "https://i.ytimg.com/vi/YxSj3TP90SA/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3nKOD3bA2Sb-8nB5hXGn1aJZzMMFQ", + "url": "https://i.ytimg.com/vi/JGwWNGJdvx8/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kWA2X-8_-P2As6JMBtJDLWaPSjOQ", "width": 400 }, { - "height": 450, - "url": "https://i.ytimg.com/vi/YxSj3TP90SA/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3mGg6TjM1kr9OzXxahvmab-1WmPOg", - "width": 800 + "height": 240, + "url": "https://i.ytimg.com/vi/JGwWNGJdvx8/sddefault.jpg?sqp=-oaymwEWCKoDEPABIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3n5bppMMMu0X7cXTBMs84X79XOttA", + "width": 426 } ] }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CKUCEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CMECEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "title": { "runs": [ { - "text": "Curtains" + "text": "Shape of You" } ] }, - "trackingParams": "CJgCEKCzAhgHIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLQCEKCzAhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -14582,425 +14334,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CJYCEJvzBRgAIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", - "watchEndpoint": { - "loggingContext": { - "vssLoggingContext": { - "serializedContextData": "GhFSREFNVk1scC1FTzVJNjBLQQ%3D%3D" - } - }, - "params": "wAEB", - "playlistId": "RDAMVMlp-EO5I60KA", - "videoId": "lp-EO5I60KA", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" - } - } - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CJYCEJvzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CJQCEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Song will play next" - } - ] - }, - "trackingParams": "CJUCEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "CJQCEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "videoId": "lp-EO5I60KA" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CJQCEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CJICEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Song added to queue" - } - ] - }, - "trackingParams": "CJMCEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "CJICEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "videoId": "lp-EO5I60KA" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CJICEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "FAVORITE" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CJACEIyfBhgDIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CJECEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CJECEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "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": "CJACEIyfBhgDIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CI4CEMOUBhgEIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CI8CEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CI8CEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "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": "CI4CEMOUBhgEIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CI0CEJH7BRgFIhMI59zswMPz_gIVcOARCB3yMAhr", - "shareEntityEndpoint": { - "serializedShareEntity": "CgtscC1FTzVJNjBLQQ%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CI0CEJH7BRgFIhMI59zswMPz_gIVcOARCB3yMAhr" - } - } - ], - "trackingParams": "CIwCEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "navigationEndpoint": { - "clickTrackingParams": "CIoCEKCzAhgIIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", - "watchEndpoint": { - "index": 8, - "loggingContext": { - "vssLoggingContext": { - "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" - } - }, - "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", - "videoId": "lp-EO5I60KA", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" - } - } - } - }, - "subtitle": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CIoCEKCzAhgIIhMI59zswMPz_gIVcOARCB3yMAhr" - }, - "text": "Ed Sheeran" - }, - { - "text": " • " - }, - { - "text": "3.5B views" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "2147483648" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Thinking Out Loud" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Thinking Out Loud" - } - }, - "activeBackgroundColor": 0, - "activeScaleFactor": 1, - "backgroundColor": 0, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_HUGE", - "iconColor": 4294967295, - "iconLoadingColor": 0, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CIsCEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", - "watchEndpoint": { - "loggingContext": { - "vssLoggingContext": { - "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" - } - }, - "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", - "videoId": "lp-EO5I60KA", - "watchEndpointMusicSupportedConfigs": { - "watchEndpointMusicConfig": { - "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" - } - } - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_ANCESTOR", - "trackingParams": "CIsCEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", - "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" - } - }, - "thumbnailRenderer": { - "musicThumbnailRenderer": { - "thumbnail": { - "thumbnails": [ - { - "height": 225, - "url": "https://i.ytimg.com/vi/lp-EO5I60KA/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mu6BO8nHKcEzWdeZSd-sWgcIUiLQ", - "width": 400 - }, - { - "height": 450, - "url": "https://i.ytimg.com/vi/lp-EO5I60KA/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3mZqDZb-TPcLwepwoQH8ZifYHp96A", - "width": 800 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CJcCEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "title": { - "runs": [ - { - "text": "Thinking Out Loud" - } - ] - }, - "trackingParams": "CIoCEKCzAhgIIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "musicTwoRowItemRenderer": { - "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_RECTANGLE_16_9", - "menu": { - "menuRenderer": { - "accessibility": { - "accessibilityData": { - "label": "Action menu" - } - }, - "items": [ - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CIgCEJvzBRgAIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", + "clickTrackingParams": "CLICEJvzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZrmgEEEMPYAg==", "watchEndpoint": { "loggingContext": { "vssLoggingContext": { @@ -15024,7 +14358,7 @@ } ] }, - "trackingParams": "CIgCEJvzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLICEJvzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -15033,7 +14367,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CIYCEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLACEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -15047,15 +14381,21 @@ } ] }, - "trackingParams": "CIcCEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CLECEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CIYCEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CLACEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CLACEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "videoId": "nSDgHBxUbVQ" + } + }, "videoId": "nSDgHBxUbVQ" } } @@ -15067,7 +14407,7 @@ } ] }, - "trackingParams": "CIYCEL7uBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLACEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -15076,7 +14416,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CIQCEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CK4CEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -15090,15 +14430,21 @@ } ] }, - "trackingParams": "CIUCEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CK8CEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CIQCEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CK4CEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CK4CEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "videoId": "nSDgHBxUbVQ" + } + }, "videoId": "nSDgHBxUbVQ" } } @@ -15110,7 +14456,7 @@ } ] }, - "trackingParams": "CIQCEPvvBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CK4CEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -15119,7 +14465,7 @@ "iconType": "FAVORITE" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CIICEIyfBhgDIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CKwCEIyfBhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -15127,7 +14473,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CIMCEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CK0CEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -15140,7 +14486,7 @@ } ] }, - "trackingParams": "CIMCEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CK0CEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -15178,7 +14524,7 @@ } ] }, - "trackingParams": "CIICEIyfBhgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CKwCEIyfBhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -15187,7 +14533,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CIACEMOUBhgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CKoCEMOUBhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -15195,7 +14541,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CIECEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CKsCEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -15208,7 +14554,7 @@ } ] }, - "trackingParams": "CIECEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CKsCEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -15232,11 +14578,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CIACEMOUBhgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CKoCEMOUBhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -15245,7 +14591,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CP8BEJH7BRgFIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CKkCEJH7BRgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", "shareEntityEndpoint": { "serializedShareEntity": "CgtuU0RnSEJ4VWJWUQ%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -15258,17 +14604,17 @@ } ] }, - "trackingParams": "CP8BEJH7BRgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CKkCEJH7BRgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], - "trackingParams": "CP4BEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CKgCEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "navigationEndpoint": { - "clickTrackingParams": "CPwBEKCzAhgJIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", + "clickTrackingParams": "CKYCEKCzAhgGIhMI6p7w7_qiiQMV49BCBR3lZyZrSNTa0eLBg7iQnQGaAQQQw9gC", "watchEndpoint": { - "index": 9, + "index": 6, "loggingContext": { "vssLoggingContext": { "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" @@ -15295,7 +14641,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CPwBEKCzAhgJIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CKYCEKCzAhgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "text": "Ed Sheeran" }, @@ -15303,7 +14649,7 @@ "text": " • " }, { - "text": "1.2B views" + "text": "1.4B views" } ] }, @@ -15335,7 +14681,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_HUGE", "iconColor": 4294967295, "iconLoadingColor": 0, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -15343,8 +14689,9 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CP0BEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", + "clickTrackingParams": "CKcCEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", "watchEndpoint": { + "index": 6, "loggingContext": { "vssLoggingContext": { "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" @@ -15363,7 +14710,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_ANCESTOR", - "trackingParams": "CP0BEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CKcCEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", @@ -15388,7 +14735,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CIkCEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CLMCEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "title": { @@ -15398,7 +14745,1300 @@ } ] }, - "trackingParams": "CPwBEKCzAhgJIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CKYCEKCzAhgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "musicTwoRowItemRenderer": { + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_RECTANGLE_16_9", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKQCEJvzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZrmgEEEMPYAg==", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1scC1FTzVJNjBLQQ%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVMlp-EO5I60KA", + "videoId": "lp-EO5I60KA", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CKQCEJvzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKICEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CKMCEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "CKICEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKICEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "videoId": "lp-EO5I60KA" + } + }, + "videoId": "lp-EO5I60KA" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CKICEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKACEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CKECEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "CKACEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKACEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "videoId": "lp-EO5I60KA" + } + }, + "videoId": "lp-EO5I60KA" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CKACEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "FAVORITE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CJ4CEIyfBhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CJ8CEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CJ8CEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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": "CJ4CEIyfBhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJwCEMOUBhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CJ0CEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CJ0CEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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": "CJwCEMOUBhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJsCEJH7BRgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtscC1FTzVJNjBLQQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJsCEJH7BRgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + } + ], + "trackingParams": "CJoCEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CJgCEKCzAhgHIhMI6p7w7_qiiQMV49BCBR3lZyZrSKCh65G5h-HPlgGaAQQQw9gC", + "watchEndpoint": { + "index": 7, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" + } + }, + "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", + "videoId": "lp-EO5I60KA", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "subtitle": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CJgCEKCzAhgHIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "text": "Ed Sheeran" + }, + { + "text": " • " + }, + { + "text": "3.8B views" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "2147483648" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Thinking out Loud" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Thinking out Loud" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_HUGE", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CJkCEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", + "watchEndpoint": { + "index": 7, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" + } + }, + "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", + "videoId": "lp-EO5I60KA", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_ANCESTOR", + "trackingParams": "CJkCEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 225, + "url": "https://i.ytimg.com/vi/lp-EO5I60KA/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mu6BO8nHKcEzWdeZSd-sWgcIUiLQ", + "width": 400 + }, + { + "height": 450, + "url": "https://i.ytimg.com/vi/lp-EO5I60KA/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3mZqDZb-TPcLwepwoQH8ZifYHp96A", + "width": 800 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CKUCEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "title": { + "runs": [ + { + "text": "Thinking out Loud" + } + ] + }, + "trackingParams": "CJgCEKCzAhgHIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "musicTwoRowItemRenderer": { + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_RECTANGLE_16_9", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJYCEJvzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZrmgEEEMPYAg==", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1vckpTSkdIakJMSQ%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVMorJSJGHjBLI", + "videoId": "orJSJGHjBLI", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CJYCEJvzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJQCEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CJUCEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "CJQCEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJQCEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "videoId": "orJSJGHjBLI" + } + }, + "videoId": "orJSJGHjBLI" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CJQCEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJICEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CJMCEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "CJICEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJICEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "videoId": "orJSJGHjBLI" + } + }, + "videoId": "orJSJGHjBLI" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJICEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "FAVORITE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CJACEIyfBhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CJECEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CJECEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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": "CJACEIyfBhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CI4CEMOUBhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CI8CEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CI8CEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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": "CI4CEMOUBhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CI0CEJH7BRgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtvckpTSkdIakJMSQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CI0CEJH7BRgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + } + ], + "trackingParams": "CIwCEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CIoCEKCzAhgIIhMI6p7w7_qiiQMV49BCBR3lZyZrSLKJjI_GxJTZogGaAQQQw9gC", + "watchEndpoint": { + "index": 8, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" + } + }, + "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", + "videoId": "orJSJGHjBLI", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "subtitle": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CIoCEKCzAhgIIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "text": "Ed Sheeran" + }, + { + "text": " • " + }, + { + "text": "641M views" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "2147483648" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Bad Habits" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Bad Habits" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_HUGE", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CIsCEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", + "watchEndpoint": { + "index": 8, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" + } + }, + "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", + "videoId": "orJSJGHjBLI", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_ANCESTOR", + "trackingParams": "CIsCEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 225, + "url": "https://i.ytimg.com/vi/orJSJGHjBLI/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3kuWcj3GFn0KIrIk9yjaPHYxOaIvg", + "width": 400 + }, + { + "height": 450, + "url": "https://i.ytimg.com/vi/orJSJGHjBLI/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3lNMLo9uVag3GNRhhhblGO0NpT4hA", + "width": 800 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CJcCEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "title": { + "runs": [ + { + "text": "Bad Habits" + } + ] + }, + "trackingParams": "CIoCEKCzAhgIIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "musicTwoRowItemRenderer": { + "aspectRatio": "MUSIC_TWO_ROW_ITEM_THUMBNAIL_ASPECT_RATIO_RECTANGLE_16_9", + "menu": { + "menuRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Action menu" + } + }, + "items": [ + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIgCEJvzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZrmgEEEMPYAg==", + "watchEndpoint": { + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GhFSREFNVk1JbDBTOEJvdWNTQQ%3D%3D" + } + }, + "params": "wAEB", + "playlistId": "RDAMVMIl0S8BoucSA", + "videoId": "Il0S8BoucSA", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CIgCEJvzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIYCEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song will play next" + } + ] + }, + "trackingParams": "CIcCEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "CIYCEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIYCEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "videoId": "Il0S8BoucSA" + } + }, + "videoId": "Il0S8BoucSA" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CIYCEL7uBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIQCEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Song added to queue" + } + ] + }, + "trackingParams": "CIUCEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "CIQCEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIQCEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "videoId": "Il0S8BoucSA" + } + }, + "videoId": "Il0S8BoucSA" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CIQCEPvvBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "FAVORITE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CIICEIyfBhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CIMCEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CIMCEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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": "CIICEIyfBhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIACEMOUBhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CIECEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CIECEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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": "CIACEMOUBhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CP8BEJH7BRgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "shareEntityEndpoint": { + "serializedShareEntity": "CgtJbDBTOEJvdWNTQQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CP8BEJH7BRgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + } + ], + "trackingParams": "CP4BEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CPwBEKCzAhgJIhMI6p7w7_qiiQMV49BCBR3lZyZrSKDiudGB3sSuIpoBBBDD2AI=", + "watchEndpoint": { + "index": 9, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" + } + }, + "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", + "videoId": "Il0S8BoucSA", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "subtitle": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CPwBEKCzAhgJIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "text": "Ed Sheeran" + }, + { + "text": " • " + }, + { + "text": "364M views" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "2147483648" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Shivers" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Shivers" + } + }, + "activeBackgroundColor": 0, + "activeScaleFactor": 1, + "backgroundColor": 0, + "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_HUGE", + "iconColor": 4294967295, + "iconLoadingColor": 0, + "loadingIndicatorColor": 14745645, + "pauseIcon": { + "iconType": "PAUSE" + }, + "playIcon": { + "iconType": "PLAY_ARROW" + }, + "playNavigationEndpoint": { + "clickTrackingParams": "CP0BEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", + "watchEndpoint": { + "index": 9, + "loggingContext": { + "vssLoggingContext": { + "serializedContextData": "GilPTEFLNXV5X2s5RkF4QzhYYjhUMEtxUDV3RmJuOEtzUDNWa1VqYjMzNA%3D%3D" + } + }, + "playlistId": "OLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", + "videoId": "Il0S8BoucSA", + "watchEndpointMusicSupportedConfigs": { + "watchEndpointMusicConfig": { + "musicVideoType": "MUSIC_VIDEO_TYPE_OMV" + } + } + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_ANCESTOR", + "trackingParams": "CP0BEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_CENTERED", + "displayStyle": "MUSIC_ITEM_THUMBNAIL_OVERLAY_DISPLAY_STYLE_PERSISTENT" + } + }, + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 225, + "url": "https://i.ytimg.com/vi/Il0S8BoucSA/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3md0OdolJfM7sSx62zb9Wr86LIsEA", + "width": 400 + }, + { + "height": 450, + "url": "https://i.ytimg.com/vi/Il0S8BoucSA/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3l584OTAFrn2AeZulvXXEqdKVzhjQ", + "width": 800 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CIkCEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "title": { + "runs": [ + { + "text": "Shivers" + } + ] + }, + "trackingParams": "CPwBEKCzAhgJIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], @@ -15427,7 +16067,7 @@ "browseId": "VLOLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", "params": "ggMCCAI%3D" }, - "clickTrackingParams": "CIkDEOvLBSITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "clickTrackingParams": "CIkDEOvLBSITCOqe8O_6ookDFePQQgUd5Wcmaw==" }, "style": "STYLE_TEXT", "text": { @@ -15437,7 +16077,7 @@ } ] }, - "trackingParams": "CIkDEOvLBSITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CIkDEOvLBSITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "title": { @@ -15453,17 +16093,17 @@ "browseId": "VLOLAK5uy_k9FAxC8Xb8T0KqP5wFbn8KsP3VkUjb334", "params": "ggMCCAI%3D" }, - "clickTrackingParams": "CIgDEIi8BCITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "clickTrackingParams": "CIgDEIi8BCITCOqe8O_6ookDFePQQgUd5Wcmaw==" }, "text": "Videos" } ] }, - "trackingParams": "CIgDEIi8BCITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CIgDEIi8BCITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "itemSize": "COLLECTION_STYLE_ITEM_SIZE_MEDIUM", - "trackingParams": "CPsBEKGzAhgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPsBEKGzAhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -15486,7 +16126,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CPgBEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CPgBEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB8gECGAE%3D", "playlistId": "RDCLAK5uy_lL718gGQZgQf4jkKYjVbOXHABQCFAYuj0" @@ -15499,7 +16139,7 @@ } ] }, - "trackingParams": "CPgBEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPgBEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -15508,7 +16148,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CPcBEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", + "clickTrackingParams": "CPcBEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZrmgEEEMPYAg==", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLRDCLAK5uy_lL718gGQZgQf4jkKYjVbOXHABQCFAYuj0" @@ -15521,7 +16161,7 @@ } ] }, - "trackingParams": "CPcBEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPcBEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -15530,7 +16170,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CPUBEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CPUBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -15544,15 +16184,21 @@ } ] }, - "trackingParams": "CPYBEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CPYBEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CPUBEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CPUBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CPUBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "RDCLAK5uy_lL718gGQZgQf4jkKYjVbOXHABQCFAYuj0" + } + }, "playlistId": "RDCLAK5uy_lL718gGQZgQf4jkKYjVbOXHABQCFAYuj0" } } @@ -15564,7 +16210,7 @@ } ] }, - "trackingParams": "CPUBEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPUBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -15573,7 +16219,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CPMBEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CPMBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -15587,15 +16233,21 @@ } ] }, - "trackingParams": "CPQBEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CPQBEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CPMBEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CPMBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CPMBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "RDCLAK5uy_lL718gGQZgQf4jkKYjVbOXHABQCFAYuj0" + } + }, "playlistId": "RDCLAK5uy_lL718gGQZgQf4jkKYjVbOXHABQCFAYuj0" } } @@ -15607,7 +16259,7 @@ } ] }, - "trackingParams": "CPMBEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPMBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -15616,7 +16268,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CPEBEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CPEBEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -15624,7 +16276,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CPIBEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CPIBEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -15637,13 +16289,13 @@ } ] }, - "trackingParams": "CPIBEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPIBEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -15661,7 +16313,7 @@ "defaultText": { "runs": [ { - "text": "Add playlist to library" + "text": "Save playlist to library" } ] }, @@ -15669,7 +16321,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CPEBEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CPEBEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -15684,7 +16336,7 @@ } ] }, - "trackingParams": "CPEBEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPEBEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -15693,7 +16345,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CO8BEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CO8BEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -15701,7 +16353,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CPABEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CPABEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -15714,7 +16366,7 @@ } ] }, - "trackingParams": "CPABEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CPABEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -15738,11 +16390,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CO8BEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CO8BEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -15751,7 +16403,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CO4BEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CO4BEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", "shareEntityEndpoint": { "serializedShareEntity": "EitSRENMQUs1dXlfbEw3MThnR1FaZ1FmNGprS1lqVmJPWEhBQlFDRkFZdWow", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -15764,11 +16416,11 @@ } ] }, - "trackingParams": "CO4BEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CO4BEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], - "trackingParams": "CO0BEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CO0BEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "navigationEndpoint": { @@ -15780,7 +16432,7 @@ }, "browseId": "VLRDCLAK5uy_lL718gGQZgQf4jkKYjVbOXHABQCFAYuj0" }, - "clickTrackingParams": "COsBEKCzAhgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "COsBEKCzAhgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "subtitle": { "runs": [ @@ -15824,7 +16476,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -15832,7 +16484,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "COwBEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", + "clickTrackingParams": "COwBEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDCLAK5uy_lL718gGQZgQf4jkKYjVbOXHABQCFAYuj0" @@ -15842,7 +16494,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "COwBEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "COwBEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -15867,7 +16519,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CPkBEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CPkBEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "title": { @@ -15882,13 +16534,13 @@ }, "browseId": "VLRDCLAK5uy_lL718gGQZgQf4jkKYjVbOXHABQCFAYuj0" }, - "clickTrackingParams": "COsBEKCzAhgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "COsBEKCzAhgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "text": "Presenting Ed Sheeran" } ] }, - "trackingParams": "COsBEKCzAhgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COsBEKCzAhgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -15908,10 +16560,10 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "COkBEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "COkBEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB8gECGAE%3D", - "playlistId": "RDCLAK5uy_nHSqCJjDrW9HBhCNdF6tWPdnOMngOv0wA" + "playlistId": "RDCLAK5uy_mkPdnadBmgXk28mbGxm_5uGeKvHrec208" } }, "text": { @@ -15921,7 +16573,7 @@ } ] }, - "trackingParams": "COkBEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COkBEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -15930,10 +16582,10 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "COgBEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", + "clickTrackingParams": "COgBEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZrmgEEEMPYAg==", "watchPlaylistEndpoint": { "params": "wAEB", - "playlistId": "RDAMPLRDCLAK5uy_nHSqCJjDrW9HBhCNdF6tWPdnOMngOv0wA" + "playlistId": "RDAMPLRDCLAK5uy_mkPdnadBmgXk28mbGxm_5uGeKvHrec208" } }, "text": { @@ -15943,7 +16595,7 @@ } ] }, - "trackingParams": "COgBEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COgBEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -15952,7 +16604,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "COYBEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "COYBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -15966,16 +16618,22 @@ } ] }, - "trackingParams": "COcBEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "COcBEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "COYBEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "COYBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { - "playlistId": "RDCLAK5uy_nHSqCJjDrW9HBhCNdF6tWPdnOMngOv0wA" + "onEmptyQueue": { + "clickTrackingParams": "COYBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "RDCLAK5uy_mkPdnadBmgXk28mbGxm_5uGeKvHrec208" + } + }, + "playlistId": "RDCLAK5uy_mkPdnadBmgXk28mbGxm_5uGeKvHrec208" } } }, @@ -15986,7 +16644,7 @@ } ] }, - "trackingParams": "COYBEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COYBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -15995,7 +16653,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "COQBEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "COQBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -16009,16 +16667,22 @@ } ] }, - "trackingParams": "COUBEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "COUBEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "COQBEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "COQBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { - "playlistId": "RDCLAK5uy_nHSqCJjDrW9HBhCNdF6tWPdnOMngOv0wA" + "onEmptyQueue": { + "clickTrackingParams": "COQBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "RDCLAK5uy_mkPdnadBmgXk28mbGxm_5uGeKvHrec208" + } + }, + "playlistId": "RDCLAK5uy_mkPdnadBmgXk28mbGxm_5uGeKvHrec208" } } }, @@ -16029,7 +16693,7 @@ } ] }, - "trackingParams": "COQBEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COQBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -16038,7 +16702,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "COIBEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "COIBEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -16046,7 +16710,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "COMBEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "COMBEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -16059,13 +16723,13 @@ } ] }, - "trackingParams": "COMBEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COMBEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -16083,7 +16747,7 @@ "defaultText": { "runs": [ { - "text": "Add playlist to library" + "text": "Save playlist to library" } ] }, @@ -16091,11 +16755,11 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "COIBEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "COIBEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "likeEndpoint": { "status": "INDIFFERENT", "target": { - "playlistId": "RDCLAK5uy_nHSqCJjDrW9HBhCNdF6tWPdnOMngOv0wA" + "playlistId": "RDCLAK5uy_mkPdnadBmgXk28mbGxm_5uGeKvHrec208" } } }, @@ -16106,7 +16770,7 @@ } ] }, - "trackingParams": "COIBEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COIBEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -16115,7 +16779,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "COABEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "COABEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -16123,7 +16787,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "COEBEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "COEBEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -16136,7 +16800,7 @@ } ] }, - "trackingParams": "COEBEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COEBEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -16160,11 +16824,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "COABEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "COABEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -16173,9 +16837,9 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CN8BEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CN8BEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", "shareEntityEndpoint": { - "serializedShareEntity": "EitSRENMQUs1dXlfbkhTcUNKakRyVzlIQmhDTmRGNnRXUGRuT01uZ092MHdB", + "serializedShareEntity": "EitSRENMQUs1dXlfbWtQZG5hZEJtZ1hrMjhtYkd4bV81dUdlS3ZIcmVjMjA4", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" } }, @@ -16186,11 +16850,11 @@ } ] }, - "trackingParams": "CN8BEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CN8BEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], - "trackingParams": "CN4BEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CN4BEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "navigationEndpoint": { @@ -16200,9 +16864,9 @@ "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" } }, - "browseId": "VLRDCLAK5uy_nHSqCJjDrW9HBhCNdF6tWPdnOMngOv0wA" + "browseId": "VLRDCLAK5uy_mkPdnadBmgXk28mbGxm_5uGeKvHrec208" }, - "clickTrackingParams": "CNwBEKCzAhgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CNwBEKCzAhgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "subtitle": { "runs": [ @@ -16232,12 +16896,12 @@ "musicPlayButtonRenderer": { "accessibilityPauseData": { "accessibilityData": { - "label": "Pause Pop Gold" + "label": "Pause Acoustic Pop" } }, "accessibilityPlayData": { "accessibilityData": { - "label": "Play Pop Gold" + "label": "Play Acoustic Pop" } }, "activeBackgroundColor": 4278190080, @@ -16246,7 +16910,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -16254,17 +16918,17 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CN0BEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", + "clickTrackingParams": "CN0BEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", "watchPlaylistEndpoint": { "params": "wAEB", - "playlistId": "RDCLAK5uy_nHSqCJjDrW9HBhCNdF6tWPdnOMngOv0wA" + "playlistId": "RDCLAK5uy_mkPdnadBmgXk28mbGxm_5uGeKvHrec208" } }, "playingIcon": { "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CN0BEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CN0BEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -16277,19 +16941,19 @@ "thumbnails": [ { "height": 226, - "url": "https://lh3.googleusercontent.com/rAUuEbLF7CYEYBXU3yAY4npMCzTgPxMhlD-ygH9iv_SuDXGDuDvO0Z4MTh33xAI6o3UnpWFe26MS_hBZ=w226-h226-l90-rj", + "url": "https://lh3.googleusercontent.com/tE56EFMRtd1aLWwyhIOPH55gNMF2c_h_PP30_gGMl1jpbrA48GTbFpuWgKlbRHKo_7gwN-9QvVdp1lZd=w226-h226-l90-rj", "width": 226 }, { "height": 544, - "url": "https://lh3.googleusercontent.com/rAUuEbLF7CYEYBXU3yAY4npMCzTgPxMhlD-ygH9iv_SuDXGDuDvO0Z4MTh33xAI6o3UnpWFe26MS_hBZ=w544-h544-l90-rj", + "url": "https://lh3.googleusercontent.com/tE56EFMRtd1aLWwyhIOPH55gNMF2c_h_PP30_gGMl1jpbrA48GTbFpuWgKlbRHKo_7gwN-9QvVdp1lZd=w544-h544-l90-rj", "width": 544 } ] }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "COoBEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "COoBEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "title": { @@ -16302,15 +16966,15 @@ "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" } }, - "browseId": "VLRDCLAK5uy_nHSqCJjDrW9HBhCNdF6tWPdnOMngOv0wA" + "browseId": "VLRDCLAK5uy_mkPdnadBmgXk28mbGxm_5uGeKvHrec208" }, - "clickTrackingParams": "CNwBEKCzAhgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CNwBEKCzAhgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, - "text": "Pop Gold" + "text": "Acoustic Pop" } ] }, - "trackingParams": "CNwBEKCzAhgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CNwBEKCzAhgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -16330,10 +16994,10 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CNoBEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CNoBEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB8gECGAE%3D", - "playlistId": "RDCLAK5uy_nSq67AJ2d75MFNJ3j_4ClEtSgC-opBM84" + "playlistId": "RDCLAK5uy_m0wlRoNn5iCTTgBedfoOQ19Jq9P3XTLIA" } }, "text": { @@ -16343,7 +17007,7 @@ } ] }, - "trackingParams": "CNoBEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CNoBEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -16352,10 +17016,10 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CNkBEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", + "clickTrackingParams": "CNkBEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZrmgEEEMPYAg==", "watchPlaylistEndpoint": { "params": "wAEB", - "playlistId": "RDAMPLRDCLAK5uy_nSq67AJ2d75MFNJ3j_4ClEtSgC-opBM84" + "playlistId": "RDAMPLRDCLAK5uy_m0wlRoNn5iCTTgBedfoOQ19Jq9P3XTLIA" } }, "text": { @@ -16365,7 +17029,7 @@ } ] }, - "trackingParams": "CNkBEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CNkBEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -16374,7 +17038,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CNcBEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CNcBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -16388,16 +17052,22 @@ } ] }, - "trackingParams": "CNgBEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CNgBEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CNcBEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CNcBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { - "playlistId": "RDCLAK5uy_nSq67AJ2d75MFNJ3j_4ClEtSgC-opBM84" + "onEmptyQueue": { + "clickTrackingParams": "CNcBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "RDCLAK5uy_m0wlRoNn5iCTTgBedfoOQ19Jq9P3XTLIA" + } + }, + "playlistId": "RDCLAK5uy_m0wlRoNn5iCTTgBedfoOQ19Jq9P3XTLIA" } } }, @@ -16408,7 +17078,7 @@ } ] }, - "trackingParams": "CNcBEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CNcBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -16417,7 +17087,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CNUBEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CNUBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -16431,16 +17101,22 @@ } ] }, - "trackingParams": "CNYBEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CNYBEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CNUBEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CNUBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { - "playlistId": "RDCLAK5uy_nSq67AJ2d75MFNJ3j_4ClEtSgC-opBM84" + "onEmptyQueue": { + "clickTrackingParams": "CNUBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "RDCLAK5uy_m0wlRoNn5iCTTgBedfoOQ19Jq9P3XTLIA" + } + }, + "playlistId": "RDCLAK5uy_m0wlRoNn5iCTTgBedfoOQ19Jq9P3XTLIA" } } }, @@ -16451,7 +17127,7 @@ } ] }, - "trackingParams": "CNUBEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CNUBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -16460,7 +17136,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CNMBEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CNMBEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -16468,7 +17144,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CNQBEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CNQBEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -16481,13 +17157,13 @@ } ] }, - "trackingParams": "CNQBEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CNQBEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -16505,7 +17181,7 @@ "defaultText": { "runs": [ { - "text": "Add playlist to library" + "text": "Save playlist to library" } ] }, @@ -16513,11 +17189,11 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CNMBEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CNMBEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "likeEndpoint": { "status": "INDIFFERENT", "target": { - "playlistId": "RDCLAK5uy_nSq67AJ2d75MFNJ3j_4ClEtSgC-opBM84" + "playlistId": "RDCLAK5uy_m0wlRoNn5iCTTgBedfoOQ19Jq9P3XTLIA" } } }, @@ -16528,7 +17204,7 @@ } ] }, - "trackingParams": "CNMBEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CNMBEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -16537,7 +17213,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CNEBEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CNEBEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -16545,7 +17221,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CNIBEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CNIBEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -16558,7 +17234,7 @@ } ] }, - "trackingParams": "CNIBEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CNIBEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -16582,11 +17258,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CNEBEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CNEBEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -16595,9 +17271,9 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CNABEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CNABEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", "shareEntityEndpoint": { - "serializedShareEntity": "EitSRENMQUs1dXlfblNxNjdBSjJkNzVNRk5KM2pfNENsRXRTZ0Mtb3BCTTg0", + "serializedShareEntity": "EitSRENMQUs1dXlfbTB3bFJvTm41aUNUVGdCZWRmb09RMTlKcTlQM1hUTElB", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" } }, @@ -16608,11 +17284,11 @@ } ] }, - "trackingParams": "CNABEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CNABEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], - "trackingParams": "CM8BEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CM8BEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "navigationEndpoint": { @@ -16622,9 +17298,9 @@ "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" } }, - "browseId": "VLRDCLAK5uy_nSq67AJ2d75MFNJ3j_4ClEtSgC-opBM84" + "browseId": "VLRDCLAK5uy_m0wlRoNn5iCTTgBedfoOQ19Jq9P3XTLIA" }, - "clickTrackingParams": "CM0BEKCzAhgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CM0BEKCzAhgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "subtitle": { "runs": [ @@ -16654,12 +17330,12 @@ "musicPlayButtonRenderer": { "accessibilityPauseData": { "accessibilityData": { - "label": "Pause Pop Hits" + "label": "Pause Feel-Good Pop & Rock" } }, "accessibilityPlayData": { "accessibilityData": { - "label": "Play Pop Hits" + "label": "Play Feel-Good Pop & Rock" } }, "activeBackgroundColor": 4278190080, @@ -16668,7 +17344,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -16676,17 +17352,17 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CM4BEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", + "clickTrackingParams": "CM4BEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", "watchPlaylistEndpoint": { "params": "wAEB", - "playlistId": "RDCLAK5uy_nSq67AJ2d75MFNJ3j_4ClEtSgC-opBM84" + "playlistId": "RDCLAK5uy_m0wlRoNn5iCTTgBedfoOQ19Jq9P3XTLIA" } }, "playingIcon": { "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CM4BEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CM4BEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -16699,19 +17375,19 @@ "thumbnails": [ { "height": 226, - "url": "https://lh3.googleusercontent.com/TVlUnnDTtw4uOJnFHX9E6x7R-JjM-2DLTTGFW6QzFx12c4vi8_0KEj9aDXsGLkHs6PPsjkiOP7qtYQ=w226-h226-l90-rj", + "url": "https://lh3.googleusercontent.com/CTtOLB0zp54cCxc6hgTqSAZhMGruxyX0X2hUtRXk_z7XfXGYDwM_tgwTXNvog_knvQ7qvXqLy5_EKMQ=w226-h226-l90-rj", "width": 226 }, { "height": 544, - "url": "https://lh3.googleusercontent.com/TVlUnnDTtw4uOJnFHX9E6x7R-JjM-2DLTTGFW6QzFx12c4vi8_0KEj9aDXsGLkHs6PPsjkiOP7qtYQ=w544-h544-l90-rj", + "url": "https://lh3.googleusercontent.com/CTtOLB0zp54cCxc6hgTqSAZhMGruxyX0X2hUtRXk_z7XfXGYDwM_tgwTXNvog_knvQ7qvXqLy5_EKMQ=w544-h544-l90-rj", "width": 544 } ] }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CNsBEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CNsBEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "title": { @@ -16724,15 +17400,15 @@ "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" } }, - "browseId": "VLRDCLAK5uy_nSq67AJ2d75MFNJ3j_4ClEtSgC-opBM84" + "browseId": "VLRDCLAK5uy_m0wlRoNn5iCTTgBedfoOQ19Jq9P3XTLIA" }, - "clickTrackingParams": "CM0BEKCzAhgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CM0BEKCzAhgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, - "text": "Pop Hits" + "text": "Feel-Good Pop & Rock" } ] }, - "trackingParams": "CM0BEKCzAhgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CM0BEKCzAhgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -16752,1273 +17428,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CMsBEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr", - "watchPlaylistEndpoint": { - "params": "wAEB8gECGAE%3D", - "playlistId": "RDCLAK5uy_nDL8KeBrUagwyISwNmyEiSfYgz1gVCesg" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CMsBEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CMoBEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLRDCLAK5uy_nDL8KeBrUagwyISwNmyEiSfYgz1gVCesg" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CMoBEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CMgBEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Playlist will play next" - } - ] - }, - "trackingParams": "CMkBEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "CMgBEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "RDCLAK5uy_nDL8KeBrUagwyISwNmyEiSfYgz1gVCesg" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CMgBEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CMYBEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Playlist added to queue" - } - ] - }, - "trackingParams": "CMcBEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "CMYBEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "RDCLAK5uy_nDL8KeBrUagwyISwNmyEiSfYgz1gVCesg" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CMYBEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CMQBEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CMUBEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CMUBEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "content": { - "runs": [ - { - "text": "Add favorites to your library after signing in" - } - ] - }, - "title": { - "runs": [ - { - "text": "Save this for later" - } - ] - } - } - } - } - }, - "defaultText": { - "runs": [ - { - "text": "Add playlist to library" - } - ] - }, - "toggledIcon": { - "iconType": "LIBRARY_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CMQBEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "RDCLAK5uy_nDL8KeBrUagwyISwNmyEiSfYgz1gVCesg" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove playlist from library" - } - ] - }, - "trackingParams": "CMQBEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CMIBEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CMMBEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CMMBEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "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": "CMIBEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CMEBEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr", - "shareEntityEndpoint": { - "serializedShareEntity": "EitSRENMQUs1dXlfbkRMOEtlQnJVYWd3eUlTd05teUVpU2ZZZ3oxZ1ZDZXNn", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CMEBEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr" - } - } - ], - "trackingParams": "CMABEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" - } - }, - "browseId": "VLRDCLAK5uy_nDL8KeBrUagwyISwNmyEiSfYgz1gVCesg" - }, - "clickTrackingParams": "CL4BEKCzAhgDIhMI59zswMPz_gIVcOARCB3yMAhr" - }, - "subtitle": { - "runs": [ - { - "text": "Playlist" - }, - { - "text": " • " - }, - { - "text": "YouTube Music" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Mellow Pop Classics" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Mellow Pop Classics" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CL8BEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDCLAK5uy_nDL8KeBrUagwyISwNmyEiSfYgz1gVCesg" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CL8BEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "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/XyREm3Y-HafFR_mxyJF99Pd9zerLQiJ0q62_XEnzPK2g30m_V04iVdzAwyP1T9-_3ruclUASulQFjSY=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/XyREm3Y-HafFR_mxyJF99Pd9zerLQiJ0q62_XEnzPK2g30m_V04iVdzAwyP1T9-_3ruclUASulQFjSY=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CMwBEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" - } - }, - "browseId": "VLRDCLAK5uy_nDL8KeBrUagwyISwNmyEiSfYgz1gVCesg" - }, - "clickTrackingParams": "CL4BEKCzAhgDIhMI59zswMPz_gIVcOARCB3yMAhr" - }, - "text": "Mellow Pop Classics" - } - ] - }, - "trackingParams": "CL4BEKCzAhgDIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "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": "CLwBEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr", - "watchPlaylistEndpoint": { - "params": "wAEB8gECGAE%3D", - "playlistId": "RDCLAK5uy_m_0U5VQNyyzwwH1lRi7cPAAGXqNQnAOqY" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CLwBEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CLsBEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLRDCLAK5uy_m_0U5VQNyyzwwH1lRi7cPAAGXqNQnAOqY" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CLsBEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CLkBEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Playlist will play next" - } - ] - }, - "trackingParams": "CLoBEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "CLkBEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "RDCLAK5uy_m_0U5VQNyyzwwH1lRi7cPAAGXqNQnAOqY" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CLkBEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CLcBEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Playlist added to queue" - } - ] - }, - "trackingParams": "CLgBEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "CLcBEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "RDCLAK5uy_m_0U5VQNyyzwwH1lRi7cPAAGXqNQnAOqY" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CLcBEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CLUBEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CLYBEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CLYBEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "content": { - "runs": [ - { - "text": "Add favorites to your library after signing in" - } - ] - }, - "title": { - "runs": [ - { - "text": "Save this for later" - } - ] - } - } - } - } - }, - "defaultText": { - "runs": [ - { - "text": "Add playlist to library" - } - ] - }, - "toggledIcon": { - "iconType": "LIBRARY_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CLUBEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "RDCLAK5uy_m_0U5VQNyyzwwH1lRi7cPAAGXqNQnAOqY" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove playlist from library" - } - ] - }, - "trackingParams": "CLUBEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CLMBEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CLQBEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CLQBEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "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": "CLMBEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CLIBEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr", - "shareEntityEndpoint": { - "serializedShareEntity": "EitSRENMQUs1dXlfbV8wVTVWUU55eXp3d0gxbFJpN2NQQUFHWHFOUW5BT3FZ", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CLIBEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr" - } - } - ], - "trackingParams": "CLEBEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" - } - }, - "browseId": "VLRDCLAK5uy_m_0U5VQNyyzwwH1lRi7cPAAGXqNQnAOqY" - }, - "clickTrackingParams": "CK8BEKCzAhgEIhMI59zswMPz_gIVcOARCB3yMAhr" - }, - "subtitle": { - "runs": [ - { - "text": "Playlist" - }, - { - "text": " • " - }, - { - "text": "YouTube Music" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Laid-Back Sofa Pop" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Laid-Back Sofa Pop" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CLABEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDCLAK5uy_m_0U5VQNyyzwwH1lRi7cPAAGXqNQnAOqY" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CLABEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "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/IKBTW8jZAxhiUfUkM9u-BLTuuFYrO2833EMuUmH4od_9Acn2pOhh0xOda0iSxo_C24TW3EHGPkkXF2o=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/IKBTW8jZAxhiUfUkM9u-BLTuuFYrO2833EMuUmH4od_9Acn2pOhh0xOda0iSxo_C24TW3EHGPkkXF2o=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CL0BEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" - } - }, - "browseId": "VLRDCLAK5uy_m_0U5VQNyyzwwH1lRi7cPAAGXqNQnAOqY" - }, - "clickTrackingParams": "CK8BEKCzAhgEIhMI59zswMPz_gIVcOARCB3yMAhr" - }, - "text": "Laid-Back Sofa Pop" - } - ] - }, - "trackingParams": "CK8BEKCzAhgEIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "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": "CK0BEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr", - "watchPlaylistEndpoint": { - "params": "wAEB8gECGAE%3D", - "playlistId": "RDCLAK5uy_mdwsZFtQhJyGQPuQA612VoRPXp-OJfzx8" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CK0BEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CKwBEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLRDCLAK5uy_mdwsZFtQhJyGQPuQA612VoRPXp-OJfzx8" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CKwBEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CKoBEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Playlist will play next" - } - ] - }, - "trackingParams": "CKsBEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "CKoBEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "RDCLAK5uy_mdwsZFtQhJyGQPuQA612VoRPXp-OJfzx8" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CKoBEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CKgBEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Playlist added to queue" - } - ] - }, - "trackingParams": "CKkBEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - } - }, - "clickTrackingParams": "CKgBEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "RDCLAK5uy_mdwsZFtQhJyGQPuQA612VoRPXp-OJfzx8" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CKgBEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CKYBEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CKcBEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CKcBEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "content": { - "runs": [ - { - "text": "Add favorites to your library after signing in" - } - ] - }, - "title": { - "runs": [ - { - "text": "Save this for later" - } - ] - } - } - } - } - }, - "defaultText": { - "runs": [ - { - "text": "Add playlist to library" - } - ] - }, - "toggledIcon": { - "iconType": "LIBRARY_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CKYBEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "RDCLAK5uy_mdwsZFtQhJyGQPuQA612VoRPXp-OJfzx8" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove playlist from library" - } - ] - }, - "trackingParams": "CKYBEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CKQBEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CKUBEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CKUBEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "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": "CKQBEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CKMBEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr", - "shareEntityEndpoint": { - "serializedShareEntity": "EitSRENMQUs1dXlfbWR3c1pGdFFoSnlHUVB1UUE2MTJWb1JQWHAtT0pmeng4", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CKMBEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr" - } - } - ], - "trackingParams": "CKIBEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" - } - }, - "browseId": "VLRDCLAK5uy_mdwsZFtQhJyGQPuQA612VoRPXp-OJfzx8" - }, - "clickTrackingParams": "CKABEKCzAhgFIhMI59zswMPz_gIVcOARCB3yMAhr" - }, - "subtitle": { - "runs": [ - { - "text": "Playlist" - }, - { - "text": " • " - }, - { - "text": "YouTube Music" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Hits Unplugged" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Hits Unplugged" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CKEBEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDCLAK5uy_mdwsZFtQhJyGQPuQA612VoRPXp-OJfzx8" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CKEBEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "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/65MUtlrAGhOKw4_lh5ZC5RDbScBQMy_PKrFRLPIFkGe-0jPQCfVvXzik3VNvteuvqbmPuLoWC9GzCNE=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/65MUtlrAGhOKw4_lh5ZC5RDbScBQMy_PKrFRLPIFkGe-0jPQCfVvXzik3VNvteuvqbmPuLoWC9GzCNE=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CK4BEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" - } - }, - "browseId": "VLRDCLAK5uy_mdwsZFtQhJyGQPuQA612VoRPXp-OJfzx8" - }, - "clickTrackingParams": "CKABEKCzAhgFIhMI59zswMPz_gIVcOARCB3yMAhr" - }, - "text": "Hits Unplugged " - } - ] - }, - "trackingParams": "CKABEKCzAhgFIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - { - "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": "CJ4BEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CMsBEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB8gECGAE%3D", "playlistId": "RDCLAK5uy_l1oO11DBO4FD8U7bOrqUKK5Y_PkISUMQM" @@ -18031,7 +17441,7 @@ } ] }, - "trackingParams": "CJ4BEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CMsBEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -18040,7 +17450,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CJ0BEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", + "clickTrackingParams": "CMoBEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZrmgEEEMPYAg==", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLRDCLAK5uy_l1oO11DBO4FD8U7bOrqUKK5Y_PkISUMQM" @@ -18053,7 +17463,7 @@ } ] }, - "trackingParams": "CJ0BEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CMoBEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -18062,7 +17472,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CJsBEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CMgBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -18076,15 +17486,21 @@ } ] }, - "trackingParams": "CJwBEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CMkBEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CJsBEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CMgBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMgBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "RDCLAK5uy_l1oO11DBO4FD8U7bOrqUKK5Y_PkISUMQM" + } + }, "playlistId": "RDCLAK5uy_l1oO11DBO4FD8U7bOrqUKK5Y_PkISUMQM" } } @@ -18096,7 +17512,7 @@ } ] }, - "trackingParams": "CJsBEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CMgBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -18105,7 +17521,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CJkBEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CMYBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -18119,15 +17535,21 @@ } ] }, - "trackingParams": "CJoBEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CMcBEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CJkBEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CMYBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMYBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "RDCLAK5uy_l1oO11DBO4FD8U7bOrqUKK5Y_PkISUMQM" + } + }, "playlistId": "RDCLAK5uy_l1oO11DBO4FD8U7bOrqUKK5Y_PkISUMQM" } } @@ -18139,7 +17561,7 @@ } ] }, - "trackingParams": "CJkBEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CMYBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -18148,7 +17570,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CJcBEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CMQBEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -18156,7 +17578,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CJgBEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CMUBEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -18169,13 +17591,13 @@ } ] }, - "trackingParams": "CJgBEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CMUBEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -18193,7 +17615,7 @@ "defaultText": { "runs": [ { - "text": "Add playlist to library" + "text": "Save playlist to library" } ] }, @@ -18201,7 +17623,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CJcBEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CMQBEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -18216,7 +17638,7 @@ } ] }, - "trackingParams": "CJcBEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CMQBEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -18225,7 +17647,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CJUBEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CMIBEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -18233,7 +17655,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CJYBEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CMMBEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -18246,7 +17668,7 @@ } ] }, - "trackingParams": "CJYBEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CMMBEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -18270,11 +17692,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CJUBEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CMIBEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -18283,7 +17705,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CJQBEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CMEBEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", "shareEntityEndpoint": { "serializedShareEntity": "EitSRENMQUs1dXlfbDFvTzExREJPNEZEOFU3Yk9ycVVLSzVZX1BrSVNVTVFN", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -18296,11 +17718,11 @@ } ] }, - "trackingParams": "CJQBEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CMEBEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], - "trackingParams": "CJMBEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CMABEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "navigationEndpoint": { @@ -18312,7 +17734,7 @@ }, "browseId": "VLRDCLAK5uy_l1oO11DBO4FD8U7bOrqUKK5Y_PkISUMQM" }, - "clickTrackingParams": "CJEBEKCzAhgGIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CL4BEKCzAhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "subtitle": { "runs": [ @@ -18356,7 +17778,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -18364,7 +17786,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CJIBEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", + "clickTrackingParams": "CL8BEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDCLAK5uy_l1oO11DBO4FD8U7bOrqUKK5Y_PkISUMQM" @@ -18374,7 +17796,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CJIBEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CL8BEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -18387,19 +17809,19 @@ "thumbnails": [ { "height": 226, - "url": "https://lh3.googleusercontent.com/PgqPJM_3mqB-QZSMPCfMvRKmOYMnNFZtzW-Y6UqT4V9va_nYKC24Y5OGhUAWaaM78eTMlIAWbHbcdQuB=w226-h226-l90-rj", + "url": "https://lh3.googleusercontent.com/6bfm92uZPSSVQSMGPA7lE0H7AUuxSiJvAy6PaeHKh6qIP_8vvF4aDk-y_YUXFe3KwNtf91G6q2XKzZQ=w226-h226-l90-rj", "width": 226 }, { "height": 544, - "url": "https://lh3.googleusercontent.com/PgqPJM_3mqB-QZSMPCfMvRKmOYMnNFZtzW-Y6UqT4V9va_nYKC24Y5OGhUAWaaM78eTMlIAWbHbcdQuB=w544-h544-l90-rj", + "url": "https://lh3.googleusercontent.com/6bfm92uZPSSVQSMGPA7lE0H7AUuxSiJvAy6PaeHKh6qIP_8vvF4aDk-y_YUXFe3KwNtf91G6q2XKzZQ=w544-h544-l90-rj", "width": 544 } ] }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CJ8BEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CMwBEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "title": { @@ -18414,13 +17836,13 @@ }, "browseId": "VLRDCLAK5uy_l1oO11DBO4FD8U7bOrqUKK5Y_PkISUMQM" }, - "clickTrackingParams": "CJEBEKCzAhgGIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CL4BEKCzAhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "text": "Sweetheart Pop" } ] }, - "trackingParams": "CJEBEKCzAhgGIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CL4BEKCzAhgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -18440,10 +17862,10 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CI8BEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLwBEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB8gECGAE%3D", - "playlistId": "RDCLAK5uy_kPqJ_FiGk-lbXtgM4IF42uokskSJZiVTI" + "playlistId": "RDCLAK5uy_khs3a0YMI9WYs2k1Oqb2ukWX3dA3-lnwI" } }, "text": { @@ -18453,7 +17875,7 @@ } ] }, - "trackingParams": "CI8BEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLwBEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -18462,10 +17884,10 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CI4BEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhrmgEEEMPYAg==", + "clickTrackingParams": "CLsBEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZrmgEEEMPYAg==", "watchPlaylistEndpoint": { "params": "wAEB", - "playlistId": "RDAMPLRDCLAK5uy_kPqJ_FiGk-lbXtgM4IF42uokskSJZiVTI" + "playlistId": "RDAMPLRDCLAK5uy_khs3a0YMI9WYs2k1Oqb2ukWX3dA3-lnwI" } }, "text": { @@ -18475,7 +17897,7 @@ } ] }, - "trackingParams": "CI4BEJvzBRgBIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLsBEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -18484,7 +17906,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CIwBEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLkBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -18498,16 +17920,22 @@ } ] }, - "trackingParams": "CI0BEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CLoBEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CIwBEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CLkBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { - "playlistId": "RDCLAK5uy_kPqJ_FiGk-lbXtgM4IF42uokskSJZiVTI" + "onEmptyQueue": { + "clickTrackingParams": "CLkBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "RDCLAK5uy_khs3a0YMI9WYs2k1Oqb2ukWX3dA3-lnwI" + } + }, + "playlistId": "RDCLAK5uy_khs3a0YMI9WYs2k1Oqb2ukWX3dA3-lnwI" } } }, @@ -18518,7 +17946,7 @@ } ] }, - "trackingParams": "CIwBEL7uBRgCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLkBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -18527,7 +17955,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CIoBEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLcBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", "queueAddEndpoint": { "commands": [ { @@ -18541,16 +17969,22 @@ } ] }, - "trackingParams": "CIsBEMrHAyITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CLgBEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" } } }, - "clickTrackingParams": "CIoBEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CLcBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { - "playlistId": "RDCLAK5uy_kPqJ_FiGk-lbXtgM4IF42uokskSJZiVTI" + "onEmptyQueue": { + "clickTrackingParams": "CLcBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "RDCLAK5uy_khs3a0YMI9WYs2k1Oqb2ukWX3dA3-lnwI" + } + }, + "playlistId": "RDCLAK5uy_khs3a0YMI9WYs2k1Oqb2ukWX3dA3-lnwI" } } }, @@ -18561,7 +17995,7 @@ } ] }, - "trackingParams": "CIoBEPvvBRgDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLcBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -18570,7 +18004,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CIgBEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLUBEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -18578,7 +18012,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CIkBEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLYBEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -18591,13 +18025,13 @@ } ] }, - "trackingParams": "CIkBEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLYBEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -18615,7 +18049,7 @@ "defaultText": { "runs": [ { - "text": "Add playlist to library" + "text": "Save playlist to library" } ] }, @@ -18623,11 +18057,11 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CIgBEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLUBEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "likeEndpoint": { "status": "INDIFFERENT", "target": { - "playlistId": "RDCLAK5uy_kPqJ_FiGk-lbXtgM4IF42uokskSJZiVTI" + "playlistId": "RDCLAK5uy_khs3a0YMI9WYs2k1Oqb2ukWX3dA3-lnwI" } } }, @@ -18638,7 +18072,7 @@ } ] }, - "trackingParams": "CIgBEIT_BRgEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLUBEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -18647,7 +18081,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CIYBEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLMBEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -18655,7 +18089,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CIcBEPBbIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLQBEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", "signInEndpoint": { "hack": true } @@ -18668,7 +18102,7 @@ } ] }, - "trackingParams": "CIcBEPBbIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLQBEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "content": { @@ -18692,11 +18126,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CIYBEMOUBhgFIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CLMBEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -18705,7 +18139,1309 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CIUBEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CLIBEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "shareEntityEndpoint": { + "serializedShareEntity": "EitSRENMQUs1dXlfa2hzM2EwWU1JOVdZczJrMU9xYjJ1a1dYM2RBMy1sbndJ", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CLIBEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + } + ], + "trackingParams": "CLEBEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" + } + }, + "browseId": "VLRDCLAK5uy_khs3a0YMI9WYs2k1Oqb2ukWX3dA3-lnwI" + }, + "clickTrackingParams": "CK8BEKCzAhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "subtitle": { + "runs": [ + { + "text": "Playlist" + }, + { + "text": " • " + }, + { + "text": "YouTube Music" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Relaxing Soft Pop" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Relaxing Soft Pop" + } + }, + "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": "CLABEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDCLAK5uy_khs3a0YMI9WYs2k1Oqb2ukWX3dA3-lnwI" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CLABEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "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/zWQOCjLKxyRWYRe8KEdxnrPDC5ADY211UKQLENHc3qxeInQdpXIlM7No6YM_DYaPvfat3vKttpPNQnA8=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/zWQOCjLKxyRWYRe8KEdxnrPDC5ADY211UKQLENHc3qxeInQdpXIlM7No6YM_DYaPvfat3vKttpPNQnA8=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CL0BEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" + } + }, + "browseId": "VLRDCLAK5uy_khs3a0YMI9WYs2k1Oqb2ukWX3dA3-lnwI" + }, + "clickTrackingParams": "CK8BEKCzAhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "text": "Relaxing Soft Pop" + } + ] + }, + "trackingParams": "CK8BEKCzAhgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "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": "CK0BEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDCLAK5uy_mfdqvCAl8wodlx2P2_Ai2gNkiRDAufkkI" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CK0BEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKwBEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZrmgEEEMPYAg==", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLRDCLAK5uy_mfdqvCAl8wodlx2P2_Ai2gNkiRDAufkkI" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CKwBEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKoBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Playlist will play next" + } + ] + }, + "trackingParams": "CKsBEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "CKoBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKoBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "RDCLAK5uy_mfdqvCAl8wodlx2P2_Ai2gNkiRDAufkkI" + } + }, + "playlistId": "RDCLAK5uy_mfdqvCAl8wodlx2P2_Ai2gNkiRDAufkkI" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CKoBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKgBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Playlist added to queue" + } + ] + }, + "trackingParams": "CKkBEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "CKgBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKgBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "RDCLAK5uy_mfdqvCAl8wodlx2P2_Ai2gNkiRDAufkkI" + } + }, + "playlistId": "RDCLAK5uy_mfdqvCAl8wodlx2P2_Ai2gNkiRDAufkkI" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CKgBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CKYBEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CKcBEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CKcBEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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": "CKYBEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "RDCLAK5uy_mfdqvCAl8wodlx2P2_Ai2gNkiRDAufkkI" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove playlist from library" + } + ] + }, + "trackingParams": "CKYBEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKQBEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CKUBEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CKUBEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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": "CKQBEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKMBEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "shareEntityEndpoint": { + "serializedShareEntity": "EitSRENMQUs1dXlfbWZkcXZDQWw4d29kbHgyUDJfQWkyZ05raVJEQXVma2tJ", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CKMBEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + } + ], + "trackingParams": "CKIBEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" + } + }, + "browseId": "VLRDCLAK5uy_mfdqvCAl8wodlx2P2_Ai2gNkiRDAufkkI" + }, + "clickTrackingParams": "CKABEKCzAhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "subtitle": { + "runs": [ + { + "text": "Playlist" + }, + { + "text": " • " + }, + { + "text": "YouTube Music" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Happy Pop Hits" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Happy Pop 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": "CKEBEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDCLAK5uy_mfdqvCAl8wodlx2P2_Ai2gNkiRDAufkkI" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CKEBEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "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/-ZNC3w71iSs1df7ogBe-LmZj98AzwhHVxJpQVe-nO5VKw8s2M3B8g_7v0mih9NV2dRwX8_a0znewkJI=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/-ZNC3w71iSs1df7ogBe-LmZj98AzwhHVxJpQVe-nO5VKw8s2M3B8g_7v0mih9NV2dRwX8_a0znewkJI=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CK4BEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" + } + }, + "browseId": "VLRDCLAK5uy_mfdqvCAl8wodlx2P2_Ai2gNkiRDAufkkI" + }, + "clickTrackingParams": "CKABEKCzAhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "text": "Happy Pop Hits" + } + ] + }, + "trackingParams": "CKABEKCzAhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "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": "CJ4BEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDCLAK5uy_nxuz8sV0R7aWiLsbDv5W9_Bvp0X9PxFjY" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CJ4BEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJ0BEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZrmgEEEMPYAg==", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLRDCLAK5uy_nxuz8sV0R7aWiLsbDv5W9_Bvp0X9PxFjY" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CJ0BEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJsBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Playlist will play next" + } + ] + }, + "trackingParams": "CJwBEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "CJsBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJsBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "RDCLAK5uy_nxuz8sV0R7aWiLsbDv5W9_Bvp0X9PxFjY" + } + }, + "playlistId": "RDCLAK5uy_nxuz8sV0R7aWiLsbDv5W9_Bvp0X9PxFjY" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CJsBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJkBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Playlist added to queue" + } + ] + }, + "trackingParams": "CJoBEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "CJkBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJkBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "RDCLAK5uy_nxuz8sV0R7aWiLsbDv5W9_Bvp0X9PxFjY" + } + }, + "playlistId": "RDCLAK5uy_nxuz8sV0R7aWiLsbDv5W9_Bvp0X9PxFjY" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJkBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CJcBEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CJgBEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CJgBEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "RDCLAK5uy_nxuz8sV0R7aWiLsbDv5W9_Bvp0X9PxFjY" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove playlist from library" + } + ] + }, + "trackingParams": "CJcBEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJUBEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CJYBEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CJYBEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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": "CJUBEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJQBEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "shareEntityEndpoint": { + "serializedShareEntity": "EitSRENMQUs1dXlfbnh1ejhzVjBSN2FXaUxzYkR2NVc5X0J2cDBYOVB4RmpZ", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJQBEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + } + ], + "trackingParams": "CJMBEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" + } + }, + "browseId": "VLRDCLAK5uy_nxuz8sV0R7aWiLsbDv5W9_Bvp0X9PxFjY" + }, + "clickTrackingParams": "CJEBEKCzAhgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "subtitle": { + "runs": [ + { + "text": "Playlist" + }, + { + "text": " • " + }, + { + "text": "YouTube Music" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause '10s Pop" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play '10s Pop" + } + }, + "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": "CJIBEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDCLAK5uy_nxuz8sV0R7aWiLsbDv5W9_Bvp0X9PxFjY" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CJIBEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "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/ovdrE4a-S81t54orNlhkCVp69Zw-HqPV91fU8TsPeh9ymlmQGz1hwcM-YFL_lF-_s3xsLjZWE86FHA=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/ovdrE4a-S81t54orNlhkCVp69Zw-HqPV91fU8TsPeh9ymlmQGz1hwcM-YFL_lF-_s3xsLjZWE86FHA=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CJ8BEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" + } + }, + "browseId": "VLRDCLAK5uy_nxuz8sV0R7aWiLsbDv5W9_Bvp0X9PxFjY" + }, + "clickTrackingParams": "CJEBEKCzAhgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" + }, + "text": "'10s Pop" + } + ] + }, + "trackingParams": "CJEBEKCzAhgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "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": "CI8BEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDCLAK5uy_kPqJ_FiGk-lbXtgM4IF42uokskSJZiVTI" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CI8BEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CI4BEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZrmgEEEMPYAg==", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLRDCLAK5uy_kPqJ_FiGk-lbXtgM4IF42uokskSJZiVTI" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CI4BEJvzBRgBIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIwBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Playlist will play next" + } + ] + }, + "trackingParams": "CI0BEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "CIwBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIwBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "RDCLAK5uy_kPqJ_FiGk-lbXtgM4IF42uokskSJZiVTI" + } + }, + "playlistId": "RDCLAK5uy_kPqJ_FiGk-lbXtgM4IF42uokskSJZiVTI" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CIwBEL7uBRgCIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIoBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Playlist added to queue" + } + ] + }, + "trackingParams": "CIsBEMrHAyITCOqe8O_6ookDFePQQgUd5Wcmaw==" + } + } + }, + "clickTrackingParams": "CIoBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIoBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "watchEndpoint": { + "playlistId": "RDCLAK5uy_kPqJ_FiGk-lbXtgM4IF42uokskSJZiVTI" + } + }, + "playlistId": "RDCLAK5uy_kPqJ_FiGk-lbXtgM4IF42uokskSJZiVTI" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CIoBEPvvBRgDIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CIgBEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CIkBEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CIkBEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "RDCLAK5uy_kPqJ_FiGk-lbXtgM4IF42uokskSJZiVTI" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove playlist from library" + } + ] + }, + "trackingParams": "CIgBEIT_BRgEIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIYBEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CIcBEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CIcBEPBbIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "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": "CIYBEMOUBhgFIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIUBEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr", "shareEntityEndpoint": { "serializedShareEntity": "EitSRENMQUs1dXlfa1BxSl9GaUdrLWxiWHRnTTRJRjQydW9rc2tTSlppVlRJ", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -18718,11 +19454,11 @@ } ] }, - "trackingParams": "CIUBEJH7BRgGIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIUBEJH7BRgGIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } ], - "trackingParams": "CIQBEKc7IhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIQBEKc7IhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "navigationEndpoint": { @@ -18734,7 +19470,7 @@ }, "browseId": "VLRDCLAK5uy_kPqJ_FiGk-lbXtgM4IF42uokskSJZiVTI" }, - "clickTrackingParams": "CIIBEKCzAhgHIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CIIBEKCzAhgHIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "subtitle": { "runs": [ @@ -18778,7 +19514,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -18786,7 +19522,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CIMBEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==", + "clickTrackingParams": "CIMBEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDCLAK5uy_kPqJ_FiGk-lbXtgM4IF42uokskSJZiVTI" @@ -18796,7 +19532,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CIMBEMjeAiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CIMBEMjeAiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -18821,7 +19557,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CJABEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CJABEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "title": { @@ -18836,13 +19572,13 @@ }, "browseId": "VLRDCLAK5uy_kPqJ_FiGk-lbXtgM4IF42uokskSJZiVTI" }, - "clickTrackingParams": "CIIBEKCzAhgHIhMI59zswMPz_gIVcOARCB3yMAhr" + "clickTrackingParams": "CIIBEKCzAhgHIhMI6p7w7_qiiQMV49BCBR3lZyZr" }, "text": "Cardio Pop" } ] }, - "trackingParams": "CIIBEKCzAhgHIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIIBEKCzAhgHIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -18862,10 +19598,10 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CIABEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CIABEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB8gECGAE%3D", - "playlistId": "RDCLAK5uy_lBNUteBRencHzKelu5iDHwLF6mYqjL-JU" + "playlistId": "RDCLAK5uy_nfs_t4FUu00E5ED6lveEBBX1VMYe1mFjk" } }, "text": { @@ -18875,7 +19611,7 @@ } ] }, - "trackingParams": "CIABEJrzBRgAIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CIABEJrzBRgAIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, { @@ -18884,10 +19620,10 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CH8Qm_MFGAEiEwjn3OzAw_P-AhVw4BEIHfIwCGuaAQQQw9gC", + "clickTrackingParams": "CH8Qm_MFGAEiEwjqnvDv-qKJAxXj0EIFHeVnJmuaAQQQw9gC", "watchPlaylistEndpoint": { "params": "wAEB", - "playlistId": "RDAMPLRDCLAK5uy_lBNUteBRencHzKelu5iDHwLF6mYqjL-JU" + "playlistId": "RDAMPLRDCLAK5uy_nfs_t4FUu00E5ED6lveEBBX1VMYe1mFjk" } }, "text": { @@ -18897,7 +19633,7 @@ } ] }, - "trackingParams": "CH8Qm_MFGAEiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CH8Qm_MFGAEiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -18906,7 +19642,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CH0Qvu4FGAIiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CH0Qvu4FGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "queueAddEndpoint": { "commands": [ { @@ -18920,16 +19656,22 @@ } ] }, - "trackingParams": "CH4QyscDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CH4QyscDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } }, - "clickTrackingParams": "CH0Qvu4FGAIiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "clickTrackingParams": "CH0Qvu4FGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { - "playlistId": "RDCLAK5uy_lBNUteBRencHzKelu5iDHwLF6mYqjL-JU" + "onEmptyQueue": { + "clickTrackingParams": "CH0Qvu4FGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=", + "watchEndpoint": { + "playlistId": "RDCLAK5uy_nfs_t4FUu00E5ED6lveEBBX1VMYe1mFjk" + } + }, + "playlistId": "RDCLAK5uy_nfs_t4FUu00E5ED6lveEBBX1VMYe1mFjk" } } }, @@ -18940,7 +19682,7 @@ } ] }, - "trackingParams": "CH0Qvu4FGAIiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CH0Qvu4FGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -18949,7 +19691,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CHsQ--8FGAMiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CHsQ--8FGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "queueAddEndpoint": { "commands": [ { @@ -18963,16 +19705,22 @@ } ] }, - "trackingParams": "CHwQyscDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CHwQyscDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } }, - "clickTrackingParams": "CHsQ--8FGAMiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "clickTrackingParams": "CHsQ--8FGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { - "playlistId": "RDCLAK5uy_lBNUteBRencHzKelu5iDHwLF6mYqjL-JU" + "onEmptyQueue": { + "clickTrackingParams": "CHsQ--8FGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=", + "watchEndpoint": { + "playlistId": "RDCLAK5uy_nfs_t4FUu00E5ED6lveEBBX1VMYe1mFjk" + } + }, + "playlistId": "RDCLAK5uy_nfs_t4FUu00E5ED6lveEBBX1VMYe1mFjk" } } }, @@ -18983,7 +19731,7 @@ } ] }, - "trackingParams": "CHsQ--8FGAMiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CHsQ--8FGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -18992,7 +19740,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CHkQhP8FGAQiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CHkQhP8FGAQiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -19000,7 +19748,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CHoQ8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CHoQ8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "signInEndpoint": { "hack": true } @@ -19013,13 +19761,13 @@ } ] }, - "trackingParams": "CHoQ8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CHoQ8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -19037,7 +19785,7 @@ "defaultText": { "runs": [ { - "text": "Add playlist to library" + "text": "Save playlist to library" } ] }, @@ -19045,11 +19793,11 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CHkQhP8FGAQiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CHkQhP8FGAQiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "likeEndpoint": { "status": "INDIFFERENT", "target": { - "playlistId": "RDCLAK5uy_lBNUteBRencHzKelu5iDHwLF6mYqjL-JU" + "playlistId": "RDCLAK5uy_nfs_t4FUu00E5ED6lveEBBX1VMYe1mFjk" } } }, @@ -19060,7 +19808,7 @@ } ] }, - "trackingParams": "CHkQhP8FGAQiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CHkQhP8FGAQiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -19069,7 +19817,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CHcQw5QGGAUiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CHcQw5QGGAUiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -19077,7 +19825,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CHgQ8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CHgQ8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "signInEndpoint": { "hack": true } @@ -19090,7 +19838,7 @@ } ] }, - "trackingParams": "CHgQ8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CHgQ8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, "content": { @@ -19114,11 +19862,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CHcQw5QGGAUiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CHcQw5QGGAUiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -19127,9 +19875,9 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CHYQkfsFGAYiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CHYQkfsFGAYiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "shareEntityEndpoint": { - "serializedShareEntity": "EitSRENMQUs1dXlfbEJOVXRlQlJlbmNIektlbHU1aURId0xGNm1ZcWpMLUpV", + "serializedShareEntity": "EitSRENMQUs1dXlfbmZzX3Q0RlV1MDBFNUVENmx2ZUVCQlgxVk1ZZTFtRmpr", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" } }, @@ -19140,11 +19888,11 @@ } ] }, - "trackingParams": "CHYQkfsFGAYiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CHYQkfsFGAYiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } } ], - "trackingParams": "CHUQpzsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CHUQpzsiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, "navigationEndpoint": { @@ -19154,9 +19902,9 @@ "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" } }, - "browseId": "VLRDCLAK5uy_lBNUteBRencHzKelu5iDHwLF6mYqjL-JU" + "browseId": "VLRDCLAK5uy_nfs_t4FUu00E5ED6lveEBBX1VMYe1mFjk" }, - "clickTrackingParams": "CHMQoLMCGAgiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "clickTrackingParams": "CHMQoLMCGAgiEwjqnvDv-qKJAxXj0EIFHeVnJms=" }, "subtitle": { "runs": [ @@ -19186,12 +19934,12 @@ "musicPlayButtonRenderer": { "accessibilityPauseData": { "accessibilityData": { - "label": "Pause Pop Certified" + "label": "Pause Dance-Pop Bangers" } }, "accessibilityPlayData": { "accessibilityData": { - "label": "Play Pop Certified" + "label": "Play Dance-Pop Bangers" } }, "activeBackgroundColor": 4278190080, @@ -19200,7 +19948,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -19208,17 +19956,17 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CHQQyN4CIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CHQQyN4CIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB", - "playlistId": "RDCLAK5uy_lBNUteBRencHzKelu5iDHwLF6mYqjL-JU" + "playlistId": "RDCLAK5uy_nfs_t4FUu00E5ED6lveEBBX1VMYe1mFjk" } }, "playingIcon": { "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CHQQyN4CIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CHQQyN4CIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -19231,19 +19979,19 @@ "thumbnails": [ { "height": 226, - "url": "https://lh3.googleusercontent.com/B26Q3bpmcX4gacK4BWxbB57ABCd1ibmXeKPXK5ISlXKEyRgqxGMOggdrt4gOqky_Ad8tKbpwn1M0mq8U=w226-h226-l90-rj", + "url": "https://lh3.googleusercontent.com/371QuBVeCF9Q2wygw9z69I1GqwXXpmrSHsgmbhc1YofGXEloyB2EiV5vFx_GEDu23J2ieG9CTNOa7A=w226-h226-l90-rj", "width": 226 }, { "height": 544, - "url": "https://lh3.googleusercontent.com/B26Q3bpmcX4gacK4BWxbB57ABCd1ibmXeKPXK5ISlXKEyRgqxGMOggdrt4gOqky_Ad8tKbpwn1M0mq8U=w544-h544-l90-rj", + "url": "https://lh3.googleusercontent.com/371QuBVeCF9Q2wygw9z69I1GqwXXpmrSHsgmbhc1YofGXEloyB2EiV5vFx_GEDu23J2ieG9CTNOa7A=w544-h544-l90-rj", "width": 544 } ] }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CIEBEIS_AiITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CIEBEIS_AiITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "title": { @@ -19256,15 +20004,15 @@ "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" } }, - "browseId": "VLRDCLAK5uy_lBNUteBRencHzKelu5iDHwLF6mYqjL-JU" + "browseId": "VLRDCLAK5uy_nfs_t4FUu00E5ED6lveEBBX1VMYe1mFjk" }, - "clickTrackingParams": "CHMQoLMCGAgiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "clickTrackingParams": "CHMQoLMCGAgiEwjqnvDv-qKJAxXj0EIFHeVnJms=" }, - "text": "Pop Certified" + "text": "Dance-Pop Bangers" } ] }, - "trackingParams": "CHMQoLMCGAgiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CHMQoLMCGAgiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -19284,10 +20032,10 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CHEQmvMFGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CHEQmvMFGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "watchPlaylistEndpoint": { "params": "wAEB8gECGAE%3D", - "playlistId": "RDCLAK5uy_kY7Uomg8uSGAGuvMIKc3HsVg_ipocKTrE" + "playlistId": "RDCLAK5uy_kEeMXVnyMll_xhEBH1Aza4lEYO58yeQ0M" } }, "text": { @@ -19297,7 +20045,7 @@ } ] }, - "trackingParams": "CHEQmvMFGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CHEQmvMFGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -19306,10 +20054,10 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CHAQm_MFGAEiEwjn3OzAw_P-AhVw4BEIHfIwCGuaAQQQw9gC", + "clickTrackingParams": "CHAQm_MFGAEiEwjqnvDv-qKJAxXj0EIFHeVnJmuaAQQQw9gC", "watchPlaylistEndpoint": { "params": "wAEB", - "playlistId": "RDAMPLRDCLAK5uy_kY7Uomg8uSGAGuvMIKc3HsVg_ipocKTrE" + "playlistId": "RDAMPLRDCLAK5uy_kEeMXVnyMll_xhEBH1Aza4lEYO58yeQ0M" } }, "text": { @@ -19319,7 +20067,7 @@ } ] }, - "trackingParams": "CHAQm_MFGAEiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CHAQm_MFGAEiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -19328,7 +20076,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CG4Qvu4FGAIiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CG4Qvu4FGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "queueAddEndpoint": { "commands": [ { @@ -19342,16 +20090,22 @@ } ] }, - "trackingParams": "CG8QyscDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CG8QyscDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } }, - "clickTrackingParams": "CG4Qvu4FGAIiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "clickTrackingParams": "CG4Qvu4FGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { - "playlistId": "RDCLAK5uy_kY7Uomg8uSGAGuvMIKc3HsVg_ipocKTrE" + "onEmptyQueue": { + "clickTrackingParams": "CG4Qvu4FGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=", + "watchEndpoint": { + "playlistId": "RDCLAK5uy_kEeMXVnyMll_xhEBH1Aza4lEYO58yeQ0M" + } + }, + "playlistId": "RDCLAK5uy_kEeMXVnyMll_xhEBH1Aza4lEYO58yeQ0M" } } }, @@ -19362,7 +20116,7 @@ } ] }, - "trackingParams": "CG4Qvu4FGAIiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CG4Qvu4FGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -19371,7 +20125,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CGwQ--8FGAMiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CGwQ--8FGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "queueAddEndpoint": { "commands": [ { @@ -19385,16 +20139,22 @@ } ] }, - "trackingParams": "CG0QyscDIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CG0QyscDIhMI6p7w7_qiiQMV49BCBR3lZyZr" } } }, - "clickTrackingParams": "CGwQ--8FGAMiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "clickTrackingParams": "CGwQ--8FGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { - "playlistId": "RDCLAK5uy_kY7Uomg8uSGAGuvMIKc3HsVg_ipocKTrE" + "onEmptyQueue": { + "clickTrackingParams": "CGwQ--8FGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=", + "watchEndpoint": { + "playlistId": "RDCLAK5uy_kEeMXVnyMll_xhEBH1Aza4lEYO58yeQ0M" + } + }, + "playlistId": "RDCLAK5uy_kEeMXVnyMll_xhEBH1Aza4lEYO58yeQ0M" } } }, @@ -19405,7 +20165,7 @@ } ] }, - "trackingParams": "CGwQ--8FGAMiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CGwQ--8FGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -19414,7 +20174,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CGoQhP8FGAQiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CGoQhP8FGAQiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -19422,7 +20182,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CGsQ8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CGsQ8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "signInEndpoint": { "hack": true } @@ -19435,13 +20195,13 @@ } ] }, - "trackingParams": "CGsQ8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CGsQ8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -19459,7 +20219,7 @@ "defaultText": { "runs": [ { - "text": "Add playlist to library" + "text": "Save playlist to library" } ] }, @@ -19467,11 +20227,11 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CGoQhP8FGAQiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CGoQhP8FGAQiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "likeEndpoint": { "status": "INDIFFERENT", "target": { - "playlistId": "RDCLAK5uy_kY7Uomg8uSGAGuvMIKc3HsVg_ipocKTrE" + "playlistId": "RDCLAK5uy_kEeMXVnyMll_xhEBH1Aza4lEYO58yeQ0M" } } }, @@ -19482,7 +20242,7 @@ } ] }, - "trackingParams": "CGoQhP8FGAQiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CGoQhP8FGAQiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -19491,7 +20251,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CGgQw5QGGAUiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CGgQw5QGGAUiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -19499,7 +20259,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CGkQ8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CGkQ8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "signInEndpoint": { "hack": true } @@ -19512,7 +20272,7 @@ } ] }, - "trackingParams": "CGkQ8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CGkQ8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, "content": { @@ -19536,11 +20296,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CGgQw5QGGAUiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CGgQw5QGGAUiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -19549,9 +20309,9 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CGcQkfsFGAYiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CGcQkfsFGAYiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "shareEntityEndpoint": { - "serializedShareEntity": "EitSRENMQUs1dXlfa1k3VW9tZzh1U0dBR3V2TUlLYzNIc1ZnX2lwb2NLVHJF", + "serializedShareEntity": "EitSRENMQUs1dXlfa0VlTVhWbnlNbGxfeGhFQkgxQXphNGxFWU81OHllUTBN", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" } }, @@ -19562,11 +20322,11 @@ } ] }, - "trackingParams": "CGcQkfsFGAYiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CGcQkfsFGAYiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } } ], - "trackingParams": "CGYQpzsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CGYQpzsiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, "navigationEndpoint": { @@ -19576,9 +20336,9 @@ "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" } }, - "browseId": "VLRDCLAK5uy_kY7Uomg8uSGAGuvMIKc3HsVg_ipocKTrE" + "browseId": "VLRDCLAK5uy_kEeMXVnyMll_xhEBH1Aza4lEYO58yeQ0M" }, - "clickTrackingParams": "CGQQoLMCGAkiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "clickTrackingParams": "CGQQoLMCGAkiEwjqnvDv-qKJAxXj0EIFHeVnJms=" }, "subtitle": { "runs": [ @@ -19608,12 +20368,12 @@ "musicPlayButtonRenderer": { "accessibilityPauseData": { "accessibilityData": { - "label": "Pause Feel-good Pop Hits" + "label": "Pause Easy Pop" } }, "accessibilityPlayData": { "accessibilityData": { - "label": "Play Feel-good Pop Hits" + "label": "Play Easy Pop" } }, "activeBackgroundColor": 4278190080, @@ -19622,7 +20382,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -19630,17 +20390,17 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CGUQyN4CIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CGUQyN4CIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchPlaylistEndpoint": { "params": "wAEB", - "playlistId": "RDCLAK5uy_kY7Uomg8uSGAGuvMIKc3HsVg_ipocKTrE" + "playlistId": "RDCLAK5uy_kEeMXVnyMll_xhEBH1Aza4lEYO58yeQ0M" } }, "playingIcon": { "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CGUQyN4CIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CGUQyN4CIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -19653,19 +20413,19 @@ "thumbnails": [ { "height": 226, - "url": "https://lh3.googleusercontent.com/PiXWU8bqSkti4dEbt7LKktLiNd0ugLjUv2UC4_j5cmlosNRC5Cuas-sN8w-tLHs1Nvd9fIT72L7kVXqE=w226-h226-l90-rj", + "url": "https://lh3.googleusercontent.com/sjJmo2UHHhmJPwk7Nc-qRraxmWUUVF1OL-WUCKH4NpKxpRiBah7pbS47BwbwRfqfL7IRlFmjhdx82iQ=w226-h226-l90-rj", "width": 226 }, { "height": 544, - "url": "https://lh3.googleusercontent.com/PiXWU8bqSkti4dEbt7LKktLiNd0ugLjUv2UC4_j5cmlosNRC5Cuas-sN8w-tLHs1Nvd9fIT72L7kVXqE=w544-h544-l90-rj", + "url": "https://lh3.googleusercontent.com/sjJmo2UHHhmJPwk7Nc-qRraxmWUUVF1OL-WUCKH4NpKxpRiBah7pbS47BwbwRfqfL7IRlFmjhdx82iQ=w544-h544-l90-rj", "width": 544 } ] }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CHIQhL8CIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CHIQhL8CIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "title": { @@ -19678,15 +20438,15 @@ "pageType": "MUSIC_PAGE_TYPE_PLAYLIST" } }, - "browseId": "VLRDCLAK5uy_kY7Uomg8uSGAGuvMIKc3HsVg_ipocKTrE" + "browseId": "VLRDCLAK5uy_kEeMXVnyMll_xhEBH1Aza4lEYO58yeQ0M" }, - "clickTrackingParams": "CGQQoLMCGAkiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "clickTrackingParams": "CGQQoLMCGAkiEwjqnvDv-qKJAxXj0EIFHeVnJms=" }, - "text": "Feel-good Pop Hits" + "text": "Easy Pop" } ] }, - "trackingParams": "CGQQoLMCGAkiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CGQQoLMCGAkiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } } ], @@ -19705,11 +20465,11 @@ } ] }, - "trackingParams": "CPoBEIi8BCITCOfc7MDD8_4CFXDgEQgd8jAIaw==" + "trackingParams": "CPoBEIi8BCITCOqe8O_6ookDFePQQgUd5Wcmaw==" } }, "itemSize": "COLLECTION_STYLE_ITEM_SIZE_MEDIUM", - "trackingParams": "CGMQobMCGAQiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CGMQobMCGAQiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -19732,7 +20492,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CGAQmvMFGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CGAQmvMFGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "watchPlaylistEndpoint": { "params": "wAEB8gECGAE%3D", "playlistId": "RDAOsPjiovzEgfLLK2w1FvFTOg" @@ -19745,7 +20505,7 @@ } ] }, - "trackingParams": "CGAQmvMFGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CGAQmvMFGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -19754,7 +20514,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CF8Qm_MFGAEiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CF8Qm_MFGAEiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDEMsPjiovzEgfLLK2w1FvFTOg" @@ -19767,7 +20527,7 @@ } ] }, - "trackingParams": "CF8Qm_MFGAEiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CF8Qm_MFGAEiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -19776,7 +20536,7 @@ "iconType": "SUBSCRIBE" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CF0QqJwGGAIiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CF0QqJwGGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -19784,7 +20544,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CF4Q8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CF4Q8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "signInEndpoint": { "hack": true } @@ -19797,7 +20557,7 @@ } ] }, - "trackingParams": "CF4Q8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CF4Q8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, "content": { @@ -19835,7 +20595,7 @@ } ] }, - "trackingParams": "CF0QqJwGGAIiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CF0QqJwGGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -19844,7 +20604,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CFwQkfsFGAMiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CFwQkfsFGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "shareEntityEndpoint": { "serializedShareEntity": "GhhVQ3hyeHdGVEJVM0RUSjlZNVRLZVc3S0E%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -19857,11 +20617,11 @@ } ] }, - "trackingParams": "CFwQkfsFGAMiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CFwQkfsFGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } } ], - "trackingParams": "CFsQpzsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CFsQpzsiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, "navigationEndpoint": { @@ -19873,12 +20633,12 @@ }, "browseId": "UCxrxwFTBU3DTJ9Y5TKeW7KA" }, - "clickTrackingParams": "CFoQoLMCGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "clickTrackingParams": "CFoQoLMCGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=" }, "subtitle": { "runs": [ { - "text": "6.63M subscribers" + "text": "7.5M subscribers" } ] }, @@ -19888,19 +20648,19 @@ "thumbnails": [ { "height": 226, - "url": "https://lh3.googleusercontent.com/a-/ACB-R5QMZT913rWvdAb53sd2bP0-iPjP8MOi-7n5Dcps=w226-h226-l90-rj", + "url": "https://lh3.googleusercontent.com/a-/ALV-UjVuVuwStswGeRiYCLjwBsa9zql7OdAHp6tXa9Q2gYnIyPJRY2E=w226-h226-l90-rj", "width": 226 }, { "height": 544, - "url": "https://lh3.googleusercontent.com/a-/ACB-R5QMZT913rWvdAb53sd2bP0-iPjP8MOi-7n5Dcps=w544-h544-l90-rj", + "url": "https://lh3.googleusercontent.com/a-/ALV-UjVuVuwStswGeRiYCLjwBsa9zql7OdAHp6tXa9Q2gYnIyPJRY2E=w544-h544-l90-rj", "width": 544 } ] }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CGEQhL8CIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CGEQhL8CIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "title": { @@ -19915,13 +20675,13 @@ }, "browseId": "UCxrxwFTBU3DTJ9Y5TKeW7KA" }, - "clickTrackingParams": "CFoQoLMCGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "clickTrackingParams": "CFoQoLMCGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=" }, "text": "Lewis Capaldi" } ] }, - "trackingParams": "CFoQoLMCGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CFoQoLMCGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -19941,634 +20701,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CFgQmvMFGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", - "watchPlaylistEndpoint": { - "params": "wAEB8gECGAE%3D", - "playlistId": "RDAOSuoM_jxfse1_g8uCO7MCtg" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CFgQmvMFGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CFcQm_MFGAEiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDEMSuoM_jxfse1_g8uCO7MCtg" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CFcQm_MFGAEiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "SUBSCRIBE" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CFUQqJwGGAIiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CFYQ8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CFYQ8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - }, - "content": { - "runs": [ - { - "text": "Sign in to subscribe to this artist and never miss a beat" - } - ] - }, - "title": { - "runs": [ - { - "text": "Subscribe to this artist" - } - ] - } - } - } - } - }, - "defaultText": { - "runs": [ - { - "text": "Subscribe" - } - ] - }, - "toggledIcon": { - "iconType": "SUBSCRIBE" - }, - "toggledText": { - "runs": [ - { - "text": "Unsubscribe" - } - ] - }, - "trackingParams": "CFUQqJwGGAIiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CFQQkfsFGAMiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", - "shareEntityEndpoint": { - "serializedShareEntity": "GhhVQ2lEQnR1OHdoQWRVZ2lKNW8xZzdzUVE%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CFQQkfsFGAMiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - } - ], - "trackingParams": "CFMQpzsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UCiDBtu8whAdUgiJ5o1g7sQQ" - }, - "clickTrackingParams": "CFIQoLMCGAEiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - }, - "subtitle": { - "runs": [ - { - "text": "1.95M subscribers" - } - ] - }, - "thumbnailRenderer": { - "musicThumbnailRenderer": { - "thumbnail": { - "thumbnails": [ - { - "height": 226, - "url": "https://lh3.googleusercontent.com/lsTSUtfX9JIjT2Z44QCd-Wi6coedAV0OeHdq3fB0puqTt2-OvKuuMcCdwmxAm5r4BfUAB3swOEYvG48z=w226-h226-p-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/lsTSUtfX9JIjT2Z44QCd-Wi6coedAV0OeHdq3fB0puqTt2-OvKuuMcCdwmxAm5r4BfUAB3swOEYvG48z=w544-h544-p-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CFkQhL8CIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UCiDBtu8whAdUgiJ5o1g7sQQ" - }, - "clickTrackingParams": "CFIQoLMCGAEiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - }, - "text": "James Bay" - } - ] - }, - "trackingParams": "CFIQoLMCGAEiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - }, - { - "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": "CFAQmvMFGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", - "watchPlaylistEndpoint": { - "params": "wAEB8gECGAE%3D", - "playlistId": "RDAOVeZA-2uzuUKdoB81Ha3srw" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CFAQmvMFGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CE8Qm_MFGAEiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDEMVeZA-2uzuUKdoB81Ha3srw" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CE8Qm_MFGAEiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "SUBSCRIBE" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CE0QqJwGGAIiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CE4Q8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CE4Q8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - }, - "content": { - "runs": [ - { - "text": "Sign in to subscribe to this artist and never miss a beat" - } - ] - }, - "title": { - "runs": [ - { - "text": "Subscribe to this artist" - } - ] - } - } - } - } - }, - "defaultText": { - "runs": [ - { - "text": "Subscribe" - } - ] - }, - "toggledIcon": { - "iconType": "SUBSCRIBE" - }, - "toggledText": { - "runs": [ - { - "text": "Unsubscribe" - } - ] - }, - "trackingParams": "CE0QqJwGGAIiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CEwQkfsFGAMiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", - "shareEntityEndpoint": { - "serializedShareEntity": "GhhVQ2dwQnNhRFcybl82cnV6aHQzd3ZQMEE%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CEwQkfsFGAMiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - } - ], - "trackingParams": "CEsQpzsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UCgpBsaDW2n_6ruzht3wvP0A" - }, - "clickTrackingParams": "CEoQoLMCGAIiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - }, - "subtitle": { - "runs": [ - { - "text": "16.2M subscribers" - } - ] - }, - "thumbnailRenderer": { - "musicThumbnailRenderer": { - "thumbnail": { - "thumbnails": [ - { - "height": 226, - "url": "https://lh3.googleusercontent.com/TjSOLC2wjZtZZ6vKHV0PfHx6xxsk1csVyV-O-NEeASSAuxhgin8y_TE5Ee-fOuO1jrbaQUi0ZejiMrVv=w226-h226-p-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/TjSOLC2wjZtZZ6vKHV0PfHx6xxsk1csVyV-O-NEeASSAuxhgin8y_TE5Ee-fOuO1jrbaQUi0ZejiMrVv=w544-h544-p-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CFEQhL8CIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UCgpBsaDW2n_6ruzht3wvP0A" - }, - "clickTrackingParams": "CEoQoLMCGAIiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - }, - "text": "Sam Smith" - } - ] - }, - "trackingParams": "CEoQoLMCGAIiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - }, - { - "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": "CEgQmvMFGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", - "watchPlaylistEndpoint": { - "params": "wAEB8gECGAE%3D", - "playlistId": "RDAOu1KkFD9Sel5i_Uhdfmcouw" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CEgQmvMFGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CEcQm_MFGAEiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDEMu1KkFD9Sel5i_Uhdfmcouw" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CEcQm_MFGAEiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "SUBSCRIBE" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CEUQqJwGGAIiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CEYQ8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CEYQ8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - }, - "content": { - "runs": [ - { - "text": "Sign in to subscribe to this artist and never miss a beat" - } - ] - }, - "title": { - "runs": [ - { - "text": "Subscribe to this artist" - } - ] - } - } - } - } - }, - "defaultText": { - "runs": [ - { - "text": "Subscribe" - } - ] - }, - "toggledIcon": { - "iconType": "SUBSCRIBE" - }, - "toggledText": { - "runs": [ - { - "text": "Unsubscribe" - } - ] - }, - "trackingParams": "CEUQqJwGGAIiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CEQQkfsFGAMiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", - "shareEntityEndpoint": { - "serializedShareEntity": "GhhVQ2w2LTI0Y3N6S3FJWUxrQnpvMDJYelE%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CEQQkfsFGAMiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - } - ], - "trackingParams": "CEMQpzsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UCl6-24cszKqIYLkBzo02XzQ" - }, - "clickTrackingParams": "CEIQoLMCGAMiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - }, - "subtitle": { - "runs": [ - { - "text": "5.13M subscribers" - } - ] - }, - "thumbnailRenderer": { - "musicThumbnailRenderer": { - "thumbnail": { - "thumbnails": [ - { - "height": 226, - "url": "https://lh3.googleusercontent.com/gJqf-39ut3mK8h9xMWcd1vD-C0LPfx9G5mWQ73gXwpyDX124GpFdd4fk3D8L6kUJRg58-IoLVQ=w226-h226-p-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/gJqf-39ut3mK8h9xMWcd1vD-C0LPfx9G5mWQ73gXwpyDX124GpFdd4fk3D8L6kUJRg58-IoLVQ=w544-h544-p-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CEkQhL8CIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UCl6-24cszKqIYLkBzo02XzQ" - }, - "clickTrackingParams": "CEIQoLMCGAMiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - }, - "text": "Lukas Graham" - } - ] - }, - "trackingParams": "CEIQoLMCGAMiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - }, - { - "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": "CEAQmvMFGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CFgQmvMFGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "watchPlaylistEndpoint": { "params": "wAEB8gECGAE%3D", "playlistId": "RDAOojbp98PlUg61wCtEnpxDNw" @@ -20581,7 +20714,7 @@ } ] }, - "trackingParams": "CEAQmvMFGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CFgQmvMFGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -20590,7 +20723,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CD8Qm_MFGAEiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CFcQm_MFGAEiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDEMojbp98PlUg61wCtEnpxDNw" @@ -20603,7 +20736,7 @@ } ] }, - "trackingParams": "CD8Qm_MFGAEiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CFcQm_MFGAEiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -20612,7 +20745,7 @@ "iconType": "SUBSCRIBE" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CD0QqJwGGAIiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CFUQqJwGGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -20620,7 +20753,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CD4Q8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CFYQ8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "signInEndpoint": { "hack": true } @@ -20633,7 +20766,7 @@ } ] }, - "trackingParams": "CD4Q8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CFYQ8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, "content": { @@ -20671,7 +20804,7 @@ } ] }, - "trackingParams": "CD0QqJwGGAIiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CFUQqJwGGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -20680,7 +20813,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CDwQkfsFGAMiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CFQQkfsFGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "shareEntityEndpoint": { "serializedShareEntity": "GhhVQzZaamxMSmhxUDc5bnFHcjNJYzZBZGc%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -20693,11 +20826,11 @@ } ] }, - "trackingParams": "CDwQkfsFGAMiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CFQQkfsFGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } } ], - "trackingParams": "CDsQpzsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CFMQpzsiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, "navigationEndpoint": { @@ -20709,12 +20842,12 @@ }, "browseId": "UC6ZjlLJhqP79nqGr3Ic6Adg" }, - "clickTrackingParams": "CDoQoLMCGAQiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "clickTrackingParams": "CFIQoLMCGAEiEwjqnvDv-qKJAxXj0EIFHeVnJms=" }, "subtitle": { "runs": [ { - "text": "29.9M subscribers" + "text": "30.3M subscribers" } ] }, @@ -20736,7 +20869,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CEEQhL8CIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CFkQhL8CIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "title": { @@ -20751,13 +20884,13 @@ }, "browseId": "UC6ZjlLJhqP79nqGr3Ic6Adg" }, - "clickTrackingParams": "CDoQoLMCGAQiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "clickTrackingParams": "CFIQoLMCGAEiEwjqnvDv-qKJAxXj0EIFHeVnJms=" }, "text": "Shawn Mendes" } ] }, - "trackingParams": "CDoQoLMCGAQiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CFIQoLMCGAEiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -20777,10 +20910,10 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CDgQmvMFGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CFAQmvMFGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "watchPlaylistEndpoint": { "params": "wAEB8gECGAE%3D", - "playlistId": "RDAOGAWr7BflxQO2xSvmngzdbA" + "playlistId": "RDAOVeZA-2uzuUKdoB81Ha3srw" } }, "text": { @@ -20790,7 +20923,7 @@ } ] }, - "trackingParams": "CDgQmvMFGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CFAQmvMFGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -20799,10 +20932,10 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CDcQm_MFGAEiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CE8Qm_MFGAEiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "watchPlaylistEndpoint": { "params": "wAEB", - "playlistId": "RDEMGAWr7BflxQO2xSvmngzdbA" + "playlistId": "RDEMVeZA-2uzuUKdoB81Ha3srw" } }, "text": { @@ -20812,7 +20945,7 @@ } ] }, - "trackingParams": "CDcQm_MFGAEiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CE8Qm_MFGAEiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -20821,7 +20954,7 @@ "iconType": "SUBSCRIBE" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CDUQqJwGGAIiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CE0QqJwGGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -20829,7 +20962,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CDYQ8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CE4Q8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "signInEndpoint": { "hack": true } @@ -20842,7 +20975,7 @@ } ] }, - "trackingParams": "CDYQ8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CE4Q8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, "content": { @@ -20880,7 +21013,7 @@ } ] }, - "trackingParams": "CDUQqJwGGAIiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CE0QqJwGGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -20889,7 +21022,843 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CDQQkfsFGAMiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CEwQkfsFGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ2dwQnNhRFcybl82cnV6aHQzd3ZQMEE%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CEwQkfsFGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + } + ], + "trackingParams": "CEsQpzsiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCgpBsaDW2n_6ruzht3wvP0A" + }, + "clickTrackingParams": "CEoQoLMCGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + }, + "subtitle": { + "runs": [ + { + "text": "16.7M subscribers" + } + ] + }, + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 226, + "url": "https://lh3.googleusercontent.com/TjSOLC2wjZtZZ6vKHV0PfHx6xxsk1csVyV-O-NEeASSAuxhgin8y_TE5Ee-fOuO1jrbaQUi0ZejiMrVv=w226-h226-p-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/TjSOLC2wjZtZZ6vKHV0PfHx6xxsk1csVyV-O-NEeASSAuxhgin8y_TE5Ee-fOuO1jrbaQUi0ZejiMrVv=w544-h544-p-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CFEQhL8CIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCgpBsaDW2n_6ruzht3wvP0A" + }, + "clickTrackingParams": "CEoQoLMCGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + }, + "text": "Sam Smith" + } + ] + }, + "trackingParams": "CEoQoLMCGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + }, + { + "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": "CEgQmvMFGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAOrP1xMaEmkxteWhBxMXKITA" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CEgQmvMFGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEcQm_MFGAEiEwjqnvDv-qKJAxXj0EIFHeVnJms=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEMrP1xMaEmkxteWhBxMXKITA" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CEcQm_MFGAEiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "SUBSCRIBE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CEUQqJwGGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CEYQ8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CEYQ8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + }, + "content": { + "runs": [ + { + "text": "Sign in to subscribe to this artist and never miss a beat" + } + ] + }, + "title": { + "runs": [ + { + "text": "Subscribe to this artist" + } + ] + } + } + } + } + }, + "defaultText": { + "runs": [ + { + "text": "Subscribe" + } + ] + }, + "toggledIcon": { + "iconType": "SUBSCRIBE" + }, + "toggledText": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "trackingParams": "CEUQqJwGGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEQQkfsFGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ3JyYm0xdG9MUHVkOGZGSWlzUHV4cGc%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CEQQkfsFGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + } + ], + "trackingParams": "CEMQpzsiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCrrbm1toLPud8fFIisPuxpg" + }, + "clickTrackingParams": "CEIQoLMCGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + }, + "subtitle": { + "runs": [ + { + "text": "10.9M subscribers" + } + ] + }, + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 226, + "url": "https://lh3.googleusercontent.com/8NOpUYB7nTsAMcpoRTnJVCsaJjS8a-rLUMGEkBpShczDEvWRvP0Fd0qc6hcmTSA1nrYRIL_4IY4t1u5o=w226-h226-p-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/8NOpUYB7nTsAMcpoRTnJVCsaJjS8a-rLUMGEkBpShczDEvWRvP0Fd0qc6hcmTSA1nrYRIL_4IY4t1u5o=w544-h544-p-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CEkQhL8CIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCrrbm1toLPud8fFIisPuxpg" + }, + "clickTrackingParams": "CEIQoLMCGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + }, + "text": "OneRepublic" + } + ] + }, + "trackingParams": "CEIQoLMCGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + }, + { + "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": "CEAQmvMFGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAOu1KkFD9Sel5i_Uhdfmcouw" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CEAQmvMFGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CD8Qm_MFGAEiEwjqnvDv-qKJAxXj0EIFHeVnJms=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEMu1KkFD9Sel5i_Uhdfmcouw" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CD8Qm_MFGAEiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "SUBSCRIBE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CD0QqJwGGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CD4Q8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CD4Q8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + }, + "content": { + "runs": [ + { + "text": "Sign in to subscribe to this artist and never miss a beat" + } + ] + }, + "title": { + "runs": [ + { + "text": "Subscribe to this artist" + } + ] + } + } + } + } + }, + "defaultText": { + "runs": [ + { + "text": "Subscribe" + } + ] + }, + "toggledIcon": { + "iconType": "SUBSCRIBE" + }, + "toggledText": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "trackingParams": "CD0QqJwGGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDwQkfsFGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ2w2LTI0Y3N6S3FJWUxrQnpvMDJYelE%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CDwQkfsFGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + } + ], + "trackingParams": "CDsQpzsiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCl6-24cszKqIYLkBzo02XzQ" + }, + "clickTrackingParams": "CDoQoLMCGAQiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + }, + "subtitle": { + "runs": [ + { + "text": "5.46M subscribers" + } + ] + }, + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 226, + "url": "https://lh3.googleusercontent.com/ViqsW7h9xDTjYkR0Xu9j5igMjK2SveLcLNsMuDr8145qJwvgCfV-XWSW5O2nJ24zfQ3j0zirPRzRmh8=w226-h226-p-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/ViqsW7h9xDTjYkR0Xu9j5igMjK2SveLcLNsMuDr8145qJwvgCfV-XWSW5O2nJ24zfQ3j0zirPRzRmh8=w544-h544-p-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CEEQhL8CIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCl6-24cszKqIYLkBzo02XzQ" + }, + "clickTrackingParams": "CDoQoLMCGAQiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + }, + "text": "Lukas Graham" + } + ] + }, + "trackingParams": "CDoQoLMCGAQiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + }, + { + "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": "CDgQmvMFGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAOSuoM_jxfse1_g8uCO7MCtg" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CDgQmvMFGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDcQm_MFGAEiEwjqnvDv-qKJAxXj0EIFHeVnJms=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEMSuoM_jxfse1_g8uCO7MCtg" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CDcQm_MFGAEiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "SUBSCRIBE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CDUQqJwGGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CDYQ8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CDYQ8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + }, + "content": { + "runs": [ + { + "text": "Sign in to subscribe to this artist and never miss a beat" + } + ] + }, + "title": { + "runs": [ + { + "text": "Subscribe to this artist" + } + ] + } + } + } + } + }, + "defaultText": { + "runs": [ + { + "text": "Subscribe" + } + ] + }, + "toggledIcon": { + "iconType": "SUBSCRIBE" + }, + "toggledText": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "trackingParams": "CDUQqJwGGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDQQkfsFGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=", + "shareEntityEndpoint": { + "serializedShareEntity": "GhhVQ2lEQnR1OHdoQWRVZ2lKNW8xZzdzUVE%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CDQQkfsFGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + } + ], + "trackingParams": "CDMQpzsiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCiDBtu8whAdUgiJ5o1g7sQQ" + }, + "clickTrackingParams": "CDIQoLMCGAUiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + }, + "subtitle": { + "runs": [ + { + "text": "1.99M subscribers" + } + ] + }, + "thumbnailRenderer": { + "musicThumbnailRenderer": { + "thumbnail": { + "thumbnails": [ + { + "height": 226, + "url": "https://lh3.googleusercontent.com/lsTSUtfX9JIjT2Z44QCd-Wi6coedAV0OeHdq3fB0puqTt2-OvKuuMcCdwmxAm5r4BfUAB3swOEYvG48z=w226-h226-p-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/lsTSUtfX9JIjT2Z44QCd-Wi6coedAV0OeHdq3fB0puqTt2-OvKuuMcCdwmxAm5r4BfUAB3swOEYvG48z=w544-h544-p-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CDkQhL8CIhMI6p7w7_qiiQMV49BCBR3lZyZr" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCiDBtu8whAdUgiJ5o1g7sQQ" + }, + "clickTrackingParams": "CDIQoLMCGAUiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + }, + "text": "James Bay" + } + ] + }, + "trackingParams": "CDIQoLMCGAUiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + }, + { + "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": "CDAQmvMFGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECGAE%3D", + "playlistId": "RDAOGAWr7BflxQO2xSvmngzdbA" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CDAQmvMFGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CC8Qm_MFGAEiEwjqnvDv-qKJAxXj0EIFHeVnJms=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDEMGAWr7BflxQO2xSvmngzdbA" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CC8Qm_MFGAEiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "SUBSCRIBE" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CC0QqJwGGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CC4Q8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CC4Q8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + }, + "content": { + "runs": [ + { + "text": "Sign in to subscribe to this artist and never miss a beat" + } + ] + }, + "title": { + "runs": [ + { + "text": "Subscribe to this artist" + } + ] + } + } + } + } + }, + "defaultText": { + "runs": [ + { + "text": "Subscribe" + } + ] + }, + "toggledIcon": { + "iconType": "SUBSCRIBE" + }, + "toggledText": { + "runs": [ + { + "text": "Unsubscribe" + } + ] + }, + "trackingParams": "CC0QqJwGGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCwQkfsFGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "shareEntityEndpoint": { "serializedShareEntity": "GhhVQ3VQWTZtc1pHeVNNelRwS0xqeWVPOGc%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -20902,11 +21871,11 @@ } ] }, - "trackingParams": "CDQQkfsFGAMiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CCwQkfsFGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } } ], - "trackingParams": "CDMQpzsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CCsQpzsiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, "navigationEndpoint": { @@ -20918,12 +21887,12 @@ }, "browseId": "UCuPY6msZGySMzTpKLjyeO8g" }, - "clickTrackingParams": "CDIQoLMCGAUiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "clickTrackingParams": "CCoQoLMCGAYiEwjqnvDv-qKJAxXj0EIFHeVnJms=" }, "subtitle": { "runs": [ { - "text": "6.38M subscribers" + "text": "6.71M subscribers" } ] }, @@ -20945,7 +21914,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CDkQhL8CIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CDEQhL8CIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "title": { @@ -20960,13 +21929,13 @@ }, "browseId": "UCuPY6msZGySMzTpKLjyeO8g" }, - "clickTrackingParams": "CDIQoLMCGAUiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "clickTrackingParams": "CCoQoLMCGAYiEwjqnvDv-qKJAxXj0EIFHeVnJms=" }, "text": "Calum Scott" } ] }, - "trackingParams": "CDIQoLMCGAUiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CCoQoLMCGAYiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -20986,10 +21955,10 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CDAQmvMFGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CCgQmvMFGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "watchPlaylistEndpoint": { "params": "wAEB8gECGAE%3D", - "playlistId": "RDAOrP1xMaEmkxteWhBxMXKITA" + "playlistId": "RDAOkSqRUpYcFuNCwKwC7Nyqog" } }, "text": { @@ -20999,7 +21968,7 @@ } ] }, - "trackingParams": "CDAQmvMFGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CCgQmvMFGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -21008,10 +21977,10 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CC8Qm_MFGAEiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CCcQm_MFGAEiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "watchPlaylistEndpoint": { "params": "wAEB", - "playlistId": "RDEMrP1xMaEmkxteWhBxMXKITA" + "playlistId": "RDEMkSqRUpYcFuNCwKwC7Nyqog" } }, "text": { @@ -21021,7 +21990,7 @@ } ] }, - "trackingParams": "CC8Qm_MFGAEiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CCcQm_MFGAEiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -21030,7 +21999,7 @@ "iconType": "SUBSCRIBE" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CC0QqJwGGAIiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CCUQqJwGGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -21038,7 +22007,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CC4Q8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CCYQ8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "signInEndpoint": { "hack": true } @@ -21051,7 +22020,7 @@ } ] }, - "trackingParams": "CC4Q8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CCYQ8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, "content": { @@ -21089,7 +22058,7 @@ } ] }, - "trackingParams": "CC0QqJwGGAIiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CCUQqJwGGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -21098,9 +22067,9 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CCwQkfsFGAMiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CCQQkfsFGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "shareEntityEndpoint": { - "serializedShareEntity": "GhhVQ3JyYm0xdG9MUHVkOGZGSWlzUHV4cGc%3D", + "serializedShareEntity": "GhhVQ3lTS0hNSjMxZGNXbWRPVXlNUVVKUFE%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" } }, @@ -21111,11 +22080,11 @@ } ] }, - "trackingParams": "CCwQkfsFGAMiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CCQQkfsFGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } } ], - "trackingParams": "CCsQpzsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CCMQpzsiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, "navigationEndpoint": { @@ -21125,14 +22094,14 @@ "pageType": "MUSIC_PAGE_TYPE_ARTIST" } }, - "browseId": "UCrrbm1toLPud8fFIisPuxpg" + "browseId": "UCySKHMJ31dcWmdOUyMQUJPQ" }, - "clickTrackingParams": "CCoQoLMCGAYiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "clickTrackingParams": "CCIQoLMCGAciEwjqnvDv-qKJAxXj0EIFHeVnJms=" }, "subtitle": { "runs": [ { - "text": "10.3M subscribers" + "text": "1.67M subscribers" } ] }, @@ -21142,19 +22111,19 @@ "thumbnails": [ { "height": 226, - "url": "https://lh3.googleusercontent.com/qvD1cR5jT6Afoq_irOWSDuu0SXNyvmnZ8TN5kAydv_-UMsiPDvQMUsQv-WPPP1Qolw6AY-OQO_f8w2I=w226-h226-p-l90-rj", + "url": "https://lh3.googleusercontent.com/sUth0oDLCaVORjE42BE8eeQ0RZ38OvFBUgwrVTy97QXftYcuLWMwKkjvLG3VMe1-HuJcX41bb1J3YVw=w226-h226-p-l90-rj", "width": 226 }, { "height": 544, - "url": "https://lh3.googleusercontent.com/qvD1cR5jT6Afoq_irOWSDuu0SXNyvmnZ8TN5kAydv_-UMsiPDvQMUsQv-WPPP1Qolw6AY-OQO_f8w2I=w544-h544-p-l90-rj", + "url": "https://lh3.googleusercontent.com/sUth0oDLCaVORjE42BE8eeQ0RZ38OvFBUgwrVTy97QXftYcuLWMwKkjvLG3VMe1-HuJcX41bb1J3YVw=w544-h544-p-l90-rj", "width": 544 } ] }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CDEQhL8CIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CCkQhL8CIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "title": { @@ -21167,15 +22136,15 @@ "pageType": "MUSIC_PAGE_TYPE_ARTIST" } }, - "browseId": "UCrrbm1toLPud8fFIisPuxpg" + "browseId": "UCySKHMJ31dcWmdOUyMQUJPQ" }, - "clickTrackingParams": "CCoQoLMCGAYiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "clickTrackingParams": "CCIQoLMCGAciEwjqnvDv-qKJAxXj0EIFHeVnJms=" }, - "text": "OneRepublic" + "text": "Jess Glynne" } ] }, - "trackingParams": "CCoQoLMCGAYiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CCIQoLMCGAciEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -21195,10 +22164,10 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CCgQmvMFGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CCAQmvMFGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "watchPlaylistEndpoint": { "params": "wAEB8gECGAE%3D", - "playlistId": "RDAOIonT9cZ-2KCdlec6s8Yr4Q" + "playlistId": "RDAO4pYJp7xJSejhXY9TYgUzPw" } }, "text": { @@ -21208,7 +22177,7 @@ } ] }, - "trackingParams": "CCgQmvMFGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CCAQmvMFGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -21217,10 +22186,10 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CCcQm_MFGAEiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CB8Qm_MFGAEiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "watchPlaylistEndpoint": { "params": "wAEB", - "playlistId": "RDEMIonT9cZ-2KCdlec6s8Yr4Q" + "playlistId": "RDEM4pYJp7xJSejhXY9TYgUzPw" } }, "text": { @@ -21230,7 +22199,7 @@ } ] }, - "trackingParams": "CCcQm_MFGAEiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CB8Qm_MFGAEiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -21239,7 +22208,7 @@ "iconType": "SUBSCRIBE" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CCUQqJwGGAIiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CB0QqJwGGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -21247,7 +22216,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CCYQ8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CB4Q8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "signInEndpoint": { "hack": true } @@ -21260,7 +22229,7 @@ } ] }, - "trackingParams": "CCYQ8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CB4Q8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, "content": { @@ -21298,7 +22267,7 @@ } ] }, - "trackingParams": "CCUQqJwGGAIiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CB0QqJwGGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -21307,9 +22276,9 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CCQQkfsFGAMiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CBwQkfsFGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "shareEntityEndpoint": { - "serializedShareEntity": "GhhVQ0ZHd3A0Rkh5dlUxcEp2OXc2SmN4OHc%3D", + "serializedShareEntity": "GhhVQ2RGZTRLa1d3Wl90d3BvLVVFQ1ItTnc%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" } }, @@ -21320,11 +22289,11 @@ } ] }, - "trackingParams": "CCQQkfsFGAMiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CBwQkfsFGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } } ], - "trackingParams": "CCMQpzsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CBsQpzsiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, "navigationEndpoint": { @@ -21334,14 +22303,14 @@ "pageType": "MUSIC_PAGE_TYPE_ARTIST" } }, - "browseId": "UCFGwp4FHyvU1pJv9w6Jcx8w" + "browseId": "UCdFe4KkWwZ_twpo-UECR-Nw" }, - "clickTrackingParams": "CCIQoLMCGAciEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "clickTrackingParams": "CBoQoLMCGAgiEwjqnvDv-qKJAxXj0EIFHeVnJms=" }, "subtitle": { "runs": [ { - "text": "4.19M subscribers" + "text": "37.2M subscribers" } ] }, @@ -21351,19 +22320,19 @@ "thumbnails": [ { "height": 226, - "url": "https://lh3.googleusercontent.com/4f5qk1izKPLk5EKm9WO3_RT7PqEo8j2FmZ39UPPVcRagm93fZ2EjzIDuyV6otYS0t22FlIveKty9vlVg=w226-h226-p-l90-rj", + "url": "https://lh3.googleusercontent.com/7jndWy5UJwFJKueBCrizeFWOFwxKUOZZjRMIcPyRlv1X18tY9aJpkuSz_PpamnHVjbYV6s_oER8oi4g=w226-h226-p-l90-rj", "width": 226 }, { "height": 544, - "url": "https://lh3.googleusercontent.com/4f5qk1izKPLk5EKm9WO3_RT7PqEo8j2FmZ39UPPVcRagm93fZ2EjzIDuyV6otYS0t22FlIveKty9vlVg=w544-h544-p-l90-rj", + "url": "https://lh3.googleusercontent.com/7jndWy5UJwFJKueBCrizeFWOFwxKUOZZjRMIcPyRlv1X18tY9aJpkuSz_PpamnHVjbYV6s_oER8oi4g=w544-h544-p-l90-rj", "width": 544 } ] }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CCkQhL8CIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CCEQhL8CIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "title": { @@ -21376,15 +22345,15 @@ "pageType": "MUSIC_PAGE_TYPE_ARTIST" } }, - "browseId": "UCFGwp4FHyvU1pJv9w6Jcx8w" + "browseId": "UCdFe4KkWwZ_twpo-UECR-Nw" }, - "clickTrackingParams": "CCIQoLMCGAciEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "clickTrackingParams": "CBoQoLMCGAgiEwjqnvDv-qKJAxXj0EIFHeVnJms=" }, - "text": "The Script" + "text": "Maroon 5" } ] }, - "trackingParams": "CCIQoLMCGAciEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CBoQoLMCGAgiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -21404,7 +22373,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CCAQmvMFGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CBgQmvMFGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "watchPlaylistEndpoint": { "params": "wAEB8gECGAE%3D", "playlistId": "RDAO7uBVFBvM_EPoXxmzozxjrw" @@ -21417,7 +22386,7 @@ } ] }, - "trackingParams": "CCAQmvMFGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CBgQmvMFGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -21426,7 +22395,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CB8Qm_MFGAEiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CBcQm_MFGAEiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDEM7uBVFBvM_EPoXxmzozxjrw" @@ -21439,7 +22408,7 @@ } ] }, - "trackingParams": "CB8Qm_MFGAEiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CBcQm_MFGAEiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -21448,7 +22417,7 @@ "iconType": "SUBSCRIBE" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CB0QqJwGGAIiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CBUQqJwGGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -21456,7 +22425,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CB4Q8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CBYQ8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "signInEndpoint": { "hack": true } @@ -21469,7 +22438,7 @@ } ] }, - "trackingParams": "CB4Q8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CBYQ8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, "content": { @@ -21507,7 +22476,7 @@ } ] }, - "trackingParams": "CB0QqJwGGAIiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CBUQqJwGGAIiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -21516,7 +22485,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CBwQkfsFGAMiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CBQQkfsFGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "shareEntityEndpoint": { "serializedShareEntity": "GhhVQ05BYlVhdDV4RHRwNkZlQnBoZTJWX1E%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -21529,11 +22498,11 @@ } ] }, - "trackingParams": "CBwQkfsFGAMiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CBQQkfsFGAMiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } } ], - "trackingParams": "CBsQpzsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CBMQpzsiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, "navigationEndpoint": { @@ -21545,12 +22514,12 @@ }, "browseId": "UCNAbUat5xDtp6FeBphe2V_Q" }, - "clickTrackingParams": "CBoQoLMCGAgiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "clickTrackingParams": "CBIQoLMCGAkiEwjqnvDv-qKJAxXj0EIFHeVnJms=" }, "subtitle": { "runs": [ { - "text": "6.92M subscribers" + "text": "7.51M subscribers" } ] }, @@ -21560,19 +22529,19 @@ "thumbnails": [ { "height": 226, - "url": "https://lh3.googleusercontent.com/VWyzSUVLJjSH6f57sMAo5bDeBU0Hn78p8-Qiydc13N3aMhw3Lr2-4NoHHoqLx93JzXBoMiEX1AqqC2Y=w226-h226-p-l90-rj", + "url": "https://lh3.googleusercontent.com/DVyahI2CBTfB2Mz889tKorFyaDLqtur7aqSte81Pzwl8tSnucAspeebn5XNCHLDpqizepWRn032t608=w226-h226-p-l90-rj", "width": 226 }, { "height": 544, - "url": "https://lh3.googleusercontent.com/VWyzSUVLJjSH6f57sMAo5bDeBU0Hn78p8-Qiydc13N3aMhw3Lr2-4NoHHoqLx93JzXBoMiEX1AqqC2Y=w544-h544-p-l90-rj", + "url": "https://lh3.googleusercontent.com/DVyahI2CBTfB2Mz889tKorFyaDLqtur7aqSte81Pzwl8tSnucAspeebn5XNCHLDpqizepWRn032t608=w544-h544-p-l90-rj", "width": 544 } ] }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CCEQhL8CIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CBkQhL8CIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "title": { @@ -21587,222 +22556,13 @@ }, "browseId": "UCNAbUat5xDtp6FeBphe2V_Q" }, - "clickTrackingParams": "CBoQoLMCGAgiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "clickTrackingParams": "CBIQoLMCGAkiEwjqnvDv-qKJAxXj0EIFHeVnJms=" }, "text": "James Arthur" } ] }, - "trackingParams": "CBoQoLMCGAgiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - }, - { - "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": "CBgQmvMFGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", - "watchPlaylistEndpoint": { - "params": "wAEB8gECGAE%3D", - "playlistId": "RDAON0b_oSABQRVM34ADsmrK2w" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CBgQmvMFGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CBcQm_MFGAEiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDEMN0b_oSABQRVM34ADsmrK2w" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CBcQm_MFGAEiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "SUBSCRIBE" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CBUQqJwGGAIiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CBYQ8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CBYQ8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - }, - "content": { - "runs": [ - { - "text": "Sign in to subscribe to this artist and never miss a beat" - } - ] - }, - "title": { - "runs": [ - { - "text": "Subscribe to this artist" - } - ] - } - } - } - } - }, - "defaultText": { - "runs": [ - { - "text": "Subscribe" - } - ] - }, - "toggledIcon": { - "iconType": "SUBSCRIBE" - }, - "toggledText": { - "runs": [ - { - "text": "Unsubscribe" - } - ] - }, - "trackingParams": "CBUQqJwGGAIiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CBQQkfsFGAMiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", - "shareEntityEndpoint": { - "serializedShareEntity": "GhhVQ0NFenEtR3Y2Z1UtYmRNODJydFpONGc%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CBQQkfsFGAMiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - } - ], - "trackingParams": "CBMQpzsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UCCEzq-Gv6gU-bdM82rtZN4g" - }, - "clickTrackingParams": "CBIQoLMCGAkiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - }, - "subtitle": { - "runs": [ - { - "text": "3.14M subscribers" - } - ] - }, - "thumbnailRenderer": { - "musicThumbnailRenderer": { - "thumbnail": { - "thumbnails": [ - { - "height": 226, - "url": "https://lh3.googleusercontent.com/sXHg22Fqjb3cxKE9Yo1WwF7-RifZ7lYEugJon7AUBI0hzbDe7_WxTAAJEAYGi4r0mLfi2CPn7e0mDg=w226-h226-p-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/sXHg22Fqjb3cxKE9Yo1WwF7-RifZ7lYEugJon7AUBI0hzbDe7_WxTAAJEAYGi4r0mLfi2CPn7e0mDg=w544-h544-p-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_CIRCLE", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CBkQhL8CIhMI59zswMPz_gIVcOARCB3yMAhr" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UCCEzq-Gv6gU-bdM82rtZN4g" - }, - "clickTrackingParams": "CBIQoLMCGAkiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" - }, - "text": "James Blunt" - } - ] - }, - "trackingParams": "CBIQoLMCGAkiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CBIQoLMCGAkiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } } ], @@ -21821,11 +22581,11 @@ } ] }, - "trackingParams": "CGIQiLwEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CGIQiLwEIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "itemSize": "COLLECTION_STYLE_ITEM_SIZE_MEDIUM", - "trackingParams": "CBEQobMCGAUiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CBEQobMCGAUiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, { @@ -21868,24 +22628,24 @@ } ] }, - "trackingParams": "CBAQmE0iEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CBAQmE0iEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, "subheader": { "runs": [ { - "text": "29,905,891,641 views" + "text": "33,092,273,534 views" } ] }, - "trackingParams": "CA8QiPgDGAYiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CA8QiPgDGAYiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } } ], - "trackingParams": "CA4Qui8iEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CA4Qui8iEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, - "trackingParams": "CA0Q8JMBGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CA0Q8JMBGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } } ] @@ -21914,7 +22674,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CAYQkfsFGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CAYQkfsFGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "shareEntityEndpoint": { "serializedShareEntity": "GhhVQ2xtWFBmYVloWE9Zc05uX1FVeWhlV1E%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -21927,11 +22687,11 @@ } ] }, - "trackingParams": "CAYQkfsFGAAiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CAYQkfsFGAAiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } } ], - "trackingParams": "CAUQpzsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CAUQpzsiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, "moreButton": { @@ -21958,7 +22718,7 @@ } ] }, - "trackingParams": "CAcQmE0iEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CAcQmE0iEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, "playButton": { @@ -21975,7 +22735,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CAMQ6YQEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CAMQ6YQEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchEndpoint": { "loggingContext": { "vssLoggingContext": { @@ -21996,11 +22756,11 @@ } ] }, - "trackingParams": "CAMQ6YQEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CAMQ6YQEIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "shareEndpoint": { - "clickTrackingParams": "CAEQ-NwCIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CAEQ-NwCIhMI6p7w7_qiiQMV49BCBR3lZyZr", "shareEntityEndpoint": { "serializedShareEntity": "GhhVQ2xtWFBmYVloWE9Zc05uX1FVeWhlV1E%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -22011,11 +22771,16 @@ "accessibility": { "label": "Radio" }, + "accessibilityData": { + "accessibilityData": { + "label": "Radio" + } + }, "icon": { "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CAIQ84QEIhMI59zswMPz_gIVcOARCB3yMAhr", + "clickTrackingParams": "CAIQ84QEIhMI6p7w7_qiiQMV49BCBR3lZyZr", "watchEndpoint": { "loggingContext": { "vssLoggingContext": { @@ -22034,7 +22799,7 @@ } ] }, - "trackingParams": "CAIQ84QEIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CAIQ84QEIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "subscriptionButton": { @@ -22044,18 +22809,18 @@ "longSubscriberCountText": { "accessibility": { "accessibilityData": { - "label": "53.3 million subscribers" + "label": "55.3 million subscribers" } }, "runs": [ { - "text": "53.3M subscribers" + "text": "55.3M subscribers" } ] }, "serviceEndpoints": [ { - "clickTrackingParams": "CAgQmysiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CAgQmysiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "subscribeEndpoint": { "channelIds": [ "UC0C-w0YjGpqDXGB8IHb662A" @@ -22064,11 +22829,11 @@ } }, { - "clickTrackingParams": "CAgQmysiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CAgQmysiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "signalServiceEndpoint": { "actions": [ { - "clickTrackingParams": "CAgQmysiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CAgQmysiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "openPopupAction": { "popup": { "confirmDialogRenderer": { @@ -22083,13 +22848,13 @@ } ] }, - "trackingParams": "CAsQ8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CAsQ8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, "confirmButton": { "buttonRenderer": { "serviceEndpoint": { - "clickTrackingParams": "CAwQ8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CAwQ8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "unsubscribeEndpoint": { "channelIds": [ "UC0C-w0YjGpqDXGB8IHb662A" @@ -22105,7 +22870,7 @@ } ] }, - "trackingParams": "CAwQ8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CAwQ8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, "dialogMessages": [ @@ -22123,7 +22888,7 @@ ] } ], - "trackingParams": "CAoQxjgiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CAoQxjgiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, "popupType": "DIALOG" @@ -22137,13 +22902,13 @@ "shortSubscriberCountText": { "runs": [ { - "text": "53.3M" + "text": "55.3M" } ] }, "showPreferences": false, "signInEndpoint": { - "clickTrackingParams": "CAgQmysiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CAgQmysiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -22151,7 +22916,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CAkQ8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "clickTrackingParams": "CAkQ8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "signInEndpoint": { "hack": true } @@ -22164,7 +22929,7 @@ } ] }, - "trackingParams": "CAkQ8FsiEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CAkQ8FsiEwjqnvDv-qKJAxXj0EIFHeVnJms=" } }, "content": { @@ -22201,18 +22966,18 @@ "subscriberCountText": { "runs": [ { - "text": "53.3M" + "text": "55.3M" } ] }, "subscriberCountWithSubscribeText": { "runs": [ { - "text": "53.3M" + "text": "55.3M" } ] }, - "trackingParams": "CAgQmysiEwjn3OzAw_P-AhVw4BEIHfIwCGs=", + "trackingParams": "CAgQmysiEwjqnvDv-qKJAxXj0EIFHeVnJms=", "type": "FREE", "unsubscribeAccessibility": { "accessibilityData": { @@ -22268,7 +23033,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CAQQhL8CIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CAQQhL8CIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "title": { @@ -22278,7 +23043,7 @@ } ] }, - "trackingParams": "CAEQ-NwCIhMI59zswMPz_gIVcOARCB3yMAhr" + "trackingParams": "CAEQ-NwCIhMI6p7w7_qiiQMV49BCBR3lZyZr" } }, "responseContext": { @@ -22308,7 +23073,7 @@ }, { "key": "e", - "value": "23804281,23858057,23918597,23946420,23966208,23983296,23998056,24004644,24007246,24034168,24036947,24077241,24080738,24120820,24135310,24140247,24181174,24187043,24187377,24211178,24219713,24224266,24241378,24255543,24255545,24262346,24288664,24290971,24390675,24404640,24407191,24409417,24415864,24416290,24428788,24429093,24439361,24440518,24440520,24451319,24455284,24457383,24458317,24458324,24458329,24458839,24459435,24465011,24466371,24468153,24468691,24468724,24471752,24475364,24483503,24485239,24485421,24488188,24495060,24495838,24498300,24499423,24515366,24515423,24516157,24518452,24519102,24519143,24531286,24532514,24532854,24532937,24537200,24551130,24552606,24554138,24555242,24691334,24693160,24699860,39323074,39323604,39323607" + "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,51144925,51152050,51157411,51157838,51158514,51160545,51162170,51165467,51169118,51176511,51178982,51183909,51186528,51190652,51195231,51204329,51217504,51222973,51223962,51225390,51227037,51228350,51230241,51230478,51231814,51237842,51239093,51241028,51242448,51243940,51248255,51248734,51249751,51251836,51255676,51255680,51255743,51256074,51256084,51258066,51258732,51263956,51266454,51267567,51275785,51276557,51276565,51276640,51281227,51284653,51287196,51287500,51287512,51289875,51289938,51292055,51294321,51295132,51295408,51296439,51297233,51298019,51298830,51299405,51299710,51299724,51299901,51300414,51300699,51302083,51302492,51302680,51303667,51303669,51303789,51304121,51304155,51305811,51305839,51307502,51308045,51308060,51309314,51309487,51310323,51312688,51313149,51313368,51313767,51313926,51316746,51319842,51321868,51321893,51322837,51322927,51323366,51324388,51324941,51325878,51326932,51327616" } ], "service": "GFEEDBACK" @@ -22321,7 +23086,7 @@ }, { "key": "cver", - "value": "1.20230508.01.01" + "value": "1.20241021.01.00" }, { "key": "yt_li", @@ -22329,7 +23094,7 @@ }, { "key": "GetBrowseArtistDetailPage_rid", - "value": "0xe02b91472a192808" + "value": "0x3e0f4dac34d2750e" } ], "service": "CSI" @@ -22343,16 +23108,12 @@ { "key": "client.name", "value": "WEB_REMIX" - }, - { - "key": "client.fexp", - "value": "23918597,24415864,24471752,24519143,24532937,24699860,24439361,24457383,24458839,24488188,23946420,24485239,24551130,24691334,24409417,24458329,24290971,39323607,24407191,24468724,24515423,24429093,23966208,24034168,24036947,24262346,24475364,24219713,24483503,24693160,24440518,23998056,24080738,24532514,24465011,24458324,24211178,24552606,24498300,24458317,24135310,24495838,24468153,24255545,24468691,39323074,23858057,24288664,23983296,24187043,24499423,24181174,24404640,24519102,24554138,24516157,24515366,24077241,24428788,24459435,24187377,24555242,24416290,24451319,24518452,24466371,24485421,24531286,24120820,24224266,39323604,24004644,24537200,24455284,24140247,24440520,24255543,24532854,23804281,24495060,24390675,24007246,24241378" } ], "service": "ECATCHER" } ], - "visitorData": "CgtnWG9YYzd3bWFicyjaz4CjBg%3D%3D" + "visitorData": "CgtlUU9ZeUlaNzlkQSjVueC4BjIKCgJERRIEEgAgbA%3D%3D" }, - "trackingParams": "CAAQhGciEwjn3OzAw_P-AhVw4BEIHfIwCGs=" + "trackingParams": "CAAQhGciEwjqnvDv-qKJAxXj0EIFHeVnJms=" } diff --git a/testfiles/music_artist/artist_default_1.json b/testfiles/music_artist/artist_default_1.json index 504f273..4d0c3b8 100644 --- a/testfiles/music_artist/artist_default_1.json +++ b/testfiles/music_artist/artist_default_1.json @@ -14,8 +14,8 @@ "nextContinuationData": { "autoloadEnabled": true, "autoloadImmediately": true, - "clickTrackingParams": "CBMQybcCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "continuation": "4qmFsgL3AhIcTVBBRFVDbG1YUGZhWWhYT1lzTm5fUVV5aGVXURrWAjZnUDZBVWR5WjBKWGNXdENRM0ZaUWtOcFVqVmtSamwzV1Zka2JGZ3pUblZaV0VKNllVYzVNRmd5TVRGak1teHFXRE5DYUZveVZtWmpiVlp1WVZjNWRWbFhkMU5JTVZZelZERnJlbVJxWTNSYVdHUnFXVE5rUkZKRmJGQlpNMmg2Vm1zMU5WcFdSbWxrUkZadVZXMWpZVmhWTVRGak1teHFVa2RXTUZsWGJITlZSMFp1V2xaT2JHTnVXbkJaTWxWMFVqSldNRkZZU2pCaFdFNHdVa2RzZWxreU9XNWpiVVozWVVoc1VWbFhaR3hCUVVWQldsYzBRVUZXVmxSQlFVWkZVbEZCUWtGUlRsWlJNbmgwVjBaQ2JWbFdiRzlYUlRsYVl6QTFkVmd4UmxabFYyaHNWakZGUVVGUlFVRkJVRXhoY3padlMwSnJRVUpUUjFKUldrRSUzRA%3D%3D" + "clickTrackingParams": "CBcQybcCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "continuation": "4qmFsgL9AhIcTVBBRFVDbG1YUGZhWWhYT1lzTm5fUVV5aGVXURrcAjZnUDhBVWR5YjBKWGNYTkNRM0ZuUWtOcFVqVmtSamwzV1Zka2JGZ3pUblZaV0VKNllVYzVNRmd5TVRGak1teHFXRE5DYUZveVZtWmpiVlp1WVZjNWRWbFhkMU5JTTAweVpHeHdNbFJXV2s1UFIzUnVXVlJvVFZOR1dUVlNNVm8xVGtWM00yRXdjRE5rUjNCTVpVZHpZVmd3TVRGak1teHFVa2RXTUZsWGJITlZSMFp1V2xaT2JHTnVXbkJaTWxWMFVqSldNRkZZU2pCaFdFNHdVa2RzZWxreU9XNWpiVVozWVVoc1VWbFhaR3hCUVVWQldsYzBRVUZXVmxSQlFVWkZVbEZCUWtGUlRsWlJNbmgwVjBaQ2JWbFdiRzlYUlRsYVl6QTFkVmd4UmxabFYyaHNWakZGUVVGUlFVSkJaMFZET0hSeGVuRm5iMGRSUVVaSldrWkNhdyUzRCUzRA%3D%3D" } } ], @@ -37,10 +37,10 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "COMMEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COYMEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_nBWNER9LUem1mBokVrhh3nVmlSNUqcSng" + "playlistId": "OLAK5uy_litBvmiKeSX29nuAwIBd10XdP_u_RpRpE" } }, "text": { @@ -50,7 +50,7 @@ } ] }, - "trackingParams": "COMMEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COYMEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -59,10 +59,10 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "COIMEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COUMEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_nBWNER9LUem1mBokVrhh3nVmlSNUqcSng" + "playlistId": "RDAMPLOLAK5uy_litBvmiKeSX29nuAwIBd10XdP_u_RpRpE" } }, "text": { @@ -72,7 +72,7 @@ } ] }, - "trackingParams": "COIMEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COUMEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -81,7 +81,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "COAMEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COMMEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -95,16 +95,22 @@ } ] }, - "trackingParams": "COEMEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "COQMEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "COAMEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "COMMEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { - "playlistId": "OLAK5uy_nBWNER9LUem1mBokVrhh3nVmlSNUqcSng" + "onEmptyQueue": { + "clickTrackingParams": "COMMEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_litBvmiKeSX29nuAwIBd10XdP_u_RpRpE" + } + }, + "playlistId": "OLAK5uy_litBvmiKeSX29nuAwIBd10XdP_u_RpRpE" } } }, @@ -115,7 +121,7 @@ } ] }, - "trackingParams": "COAMEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COMMEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -124,7 +130,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CN4MEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COEMEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -138,16 +144,22 @@ } ] }, - "trackingParams": "CN8MEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "COIMEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CN4MEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "COEMEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { - "playlistId": "OLAK5uy_nBWNER9LUem1mBokVrhh3nVmlSNUqcSng" + "onEmptyQueue": { + "clickTrackingParams": "COEMEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_litBvmiKeSX29nuAwIBd10XdP_u_RpRpE" + } + }, + "playlistId": "OLAK5uy_litBvmiKeSX29nuAwIBd10XdP_u_RpRpE" } } }, @@ -158,7 +170,7 @@ } ] }, - "trackingParams": "CN4MEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COEMEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -167,7 +179,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CNwMEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CN8MEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -175,7 +187,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CN0MEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COAMEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -188,13 +200,13 @@ } ] }, - "trackingParams": "CN0MEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COAMEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -212,7 +224,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -220,11 +232,11 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CNwMEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CN8MEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { - "playlistId": "OLAK5uy_nBWNER9LUem1mBokVrhh3nVmlSNUqcSng" + "playlistId": "OLAK5uy_litBvmiKeSX29nuAwIBd10XdP_u_RpRpE" } } }, @@ -235,7 +247,7 @@ } ] }, - "trackingParams": "CNwMEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CN8MEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -244,7 +256,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CNoMEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CN0MEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -252,7 +264,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CNsMEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CN4MEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -265,7 +277,7 @@ } ] }, - "trackingParams": "CNsMEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CN4MEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -289,11 +301,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CNoMEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CN0MEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -310,7 +322,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CNkMEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CNwMEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -319,7 +331,7 @@ } ] }, - "trackingParams": "CNkMEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNwMEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -328,7 +340,2357 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CNgMEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNsMEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2xpdEJ2bWlLZVNYMjludUF3SUJkMTBYZFBfdV9ScFJwRQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CNsMEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CNoMEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_HPmSSZo0SwK", + "params": "ggMrGilPTEFLNXV5X2xpdEJ2bWlLZVNYMjludUF3SUJkMTBYZFBfdV9ScFJwRQ%3D%3D" + }, + "clickTrackingParams": "CNcMEKCzAhgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Album" + }, + { + "text": " • " + }, + { + "text": "2024" + } + ] + }, + "subtitleBadges": [ + { + "musicInlineBadgeRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + }, + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "trackingParams": "CNgMEKHtAhgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause +-=÷× (Tour Collection)" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play +-=÷× (Tour Collection)" + } + }, + "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": "CNkMEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_litBvmiKeSX29nuAwIBd10XdP_u_RpRpE" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CNkMEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/ryGcoZEPTIrtIulTIzQM3jP3Uye4AihlqMFJ5e6mzHyKAPVw6A34qDCA-UNO6K33kjcxrYL00lM8WaNX=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/ryGcoZEPTIrtIulTIzQM3jP3Uye4AihlqMFJ5e6mzHyKAPVw6A34qDCA-UNO6K33kjcxrYL00lM8WaNX=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "COcMEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_HPmSSZo0SwK", + "params": "ggMrGilPTEFLNXV5X2xpdEJ2bWlLZVNYMjludUF3SUJkMTBYZFBfdV9ScFJwRQ%3D%3D" + }, + "clickTrackingParams": "CNcMEKCzAhgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "+-=÷× (Tour Collection)" + } + ] + }, + "trackingParams": "CNcMEKCzAhgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CNUMEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_mj5Q-zWPVpr9fdLkrQG5e-paQx2QJqfaU" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CNUMEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNQMEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_mj5Q-zWPVpr9fdLkrQG5e-paQx2QJqfaU" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CNQMEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNIMEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CNMMEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CNIMEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNIMEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mj5Q-zWPVpr9fdLkrQG5e-paQx2QJqfaU" + } + }, + "playlistId": "OLAK5uy_mj5Q-zWPVpr9fdLkrQG5e-paQx2QJqfaU" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CNIMEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNAMEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CNEMEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CNAMEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNAMEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mj5Q-zWPVpr9fdLkrQG5e-paQx2QJqfaU" + } + }, + "playlistId": "OLAK5uy_mj5Q-zWPVpr9fdLkrQG5e-paQx2QJqfaU" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CNAMEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CM4MEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CM8MEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CM8MEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CM4MEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_mj5Q-zWPVpr9fdLkrQG5e-paQx2QJqfaU" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CM4MEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMwMEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CM0MEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CM0MEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CMwMEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CMsMEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CMsMEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMoMEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X21qNVEteldQVnByOWZkTGtyUUc1ZS1wYVF4MlFKcWZhVQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CMoMEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CMkMEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_tYL9F3mHJcO", + "params": "ggMrGilPTEFLNXV5X21qNVEteldQVnByOWZkTGtyUUc1ZS1wYVF4MlFKcWZhVQ%3D%3D" + }, + "clickTrackingParams": "CMcMEKCzAhgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Album" + }, + { + "text": " • " + }, + { + "text": "2024" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause x (10th Anniversary Edition)" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play x (10th Anniversary Edition)" + } + }, + "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": "CMgMEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_mj5Q-zWPVpr9fdLkrQG5e-paQx2QJqfaU" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CMgMEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/qzaY7mGHBLDfY3_g58NSuX5eh2iGcTRoAc8MVEtmQVu6qY_i4KvfkOU3fu9RMi4RxbiPPFXAodSEdQlY=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/qzaY7mGHBLDfY3_g58NSuX5eh2iGcTRoAc8MVEtmQVu6qY_i4KvfkOU3fu9RMi4RxbiPPFXAodSEdQlY=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CNYMEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_tYL9F3mHJcO", + "params": "ggMrGilPTEFLNXV5X21qNVEteldQVnByOWZkTGtyUUc1ZS1wYVF4MlFKcWZhVQ%3D%3D" + }, + "clickTrackingParams": "CMcMEKCzAhgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "x (10th Anniversary Edition)" + } + ] + }, + "trackingParams": "CMcMEKCzAhgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CMUMEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_kFdWx9zNdW6BYVfRRzIEHpne05rxCjGcI" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CMUMEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMQMEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_kFdWx9zNdW6BYVfRRzIEHpne05rxCjGcI" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CMQMEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMIMEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CMMMEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CMIMEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMIMEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_kFdWx9zNdW6BYVfRRzIEHpne05rxCjGcI" + } + }, + "playlistId": "OLAK5uy_kFdWx9zNdW6BYVfRRzIEHpne05rxCjGcI" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CMIMEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMAMEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CMEMEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CMAMEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMAMEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_kFdWx9zNdW6BYVfRRzIEHpne05rxCjGcI" + } + }, + "playlistId": "OLAK5uy_kFdWx9zNdW6BYVfRRzIEHpne05rxCjGcI" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CMAMEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CL4MEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CL8MEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CL8MEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CL4MEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_kFdWx9zNdW6BYVfRRzIEHpne05rxCjGcI" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CL4MEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLwMEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CL0MEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CL0MEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CLwMEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CLsMEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CLsMEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLoMEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2tGZFd4OXpOZFc2QllWZlJSeklFSHBuZTA1cnhDakdjSQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CLoMEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CLkMEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_LDIo5ZWELzD", + "params": "ggMrGilPTEFLNXV5X2tGZFd4OXpOZFc2QllWZlJSeklFSHBuZTA1cnhDakdjSQ%3D%3D" + }, + "clickTrackingParams": "CLYMEKCzAhgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Album" + }, + { + "text": " • " + }, + { + "text": "2023" + } + ] + }, + "subtitleBadges": [ + { + "musicInlineBadgeRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + }, + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "trackingParams": "CLcMEKHtAhgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Autumn Variations (Fan Living Room Sessions)" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Autumn Variations (Fan Living Room Sessions)" + } + }, + "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": "CLgMEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_kFdWx9zNdW6BYVfRRzIEHpne05rxCjGcI" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CLgMEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/noOqFYwFPI9_-dK61yAB-EMfK4WPruvXRZh2GBr8lhCgdmz6OTVQUZPxFcNJh6FkE13aXcfLqdGmUdiklA=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/noOqFYwFPI9_-dK61yAB-EMfK4WPruvXRZh2GBr8lhCgdmz6OTVQUZPxFcNJh6FkE13aXcfLqdGmUdiklA=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CMYMEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_LDIo5ZWELzD", + "params": "ggMrGilPTEFLNXV5X2tGZFd4OXpOZFc2QllWZlJSeklFSHBuZTA1cnhDakdjSQ%3D%3D" + }, + "clickTrackingParams": "CLYMEKCzAhgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "Autumn Variations (Fan Living Room Sessions)" + } + ] + }, + "trackingParams": "CLYMEKCzAhgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CLQMEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_k-3zgXpmRwgCxb1FTmuV9_lulAVOqbacU" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CLQMEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLMMEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_k-3zgXpmRwgCxb1FTmuV9_lulAVOqbacU" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CLMMEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLEMEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CLIMEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CLEMEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CLEMEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_k-3zgXpmRwgCxb1FTmuV9_lulAVOqbacU" + } + }, + "playlistId": "OLAK5uy_k-3zgXpmRwgCxb1FTmuV9_lulAVOqbacU" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CLEMEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK8MEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CLAMEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CK8MEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CK8MEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_k-3zgXpmRwgCxb1FTmuV9_lulAVOqbacU" + } + }, + "playlistId": "OLAK5uy_k-3zgXpmRwgCxb1FTmuV9_lulAVOqbacU" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CK8MEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CK0MEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CK4MEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CK4MEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CK0MEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_k-3zgXpmRwgCxb1FTmuV9_lulAVOqbacU" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CK0MEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKsMEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CKwMEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CKwMEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CKsMEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CKoMEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CKoMEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKkMEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2stM3pnWHBtUndnQ3hiMUZUbXVWOV9sdWxBVk9xYmFjVQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CKkMEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CKgMEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_uEnbnIYJjMT", + "params": "ggMrGilPTEFLNXV5X2stM3pnWHBtUndnQ3hiMUZUbXVWOV9sdWxBVk9xYmFjVQ%3D%3D" + }, + "clickTrackingParams": "CKUMEKCzAhgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Album" + }, + { + "text": " • " + }, + { + "text": "2023" + } + ] + }, + "subtitleBadges": [ + { + "musicInlineBadgeRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + }, + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "trackingParams": "CKYMEKHtAhgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Autumn Variations" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Autumn Variations" + } + }, + "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": "CKcMEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_k-3zgXpmRwgCxb1FTmuV9_lulAVOqbacU" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CKcMEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/YAQJ6XzfFOmwYHBmNO2ROAeI2hcRiPdhXnLpj9OdgM6F5E8NfxlEWNrfv18bu3DSdtAtsPeNQrVfR2Rt=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/YAQJ6XzfFOmwYHBmNO2ROAeI2hcRiPdhXnLpj9OdgM6F5E8NfxlEWNrfv18bu3DSdtAtsPeNQrVfR2Rt=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CLUMEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_uEnbnIYJjMT", + "params": "ggMrGilPTEFLNXV5X2stM3pnWHBtUndnQ3hiMUZUbXVWOV9sdWxBVk9xYmFjVQ%3D%3D" + }, + "clickTrackingParams": "CKUMEKCzAhgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "Autumn Variations" + } + ] + }, + "trackingParams": "CKUMEKCzAhgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CKMMEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_lfjJl4VPu5W7WZ6lfR13Sqqfo3j9xc_Xc" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CKMMEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKIMEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_lfjJl4VPu5W7WZ6lfR13Sqqfo3j9xc_Xc" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CKIMEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKAMEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CKEMEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CKAMEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKAMEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lfjJl4VPu5W7WZ6lfR13Sqqfo3j9xc_Xc" + } + }, + "playlistId": "OLAK5uy_lfjJl4VPu5W7WZ6lfR13Sqqfo3j9xc_Xc" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CKAMEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ4MEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CJ8MEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CJ4MEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJ4MEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lfjJl4VPu5W7WZ6lfR13Sqqfo3j9xc_Xc" + } + }, + "playlistId": "OLAK5uy_lfjJl4VPu5W7WZ6lfR13Sqqfo3j9xc_Xc" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJ4MEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CJwMEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CJ0MEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CJ0MEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CJwMEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_lfjJl4VPu5W7WZ6lfR13Sqqfo3j9xc_Xc" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CJwMEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJoMEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CJsMEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CJsMEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CJoMEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CJkMEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CJkMEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJgMEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2xmakpsNFZQdTVXN1daNmxmUjEzU3FxZm8zajl4Y19YYw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJgMEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CJcMEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_J3TRP3oprCB", + "params": "ggMrGilPTEFLNXV5X2xmakpsNFZQdTVXN1daNmxmUjEzU3FxZm8zajl4Y19YYw%3D%3D" + }, + "clickTrackingParams": "CJUMEKCzAhgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2023" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause A Beautiful Game" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play A Beautiful Game" + } + }, + "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": "CJYMEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_lfjJl4VPu5W7WZ6lfR13Sqqfo3j9xc_Xc" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CJYMEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/N8puXGTJbxb4YyujbLTkmomBQVH1MrpQMwSR-wg3U6535UAckbR4Hu_5mTiNs4eEC-UIP6dds3cUzBPMdA=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/N8puXGTJbxb4YyujbLTkmomBQVH1MrpQMwSR-wg3U6535UAckbR4Hu_5mTiNs4eEC-UIP6dds3cUzBPMdA=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CKQMEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_J3TRP3oprCB", + "params": "ggMrGilPTEFLNXV5X2xmakpsNFZQdTVXN1daNmxmUjEzU3FxZm8zajl4Y19YYw%3D%3D" + }, + "clickTrackingParams": "CJUMEKCzAhgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "A Beautiful Game" + } + ] + }, + "trackingParams": "CJUMEKCzAhgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CJMMEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_nBWNER9LUem1mBokVrhh3nVmlSNUqcSng" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CJMMEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJIMEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_nBWNER9LUem1mBokVrhh3nVmlSNUqcSng" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CJIMEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJAMEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CJEMEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CJAMEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJAMEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nBWNER9LUem1mBokVrhh3nVmlSNUqcSng" + } + }, + "playlistId": "OLAK5uy_nBWNER9LUem1mBokVrhh3nVmlSNUqcSng" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CJAMEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI4MEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CI8MEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CI4MEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CI4MEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nBWNER9LUem1mBokVrhh3nVmlSNUqcSng" + } + }, + "playlistId": "OLAK5uy_nBWNER9LUem1mBokVrhh3nVmlSNUqcSng" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CI4MEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CIwMEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CI0MEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CI0MEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CIwMEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_nBWNER9LUem1mBokVrhh3nVmlSNUqcSng" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CIwMEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIoMEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CIsMEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CIsMEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CIoMEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CIkMEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CIkMEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIgMEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X25CV05FUjlMVWVtMW1Cb2tWcmhoM25WbWxTTlVxY1NuZw%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -341,11 +2703,11 @@ } ] }, - "trackingParams": "CNgMEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIgMEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CNcMEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIcMEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -358,7 +2720,7 @@ "browseId": "MPREb_ZkVjx6hEPfJ", "params": "ggMrGilPTEFLNXV5X25CV05FUjlMVWVtMW1Cb2tWcmhoM25WbWxTTlVxY1NuZw%3D%3D" }, - "clickTrackingParams": "CNUMEKCzAhgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CIUMEKCzAhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -402,7 +2764,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -410,7 +2772,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CNYMEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CIYMEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_nBWNER9LUem1mBokVrhh3nVmlSNUqcSng" } @@ -419,7 +2781,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CNYMEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CIYMEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -444,7 +2806,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "COQMEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CJQMEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -460,13 +2822,13 @@ "browseId": "MPREb_ZkVjx6hEPfJ", "params": "ggMrGilPTEFLNXV5X25CV05FUjlMVWVtMW1Cb2tWcmhoM25WbWxTTlVxY1NuZw%3D%3D" }, - "clickTrackingParams": "CNUMEKCzAhgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CIUMEKCzAhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Life Goes On (feat. Luke Combs)" } ] }, - "trackingParams": "CNUMEKCzAhgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIUMEKCzAhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -486,7 +2848,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CNMMEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIMMEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_nKFZ59l5PiClSiv-wVYt2e_jypXtFipE0" @@ -499,7 +2861,7 @@ } ] }, - "trackingParams": "CNMMEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIMMEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -508,7 +2870,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CNIMEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIIMEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_nKFZ59l5PiClSiv-wVYt2e_jypXtFipE0" @@ -521,7 +2883,7 @@ } ] }, - "trackingParams": "CNIMEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIIMEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -530,7 +2892,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CNAMEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIAMEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -544,15 +2906,21 @@ } ] }, - "trackingParams": "CNEMEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CIEMEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CNAMEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CIAMEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIAMEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nKFZ59l5PiClSiv-wVYt2e_jypXtFipE0" + } + }, "playlistId": "OLAK5uy_nKFZ59l5PiClSiv-wVYt2e_jypXtFipE0" } } @@ -564,7 +2932,7 @@ } ] }, - "trackingParams": "CNAMEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIAMEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -573,7 +2941,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CM4MEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CP4LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -587,15 +2955,21 @@ } ] }, - "trackingParams": "CM8MEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CP8LEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CM4MEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CP4LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CP4LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nKFZ59l5PiClSiv-wVYt2e_jypXtFipE0" + } + }, "playlistId": "OLAK5uy_nKFZ59l5PiClSiv-wVYt2e_jypXtFipE0" } } @@ -607,7 +2981,7 @@ } ] }, - "trackingParams": "CM4MEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CP4LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -616,7 +2990,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CMwMEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPwLEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -624,7 +2998,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CM0MEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CP0LEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -637,13 +3011,13 @@ } ] }, - "trackingParams": "CM0MEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CP0LEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -661,7 +3035,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -669,7 +3043,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CMwMEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPwLEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -684,7 +3058,7 @@ } ] }, - "trackingParams": "CMwMEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPwLEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -693,7 +3067,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CMoMEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPoLEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -701,7 +3075,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CMsMEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPsLEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -714,7 +3088,7 @@ } ] }, - "trackingParams": "CMsMEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPsLEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -738,11 +3112,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CMoMEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPoLEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -759,7 +3133,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CMkMEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CPkLEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -768,7 +3142,7 @@ } ] }, - "trackingParams": "CMkMEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPkLEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -777,7 +3151,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CMgMEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPgLEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X25LRlo1OWw1UGlDbFNpdi13Vll0MmVfanlwWHRGaXBFMA%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -790,11 +3164,11 @@ } ] }, - "trackingParams": "CMgMEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPgLEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CMcMEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPcLEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -807,7 +3181,7 @@ "browseId": "MPREb_9jsAP3C5OSC", "params": "ggMrGilPTEFLNXV5X25LRlo1OWw1UGlDbFNpdi13Vll0MmVfanlwWHRGaXBFMA%3D%3D" }, - "clickTrackingParams": "CMUMEKCzAhgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CPULEKCzAhgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -851,7 +3225,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -859,7 +3233,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CMYMEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CPYLEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_nKFZ59l5PiClSiv-wVYt2e_jypXtFipE0" } @@ -868,7 +3242,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CMYMEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CPYLEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -893,7 +3267,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CNQMEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CIQMEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -909,13 +3283,13 @@ "browseId": "MPREb_9jsAP3C5OSC", "params": "ggMrGilPTEFLNXV5X25LRlo1OWw1UGlDbFNpdi13Vll0MmVfanlwWHRGaXBFMA%3D%3D" }, - "clickTrackingParams": "CMUMEKCzAhgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CPULEKCzAhgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "- (Deluxe)" } ] }, - "trackingParams": "CMUMEKCzAhgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPULEKCzAhgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -935,7 +3309,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CMMMEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPMLEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_nXWSLX0uaRYbLT7G4CPyYV1RdTwUqjO_o" @@ -948,7 +3322,7 @@ } ] }, - "trackingParams": "CMMMEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPMLEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -957,7 +3331,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CMIMEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPILEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_nXWSLX0uaRYbLT7G4CPyYV1RdTwUqjO_o" @@ -970,7 +3344,7 @@ } ] }, - "trackingParams": "CMIMEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPILEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -979,7 +3353,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CMAMEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPALEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -993,15 +3367,21 @@ } ] }, - "trackingParams": "CMEMEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CPELEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CMAMEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CPALEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CPALEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nXWSLX0uaRYbLT7G4CPyYV1RdTwUqjO_o" + } + }, "playlistId": "OLAK5uy_nXWSLX0uaRYbLT7G4CPyYV1RdTwUqjO_o" } } @@ -1013,7 +3393,7 @@ } ] }, - "trackingParams": "CMAMEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPALEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -1022,7 +3402,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CL4MEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CO4LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -1036,15 +3416,21 @@ } ] }, - "trackingParams": "CL8MEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CO8LEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CL4MEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CO4LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CO4LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nXWSLX0uaRYbLT7G4CPyYV1RdTwUqjO_o" + } + }, "playlistId": "OLAK5uy_nXWSLX0uaRYbLT7G4CPyYV1RdTwUqjO_o" } } @@ -1056,7 +3442,7 @@ } ] }, - "trackingParams": "CL4MEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CO4LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -1065,7 +3451,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CLwMEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COwLEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -1073,7 +3459,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CL0MEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CO0LEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -1086,13 +3472,13 @@ } ] }, - "trackingParams": "CL0MEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CO0LEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -1110,7 +3496,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -1118,7 +3504,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CLwMEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COwLEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -1133,7 +3519,7 @@ } ] }, - "trackingParams": "CLwMEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COwLEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -1142,7 +3528,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CLoMEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COoLEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -1150,7 +3536,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CLsMEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COsLEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -1163,7 +3549,7 @@ } ] }, - "trackingParams": "CLsMEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COsLEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -1187,11 +3573,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CLoMEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COoLEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -1208,7 +3594,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CLkMEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "COkLEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -1217,7 +3603,7 @@ } ] }, - "trackingParams": "CLkMEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COkLEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -1226,7 +3612,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CLgMEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COgLEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X25YV1NMWDB1YVJZYkxUN0c0Q1B5WVYxUmRUd1Vxak9fbw%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -1239,11 +3625,11 @@ } ] }, - "trackingParams": "CLgMEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COgLEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CLcMEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COcLEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -1256,7 +3642,7 @@ "browseId": "MPREb_WcJCE3syWlv", "params": "ggMrGilPTEFLNXV5X25YV1NMWDB1YVJZYkxUN0c0Q1B5WVYxUmRUd1Vxak9fbw%3D%3D" }, - "clickTrackingParams": "CLUMEKCzAhgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "COULEKCzAhgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -1300,7 +3686,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -1308,7 +3694,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CLYMEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "COYLEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_nXWSLX0uaRYbLT7G4CPyYV1RdTwUqjO_o" } @@ -1317,7 +3703,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CLYMEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "COYLEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -1342,7 +3728,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CMQMEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CPQLEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -1358,13 +3744,13 @@ "browseId": "MPREb_WcJCE3syWlv", "params": "ggMrGilPTEFLNXV5X25YV1NMWDB1YVJZYkxUN0c0Q1B5WVYxUmRUd1Vxak9fbw%3D%3D" }, - "clickTrackingParams": "CLUMEKCzAhgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "COULEKCzAhgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Boat" } ] }, - "trackingParams": "CLUMEKCzAhgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COULEKCzAhgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -1384,7 +3770,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CLMMEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COMLEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_lrsEqVe8-eymLW_7L1ZBF0tuxQx-wFAcg" @@ -1397,7 +3783,7 @@ } ] }, - "trackingParams": "CLMMEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COMLEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -1406,7 +3792,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CLIMEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COILEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_lrsEqVe8-eymLW_7L1ZBF0tuxQx-wFAcg" @@ -1419,7 +3805,7 @@ } ] }, - "trackingParams": "CLIMEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COILEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -1428,7 +3814,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CLAMEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COALEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -1442,15 +3828,21 @@ } ] }, - "trackingParams": "CLEMEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "COELEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CLAMEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "COALEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "COALEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lrsEqVe8-eymLW_7L1ZBF0tuxQx-wFAcg" + } + }, "playlistId": "OLAK5uy_lrsEqVe8-eymLW_7L1ZBF0tuxQx-wFAcg" } } @@ -1462,7 +3854,7 @@ } ] }, - "trackingParams": "CLAMEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COALEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -1471,7 +3863,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CK4MEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CN4LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -1485,15 +3877,21 @@ } ] }, - "trackingParams": "CK8MEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CN8LEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CK4MEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CN4LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CN4LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lrsEqVe8-eymLW_7L1ZBF0tuxQx-wFAcg" + } + }, "playlistId": "OLAK5uy_lrsEqVe8-eymLW_7L1ZBF0tuxQx-wFAcg" } } @@ -1505,7 +3903,7 @@ } ] }, - "trackingParams": "CK4MEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CN4LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -1514,7 +3912,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CKwMEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNwLEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -1522,7 +3920,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CK0MEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CN0LEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -1535,13 +3933,13 @@ } ] }, - "trackingParams": "CK0MEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CN0LEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -1559,7 +3957,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -1567,7 +3965,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CKwMEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNwLEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -1582,7 +3980,7 @@ } ] }, - "trackingParams": "CKwMEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNwLEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -1591,7 +3989,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CKoMEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNoLEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -1599,7 +3997,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CKsMEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNsLEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -1612,7 +4010,7 @@ } ] }, - "trackingParams": "CKsMEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNsLEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -1636,11 +4034,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CKoMEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNoLEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -1657,7 +4055,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CKkMEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CNkLEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -1666,7 +4064,7 @@ } ] }, - "trackingParams": "CKkMEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNkLEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -1675,7 +4073,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CKgMEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNgLEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X2xyc0VxVmU4LWV5bUxXXzdMMVpCRjB0dXhReC13RkFjZw%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -1688,11 +4086,11 @@ } ] }, - "trackingParams": "CKgMEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNgLEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CKcMEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNcLEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -1705,7 +4103,7 @@ "browseId": "MPREb_g9c75ZTnHKo", "params": "ggMrGilPTEFLNXV5X2xyc0VxVmU4LWV5bUxXXzdMMVpCRjB0dXhReC13RkFjZw%3D%3D" }, - "clickTrackingParams": "CKUMEKCzAhgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CNULEKCzAhgIIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -1749,7 +4147,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -1757,7 +4155,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CKYMEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CNYLEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_lrsEqVe8-eymLW_7L1ZBF0tuxQx-wFAcg" } @@ -1766,7 +4164,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CKYMEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CNYLEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -1791,7 +4189,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CLQMEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "COQLEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -1807,13 +4205,13 @@ "browseId": "MPREb_g9c75ZTnHKo", "params": "ggMrGilPTEFLNXV5X2xyc0VxVmU4LWV5bUxXXzdMMVpCRjB0dXhReC13RkFjZw%3D%3D" }, - "clickTrackingParams": "CKUMEKCzAhgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CNULEKCzAhgIIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Eyes Closed (Piano Version)" } ] }, - "trackingParams": "CKUMEKCzAhgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNULEKCzAhgIIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -1833,7 +4231,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CKMMEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNMLEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_kXQcBeosMlwt7DncpHfQnFpiOSsF86Jgg" @@ -1846,7 +4244,7 @@ } ] }, - "trackingParams": "CKMMEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNMLEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -1855,7 +4253,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CKIMEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNILEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_kXQcBeosMlwt7DncpHfQnFpiOSsF86Jgg" @@ -1868,7 +4266,7 @@ } ] }, - "trackingParams": "CKIMEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNILEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -1877,7 +4275,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CKAMEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNALEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -1891,15 +4289,21 @@ } ] }, - "trackingParams": "CKEMEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CNELEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CKAMEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CNALEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNALEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_kXQcBeosMlwt7DncpHfQnFpiOSsF86Jgg" + } + }, "playlistId": "OLAK5uy_kXQcBeosMlwt7DncpHfQnFpiOSsF86Jgg" } } @@ -1911,7 +4315,7 @@ } ] }, - "trackingParams": "CKAMEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNALEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -1920,7 +4324,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CJ4MEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CM4LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -1934,15 +4338,21 @@ } ] }, - "trackingParams": "CJ8MEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CM8LEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CJ4MEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CM4LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CM4LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_kXQcBeosMlwt7DncpHfQnFpiOSsF86Jgg" + } + }, "playlistId": "OLAK5uy_kXQcBeosMlwt7DncpHfQnFpiOSsF86Jgg" } } @@ -1954,7 +4364,7 @@ } ] }, - "trackingParams": "CJ4MEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CM4LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -1963,7 +4373,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CJwMEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMwLEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -1971,7 +4381,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CJ0MEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CM0LEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -1984,13 +4394,13 @@ } ] }, - "trackingParams": "CJ0MEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CM0LEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -2008,7 +4418,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -2016,7 +4426,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CJwMEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMwLEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -2031,7 +4441,7 @@ } ] }, - "trackingParams": "CJwMEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMwLEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -2040,7 +4450,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CJoMEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMoLEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -2048,7 +4458,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CJsMEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMsLEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -2061,7 +4471,7 @@ } ] }, - "trackingParams": "CJsMEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMsLEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -2085,11 +4495,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CJoMEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMoLEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -2106,7 +4516,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CJkMEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CMkLEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -2115,7 +4525,7 @@ } ] }, - "trackingParams": "CJkMEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMkLEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -2124,7 +4534,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CJgMEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMgLEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X2tYUWNCZW9zTWx3dDdEbmNwSGZRbkZwaU9Tc0Y4NkpnZw%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -2137,11 +4547,11 @@ } ] }, - "trackingParams": "CJgMEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMgLEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CJcMEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMcLEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -2154,7 +4564,7 @@ "browseId": "MPREb_CrQXpRc2xsH", "params": "ggMrGilPTEFLNXV5X2tYUWNCZW9zTWx3dDdEbmNwSGZRbkZwaU9Tc0Y4NkpnZw%3D%3D" }, - "clickTrackingParams": "CJUMEKCzAhgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CMULEKCzAhgJIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -2198,7 +4608,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -2206,7 +4616,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CJYMEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CMYLEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_kXQcBeosMlwt7DncpHfQnFpiOSsF86Jgg" } @@ -2215,7 +4625,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CJYMEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CMYLEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -2240,7 +4650,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CKQMEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CNQLEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -2256,13 +4666,13 @@ "browseId": "MPREb_CrQXpRc2xsH", "params": "ggMrGilPTEFLNXV5X2tYUWNCZW9zTWx3dDdEbmNwSGZRbkZwaU9Tc0Y4NkpnZw%3D%3D" }, - "clickTrackingParams": "CJUMEKCzAhgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CMULEKCzAhgJIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Eyes Closed" } ] }, - "trackingParams": "CJUMEKCzAhgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMULEKCzAhgJIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -2282,10 +4692,10 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CJMMEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMMLEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_kAVV2Wkl-5py7pkDOW--vxwr_JleBvQyo" + "playlistId": "OLAK5uy_mJPL58KJ1xNeh5hhXhLNOYAbnmHrWWfk8" } }, "text": { @@ -2295,7 +4705,7 @@ } ] }, - "trackingParams": "CJMMEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMMLEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -2304,10 +4714,10 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CJIMEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMILEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_kAVV2Wkl-5py7pkDOW--vxwr_JleBvQyo" + "playlistId": "RDAMPLOLAK5uy_mJPL58KJ1xNeh5hhXhLNOYAbnmHrWWfk8" } }, "text": { @@ -2317,7 +4727,7 @@ } ] }, - "trackingParams": "CJIMEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMILEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -2326,7 +4736,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CJAMEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMALEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -2340,16 +4750,22 @@ } ] }, - "trackingParams": "CJEMEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CMELEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CJAMEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CMALEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { - "playlistId": "OLAK5uy_kAVV2Wkl-5py7pkDOW--vxwr_JleBvQyo" + "onEmptyQueue": { + "clickTrackingParams": "CMALEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mJPL58KJ1xNeh5hhXhLNOYAbnmHrWWfk8" + } + }, + "playlistId": "OLAK5uy_mJPL58KJ1xNeh5hhXhLNOYAbnmHrWWfk8" } } }, @@ -2360,7 +4776,7 @@ } ] }, - "trackingParams": "CJAMEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMALEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -2369,7 +4785,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CI4MEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CL4LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -2383,16 +4799,22 @@ } ] }, - "trackingParams": "CI8MEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CL8LEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CI4MEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CL4LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { - "playlistId": "OLAK5uy_kAVV2Wkl-5py7pkDOW--vxwr_JleBvQyo" + "onEmptyQueue": { + "clickTrackingParams": "CL4LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mJPL58KJ1xNeh5hhXhLNOYAbnmHrWWfk8" + } + }, + "playlistId": "OLAK5uy_mJPL58KJ1xNeh5hhXhLNOYAbnmHrWWfk8" } } }, @@ -2403,7 +4825,7 @@ } ] }, - "trackingParams": "CI4MEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CL4LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -2412,7 +4834,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CIwMEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLwLEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -2420,7 +4842,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CI0MEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CL0LEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -2433,13 +4855,13 @@ } ] }, - "trackingParams": "CI0MEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CL0LEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -2457,7 +4879,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -2465,11 +4887,11 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CIwMEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLwLEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { - "playlistId": "OLAK5uy_kAVV2Wkl-5py7pkDOW--vxwr_JleBvQyo" + "playlistId": "OLAK5uy_mJPL58KJ1xNeh5hhXhLNOYAbnmHrWWfk8" } } }, @@ -2480,7 +4902,7 @@ } ] }, - "trackingParams": "CIwMEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLwLEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -2489,7 +4911,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CIoMEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLoLEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -2497,7 +4919,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CIsMEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLsLEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -2510,7 +4932,7 @@ } ] }, - "trackingParams": "CIsMEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLsLEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -2534,11 +4956,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CIoMEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLoLEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -2555,7 +4977,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CIkMEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CLkLEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -2564,7 +4986,7 @@ } ] }, - "trackingParams": "CIkMEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLkLEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -2573,7 +4995,468 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CIgMEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLgLEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X21KUEw1OEtKMXhOZWg1aGhYaExOT1lBYm5tSHJXV2ZrOA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CLgLEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CLcLEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_fZNv5ElWNqo", + "params": "ggMrGilPTEFLNXV5X21KUEw1OEtKMXhOZWg1aGhYaExOT1lBYm5tSHJXV2ZrOA%3D%3D" + }, + "clickTrackingParams": "CLULEKCzAhgKIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2023" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Eyes Closed (Lost Frequencies Remix)" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Eyes Closed (Lost Frequencies Remix)" + } + }, + "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": "CLYLEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_mJPL58KJ1xNeh5hhXhLNOYAbnmHrWWfk8" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CLYLEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/HdIO1ivyZIMz0Zc9X3T0zH-WkwnJJWwbrn16OR_PUSRVUyKbznXhBZDACfHgi-twjMlR0E765Wqw2p3uYw=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/HdIO1ivyZIMz0Zc9X3T0zH-WkwnJJWwbrn16OR_PUSRVUyKbznXhBZDACfHgi-twjMlR0E765Wqw2p3uYw=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CMQLEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_fZNv5ElWNqo", + "params": "ggMrGilPTEFLNXV5X21KUEw1OEtKMXhOZWg1aGhYaExOT1lBYm5tSHJXV2ZrOA%3D%3D" + }, + "clickTrackingParams": "CLULEKCzAhgKIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "Eyes Closed (Lost Frequencies Remix)" + } + ] + }, + "trackingParams": "CLULEKCzAhgKIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CLMLEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_kAVV2Wkl-5py7pkDOW--vxwr_JleBvQyo" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CLMLEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLILEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_kAVV2Wkl-5py7pkDOW--vxwr_JleBvQyo" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CLILEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLALEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CLELEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CLALEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CLALEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_kAVV2Wkl-5py7pkDOW--vxwr_JleBvQyo" + } + }, + "playlistId": "OLAK5uy_kAVV2Wkl-5py7pkDOW--vxwr_JleBvQyo" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CLALEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK4LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CK8LEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CK4LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CK4LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_kAVV2Wkl-5py7pkDOW--vxwr_JleBvQyo" + } + }, + "playlistId": "OLAK5uy_kAVV2Wkl-5py7pkDOW--vxwr_JleBvQyo" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CK4LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CKwLEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CK0LEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CK0LEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CKwLEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_kAVV2Wkl-5py7pkDOW--vxwr_JleBvQyo" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CKwLEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKoLEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CKsLEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CKsLEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CKoLEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CKkLEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CKkLEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKgLEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X2tBVlYyV2tsLTVweTdwa0RPVy0tdnh3cl9KbGVCdlF5bw%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -2586,11 +5469,11 @@ } ] }, - "trackingParams": "CIgMEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKgLEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CIcMEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKcLEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -2603,7 +5486,7 @@ "browseId": "MPREb_boUIBO6m7u6", "params": "ggMrGilPTEFLNXV5X2tBVlYyV2tsLTVweTdwa0RPVy0tdnh3cl9KbGVCdlF5bw%3D%3D" }, - "clickTrackingParams": "CIQMEKCzAhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CKQLEKCzAhgLIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -2629,7 +5512,7 @@ "icon": { "iconType": "MUSIC_EXPLICIT_BADGE" }, - "trackingParams": "CIUMEKHtAhgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKULEKHtAhgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], @@ -2662,7 +5545,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -2670,7 +5553,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CIYMEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CKYLEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_kAVV2Wkl-5py7pkDOW--vxwr_JleBvQyo" } @@ -2679,7 +5562,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CIYMEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CKYLEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -2704,7 +5587,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CJQMEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CLQLEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -2720,13 +5603,13 @@ "browseId": "MPREb_boUIBO6m7u6", "params": "ggMrGilPTEFLNXV5X2tBVlYyV2tsLTVweTdwa0RPVy0tdnh3cl9KbGVCdlF5bw%3D%3D" }, - "clickTrackingParams": "CIQMEKCzAhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CKQLEKCzAhgLIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "F64" } ] }, - "trackingParams": "CIQMEKCzAhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKQLEKCzAhgLIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -2746,7 +5629,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CIIMEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CKILEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_kzr8oo2GMNSj1G8uaE0bFn5399YzzYsu8" @@ -2759,7 +5642,7 @@ } ] }, - "trackingParams": "CIIMEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKILEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -2768,7 +5651,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CIEMEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CKELEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_kzr8oo2GMNSj1G8uaE0bFn5399YzzYsu8" @@ -2781,7 +5664,7 @@ } ] }, - "trackingParams": "CIEMEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKELEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -2790,7 +5673,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CP8LEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CJ8LEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -2804,15 +5687,21 @@ } ] }, - "trackingParams": "CIAMEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CKALEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CP8LEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CJ8LEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJ8LEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_kzr8oo2GMNSj1G8uaE0bFn5399YzzYsu8" + } + }, "playlistId": "OLAK5uy_kzr8oo2GMNSj1G8uaE0bFn5399YzzYsu8" } } @@ -2824,7 +5713,7 @@ } ] }, - "trackingParams": "CP8LEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJ8LEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -2833,7 +5722,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CP0LEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CJ0LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -2847,15 +5736,21 @@ } ] }, - "trackingParams": "CP4LEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CJ4LEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CP0LEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CJ0LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJ0LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_kzr8oo2GMNSj1G8uaE0bFn5399YzzYsu8" + } + }, "playlistId": "OLAK5uy_kzr8oo2GMNSj1G8uaE0bFn5399YzzYsu8" } } @@ -2867,7 +5762,7 @@ } ] }, - "trackingParams": "CP0LEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJ0LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -2876,7 +5771,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CPsLEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CJsLEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -2884,7 +5779,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CPwLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CJwLEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -2897,13 +5792,13 @@ } ] }, - "trackingParams": "CPwLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJwLEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -2921,7 +5816,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -2929,7 +5824,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CPsLEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CJsLEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -2944,7 +5839,7 @@ } ] }, - "trackingParams": "CPsLEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJsLEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -2953,7 +5848,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CPkLEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CJkLEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -2961,7 +5856,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CPoLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CJoLEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -2974,7 +5869,7 @@ } ] }, - "trackingParams": "CPoLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJoLEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -2998,11 +5893,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CPkLEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJkLEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -3019,7 +5914,7 @@ }, "browseId": "UCQ-prbYOavthwqVWYf_RgHw" }, - "clickTrackingParams": "CPgLEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CJgLEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -3028,7 +5923,7 @@ } ] }, - "trackingParams": "CPgLEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJgLEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -3037,7 +5932,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CPcLEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CJcLEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X2t6cjhvbzJHTU5TajFHOHVhRTBiRm41Mzk5WXp6WXN1OA%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -3050,11 +5945,11 @@ } ] }, - "trackingParams": "CPcLEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJcLEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CPYLEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJYLEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -3067,7 +5962,7 @@ "browseId": "MPREb_iylYq94dZBe", "params": "ggMrGilPTEFLNXV5X2t6cjhvbzJHTU5TajFHOHVhRTBiRm41Mzk5WXp6WXN1OA%3D%3D" }, - "clickTrackingParams": "CPQLEKCzAhgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CJQLEKCzAhgMIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -3111,7 +6006,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -3119,7 +6014,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CPULEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CJULEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_kzr8oo2GMNSj1G8uaE0bFn5399YzzYsu8" } @@ -3128,7 +6023,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CPULEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CJULEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -3153,7 +6048,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CIMMEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CKMLEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -3169,13 +6064,13 @@ "browseId": "MPREb_iylYq94dZBe", "params": "ggMrGilPTEFLNXV5X2t6cjhvbzJHTU5TajFHOHVhRTBiRm41Mzk5WXp6WXN1OA%3D%3D" }, - "clickTrackingParams": "CPQLEKCzAhgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CJQLEKCzAhgMIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Call on me (feat. Ed Sheeran)" } ] }, - "trackingParams": "CPQLEKCzAhgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJQLEKCzAhgMIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -3195,7 +6090,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CPILEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CJILEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_mkm3siVsoI026ieRoxU49WOUkv2FI6U_0" @@ -3208,7 +6103,7 @@ } ] }, - "trackingParams": "CPILEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJILEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -3217,7 +6112,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CPELEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CJELEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_mkm3siVsoI026ieRoxU49WOUkv2FI6U_0" @@ -3230,7 +6125,7 @@ } ] }, - "trackingParams": "CPELEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJELEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -3239,7 +6134,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CO8LEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CI8LEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -3253,15 +6148,21 @@ } ] }, - "trackingParams": "CPALEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CJALEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CO8LEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CI8LEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CI8LEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mkm3siVsoI026ieRoxU49WOUkv2FI6U_0" + } + }, "playlistId": "OLAK5uy_mkm3siVsoI026ieRoxU49WOUkv2FI6U_0" } } @@ -3273,7 +6174,7 @@ } ] }, - "trackingParams": "CO8LEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CI8LEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -3282,7 +6183,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CO0LEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CI0LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -3296,15 +6197,21 @@ } ] }, - "trackingParams": "CO4LEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CI4LEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CO0LEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CI0LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CI0LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mkm3siVsoI026ieRoxU49WOUkv2FI6U_0" + } + }, "playlistId": "OLAK5uy_mkm3siVsoI026ieRoxU49WOUkv2FI6U_0" } } @@ -3316,7 +6223,7 @@ } ] }, - "trackingParams": "CO0LEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CI0LEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -3325,7 +6232,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "COsLEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIsLEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -3333,7 +6240,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "COwLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIwLEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -3346,13 +6253,13 @@ } ] }, - "trackingParams": "COwLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIwLEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -3370,7 +6277,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -3378,7 +6285,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "COsLEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIsLEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -3393,7 +6300,7 @@ } ] }, - "trackingParams": "COsLEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIsLEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -3402,7 +6309,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "COkLEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIkLEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -3410,7 +6317,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "COoLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIoLEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -3423,7 +6330,7 @@ } ] }, - "trackingParams": "COoLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIoLEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -3447,11 +6354,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "COkLEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIkLEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -3468,7 +6375,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "COgLEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CIgLEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -3477,7 +6384,7 @@ } ] }, - "trackingParams": "COgLEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIgLEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -3486,7 +6393,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "COcLEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIcLEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X21rbTNzaVZzb0kwMjZpZVJveFU0OVdPVWt2MkZJNlVfMA%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -3499,11 +6406,11 @@ } ] }, - "trackingParams": "COcLEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIcLEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "COYLEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIYLEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -3516,7 +6423,7 @@ "browseId": "MPREb_J8oBiEZMFNu", "params": "ggMrGilPTEFLNXV5X21rbTNzaVZzb0kwMjZpZVJveFU0OVdPVWt2MkZJNlVfMA%3D%3D" }, - "clickTrackingParams": "COQLEKCzAhgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CIQLEKCzAhgNIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -3560,7 +6467,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -3568,7 +6475,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "COULEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CIULEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_mkm3siVsoI026ieRoxU49WOUkv2FI6U_0" } @@ -3577,7 +6484,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "COULEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CIULEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -3602,7 +6509,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CPMLEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CJMLEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -3618,13 +6525,13 @@ "browseId": "MPREb_J8oBiEZMFNu", "params": "ggMrGilPTEFLNXV5X21rbTNzaVZzb0kwMjZpZVJveFU0OVdPVWt2MkZJNlVfMA%3D%3D" }, - "clickTrackingParams": "COQLEKCzAhgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CIQLEKCzAhgNIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Celestial" } ] }, - "trackingParams": "COQLEKCzAhgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIQLEKCzAhgNIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -3644,7 +6551,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "COILEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIILEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_m4g8jFVllH0WqYjBXGxQy-Yq0lf65NNm0" @@ -3657,7 +6564,7 @@ } ] }, - "trackingParams": "COILEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIILEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -3666,7 +6573,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "COELEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIELEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_m4g8jFVllH0WqYjBXGxQy-Yq0lf65NNm0" @@ -3679,7 +6586,7 @@ } ] }, - "trackingParams": "COELEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIELEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -3688,7 +6595,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CN8LEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CP8KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -3702,15 +6609,21 @@ } ] }, - "trackingParams": "COALEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CIALEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CN8LEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CP8KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CP8KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_m4g8jFVllH0WqYjBXGxQy-Yq0lf65NNm0" + } + }, "playlistId": "OLAK5uy_m4g8jFVllH0WqYjBXGxQy-Yq0lf65NNm0" } } @@ -3722,7 +6635,7 @@ } ] }, - "trackingParams": "CN8LEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CP8KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -3731,7 +6644,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CN0LEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CP0KEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -3745,15 +6658,21 @@ } ] }, - "trackingParams": "CN4LEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CP4KEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CN0LEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CP0KEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CP0KEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_m4g8jFVllH0WqYjBXGxQy-Yq0lf65NNm0" + } + }, "playlistId": "OLAK5uy_m4g8jFVllH0WqYjBXGxQy-Yq0lf65NNm0" } } @@ -3765,7 +6684,7 @@ } ] }, - "trackingParams": "CN0LEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CP0KEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -3774,7 +6693,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CNsLEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPsKEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -3782,7 +6701,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CNwLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPwKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -3795,13 +6714,13 @@ } ] }, - "trackingParams": "CNwLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPwKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -3819,7 +6738,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -3827,7 +6746,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CNsLEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPsKEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -3842,7 +6761,7 @@ } ] }, - "trackingParams": "CNsLEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPsKEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -3851,7 +6770,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CNkLEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPkKEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -3859,7 +6778,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CNoLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPoKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -3872,7 +6791,7 @@ } ] }, - "trackingParams": "CNoLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPoKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -3896,11 +6815,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CNkLEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPkKEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -3917,7 +6836,7 @@ }, "browseId": "UCb7jnkQW94hzOoWkG14zs4w" }, - "clickTrackingParams": "CNgLEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CPgKEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -3926,7 +6845,7 @@ } ] }, - "trackingParams": "CNgLEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPgKEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -3935,7 +6854,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CNcLEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPcKEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X200ZzhqRlZsbEgwV3FZakJYR3hReS1ZcTBsZjY1Tk5tMA%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -3948,11 +6867,11 @@ } ] }, - "trackingParams": "CNcLEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPcKEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CNYLEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPYKEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -3965,7 +6884,7 @@ "browseId": "MPREb_nQJVJcUOc9V", "params": "ggMrGilPTEFLNXV5X200ZzhqRlZsbEgwV3FZakJYR3hReS1ZcTBsZjY1Tk5tMA%3D%3D" }, - "clickTrackingParams": "CNMLEKCzAhgIIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CPMKEKCzAhgOIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -3991,7 +6910,7 @@ "icon": { "iconType": "MUSIC_EXPLICIT_BADGE" }, - "trackingParams": "CNQLEKHtAhgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPQKEKHtAhgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], @@ -4024,7 +6943,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -4032,7 +6951,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CNULEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CPUKEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_m4g8jFVllH0WqYjBXGxQy-Yq0lf65NNm0" } @@ -4041,7 +6960,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CNULEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CPUKEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -4066,7 +6985,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "COMLEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CIMLEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -4082,13 +7001,13 @@ "browseId": "MPREb_nQJVJcUOc9V", "params": "ggMrGilPTEFLNXV5X200ZzhqRlZsbEgwV3FZakJYR3hReS1ZcTBsZjY1Tk5tMA%3D%3D" }, - "clickTrackingParams": "CNMLEKCzAhgIIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CPMKEKCzAhgOIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Lonely Lovers" } ] }, - "trackingParams": "CNMLEKCzAhgIIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPMKEKCzAhgOIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -4108,7 +7027,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CNELEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPEKEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_lkWpmy0US4S8Y2yPNnUaCQLy3bJBHXqRg" @@ -4121,7 +7040,7 @@ } ] }, - "trackingParams": "CNELEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPEKEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -4130,7 +7049,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CNALEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPAKEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_lkWpmy0US4S8Y2yPNnUaCQLy3bJBHXqRg" @@ -4143,7 +7062,7 @@ } ] }, - "trackingParams": "CNALEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPAKEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -4152,7 +7071,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CM4LEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CO4KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -4166,15 +7085,21 @@ } ] }, - "trackingParams": "CM8LEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CO8KEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CM4LEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CO4KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CO4KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lkWpmy0US4S8Y2yPNnUaCQLy3bJBHXqRg" + } + }, "playlistId": "OLAK5uy_lkWpmy0US4S8Y2yPNnUaCQLy3bJBHXqRg" } } @@ -4186,7 +7111,7 @@ } ] }, - "trackingParams": "CM4LEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CO4KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -4195,7 +7120,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CMwLEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COwKEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -4209,15 +7134,21 @@ } ] }, - "trackingParams": "CM0LEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CO0KEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CMwLEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "COwKEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "COwKEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lkWpmy0US4S8Y2yPNnUaCQLy3bJBHXqRg" + } + }, "playlistId": "OLAK5uy_lkWpmy0US4S8Y2yPNnUaCQLy3bJBHXqRg" } } @@ -4229,7 +7160,7 @@ } ] }, - "trackingParams": "CMwLEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COwKEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -4238,7 +7169,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CMoLEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COoKEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -4246,7 +7177,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CMsLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COsKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -4259,13 +7190,13 @@ } ] }, - "trackingParams": "CMsLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COsKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -4283,7 +7214,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -4291,7 +7222,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CMoLEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COoKEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -4306,7 +7237,7 @@ } ] }, - "trackingParams": "CMoLEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COoKEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -4315,7 +7246,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CMgLEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COgKEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -4323,7 +7254,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CMkLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COkKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -4336,7 +7267,7 @@ } ] }, - "trackingParams": "CMkLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COkKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -4360,11 +7291,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CMgLEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COgKEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -4381,7 +7312,7 @@ }, "browseId": "UCkfDfGRfMTXse0jHnPNNBBg" }, - "clickTrackingParams": "CMcLEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "COcKEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -4390,7 +7321,7 @@ } ] }, - "trackingParams": "CMcLEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COcKEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -4399,7 +7330,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CMYLEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COYKEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X2xrV3BteTBVUzRTOFkyeVBOblVhQ1FMeTNiSkJIWHFSZw%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -4412,11 +7343,11 @@ } ] }, - "trackingParams": "CMYLEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COYKEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CMULEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COUKEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -4429,7 +7360,7 @@ "browseId": "MPREb_z1fvGaWTkwE", "params": "ggMrGilPTEFLNXV5X2xrV3BteTBVUzRTOFkyeVBOblVhQ1FMeTNiSkJIWHFSZw%3D%3D" }, - "clickTrackingParams": "CMILEKCzAhgJIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "COIKEKCzAhgPIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -4455,7 +7386,7 @@ "icon": { "iconType": "MUSIC_EXPLICIT_BADGE" }, - "trackingParams": "CMMLEKHtAhgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COMKEKHtAhgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], @@ -4488,7 +7419,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -4496,7 +7427,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CMQLEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "COQKEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_lkWpmy0US4S8Y2yPNnUaCQLy3bJBHXqRg" } @@ -4505,7 +7436,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CMQLEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "COQKEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -4530,7 +7461,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CNILEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CPIKEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -4546,13 +7477,13 @@ "browseId": "MPREb_z1fvGaWTkwE", "params": "ggMrGilPTEFLNXV5X2xrV3BteTBVUzRTOFkyeVBOblVhQ1FMeTNiSkJIWHFSZw%3D%3D" }, - "clickTrackingParams": "CMILEKCzAhgJIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "COIKEKCzAhgPIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Groundwork" } ] }, - "trackingParams": "CMILEKCzAhgJIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COIKEKCzAhgPIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -4572,7 +7503,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CMALEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COAKEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_lydZfHFQbc61NZDREUYLeS2hvxhU4uzg0" @@ -4585,7 +7516,7 @@ } ] }, - "trackingParams": "CMALEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COAKEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -4594,7 +7525,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CL8LEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CN8KEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_lydZfHFQbc61NZDREUYLeS2hvxhU4uzg0" @@ -4607,7 +7538,7 @@ } ] }, - "trackingParams": "CL8LEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CN8KEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -4616,7 +7547,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CL0LEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CN0KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -4630,15 +7561,21 @@ } ] }, - "trackingParams": "CL4LEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CN4KEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CL0LEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CN0KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CN0KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lydZfHFQbc61NZDREUYLeS2hvxhU4uzg0" + } + }, "playlistId": "OLAK5uy_lydZfHFQbc61NZDREUYLeS2hvxhU4uzg0" } } @@ -4650,7 +7587,7 @@ } ] }, - "trackingParams": "CL0LEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CN0KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -4659,7 +7596,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CLsLEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNsKEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -4673,15 +7610,21 @@ } ] }, - "trackingParams": "CLwLEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CNwKEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CLsLEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CNsKEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNsKEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lydZfHFQbc61NZDREUYLeS2hvxhU4uzg0" + } + }, "playlistId": "OLAK5uy_lydZfHFQbc61NZDREUYLeS2hvxhU4uzg0" } } @@ -4693,7 +7636,7 @@ } ] }, - "trackingParams": "CLsLEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNsKEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -4702,7 +7645,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CLkLEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNkKEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -4710,7 +7653,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CLoLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNoKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -4723,13 +7666,13 @@ } ] }, - "trackingParams": "CLoLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNoKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -4747,7 +7690,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -4755,7 +7698,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CLkLEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNkKEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -4770,7 +7713,7 @@ } ] }, - "trackingParams": "CLkLEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNkKEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -4779,7 +7722,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CLcLEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNcKEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -4787,7 +7730,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CLgLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNgKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -4800,7 +7743,7 @@ } ] }, - "trackingParams": "CLgLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNgKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -4824,11 +7767,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CLcLEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNcKEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -4845,7 +7788,7 @@ }, "browseId": "UCpH92jOmlMe71mRYEkp7riQ" }, - "clickTrackingParams": "CLYLEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CNYKEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -4854,7 +7797,7 @@ } ] }, - "trackingParams": "CLYLEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNYKEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -4863,7 +7806,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CLULEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNUKEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X2x5ZFpmSEZRYmM2MU5aRFJFVVlMZVMyaHZ4aFU0dXpnMA%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -4876,11 +7819,11 @@ } ] }, - "trackingParams": "CLULEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNUKEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CLQLEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNQKEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -4893,7 +7836,7 @@ "browseId": "MPREb_Gt2VWae3Yba", "params": "ggMrGilPTEFLNXV5X2x5ZFpmSEZRYmM2MU5aRFJFVVlMZVMyaHZ4aFU0dXpnMA%3D%3D" }, - "clickTrackingParams": "CLILEKCzAhgKIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CNIKEKCzAhgQIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -4937,7 +7880,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -4945,7 +7888,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CLMLEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CNMKEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_lydZfHFQbc61NZDREUYLeS2hvxhU4uzg0" } @@ -4954,7 +7897,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CLMLEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CNMKEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -4979,7 +7922,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CMELEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "COEKEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -4995,13 +7938,13 @@ "browseId": "MPREb_Gt2VWae3Yba", "params": "ggMrGilPTEFLNXV5X2x5ZFpmSEZRYmM2MU5aRFJFVVlMZVMyaHZ4aFU0dXpnMA%3D%3D" }, - "clickTrackingParams": "CLILEKCzAhgKIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CNIKEKCzAhgQIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Noche de Novela" } ] }, - "trackingParams": "CLILEKCzAhgKIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNIKEKCzAhgQIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -5021,26199 +7964,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CLALEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_kizwW-pDeObWbVVk0126BXcJ_EYLj819w" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CLALEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CK8LEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_kizwW-pDeObWbVVk0126BXcJ_EYLj819w" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CK8LEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CK0LEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CK4LEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CK0LEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_kizwW-pDeObWbVVk0126BXcJ_EYLj819w" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CK0LEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CKsLEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CKwLEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CKsLEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_kizwW-pDeObWbVVk0126BXcJ_EYLj819w" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CKsLEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CKkLEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CKoLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CKoLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CKkLEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_kizwW-pDeObWbVVk0126BXcJ_EYLj819w" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CKkLEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CKcLEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CKgLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CKgLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CKcLEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UCtObclET6c_Zard7xE1wV5Q" - }, - "clickTrackingParams": "CKYLEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CKYLEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CKULEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2tpendXLXBEZU9iV2JWVmswMTI2QlhjSl9FWUxqODE5dw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CKULEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CKQLEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_JSWUcZ11cM7", - "params": "ggMrGilPTEFLNXV5X2tpendXLXBEZU9iV2JWVmswMTI2QlhjSl9FWUxqODE5dw%3D%3D" - }, - "clickTrackingParams": "CKELEKCzAhgLIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2022" - } - ] - }, - "subtitleBadges": [ - { - "musicInlineBadgeRenderer": { - "accessibilityData": { - "accessibilityData": { - "label": "Explicit" - } - }, - "icon": { - "iconType": "MUSIC_EXPLICIT_BADGE" - }, - "trackingParams": "CKILEKHtAhgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Are You Entertained" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Are You Entertained" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CKMLEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_kizwW-pDeObWbVVk0126BXcJ_EYLj819w" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CKMLEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/WEr3fB_IMs3qNRce0mejdN-rHz2p6gioqM_2tXsbGVtNc9VWQBxek1TqKZLF1i9rUGbZz7uH9x2mhayj=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/WEr3fB_IMs3qNRce0mejdN-rHz2p6gioqM_2tXsbGVtNc9VWQBxek1TqKZLF1i9rUGbZz7uH9x2mhayj=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CLELEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_JSWUcZ11cM7", - "params": "ggMrGilPTEFLNXV5X2tpendXLXBEZU9iV2JWVmswMTI2QlhjSl9FWUxqODE5dw%3D%3D" - }, - "clickTrackingParams": "CKELEKCzAhgLIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Are You Entertained" - } - ] - }, - "trackingParams": "CKELEKCzAhgLIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CJ8LEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_n5Ype-q-BeCOSoBM3cb71Fjc5v71u4pH4" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CJ8LEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CJ4LEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_n5Ype-q-BeCOSoBM3cb71Fjc5v71u4pH4" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CJ4LEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CJwLEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CJ0LEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CJwLEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_n5Ype-q-BeCOSoBM3cb71Fjc5v71u4pH4" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CJwLEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CJoLEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CJsLEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CJoLEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_n5Ype-q-BeCOSoBM3cb71Fjc5v71u4pH4" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CJoLEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CJgLEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CJkLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CJkLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CJgLEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_n5Ype-q-BeCOSoBM3cb71Fjc5v71u4pH4" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CJgLEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CJYLEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CJcLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CJcLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CJYLEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CJULEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CJULEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CJQLEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X241WXBlLXEtQmVDT1NvQk0zY2I3MUZqYzV2NzF1NHBINA%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CJQLEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CJMLEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_4nNFUnbkX0Y", - "params": "ggMrGilPTEFLNXV5X241WXBlLXEtQmVDT1NvQk0zY2I3MUZqYzV2NzF1NHBINA%3D%3D" - }, - "clickTrackingParams": "CJELEKCzAhgMIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2022" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause 2step" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play 2step" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CJILEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_n5Ype-q-BeCOSoBM3cb71Fjc5v71u4pH4" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CJILEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/osqa9lfnMKXUczVcgZEK2Kg-AzuQQWgi3sTYgQ5FnpU8o2ULxK-HhuPZ_GK1xoDTqlEUaqRiNGd4ACzfIw=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/osqa9lfnMKXUczVcgZEK2Kg-AzuQQWgi3sTYgQ5FnpU8o2ULxK-HhuPZ_GK1xoDTqlEUaqRiNGd4ACzfIw=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CKALEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_4nNFUnbkX0Y", - "params": "ggMrGilPTEFLNXV5X241WXBlLXEtQmVDT1NvQk0zY2I3MUZqYzV2NzF1NHBINA%3D%3D" - }, - "clickTrackingParams": "CJELEKCzAhgMIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "2step (feat. Denise Chaila)" - } - ] - }, - "trackingParams": "CJELEKCzAhgMIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CI8LEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_l30YoxE7eKxE-x26_iHfIzxfJTBB8AZZw" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CI8LEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CI4LEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_l30YoxE7eKxE-x26_iHfIzxfJTBB8AZZw" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CI4LEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CIwLEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CI0LEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CIwLEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_l30YoxE7eKxE-x26_iHfIzxfJTBB8AZZw" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CIwLEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CIoLEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CIsLEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CIoLEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_l30YoxE7eKxE-x26_iHfIzxfJTBB8AZZw" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CIoLEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CIgLEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CIkLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CIkLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CIgLEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_l30YoxE7eKxE-x26_iHfIzxfJTBB8AZZw" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CIgLEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CIYLEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CIcLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CIcLEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CIYLEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CIULEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CIULEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CIQLEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2wzMFlveEU3ZUt4RS14MjZfaUhmSXp4ZkpUQkI4QVpadw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CIQLEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CIMLEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_v7yxiLI99I3", - "params": "ggMrGilPTEFLNXV5X2wzMFlveEU3ZUt4RS14MjZfaUhmSXp4ZkpUQkI4QVpadw%3D%3D" - }, - "clickTrackingParams": "CIELEKCzAhgNIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2022" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause 2step" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play 2step" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CIILEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_l30YoxE7eKxE-x26_iHfIzxfJTBB8AZZw" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CIILEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/AhL0JM2we0fskaqebQASJkZTuVKLGYrVugS_iEivbKKBu7_l4762XduFkK-jxOsAsz7B75BWx-4WKoqK=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/AhL0JM2we0fskaqebQASJkZTuVKLGYrVugS_iEivbKKBu7_l4762XduFkK-jxOsAsz7B75BWx-4WKoqK=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CJALEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_v7yxiLI99I3", - "params": "ggMrGilPTEFLNXV5X2wzMFlveEU3ZUt4RS14MjZfaUhmSXp4ZkpUQkI4QVpadw%3D%3D" - }, - "clickTrackingParams": "CIELEKCzAhgNIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "2step (feat. Quevedo)" - } - ] - }, - "trackingParams": "CIELEKCzAhgNIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CP8KEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_nfUyv3SB84i2NeshdJi-W37rPtOJnQ7qk" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CP8KEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CP4KEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_nfUyv3SB84i2NeshdJi-W37rPtOJnQ7qk" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CP4KEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CPwKEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CP0KEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CPwKEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_nfUyv3SB84i2NeshdJi-W37rPtOJnQ7qk" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CPwKEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CPoKEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CPsKEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CPoKEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_nfUyv3SB84i2NeshdJi-W37rPtOJnQ7qk" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CPoKEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CPgKEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CPkKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CPkKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CPgKEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_nfUyv3SB84i2NeshdJi-W37rPtOJnQ7qk" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CPgKEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CPYKEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CPcKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CPcKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CPYKEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CPUKEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CPUKEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CPQKEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X25mVXl2M1NCODRpMk5lc2hkSmktVzM3clB0T0puUTdxaw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CPQKEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CPMKEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_LpecWMcDlit", - "params": "ggMrGilPTEFLNXV5X25mVXl2M1NCODRpMk5lc2hkSmktVzM3clB0T0puUTdxaw%3D%3D" - }, - "clickTrackingParams": "CPEKEKCzAhgOIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2022" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause 2step" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play 2step" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CPIKEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_nfUyv3SB84i2NeshdJi-W37rPtOJnQ7qk" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CPIKEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/ZjfQWy3ziZ5RD0cUvgdmKVAjE1Uyl4bUuOdOz-BJiVp65-GmaNaGPKuHt_v5Frwd4zz9AWRZekN7IL6s=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/ZjfQWy3ziZ5RD0cUvgdmKVAjE1Uyl4bUuOdOz-BJiVp65-GmaNaGPKuHt_v5Frwd4zz9AWRZekN7IL6s=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CIALEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_LpecWMcDlit", - "params": "ggMrGilPTEFLNXV5X25mVXl2M1NCODRpMk5lc2hkSmktVzM3clB0T0puUTdxaw%3D%3D" - }, - "clickTrackingParams": "CPEKEKCzAhgOIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "2step (feat. Armaan Malik)" - } - ] - }, - "trackingParams": "CPEKEKCzAhgOIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CO8KEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_kRQMNoLWSPl-iLnL7vh_ypBGScV89qZp4" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CO8KEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CO4KEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_kRQMNoLWSPl-iLnL7vh_ypBGScV89qZp4" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CO4KEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "COwKEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CO0KEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "COwKEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_kRQMNoLWSPl-iLnL7vh_ypBGScV89qZp4" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "COwKEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "COoKEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "COsKEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "COoKEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_kRQMNoLWSPl-iLnL7vh_ypBGScV89qZp4" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "COoKEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "COgKEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "COkKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "COkKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "COgKEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_kRQMNoLWSPl-iLnL7vh_ypBGScV89qZp4" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "COgKEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "COYKEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "COcKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "COcKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "COYKEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "COUKEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "COUKEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "COQKEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2tSUU1Ob0xXU1BsLWlMbkw3dmhfeXBCR1NjVjg5cVpwNA%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "COQKEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "COMKEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_8WKj0kvQXSK", - "params": "ggMrGilPTEFLNXV5X2tSUU1Ob0xXU1BsLWlMbkw3dmhfeXBCR1NjVjg5cVpwNA%3D%3D" - }, - "clickTrackingParams": "COEKEKCzAhgPIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2022" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause 2step" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play 2step" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "COIKEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_kRQMNoLWSPl-iLnL7vh_ypBGScV89qZp4" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "COIKEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/Tj5VydcslCHaMyFo3wWsGVzyU5oOugihuyjxCz0nfpdqCZJIDzoeEbjwv_yVKxIGvS_5YvU4nsX_h0oD=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/Tj5VydcslCHaMyFo3wWsGVzyU5oOugihuyjxCz0nfpdqCZJIDzoeEbjwv_yVKxIGvS_5YvU4nsX_h0oD=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CPAKEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_8WKj0kvQXSK", - "params": "ggMrGilPTEFLNXV5X2tSUU1Ob0xXU1BsLWlMbkw3dmhfeXBCR1NjVjg5cVpwNA%3D%3D" - }, - "clickTrackingParams": "COEKEKCzAhgPIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "2step (feat. Potter Payper)" - } - ] - }, - "trackingParams": "COEKEKCzAhgPIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CN8KEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_na9UXUNH2TpmtEcT7gdMC_yLEM7V9hb64" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CN8KEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CN4KEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_na9UXUNH2TpmtEcT7gdMC_yLEM7V9hb64" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CN4KEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CNwKEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CN0KEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CNwKEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_na9UXUNH2TpmtEcT7gdMC_yLEM7V9hb64" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CNwKEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CNoKEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CNsKEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CNoKEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_na9UXUNH2TpmtEcT7gdMC_yLEM7V9hb64" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CNoKEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CNgKEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CNkKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CNkKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CNgKEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_na9UXUNH2TpmtEcT7gdMC_yLEM7V9hb64" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CNgKEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CNYKEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CNcKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CNcKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CNYKEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CNUKEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CNUKEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CNQKEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X25hOVVYVU5IMlRwbXRFY1Q3Z2RNQ195TEVNN1Y5aGI2NA%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CNQKEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CNMKEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_B5n0O2JQpS5", - "params": "ggMrGilPTEFLNXV5X25hOVVYVU5IMlRwbXRFY1Q3Z2RNQ195TEVNN1Y5aGI2NA%3D%3D" - }, - "clickTrackingParams": "CNEKEKCzAhgQIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2022" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause 2step" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play 2step" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CNIKEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_na9UXUNH2TpmtEcT7gdMC_yLEM7V9hb64" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CNIKEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/1R_dmJgXqDzmwIU66xVeiRkkUR1tDyxZcmCQteT4HCIRHsSWCWjxPZ5ukRbJytYHX4EVuDJJL5xGqEnz=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/1R_dmJgXqDzmwIU66xVeiRkkUR1tDyxZcmCQteT4HCIRHsSWCWjxPZ5ukRbJytYHX4EVuDJJL5xGqEnz=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "COAKEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_B5n0O2JQpS5", - "params": "ggMrGilPTEFLNXV5X25hOVVYVU5IMlRwbXRFY1Q3Z2RNQ195TEVNN1Y5aGI2NA%3D%3D" - }, - "clickTrackingParams": "CNEKEKCzAhgQIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "2step (feat. reezy)" - } - ] - }, - "trackingParams": "CNEKEKCzAhgQIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CM8KEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_nORVGjuRies2xLypnBdCI3qAwvOwGFB7c" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CM8KEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CM4KEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_nORVGjuRies2xLypnBdCI3qAwvOwGFB7c" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CM4KEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CMwKEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CM0KEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CMwKEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_nORVGjuRies2xLypnBdCI3qAwvOwGFB7c" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CMwKEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CMoKEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CMsKEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CMoKEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_nORVGjuRies2xLypnBdCI3qAwvOwGFB7c" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CMoKEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CMgKEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CMkKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CMkKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CMgKEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_nORVGjuRies2xLypnBdCI3qAwvOwGFB7c" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CMgKEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CMYKEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CMcKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CMcKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CMYKEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CMUKEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CMUKEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CMQKEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X25PUlZHanVSaWVzMnhMeXBuQmRDSTNxQXd2T3dHRkI3Yw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CMQKEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CMMKEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_6nTNDLBwPtP", - "params": "ggMrGilPTEFLNXV5X25PUlZHanVSaWVzMnhMeXBuQmRDSTNxQXd2T3dHRkI3Yw%3D%3D" - }, - "clickTrackingParams": "CMEKEKCzAhgRIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2022" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause 2step" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play 2step" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CMIKEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_nORVGjuRies2xLypnBdCI3qAwvOwGFB7c" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CMIKEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/yzBqn1TqiRBtjerUQKdsHFt0AbZ7zzaYGXGqrV0bXkCGaRBhGP7RP54AgyWmVwsu_JvEaVZmqRY2haA=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/yzBqn1TqiRBtjerUQKdsHFt0AbZ7zzaYGXGqrV0bXkCGaRBhGP7RP54AgyWmVwsu_JvEaVZmqRY2haA=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CNAKEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_6nTNDLBwPtP", - "params": "ggMrGilPTEFLNXV5X25PUlZHanVSaWVzMnhMeXBuQmRDSTNxQXd2T3dHRkI3Yw%3D%3D" - }, - "clickTrackingParams": "CMEKEKCzAhgRIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "2step (feat. Chefin)" - } - ] - }, - "trackingParams": "CMEKEKCzAhgRIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CL8KEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_mWVHRg7QtfNSy4Wcl94d7UL4f8cbFTxoE" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CL8KEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CL4KEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_mWVHRg7QtfNSy4Wcl94d7UL4f8cbFTxoE" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CL4KEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CLwKEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CL0KEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CLwKEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_mWVHRg7QtfNSy4Wcl94d7UL4f8cbFTxoE" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CLwKEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CLoKEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CLsKEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CLoKEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_mWVHRg7QtfNSy4Wcl94d7UL4f8cbFTxoE" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CLoKEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CLgKEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CLkKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CLkKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CLgKEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_mWVHRg7QtfNSy4Wcl94d7UL4f8cbFTxoE" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CLgKEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CLYKEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CLcKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CLcKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CLYKEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CLUKEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CLUKEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CLQKEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X21XVkhSZzdRdGZOU3k0V2NsOTRkN1VMNGY4Y2JGVHhvRQ%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CLQKEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CLMKEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_pxd9OposcTM", - "params": "ggMrGilPTEFLNXV5X21XVkhSZzdRdGZOU3k0V2NsOTRkN1VMNGY4Y2JGVHhvRQ%3D%3D" - }, - "clickTrackingParams": "CLEKEKCzAhgSIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2022" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause 2step" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play 2step" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CLIKEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_mWVHRg7QtfNSy4Wcl94d7UL4f8cbFTxoE" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CLIKEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/iFEqkvhJEQ-4Xfry6EgGsEk52SraWAO4SMRpvOfuiSFPDJ3JgvtUYZoyEPODRickTCwAhPVcR5ehK1gr=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/iFEqkvhJEQ-4Xfry6EgGsEk52SraWAO4SMRpvOfuiSFPDJ3JgvtUYZoyEPODRickTCwAhPVcR5ehK1gr=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CMAKEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_pxd9OposcTM", - "params": "ggMrGilPTEFLNXV5X21XVkhSZzdRdGZOU3k0V2NsOTRkN1VMNGY4Y2JGVHhvRQ%3D%3D" - }, - "clickTrackingParams": "CLEKEKCzAhgSIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "2step (feat. Leto)" - } - ] - }, - "trackingParams": "CLEKEKCzAhgSIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CK8KEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_m6cTSM6oj2Xvsx5OI4Jo8nq0wH-i1xGUM" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CK8KEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CK4KEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_m6cTSM6oj2Xvsx5OI4Jo8nq0wH-i1xGUM" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CK4KEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CKwKEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CK0KEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CKwKEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_m6cTSM6oj2Xvsx5OI4Jo8nq0wH-i1xGUM" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CKwKEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CKoKEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CKsKEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CKoKEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_m6cTSM6oj2Xvsx5OI4Jo8nq0wH-i1xGUM" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CKoKEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CKgKEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CKkKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CKkKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CKgKEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_m6cTSM6oj2Xvsx5OI4Jo8nq0wH-i1xGUM" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CKgKEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CKYKEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CKcKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CKcKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CKYKEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CKUKEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CKUKEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CKQKEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X202Y1RTTTZvajJYdnN4NU9JNEpvOG5xMHdILWkxeEdVTQ%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CKQKEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CKMKEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_JE3cETpOAVy", - "params": "ggMrGilPTEFLNXV5X202Y1RTTTZvajJYdnN4NU9JNEpvOG5xMHdILWkxeEdVTQ%3D%3D" - }, - "clickTrackingParams": "CKEKEKCzAhgTIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2022" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause 2step" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play 2step" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CKIKEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_m6cTSM6oj2Xvsx5OI4Jo8nq0wH-i1xGUM" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CKIKEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/sCNgxSLrK202C3_GvJsfTLd0Y4shp2X9lTKCVzqItPc-ZM9WocCKblbiHiId_mJqe6IqkYEluRcI_i8r=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/sCNgxSLrK202C3_GvJsfTLd0Y4shp2X9lTKCVzqItPc-ZM9WocCKblbiHiId_mJqe6IqkYEluRcI_i8r=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CLAKEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_JE3cETpOAVy", - "params": "ggMrGilPTEFLNXV5X202Y1RTTTZvajJYdnN4NU9JNEpvOG5xMHdILWkxeEdVTQ%3D%3D" - }, - "clickTrackingParams": "CKEKEKCzAhgTIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "2step (feat. Budjerah)" - } - ] - }, - "trackingParams": "CKEKEKCzAhgTIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CJ8KEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_nfV--5OGqGrZaRwDsqgp72LxXkDqe8l4Y" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CJ8KEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CJ4KEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_nfV--5OGqGrZaRwDsqgp72LxXkDqe8l4Y" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CJ4KEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CJwKEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CJ0KEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CJwKEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_nfV--5OGqGrZaRwDsqgp72LxXkDqe8l4Y" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CJwKEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CJoKEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CJsKEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CJoKEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_nfV--5OGqGrZaRwDsqgp72LxXkDqe8l4Y" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CJoKEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CJgKEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CJkKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CJkKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CJgKEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_nfV--5OGqGrZaRwDsqgp72LxXkDqe8l4Y" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CJgKEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CJYKEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CJcKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CJcKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CJYKEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CJUKEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CJUKEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CJQKEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X25mVi0tNU9HcUdyWmFSd0RzcWdwNzJMeFhrRHFlOGw0WQ%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CJQKEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CJMKEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_2L0FAb2KAJW", - "params": "ggMrGilPTEFLNXV5X25mVi0tNU9HcUdyWmFSd0RzcWdwNzJMeFhrRHFlOGw0WQ%3D%3D" - }, - "clickTrackingParams": "CJAKEKCzAhgUIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2022" - } - ] - }, - "subtitleBadges": [ - { - "musicInlineBadgeRenderer": { - "accessibilityData": { - "accessibilityData": { - "label": "Explicit" - } - }, - "icon": { - "iconType": "MUSIC_EXPLICIT_BADGE" - }, - "trackingParams": "CJEKEKHtAhgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause 2step" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play 2step" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CJIKEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_nfV--5OGqGrZaRwDsqgp72LxXkDqe8l4Y" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CJIKEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/QAnfboTmxfnZTOd6kVs-FY3FbS5_Gu0-R0zxi4AI3_BZfeJ0pHqVVWN1VV-CeO-gYRsjpQGKTGaTgjT1=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/QAnfboTmxfnZTOd6kVs-FY3FbS5_Gu0-R0zxi4AI3_BZfeJ0pHqVVWN1VV-CeO-gYRsjpQGKTGaTgjT1=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CKAKEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_2L0FAb2KAJW", - "params": "ggMrGilPTEFLNXV5X25mVi0tNU9HcUdyWmFSd0RzcWdwNzJMeFhrRHFlOGw0WQ%3D%3D" - }, - "clickTrackingParams": "CJAKEKCzAhgUIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "2step (feat. 1.Cuz)" - } - ] - }, - "trackingParams": "CJAKEKCzAhgUIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CI4KEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_nzauYAMSMksUa_mu5Axv2ulJBthLpNeQE" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CI4KEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CI0KEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_nzauYAMSMksUa_mu5Axv2ulJBthLpNeQE" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CI0KEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CIsKEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CIwKEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CIsKEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_nzauYAMSMksUa_mu5Axv2ulJBthLpNeQE" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CIsKEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CIkKEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CIoKEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CIkKEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_nzauYAMSMksUa_mu5Axv2ulJBthLpNeQE" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CIkKEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CIcKEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CIgKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CIgKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CIcKEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_nzauYAMSMksUa_mu5Axv2ulJBthLpNeQE" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CIcKEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CIUKEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CIYKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CIYKEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CIUKEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CIQKEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CIQKEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CIMKEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X256YXVZQU1TTWtzVWFfbXU1QXh2MnVsSkJ0aExwTmVRRQ%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CIMKEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CIIKEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_SnTnYpGnfIh", - "params": "ggMrGilPTEFLNXV5X256YXVZQU1TTWtzVWFfbXU1QXh2MnVsSkJ0aExwTmVRRQ%3D%3D" - }, - "clickTrackingParams": "CIAKEKCzAhgVIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2022" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause 2step" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play 2step" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CIEKEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_nzauYAMSMksUa_mu5Axv2ulJBthLpNeQE" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CIEKEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/TMsEjiGlEAp_C-x7AFIgtd4lUq3oIvU34V5XlE8gNAlzD7B-NDnfWkGmWj4mwrxHQ0r9Q3RjN-I4V0U=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/TMsEjiGlEAp_C-x7AFIgtd4lUq3oIvU34V5XlE8gNAlzD7B-NDnfWkGmWj4mwrxHQ0r9Q3RjN-I4V0U=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CI8KEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_SnTnYpGnfIh", - "params": "ggMrGilPTEFLNXV5X256YXVZQU1TTWtzVWFfbXU1QXh2MnVsSkJ0aExwTmVRRQ%3D%3D" - }, - "clickTrackingParams": "CIAKEKCzAhgVIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "2step (feat. Ultimo)" - } - ] - }, - "trackingParams": "CIAKEKCzAhgVIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CP4JEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_lE4NbsUTxOp-ErC5U6XYBc6GCtnxW-_hc" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CP4JEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CP0JEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_lE4NbsUTxOp-ErC5U6XYBc6GCtnxW-_hc" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CP0JEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CPsJEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CPwJEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CPsJEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_lE4NbsUTxOp-ErC5U6XYBc6GCtnxW-_hc" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CPsJEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CPkJEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CPoJEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CPkJEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_lE4NbsUTxOp-ErC5U6XYBc6GCtnxW-_hc" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CPkJEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CPcJEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CPgJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CPgJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CPcJEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_lE4NbsUTxOp-ErC5U6XYBc6GCtnxW-_hc" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CPcJEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CPUJEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CPYJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CPYJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CPUJEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CPQJEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CPQJEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CPMJEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2xFNE5ic1VUeE9wLUVyQzVVNlhZQmM2R0N0bnhXLV9oYw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CPMJEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CPIJEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_3FUHECndc2a", - "params": "ggMrGilPTEFLNXV5X2xFNE5ic1VUeE9wLUVyQzVVNlhZQmM2R0N0bnhXLV9oYw%3D%3D" - }, - "clickTrackingParams": "CPAJEKCzAhgWIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2022" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause 2step" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play 2step" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CPEJEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_lE4NbsUTxOp-ErC5U6XYBc6GCtnxW-_hc" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CPEJEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/A7vn1lRCITZikPIh5Zk3YCbNycTJ3LKXSXtDhNKwC4ggUSbjj2xdWz1R_nw8uNYlGLC5PMBvnYGGg9U=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/A7vn1lRCITZikPIh5Zk3YCbNycTJ3LKXSXtDhNKwC4ggUSbjj2xdWz1R_nw8uNYlGLC5PMBvnYGGg9U=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CP8JEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_3FUHECndc2a", - "params": "ggMrGilPTEFLNXV5X2xFNE5ic1VUeE9wLUVyQzVVNlhZQmM2R0N0bnhXLV9oYw%3D%3D" - }, - "clickTrackingParams": "CPAJEKCzAhgWIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "2step (feat. Ellinoora)" - } - ] - }, - "trackingParams": "CPAJEKCzAhgWIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CO4JEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_luzTYGdeog0zgnn7Ahp1lL0b7BNtJQ2WM" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CO4JEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CO0JEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_luzTYGdeog0zgnn7Ahp1lL0b7BNtJQ2WM" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CO0JEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "COsJEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "COwJEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "COsJEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_luzTYGdeog0zgnn7Ahp1lL0b7BNtJQ2WM" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "COsJEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "COkJEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "COoJEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "COkJEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_luzTYGdeog0zgnn7Ahp1lL0b7BNtJQ2WM" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "COkJEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "COcJEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "COgJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "COgJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "COcJEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_luzTYGdeog0zgnn7Ahp1lL0b7BNtJQ2WM" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "COcJEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "COUJEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "COYJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "COYJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "COUJEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "COQJEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "COQJEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "COMJEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2x1elRZR2Rlb2cwemdubjdBaHAxbEwwYjdCTnRKUTJXTQ%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "COMJEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "COIJEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_vAwX0OZKnX7", - "params": "ggMrGilPTEFLNXV5X2x1elRZR2Rlb2cwemdubjdBaHAxbEwwYjdCTnRKUTJXTQ%3D%3D" - }, - "clickTrackingParams": "COAJEKCzAhgXIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2022" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause 2step" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play 2step" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "COEJEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_luzTYGdeog0zgnn7Ahp1lL0b7BNtJQ2WM" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "COEJEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/MbgnltzC1SLK_QN4Vvsxek_ZQrHNu-Vpztca6zv6s_u5kQRLIvZfo4BdiJXMYwByfr7zsb5pY_iFJ7R9=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/MbgnltzC1SLK_QN4Vvsxek_ZQrHNu-Vpztca6zv6s_u5kQRLIvZfo4BdiJXMYwByfr7zsb5pY_iFJ7R9=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CO8JEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_vAwX0OZKnX7", - "params": "ggMrGilPTEFLNXV5X2x1elRZR2Rlb2cwemdubjdBaHAxbEwwYjdCTnRKUTJXTQ%3D%3D" - }, - "clickTrackingParams": "COAJEKCzAhgXIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "2step (feat. Antytila)" - } - ] - }, - "trackingParams": "COAJEKCzAhgXIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CN4JEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_lHNJZJMBdGb1HBJLk8GgBHk5DC0ez3178" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CN4JEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CN0JEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_lHNJZJMBdGb1HBJLk8GgBHk5DC0ez3178" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CN0JEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CNsJEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CNwJEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CNsJEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_lHNJZJMBdGb1HBJLk8GgBHk5DC0ez3178" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CNsJEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CNkJEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CNoJEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CNkJEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_lHNJZJMBdGb1HBJLk8GgBHk5DC0ez3178" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CNkJEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CNcJEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CNgJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CNgJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CNcJEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_lHNJZJMBdGb1HBJLk8GgBHk5DC0ez3178" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CNcJEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CNUJEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CNYJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CNYJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CNUJEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CNQJEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CNQJEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CNMJEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2xITkpaSk1CZEdiMUhCSkxrOEdnQkhrNURDMGV6MzE3OA%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CNMJEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CNIJEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_ioGm3BL3ySK", - "params": "ggMrGilPTEFLNXV5X2xITkpaSk1CZEdiMUhCSkxrOEdnQkhrNURDMGV6MzE3OA%3D%3D" - }, - "clickTrackingParams": "CNAJEKCzAhgYIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2022" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause 2step" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play 2step" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CNEJEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_lHNJZJMBdGb1HBJLk8GgBHk5DC0ez3178" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CNEJEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/6LnHhPxiVTyaBFYW8LFT5-dQT_njrrp-pdRMwpRVawyZ6bZdxNSRJFIaD79GlOZR73ycHIxC6t6YYfe2vg=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/6LnHhPxiVTyaBFYW8LFT5-dQT_njrrp-pdRMwpRVawyZ6bZdxNSRJFIaD79GlOZR73ycHIxC6t6YYfe2vg=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CN8JEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_ioGm3BL3ySK", - "params": "ggMrGilPTEFLNXV5X2xITkpaSk1CZEdiMUhCSkxrOEdnQkhrNURDMGV6MzE3OA%3D%3D" - }, - "clickTrackingParams": "CNAJEKCzAhgYIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "2step (feat. Lil Baby)" - } - ] - }, - "trackingParams": "CNAJEKCzAhgYIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CM4JEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_kpuuUpxiEBtg6MgTry-gkYbiIO_DFmnfk" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CM4JEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CM0JEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_kpuuUpxiEBtg6MgTry-gkYbiIO_DFmnfk" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CM0JEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CMsJEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CMwJEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CMsJEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_kpuuUpxiEBtg6MgTry-gkYbiIO_DFmnfk" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CMsJEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CMkJEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CMoJEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CMkJEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_kpuuUpxiEBtg6MgTry-gkYbiIO_DFmnfk" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CMkJEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CMcJEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CMgJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CMgJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CMcJEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_kpuuUpxiEBtg6MgTry-gkYbiIO_DFmnfk" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CMcJEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CMUJEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CMYJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CMYJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CMUJEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UCWw-Guyr5ul9B-d5kJlHMng" - }, - "clickTrackingParams": "CMQJEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CMQJEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CMMJEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2twdXVVcHhpRUJ0ZzZNZ1RyeS1na1liaUlPX0RGbW5maw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CMMJEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CMIJEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_v3DEYsmUQiP", - "params": "ggMrGilPTEFLNXV5X2twdXVVcHhpRUJ0ZzZNZ1RyeS1na1liaUlPX0RGbW5maw%3D%3D" - }, - "clickTrackingParams": "CL8JEKCzAhgZIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2022" - } - ] - }, - "subtitleBadges": [ - { - "musicInlineBadgeRenderer": { - "accessibilityData": { - "accessibilityData": { - "label": "Explicit" - } - }, - "icon": { - "iconType": "MUSIC_EXPLICIT_BADGE" - }, - "trackingParams": "CMAJEKHtAhgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Sigue/Forever My Love" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Sigue/Forever My Love" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CMEJEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_kpuuUpxiEBtg6MgTry-gkYbiIO_DFmnfk" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CMEJEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/hGPwV5FzDhPFRrdcI6dOyxbPdEaAsLovb5SrHbSjWDhF7U7cYJABPLAi3nqYpYFYlSZdR1lWk-cngFJW=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/hGPwV5FzDhPFRrdcI6dOyxbPdEaAsLovb5SrHbSjWDhF7U7cYJABPLAi3nqYpYFYlSZdR1lWk-cngFJW=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CM8JEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_v3DEYsmUQiP", - "params": "ggMrGilPTEFLNXV5X2twdXVVcHhpRUJ0ZzZNZ1RyeS1na1liaUlPX0RGbW5maw%3D%3D" - }, - "clickTrackingParams": "CL8JEKCzAhgZIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Sigue/Forever My Love" - } - ] - }, - "trackingParams": "CL8JEKCzAhgZIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CL0JEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_kC5H2pfmM8GyH5ZO0iLnPNgPrfaNnuClg" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CL0JEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CLwJEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_kC5H2pfmM8GyH5ZO0iLnPNgPrfaNnuClg" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CLwJEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CLoJEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CLsJEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CLoJEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_kC5H2pfmM8GyH5ZO0iLnPNgPrfaNnuClg" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CLoJEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CLgJEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CLkJEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CLgJEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_kC5H2pfmM8GyH5ZO0iLnPNgPrfaNnuClg" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CLgJEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CLYJEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CLcJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CLcJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CLYJEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_kC5H2pfmM8GyH5ZO0iLnPNgPrfaNnuClg" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CLYJEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CLQJEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CLUJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CLUJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CLQJEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CLMJEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CLMJEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CLIJEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2tDNUgycGZtTThHeUg1Wk8waUxuUE5nUHJmYU5udUNsZw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CLIJEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CLEJEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_HJ6D0OWrWu8", - "params": "ggMrGilPTEFLNXV5X2tDNUgycGZtTThHeUg1Wk8waUxuUE5nUHJmYU5udUNsZw%3D%3D" - }, - "clickTrackingParams": "CK8JEKCzAhgaIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2022" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause The Joker And The Queen" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play The Joker And The Queen" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CLAJEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_kC5H2pfmM8GyH5ZO0iLnPNgPrfaNnuClg" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CLAJEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/pLEDJWMWef2qcrk4eTYw3TdGOHv-6FwVHKsOalcOjVjv9-6udgaQRuIrAtyVwKEUDU_atkZ3haVpP35y=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/pLEDJWMWef2qcrk4eTYw3TdGOHv-6FwVHKsOalcOjVjv9-6udgaQRuIrAtyVwKEUDU_atkZ3haVpP35y=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CL4JEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_HJ6D0OWrWu8", - "params": "ggMrGilPTEFLNXV5X2tDNUgycGZtTThHeUg1Wk8waUxuUE5nUHJmYU5udUNsZw%3D%3D" - }, - "clickTrackingParams": "CK8JEKCzAhgaIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "The Joker And The Queen (feat. Taylor Swift)" - } - ] - }, - "trackingParams": "CK8JEKCzAhgaIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CK0JEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_mj6G38GAEs_UCdGlSf17VKKkDqsWliECc" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CK0JEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CKwJEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_mj6G38GAEs_UCdGlSf17VKKkDqsWliECc" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CKwJEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CKoJEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CKsJEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CKoJEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_mj6G38GAEs_UCdGlSf17VKKkDqsWliECc" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CKoJEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CKgJEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CKkJEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CKgJEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_mj6G38GAEs_UCdGlSf17VKKkDqsWliECc" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CKgJEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CKYJEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CKcJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CKcJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CKYJEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_mj6G38GAEs_UCdGlSf17VKKkDqsWliECc" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CKYJEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CKQJEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CKUJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CKUJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CKQJEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CKMJEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CKMJEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CKIJEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X21qNkczOEdBRXNfVUNkR2xTZjE3VktLa0Rxc1dsaUVDYw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CKIJEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CKEJEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_EgeBXGLpMGc", - "params": "ggMrGilPTEFLNXV5X21qNkczOEdBRXNfVUNkR2xTZjE3VktLa0Rxc1dsaUVDYw%3D%3D" - }, - "clickTrackingParams": "CJ8JEKCzAhgbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2022" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Bad Habits" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Bad Habits" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CKAJEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_mj6G38GAEs_UCdGlSf17VKKkDqsWliECc" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CKAJEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/5BIb8pR1gnYL6Uce1dIXf_qfbhaflt8b6jqtglcDBTMGAMHNRXRXmetct588qPO8_ES7PKyQ4Ooaf6e5=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/5BIb8pR1gnYL6Uce1dIXf_qfbhaflt8b6jqtglcDBTMGAMHNRXRXmetct588qPO8_ES7PKyQ4Ooaf6e5=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CK4JEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_EgeBXGLpMGc", - "params": "ggMrGilPTEFLNXV5X21qNkczOEdBRXNfVUNkR2xTZjE3VktLa0Rxc1dsaUVDYw%3D%3D" - }, - "clickTrackingParams": "CJ8JEKCzAhgbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Bad Habits (feat. Bring Me The Horizon)" - } - ] - }, - "trackingParams": "CJ8JEKCzAhgbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CJ0JEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_lIuGGOTXIZn7T8b89bOaG5V4esHMsPvF8" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CJ0JEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CJwJEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_lIuGGOTXIZn7T8b89bOaG5V4esHMsPvF8" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CJwJEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CJoJEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CJsJEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CJoJEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_lIuGGOTXIZn7T8b89bOaG5V4esHMsPvF8" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CJoJEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CJgJEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CJkJEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CJgJEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_lIuGGOTXIZn7T8b89bOaG5V4esHMsPvF8" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CJgJEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CJYJEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CJcJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CJcJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CJYJEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_lIuGGOTXIZn7T8b89bOaG5V4esHMsPvF8" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CJYJEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CJQJEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CJUJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CJUJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CJQJEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UCt7KNkaOhBpesOJHMx2ASnw" - }, - "clickTrackingParams": "CJMJEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CJMJEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CJIJEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2xJdUdHT1RYSVpuN1Q4Yjg5Yk9hRzVWNGVzSE1zUHZGOA%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CJIJEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CJEJEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_bHPFexPbcaQ", - "params": "ggMrGilPTEFLNXV5X2xJdUdHT1RYSVpuN1Q4Yjg5Yk9hRzVWNGVzSE1zUHZGOA%3D%3D" - }, - "clickTrackingParams": "CI8JEKCzAhgcIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2022" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Peru (Acoustic)" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Peru (Acoustic)" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CJAJEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_lIuGGOTXIZn7T8b89bOaG5V4esHMsPvF8" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CJAJEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/Cqe7HnB88KnbT8MFIDlpJUYexZDlh0ypHbLe1fklDOegYayTk5mabh88k40bJaY2D3X1wR51_6UMwdMKlA=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/Cqe7HnB88KnbT8MFIDlpJUYexZDlh0ypHbLe1fklDOegYayTk5mabh88k40bJaY2D3X1wR51_6UMwdMKlA=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CJ4JEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_bHPFexPbcaQ", - "params": "ggMrGilPTEFLNXV5X2xJdUdHT1RYSVpuN1Q4Yjg5Yk9hRzVWNGVzSE1zUHZGOA%3D%3D" - }, - "clickTrackingParams": "CI8JEKCzAhgcIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Peru (Acoustic)" - } - ] - }, - "trackingParams": "CI8JEKCzAhgcIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CI0JEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_lSThrDcruQ76yOHkGqcVlv2NexyF6Tx4U" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CI0JEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CIwJEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_lSThrDcruQ76yOHkGqcVlv2NexyF6Tx4U" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CIwJEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CIoJEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CIsJEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CIoJEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_lSThrDcruQ76yOHkGqcVlv2NexyF6Tx4U" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CIoJEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CIgJEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CIkJEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CIgJEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_lSThrDcruQ76yOHkGqcVlv2NexyF6Tx4U" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CIgJEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CIYJEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CIcJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CIcJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CIYJEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_lSThrDcruQ76yOHkGqcVlv2NexyF6Tx4U" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CIYJEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CIQJEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CIUJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CIUJEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CIQJEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UCt7KNkaOhBpesOJHMx2ASnw" - }, - "clickTrackingParams": "CIMJEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CIMJEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CIIJEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2xTVGhyRGNydVE3NnlPSGtHcWNWbHYyTmV4eUY2VHg0VQ%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CIIJEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CIEJEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_s08HjFDAlxz", - "params": "ggMrGilPTEFLNXV5X2xTVGhyRGNydVE3NnlPSGtHcWNWbHYyTmV4eUY2VHg0VQ%3D%3D" - }, - "clickTrackingParams": "CP4IEKCzAhgdIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2021" - } - ] - }, - "subtitleBadges": [ - { - "musicInlineBadgeRenderer": { - "accessibilityData": { - "accessibilityData": { - "label": "Explicit" - } - }, - "icon": { - "iconType": "MUSIC_EXPLICIT_BADGE" - }, - "trackingParams": "CP8IEKHtAhgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Peru" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Peru" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CIAJEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_lSThrDcruQ76yOHkGqcVlv2NexyF6Tx4U" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CIAJEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/elyB4oW8k2pIsK9-U0bLk2P2ityDphxSrhU6O_oIA0Wo8eXWKn_nMt4rni_mVHuaD5XhZh2rN4MzWvY=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/elyB4oW8k2pIsK9-U0bLk2P2ityDphxSrhU6O_oIA0Wo8eXWKn_nMt4rni_mVHuaD5XhZh2rN4MzWvY=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CI4JEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_s08HjFDAlxz", - "params": "ggMrGilPTEFLNXV5X2xTVGhyRGNydVE3NnlPSGtHcWNWbHYyTmV4eUY2VHg0VQ%3D%3D" - }, - "clickTrackingParams": "CP4IEKCzAhgdIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Peru" - } - ] - }, - "trackingParams": "CP4IEKCzAhgdIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CPwIEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_n5x1UfCXdmo_0_oLGsBu1R2S7L3TxOEFg" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CPwIEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CPsIEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_n5x1UfCXdmo_0_oLGsBu1R2S7L3TxOEFg" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CPsIEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CPkIEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CPoIEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CPkIEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_n5x1UfCXdmo_0_oLGsBu1R2S7L3TxOEFg" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CPkIEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CPcIEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CPgIEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CPcIEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_n5x1UfCXdmo_0_oLGsBu1R2S7L3TxOEFg" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CPcIEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CPUIEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CPYIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CPYIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CPUIEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_n5x1UfCXdmo_0_oLGsBu1R2S7L3TxOEFg" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CPUIEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CPMIEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CPQIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CPQIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CPMIEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CPIIEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CPIIEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CPEIEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X241eDFVZkNYZG1vXzBfb0xHc0J1MVIyUzdMM1R4T0VGZw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CPEIEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CPAIEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_iqH9DbCR9jY", - "params": "ggMrGilPTEFLNXV5X241eDFVZkNYZG1vXzBfb0xHc0J1MVIyUzdMM1R4T0VGZw%3D%3D" - }, - "clickTrackingParams": "CO4IEKCzAhgeIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2021" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Merry Christmas" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Merry Christmas" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CO8IEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_n5x1UfCXdmo_0_oLGsBu1R2S7L3TxOEFg" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CO8IEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/VpmQC3j7sbL3UEpF9LgYP-V-MXpnyF4gAp4VlrEOa_PlFNQLVLNGucwi4pd-hJiyDBANs8uwTZTh3sQ=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/VpmQC3j7sbL3UEpF9LgYP-V-MXpnyF4gAp4VlrEOa_PlFNQLVLNGucwi4pd-hJiyDBANs8uwTZTh3sQ=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CP0IEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_iqH9DbCR9jY", - "params": "ggMrGilPTEFLNXV5X241eDFVZkNYZG1vXzBfb0xHc0J1MVIyUzdMM1R4T0VGZw%3D%3D" - }, - "clickTrackingParams": "CO4IEKCzAhgeIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Merry Christmas" - } - ] - }, - "trackingParams": "CO4IEKCzAhgeIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "COwIEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_nGTM4p2kLiG11h_9nACjV2x0Ze-cAkwJU" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "COwIEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "COsIEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_nGTM4p2kLiG11h_9nACjV2x0Ze-cAkwJU" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "COsIEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "COkIEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "COoIEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "COkIEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_nGTM4p2kLiG11h_9nACjV2x0Ze-cAkwJU" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "COkIEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "COcIEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "COgIEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "COcIEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_nGTM4p2kLiG11h_9nACjV2x0Ze-cAkwJU" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "COcIEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "COUIEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "COYIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "COYIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "COUIEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_nGTM4p2kLiG11h_9nACjV2x0Ze-cAkwJU" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "COUIEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "COMIEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "COQIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "COQIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "COMIEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "COIIEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "COIIEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "COEIEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X25HVE00cDJrTGlHMTFoXzluQUNqVjJ4MFplLWNBa3dKVQ%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "COEIEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "COAIEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_T7fhfjYuUNz", - "params": "ggMrGilPTEFLNXV5X25HVE00cDJrTGlHMTFoXzluQUNqVjJ4MFplLWNBa3dKVQ%3D%3D" - }, - "clickTrackingParams": "CN4IEKCzAhgfIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2021" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Shivers" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Shivers" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CN8IEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_nGTM4p2kLiG11h_9nACjV2x0Ze-cAkwJU" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CN8IEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/At-f5WNNsE3sZX6zJyJiiSyma9dOFW8PGZeGleTQgTqJKDEMwHiOgxCn6U0He0yQ6aPlC0ezJkISf65X=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/At-f5WNNsE3sZX6zJyJiiSyma9dOFW8PGZeGleTQgTqJKDEMwHiOgxCn6U0He0yQ6aPlC0ezJkISf65X=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CO0IEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_T7fhfjYuUNz", - "params": "ggMrGilPTEFLNXV5X25HVE00cDJrTGlHMTFoXzluQUNqVjJ4MFplLWNBa3dKVQ%3D%3D" - }, - "clickTrackingParams": "CN4IEKCzAhgfIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Shivers (feat. FEDUK & SLAVA MARLOW)" - } - ] - }, - "trackingParams": "CN4IEKCzAhgfIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CNwIEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_nHdqIgO1TNI8wr_GPvq1X7oUSMxvFU4Jw" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CNwIEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CNsIEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_nHdqIgO1TNI8wr_GPvq1X7oUSMxvFU4Jw" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CNsIEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CNkIEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CNoIEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CNkIEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_nHdqIgO1TNI8wr_GPvq1X7oUSMxvFU4Jw" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CNkIEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CNcIEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CNgIEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CNcIEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_nHdqIgO1TNI8wr_GPvq1X7oUSMxvFU4Jw" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CNcIEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CNUIEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CNYIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CNYIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CNUIEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_nHdqIgO1TNI8wr_GPvq1X7oUSMxvFU4Jw" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CNUIEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CNMIEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CNQIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CNQIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CNMIEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CNIIEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CNIIEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CNEIEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X25IZHFJZ08xVE5JOHdyX0dQdnExWDdvVVNNeHZGVTRKdw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CNEIEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CNAIEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_k3zSCIhuy8Z", - "params": "ggMrGilPTEFLNXV5X25IZHFJZ08xVE5JOHdyX0dQdnExWDdvVVNNeHZGVTRKdw%3D%3D" - }, - "clickTrackingParams": "CM4IEKCzAhggIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Album" - }, - { - "text": " • " - }, - { - "text": "2021" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause =" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play =" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CM8IEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_nHdqIgO1TNI8wr_GPvq1X7oUSMxvFU4Jw" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CM8IEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/thG9CVPO7TNRjN46ACoToQvAcBnSUN5wdD849PHg-7zoFRpB2c6GbHOPJ8FntFQc2_NxteEeNoW6p_c=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/thG9CVPO7TNRjN46ACoToQvAcBnSUN5wdD849PHg-7zoFRpB2c6GbHOPJ8FntFQc2_NxteEeNoW6p_c=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CN0IEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_k3zSCIhuy8Z", - "params": "ggMrGilPTEFLNXV5X25IZHFJZ08xVE5JOHdyX0dQdnExWDdvVVNNeHZGVTRKdw%3D%3D" - }, - "clickTrackingParams": "CM4IEKCzAhggIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "=" - } - ] - }, - "trackingParams": "CM4IEKCzAhggIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CMwIEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_kORYaRgss_hk0gYjFnV2Z5mXkBej967AY" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CMwIEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CMsIEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_kORYaRgss_hk0gYjFnV2Z5mXkBej967AY" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CMsIEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CMkIEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CMoIEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CMkIEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_kORYaRgss_hk0gYjFnV2Z5mXkBej967AY" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CMkIEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CMcIEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CMgIEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CMcIEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_kORYaRgss_hk0gYjFnV2Z5mXkBej967AY" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CMcIEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CMUIEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CMYIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CMYIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CMUIEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_kORYaRgss_hk0gYjFnV2Z5mXkBej967AY" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CMUIEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CMMIEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CMQIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CMQIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CMMIEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CMIIEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CMIIEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CMEIEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2tPUllhUmdzc19oazBnWWpGblYyWjVtWGtCZWo5NjdBWQ%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CMEIEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CMAIEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_r4N9aqbEyO6", - "params": "ggMrGilPTEFLNXV5X2tPUllhUmdzc19oazBnWWpGblYyWjVtWGtCZWo5NjdBWQ%3D%3D" - }, - "clickTrackingParams": "CL4IEKCzAhghIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2021" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Shivers" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Shivers" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CL8IEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_kORYaRgss_hk0gYjFnV2Z5mXkBej967AY" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CL8IEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/SgWHuAj4XcBOBKzW-55QLrPSYqhUAzjZgC_B69UwG9JZ87k2mZGNngNKOR_3KW1rAUxzFl0xMSLYZNGaSg=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/SgWHuAj4XcBOBKzW-55QLrPSYqhUAzjZgC_B69UwG9JZ87k2mZGNngNKOR_3KW1rAUxzFl0xMSLYZNGaSg=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CM0IEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_r4N9aqbEyO6", - "params": "ggMrGilPTEFLNXV5X2tPUllhUmdzc19oazBnWWpGblYyWjVtWGtCZWo5NjdBWQ%3D%3D" - }, - "clickTrackingParams": "CL4IEKCzAhghIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Shivers (feat. Jessi & SUNMI)" - } - ] - }, - "trackingParams": "CL4IEKCzAhghIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CLwIEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_mrV7EPxiKmvB3m_7XP8WKYllUZBWMzs8U" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CLwIEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CLsIEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_mrV7EPxiKmvB3m_7XP8WKYllUZBWMzs8U" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CLsIEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CLkIEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CLoIEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CLkIEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_mrV7EPxiKmvB3m_7XP8WKYllUZBWMzs8U" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CLkIEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CLcIEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CLgIEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CLcIEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_mrV7EPxiKmvB3m_7XP8WKYllUZBWMzs8U" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CLcIEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CLUIEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CLYIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CLYIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CLUIEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_mrV7EPxiKmvB3m_7XP8WKYllUZBWMzs8U" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CLUIEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CLMIEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CLQIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CLQIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CLMIEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CLIIEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CLIIEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CLEIEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X21yVjdFUHhpS212QjNtXzdYUDhXS1lsbFVaQldNenM4VQ%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CLEIEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CLAIEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_FSP8P482Yww", - "params": "ggMrGilPTEFLNXV5X21yVjdFUHhpS212QjNtXzdYUDhXS1lsbFVaQldNenM4VQ%3D%3D" - }, - "clickTrackingParams": "CK4IEKCzAhgiIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2021" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Shivers (Acoustic Version)" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Shivers (Acoustic Version)" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CK8IEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_mrV7EPxiKmvB3m_7XP8WKYllUZBWMzs8U" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CK8IEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/Ca15xJfTWA--68fPSupMdTAOvY9Rd4MxFSk0bD0feSxybe5whNd4ysVsAd1x78SUwpJcrOJUDZz2QZI=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/Ca15xJfTWA--68fPSupMdTAOvY9Rd4MxFSk0bD0feSxybe5whNd4ysVsAd1x78SUwpJcrOJUDZz2QZI=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CL0IEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_FSP8P482Yww", - "params": "ggMrGilPTEFLNXV5X21yVjdFUHhpS212QjNtXzdYUDhXS1lsbFVaQldNenM4VQ%3D%3D" - }, - "clickTrackingParams": "CK4IEKCzAhgiIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Shivers (Acoustic Version)" - } - ] - }, - "trackingParams": "CK4IEKCzAhgiIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CKwIEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_l0CY3m0lYLkMYL-vdeLUkXbvZe3UDobrw" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CKwIEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CKsIEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_l0CY3m0lYLkMYL-vdeLUkXbvZe3UDobrw" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CKsIEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CKkIEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CKoIEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CKkIEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_l0CY3m0lYLkMYL-vdeLUkXbvZe3UDobrw" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CKkIEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CKcIEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CKgIEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CKcIEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_l0CY3m0lYLkMYL-vdeLUkXbvZe3UDobrw" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CKcIEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CKUIEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CKYIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CKYIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CKUIEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_l0CY3m0lYLkMYL-vdeLUkXbvZe3UDobrw" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CKUIEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CKMIEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CKQIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CKQIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CKMIEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CKIIEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CKIIEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CKEIEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2wwQ1kzbTBsWUxrTVlMLXZkZUxVa1hidlplM1VEb2Jydw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CKEIEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CKAIEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_0qzA9qC504a", - "params": "ggMrGilPTEFLNXV5X2wwQ1kzbTBsWUxrTVlMLXZkZUxVa1hidlplM1VEb2Jydw%3D%3D" - }, - "clickTrackingParams": "CJ4IEKCzAhgjIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2021" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Shivers" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Shivers" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CJ8IEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_l0CY3m0lYLkMYL-vdeLUkXbvZe3UDobrw" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CJ8IEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/LDjFD-70y9c3aYL3-2zTUXkmlWfNlryJllQpHZLxZgi0i73pGx9JaJkNzDTo2LO9cGBDJx7E4eWdytMA=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/LDjFD-70y9c3aYL3-2zTUXkmlWfNlryJllQpHZLxZgi0i73pGx9JaJkNzDTo2LO9cGBDJx7E4eWdytMA=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CK0IEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_0qzA9qC504a", - "params": "ggMrGilPTEFLNXV5X2wwQ1kzbTBsWUxrTVlMLXZkZUxVa1hidlplM1VEb2Jydw%3D%3D" - }, - "clickTrackingParams": "CJ4IEKCzAhgjIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Shivers" - } - ] - }, - "trackingParams": "CJ4IEKCzAhgjIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CJwIEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_lXTvwjkwMFYekQV14C7k7G-9FyVumvq5U" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CJwIEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CJsIEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_lXTvwjkwMFYekQV14C7k7G-9FyVumvq5U" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CJsIEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CJkIEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CJoIEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CJkIEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_lXTvwjkwMFYekQV14C7k7G-9FyVumvq5U" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CJkIEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CJcIEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CJgIEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CJcIEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_lXTvwjkwMFYekQV14C7k7G-9FyVumvq5U" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CJcIEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CJUIEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CJYIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CJYIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CJUIEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_lXTvwjkwMFYekQV14C7k7G-9FyVumvq5U" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CJUIEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CJMIEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CJQIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CJQIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CJMIEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CJIIEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CJIIEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CJEIEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2xYVHZ3amt3TUZZZWtRVjE0QzdrN0ctOUZ5VnVtdnE1VQ%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CJEIEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CJAIEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_LJQn89VQCXo", - "params": "ggMrGilPTEFLNXV5X2xYVHZ3amt3TUZZZWtRVjE0QzdrN0ctOUZ5VnVtdnE1VQ%3D%3D" - }, - "clickTrackingParams": "CI4IEKCzAhgkIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2021" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Visiting Hours" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Visiting Hours" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CI8IEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_lXTvwjkwMFYekQV14C7k7G-9FyVumvq5U" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CI8IEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/NeLeE39EJubJPPdRzYE49q3QyB-8mmfIjyWw_o0m40fOUBDqLVpMNH_jdApO9SHck9pDNMx-Vj-O53SBIg=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/NeLeE39EJubJPPdRzYE49q3QyB-8mmfIjyWw_o0m40fOUBDqLVpMNH_jdApO9SHck9pDNMx-Vj-O53SBIg=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CJ0IEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_LJQn89VQCXo", - "params": "ggMrGilPTEFLNXV5X2xYVHZ3amt3TUZZZWtRVjE0QzdrN0ctOUZ5VnVtdnE1VQ%3D%3D" - }, - "clickTrackingParams": "CI4IEKCzAhgkIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Visiting Hours" - } - ] - }, - "trackingParams": "CI4IEKCzAhgkIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CIwIEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_kFOpC9pi1zYj2KF1kWVJPQ17_clqU_tig" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CIwIEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CIsIEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_kFOpC9pi1zYj2KF1kWVJPQ17_clqU_tig" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CIsIEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CIkIEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CIoIEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CIkIEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_kFOpC9pi1zYj2KF1kWVJPQ17_clqU_tig" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CIkIEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CIcIEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CIgIEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CIcIEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_kFOpC9pi1zYj2KF1kWVJPQ17_clqU_tig" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CIcIEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CIUIEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CIYIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CIYIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CIUIEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_kFOpC9pi1zYj2KF1kWVJPQ17_clqU_tig" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CIUIEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CIMIEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CIQIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CIQIEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CIMIEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CIIIEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CIIIEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CIEIEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2tGT3BDOXBpMXpZajJLRjFrV1ZKUFExN19jbHFVX3RpZw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CIEIEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CIAIEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_L6fwH6dF0r0", - "params": "ggMrGilPTEFLNXV5X2tGT3BDOXBpMXpZajJLRjFrV1ZKUFExN19jbHFVX3RpZw%3D%3D" - }, - "clickTrackingParams": "CP4HEKCzAhglIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2021" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Bad Habits (Acoustic Version)" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Bad Habits (Acoustic Version)" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CP8HEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_kFOpC9pi1zYj2KF1kWVJPQ17_clqU_tig" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CP8HEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/C8f5HPHhFHaXtg7GbL_MXeaQ_nlWSCDyUWLPy7UfsrkoG0Ogt4d4c8TKdwHWApeTZgcV89hLvOv2i3E=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/C8f5HPHhFHaXtg7GbL_MXeaQ_nlWSCDyUWLPy7UfsrkoG0Ogt4d4c8TKdwHWApeTZgcV89hLvOv2i3E=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CI0IEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_L6fwH6dF0r0", - "params": "ggMrGilPTEFLNXV5X2tGT3BDOXBpMXpZajJLRjFrV1ZKUFExN19jbHFVX3RpZw%3D%3D" - }, - "clickTrackingParams": "CP4HEKCzAhglIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Bad Habits (Acoustic Version)" - } - ] - }, - "trackingParams": "CP4HEKCzAhglIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CPwHEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_kE6pBd_LRYyqeKGM-6nLFM6H38CIeJh2g" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CPwHEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CPsHEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_kE6pBd_LRYyqeKGM-6nLFM6H38CIeJh2g" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CPsHEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CPkHEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CPoHEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CPkHEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_kE6pBd_LRYyqeKGM-6nLFM6H38CIeJh2g" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CPkHEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CPcHEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CPgHEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CPcHEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_kE6pBd_LRYyqeKGM-6nLFM6H38CIeJh2g" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CPcHEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CPUHEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CPYHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CPYHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CPUHEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_kE6pBd_LRYyqeKGM-6nLFM6H38CIeJh2g" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CPUHEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CPMHEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CPQHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CPQHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CPMHEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CPIHEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CPIHEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CPEHEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2tFNnBCZF9MUll5cWVLR00tNm5MRk02SDM4Q0llSmgyZw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CPEHEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CPAHEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_917r4nW96j5", - "params": "ggMrGilPTEFLNXV5X2tFNnBCZF9MUll5cWVLR00tNm5MRk02SDM4Q0llSmgyZw%3D%3D" - }, - "clickTrackingParams": "CO4HEKCzAhgmIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2021" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Bad Habits" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Bad Habits" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CO8HEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_kE6pBd_LRYyqeKGM-6nLFM6H38CIeJh2g" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CO8HEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/3xN5Rqah_iSMqbl3ZMCr9MjnEBVyBLmLng0f-MCvFFdfPNhK619ikGwAD0iOBkzCOXIlucWE0lLLXJA=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/3xN5Rqah_iSMqbl3ZMCr9MjnEBVyBLmLng0f-MCvFFdfPNhK619ikGwAD0iOBkzCOXIlucWE0lLLXJA=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CP0HEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_917r4nW96j5", - "params": "ggMrGilPTEFLNXV5X2tFNnBCZF9MUll5cWVLR00tNm5MRk02SDM4Q0llSmgyZw%3D%3D" - }, - "clickTrackingParams": "CO4HEKCzAhgmIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Bad Habits" - } - ] - }, - "trackingParams": "CO4HEKCzAhgmIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "COwHEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_npgXZd7CTFxQoIHJ2wbQCy2E_Vp1x5Yqw" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "COwHEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "COsHEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_npgXZd7CTFxQoIHJ2wbQCy2E_Vp1x5Yqw" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "COsHEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "COkHEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "COoHEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "COkHEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_npgXZd7CTFxQoIHJ2wbQCy2E_Vp1x5Yqw" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "COkHEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "COcHEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "COgHEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "COcHEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_npgXZd7CTFxQoIHJ2wbQCy2E_Vp1x5Yqw" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "COcHEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "COUHEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "COYHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "COYHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "COUHEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_npgXZd7CTFxQoIHJ2wbQCy2E_Vp1x5Yqw" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "COUHEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "COMHEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "COQHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "COQHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "COMHEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "COIHEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "COIHEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "COEHEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X25wZ1haZDdDVEZ4UW9JSEoyd2JRQ3kyRV9WcDF4NVlxdw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "COEHEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "COAHEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_cJ3E2IfwzTh", - "params": "ggMrGilPTEFLNXV5X25wZ1haZDdDVEZ4UW9JSEoyd2JRQ3kyRV9WcDF4NVlxdw%3D%3D" - }, - "clickTrackingParams": "CN4HEKCzAhgnIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2020" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Afterglow" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Afterglow" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CN8HEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_npgXZd7CTFxQoIHJ2wbQCy2E_Vp1x5Yqw" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CN8HEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/dzpmzTpQLVrjYIZfMeyXeIHer10zf4cUU6GHSmgaV-RosRg-OaxjwvVFcj__bAiiBz19emxU7f5KHog=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/dzpmzTpQLVrjYIZfMeyXeIHer10zf4cUU6GHSmgaV-RosRg-OaxjwvVFcj__bAiiBz19emxU7f5KHog=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CO0HEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_cJ3E2IfwzTh", - "params": "ggMrGilPTEFLNXV5X25wZ1haZDdDVEZ4UW9JSEoyd2JRQ3kyRV9WcDF4NVlxdw%3D%3D" - }, - "clickTrackingParams": "CN4HEKCzAhgnIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Afterglow" - } - ] - }, - "trackingParams": "CN4HEKCzAhgnIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CNwHEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_mT8OUQihKYqsU5whjdgW2AjMPg4Zuk-dQ" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CNwHEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CNsHEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_mT8OUQihKYqsU5whjdgW2AjMPg4Zuk-dQ" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CNsHEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CNkHEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CNoHEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CNkHEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_mT8OUQihKYqsU5whjdgW2AjMPg4Zuk-dQ" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CNkHEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CNcHEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CNgHEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CNcHEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_mT8OUQihKYqsU5whjdgW2AjMPg4Zuk-dQ" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CNcHEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CNUHEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CNYHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CNYHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CNUHEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_mT8OUQihKYqsU5whjdgW2AjMPg4Zuk-dQ" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CNUHEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CNMHEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CNQHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CNQHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CNMHEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CNIHEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CNIHEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CNEHEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X21UOE9VUWloS1lxc1U1d2hqZGdXMkFqTVBnNFp1ay1kUQ%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CNEHEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CNAHEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_3WBQ4njLUp6", - "params": "ggMrGilPTEFLNXV5X21UOE9VUWloS1lxc1U1d2hqZGdXMkFqTVBnNFp1ay1kUQ%3D%3D" - }, - "clickTrackingParams": "CM4HEKCzAhgoIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2019" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause South of the Border (Acoustic)" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play South of the Border (Acoustic)" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CM8HEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_mT8OUQihKYqsU5whjdgW2AjMPg4Zuk-dQ" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CM8HEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/DlNfga41lyp3QDA0YGtJYs138V77xlKZaMjRXomOdQGzSxmNKXayb5P4N9BpH4q4Ys-_JJaCdwcvHCDGqg=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/DlNfga41lyp3QDA0YGtJYs138V77xlKZaMjRXomOdQGzSxmNKXayb5P4N9BpH4q4Ys-_JJaCdwcvHCDGqg=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CN0HEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_3WBQ4njLUp6", - "params": "ggMrGilPTEFLNXV5X21UOE9VUWloS1lxc1U1d2hqZGdXMkFqTVBnNFp1ay1kUQ%3D%3D" - }, - "clickTrackingParams": "CM4HEKCzAhgoIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "South of the Border (Acoustic) (feat. Camila Cabello)" - } - ] - }, - "trackingParams": "CM4HEKCzAhgoIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CMwHEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_kwPPyWyXMc28XV-SsyhvhpfZm8E1DIxOY" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CMwHEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CMsHEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_kwPPyWyXMc28XV-SsyhvhpfZm8E1DIxOY" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CMsHEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CMkHEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CMoHEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CMkHEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_kwPPyWyXMc28XV-SsyhvhpfZm8E1DIxOY" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CMkHEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CMcHEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CMgHEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CMcHEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_kwPPyWyXMc28XV-SsyhvhpfZm8E1DIxOY" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CMcHEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CMUHEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CMYHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CMYHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CMUHEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_kwPPyWyXMc28XV-SsyhvhpfZm8E1DIxOY" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CMUHEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CMMHEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CMQHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CMQHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CMMHEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CMIHEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CMIHEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CMEHEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2t3UFB5V3lYTWMyOFhWLVNzeWh2aHBmWm04RTFESXhPWQ%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CMEHEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CMAHEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_VIXO8xFh4IZ", - "params": "ggMrGilPTEFLNXV5X2t3UFB5V3lYTWMyOFhWLVNzeWh2aHBmWm04RTFESXhPWQ%3D%3D" - }, - "clickTrackingParams": "CL0HEKCzAhgpIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Album" - }, - { - "text": " • " - }, - { - "text": "2019" - } - ] - }, - "subtitleBadges": [ - { - "musicInlineBadgeRenderer": { - "accessibilityData": { - "accessibilityData": { - "label": "Explicit" - } - }, - "icon": { - "iconType": "MUSIC_EXPLICIT_BADGE" - }, - "trackingParams": "CL4HEKHtAhgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause No.6 Collaborations Project" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play No.6 Collaborations Project" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CL8HEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_kwPPyWyXMc28XV-SsyhvhpfZm8E1DIxOY" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CL8HEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/2rSqxXTYIox46twhc2zC73tSPuzHz9XBx04tojSXQmXN4SK7NgYdwX5PgqcX7reoPG_3WrjnIu-hbm5G=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/2rSqxXTYIox46twhc2zC73tSPuzHz9XBx04tojSXQmXN4SK7NgYdwX5PgqcX7reoPG_3WrjnIu-hbm5G=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CM0HEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_VIXO8xFh4IZ", - "params": "ggMrGilPTEFLNXV5X2t3UFB5V3lYTWMyOFhWLVNzeWh2aHBmWm04RTFESXhPWQ%3D%3D" - }, - "clickTrackingParams": "CL0HEKCzAhgpIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "No.6 Collaborations Project" - } - ] - }, - "trackingParams": "CL0HEKCzAhgpIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CLsHEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_lFjaQU_KdktYdX79LLFe89xC7c4xmseIU" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CLsHEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CLoHEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_lFjaQU_KdktYdX79LLFe89xC7c4xmseIU" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CLoHEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CLgHEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CLkHEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CLgHEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_lFjaQU_KdktYdX79LLFe89xC7c4xmseIU" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CLgHEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CLYHEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CLcHEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CLYHEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_lFjaQU_KdktYdX79LLFe89xC7c4xmseIU" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CLYHEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CLQHEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CLUHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CLUHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CLQHEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_lFjaQU_KdktYdX79LLFe89xC7c4xmseIU" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CLQHEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CLIHEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CLMHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CLMHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CLIHEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CLEHEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CLEHEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CLAHEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2xGamFRVV9LZGt0WWRYNzlMTEZlODl4QzdjNHhtc2VJVQ%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CLAHEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CK8HEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_CyMAAeTdw1p", - "params": "ggMrGilPTEFLNXV5X2xGamFRVV9LZGt0WWRYNzlMTEZlODl4QzdjNHhtc2VJVQ%3D%3D" - }, - "clickTrackingParams": "CK0HEKCzAhgqIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2019" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Best Part of Me" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Best Part of Me" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CK4HEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_lFjaQU_KdktYdX79LLFe89xC7c4xmseIU" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CK4HEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/aMADkfYpKT-mm2P7GdMIPvFIgbY4RCf_8OZCBCykB_gtxEkWUvKtLzKJDvAol0MCfBlOX83bKaf3tp4l=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/aMADkfYpKT-mm2P7GdMIPvFIgbY4RCf_8OZCBCykB_gtxEkWUvKtLzKJDvAol0MCfBlOX83bKaf3tp4l=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CLwHEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_CyMAAeTdw1p", - "params": "ggMrGilPTEFLNXV5X2xGamFRVV9LZGt0WWRYNzlMTEZlODl4QzdjNHhtc2VJVQ%3D%3D" - }, - "clickTrackingParams": "CK0HEKCzAhgqIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Best Part of Me (feat. Yebba )" - } - ] - }, - "trackingParams": "CK0HEKCzAhgqIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CKsHEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_mTby6lJGdb4VOOYTUv0YC_2iAqu3RsxJQ" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CKsHEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CKoHEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_mTby6lJGdb4VOOYTUv0YC_2iAqu3RsxJQ" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CKoHEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CKgHEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CKkHEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CKgHEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_mTby6lJGdb4VOOYTUv0YC_2iAqu3RsxJQ" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CKgHEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CKYHEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CKcHEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CKYHEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_mTby6lJGdb4VOOYTUv0YC_2iAqu3RsxJQ" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CKYHEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CKQHEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CKUHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CKUHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CKQHEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_mTby6lJGdb4VOOYTUv0YC_2iAqu3RsxJQ" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CKQHEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CKIHEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CKMHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CKMHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CKIHEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CKEHEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CKEHEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CKAHEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X21UYnk2bEpHZGI0Vk9PWVRVdjBZQ18yaUFxdTNSc3hKUQ%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CKAHEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CJ8HEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_P3ADtHY53Fe", - "params": "ggMrGilPTEFLNXV5X21UYnk2bEpHZGI0Vk9PWVRVdjBZQ18yaUFxdTNSc3hKUQ%3D%3D" - }, - "clickTrackingParams": "CJ0HEKCzAhgrIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2019" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause BLOW" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play BLOW" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CJ4HEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_mTby6lJGdb4VOOYTUv0YC_2iAqu3RsxJQ" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CJ4HEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/ao3pNzel9rJ3JoW5TQmnUZTa6ADc-rUk5bgTMHtnm2SWPiYh6vygBvfCV0QJZPWhIXuURiVde1eaIojk=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/ao3pNzel9rJ3JoW5TQmnUZTa6ADc-rUk5bgTMHtnm2SWPiYh6vygBvfCV0QJZPWhIXuURiVde1eaIojk=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CKwHEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_P3ADtHY53Fe", - "params": "ggMrGilPTEFLNXV5X21UYnk2bEpHZGI0Vk9PWVRVdjBZQ18yaUFxdTNSc3hKUQ%3D%3D" - }, - "clickTrackingParams": "CJ0HEKCzAhgrIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "BLOW" - } - ] - }, - "trackingParams": "CJ0HEKCzAhgrIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CJsHEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_mE6SUV0sis7Hd8ntTXQmABsidPIyJ2X9g" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CJsHEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CJoHEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_mE6SUV0sis7Hd8ntTXQmABsidPIyJ2X9g" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CJoHEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CJgHEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CJkHEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CJgHEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_mE6SUV0sis7Hd8ntTXQmABsidPIyJ2X9g" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CJgHEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CJYHEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CJcHEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CJYHEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_mE6SUV0sis7Hd8ntTXQmABsidPIyJ2X9g" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CJYHEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CJQHEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CJUHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CJUHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CJQHEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_mE6SUV0sis7Hd8ntTXQmABsidPIyJ2X9g" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CJQHEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CJIHEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CJMHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CJMHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CJIHEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CJEHEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CJEHEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CJAHEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X21FNlNVVjBzaXM3SGQ4bnRUWFFtQUJzaWRQSXlKMlg5Zw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CJAHEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CI8HEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_AVphTUtHNCE", - "params": "ggMrGilPTEFLNXV5X21FNlNVVjBzaXM3SGQ4bnRUWFFtQUJzaWRQSXlKMlg5Zw%3D%3D" - }, - "clickTrackingParams": "CI0HEKCzAhgsIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2019" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Beautiful People (Acoustic)" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Beautiful People (Acoustic)" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CI4HEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_mE6SUV0sis7Hd8ntTXQmABsidPIyJ2X9g" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CI4HEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/_fAsm5XrN9i5aLcLVTXuT56gypsHcZ8DnBle6E61SvFJrlQCgjaRVF0KDG2vgUetq5yVKHWvgokwzjuw_Q=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/_fAsm5XrN9i5aLcLVTXuT56gypsHcZ8DnBle6E61SvFJrlQCgjaRVF0KDG2vgUetq5yVKHWvgokwzjuw_Q=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CJwHEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_AVphTUtHNCE", - "params": "ggMrGilPTEFLNXV5X21FNlNVVjBzaXM3SGQ4bnRUWFFtQUJzaWRQSXlKMlg5Zw%3D%3D" - }, - "clickTrackingParams": "CI0HEKCzAhgsIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Beautiful People (Acoustic)" - } - ] - }, - "trackingParams": "CI0HEKCzAhgsIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CIsHEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_lqxPSiV2PYJKiD_PyLHgxWXIVi68Zf9jo" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CIsHEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CIoHEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_lqxPSiV2PYJKiD_PyLHgxWXIVi68Zf9jo" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CIoHEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CIgHEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CIkHEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CIgHEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_lqxPSiV2PYJKiD_PyLHgxWXIVi68Zf9jo" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CIgHEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CIYHEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CIcHEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CIYHEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_lqxPSiV2PYJKiD_PyLHgxWXIVi68Zf9jo" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CIYHEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CIQHEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CIUHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CIUHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CIQHEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_lqxPSiV2PYJKiD_PyLHgxWXIVi68Zf9jo" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CIQHEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CIIHEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CIMHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CIMHEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CIIHEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CIEHEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CIEHEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CIAHEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2xxeFBTaVYyUFlKS2lEX1B5TEhneFdYSVZpNjhaZjlqbw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CIAHEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CP8GEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_twQ88DmN7lm", - "params": "ggMrGilPTEFLNXV5X2xxeFBTaVYyUFlKS2lEX1B5TEhneFdYSVZpNjhaZjlqbw%3D%3D" - }, - "clickTrackingParams": "CP0GEKCzAhgtIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2019" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Beautiful People" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Beautiful People" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CP4GEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_lqxPSiV2PYJKiD_PyLHgxWXIVi68Zf9jo" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CP4GEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/mLYowfEczgSkvmg-dsOG20VbBR95_1gNnhPF5RYcaJLI8mS0ZOtaEd3l80r7KRsM2sAU8sxpIKaenZs=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/mLYowfEczgSkvmg-dsOG20VbBR95_1gNnhPF5RYcaJLI8mS0ZOtaEd3l80r7KRsM2sAU8sxpIKaenZs=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CIwHEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_twQ88DmN7lm", - "params": "ggMrGilPTEFLNXV5X2xxeFBTaVYyUFlKS2lEX1B5TEhneFdYSVZpNjhaZjlqbw%3D%3D" - }, - "clickTrackingParams": "CP0GEKCzAhgtIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Beautiful People (feat. Khalid)" - } - ] - }, - "trackingParams": "CP0GEKCzAhgtIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CPsGEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_nKRFWY721pb-t_7xWJ0BQH7IwGbsb03Ao" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CPsGEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CPoGEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_nKRFWY721pb-t_7xWJ0BQH7IwGbsb03Ao" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CPoGEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CPgGEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CPkGEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CPgGEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_nKRFWY721pb-t_7xWJ0BQH7IwGbsb03Ao" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CPgGEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CPYGEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CPcGEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CPYGEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_nKRFWY721pb-t_7xWJ0BQH7IwGbsb03Ao" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CPYGEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CPQGEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CPUGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CPUGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CPQGEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_nKRFWY721pb-t_7xWJ0BQH7IwGbsb03Ao" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CPQGEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CPIGEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CPMGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CPMGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CPIGEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CPEGEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CPEGEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CPAGEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X25LUkZXWTcyMXBiLXRfN3hXSjBCUUg3SXdHYnNiMDNBbw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CPAGEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CO8GEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_616RtSdo4UU", - "params": "ggMrGilPTEFLNXV5X25LUkZXWTcyMXBiLXRfN3hXSjBCUUg3SXdHYnNiMDNBbw%3D%3D" - }, - "clickTrackingParams": "COwGEKCzAhguIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2019" - } - ] - }, - "subtitleBadges": [ - { - "musicInlineBadgeRenderer": { - "accessibilityData": { - "accessibilityData": { - "label": "Explicit" - } - }, - "icon": { - "iconType": "MUSIC_EXPLICIT_BADGE" - }, - "trackingParams": "CO0GEKHtAhgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Cross Me" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Cross Me" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CO4GEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_nKRFWY721pb-t_7xWJ0BQH7IwGbsb03Ao" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CO4GEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/pWiNnmgAvecsn7JqMnYP6rXMUo0mPs0rXaBHLQwjpIvRIRLkfotLIhhFz8njeD7kHPCBk5t29Q2fIjsdRw=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/pWiNnmgAvecsn7JqMnYP6rXMUo0mPs0rXaBHLQwjpIvRIRLkfotLIhhFz8njeD7kHPCBk5t29Q2fIjsdRw=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CPwGEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_616RtSdo4UU", - "params": "ggMrGilPTEFLNXV5X25LUkZXWTcyMXBiLXRfN3hXSjBCUUg3SXdHYnNiMDNBbw%3D%3D" - }, - "clickTrackingParams": "COwGEKCzAhguIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Cross Me (feat. Chance The Rapper & PnB Rock)" - } - ] - }, - "trackingParams": "COwGEKCzAhguIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "COoGEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_kc2aQQ0b6nQpEcJHDjTLyjS2WNYA3VGHw" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "COoGEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "COkGEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_kc2aQQ0b6nQpEcJHDjTLyjS2WNYA3VGHw" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "COkGEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "COcGEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "COgGEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "COcGEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_kc2aQQ0b6nQpEcJHDjTLyjS2WNYA3VGHw" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "COcGEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "COUGEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "COYGEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "COUGEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_kc2aQQ0b6nQpEcJHDjTLyjS2WNYA3VGHw" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "COUGEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "COMGEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "COQGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "COQGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "COMGEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_kc2aQQ0b6nQpEcJHDjTLyjS2WNYA3VGHw" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "COMGEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "COEGEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "COIGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "COIGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "COEGEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "COAGEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "COAGEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CN8GEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2tjMmFRUTBiNm5RcEVjSkhEalRMeWpTMldOWUEzVkdIdw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CN8GEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CN4GEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_npDhgdB9yJF", - "params": "ggMrGilPTEFLNXV5X2tjMmFRUTBiNm5RcEVjSkhEalRMeWpTMldOWUEzVkdIdw%3D%3D" - }, - "clickTrackingParams": "CNwGEKCzAhgvIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2019" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause I Don't Care" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play I Don't Care" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CN0GEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_kc2aQQ0b6nQpEcJHDjTLyjS2WNYA3VGHw" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CN0GEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/TOs6EF6cy4xJL9TKOiPk3WuR7U5jnA-In5CY6Mb0HGMzbpQ9rUGJPslabC-b2dJbJRSlcuUqRe0Zwgo=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/TOs6EF6cy4xJL9TKOiPk3WuR7U5jnA-In5CY6Mb0HGMzbpQ9rUGJPslabC-b2dJbJRSlcuUqRe0Zwgo=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "COsGEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_npDhgdB9yJF", - "params": "ggMrGilPTEFLNXV5X2tjMmFRUTBiNm5RcEVjSkhEalRMeWpTMldOWUEzVkdIdw%3D%3D" - }, - "clickTrackingParams": "CNwGEKCzAhgvIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "I Don't Care" - } - ] - }, - "trackingParams": "CNwGEKCzAhgvIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CNoGEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_mQDMlgG1gRTCFWsAcqibEEAtQIBWqHj9c" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CNoGEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CNkGEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_mQDMlgG1gRTCFWsAcqibEEAtQIBWqHj9c" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CNkGEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CNcGEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CNgGEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CNcGEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_mQDMlgG1gRTCFWsAcqibEEAtQIBWqHj9c" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CNcGEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CNUGEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CNYGEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CNUGEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_mQDMlgG1gRTCFWsAcqibEEAtQIBWqHj9c" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CNUGEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CNMGEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CNQGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CNQGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CNMGEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_mQDMlgG1gRTCFWsAcqibEEAtQIBWqHj9c" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CNMGEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CNEGEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CNIGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CNIGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CNEGEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CNAGEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CNAGEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CM8GEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X21RRE1sZ0cxZ1JUQ0ZXc0FjcWliRUVBdFFJQldxSGo5Yw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CM8GEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CM4GEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_vGa5krfHkE8", - "params": "ggMrGilPTEFLNXV5X21RRE1sZ0cxZ1JUQ0ZXc0FjcWliRUVBdFFJQldxSGo5Yw%3D%3D" - }, - "clickTrackingParams": "CMwGEKCzAhgwIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2018" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Happier (Acoustic)" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Happier (Acoustic)" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CM0GEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_mQDMlgG1gRTCFWsAcqibEEAtQIBWqHj9c" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CM0GEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/39eatOjceZ4phjdFp21jHJS-wCEkNph51VNCzdBF7JVFeH68EXAEyTGdQv9VWkClEh__1hCbJtL-jeIt=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/39eatOjceZ4phjdFp21jHJS-wCEkNph51VNCzdBF7JVFeH68EXAEyTGdQv9VWkClEh__1hCbJtL-jeIt=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CNsGEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_vGa5krfHkE8", - "params": "ggMrGilPTEFLNXV5X21RRE1sZ0cxZ1JUQ0ZXc0FjcWliRUVBdFFJQldxSGo5Yw%3D%3D" - }, - "clickTrackingParams": "CMwGEKCzAhgwIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Happier (Acoustic)" - } - ] - }, - "trackingParams": "CMwGEKCzAhgwIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CMoGEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_nre-5QbSTp6bUxzO49yDfQZ6uJ4HBiDbs" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CMoGEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CMkGEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_nre-5QbSTp6bUxzO49yDfQZ6uJ4HBiDbs" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CMkGEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CMcGEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CMgGEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CMcGEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_nre-5QbSTp6bUxzO49yDfQZ6uJ4HBiDbs" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CMcGEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CMUGEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CMYGEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CMUGEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_nre-5QbSTp6bUxzO49yDfQZ6uJ4HBiDbs" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CMUGEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CMMGEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CMQGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CMQGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CMMGEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_nre-5QbSTp6bUxzO49yDfQZ6uJ4HBiDbs" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CMMGEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CMEGEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CMIGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CMIGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CMEGEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CMAGEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CMAGEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CL8GEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X25yZS01UWJTVHA2YlV4ek80OXlEZlFaNnVKNEhCaURicw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CL8GEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CL4GEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_kVHz8wXHGCv", - "params": "ggMrGilPTEFLNXV5X25yZS01UWJTVHA2YlV4ek80OXlEZlFaNnVKNEhCaURicw%3D%3D" - }, - "clickTrackingParams": "CLwGEKCzAhgxIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2017" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Perfect Symphony" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Perfect Symphony" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CL0GEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_nre-5QbSTp6bUxzO49yDfQZ6uJ4HBiDbs" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CL0GEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/gt2VLko0VPeGpEwZwen50BQ7KLTCC_La1Z5o2bpRfe4mqQakRcdct1adWV2Qkn5HZUOob9iAL5AU6PM=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/gt2VLko0VPeGpEwZwen50BQ7KLTCC_La1Z5o2bpRfe4mqQakRcdct1adWV2Qkn5HZUOob9iAL5AU6PM=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CMsGEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_kVHz8wXHGCv", - "params": "ggMrGilPTEFLNXV5X25yZS01UWJTVHA2YlV4ek80OXlEZlFaNnVKNEhCaURicw%3D%3D" - }, - "clickTrackingParams": "CLwGEKCzAhgxIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Perfect Symphony (feat. Andrea Bocelli)" - } - ] - }, - "trackingParams": "CLwGEKCzAhgxIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CLoGEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_lXSQWRW8fLK0F4IAMsk3kpn1b7u0h-oxs" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CLoGEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CLkGEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_lXSQWRW8fLK0F4IAMsk3kpn1b7u0h-oxs" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CLkGEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CLcGEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CLgGEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CLcGEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_lXSQWRW8fLK0F4IAMsk3kpn1b7u0h-oxs" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CLcGEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CLUGEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CLYGEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CLUGEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_lXSQWRW8fLK0F4IAMsk3kpn1b7u0h-oxs" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CLUGEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CLMGEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CLQGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CLQGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CLMGEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_lXSQWRW8fLK0F4IAMsk3kpn1b7u0h-oxs" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CLMGEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CLEGEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CLIGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CLIGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CLEGEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CLAGEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CLAGEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CK8GEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2xYU1FXUlc4ZkxLMEY0SUFNc2sza3BuMWI3dTBoLW94cw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CK8GEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CK4GEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_GQuLaofFeh4", - "params": "ggMrGilPTEFLNXV5X2xYU1FXUlc4ZkxLMEY0SUFNc2sza3BuMWI3dTBoLW94cw%3D%3D" - }, - "clickTrackingParams": "CKwGEKCzAhgyIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2017" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Perfect Duet" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Perfect Duet" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CK0GEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_lXSQWRW8fLK0F4IAMsk3kpn1b7u0h-oxs" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CK0GEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/WcRXfdBQQ1k92rfIQYZCHXdTgRfmxEAcpGMzOtX1XN3tUkQdVjlk-Sc4NjuMeXbrjlfxWmn_AhA_-EUMMg=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/WcRXfdBQQ1k92rfIQYZCHXdTgRfmxEAcpGMzOtX1XN3tUkQdVjlk-Sc4NjuMeXbrjlfxWmn_AhA_-EUMMg=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CLsGEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_GQuLaofFeh4", - "params": "ggMrGilPTEFLNXV5X2xYU1FXUlc4ZkxLMEY0SUFNc2sza3BuMWI3dTBoLW94cw%3D%3D" - }, - "clickTrackingParams": "CKwGEKCzAhgyIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Perfect Duet (feat. Beyoncé)" - } - ] - }, - "trackingParams": "CKwGEKCzAhgyIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CKoGEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_lAquA7qQLelEjI4ZXy89TCzlI-AqVzO_U" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CKoGEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CKkGEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_lAquA7qQLelEjI4ZXy89TCzlI-AqVzO_U" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CKkGEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CKcGEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CKgGEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CKcGEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_lAquA7qQLelEjI4ZXy89TCzlI-AqVzO_U" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CKcGEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CKUGEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CKYGEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CKUGEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_lAquA7qQLelEjI4ZXy89TCzlI-AqVzO_U" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CKUGEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CKMGEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CKQGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CKQGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CKMGEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_lAquA7qQLelEjI4ZXy89TCzlI-AqVzO_U" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CKMGEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CKEGEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CKIGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CKIGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CKEGEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CKAGEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CKAGEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CJ8GEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2xBcXVBN3FRTGVsRWpJNFpYeTg5VEN6bEktQXFWek9fVQ%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CJ8GEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CJ4GEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_VplSXzEydMQ", - "params": "ggMrGilPTEFLNXV5X2xBcXVBN3FRTGVsRWpJNFpYeTg5VEN6bEktQXFWek9fVQ%3D%3D" - }, - "clickTrackingParams": "CJwGEKCzAhgzIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2017" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Perfect (Acoustic)" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Perfect (Acoustic)" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CJ0GEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_lAquA7qQLelEjI4ZXy89TCzlI-AqVzO_U" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CJ0GEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/7SN8J78BRhTj1Lxp78eOQiSyOzaRWUfWkShx5EwDj502OnoNQ6Fk8dGZLCA-8jZNGGLxTvnAZW3s-6YOEg=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/7SN8J78BRhTj1Lxp78eOQiSyOzaRWUfWkShx5EwDj502OnoNQ6Fk8dGZLCA-8jZNGGLxTvnAZW3s-6YOEg=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CKsGEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_VplSXzEydMQ", - "params": "ggMrGilPTEFLNXV5X2xBcXVBN3FRTGVsRWpJNFpYeTg5VEN6bEktQXFWek9fVQ%3D%3D" - }, - "clickTrackingParams": "CJwGEKCzAhgzIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Perfect (Acoustic)" - } - ] - }, - "trackingParams": "CJwGEKCzAhgzIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CJoGEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_mizQEF9wXLFxAjGlDF83JskTg49IZ1Ito" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CJoGEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CJkGEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_mizQEF9wXLFxAjGlDF83JskTg49IZ1Ito" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CJkGEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CJcGEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CJgGEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CJcGEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_mizQEF9wXLFxAjGlDF83JskTg49IZ1Ito" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CJcGEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CJUGEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CJYGEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CJUGEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_mizQEF9wXLFxAjGlDF83JskTg49IZ1Ito" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CJUGEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CJMGEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CJQGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CJQGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CJMGEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_mizQEF9wXLFxAjGlDF83JskTg49IZ1Ito" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CJMGEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CJEGEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CJIGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CJIGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CJEGEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CJAGEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CJAGEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CI8GEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X21pelFFRjl3WExGeEFqR2xERjgzSnNrVGc0OUlaMUl0bw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CI8GEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CI4GEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_T5s950Swfdy", - "params": "ggMrGilPTEFLNXV5X21pelFFRjl3WExGeEFqR2xERjgzSnNrVGc0OUlaMUl0bw%3D%3D" - }, - "clickTrackingParams": "CIwGEKCzAhg0IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Album" - }, - { - "text": " • " - }, - { - "text": "2017" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause ÷ (Deluxe)" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play ÷ (Deluxe)" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CI0GEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_mizQEF9wXLFxAjGlDF83JskTg49IZ1Ito" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CI0GEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/xpDEOr2TeqEn1QpXosXhqtj149FzNnTgAG3oqPnpTxTbQk-oceO90Sz4Axq0s4Jp_QLGQha_um6_EG3WGQ=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/xpDEOr2TeqEn1QpXosXhqtj149FzNnTgAG3oqPnpTxTbQk-oceO90Sz4Axq0s4Jp_QLGQha_um6_EG3WGQ=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CJsGEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_T5s950Swfdy", - "params": "ggMrGilPTEFLNXV5X21pelFFRjl3WExGeEFqR2xERjgzSnNrVGc0OUlaMUl0bw%3D%3D" - }, - "clickTrackingParams": "CIwGEKCzAhg0IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "÷ (Deluxe)" - } - ] - }, - "trackingParams": "CIwGEKCzAhg0IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CIoGEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_n3bXN_2XiroiTc_jBjTOl8HWg6lq-q0Fg" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CIoGEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CIkGEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_n3bXN_2XiroiTc_jBjTOl8HWg6lq-q0Fg" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CIkGEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CIcGEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CIgGEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CIcGEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_n3bXN_2XiroiTc_jBjTOl8HWg6lq-q0Fg" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CIcGEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CIUGEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CIYGEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CIUGEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_n3bXN_2XiroiTc_jBjTOl8HWg6lq-q0Fg" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CIUGEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CIMGEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CIQGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CIQGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CIMGEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_n3bXN_2XiroiTc_jBjTOl8HWg6lq-q0Fg" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CIMGEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CIEGEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CIIGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CIIGEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CIEGEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CIAGEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CIAGEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CP8FEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X24zYlhOXzJYaXJvaVRjX2pCalRPbDhIV2c2bHEtcTBGZw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CP8FEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CP4FEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_iw09vpSYqaZ", - "params": "ggMrGilPTEFLNXV5X24zYlhOXzJYaXJvaVRjX2pCalRPbDhIV2c2bHEtcTBGZw%3D%3D" - }, - "clickTrackingParams": "CPwFEKCzAhg1IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2017" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause How Would You Feel (Paean)" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play How Would You Feel (Paean)" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CP0FEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_n3bXN_2XiroiTc_jBjTOl8HWg6lq-q0Fg" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CP0FEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/Q55rIAk_fG3Q4HmtuD9ZQOniqMdd5wPK9ZnecT-pqaINoBPGkZpQdty93QCUF1pMLS1hk-QTwGM5HtcP=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/Q55rIAk_fG3Q4HmtuD9ZQOniqMdd5wPK9ZnecT-pqaINoBPGkZpQdty93QCUF1pMLS1hk-QTwGM5HtcP=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CIsGEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_iw09vpSYqaZ", - "params": "ggMrGilPTEFLNXV5X24zYlhOXzJYaXJvaVRjX2pCalRPbDhIV2c2bHEtcTBGZw%3D%3D" - }, - "clickTrackingParams": "CPwFEKCzAhg1IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "How Would You Feel (Paean)" - } - ] - }, - "trackingParams": "CPwFEKCzAhg1IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CPoFEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_kqubCZxGcOoyj2FWxE7SEDQs7Mlz5ZqzI" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CPoFEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CPkFEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_kqubCZxGcOoyj2FWxE7SEDQs7Mlz5ZqzI" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CPkFEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CPcFEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CPgFEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CPcFEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_kqubCZxGcOoyj2FWxE7SEDQs7Mlz5ZqzI" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CPcFEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CPUFEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CPYFEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CPUFEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_kqubCZxGcOoyj2FWxE7SEDQs7Mlz5ZqzI" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CPUFEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CPMFEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CPQFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CPQFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CPMFEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_kqubCZxGcOoyj2FWxE7SEDQs7Mlz5ZqzI" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CPMFEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CPEFEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CPIFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CPIFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CPEFEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CPAFEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CPAFEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CO8FEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2txdWJDWnhHY09veWoyRld4RTdTRURRczdNbHo1WnF6SQ%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CO8FEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CO4FEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_X7o29iaA2pL", - "params": "ggMrGilPTEFLNXV5X2txdWJDWnhHY09veWoyRld4RTdTRURRczdNbHo1WnF6SQ%3D%3D" - }, - "clickTrackingParams": "COwFEKCzAhg2IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2017" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Shape of You (Acoustic)" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Shape of You (Acoustic)" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CO0FEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_kqubCZxGcOoyj2FWxE7SEDQs7Mlz5ZqzI" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CO0FEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/bwy4-vj9NW0ZwqNnLff1pJwDeY86q_0r31JiaetMc5pFQyjYAwuC3eYLT3mc9sjeSrQQQfXZOsItBL9y=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/bwy4-vj9NW0ZwqNnLff1pJwDeY86q_0r31JiaetMc5pFQyjYAwuC3eYLT3mc9sjeSrQQQfXZOsItBL9y=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CPsFEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_X7o29iaA2pL", - "params": "ggMrGilPTEFLNXV5X2txdWJDWnhHY09veWoyRld4RTdTRURRczdNbHo1WnF6SQ%3D%3D" - }, - "clickTrackingParams": "COwFEKCzAhg2IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Shape of You (Acoustic)" - } - ] - }, - "trackingParams": "COwFEKCzAhg2IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "COoFEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_nAMsUeEfwDEapXTuB4ltvBdXwM7ccEScY" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "COoFEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "COkFEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_nAMsUeEfwDEapXTuB4ltvBdXwM7ccEScY" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "COkFEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "COcFEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "COgFEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "COcFEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_nAMsUeEfwDEapXTuB4ltvBdXwM7ccEScY" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "COcFEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "COUFEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "COYFEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "COUFEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_nAMsUeEfwDEapXTuB4ltvBdXwM7ccEScY" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "COUFEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "COMFEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "COQFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "COQFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "COMFEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_nAMsUeEfwDEapXTuB4ltvBdXwM7ccEScY" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "COMFEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "COEFEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "COIFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "COIFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "COEFEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "COAFEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "COAFEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CN8FEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X25BTXNVZUVmd0RFYXBYVHVCNGx0dkJkWHdNN2NjRVNjWQ%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CN8FEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CN4FEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_9afeNFZkAHG", - "params": "ggMrGilPTEFLNXV5X25BTXNVZUVmd0RFYXBYVHVCNGx0dkJkWHdNN2NjRVNjWQ%3D%3D" - }, - "clickTrackingParams": "CNwFEKCzAhg3IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2017" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Castle on the Hill" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Castle on the Hill" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CN0FEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_nAMsUeEfwDEapXTuB4ltvBdXwM7ccEScY" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CN0FEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/ZjsspviQCPTW7akHOuEuft-UEE_W_Ge_qBx5CRc06K5pzrKIVc3BzyiqB2WB2vD648JGEP7wQBbaEn3aSw=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/ZjsspviQCPTW7akHOuEuft-UEE_W_Ge_qBx5CRc06K5pzrKIVc3BzyiqB2WB2vD648JGEP7wQBbaEn3aSw=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "COsFEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_9afeNFZkAHG", - "params": "ggMrGilPTEFLNXV5X25BTXNVZUVmd0RFYXBYVHVCNGx0dkJkWHdNN2NjRVNjWQ%3D%3D" - }, - "clickTrackingParams": "CNwFEKCzAhg3IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Castle on the Hill" - } - ] - }, - "trackingParams": "CNwFEKCzAhg3IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CNoFEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_nLYh3bXau7EV_lgxTQEFVcUo3OSkJ8Dy4" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CNoFEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CNkFEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_nLYh3bXau7EV_lgxTQEFVcUo3OSkJ8Dy4" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CNkFEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CNcFEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CNgFEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CNcFEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_nLYh3bXau7EV_lgxTQEFVcUo3OSkJ8Dy4" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CNcFEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CNUFEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CNYFEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CNUFEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_nLYh3bXau7EV_lgxTQEFVcUo3OSkJ8Dy4" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CNUFEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CNMFEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CNQFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CNQFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CNMFEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_nLYh3bXau7EV_lgxTQEFVcUo3OSkJ8Dy4" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CNMFEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CNEFEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CNIFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CNIFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CNEFEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CNAFEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CNAFEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CM8FEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X25MWWgzYlhhdTdFVl9sZ3hUUUVGVmNVbzNPU2tKOER5NA%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CM8FEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CM4FEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_FNeOTtNjbu3", - "params": "ggMrGilPTEFLNXV5X25MWWgzYlhhdTdFVl9sZ3hUUUVGVmNVbzNPU2tKOER5NA%3D%3D" - }, - "clickTrackingParams": "CMsFEKCzAhg4IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "EP" - }, - { - "text": " • " - }, - { - "text": "2014" - } - ] - }, - "subtitleBadges": [ - { - "musicInlineBadgeRenderer": { - "accessibilityData": { - "accessibilityData": { - "label": "Explicit" - } - }, - "icon": { - "iconType": "MUSIC_EXPLICIT_BADGE" - }, - "trackingParams": "CMwFEKHtAhgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Don't" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Don't" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CM0FEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_nLYh3bXau7EV_lgxTQEFVcUo3OSkJ8Dy4" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CM0FEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/Jgi4oz7s7ckM3gEAQQgIgCWZEFDITqChMqSaPPX1QtDSBlaZDenoxcfCHAl-O_6X3pn5f6Q3O4utfHvBbA=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/Jgi4oz7s7ckM3gEAQQgIgCWZEFDITqChMqSaPPX1QtDSBlaZDenoxcfCHAl-O_6X3pn5f6Q3O4utfHvBbA=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CNsFEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_FNeOTtNjbu3", - "params": "ggMrGilPTEFLNXV5X25MWWgzYlhhdTdFVl9sZ3hUUUVGVmNVbzNPU2tKOER5NA%3D%3D" - }, - "clickTrackingParams": "CMsFEKCzAhg4IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Don't" - } - ] - }, - "trackingParams": "CMsFEKCzAhg4IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CMkFEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_lkFY4oZHG2FXKLKirsBIa3sff0ToSxLSY" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CMkFEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CMgFEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_lkFY4oZHG2FXKLKirsBIa3sff0ToSxLSY" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CMgFEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CMYFEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CMcFEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CMYFEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_lkFY4oZHG2FXKLKirsBIa3sff0ToSxLSY" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CMYFEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CMQFEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CMUFEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CMQFEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_lkFY4oZHG2FXKLKirsBIa3sff0ToSxLSY" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CMQFEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CMIFEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CMMFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CMMFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CMIFEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_lkFY4oZHG2FXKLKirsBIa3sff0ToSxLSY" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CMIFEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CMAFEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CMEFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CMEFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CMAFEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CL8FEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CL8FEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CL4FEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2xrRlk0b1pIRzJGWEtMS2lyc0JJYTNzZmYwVG9TeExTWQ%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CL4FEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CL0FEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_A4r9EfLZzYN", - "params": "ggMrGilPTEFLNXV5X2xrRlk0b1pIRzJGWEtMS2lyc0JJYTNzZmYwVG9TeExTWQ%3D%3D" - }, - "clickTrackingParams": "CLsFEKCzAhg5IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Album" - }, - { - "text": " • " - }, - { - "text": "2014" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause x (Deluxe Edition)" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play x (Deluxe Edition)" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CLwFEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_lkFY4oZHG2FXKLKirsBIa3sff0ToSxLSY" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CLwFEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/emeqGnTWaGFe5roPNKOsSe5WFl81hEScrwhlaJkSrmZn8F-rcYVg_VtYKSj5v59eU5ZrUo3uzlbI0wDV=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/emeqGnTWaGFe5roPNKOsSe5WFl81hEScrwhlaJkSrmZn8F-rcYVg_VtYKSj5v59eU5ZrUo3uzlbI0wDV=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CMoFEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_A4r9EfLZzYN", - "params": "ggMrGilPTEFLNXV5X2xrRlk0b1pIRzJGWEtMS2lyc0JJYTNzZmYwVG9TeExTWQ%3D%3D" - }, - "clickTrackingParams": "CLsFEKCzAhg5IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "x (Deluxe Edition)" - } - ] - }, - "trackingParams": "CLsFEKCzAhg5IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CLkFEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_lUso6mljDGySRaJ8I2KgcJQ3l6DPrCK2E" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CLkFEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CLgFEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_lUso6mljDGySRaJ8I2KgcJQ3l6DPrCK2E" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CLgFEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CLYFEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CLcFEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CLYFEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_lUso6mljDGySRaJ8I2KgcJQ3l6DPrCK2E" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CLYFEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CLQFEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CLUFEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CLQFEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_lUso6mljDGySRaJ8I2KgcJQ3l6DPrCK2E" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CLQFEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CLIFEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CLMFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CLMFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CLIFEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_lUso6mljDGySRaJ8I2KgcJQ3l6DPrCK2E" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CLIFEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CLAFEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CLEFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CLEFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CLAFEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CK8FEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CK8FEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CK4FEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2xVc282bWxqREd5U1JhSjhJMktnY0pRM2w2RFByQ0syRQ%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CK4FEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CK0FEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_BZlJAuZP4ab", - "params": "ggMrGilPTEFLNXV5X2xVc282bWxqREd5U1JhSjhJMktnY0pRM2w2RFByQ0syRQ%3D%3D" - }, - "clickTrackingParams": "CKsFEKCzAhg6IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2014" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Bloodstream" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Bloodstream" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CKwFEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_lUso6mljDGySRaJ8I2KgcJQ3l6DPrCK2E" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CKwFEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/TgtfJ5qVk7CXg9Q3aP5gO6YatBdsIX_S5OIn0wYp4_ur8EcOYN0yET6XVVgi32rvu60JUsjgvLGifEMOVQ=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/TgtfJ5qVk7CXg9Q3aP5gO6YatBdsIX_S5OIn0wYp4_ur8EcOYN0yET6XVVgi32rvu60JUsjgvLGifEMOVQ=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CLoFEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_BZlJAuZP4ab", - "params": "ggMrGilPTEFLNXV5X2xVc282bWxqREd5U1JhSjhJMktnY0pRM2w2RFByQ0syRQ%3D%3D" - }, - "clickTrackingParams": "CKsFEKCzAhg6IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Bloodstream" - } - ] - }, - "trackingParams": "CKsFEKCzAhg6IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CKkFEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_mXWovLcimzzZWX9Osi8476JAWHbQXtZTg" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CKkFEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CKgFEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_mXWovLcimzzZWX9Osi8476JAWHbQXtZTg" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CKgFEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CKYFEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CKcFEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CKYFEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_mXWovLcimzzZWX9Osi8476JAWHbQXtZTg" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CKYFEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CKQFEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CKUFEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CKQFEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_mXWovLcimzzZWX9Osi8476JAWHbQXtZTg" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CKQFEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CKIFEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CKMFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CKMFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CKIFEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_mXWovLcimzzZWX9Osi8476JAWHbQXtZTg" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CKIFEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CKAFEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CKEFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CKEFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CKAFEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CJ8FEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CJ8FEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CJ4FEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X21YV292TGNpbXp6WldYOU9zaTg0NzZKQVdIYlFYdFpUZw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CJ4FEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CJ0FEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_BRb3zdRHvHB", - "params": "ggMrGilPTEFLNXV5X21YV292TGNpbXp6WldYOU9zaTg0NzZKQVdIYlFYdFpUZw%3D%3D" - }, - "clickTrackingParams": "CJsFEKCzAhg7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2014" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause I Don't Care (Acoustic)" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play I Don't Care (Acoustic)" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CJwFEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_mXWovLcimzzZWX9Osi8476JAWHbQXtZTg" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CJwFEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/yUNn6qIle5EaOJfD2SLWzbzYhYuFjg6XA911-l26DYgaPd1JAjxwo8VmbyQpoPUAwykTIuRuTA-NaaY=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/yUNn6qIle5EaOJfD2SLWzbzYhYuFjg6XA911-l26DYgaPd1JAjxwo8VmbyQpoPUAwykTIuRuTA-NaaY=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CKoFEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_BRb3zdRHvHB", - "params": "ggMrGilPTEFLNXV5X21YV292TGNpbXp6WldYOU9zaTg0NzZKQVdIYlFYdFpUZw%3D%3D" - }, - "clickTrackingParams": "CJsFEKCzAhg7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "I Don't Care (Acoustic)" - } - ] - }, - "trackingParams": "CJsFEKCzAhg7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CJkFEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_m057KK3CHzaxh2awmeZEg_mAZiLDYaa1M" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CJkFEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CJgFEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_m057KK3CHzaxh2awmeZEg_mAZiLDYaa1M" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CJgFEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CJYFEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CJcFEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CJYFEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_m057KK3CHzaxh2awmeZEg_mAZiLDYaa1M" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CJYFEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CJQFEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CJUFEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CJQFEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_m057KK3CHzaxh2awmeZEg_mAZiLDYaa1M" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CJQFEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CJIFEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CJMFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CJMFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CJIFEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_m057KK3CHzaxh2awmeZEg_mAZiLDYaa1M" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CJIFEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CJAFEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CJEFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CJEFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CJAFEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CI8FEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CI8FEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CI4FEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X20wNTdLSzNDSHpheGgyYXdtZVpFZ19tQVppTERZYWExTQ%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CI4FEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CI0FEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_HQMyFGXfn7Q", - "params": "ggMrGilPTEFLNXV5X20wNTdLSzNDSHpheGgyYXdtZVpFZ19tQVppTERZYWExTQ%3D%3D" - }, - "clickTrackingParams": "CIsFEKCzAhg8IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2014" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Sing" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Sing" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CIwFEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_m057KK3CHzaxh2awmeZEg_mAZiLDYaa1M" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CIwFEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/eEvPKcOR-o7x5Hf5vhYxMW2O3p47_QoN0P7dEZ2b4BiC8F2dGl9D8Kk6ltZCGIK2mEhDwbpKqDWt4Wh9=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/eEvPKcOR-o7x5Hf5vhYxMW2O3p47_QoN0P7dEZ2b4BiC8F2dGl9D8Kk6ltZCGIK2mEhDwbpKqDWt4Wh9=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CJoFEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_HQMyFGXfn7Q", - "params": "ggMrGilPTEFLNXV5X20wNTdLSzNDSHpheGgyYXdtZVpFZ19tQVppTERZYWExTQ%3D%3D" - }, - "clickTrackingParams": "CIsFEKCzAhg8IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Sing" - } - ] - }, - "trackingParams": "CIsFEKCzAhg8IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CIkFEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_lRjHAR4mhOJD8X3mVt-3QsyQYj0Y-zsB8" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CIkFEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CIgFEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_lRjHAR4mhOJD8X3mVt-3QsyQYj0Y-zsB8" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CIgFEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CIYFEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CIcFEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CIYFEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_lRjHAR4mhOJD8X3mVt-3QsyQYj0Y-zsB8" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CIYFEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CIQFEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CIUFEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CIQFEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_lRjHAR4mhOJD8X3mVt-3QsyQYj0Y-zsB8" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CIQFEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CIIFEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CIMFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CIMFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CIIFEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_lRjHAR4mhOJD8X3mVt-3QsyQYj0Y-zsB8" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CIIFEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CIAFEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CIEFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CIEFEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CIAFEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CP8EEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CP8EEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CP4EEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2xSakhBUjRtaE9KRDhYM21WdC0zUXN5UVlqMFktenNCOA%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CP4EEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CP0EEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_H0GkUrdjcC9", - "params": "ggMrGilPTEFLNXV5X2xSakhBUjRtaE9KRDhYM21WdC0zUXN5UVlqMFktenNCOA%3D%3D" - }, - "clickTrackingParams": "CPsEEKCzAhg9IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2011" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Lego House" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Lego House" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CPwEEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_lRjHAR4mhOJD8X3mVt-3QsyQYj0Y-zsB8" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CPwEEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/SWX7Xcu5W8RVYn2URT-WuU9wxyuqpSBUENwYWFYMZOeNEMEqHgGki-4zohvbu5ppP54zvIR2iJO9YZ8=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/SWX7Xcu5W8RVYn2URT-WuU9wxyuqpSBUENwYWFYMZOeNEMEqHgGki-4zohvbu5ppP54zvIR2iJO9YZ8=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CIoFEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_H0GkUrdjcC9", - "params": "ggMrGilPTEFLNXV5X2xSakhBUjRtaE9KRDhYM21WdC0zUXN5UVlqMFktenNCOA%3D%3D" - }, - "clickTrackingParams": "CPsEEKCzAhg9IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Lego House" - } - ] - }, - "trackingParams": "CPsEEKCzAhg9IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CPkEEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_l2X7oT-Tsacd9_S4HKZ_I_LfNj6kyXs70" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CPkEEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CPgEEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_l2X7oT-Tsacd9_S4HKZ_I_LfNj6kyXs70" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CPgEEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CPYEEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CPcEEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CPYEEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_l2X7oT-Tsacd9_S4HKZ_I_LfNj6kyXs70" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CPYEEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CPQEEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CPUEEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CPQEEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_l2X7oT-Tsacd9_S4HKZ_I_LfNj6kyXs70" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CPQEEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CPIEEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CPMEEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CPMEEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CPIEEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_l2X7oT-Tsacd9_S4HKZ_I_LfNj6kyXs70" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CPIEEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CPAEEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CPEEEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CPEEEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CPAEEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CO8EEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CO8EEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CO4EEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2wyWDdvVC1Uc2FjZDlfUzRIS1pfSV9MZk5qNmt5WHM3MA%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CO4EEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CO0EEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_KYP1Wsy4NQn", - "params": "ggMrGilPTEFLNXV5X2wyWDdvVC1Uc2FjZDlfUzRIS1pfSV9MZk5qNmt5WHM3MA%3D%3D" - }, - "clickTrackingParams": "COoEEKCzAhg-IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Album" - }, - { - "text": " • " - }, - { - "text": "2011" - } - ] - }, - "subtitleBadges": [ - { - "musicInlineBadgeRenderer": { - "accessibilityData": { - "accessibilityData": { - "label": "Explicit" - } - }, - "icon": { - "iconType": "MUSIC_EXPLICIT_BADGE" - }, - "trackingParams": "COsEEKHtAhgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause +" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play +" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "COwEEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_l2X7oT-Tsacd9_S4HKZ_I_LfNj6kyXs70" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "COwEEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/5-Z0bmxl8Smil_IosCTw95oPxleiktQjx9DBusLmQDMJ_8EinzpmvvYqSUVimNzsftg3aEUFTM6y0TFM=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/5-Z0bmxl8Smil_IosCTw95oPxleiktQjx9DBusLmQDMJ_8EinzpmvvYqSUVimNzsftg3aEUFTM6y0TFM=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CPoEEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_KYP1Wsy4NQn", - "params": "ggMrGilPTEFLNXV5X2wyWDdvVC1Uc2FjZDlfUzRIS1pfSV9MZk5qNmt5WHM3MA%3D%3D" - }, - "clickTrackingParams": "COoEEKCzAhg-IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "+" - } - ] - }, - "trackingParams": "COoEEKCzAhg-IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "COgEEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_lTt5OEFrNFprf9dvMg4zqzfNAWOYfqvEE" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "COgEEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "COcEEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_lTt5OEFrNFprf9dvMg4zqzfNAWOYfqvEE" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "COcEEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "COUEEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "COYEEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "COUEEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_lTt5OEFrNFprf9dvMg4zqzfNAWOYfqvEE" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "COUEEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "COMEEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "COQEEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "COMEEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_lTt5OEFrNFprf9dvMg4zqzfNAWOYfqvEE" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "COMEEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "COEEEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "COIEEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "COIEEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "COEEEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_lTt5OEFrNFprf9dvMg4zqzfNAWOYfqvEE" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "COEEEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CN8EEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "COAEEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "COAEEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CN8EEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CN4EEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CN4EEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CN0EEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2xUdDVPRUZyTkZwcmY5ZHZNZzR6cXpmTkFXT1lmcXZFRQ%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CN0EEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CNwEEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_rglJNvRZR9v", - "params": "ggMrGilPTEFLNXV5X2xUdDVPRUZyTkZwcmY5ZHZNZzR6cXpmTkFXT1lmcXZFRQ%3D%3D" - }, - "clickTrackingParams": "CNkEEKCzAhg_IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Album" - }, - { - "text": " • " - }, - { - "text": "2011" - } - ] - }, - "subtitleBadges": [ - { - "musicInlineBadgeRenderer": { - "accessibilityData": { - "accessibilityData": { - "label": "Explicit" - } - }, - "icon": { - "iconType": "MUSIC_EXPLICIT_BADGE" - }, - "trackingParams": "CNoEEKHtAhgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause No. 5 Collaborations Project" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play No. 5 Collaborations Project" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CNsEEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_lTt5OEFrNFprf9dvMg4zqzfNAWOYfqvEE" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CNsEEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/7wdqo8xOHm9VGruKlzukzOuLIVAl3QzMqldt0itaY_FsGv5al1zcs9tpKIAJZaDQbErO2bmaurbLsT6V=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/7wdqo8xOHm9VGruKlzukzOuLIVAl3QzMqldt0itaY_FsGv5al1zcs9tpKIAJZaDQbErO2bmaurbLsT6V=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "COkEEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_rglJNvRZR9v", - "params": "ggMrGilPTEFLNXV5X2xUdDVPRUZyTkZwcmY5ZHZNZzR6cXpmTkFXT1lmcXZFRQ%3D%3D" - }, - "clickTrackingParams": "CNkEEKCzAhg_IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "No. 5 Collaborations Project" - } - ] - }, - "trackingParams": "CNkEEKCzAhg_IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CNcEEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_kHf-z-vqi54t7BY975E5ucnP4IkQHaUwo" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CNcEEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CNYEEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_kHf-z-vqi54t7BY975E5ucnP4IkQHaUwo" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CNYEEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CNQEEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CNUEEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CNQEEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_kHf-z-vqi54t7BY975E5ucnP4IkQHaUwo" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CNQEEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CNIEEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CNMEEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CNIEEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_kHf-z-vqi54t7BY975E5ucnP4IkQHaUwo" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CNIEEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CNAEEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CNEEEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CNEEEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CNAEEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_kHf-z-vqi54t7BY975E5ucnP4IkQHaUwo" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CNAEEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CM4EEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CM8EEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CM8EEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CM4EEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CM0EEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CM0EEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CMwEEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2tIZi16LXZxaTU0dDdCWTk3NUU1dWNuUDRJa1FIYVV3bw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CMwEEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CMsEEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_aRZymyCfxCE", - "params": "ggMrGilPTEFLNXV5X2tIZi16LXZxaTU0dDdCWTk3NUU1dWNuUDRJa1FIYVV3bw%3D%3D" - }, - "clickTrackingParams": "CMkEEKCzAhhAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "EP" - }, - { - "text": " • " - }, - { - "text": "2010" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Songs I Wrote with Amy" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Songs I Wrote with Amy" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CMoEEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_kHf-z-vqi54t7BY975E5ucnP4IkQHaUwo" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CMoEEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/5J-U6RzheXK9QqZBMFJG_EFzo-P_8b-RrD987IWQ8_EmyvvDjdk92OU2u0xsTrqnbCH4XkLGN2VWL5pWdg=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/5J-U6RzheXK9QqZBMFJG_EFzo-P_8b-RrD987IWQ8_EmyvvDjdk92OU2u0xsTrqnbCH4XkLGN2VWL5pWdg=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CNgEEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_aRZymyCfxCE", - "params": "ggMrGilPTEFLNXV5X2tIZi16LXZxaTU0dDdCWTk3NUU1dWNuUDRJa1FIYVV3bw%3D%3D" - }, - "clickTrackingParams": "CMkEEKCzAhhAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Songs I Wrote with Amy" - } - ] - }, - "trackingParams": "CMkEEKCzAhhAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CMcEEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_lEeZ9Bmb-6nN4v8UgTzja_FQhDKKpDWSk" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CMcEEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CMYEEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_lEeZ9Bmb-6nN4v8UgTzja_FQhDKKpDWSk" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CMYEEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CMQEEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CMUEEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CMQEEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_lEeZ9Bmb-6nN4v8UgTzja_FQhDKKpDWSk" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CMQEEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CMIEEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CMMEEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CMIEEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_lEeZ9Bmb-6nN4v8UgTzja_FQhDKKpDWSk" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CMIEEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CMAEEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CMEEEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CMEEEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CMAEEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_lEeZ9Bmb-6nN4v8UgTzja_FQhDKKpDWSk" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CMAEEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CL4EEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CL8EEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CL8EEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CL4EEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CL0EEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CL0EEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CLwEEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2xFZVo5Qm1iLTZuTjR2OFVnVHpqYV9GUWhES0twRFdTaw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CLwEEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CLsEEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_TZyh5Fu0Iel", - "params": "ggMrGilPTEFLNXV5X2xFZVo5Qm1iLTZuTjR2OFVnVHpqYV9GUWhES0twRFdTaw%3D%3D" - }, - "clickTrackingParams": "CLkEEKCzAhhBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Album" - }, - { - "text": " • " - }, - { - "text": "2010" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Loose Change" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Loose Change" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CLoEEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_lEeZ9Bmb-6nN4v8UgTzja_FQhDKKpDWSk" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CLoEEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/xESC6YGPy6Jj3LES1NuhyAWBxVJrDgWL_pViNBZ0wPYgTNzmDSlNt9zeSLLgoc82mD7SKTUswO6oAZf3=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/xESC6YGPy6Jj3LES1NuhyAWBxVJrDgWL_pViNBZ0wPYgTNzmDSlNt9zeSLLgoc82mD7SKTUswO6oAZf3=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CMgEEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_TZyh5Fu0Iel", - "params": "ggMrGilPTEFLNXV5X2xFZVo5Qm1iLTZuTjR2OFVnVHpqYV9GUWhES0twRFdTaw%3D%3D" - }, - "clickTrackingParams": "CLkEEKCzAhhBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Loose Change" - } - ] - }, - "trackingParams": "CLkEEKCzAhhBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CLcEEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_lLA5hUXQAGKZXd90HD-WeREGe98zjDKfk" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CLcEEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CLYEEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_lLA5hUXQAGKZXd90HD-WeREGe98zjDKfk" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CLYEEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CLQEEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CLUEEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CLQEEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_lLA5hUXQAGKZXd90HD-WeREGe98zjDKfk" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CLQEEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CLIEEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CLMEEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CLIEEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_lLA5hUXQAGKZXd90HD-WeREGe98zjDKfk" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CLIEEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CLAEEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CLEEEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CLEEEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CLAEEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_lLA5hUXQAGKZXd90HD-WeREGe98zjDKfk" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CLAEEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CK4EEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CK8EEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CK8EEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CK4EEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CK0EEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CK0EEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CKwEEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X2xMQTVoVVhRQUdLWlhkOTBIRC1XZVJFR2U5OHpqREtmaw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CKwEEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CKsEEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_nJ5BUdCWCr1", - "params": "ggMrGilPTEFLNXV5X2xMQTVoVVhRQUdLWlhkOTBIRC1XZVJFR2U5OHpqREtmaw%3D%3D" - }, - "clickTrackingParams": "CKgEEKCzAhhCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "EP" - }, - { - "text": " • " - }, - { - "text": "2009" - } - ] - }, - "subtitleBadges": [ - { - "musicInlineBadgeRenderer": { - "accessibilityData": { - "accessibilityData": { - "label": "Explicit" - } - }, - "icon": { - "iconType": "MUSIC_EXPLICIT_BADGE" - }, - "trackingParams": "CKkEEKHtAhgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause You Need Me" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play You Need Me" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CKoEEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_lLA5hUXQAGKZXd90HD-WeREGe98zjDKfk" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CKoEEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/XJ1XRgHQdNcCSYYWXcgwjpLu6F-KimhB-l-pSjjKflqBLe4aRyXLMDbkkZLLfLIX8Dg6OiYFksiCGA4=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/XJ1XRgHQdNcCSYYWXcgwjpLu6F-KimhB-l-pSjjKflqBLe4aRyXLMDbkkZLLfLIX8Dg6OiYFksiCGA4=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CLgEEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_nJ5BUdCWCr1", - "params": "ggMrGilPTEFLNXV5X2xMQTVoVVhRQUdLWlhkOTBIRC1XZVJFR2U5OHpqREtmaw%3D%3D" - }, - "clickTrackingParams": "CKgEEKCzAhhCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "You Need Me" - } - ] - }, - "trackingParams": "CKgEEKCzAhhCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CKYEEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_nfrXzwIRghkfWoSPds3cO8qDfWnzjyJQw" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CKYEEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CKUEEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_nfrXzwIRghkfWoSPds3cO8qDfWnzjyJQw" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CKUEEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CKMEEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CKQEEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CKMEEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_nfrXzwIRghkfWoSPds3cO8qDfWnzjyJQw" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CKMEEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CKEEEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CKIEEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CKEEEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_nfrXzwIRghkfWoSPds3cO8qDfWnzjyJQw" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CKEEEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CJ8EEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CKAEEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CKAEEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CJ8EEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_nfrXzwIRghkfWoSPds3cO8qDfWnzjyJQw" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CJ8EEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CJ0EEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CJ4EEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CJ4EEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CJ0EEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CJwEEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CJwEEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CJsEEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X25mclh6d0lSZ2hrZldvU1BkczNjTzhxRGZXbnpqeUpRdw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CJsEEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CJoEEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_UqnUOFNrfOf", - "params": "ggMrGilPTEFLNXV5X25mclh6d0lSZ2hrZldvU1BkczNjTzhxRGZXbnpqeUpRdw%3D%3D" - }, - "clickTrackingParams": "CJgEEKCzAhhDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "EP" - }, - { - "text": " • " - }, - { - "text": "2010" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Live at the Bedford" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Live at the Bedford" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CJkEEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_nfrXzwIRghkfWoSPds3cO8qDfWnzjyJQw" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CJkEEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/p0iWkMVsjDYyxOfLMFK3V7ZoWvK9uJOw4W5hiBCNQ4GG-t1e93KgBUKiUj9BsRXtx10m27q6cO276Pfo=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/p0iWkMVsjDYyxOfLMFK3V7ZoWvK9uJOw4W5hiBCNQ4GG-t1e93KgBUKiUj9BsRXtx10m27q6cO276Pfo=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CKcEEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_UqnUOFNrfOf", - "params": "ggMrGilPTEFLNXV5X25mclh6d0lSZ2hrZldvU1BkczNjTzhxRGZXbnpqeUpRdw%3D%3D" - }, - "clickTrackingParams": "CJgEEKCzAhhDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Live at the Bedford" - } - ] - }, - "trackingParams": "CJgEEKCzAhhDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CJYEEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_nqG51O-5iSdy6QbYOqs3eUK9WeI6WGd9c" - } - }, - "text": { - "runs": [ - { - "text": "Shuffle play" - } - ] - }, - "trackingParams": "CJYEEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "MIX" - }, - "navigationEndpoint": { - "clickTrackingParams": "CJUEEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "watchPlaylistEndpoint": { - "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_nqG51O-5iSdy6QbYOqs3eUK9WeI6WGd9c" - } - }, - "text": { - "runs": [ - { - "text": "Start radio" - } - ] - }, - "trackingParams": "CJUEEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "QUEUE_PLAY_NEXT" - }, - "serviceEndpoint": { - "clickTrackingParams": "CJMEEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album will play next" - } - ] - }, - "trackingParams": "CJQEEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CJMEEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", - "queueTarget": { - "playlistId": "OLAK5uy_nqG51O-5iSdy6QbYOqs3eUK9WeI6WGd9c" - } - } - }, - "text": { - "runs": [ - { - "text": "Play next" - } - ] - }, - "trackingParams": "CJMEEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuServiceItemRenderer": { - "icon": { - "iconType": "ADD_TO_REMOTE_QUEUE" - }, - "serviceEndpoint": { - "clickTrackingParams": "CJEEEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "queueAddEndpoint": { - "commands": [ - { - "addToToastAction": { - "item": { - "notificationTextRenderer": { - "successResponseText": { - "runs": [ - { - "text": "Album added to queue" - } - ] - }, - "trackingParams": "CJIEEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - } - }, - "clickTrackingParams": "CJEEEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - ], - "queueInsertPosition": "INSERT_AT_END", - "queueTarget": { - "playlistId": "OLAK5uy_nqG51O-5iSdy6QbYOqs3eUK9WeI6WGd9c" - } - } - }, - "text": { - "runs": [ - { - "text": "Add to queue" - } - ] - }, - "trackingParams": "CJEEEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "toggleMenuServiceItemRenderer": { - "defaultIcon": { - "iconType": "LIBRARY_ADD" - }, - "defaultServiceEndpoint": { - "clickTrackingParams": "CI8EEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CJAEEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CJAEEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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_SAVED" - }, - "toggledServiceEndpoint": { - "clickTrackingParams": "CI8EEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "likeEndpoint": { - "status": "INDIFFERENT", - "target": { - "playlistId": "OLAK5uy_nqG51O-5iSdy6QbYOqs3eUK9WeI6WGd9c" - } - } - }, - "toggledText": { - "runs": [ - { - "text": "Remove album from library" - } - ] - }, - "trackingParams": "CI8EEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ADD_TO_PLAYLIST" - }, - "navigationEndpoint": { - "clickTrackingParams": "CI0EEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "modalEndpoint": { - "modal": { - "modalWithTitleAndButtonRenderer": { - "button": { - "buttonRenderer": { - "isDisabled": false, - "navigationEndpoint": { - "clickTrackingParams": "CI4EEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "signInEndpoint": { - "hack": true - } - }, - "style": "STYLE_BLUE_TEXT", - "text": { - "runs": [ - { - "text": "Sign in" - } - ] - }, - "trackingParams": "CI4EEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "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": "CI0EEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "ARTIST" - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ARTIST" - } - }, - "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" - }, - "clickTrackingParams": "CIwEEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": { - "runs": [ - { - "text": "Go to artist" - } - ] - }, - "trackingParams": "CIwEEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "menuNavigationItemRenderer": { - "icon": { - "iconType": "SHARE" - }, - "navigationEndpoint": { - "clickTrackingParams": "CIsEEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X25xRzUxTy01aVNkeTZRYllPcXMzZVVLOVdlSTZXR2Q5Yw%3D%3D", - "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" - } - }, - "text": { - "runs": [ - { - "text": "Share" - } - ] - }, - "trackingParams": "CIsEEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - } - ], - "trackingParams": "CIoEEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_NFPi1ZlYqj0", - "params": "ggMrGilPTEFLNXV5X25xRzUxTy01aVNkeTZRYllPcXMzZVVLOVdlSTZXR2Q5Yw%3D%3D" - }, - "clickTrackingParams": "CIgEEKCzAhhEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "subtitle": { - "runs": [ - { - "text": "Single" - }, - { - "text": " • " - }, - { - "text": "2023" - } - ] - }, - "thumbnailOverlay": { - "musicItemThumbnailOverlayRenderer": { - "background": { - "verticalGradient": { - "gradientLayerColors": [ - "2147483648", - "0", - "0" - ] - } - }, - "content": { - "musicPlayButtonRenderer": { - "accessibilityPauseData": { - "accessibilityData": { - "label": "Pause Eyes Closed (Overmono Remix)" - } - }, - "accessibilityPlayData": { - "accessibilityData": { - "label": "Play Eyes Closed (Overmono Remix)" - } - }, - "activeBackgroundColor": 4278190080, - "activeScaleFactor": 1.2, - "backgroundColor": 2566914048, - "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", - "iconColor": 4294967295, - "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, - "pauseIcon": { - "iconType": "PAUSE" - }, - "playIcon": { - "iconType": "PLAY_ARROW" - }, - "playNavigationEndpoint": { - "clickTrackingParams": "CIkEEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "watchPlaylistEndpoint": { - "playlistId": "OLAK5uy_nqG51O-5iSdy6QbYOqs3eUK9WeI6WGd9c" - } - }, - "playingIcon": { - "iconType": "VOLUME_UP" - }, - "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CIkEEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "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/kaO2Pv5AIBJbfWePJiBj1dqSD9NUpdKl7zKRZ8OCXfHq3SScTtvkrTNqc8nb_IcOyqLRKZg-RnqxKiZl=w226-h226-l90-rj", - "width": 226 - }, - { - "height": 544, - "url": "https://lh3.googleusercontent.com/kaO2Pv5AIBJbfWePJiBj1dqSD9NUpdKl7zKRZ8OCXfHq3SScTtvkrTNqc8nb_IcOyqLRKZg-RnqxKiZl=w544-h544-l90-rj", - "width": 544 - } - ] - }, - "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", - "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CJcEEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" - } - }, - "title": { - "runs": [ - { - "navigationEndpoint": { - "browseEndpoint": { - "browseEndpointContextSupportedConfigs": { - "browseEndpointContextMusicConfig": { - "pageType": "MUSIC_PAGE_TYPE_ALBUM" - } - }, - "browseId": "MPREb_NFPi1ZlYqj0", - "params": "ggMrGilPTEFLNXV5X25xRzUxTy01aVNkeTZRYllPcXMzZVVLOVdlSTZXR2Q5Yw%3D%3D" - }, - "clickTrackingParams": "CIgEEKCzAhhEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - }, - "text": "Eyes Closed (Overmono Remix)" - } - ] - }, - "trackingParams": "CIgEEKCzAhhEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" - } - }, - { - "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": "CIYEEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNAKEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_k1Uwm5wJv6HEy0zTKklrC2tIw3IUD_oko" @@ -31226,7 +7977,7 @@ } ] }, - "trackingParams": "CIYEEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNAKEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -31235,7 +7986,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CIUEEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CM8KEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_k1Uwm5wJv6HEy0zTKklrC2tIw3IUD_oko" @@ -31248,7 +7999,7 @@ } ] }, - "trackingParams": "CIUEEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CM8KEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -31257,7 +8008,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CIMEEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CM0KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -31271,15 +8022,21 @@ } ] }, - "trackingParams": "CIQEEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CM4KEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CIMEEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CM0KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CM0KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_k1Uwm5wJv6HEy0zTKklrC2tIw3IUD_oko" + } + }, "playlistId": "OLAK5uy_k1Uwm5wJv6HEy0zTKklrC2tIw3IUD_oko" } } @@ -31291,7 +8048,7 @@ } ] }, - "trackingParams": "CIMEEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CM0KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -31300,7 +8057,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CIEEEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMsKEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -31314,15 +8071,21 @@ } ] }, - "trackingParams": "CIIEEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CMwKEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CIEEEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CMsKEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMsKEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_k1Uwm5wJv6HEy0zTKklrC2tIw3IUD_oko" + } + }, "playlistId": "OLAK5uy_k1Uwm5wJv6HEy0zTKklrC2tIw3IUD_oko" } } @@ -31334,7 +8097,7 @@ } ] }, - "trackingParams": "CIEEEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMsKEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -31343,7 +8106,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CP8DEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMkKEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -31351,7 +8114,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CIAEEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMoKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -31364,13 +8127,13 @@ } ] }, - "trackingParams": "CIAEEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMoKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -31388,7 +8151,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -31396,7 +8159,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CP8DEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMkKEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -31411,7 +8174,7 @@ } ] }, - "trackingParams": "CP8DEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMkKEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -31420,7 +8183,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CP0DEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMcKEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -31428,7 +8191,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CP4DEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMgKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -31441,7 +8204,7 @@ } ] }, - "trackingParams": "CP4DEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMgKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -31465,11 +8228,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CP0DEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMcKEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -31486,7 +8249,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CPwDEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CMYKEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -31495,7 +8258,7 @@ } ] }, - "trackingParams": "CPwDEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMYKEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -31504,7 +8267,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CPsDEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMUKEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X2sxVXdtNXdKdjZIRXkwelRLa2xyQzJ0SXczSVVEX29rbw%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -31517,11 +8280,11 @@ } ] }, - "trackingParams": "CPsDEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMUKEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CPoDEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMQKEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -31534,7 +8297,7 @@ "browseId": "MPREb_CoHB9zZwxV2", "params": "ggMrGilPTEFLNXV5X2sxVXdtNXdKdjZIRXkwelRLa2xyQzJ0SXczSVVEX29rbw%3D%3D" }, - "clickTrackingParams": "CPgDEKCzAhhFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CMIKEKCzAhgRIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -31578,7 +8341,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -31586,7 +8349,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CPkDEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CMMKEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_k1Uwm5wJv6HEy0zTKklrC2tIw3IUD_oko" } @@ -31595,7 +8358,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CPkDEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CMMKEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -31620,7 +8383,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CIcEEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CNEKEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -31636,13 +8399,13 @@ "browseId": "MPREb_CoHB9zZwxV2", "params": "ggMrGilPTEFLNXV5X2sxVXdtNXdKdjZIRXkwelRLa2xyQzJ0SXczSVVEX29rbw%3D%3D" }, - "clickTrackingParams": "CPgDEKCzAhhFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CMIKEKCzAhgRIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "2step (The Remixes)" } ] }, - "trackingParams": "CPgDEKCzAhhFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMIKEKCzAhgRIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -31662,10 +8425,10 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CPYDEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMAKEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_mx0aiDvs5Dj9TTwBMoqS6kjhU2h28oSP8" + "playlistId": "OLAK5uy_n5Ype-q-BeCOSoBM3cb71Fjc5v71u4pH4" } }, "text": { @@ -31675,7 +8438,7 @@ } ] }, - "trackingParams": "CPYDEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMAKEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -31684,10 +8447,10 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CPUDEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CL8KEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_mx0aiDvs5Dj9TTwBMoqS6kjhU2h28oSP8" + "playlistId": "RDAMPLOLAK5uy_n5Ype-q-BeCOSoBM3cb71Fjc5v71u4pH4" } }, "text": { @@ -31697,7 +8460,7 @@ } ] }, - "trackingParams": "CPUDEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CL8KEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -31706,7 +8469,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CPMDEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CL0KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -31720,16 +8483,22 @@ } ] }, - "trackingParams": "CPQDEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CL4KEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CPMDEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CL0KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { - "playlistId": "OLAK5uy_mx0aiDvs5Dj9TTwBMoqS6kjhU2h28oSP8" + "onEmptyQueue": { + "clickTrackingParams": "CL0KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_n5Ype-q-BeCOSoBM3cb71Fjc5v71u4pH4" + } + }, + "playlistId": "OLAK5uy_n5Ype-q-BeCOSoBM3cb71Fjc5v71u4pH4" } } }, @@ -31740,7 +8509,7 @@ } ] }, - "trackingParams": "CPMDEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CL0KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -31749,7 +8518,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CPEDEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLsKEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -31763,16 +8532,22 @@ } ] }, - "trackingParams": "CPIDEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CLwKEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CPEDEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CLsKEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { - "playlistId": "OLAK5uy_mx0aiDvs5Dj9TTwBMoqS6kjhU2h28oSP8" + "onEmptyQueue": { + "clickTrackingParams": "CLsKEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_n5Ype-q-BeCOSoBM3cb71Fjc5v71u4pH4" + } + }, + "playlistId": "OLAK5uy_n5Ype-q-BeCOSoBM3cb71Fjc5v71u4pH4" } } }, @@ -31783,7 +8558,7 @@ } ] }, - "trackingParams": "CPEDEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLsKEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -31792,7 +8567,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CO8DEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLkKEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -31800,7 +8575,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CPADEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLoKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -31813,13 +8588,13 @@ } ] }, - "trackingParams": "CPADEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLoKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -31837,7 +8612,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -31845,11 +8620,11 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CO8DEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLkKEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { - "playlistId": "OLAK5uy_mx0aiDvs5Dj9TTwBMoqS6kjhU2h28oSP8" + "playlistId": "OLAK5uy_n5Ype-q-BeCOSoBM3cb71Fjc5v71u4pH4" } } }, @@ -31860,7 +8635,7 @@ } ] }, - "trackingParams": "CO8DEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLkKEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -31869,7 +8644,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CO0DEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLcKEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -31877,7 +8652,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CO4DEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLgKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -31890,7 +8665,7 @@ } ] }, - "trackingParams": "CO4DEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLgKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -31914,11 +8689,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CO0DEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLcKEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -31935,7 +8710,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "COwDEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CLYKEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -31944,7 +8719,7 @@ } ] }, - "trackingParams": "COwDEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLYKEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -31953,7 +8728,3234 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "COsDEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLUKEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X241WXBlLXEtQmVDT1NvQk0zY2I3MUZqYzV2NzF1NHBINA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CLUKEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CLQKEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_4nNFUnbkX0Y", + "params": "ggMrGilPTEFLNXV5X241WXBlLXEtQmVDT1NvQk0zY2I3MUZqYzV2NzF1NHBINA%3D%3D" + }, + "clickTrackingParams": "CLIKEKCzAhgSIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2022" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause 2step" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play 2step" + } + }, + "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": "CLMKEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_n5Ype-q-BeCOSoBM3cb71Fjc5v71u4pH4" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CLMKEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/osqa9lfnMKXUczVcgZEK2Kg-AzuQQWgi3sTYgQ5FnpU8o2ULxK-HhuPZ_GK1xoDTqlEUaqRiNGd4ACzfIw=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/osqa9lfnMKXUczVcgZEK2Kg-AzuQQWgi3sTYgQ5FnpU8o2ULxK-HhuPZ_GK1xoDTqlEUaqRiNGd4ACzfIw=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CMEKEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_4nNFUnbkX0Y", + "params": "ggMrGilPTEFLNXV5X241WXBlLXEtQmVDT1NvQk0zY2I3MUZqYzV2NzF1NHBINA%3D%3D" + }, + "clickTrackingParams": "CLIKEKCzAhgSIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "2step (feat. Denise Chaila)" + } + ] + }, + "trackingParams": "CLIKEKCzAhgSIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CLAKEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_l30YoxE7eKxE-x26_iHfIzxfJTBB8AZZw" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CLAKEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CK8KEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_l30YoxE7eKxE-x26_iHfIzxfJTBB8AZZw" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CK8KEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK0KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CK4KEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CK0KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CK0KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_l30YoxE7eKxE-x26_iHfIzxfJTBB8AZZw" + } + }, + "playlistId": "OLAK5uy_l30YoxE7eKxE-x26_iHfIzxfJTBB8AZZw" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CK0KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKsKEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CKwKEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CKsKEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKsKEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_l30YoxE7eKxE-x26_iHfIzxfJTBB8AZZw" + } + }, + "playlistId": "OLAK5uy_l30YoxE7eKxE-x26_iHfIzxfJTBB8AZZw" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CKsKEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CKkKEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CKoKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CKoKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CKkKEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_l30YoxE7eKxE-x26_iHfIzxfJTBB8AZZw" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CKkKEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKcKEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CKgKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CKgKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CKcKEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CKYKEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CKYKEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKUKEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2wzMFlveEU3ZUt4RS14MjZfaUhmSXp4ZkpUQkI4QVpadw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CKUKEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CKQKEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_v7yxiLI99I3", + "params": "ggMrGilPTEFLNXV5X2wzMFlveEU3ZUt4RS14MjZfaUhmSXp4ZkpUQkI4QVpadw%3D%3D" + }, + "clickTrackingParams": "CKIKEKCzAhgTIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2022" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause 2step" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play 2step" + } + }, + "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": "CKMKEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_l30YoxE7eKxE-x26_iHfIzxfJTBB8AZZw" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CKMKEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/AhL0JM2we0fskaqebQASJkZTuVKLGYrVugS_iEivbKKBu7_l4762XduFkK-jxOsAsz7B75BWx-4WKoqK=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/AhL0JM2we0fskaqebQASJkZTuVKLGYrVugS_iEivbKKBu7_l4762XduFkK-jxOsAsz7B75BWx-4WKoqK=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CLEKEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_v7yxiLI99I3", + "params": "ggMrGilPTEFLNXV5X2wzMFlveEU3ZUt4RS14MjZfaUhmSXp4ZkpUQkI4QVpadw%3D%3D" + }, + "clickTrackingParams": "CKIKEKCzAhgTIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "2step (feat. Quevedo)" + } + ] + }, + "trackingParams": "CKIKEKCzAhgTIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CKAKEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_nfUyv3SB84i2NeshdJi-W37rPtOJnQ7qk" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CKAKEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJ8KEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_nfUyv3SB84i2NeshdJi-W37rPtOJnQ7qk" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CJ8KEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ0KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CJ4KEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CJ0KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJ0KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nfUyv3SB84i2NeshdJi-W37rPtOJnQ7qk" + } + }, + "playlistId": "OLAK5uy_nfUyv3SB84i2NeshdJi-W37rPtOJnQ7qk" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CJ0KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJsKEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CJwKEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CJsKEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJsKEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nfUyv3SB84i2NeshdJi-W37rPtOJnQ7qk" + } + }, + "playlistId": "OLAK5uy_nfUyv3SB84i2NeshdJi-W37rPtOJnQ7qk" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJsKEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CJkKEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CJoKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CJoKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CJkKEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_nfUyv3SB84i2NeshdJi-W37rPtOJnQ7qk" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CJkKEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJcKEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CJgKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CJgKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CJcKEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CJYKEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CJYKEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJUKEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X25mVXl2M1NCODRpMk5lc2hkSmktVzM3clB0T0puUTdxaw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJUKEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CJQKEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_LpecWMcDlit", + "params": "ggMrGilPTEFLNXV5X25mVXl2M1NCODRpMk5lc2hkSmktVzM3clB0T0puUTdxaw%3D%3D" + }, + "clickTrackingParams": "CJIKEKCzAhgUIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2022" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause 2step" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play 2step" + } + }, + "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": "CJMKEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_nfUyv3SB84i2NeshdJi-W37rPtOJnQ7qk" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CJMKEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/ZjfQWy3ziZ5RD0cUvgdmKVAjE1Uyl4bUuOdOz-BJiVp65-GmaNaGPKuHt_v5Frwd4zz9AWRZekN7IL6s=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/ZjfQWy3ziZ5RD0cUvgdmKVAjE1Uyl4bUuOdOz-BJiVp65-GmaNaGPKuHt_v5Frwd4zz9AWRZekN7IL6s=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CKEKEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_LpecWMcDlit", + "params": "ggMrGilPTEFLNXV5X25mVXl2M1NCODRpMk5lc2hkSmktVzM3clB0T0puUTdxaw%3D%3D" + }, + "clickTrackingParams": "CJIKEKCzAhgUIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "2step (feat. Armaan Malik)" + } + ] + }, + "trackingParams": "CJIKEKCzAhgUIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CJAKEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_kRQMNoLWSPl-iLnL7vh_ypBGScV89qZp4" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CJAKEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CI8KEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_kRQMNoLWSPl-iLnL7vh_ypBGScV89qZp4" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CI8KEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI0KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CI4KEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CI0KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CI0KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_kRQMNoLWSPl-iLnL7vh_ypBGScV89qZp4" + } + }, + "playlistId": "OLAK5uy_kRQMNoLWSPl-iLnL7vh_ypBGScV89qZp4" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CI0KEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIsKEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CIwKEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CIsKEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIsKEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_kRQMNoLWSPl-iLnL7vh_ypBGScV89qZp4" + } + }, + "playlistId": "OLAK5uy_kRQMNoLWSPl-iLnL7vh_ypBGScV89qZp4" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CIsKEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CIkKEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CIoKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CIoKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CIkKEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_kRQMNoLWSPl-iLnL7vh_ypBGScV89qZp4" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CIkKEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIcKEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CIgKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CIgKEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CIcKEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CIYKEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CIYKEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIUKEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2tSUU1Ob0xXU1BsLWlMbkw3dmhfeXBCR1NjVjg5cVpwNA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CIUKEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CIQKEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_8WKj0kvQXSK", + "params": "ggMrGilPTEFLNXV5X2tSUU1Ob0xXU1BsLWlMbkw3dmhfeXBCR1NjVjg5cVpwNA%3D%3D" + }, + "clickTrackingParams": "CIIKEKCzAhgVIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2022" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause 2step" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play 2step" + } + }, + "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": "CIMKEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_kRQMNoLWSPl-iLnL7vh_ypBGScV89qZp4" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CIMKEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/Tj5VydcslCHaMyFo3wWsGVzyU5oOugihuyjxCz0nfpdqCZJIDzoeEbjwv_yVKxIGvS_5YvU4nsX_h0oD=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/Tj5VydcslCHaMyFo3wWsGVzyU5oOugihuyjxCz0nfpdqCZJIDzoeEbjwv_yVKxIGvS_5YvU4nsX_h0oD=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CJEKEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_8WKj0kvQXSK", + "params": "ggMrGilPTEFLNXV5X2tSUU1Ob0xXU1BsLWlMbkw3dmhfeXBCR1NjVjg5cVpwNA%3D%3D" + }, + "clickTrackingParams": "CIIKEKCzAhgVIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "2step (feat. Potter Payper)" + } + ] + }, + "trackingParams": "CIIKEKCzAhgVIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CIAKEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_na9UXUNH2TpmtEcT7gdMC_yLEM7V9hb64" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CIAKEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CP8JEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_na9UXUNH2TpmtEcT7gdMC_yLEM7V9hb64" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CP8JEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP0JEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CP4JEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CP0JEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CP0JEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_na9UXUNH2TpmtEcT7gdMC_yLEM7V9hb64" + } + }, + "playlistId": "OLAK5uy_na9UXUNH2TpmtEcT7gdMC_yLEM7V9hb64" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CP0JEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPsJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CPwJEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CPsJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CPsJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_na9UXUNH2TpmtEcT7gdMC_yLEM7V9hb64" + } + }, + "playlistId": "OLAK5uy_na9UXUNH2TpmtEcT7gdMC_yLEM7V9hb64" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CPsJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CPkJEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CPoJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CPoJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CPkJEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_na9UXUNH2TpmtEcT7gdMC_yLEM7V9hb64" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CPkJEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPcJEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CPgJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CPgJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CPcJEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CPYJEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CPYJEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPUJEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X25hOVVYVU5IMlRwbXRFY1Q3Z2RNQ195TEVNN1Y5aGI2NA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CPUJEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CPQJEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_B5n0O2JQpS5", + "params": "ggMrGilPTEFLNXV5X25hOVVYVU5IMlRwbXRFY1Q3Z2RNQ195TEVNN1Y5aGI2NA%3D%3D" + }, + "clickTrackingParams": "CPIJEKCzAhgWIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2022" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause 2step" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play 2step" + } + }, + "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": "CPMJEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_na9UXUNH2TpmtEcT7gdMC_yLEM7V9hb64" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CPMJEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/1R_dmJgXqDzmwIU66xVeiRkkUR1tDyxZcmCQteT4HCIRHsSWCWjxPZ5ukRbJytYHX4EVuDJJL5xGqEnz=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/1R_dmJgXqDzmwIU66xVeiRkkUR1tDyxZcmCQteT4HCIRHsSWCWjxPZ5ukRbJytYHX4EVuDJJL5xGqEnz=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CIEKEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_B5n0O2JQpS5", + "params": "ggMrGilPTEFLNXV5X25hOVVYVU5IMlRwbXRFY1Q3Z2RNQ195TEVNN1Y5aGI2NA%3D%3D" + }, + "clickTrackingParams": "CPIJEKCzAhgWIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "2step (feat. reezy)" + } + ] + }, + "trackingParams": "CPIJEKCzAhgWIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CPAJEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_nORVGjuRies2xLypnBdCI3qAwvOwGFB7c" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CPAJEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CO8JEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_nORVGjuRies2xLypnBdCI3qAwvOwGFB7c" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CO8JEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO0JEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CO4JEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CO0JEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CO0JEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nORVGjuRies2xLypnBdCI3qAwvOwGFB7c" + } + }, + "playlistId": "OLAK5uy_nORVGjuRies2xLypnBdCI3qAwvOwGFB7c" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CO0JEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "COsJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "COwJEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "COsJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "COsJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nORVGjuRies2xLypnBdCI3qAwvOwGFB7c" + } + }, + "playlistId": "OLAK5uy_nORVGjuRies2xLypnBdCI3qAwvOwGFB7c" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "COsJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "COkJEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "COoJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "COoJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "COkJEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_nORVGjuRies2xLypnBdCI3qAwvOwGFB7c" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "COkJEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "COcJEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "COgJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "COgJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "COcJEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "COYJEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "COYJEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "COUJEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X25PUlZHanVSaWVzMnhMeXBuQmRDSTNxQXd2T3dHRkI3Yw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "COUJEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "COQJEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_6nTNDLBwPtP", + "params": "ggMrGilPTEFLNXV5X25PUlZHanVSaWVzMnhMeXBuQmRDSTNxQXd2T3dHRkI3Yw%3D%3D" + }, + "clickTrackingParams": "COIJEKCzAhgXIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2022" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause 2step" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play 2step" + } + }, + "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": "COMJEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_nORVGjuRies2xLypnBdCI3qAwvOwGFB7c" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "COMJEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/yzBqn1TqiRBtjerUQKdsHFt0AbZ7zzaYGXGqrV0bXkCGaRBhGP7RP54AgyWmVwsu_JvEaVZmqRY2haA=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/yzBqn1TqiRBtjerUQKdsHFt0AbZ7zzaYGXGqrV0bXkCGaRBhGP7RP54AgyWmVwsu_JvEaVZmqRY2haA=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CPEJEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_6nTNDLBwPtP", + "params": "ggMrGilPTEFLNXV5X25PUlZHanVSaWVzMnhMeXBuQmRDSTNxQXd2T3dHRkI3Yw%3D%3D" + }, + "clickTrackingParams": "COIJEKCzAhgXIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "2step (feat. Chefin)" + } + ] + }, + "trackingParams": "COIJEKCzAhgXIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "COAJEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_mWVHRg7QtfNSy4Wcl94d7UL4f8cbFTxoE" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "COAJEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CN8JEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_mWVHRg7QtfNSy4Wcl94d7UL4f8cbFTxoE" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CN8JEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN0JEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CN4JEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CN0JEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CN0JEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mWVHRg7QtfNSy4Wcl94d7UL4f8cbFTxoE" + } + }, + "playlistId": "OLAK5uy_mWVHRg7QtfNSy4Wcl94d7UL4f8cbFTxoE" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CN0JEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNsJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CNwJEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CNsJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNsJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mWVHRg7QtfNSy4Wcl94d7UL4f8cbFTxoE" + } + }, + "playlistId": "OLAK5uy_mWVHRg7QtfNSy4Wcl94d7UL4f8cbFTxoE" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CNsJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CNkJEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CNoJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CNoJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CNkJEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_mWVHRg7QtfNSy4Wcl94d7UL4f8cbFTxoE" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CNkJEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNcJEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CNgJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CNgJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CNcJEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CNYJEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CNYJEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNUJEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X21XVkhSZzdRdGZOU3k0V2NsOTRkN1VMNGY4Y2JGVHhvRQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CNUJEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CNQJEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_pxd9OposcTM", + "params": "ggMrGilPTEFLNXV5X21XVkhSZzdRdGZOU3k0V2NsOTRkN1VMNGY4Y2JGVHhvRQ%3D%3D" + }, + "clickTrackingParams": "CNIJEKCzAhgYIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2022" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause 2step" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play 2step" + } + }, + "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": "CNMJEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_mWVHRg7QtfNSy4Wcl94d7UL4f8cbFTxoE" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CNMJEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/iFEqkvhJEQ-4Xfry6EgGsEk52SraWAO4SMRpvOfuiSFPDJ3JgvtUYZoyEPODRickTCwAhPVcR5ehK1gr=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/iFEqkvhJEQ-4Xfry6EgGsEk52SraWAO4SMRpvOfuiSFPDJ3JgvtUYZoyEPODRickTCwAhPVcR5ehK1gr=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "COEJEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_pxd9OposcTM", + "params": "ggMrGilPTEFLNXV5X21XVkhSZzdRdGZOU3k0V2NsOTRkN1VMNGY4Y2JGVHhvRQ%3D%3D" + }, + "clickTrackingParams": "CNIJEKCzAhgYIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "2step (feat. Leto)" + } + ] + }, + "trackingParams": "CNIJEKCzAhgYIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CNAJEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_mx0aiDvs5Dj9TTwBMoqS6kjhU2h28oSP8" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CNAJEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CM8JEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_mx0aiDvs5Dj9TTwBMoqS6kjhU2h28oSP8" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CM8JEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM0JEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CM4JEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CM0JEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CM0JEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mx0aiDvs5Dj9TTwBMoqS6kjhU2h28oSP8" + } + }, + "playlistId": "OLAK5uy_mx0aiDvs5Dj9TTwBMoqS6kjhU2h28oSP8" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CM0JEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMsJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CMwJEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CMsJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMsJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mx0aiDvs5Dj9TTwBMoqS6kjhU2h28oSP8" + } + }, + "playlistId": "OLAK5uy_mx0aiDvs5Dj9TTwBMoqS6kjhU2h28oSP8" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CMsJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CMkJEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CMoJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CMoJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CMkJEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_mx0aiDvs5Dj9TTwBMoqS6kjhU2h28oSP8" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CMkJEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMcJEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CMgJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CMgJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CMcJEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CMYJEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CMYJEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMUJEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X214MGFpRHZzNURqOVRUd0JNb3FTNmtqaFUyaDI4b1NQOA%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -31966,11 +11968,11 @@ } ] }, - "trackingParams": "COsDEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMUJEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "COoDEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMQJEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -31983,7 +11985,7 @@ "browseId": "MPREb_M6lSUKZ0USh", "params": "ggMrGilPTEFLNXV5X214MGFpRHZzNURqOVRUd0JNb3FTNmtqaFUyaDI4b1NQOA%3D%3D" }, - "clickTrackingParams": "COgDEKCzAhhGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CMIJEKCzAhgZIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -32027,7 +12029,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -32035,7 +12037,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "COkDEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CMMJEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_mx0aiDvs5Dj9TTwBMoqS6kjhU2h28oSP8" } @@ -32044,7 +12046,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "COkDEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CMMJEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -32069,7 +12071,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CPcDEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CNEJEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -32085,13 +12087,13 @@ "browseId": "MPREb_M6lSUKZ0USh", "params": "ggMrGilPTEFLNXV5X214MGFpRHZzNURqOVRUd0JNb3FTNmtqaFUyaDI4b1NQOA%3D%3D" }, - "clickTrackingParams": "COgDEKCzAhhGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CMIJEKCzAhgZIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "2step (Star.One Remix)" } ] }, - "trackingParams": "COgDEKCzAhhGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMIJEKCzAhgZIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -32111,10 +12113,10 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "COYDEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMAJEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_nBeBaK9NMO2W46tFlN3ASUeGb8Dz7wb8E" + "playlistId": "OLAK5uy_m6cTSM6oj2Xvsx5OI4Jo8nq0wH-i1xGUM" } }, "text": { @@ -32124,7 +12126,7 @@ } ] }, - "trackingParams": "COYDEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMAJEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -32133,10 +12135,10 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "COUDEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CL8JEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_nBeBaK9NMO2W46tFlN3ASUeGb8Dz7wb8E" + "playlistId": "RDAMPLOLAK5uy_m6cTSM6oj2Xvsx5OI4Jo8nq0wH-i1xGUM" } }, "text": { @@ -32146,7 +12148,7 @@ } ] }, - "trackingParams": "COUDEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CL8JEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -32155,7 +12157,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "COMDEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CL0JEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -32169,16 +12171,22 @@ } ] }, - "trackingParams": "COQDEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CL4JEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "COMDEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CL0JEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { - "playlistId": "OLAK5uy_nBeBaK9NMO2W46tFlN3ASUeGb8Dz7wb8E" + "onEmptyQueue": { + "clickTrackingParams": "CL0JEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_m6cTSM6oj2Xvsx5OI4Jo8nq0wH-i1xGUM" + } + }, + "playlistId": "OLAK5uy_m6cTSM6oj2Xvsx5OI4Jo8nq0wH-i1xGUM" } } }, @@ -32189,7 +12197,7 @@ } ] }, - "trackingParams": "COMDEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CL0JEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -32198,7 +12206,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "COEDEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLsJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -32212,16 +12220,22 @@ } ] }, - "trackingParams": "COIDEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CLwJEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "COEDEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CLsJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { - "playlistId": "OLAK5uy_nBeBaK9NMO2W46tFlN3ASUeGb8Dz7wb8E" + "onEmptyQueue": { + "clickTrackingParams": "CLsJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_m6cTSM6oj2Xvsx5OI4Jo8nq0wH-i1xGUM" + } + }, + "playlistId": "OLAK5uy_m6cTSM6oj2Xvsx5OI4Jo8nq0wH-i1xGUM" } } }, @@ -32232,7 +12246,7 @@ } ] }, - "trackingParams": "COEDEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLsJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -32241,7 +12255,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CN8DEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLkJEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -32249,7 +12263,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "COADEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLoJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -32262,13 +12276,13 @@ } ] }, - "trackingParams": "COADEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLoJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -32286,7 +12300,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -32294,11 +12308,11 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CN8DEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLkJEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { - "playlistId": "OLAK5uy_nBeBaK9NMO2W46tFlN3ASUeGb8Dz7wb8E" + "playlistId": "OLAK5uy_m6cTSM6oj2Xvsx5OI4Jo8nq0wH-i1xGUM" } } }, @@ -32309,7 +12323,7 @@ } ] }, - "trackingParams": "CN8DEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLkJEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -32318,7 +12332,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CN0DEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLcJEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -32326,7 +12340,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CN4DEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLgJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -32339,7 +12353,7 @@ } ] }, - "trackingParams": "CN4DEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLgJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -32363,11 +12377,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CN0DEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLcJEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -32382,9 +12396,9 @@ "pageType": "MUSIC_PAGE_TYPE_ARTIST" } }, - "browseId": "UCt7KNkaOhBpesOJHMx2ASnw" + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CNwDEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CLYJEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -32393,7 +12407,7 @@ } ] }, - "trackingParams": "CNwDEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLYJEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -32402,9 +12416,9 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CNsDEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLUJEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { - "serializedShareEntity": "EilPTEFLNXV5X25CZUJhSzlOTU8yVzQ2dEZsTjNBU1VlR2I4RHo3d2I4RQ%3D%3D", + "serializedShareEntity": "EilPTEFLNXV5X202Y1RTTTZvajJYdnN4NU9JNEpvOG5xMHdILWkxeEdVTQ%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" } }, @@ -32415,11 +12429,11 @@ } ] }, - "trackingParams": "CNsDEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLUJEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CNoDEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLQJEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -32429,10 +12443,471 @@ "pageType": "MUSIC_PAGE_TYPE_ALBUM" } }, - "browseId": "MPREb_649GGrRZiU0", - "params": "ggMrGilPTEFLNXV5X25CZUJhSzlOTU8yVzQ2dEZsTjNBU1VlR2I4RHo3d2I4RQ%3D%3D" + "browseId": "MPREb_JE3cETpOAVy", + "params": "ggMrGilPTEFLNXV5X202Y1RTTTZvajJYdnN4NU9JNEpvOG5xMHdILWkxeEdVTQ%3D%3D" }, - "clickTrackingParams": "CNcDEKCzAhhHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CLIJEKCzAhgaIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2022" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause 2step" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play 2step" + } + }, + "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": "CLMJEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_m6cTSM6oj2Xvsx5OI4Jo8nq0wH-i1xGUM" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CLMJEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/sCNgxSLrK202C3_GvJsfTLd0Y4shp2X9lTKCVzqItPc-ZM9WocCKblbiHiId_mJqe6IqkYEluRcI_i8r=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/sCNgxSLrK202C3_GvJsfTLd0Y4shp2X9lTKCVzqItPc-ZM9WocCKblbiHiId_mJqe6IqkYEluRcI_i8r=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CMEJEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_JE3cETpOAVy", + "params": "ggMrGilPTEFLNXV5X202Y1RTTTZvajJYdnN4NU9JNEpvOG5xMHdILWkxeEdVTQ%3D%3D" + }, + "clickTrackingParams": "CLIJEKCzAhgaIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "2step (feat. Budjerah)" + } + ] + }, + "trackingParams": "CLIJEKCzAhgaIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CLAJEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_nfV--5OGqGrZaRwDsqgp72LxXkDqe8l4Y" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CLAJEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CK8JEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_nfV--5OGqGrZaRwDsqgp72LxXkDqe8l4Y" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CK8JEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK0JEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CK4JEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CK0JEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CK0JEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nfV--5OGqGrZaRwDsqgp72LxXkDqe8l4Y" + } + }, + "playlistId": "OLAK5uy_nfV--5OGqGrZaRwDsqgp72LxXkDqe8l4Y" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CK0JEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKsJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CKwJEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CKsJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKsJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nfV--5OGqGrZaRwDsqgp72LxXkDqe8l4Y" + } + }, + "playlistId": "OLAK5uy_nfV--5OGqGrZaRwDsqgp72LxXkDqe8l4Y" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CKsJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CKkJEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CKoJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CKoJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CKkJEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_nfV--5OGqGrZaRwDsqgp72LxXkDqe8l4Y" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CKkJEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKcJEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CKgJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CKgJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CKcJEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CKYJEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CKYJEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKUJEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X25mVi0tNU9HcUdyWmFSd0RzcWdwNzJMeFhrRHFlOGw0WQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CKUJEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CKQJEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_2L0FAb2KAJW", + "params": "ggMrGilPTEFLNXV5X25mVi0tNU9HcUdyWmFSd0RzcWdwNzJMeFhrRHFlOGw0WQ%3D%3D" + }, + "clickTrackingParams": "CKEJEKCzAhgbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -32458,7 +12933,2803 @@ "icon": { "iconType": "MUSIC_EXPLICIT_BADGE" }, - "trackingParams": "CNgDEKHtAhgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKIJEKHtAhgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause 2step" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play 2step" + } + }, + "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": "CKMJEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_nfV--5OGqGrZaRwDsqgp72LxXkDqe8l4Y" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CKMJEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/QAnfboTmxfnZTOd6kVs-FY3FbS5_Gu0-R0zxi4AI3_BZfeJ0pHqVVWN1VV-CeO-gYRsjpQGKTGaTgjT1=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/QAnfboTmxfnZTOd6kVs-FY3FbS5_Gu0-R0zxi4AI3_BZfeJ0pHqVVWN1VV-CeO-gYRsjpQGKTGaTgjT1=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CLEJEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_2L0FAb2KAJW", + "params": "ggMrGilPTEFLNXV5X25mVi0tNU9HcUdyWmFSd0RzcWdwNzJMeFhrRHFlOGw0WQ%3D%3D" + }, + "clickTrackingParams": "CKEJEKCzAhgbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "2step (feat. 1.Cuz)" + } + ] + }, + "trackingParams": "CKEJEKCzAhgbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CJ8JEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_nzauYAMSMksUa_mu5Axv2ulJBthLpNeQE" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CJ8JEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJ4JEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_nzauYAMSMksUa_mu5Axv2ulJBthLpNeQE" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CJ4JEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJwJEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CJ0JEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CJwJEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJwJEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nzauYAMSMksUa_mu5Axv2ulJBthLpNeQE" + } + }, + "playlistId": "OLAK5uy_nzauYAMSMksUa_mu5Axv2ulJBthLpNeQE" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CJwJEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJoJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CJsJEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CJoJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJoJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nzauYAMSMksUa_mu5Axv2ulJBthLpNeQE" + } + }, + "playlistId": "OLAK5uy_nzauYAMSMksUa_mu5Axv2ulJBthLpNeQE" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJoJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CJgJEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CJkJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CJkJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CJgJEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_nzauYAMSMksUa_mu5Axv2ulJBthLpNeQE" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CJgJEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJYJEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CJcJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CJcJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CJYJEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CJUJEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CJUJEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJQJEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X256YXVZQU1TTWtzVWFfbXU1QXh2MnVsSkJ0aExwTmVRRQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJQJEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CJMJEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_SnTnYpGnfIh", + "params": "ggMrGilPTEFLNXV5X256YXVZQU1TTWtzVWFfbXU1QXh2MnVsSkJ0aExwTmVRRQ%3D%3D" + }, + "clickTrackingParams": "CJEJEKCzAhgcIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2022" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause 2step" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play 2step" + } + }, + "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": "CJIJEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_nzauYAMSMksUa_mu5Axv2ulJBthLpNeQE" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CJIJEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/TMsEjiGlEAp_C-x7AFIgtd4lUq3oIvU34V5XlE8gNAlzD7B-NDnfWkGmWj4mwrxHQ0r9Q3RjN-I4V0U=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/TMsEjiGlEAp_C-x7AFIgtd4lUq3oIvU34V5XlE8gNAlzD7B-NDnfWkGmWj4mwrxHQ0r9Q3RjN-I4V0U=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CKAJEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_SnTnYpGnfIh", + "params": "ggMrGilPTEFLNXV5X256YXVZQU1TTWtzVWFfbXU1QXh2MnVsSkJ0aExwTmVRRQ%3D%3D" + }, + "clickTrackingParams": "CJEJEKCzAhgcIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "2step (feat. Ultimo)" + } + ] + }, + "trackingParams": "CJEJEKCzAhgcIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CI8JEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_lE4NbsUTxOp-ErC5U6XYBc6GCtnxW-_hc" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CI8JEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CI4JEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_lE4NbsUTxOp-ErC5U6XYBc6GCtnxW-_hc" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CI4JEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIwJEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CI0JEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CIwJEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIwJEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lE4NbsUTxOp-ErC5U6XYBc6GCtnxW-_hc" + } + }, + "playlistId": "OLAK5uy_lE4NbsUTxOp-ErC5U6XYBc6GCtnxW-_hc" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CIwJEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIoJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CIsJEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CIoJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIoJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lE4NbsUTxOp-ErC5U6XYBc6GCtnxW-_hc" + } + }, + "playlistId": "OLAK5uy_lE4NbsUTxOp-ErC5U6XYBc6GCtnxW-_hc" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CIoJEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CIgJEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CIkJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CIkJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CIgJEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_lE4NbsUTxOp-ErC5U6XYBc6GCtnxW-_hc" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CIgJEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIYJEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CIcJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CIcJEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CIYJEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CIUJEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CIUJEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIQJEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2xFNE5ic1VUeE9wLUVyQzVVNlhZQmM2R0N0bnhXLV9oYw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CIQJEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CIMJEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_3FUHECndc2a", + "params": "ggMrGilPTEFLNXV5X2xFNE5ic1VUeE9wLUVyQzVVNlhZQmM2R0N0bnhXLV9oYw%3D%3D" + }, + "clickTrackingParams": "CIEJEKCzAhgdIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2022" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause 2step" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play 2step" + } + }, + "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": "CIIJEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_lE4NbsUTxOp-ErC5U6XYBc6GCtnxW-_hc" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CIIJEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/A7vn1lRCITZikPIh5Zk3YCbNycTJ3LKXSXtDhNKwC4ggUSbjj2xdWz1R_nw8uNYlGLC5PMBvnYGGg9U=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/A7vn1lRCITZikPIh5Zk3YCbNycTJ3LKXSXtDhNKwC4ggUSbjj2xdWz1R_nw8uNYlGLC5PMBvnYGGg9U=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CJAJEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_3FUHECndc2a", + "params": "ggMrGilPTEFLNXV5X2xFNE5ic1VUeE9wLUVyQzVVNlhZQmM2R0N0bnhXLV9oYw%3D%3D" + }, + "clickTrackingParams": "CIEJEKCzAhgdIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "2step (feat. Ellinoora)" + } + ] + }, + "trackingParams": "CIEJEKCzAhgdIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CP8IEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_luzTYGdeog0zgnn7Ahp1lL0b7BNtJQ2WM" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CP8IEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CP4IEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_luzTYGdeog0zgnn7Ahp1lL0b7BNtJQ2WM" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CP4IEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPwIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CP0IEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CPwIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CPwIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_luzTYGdeog0zgnn7Ahp1lL0b7BNtJQ2WM" + } + }, + "playlistId": "OLAK5uy_luzTYGdeog0zgnn7Ahp1lL0b7BNtJQ2WM" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CPwIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPoIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CPsIEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CPoIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CPoIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_luzTYGdeog0zgnn7Ahp1lL0b7BNtJQ2WM" + } + }, + "playlistId": "OLAK5uy_luzTYGdeog0zgnn7Ahp1lL0b7BNtJQ2WM" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CPoIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CPgIEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CPkIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CPkIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CPgIEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_luzTYGdeog0zgnn7Ahp1lL0b7BNtJQ2WM" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CPgIEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPYIEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CPcIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CPcIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CPYIEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CPUIEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CPUIEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPQIEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2x1elRZR2Rlb2cwemdubjdBaHAxbEwwYjdCTnRKUTJXTQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CPQIEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CPMIEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_vAwX0OZKnX7", + "params": "ggMrGilPTEFLNXV5X2x1elRZR2Rlb2cwemdubjdBaHAxbEwwYjdCTnRKUTJXTQ%3D%3D" + }, + "clickTrackingParams": "CPEIEKCzAhgeIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2022" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause 2step" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play 2step" + } + }, + "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": "CPIIEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_luzTYGdeog0zgnn7Ahp1lL0b7BNtJQ2WM" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CPIIEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/MbgnltzC1SLK_QN4Vvsxek_ZQrHNu-Vpztca6zv6s_u5kQRLIvZfo4BdiJXMYwByfr7zsb5pY_iFJ7R9=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/MbgnltzC1SLK_QN4Vvsxek_ZQrHNu-Vpztca6zv6s_u5kQRLIvZfo4BdiJXMYwByfr7zsb5pY_iFJ7R9=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CIAJEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_vAwX0OZKnX7", + "params": "ggMrGilPTEFLNXV5X2x1elRZR2Rlb2cwemdubjdBaHAxbEwwYjdCTnRKUTJXTQ%3D%3D" + }, + "clickTrackingParams": "CPEIEKCzAhgeIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "2step (feat. Antytila)" + } + ] + }, + "trackingParams": "CPEIEKCzAhgeIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CO8IEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_lHNJZJMBdGb1HBJLk8GgBHk5DC0ez3178" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CO8IEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CO4IEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_lHNJZJMBdGb1HBJLk8GgBHk5DC0ez3178" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CO4IEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "COwIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CO0IEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "COwIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "COwIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lHNJZJMBdGb1HBJLk8GgBHk5DC0ez3178" + } + }, + "playlistId": "OLAK5uy_lHNJZJMBdGb1HBJLk8GgBHk5DC0ez3178" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "COwIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "COoIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "COsIEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "COoIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "COoIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lHNJZJMBdGb1HBJLk8GgBHk5DC0ez3178" + } + }, + "playlistId": "OLAK5uy_lHNJZJMBdGb1HBJLk8GgBHk5DC0ez3178" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "COoIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "COgIEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "COkIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "COkIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "COgIEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_lHNJZJMBdGb1HBJLk8GgBHk5DC0ez3178" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "COgIEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "COYIEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "COcIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "COcIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "COYIEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "COUIEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "COUIEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "COQIEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2xITkpaSk1CZEdiMUhCSkxrOEdnQkhrNURDMGV6MzE3OA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "COQIEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "COMIEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_ioGm3BL3ySK", + "params": "ggMrGilPTEFLNXV5X2xITkpaSk1CZEdiMUhCSkxrOEdnQkhrNURDMGV6MzE3OA%3D%3D" + }, + "clickTrackingParams": "COEIEKCzAhgfIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2022" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause 2step" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play 2step" + } + }, + "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": "COIIEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_lHNJZJMBdGb1HBJLk8GgBHk5DC0ez3178" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "COIIEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/6LnHhPxiVTyaBFYW8LFT5-dQT_njrrp-pdRMwpRVawyZ6bZdxNSRJFIaD79GlOZR73ycHIxC6t6YYfe2vg=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/6LnHhPxiVTyaBFYW8LFT5-dQT_njrrp-pdRMwpRVawyZ6bZdxNSRJFIaD79GlOZR73ycHIxC6t6YYfe2vg=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CPAIEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_ioGm3BL3ySK", + "params": "ggMrGilPTEFLNXV5X2xITkpaSk1CZEdiMUhCSkxrOEdnQkhrNURDMGV6MzE3OA%3D%3D" + }, + "clickTrackingParams": "COEIEKCzAhgfIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "2step (feat. Lil Baby)" + } + ] + }, + "trackingParams": "COEIEKCzAhgfIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CN8IEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_kpuuUpxiEBtg6MgTry-gkYbiIO_DFmnfk" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CN8IEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CN4IEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_kpuuUpxiEBtg6MgTry-gkYbiIO_DFmnfk" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CN4IEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNwIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CN0IEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CNwIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNwIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_kpuuUpxiEBtg6MgTry-gkYbiIO_DFmnfk" + } + }, + "playlistId": "OLAK5uy_kpuuUpxiEBtg6MgTry-gkYbiIO_DFmnfk" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CNwIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNoIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CNsIEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CNoIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNoIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_kpuuUpxiEBtg6MgTry-gkYbiIO_DFmnfk" + } + }, + "playlistId": "OLAK5uy_kpuuUpxiEBtg6MgTry-gkYbiIO_DFmnfk" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CNoIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CNgIEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CNkIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CNkIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CNgIEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_kpuuUpxiEBtg6MgTry-gkYbiIO_DFmnfk" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CNgIEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNYIEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CNcIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CNcIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CNYIEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCWw-Guyr5ul9B-d5kJlHMng" + }, + "clickTrackingParams": "CNUIEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CNUIEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNQIEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2twdXVVcHhpRUJ0ZzZNZ1RyeS1na1liaUlPX0RGbW5maw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CNQIEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CNMIEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_v3DEYsmUQiP", + "params": "ggMrGilPTEFLNXV5X2twdXVVcHhpRUJ0ZzZNZ1RyeS1na1liaUlPX0RGbW5maw%3D%3D" + }, + "clickTrackingParams": "CNAIEKCzAhggIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2022" + } + ] + }, + "subtitleBadges": [ + { + "musicInlineBadgeRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + }, + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "trackingParams": "CNEIEKHtAhgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Sigue/Forever My Love" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Sigue/Forever My Love" + } + }, + "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": "CNIIEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_kpuuUpxiEBtg6MgTry-gkYbiIO_DFmnfk" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CNIIEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/hGPwV5FzDhPFRrdcI6dOyxbPdEaAsLovb5SrHbSjWDhF7U7cYJABPLAi3nqYpYFYlSZdR1lWk-cngFJW=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/hGPwV5FzDhPFRrdcI6dOyxbPdEaAsLovb5SrHbSjWDhF7U7cYJABPLAi3nqYpYFYlSZdR1lWk-cngFJW=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "COAIEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_v3DEYsmUQiP", + "params": "ggMrGilPTEFLNXV5X2twdXVVcHhpRUJ0ZzZNZ1RyeS1na1liaUlPX0RGbW5maw%3D%3D" + }, + "clickTrackingParams": "CNAIEKCzAhggIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "Sigue/Forever My Love" + } + ] + }, + "trackingParams": "CNAIEKCzAhggIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CM4IEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_nBeBaK9NMO2W46tFlN3ASUeGb8Dz7wb8E" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CM4IEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CM0IEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_nBeBaK9NMO2W46tFlN3ASUeGb8Dz7wb8E" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CM0IEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMsIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CMwIEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CMsIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMsIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nBeBaK9NMO2W46tFlN3ASUeGb8Dz7wb8E" + } + }, + "playlistId": "OLAK5uy_nBeBaK9NMO2W46tFlN3ASUeGb8Dz7wb8E" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CMsIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMkIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CMoIEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CMkIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMkIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nBeBaK9NMO2W46tFlN3ASUeGb8Dz7wb8E" + } + }, + "playlistId": "OLAK5uy_nBeBaK9NMO2W46tFlN3ASUeGb8Dz7wb8E" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CMkIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CMcIEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CMgIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CMgIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CMcIEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_nBeBaK9NMO2W46tFlN3ASUeGb8Dz7wb8E" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CMcIEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMUIEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CMYIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CMYIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CMUIEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCt7KNkaOhBpesOJHMx2ASnw" + }, + "clickTrackingParams": "CMQIEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CMQIEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMMIEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X25CZUJhSzlOTU8yVzQ2dEZsTjNBU1VlR2I4RHo3d2I4RQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CMMIEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CMIIEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_649GGrRZiU0", + "params": "ggMrGilPTEFLNXV5X25CZUJhSzlOTU8yVzQ2dEZsTjNBU1VlR2I4RHo3d2I4RQ%3D%3D" + }, + "clickTrackingParams": "CL8IEKCzAhghIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2022" + } + ] + }, + "subtitleBadges": [ + { + "musicInlineBadgeRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + }, + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "trackingParams": "CMAIEKHtAhgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], @@ -32491,7 +15762,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -32499,7 +15770,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CNkDEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CMEIEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_nBeBaK9NMO2W46tFlN3ASUeGb8Dz7wb8E" } @@ -32508,7 +15779,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CNkDEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CMEIEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -32533,7 +15804,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "COcDEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CM8IEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -32549,13 +15820,13 @@ "browseId": "MPREb_649GGrRZiU0", "params": "ggMrGilPTEFLNXV5X25CZUJhSzlOTU8yVzQ2dEZsTjNBU1VlR2I4RHo3d2I4RQ%3D%3D" }, - "clickTrackingParams": "CNcDEKCzAhhHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CL8IEKCzAhghIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Peru (R3HAB Remix)" } ] }, - "trackingParams": "CNcDEKCzAhhHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CL8IEKCzAhghIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -32575,10 +15846,10 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CNUDEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CL0IEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_mOHcRRRc5FLMl4rcdC-Tv0XoBz1J8lEQU" + "playlistId": "OLAK5uy_kC5H2pfmM8GyH5ZO0iLnPNgPrfaNnuClg" } }, "text": { @@ -32588,7 +15859,7 @@ } ] }, - "trackingParams": "CNUDEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CL0IEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -32597,10 +15868,10 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CNQDEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLwIEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_mOHcRRRc5FLMl4rcdC-Tv0XoBz1J8lEQU" + "playlistId": "RDAMPLOLAK5uy_kC5H2pfmM8GyH5ZO0iLnPNgPrfaNnuClg" } }, "text": { @@ -32610,7 +15881,7 @@ } ] }, - "trackingParams": "CNQDEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLwIEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -32619,7 +15890,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CNIDEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLoIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -32633,16 +15904,22 @@ } ] }, - "trackingParams": "CNMDEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CLsIEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CNIDEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CLoIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { - "playlistId": "OLAK5uy_mOHcRRRc5FLMl4rcdC-Tv0XoBz1J8lEQU" + "onEmptyQueue": { + "clickTrackingParams": "CLoIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_kC5H2pfmM8GyH5ZO0iLnPNgPrfaNnuClg" + } + }, + "playlistId": "OLAK5uy_kC5H2pfmM8GyH5ZO0iLnPNgPrfaNnuClg" } } }, @@ -32653,7 +15930,7 @@ } ] }, - "trackingParams": "CNIDEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLoIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -32662,7 +15939,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CNADEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLgIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -32676,16 +15953,22 @@ } ] }, - "trackingParams": "CNEDEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CLkIEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CNADEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CLgIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { - "playlistId": "OLAK5uy_mOHcRRRc5FLMl4rcdC-Tv0XoBz1J8lEQU" + "onEmptyQueue": { + "clickTrackingParams": "CLgIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_kC5H2pfmM8GyH5ZO0iLnPNgPrfaNnuClg" + } + }, + "playlistId": "OLAK5uy_kC5H2pfmM8GyH5ZO0iLnPNgPrfaNnuClg" } } }, @@ -32696,7 +15979,7 @@ } ] }, - "trackingParams": "CNADEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLgIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -32705,7 +15988,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CM4DEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLYIEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -32713,7 +15996,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CM8DEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLcIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -32726,13 +16009,13 @@ } ] }, - "trackingParams": "CM8DEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLcIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -32750,7 +16033,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -32758,11 +16041,11 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CM4DEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLYIEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { - "playlistId": "OLAK5uy_mOHcRRRc5FLMl4rcdC-Tv0XoBz1J8lEQU" + "playlistId": "OLAK5uy_kC5H2pfmM8GyH5ZO0iLnPNgPrfaNnuClg" } } }, @@ -32773,7 +16056,7 @@ } ] }, - "trackingParams": "CM4DEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLYIEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -32782,7 +16065,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CMwDEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLQIEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -32790,7 +16073,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CM0DEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLUIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -32803,7 +16086,7 @@ } ] }, - "trackingParams": "CM0DEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLUIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -32827,11 +16110,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CMwDEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLQIEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -32848,7 +16131,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CMsDEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CLMIEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -32857,7 +16140,7 @@ } ] }, - "trackingParams": "CMsDEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLMIEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -32866,7 +16149,3249 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CMoDEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLIIEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2tDNUgycGZtTThHeUg1Wk8waUxuUE5nUHJmYU5udUNsZw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CLIIEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CLEIEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_HJ6D0OWrWu8", + "params": "ggMrGilPTEFLNXV5X2tDNUgycGZtTThHeUg1Wk8waUxuUE5nUHJmYU5udUNsZw%3D%3D" + }, + "clickTrackingParams": "CK8IEKCzAhgiIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2022" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause The Joker And The Queen" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play The Joker And The Queen" + } + }, + "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": "CLAIEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_kC5H2pfmM8GyH5ZO0iLnPNgPrfaNnuClg" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CLAIEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/pLEDJWMWef2qcrk4eTYw3TdGOHv-6FwVHKsOalcOjVjv9-6udgaQRuIrAtyVwKEUDU_atkZ3haVpP35y=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/pLEDJWMWef2qcrk4eTYw3TdGOHv-6FwVHKsOalcOjVjv9-6udgaQRuIrAtyVwKEUDU_atkZ3haVpP35y=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CL4IEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_HJ6D0OWrWu8", + "params": "ggMrGilPTEFLNXV5X2tDNUgycGZtTThHeUg1Wk8waUxuUE5nUHJmYU5udUNsZw%3D%3D" + }, + "clickTrackingParams": "CK8IEKCzAhgiIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "The Joker And The Queen (feat. Taylor Swift)" + } + ] + }, + "trackingParams": "CK8IEKCzAhgiIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CK0IEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_mj6G38GAEs_UCdGlSf17VKKkDqsWliECc" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CK0IEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKwIEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_mj6G38GAEs_UCdGlSf17VKKkDqsWliECc" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CKwIEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKoIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CKsIEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CKoIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKoIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mj6G38GAEs_UCdGlSf17VKKkDqsWliECc" + } + }, + "playlistId": "OLAK5uy_mj6G38GAEs_UCdGlSf17VKKkDqsWliECc" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CKoIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKgIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CKkIEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CKgIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKgIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mj6G38GAEs_UCdGlSf17VKKkDqsWliECc" + } + }, + "playlistId": "OLAK5uy_mj6G38GAEs_UCdGlSf17VKKkDqsWliECc" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CKgIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CKYIEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CKcIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CKcIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CKYIEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_mj6G38GAEs_UCdGlSf17VKKkDqsWliECc" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CKYIEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKQIEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CKUIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CKUIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CKQIEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CKMIEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CKMIEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKIIEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X21qNkczOEdBRXNfVUNkR2xTZjE3VktLa0Rxc1dsaUVDYw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CKIIEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CKEIEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_EgeBXGLpMGc", + "params": "ggMrGilPTEFLNXV5X21qNkczOEdBRXNfVUNkR2xTZjE3VktLa0Rxc1dsaUVDYw%3D%3D" + }, + "clickTrackingParams": "CJ8IEKCzAhgjIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2022" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Bad Habits" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Bad Habits" + } + }, + "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": "CKAIEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_mj6G38GAEs_UCdGlSf17VKKkDqsWliECc" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CKAIEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/5BIb8pR1gnYL6Uce1dIXf_qfbhaflt8b6jqtglcDBTMGAMHNRXRXmetct588qPO8_ES7PKyQ4Ooaf6e5=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/5BIb8pR1gnYL6Uce1dIXf_qfbhaflt8b6jqtglcDBTMGAMHNRXRXmetct588qPO8_ES7PKyQ4Ooaf6e5=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CK4IEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_EgeBXGLpMGc", + "params": "ggMrGilPTEFLNXV5X21qNkczOEdBRXNfVUNkR2xTZjE3VktLa0Rxc1dsaUVDYw%3D%3D" + }, + "clickTrackingParams": "CJ8IEKCzAhgjIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "Bad Habits (feat. Bring Me The Horizon)" + } + ] + }, + "trackingParams": "CJ8IEKCzAhgjIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CJ0IEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_lIuGGOTXIZn7T8b89bOaG5V4esHMsPvF8" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CJ0IEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJwIEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_lIuGGOTXIZn7T8b89bOaG5V4esHMsPvF8" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CJwIEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJoIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CJsIEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CJoIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJoIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lIuGGOTXIZn7T8b89bOaG5V4esHMsPvF8" + } + }, + "playlistId": "OLAK5uy_lIuGGOTXIZn7T8b89bOaG5V4esHMsPvF8" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CJoIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJgIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CJkIEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CJgIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJgIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lIuGGOTXIZn7T8b89bOaG5V4esHMsPvF8" + } + }, + "playlistId": "OLAK5uy_lIuGGOTXIZn7T8b89bOaG5V4esHMsPvF8" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJgIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CJYIEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CJcIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CJcIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CJYIEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_lIuGGOTXIZn7T8b89bOaG5V4esHMsPvF8" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CJYIEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJQIEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CJUIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CJUIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CJQIEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCt7KNkaOhBpesOJHMx2ASnw" + }, + "clickTrackingParams": "CJMIEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CJMIEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJIIEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2xJdUdHT1RYSVpuN1Q4Yjg5Yk9hRzVWNGVzSE1zUHZGOA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJIIEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CJEIEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_bHPFexPbcaQ", + "params": "ggMrGilPTEFLNXV5X2xJdUdHT1RYSVpuN1Q4Yjg5Yk9hRzVWNGVzSE1zUHZGOA%3D%3D" + }, + "clickTrackingParams": "CI8IEKCzAhgkIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2022" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Peru (Acoustic)" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Peru (Acoustic)" + } + }, + "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": "CJAIEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_lIuGGOTXIZn7T8b89bOaG5V4esHMsPvF8" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CJAIEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/Cqe7HnB88KnbT8MFIDlpJUYexZDlh0ypHbLe1fklDOegYayTk5mabh88k40bJaY2D3X1wR51_6UMwdMKlA=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/Cqe7HnB88KnbT8MFIDlpJUYexZDlh0ypHbLe1fklDOegYayTk5mabh88k40bJaY2D3X1wR51_6UMwdMKlA=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CJ4IEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_bHPFexPbcaQ", + "params": "ggMrGilPTEFLNXV5X2xJdUdHT1RYSVpuN1Q4Yjg5Yk9hRzVWNGVzSE1zUHZGOA%3D%3D" + }, + "clickTrackingParams": "CI8IEKCzAhgkIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "Peru (Acoustic)" + } + ] + }, + "trackingParams": "CI8IEKCzAhgkIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CI0IEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_lSThrDcruQ76yOHkGqcVlv2NexyF6Tx4U" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CI0IEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIwIEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_lSThrDcruQ76yOHkGqcVlv2NexyF6Tx4U" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CIwIEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIoIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CIsIEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CIoIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIoIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lSThrDcruQ76yOHkGqcVlv2NexyF6Tx4U" + } + }, + "playlistId": "OLAK5uy_lSThrDcruQ76yOHkGqcVlv2NexyF6Tx4U" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CIoIEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIgIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CIkIEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CIgIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIgIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lSThrDcruQ76yOHkGqcVlv2NexyF6Tx4U" + } + }, + "playlistId": "OLAK5uy_lSThrDcruQ76yOHkGqcVlv2NexyF6Tx4U" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CIgIEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CIYIEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CIcIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CIcIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CIYIEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_lSThrDcruQ76yOHkGqcVlv2NexyF6Tx4U" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CIYIEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIQIEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CIUIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CIUIEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CIQIEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UCt7KNkaOhBpesOJHMx2ASnw" + }, + "clickTrackingParams": "CIMIEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CIMIEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIIIEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2xTVGhyRGNydVE3NnlPSGtHcWNWbHYyTmV4eUY2VHg0VQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CIIIEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CIEIEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_s08HjFDAlxz", + "params": "ggMrGilPTEFLNXV5X2xTVGhyRGNydVE3NnlPSGtHcWNWbHYyTmV4eUY2VHg0VQ%3D%3D" + }, + "clickTrackingParams": "CP4HEKCzAhglIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2021" + } + ] + }, + "subtitleBadges": [ + { + "musicInlineBadgeRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + }, + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "trackingParams": "CP8HEKHtAhgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Peru" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Peru" + } + }, + "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": "CIAIEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_lSThrDcruQ76yOHkGqcVlv2NexyF6Tx4U" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CIAIEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/elyB4oW8k2pIsK9-U0bLk2P2ityDphxSrhU6O_oIA0Wo8eXWKn_nMt4rni_mVHuaD5XhZh2rN4MzWvY=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/elyB4oW8k2pIsK9-U0bLk2P2ityDphxSrhU6O_oIA0Wo8eXWKn_nMt4rni_mVHuaD5XhZh2rN4MzWvY=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CI4IEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_s08HjFDAlxz", + "params": "ggMrGilPTEFLNXV5X2xTVGhyRGNydVE3NnlPSGtHcWNWbHYyTmV4eUY2VHg0VQ%3D%3D" + }, + "clickTrackingParams": "CP4HEKCzAhglIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "Peru" + } + ] + }, + "trackingParams": "CP4HEKCzAhglIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CPwHEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_n5x1UfCXdmo_0_oLGsBu1R2S7L3TxOEFg" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CPwHEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPsHEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_n5x1UfCXdmo_0_oLGsBu1R2S7L3TxOEFg" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CPsHEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CPoHEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CPkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CPkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_n5x1UfCXdmo_0_oLGsBu1R2S7L3TxOEFg" + } + }, + "playlistId": "OLAK5uy_n5x1UfCXdmo_0_oLGsBu1R2S7L3TxOEFg" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CPkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CPgHEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CPcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CPcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_n5x1UfCXdmo_0_oLGsBu1R2S7L3TxOEFg" + } + }, + "playlistId": "OLAK5uy_n5x1UfCXdmo_0_oLGsBu1R2S7L3TxOEFg" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CPcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CPUHEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CPYHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CPYHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CPUHEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_n5x1UfCXdmo_0_oLGsBu1R2S7L3TxOEFg" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CPUHEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPMHEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CPQHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CPQHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CPMHEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CPIHEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CPIHEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPEHEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X241eDFVZkNYZG1vXzBfb0xHc0J1MVIyUzdMM1R4T0VGZw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CPEHEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CPAHEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_iqH9DbCR9jY", + "params": "ggMrGilPTEFLNXV5X241eDFVZkNYZG1vXzBfb0xHc0J1MVIyUzdMM1R4T0VGZw%3D%3D" + }, + "clickTrackingParams": "CO4HEKCzAhgmIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2021" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Merry Christmas" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Merry Christmas" + } + }, + "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": "CO8HEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_n5x1UfCXdmo_0_oLGsBu1R2S7L3TxOEFg" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CO8HEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/VpmQC3j7sbL3UEpF9LgYP-V-MXpnyF4gAp4VlrEOa_PlFNQLVLNGucwi4pd-hJiyDBANs8uwTZTh3sQ=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/VpmQC3j7sbL3UEpF9LgYP-V-MXpnyF4gAp4VlrEOa_PlFNQLVLNGucwi4pd-hJiyDBANs8uwTZTh3sQ=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CP0HEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_iqH9DbCR9jY", + "params": "ggMrGilPTEFLNXV5X241eDFVZkNYZG1vXzBfb0xHc0J1MVIyUzdMM1R4T0VGZw%3D%3D" + }, + "clickTrackingParams": "CO4HEKCzAhgmIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "Merry Christmas" + } + ] + }, + "trackingParams": "CO4HEKCzAhgmIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "COwHEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_nGTM4p2kLiG11h_9nACjV2x0Ze-cAkwJU" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "COwHEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "COsHEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_nGTM4p2kLiG11h_9nACjV2x0Ze-cAkwJU" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "COsHEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "COkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "COoHEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "COkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "COkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nGTM4p2kLiG11h_9nACjV2x0Ze-cAkwJU" + } + }, + "playlistId": "OLAK5uy_nGTM4p2kLiG11h_9nACjV2x0Ze-cAkwJU" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "COkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "COcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "COgHEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "COcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "COcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nGTM4p2kLiG11h_9nACjV2x0Ze-cAkwJU" + } + }, + "playlistId": "OLAK5uy_nGTM4p2kLiG11h_9nACjV2x0Ze-cAkwJU" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "COcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "COUHEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "COYHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "COYHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "COUHEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_nGTM4p2kLiG11h_9nACjV2x0Ze-cAkwJU" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "COUHEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "COMHEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "COQHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "COQHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "COMHEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "COIHEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "COIHEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "COEHEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X25HVE00cDJrTGlHMTFoXzluQUNqVjJ4MFplLWNBa3dKVQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "COEHEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "COAHEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_T7fhfjYuUNz", + "params": "ggMrGilPTEFLNXV5X25HVE00cDJrTGlHMTFoXzluQUNqVjJ4MFplLWNBa3dKVQ%3D%3D" + }, + "clickTrackingParams": "CN4HEKCzAhgnIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2021" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Shivers" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Shivers" + } + }, + "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": "CN8HEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_nGTM4p2kLiG11h_9nACjV2x0Ze-cAkwJU" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CN8HEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/At-f5WNNsE3sZX6zJyJiiSyma9dOFW8PGZeGleTQgTqJKDEMwHiOgxCn6U0He0yQ6aPlC0ezJkISf65X=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/At-f5WNNsE3sZX6zJyJiiSyma9dOFW8PGZeGleTQgTqJKDEMwHiOgxCn6U0He0yQ6aPlC0ezJkISf65X=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CO0HEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_T7fhfjYuUNz", + "params": "ggMrGilPTEFLNXV5X25HVE00cDJrTGlHMTFoXzluQUNqVjJ4MFplLWNBa3dKVQ%3D%3D" + }, + "clickTrackingParams": "CN4HEKCzAhgnIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "Shivers (feat. FEDUK & SLAVA MARLOW)" + } + ] + }, + "trackingParams": "CN4HEKCzAhgnIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CNwHEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_kORYaRgss_hk0gYjFnV2Z5mXkBej967AY" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CNwHEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNsHEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_kORYaRgss_hk0gYjFnV2Z5mXkBej967AY" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CNsHEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CNoHEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CNkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_kORYaRgss_hk0gYjFnV2Z5mXkBej967AY" + } + }, + "playlistId": "OLAK5uy_kORYaRgss_hk0gYjFnV2Z5mXkBej967AY" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CNkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CNgHEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CNcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_kORYaRgss_hk0gYjFnV2Z5mXkBej967AY" + } + }, + "playlistId": "OLAK5uy_kORYaRgss_hk0gYjFnV2Z5mXkBej967AY" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CNcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CNUHEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CNYHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CNYHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CNUHEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_kORYaRgss_hk0gYjFnV2Z5mXkBej967AY" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CNUHEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNMHEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CNQHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CNQHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CNMHEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CNIHEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CNIHEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNEHEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2tPUllhUmdzc19oazBnWWpGblYyWjVtWGtCZWo5NjdBWQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CNEHEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CNAHEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_r4N9aqbEyO6", + "params": "ggMrGilPTEFLNXV5X2tPUllhUmdzc19oazBnWWpGblYyWjVtWGtCZWo5NjdBWQ%3D%3D" + }, + "clickTrackingParams": "CM4HEKCzAhgoIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2021" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Shivers" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Shivers" + } + }, + "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": "CM8HEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_kORYaRgss_hk0gYjFnV2Z5mXkBej967AY" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CM8HEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/SgWHuAj4XcBOBKzW-55QLrPSYqhUAzjZgC_B69UwG9JZ87k2mZGNngNKOR_3KW1rAUxzFl0xMSLYZNGaSg=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/SgWHuAj4XcBOBKzW-55QLrPSYqhUAzjZgC_B69UwG9JZ87k2mZGNngNKOR_3KW1rAUxzFl0xMSLYZNGaSg=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CN0HEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_r4N9aqbEyO6", + "params": "ggMrGilPTEFLNXV5X2tPUllhUmdzc19oazBnWWpGblYyWjVtWGtCZWo5NjdBWQ%3D%3D" + }, + "clickTrackingParams": "CM4HEKCzAhgoIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "Shivers (feat. Jessi & SUNMI)" + } + ] + }, + "trackingParams": "CM4HEKCzAhgoIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CMwHEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_mOHcRRRc5FLMl4rcdC-Tv0XoBz1J8lEQU" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CMwHEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMsHEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_mOHcRRRc5FLMl4rcdC-Tv0XoBz1J8lEQU" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CMsHEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CMoHEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CMkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mOHcRRRc5FLMl4rcdC-Tv0XoBz1J8lEQU" + } + }, + "playlistId": "OLAK5uy_mOHcRRRc5FLMl4rcdC-Tv0XoBz1J8lEQU" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CMkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CMgHEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CMcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mOHcRRRc5FLMl4rcdC-Tv0XoBz1J8lEQU" + } + }, + "playlistId": "OLAK5uy_mOHcRRRc5FLMl4rcdC-Tv0XoBz1J8lEQU" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CMcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CMUHEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CMYHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CMYHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CMUHEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_mOHcRRRc5FLMl4rcdC-Tv0XoBz1J8lEQU" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CMUHEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMMHEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CMQHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CMQHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CMMHEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CMIHEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CMIHEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMEHEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X21PSGNSUlJjNUZMTWw0cmNkQy1UdjBYb0J6MUo4bEVRVQ%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -32879,11 +19404,11 @@ } ] }, - "trackingParams": "CMoDEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMEHEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CMkDEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMAHEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -32896,7 +19421,7 @@ "browseId": "MPREb_sJFtpMCXgWS", "params": "ggMrGilPTEFLNXV5X21PSGNSUlJjNUZMTWw0cmNkQy1UdjBYb0J6MUo4bEVRVQ%3D%3D" }, - "clickTrackingParams": "CMcDEKCzAhhIIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CL4HEKCzAhgpIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -32940,7 +19465,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -32948,7 +19473,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CMgDEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CL8HEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_mOHcRRRc5FLMl4rcdC-Tv0XoBz1J8lEQU" } @@ -32957,7 +19482,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CMgDEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CL8HEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -32982,7 +19507,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CNYDEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CM0HEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -32998,13 +19523,13 @@ "browseId": "MPREb_sJFtpMCXgWS", "params": "ggMrGilPTEFLNXV5X21PSGNSUlJjNUZMTWw0cmNkQy1UdjBYb0J6MUo4bEVRVQ%3D%3D" }, - "clickTrackingParams": "CMcDEKCzAhhIIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CL4HEKCzAhgpIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Overpass Graffiti (Alle Farben Remix)" } ] }, - "trackingParams": "CMcDEKCzAhhIIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CL4HEKCzAhgpIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -33024,7 +19549,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CMUDEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLwHEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_mzGrpWzuE5Pc5q4H5MnHS0b-nYHcpfDA4" @@ -33037,7 +19562,7 @@ } ] }, - "trackingParams": "CMUDEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLwHEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -33046,7 +19571,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CMQDEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLsHEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_mzGrpWzuE5Pc5q4H5MnHS0b-nYHcpfDA4" @@ -33059,7 +19584,7 @@ } ] }, - "trackingParams": "CMQDEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLsHEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -33068,7 +19593,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CMIDEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -33082,15 +19607,21 @@ } ] }, - "trackingParams": "CMMDEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CLoHEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CMIDEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CLkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CLkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mzGrpWzuE5Pc5q4H5MnHS0b-nYHcpfDA4" + } + }, "playlistId": "OLAK5uy_mzGrpWzuE5Pc5q4H5MnHS0b-nYHcpfDA4" } } @@ -33102,7 +19633,7 @@ } ] }, - "trackingParams": "CMIDEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -33111,7 +19642,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CMADEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -33125,15 +19656,21 @@ } ] }, - "trackingParams": "CMEDEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CLgHEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CMADEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CLcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CLcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mzGrpWzuE5Pc5q4H5MnHS0b-nYHcpfDA4" + } + }, "playlistId": "OLAK5uy_mzGrpWzuE5Pc5q4H5MnHS0b-nYHcpfDA4" } } @@ -33145,7 +19682,7 @@ } ] }, - "trackingParams": "CMADEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -33154,7 +19691,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CL4DEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLUHEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -33162,7 +19699,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CL8DEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLYHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -33175,13 +19712,13 @@ } ] }, - "trackingParams": "CL8DEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLYHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -33199,7 +19736,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -33207,7 +19744,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CL4DEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLUHEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -33222,7 +19759,7 @@ } ] }, - "trackingParams": "CL4DEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLUHEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -33231,7 +19768,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CLwDEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLMHEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -33239,7 +19776,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CL0DEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLQHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -33252,7 +19789,7 @@ } ] }, - "trackingParams": "CL0DEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLQHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -33276,11 +19813,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CLwDEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLMHEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -33297,7 +19834,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CLsDEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CLIHEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -33306,7 +19843,7 @@ } ] }, - "trackingParams": "CLsDEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLIHEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -33315,7 +19852,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CLoDEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLEHEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X216R3JwV3p1RTVQYzVxNEg1TW5IUzBiLW5ZSGNwZkRBNA%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -33328,11 +19865,11 @@ } ] }, - "trackingParams": "CLoDEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLEHEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CLkDEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLAHEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -33345,7 +19882,7 @@ "browseId": "MPREb_ci2D8VHb66c", "params": "ggMrGilPTEFLNXV5X216R3JwV3p1RTVQYzVxNEg1TW5IUzBiLW5ZSGNwZkRBNA%3D%3D" }, - "clickTrackingParams": "CLcDEKCzAhhJIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CK4HEKCzAhgqIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -33389,7 +19926,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -33397,7 +19934,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CLgDEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CK8HEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_mzGrpWzuE5Pc5q4H5MnHS0b-nYHcpfDA4" } @@ -33406,7 +19943,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CLgDEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CK8HEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -33431,7 +19968,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CMYDEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CL0HEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -33447,13 +19984,13 @@ "browseId": "MPREb_ci2D8VHb66c", "params": "ggMrGilPTEFLNXV5X216R3JwV3p1RTVQYzVxNEg1TW5IUzBiLW5ZSGNwZkRBNA%3D%3D" }, - "clickTrackingParams": "CLcDEKCzAhhJIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CK4HEKCzAhgqIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Overpass Graffiti (TCTS Remix)" } ] }, - "trackingParams": "CLcDEKCzAhhJIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CK4HEKCzAhgqIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -33473,7 +20010,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CLUDEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CKwHEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_njnibarDdmRi_cxYdRtRQDQGWG8DmiYgM" @@ -33486,7 +20023,7 @@ } ] }, - "trackingParams": "CLUDEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKwHEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -33495,7 +20032,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CLQDEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CKsHEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_njnibarDdmRi_cxYdRtRQDQGWG8DmiYgM" @@ -33508,7 +20045,7 @@ } ] }, - "trackingParams": "CLQDEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKsHEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -33517,7 +20054,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CLIDEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CKkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -33531,15 +20068,21 @@ } ] }, - "trackingParams": "CLMDEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CKoHEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CLIDEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CKkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_njnibarDdmRi_cxYdRtRQDQGWG8DmiYgM" + } + }, "playlistId": "OLAK5uy_njnibarDdmRi_cxYdRtRQDQGWG8DmiYgM" } } @@ -33551,7 +20094,7 @@ } ] }, - "trackingParams": "CLIDEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -33560,7 +20103,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CLADEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CKcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -33574,15 +20117,21 @@ } ] }, - "trackingParams": "CLEDEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CKgHEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CLADEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CKcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_njnibarDdmRi_cxYdRtRQDQGWG8DmiYgM" + } + }, "playlistId": "OLAK5uy_njnibarDdmRi_cxYdRtRQDQGWG8DmiYgM" } } @@ -33594,7 +20143,7 @@ } ] }, - "trackingParams": "CLADEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -33603,7 +20152,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CK4DEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CKUHEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -33611,7 +20160,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CK8DEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CKYHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -33624,13 +20173,13 @@ } ] }, - "trackingParams": "CK8DEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKYHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -33648,7 +20197,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -33656,7 +20205,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CK4DEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CKUHEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -33671,7 +20220,7 @@ } ] }, - "trackingParams": "CK4DEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKUHEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -33680,7 +20229,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CKwDEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CKMHEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -33688,7 +20237,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CK0DEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CKQHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -33701,7 +20250,7 @@ } ] }, - "trackingParams": "CK0DEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKQHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -33725,11 +20274,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CKwDEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKMHEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -33746,7 +20295,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CKsDEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CKIHEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -33755,7 +20304,7 @@ } ] }, - "trackingParams": "CKsDEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKIHEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -33764,7 +20313,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CKoDEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CKEHEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X25qbmliYXJEZG1SaV9jeFlkUnRSUURRR1dHOERtaVlnTQ%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -33777,11 +20326,11 @@ } ] }, - "trackingParams": "CKoDEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKEHEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CKkDEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKAHEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -33794,7 +20343,7 @@ "browseId": "MPREb_ItGTmOYYFTh", "params": "ggMrGilPTEFLNXV5X25qbmliYXJEZG1SaV9jeFlkUnRSUURRR1dHOERtaVlnTQ%3D%3D" }, - "clickTrackingParams": "CKcDEKCzAhhKIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CJ4HEKCzAhgrIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -33838,7 +20387,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -33846,7 +20395,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CKgDEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CJ8HEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_njnibarDdmRi_cxYdRtRQDQGWG8DmiYgM" } @@ -33855,7 +20404,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CKgDEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CJ8HEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -33880,7 +20429,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CLYDEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CK0HEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -33896,13 +20445,13 @@ "browseId": "MPREb_ItGTmOYYFTh", "params": "ggMrGilPTEFLNXV5X25qbmliYXJEZG1SaV9jeFlkUnRSUURRR1dHOERtaVlnTQ%3D%3D" }, - "clickTrackingParams": "CKcDEKCzAhhKIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CJ4HEKCzAhgrIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Shivers (Dillon Francis Remix)" } ] }, - "trackingParams": "CKcDEKCzAhhKIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJ4HEKCzAhgrIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -33922,7 +20471,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CKUDEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CJwHEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_lCL3oeI3JOzKl1sMdI4PByXsgxtGd7cE0" @@ -33935,7 +20484,7 @@ } ] }, - "trackingParams": "CKUDEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJwHEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -33944,7 +20493,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CKQDEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CJsHEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_lCL3oeI3JOzKl1sMdI4PByXsgxtGd7cE0" @@ -33957,7 +20506,7 @@ } ] }, - "trackingParams": "CKQDEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJsHEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -33966,7 +20515,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CKIDEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CJkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -33980,15 +20529,21 @@ } ] }, - "trackingParams": "CKMDEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CJoHEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CKIDEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CJkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lCL3oeI3JOzKl1sMdI4PByXsgxtGd7cE0" + } + }, "playlistId": "OLAK5uy_lCL3oeI3JOzKl1sMdI4PByXsgxtGd7cE0" } } @@ -34000,7 +20555,7 @@ } ] }, - "trackingParams": "CKIDEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -34009,7 +20564,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CKADEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CJcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -34023,15 +20578,21 @@ } ] }, - "trackingParams": "CKEDEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CJgHEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CKADEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CJcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lCL3oeI3JOzKl1sMdI4PByXsgxtGd7cE0" + } + }, "playlistId": "OLAK5uy_lCL3oeI3JOzKl1sMdI4PByXsgxtGd7cE0" } } @@ -34043,7 +20604,7 @@ } ] }, - "trackingParams": "CKADEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -34052,7 +20613,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CJ4DEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CJUHEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -34060,7 +20621,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CJ8DEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CJYHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -34073,13 +20634,13 @@ } ] }, - "trackingParams": "CJ8DEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJYHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -34097,7 +20658,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -34105,7 +20666,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CJ4DEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CJUHEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -34120,7 +20681,7 @@ } ] }, - "trackingParams": "CJ4DEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJUHEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -34129,7 +20690,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CJwDEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CJMHEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -34137,7 +20698,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CJ0DEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CJQHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -34150,7 +20711,7 @@ } ] }, - "trackingParams": "CJ0DEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJQHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -34174,11 +20735,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CJwDEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJMHEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -34195,7 +20756,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CJsDEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CJIHEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -34204,7 +20765,7 @@ } ] }, - "trackingParams": "CJsDEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJIHEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -34213,7 +20774,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CJoDEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CJEHEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X2xDTDNvZUkzSk96S2wxc01kSTRQQnlYc2d4dEdkN2NFMA%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -34226,11 +20787,11 @@ } ] }, - "trackingParams": "CJoDEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJEHEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CJkDEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJAHEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -34243,7 +20804,7 @@ "browseId": "MPREb_3TFM1Pn7Wnb", "params": "ggMrGilPTEFLNXV5X2xDTDNvZUkzSk96S2wxc01kSTRQQnlYc2d4dEdkN2NFMA%3D%3D" }, - "clickTrackingParams": "CJcDEKCzAhhLIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CI4HEKCzAhgsIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -34287,7 +20848,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -34295,7 +20856,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CJgDEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CI8HEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_lCL3oeI3JOzKl1sMdI4PByXsgxtGd7cE0" } @@ -34304,7 +20865,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CJgDEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CI8HEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -34329,7 +20890,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CKYDEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CJ0HEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -34345,13 +20906,13 @@ "browseId": "MPREb_3TFM1Pn7Wnb", "params": "ggMrGilPTEFLNXV5X2xDTDNvZUkzSk96S2wxc01kSTRQQnlYc2d4dEdkN2NFMA%3D%3D" }, - "clickTrackingParams": "CJcDEKCzAhhLIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CI4HEKCzAhgsIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Shivers (Heavy-K Remix)" } ] }, - "trackingParams": "CJcDEKCzAhhLIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CI4HEKCzAhgsIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -34371,10 +20932,10 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CJUDEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIwHEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_m2N4ELCG4nug9nDB_tD5-JjGNjxUEeT94" + "playlistId": "OLAK5uy_nHdqIgO1TNI8wr_GPvq1X7oUSMxvFU4Jw" } }, "text": { @@ -34384,7 +20945,7 @@ } ] }, - "trackingParams": "CJUDEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIwHEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -34393,10 +20954,10 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CJQDEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIsHEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_m2N4ELCG4nug9nDB_tD5-JjGNjxUEeT94" + "playlistId": "RDAMPLOLAK5uy_nHdqIgO1TNI8wr_GPvq1X7oUSMxvFU4Jw" } }, "text": { @@ -34406,7 +20967,7 @@ } ] }, - "trackingParams": "CJQDEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIsHEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -34415,7 +20976,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CJIDEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -34429,16 +20990,22 @@ } ] }, - "trackingParams": "CJMDEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CIoHEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CJIDEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CIkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { - "playlistId": "OLAK5uy_m2N4ELCG4nug9nDB_tD5-JjGNjxUEeT94" + "onEmptyQueue": { + "clickTrackingParams": "CIkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nHdqIgO1TNI8wr_GPvq1X7oUSMxvFU4Jw" + } + }, + "playlistId": "OLAK5uy_nHdqIgO1TNI8wr_GPvq1X7oUSMxvFU4Jw" } } }, @@ -34449,7 +21016,7 @@ } ] }, - "trackingParams": "CJIDEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIkHEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -34458,7 +21025,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CJADEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -34472,16 +21039,22 @@ } ] }, - "trackingParams": "CJEDEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CIgHEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CJADEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CIcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { - "playlistId": "OLAK5uy_m2N4ELCG4nug9nDB_tD5-JjGNjxUEeT94" + "onEmptyQueue": { + "clickTrackingParams": "CIcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nHdqIgO1TNI8wr_GPvq1X7oUSMxvFU4Jw" + } + }, + "playlistId": "OLAK5uy_nHdqIgO1TNI8wr_GPvq1X7oUSMxvFU4Jw" } } }, @@ -34492,7 +21065,7 @@ } ] }, - "trackingParams": "CJADEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIcHEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -34501,7 +21074,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CI4DEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIUHEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -34509,7 +21082,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CI8DEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIYHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -34522,13 +21095,13 @@ } ] }, - "trackingParams": "CI8DEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIYHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -34546,7 +21119,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -34554,11 +21127,11 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CI4DEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIUHEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { - "playlistId": "OLAK5uy_m2N4ELCG4nug9nDB_tD5-JjGNjxUEeT94" + "playlistId": "OLAK5uy_nHdqIgO1TNI8wr_GPvq1X7oUSMxvFU4Jw" } } }, @@ -34569,7 +21142,7 @@ } ] }, - "trackingParams": "CI4DEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIUHEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -34578,7 +21151,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CIwDEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIMHEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -34586,7 +21159,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CI0DEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIQHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -34599,7 +21172,7 @@ } ] }, - "trackingParams": "CI0DEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIQHEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -34623,11 +21196,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CIwDEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIMHEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -34644,7 +21217,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CIsDEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CIIHEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -34653,7 +21226,7 @@ } ] }, - "trackingParams": "CIsDEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIIHEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -34662,7 +21235,468 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CIoDEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIEHEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X25IZHFJZ08xVE5JOHdyX0dQdnExWDdvVVNNeHZGVTRKdw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CIEHEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CIAHEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_k3zSCIhuy8Z", + "params": "ggMrGilPTEFLNXV5X25IZHFJZ08xVE5JOHdyX0dQdnExWDdvVVNNeHZGVTRKdw%3D%3D" + }, + "clickTrackingParams": "CP4GEKCzAhgtIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Album" + }, + { + "text": " • " + }, + { + "text": "2021" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause =" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play =" + } + }, + "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": "CP8GEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_nHdqIgO1TNI8wr_GPvq1X7oUSMxvFU4Jw" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CP8GEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/thG9CVPO7TNRjN46ACoToQvAcBnSUN5wdD849PHg-7zoFRpB2c6GbHOPJ8FntFQc2_NxteEeNoW6p_c=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/thG9CVPO7TNRjN46ACoToQvAcBnSUN5wdD849PHg-7zoFRpB2c6GbHOPJ8FntFQc2_NxteEeNoW6p_c=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CI0HEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_k3zSCIhuy8Z", + "params": "ggMrGilPTEFLNXV5X25IZHFJZ08xVE5JOHdyX0dQdnExWDdvVVNNeHZGVTRKdw%3D%3D" + }, + "clickTrackingParams": "CP4GEKCzAhgtIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "=" + } + ] + }, + "trackingParams": "CP4GEKCzAhgtIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CPwGEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_m2N4ELCG4nug9nDB_tD5-JjGNjxUEeT94" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CPwGEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPsGEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_m2N4ELCG4nug9nDB_tD5-JjGNjxUEeT94" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CPsGEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CPoGEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CPkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CPkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_m2N4ELCG4nug9nDB_tD5-JjGNjxUEeT94" + } + }, + "playlistId": "OLAK5uy_m2N4ELCG4nug9nDB_tD5-JjGNjxUEeT94" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CPkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CPgGEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CPcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CPcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_m2N4ELCG4nug9nDB_tD5-JjGNjxUEeT94" + } + }, + "playlistId": "OLAK5uy_m2N4ELCG4nug9nDB_tD5-JjGNjxUEeT94" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CPcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CPUGEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CPYGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CPYGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CPUGEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_m2N4ELCG4nug9nDB_tD5-JjGNjxUEeT94" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CPUGEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPMGEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CPQGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CPQGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CPMGEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CPIGEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CPIGEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPEGEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X20yTjRFTENHNG51ZzluREJfdEQ1LUpqR05qeFVFZVQ5NA%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -34675,11 +21709,11 @@ } ] }, - "trackingParams": "CIoDEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPEGEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CIkDEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPAGEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -34692,7 +21726,7 @@ "browseId": "MPREb_vgEs2FwtTAB", "params": "ggMrGilPTEFLNXV5X20yTjRFTENHNG51ZzluREJfdEQ1LUpqR05qeFVFZVQ5NA%3D%3D" }, - "clickTrackingParams": "CIcDEKCzAhhMIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CO4GEKCzAhguIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -34736,7 +21770,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -34744,7 +21778,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CIgDEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CO8GEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_m2N4ELCG4nug9nDB_tD5-JjGNjxUEeT94" } @@ -34753,7 +21787,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CIgDEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CO8GEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -34778,7 +21812,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CJYDEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CP0GEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -34794,13 +21828,13 @@ "browseId": "MPREb_vgEs2FwtTAB", "params": "ggMrGilPTEFLNXV5X20yTjRFTENHNG51ZzluREJfdEQ1LUpqR05qeFVFZVQ5NA%3D%3D" }, - "clickTrackingParams": "CIcDEKCzAhhMIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CO4GEKCzAhguIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Shivers (Jax Jones Remix)" } ] }, - "trackingParams": "CIcDEKCzAhhMIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CO4GEKCzAhguIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -34820,7 +21854,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CIUDEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COwGEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_ncSa1ula82MF_BHUaHls7UWYO1K-XJvm4" @@ -34833,7 +21867,7 @@ } ] }, - "trackingParams": "CIUDEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COwGEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -34842,7 +21876,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CIQDEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COsGEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_ncSa1ula82MF_BHUaHls7UWYO1K-XJvm4" @@ -34855,7 +21889,7 @@ } ] }, - "trackingParams": "CIQDEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COsGEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -34864,7 +21898,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CIIDEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -34878,15 +21912,21 @@ } ] }, - "trackingParams": "CIMDEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "COoGEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CIIDEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "COkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "COkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_ncSa1ula82MF_BHUaHls7UWYO1K-XJvm4" + } + }, "playlistId": "OLAK5uy_ncSa1ula82MF_BHUaHls7UWYO1K-XJvm4" } } @@ -34898,7 +21938,7 @@ } ] }, - "trackingParams": "CIIDEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -34907,7 +21947,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CIADEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -34921,15 +21961,21 @@ } ] }, - "trackingParams": "CIEDEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "COgGEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CIADEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "COcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "COcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_ncSa1ula82MF_BHUaHls7UWYO1K-XJvm4" + } + }, "playlistId": "OLAK5uy_ncSa1ula82MF_BHUaHls7UWYO1K-XJvm4" } } @@ -34941,7 +21987,7 @@ } ] }, - "trackingParams": "CIADEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -34950,7 +21996,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CP4CEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COUGEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -34958,7 +22004,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CP8CEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COYGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -34971,13 +22017,13 @@ } ] }, - "trackingParams": "CP8CEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COYGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -34995,7 +22041,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -35003,7 +22049,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CP4CEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COUGEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -35018,7 +22064,7 @@ } ] }, - "trackingParams": "CP4CEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COUGEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -35027,7 +22073,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CPwCEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COMGEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -35035,7 +22081,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CP0CEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COQGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -35048,7 +22094,7 @@ } ] }, - "trackingParams": "CP0CEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COQGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -35072,11 +22118,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CPwCEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COMGEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -35093,7 +22139,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CPsCEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "COIGEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -35102,7 +22148,7 @@ } ] }, - "trackingParams": "CPsCEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COIGEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -35111,7 +22157,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CPoCEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COEGEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X25jU2ExdWxhODJNRl9CSFVhSGxzN1VXWU8xSy1YSnZtNA%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -35124,11 +22170,11 @@ } ] }, - "trackingParams": "CPoCEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COEGEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CPkCEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COAGEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -35141,7 +22187,7 @@ "browseId": "MPREb_Cb8D6EATj9O", "params": "ggMrGilPTEFLNXV5X25jU2ExdWxhODJNRl9CSFVhSGxzN1VXWU8xSy1YSnZtNA%3D%3D" }, - "clickTrackingParams": "CPcCEKCzAhhNIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CN4GEKCzAhgvIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -35185,7 +22231,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -35193,7 +22239,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CPgCEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CN8GEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_ncSa1ula82MF_BHUaHls7UWYO1K-XJvm4" } @@ -35202,7 +22248,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CPgCEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CN8GEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -35227,7 +22273,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CIYDEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CO0GEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -35243,13 +22289,13 @@ "browseId": "MPREb_Cb8D6EATj9O", "params": "ggMrGilPTEFLNXV5X25jU2ExdWxhODJNRl9CSFVhSGxzN1VXWU8xSy1YSnZtNA%3D%3D" }, - "clickTrackingParams": "CPcCEKCzAhhNIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CN4GEKCzAhgvIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Shivers (Alok Remix)" } ] }, - "trackingParams": "CPcCEKCzAhhNIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CN4GEKCzAhgvIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -35269,7 +22315,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CPUCEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNwGEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_nmoJ0port6nKr4W32L6mDoNKTJ8HqmDqM" @@ -35282,7 +22328,7 @@ } ] }, - "trackingParams": "CPUCEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNwGEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -35291,7 +22337,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CPQCEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNsGEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_nmoJ0port6nKr4W32L6mDoNKTJ8HqmDqM" @@ -35304,7 +22350,7 @@ } ] }, - "trackingParams": "CPQCEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNsGEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -35313,7 +22359,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CPICEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -35327,15 +22373,21 @@ } ] }, - "trackingParams": "CPMCEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CNoGEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CPICEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CNkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nmoJ0port6nKr4W32L6mDoNKTJ8HqmDqM" + } + }, "playlistId": "OLAK5uy_nmoJ0port6nKr4W32L6mDoNKTJ8HqmDqM" } } @@ -35347,7 +22399,7 @@ } ] }, - "trackingParams": "CPICEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -35356,7 +22408,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CPACEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -35370,15 +22422,21 @@ } ] }, - "trackingParams": "CPECEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CNgGEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CPACEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CNcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nmoJ0port6nKr4W32L6mDoNKTJ8HqmDqM" + } + }, "playlistId": "OLAK5uy_nmoJ0port6nKr4W32L6mDoNKTJ8HqmDqM" } } @@ -35390,7 +22448,7 @@ } ] }, - "trackingParams": "CPACEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -35399,7 +22457,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CO4CEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNUGEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -35407,7 +22465,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CO8CEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNYGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -35420,13 +22478,13 @@ } ] }, - "trackingParams": "CO8CEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNYGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -35444,7 +22502,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -35452,7 +22510,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CO4CEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNUGEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -35467,7 +22525,7 @@ } ] }, - "trackingParams": "CO4CEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNUGEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -35476,7 +22534,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "COwCEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNMGEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -35484,7 +22542,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CO0CEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNQGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -35497,7 +22555,7 @@ } ] }, - "trackingParams": "CO0CEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNQGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -35521,11 +22579,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "COwCEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNMGEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -35542,7 +22600,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "COsCEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CNIGEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -35551,7 +22609,7 @@ } ] }, - "trackingParams": "COsCEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNIGEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -35560,7 +22618,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "COoCEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNEGEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X25tb0owcG9ydDZuS3I0VzMyTDZtRG9OS1RKOEhxbURxTQ%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -35573,11 +22631,11 @@ } ] }, - "trackingParams": "COoCEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNEGEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "COkCEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNAGEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -35590,7 +22648,7 @@ "browseId": "MPREb_m7ig10ru28e", "params": "ggMrGilPTEFLNXV5X25tb0owcG9ydDZuS3I0VzMyTDZtRG9OS1RKOEhxbURxTQ%3D%3D" }, - "clickTrackingParams": "COcCEKCzAhhOIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CM4GEKCzAhgwIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -35634,7 +22692,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -35642,7 +22700,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "COgCEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CM8GEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_nmoJ0port6nKr4W32L6mDoNKTJ8HqmDqM" } @@ -35651,7 +22709,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "COgCEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CM8GEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -35676,7 +22734,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CPYCEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CN0GEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -35692,13 +22750,13 @@ "browseId": "MPREb_m7ig10ru28e", "params": "ggMrGilPTEFLNXV5X25tb0owcG9ydDZuS3I0VzMyTDZtRG9OS1RKOEhxbURxTQ%3D%3D" }, - "clickTrackingParams": "COcCEKCzAhhOIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CM4GEKCzAhgwIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Shivers (Ofenbach Remix)" } ] }, - "trackingParams": "COcCEKCzAhhOIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CM4GEKCzAhgwIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -35718,7 +22776,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "COUCEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMwGEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_lnjrYEXmMJnWmBHghynugPv6wJJlKv-hE" @@ -35731,7 +22789,7 @@ } ] }, - "trackingParams": "COUCEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMwGEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -35740,7 +22798,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "COQCEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMsGEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_lnjrYEXmMJnWmBHghynugPv6wJJlKv-hE" @@ -35753,7 +22811,7 @@ } ] }, - "trackingParams": "COQCEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMsGEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -35762,7 +22820,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "COICEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -35776,15 +22834,21 @@ } ] }, - "trackingParams": "COMCEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CMoGEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "COICEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CMkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lnjrYEXmMJnWmBHghynugPv6wJJlKv-hE" + } + }, "playlistId": "OLAK5uy_lnjrYEXmMJnWmBHghynugPv6wJJlKv-hE" } } @@ -35796,7 +22860,7 @@ } ] }, - "trackingParams": "COICEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -35805,7 +22869,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "COACEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -35819,15 +22883,21 @@ } ] }, - "trackingParams": "COECEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CMgGEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "COACEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CMcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lnjrYEXmMJnWmBHghynugPv6wJJlKv-hE" + } + }, "playlistId": "OLAK5uy_lnjrYEXmMJnWmBHghynugPv6wJJlKv-hE" } } @@ -35839,7 +22909,7 @@ } ] }, - "trackingParams": "COACEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -35848,7 +22918,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CN4CEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMUGEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -35856,7 +22926,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CN8CEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMYGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -35869,13 +22939,13 @@ } ] }, - "trackingParams": "CN8CEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMYGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -35893,7 +22963,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -35901,7 +22971,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CN4CEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMUGEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -35916,7 +22986,7 @@ } ] }, - "trackingParams": "CN4CEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMUGEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -35925,7 +22995,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CNwCEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMMGEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -35933,7 +23003,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CN0CEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMQGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -35946,7 +23016,7 @@ } ] }, - "trackingParams": "CN0CEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMQGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -35970,11 +23040,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CNwCEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMMGEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -35991,7 +23061,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CNsCEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CMIGEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -36000,7 +23070,7 @@ } ] }, - "trackingParams": "CNsCEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMIGEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -36009,7 +23079,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CNoCEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMEGEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X2xuanJZRVhtTUpuV21CSGdoeW51Z1B2NndKSmxLdi1oRQ%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -36022,11 +23092,11 @@ } ] }, - "trackingParams": "CNoCEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMEGEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CNkCEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMAGEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -36039,7 +23109,7 @@ "browseId": "MPREb_jwci4DAA0kr", "params": "ggMrGilPTEFLNXV5X2xuanJZRVhtTUpuV21CSGdoeW51Z1B2NndKSmxLdi1oRQ%3D%3D" }, - "clickTrackingParams": "CNcCEKCzAhhPIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CL4GEKCzAhgxIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -36083,7 +23153,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -36091,7 +23161,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CNgCEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CL8GEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_lnjrYEXmMJnWmBHghynugPv6wJJlKv-hE" } @@ -36100,7 +23170,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CNgCEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CL8GEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -36125,7 +23195,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "COYCEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CM0GEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -36141,13 +23211,13 @@ "browseId": "MPREb_jwci4DAA0kr", "params": "ggMrGilPTEFLNXV5X2xuanJZRVhtTUpuV21CSGdoeW51Z1B2NndKSmxLdi1oRQ%3D%3D" }, - "clickTrackingParams": "CNcCEKCzAhhPIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CL4GEKCzAhgxIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Shivers (Navos Remix)" } ] }, - "trackingParams": "CNcCEKCzAhhPIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CL4GEKCzAhgxIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -36167,10 +23237,10 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CNUCEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLwGEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_mqlttqIA_GBNE8x69-aaRs9JFqO13xCMA" + "playlistId": "OLAK5uy_mrV7EPxiKmvB3m_7XP8WKYllUZBWMzs8U" } }, "text": { @@ -36180,7 +23250,7 @@ } ] }, - "trackingParams": "CNUCEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLwGEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -36189,10 +23259,10 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CNQCEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLsGEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_mqlttqIA_GBNE8x69-aaRs9JFqO13xCMA" + "playlistId": "RDAMPLOLAK5uy_mrV7EPxiKmvB3m_7XP8WKYllUZBWMzs8U" } }, "text": { @@ -36202,7 +23272,7 @@ } ] }, - "trackingParams": "CNQCEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLsGEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -36211,7 +23281,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CNICEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -36225,16 +23295,22 @@ } ] }, - "trackingParams": "CNMCEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CLoGEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CNICEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CLkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { - "playlistId": "OLAK5uy_mqlttqIA_GBNE8x69-aaRs9JFqO13xCMA" + "onEmptyQueue": { + "clickTrackingParams": "CLkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mrV7EPxiKmvB3m_7XP8WKYllUZBWMzs8U" + } + }, + "playlistId": "OLAK5uy_mrV7EPxiKmvB3m_7XP8WKYllUZBWMzs8U" } } }, @@ -36245,7 +23321,7 @@ } ] }, - "trackingParams": "CNICEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -36254,7 +23330,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CNACEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -36268,16 +23344,22 @@ } ] }, - "trackingParams": "CNECEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CLgGEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CNACEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CLcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { - "playlistId": "OLAK5uy_mqlttqIA_GBNE8x69-aaRs9JFqO13xCMA" + "onEmptyQueue": { + "clickTrackingParams": "CLcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mrV7EPxiKmvB3m_7XP8WKYllUZBWMzs8U" + } + }, + "playlistId": "OLAK5uy_mrV7EPxiKmvB3m_7XP8WKYllUZBWMzs8U" } } }, @@ -36288,7 +23370,7 @@ } ] }, - "trackingParams": "CNACEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -36297,7 +23379,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CM4CEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLUGEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -36305,7 +23387,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CM8CEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLYGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -36318,13 +23400,13 @@ } ] }, - "trackingParams": "CM8CEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLYGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -36342,7 +23424,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -36350,11 +23432,11 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CM4CEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLUGEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { - "playlistId": "OLAK5uy_mqlttqIA_GBNE8x69-aaRs9JFqO13xCMA" + "playlistId": "OLAK5uy_mrV7EPxiKmvB3m_7XP8WKYllUZBWMzs8U" } } }, @@ -36365,7 +23447,7 @@ } ] }, - "trackingParams": "CM4CEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLUGEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -36374,7 +23456,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CMwCEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLMGEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -36382,7 +23464,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CM0CEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLQGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -36395,7 +23477,7 @@ } ] }, - "trackingParams": "CM0CEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLQGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -36419,11 +23501,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CMwCEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLMGEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -36440,7 +23522,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CMsCEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CLIGEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -36449,7 +23531,7 @@ } ] }, - "trackingParams": "CMsCEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLIGEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -36458,7 +23540,1390 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CMoCEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLEGEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X21yVjdFUHhpS212QjNtXzdYUDhXS1lsbFVaQldNenM4VQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CLEGEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CLAGEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_FSP8P482Yww", + "params": "ggMrGilPTEFLNXV5X21yVjdFUHhpS212QjNtXzdYUDhXS1lsbFVaQldNenM4VQ%3D%3D" + }, + "clickTrackingParams": "CK4GEKCzAhgyIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2021" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Shivers (Acoustic Version)" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Shivers (Acoustic Version)" + } + }, + "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": "CK8GEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_mrV7EPxiKmvB3m_7XP8WKYllUZBWMzs8U" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CK8GEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/Ca15xJfTWA--68fPSupMdTAOvY9Rd4MxFSk0bD0feSxybe5whNd4ysVsAd1x78SUwpJcrOJUDZz2QZI=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/Ca15xJfTWA--68fPSupMdTAOvY9Rd4MxFSk0bD0feSxybe5whNd4ysVsAd1x78SUwpJcrOJUDZz2QZI=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CL0GEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_FSP8P482Yww", + "params": "ggMrGilPTEFLNXV5X21yVjdFUHhpS212QjNtXzdYUDhXS1lsbFVaQldNenM4VQ%3D%3D" + }, + "clickTrackingParams": "CK4GEKCzAhgyIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "Shivers (Acoustic Version)" + } + ] + }, + "trackingParams": "CK4GEKCzAhgyIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CKwGEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_l0CY3m0lYLkMYL-vdeLUkXbvZe3UDobrw" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CKwGEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKsGEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_l0CY3m0lYLkMYL-vdeLUkXbvZe3UDobrw" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CKsGEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CKoGEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CKkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_l0CY3m0lYLkMYL-vdeLUkXbvZe3UDobrw" + } + }, + "playlistId": "OLAK5uy_l0CY3m0lYLkMYL-vdeLUkXbvZe3UDobrw" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CKkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CKgGEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CKcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_l0CY3m0lYLkMYL-vdeLUkXbvZe3UDobrw" + } + }, + "playlistId": "OLAK5uy_l0CY3m0lYLkMYL-vdeLUkXbvZe3UDobrw" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CKcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CKUGEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CKYGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CKYGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CKUGEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_l0CY3m0lYLkMYL-vdeLUkXbvZe3UDobrw" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CKUGEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKMGEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CKQGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CKQGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CKMGEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CKIGEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CKIGEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKEGEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2wwQ1kzbTBsWUxrTVlMLXZkZUxVa1hidlplM1VEb2Jydw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CKEGEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CKAGEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_0qzA9qC504a", + "params": "ggMrGilPTEFLNXV5X2wwQ1kzbTBsWUxrTVlMLXZkZUxVa1hidlplM1VEb2Jydw%3D%3D" + }, + "clickTrackingParams": "CJ4GEKCzAhgzIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2021" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Shivers" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Shivers" + } + }, + "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": "CJ8GEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_l0CY3m0lYLkMYL-vdeLUkXbvZe3UDobrw" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CJ8GEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/LDjFD-70y9c3aYL3-2zTUXkmlWfNlryJllQpHZLxZgi0i73pGx9JaJkNzDTo2LO9cGBDJx7E4eWdytMA=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/LDjFD-70y9c3aYL3-2zTUXkmlWfNlryJllQpHZLxZgi0i73pGx9JaJkNzDTo2LO9cGBDJx7E4eWdytMA=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CK0GEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_0qzA9qC504a", + "params": "ggMrGilPTEFLNXV5X2wwQ1kzbTBsWUxrTVlMLXZkZUxVa1hidlplM1VEb2Jydw%3D%3D" + }, + "clickTrackingParams": "CJ4GEKCzAhgzIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "Shivers" + } + ] + }, + "trackingParams": "CJ4GEKCzAhgzIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CJwGEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_lXTvwjkwMFYekQV14C7k7G-9FyVumvq5U" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CJwGEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJsGEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_lXTvwjkwMFYekQV14C7k7G-9FyVumvq5U" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CJsGEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CJoGEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CJkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lXTvwjkwMFYekQV14C7k7G-9FyVumvq5U" + } + }, + "playlistId": "OLAK5uy_lXTvwjkwMFYekQV14C7k7G-9FyVumvq5U" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CJkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CJgGEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CJcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lXTvwjkwMFYekQV14C7k7G-9FyVumvq5U" + } + }, + "playlistId": "OLAK5uy_lXTvwjkwMFYekQV14C7k7G-9FyVumvq5U" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CJUGEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CJYGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CJYGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CJUGEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_lXTvwjkwMFYekQV14C7k7G-9FyVumvq5U" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CJUGEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJMGEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CJQGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CJQGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CJMGEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CJIGEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CJIGEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJEGEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2xYVHZ3amt3TUZZZWtRVjE0QzdrN0ctOUZ5VnVtdnE1VQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJEGEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CJAGEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_LJQn89VQCXo", + "params": "ggMrGilPTEFLNXV5X2xYVHZ3amt3TUZZZWtRVjE0QzdrN0ctOUZ5VnVtdnE1VQ%3D%3D" + }, + "clickTrackingParams": "CI4GEKCzAhg0IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2021" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Visiting Hours" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Visiting Hours" + } + }, + "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": "CI8GEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_lXTvwjkwMFYekQV14C7k7G-9FyVumvq5U" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CI8GEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/NeLeE39EJubJPPdRzYE49q3QyB-8mmfIjyWw_o0m40fOUBDqLVpMNH_jdApO9SHck9pDNMx-Vj-O53SBIg=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/NeLeE39EJubJPPdRzYE49q3QyB-8mmfIjyWw_o0m40fOUBDqLVpMNH_jdApO9SHck9pDNMx-Vj-O53SBIg=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CJ0GEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_LJQn89VQCXo", + "params": "ggMrGilPTEFLNXV5X2xYVHZ3amt3TUZZZWtRVjE0QzdrN0ctOUZ5VnVtdnE1VQ%3D%3D" + }, + "clickTrackingParams": "CI4GEKCzAhg0IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "Visiting Hours" + } + ] + }, + "trackingParams": "CI4GEKCzAhg0IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CIwGEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_mqlttqIA_GBNE8x69-aaRs9JFqO13xCMA" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CIwGEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIsGEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_mqlttqIA_GBNE8x69-aaRs9JFqO13xCMA" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CIsGEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CIoGEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CIkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mqlttqIA_GBNE8x69-aaRs9JFqO13xCMA" + } + }, + "playlistId": "OLAK5uy_mqlttqIA_GBNE8x69-aaRs9JFqO13xCMA" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CIkGEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CIgGEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CIcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mqlttqIA_GBNE8x69-aaRs9JFqO13xCMA" + } + }, + "playlistId": "OLAK5uy_mqlttqIA_GBNE8x69-aaRs9JFqO13xCMA" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CIcGEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CIUGEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CIYGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CIYGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CIUGEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_mqlttqIA_GBNE8x69-aaRs9JFqO13xCMA" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CIUGEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIMGEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CIQGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CIQGEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CIMGEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CIIGEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CIIGEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIEGEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X21xbHR0cUlBX0dCTkU4eDY5LWFhUnM5SkZxTzEzeENNQQ%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -36471,11 +24936,11 @@ } ] }, - "trackingParams": "CMoCEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIEGEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CMkCEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIAGEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -36488,7 +24953,7 @@ "browseId": "MPREb_FERuqELs3mh", "params": "ggMrGilPTEFLNXV5X21xbHR0cUlBX0dCTkU4eDY5LWFhUnM5SkZxTzEzeENNQQ%3D%3D" }, - "clickTrackingParams": "CMYCEKCzAhhQIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CP0FEKCzAhg1IhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -36514,7 +24979,7 @@ "icon": { "iconType": "MUSIC_EXPLICIT_BADGE" }, - "trackingParams": "CMcCEKHtAhgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CP4FEKHtAhgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], @@ -36547,7 +25012,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -36555,7 +25020,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CMgCEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CP8FEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_mqlttqIA_GBNE8x69-aaRs9JFqO13xCMA" } @@ -36564,7 +25029,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CMgCEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CP8FEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -36589,7 +25054,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CNYCEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CI0GEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -36605,13 +25070,13 @@ "browseId": "MPREb_FERuqELs3mh", "params": "ggMrGilPTEFLNXV5X21xbHR0cUlBX0dCTkU4eDY5LWFhUnM5SkZxTzEzeENNQQ%3D%3D" }, - "clickTrackingParams": "CMYCEKCzAhhQIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CP0FEKCzAhg1IhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Bad Habits (Fumez The Engineer Remix) (feat. Tion Wayne & Central Cee)" } ] }, - "trackingParams": "CMYCEKCzAhhQIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CP0FEKCzAhg1IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -36631,7 +25096,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CMQCEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPsFEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_mE9ORMSxExLZMy3zyB5g58ETDnjxaNCG8" @@ -36644,7 +25109,7 @@ } ] }, - "trackingParams": "CMQCEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPsFEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -36653,7 +25118,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CMMCEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPoFEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_mE9ORMSxExLZMy3zyB5g58ETDnjxaNCG8" @@ -36666,7 +25131,7 @@ } ] }, - "trackingParams": "CMMCEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPoFEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -36675,7 +25140,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CMECEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -36689,15 +25154,21 @@ } ] }, - "trackingParams": "CMICEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CPkFEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CMECEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CPgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CPgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mE9ORMSxExLZMy3zyB5g58ETDnjxaNCG8" + } + }, "playlistId": "OLAK5uy_mE9ORMSxExLZMy3zyB5g58ETDnjxaNCG8" } } @@ -36709,7 +25180,7 @@ } ] }, - "trackingParams": "CMECEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -36718,7 +25189,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CL8CEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -36732,15 +25203,21 @@ } ] }, - "trackingParams": "CMACEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CPcFEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CL8CEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CPYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CPYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mE9ORMSxExLZMy3zyB5g58ETDnjxaNCG8" + } + }, "playlistId": "OLAK5uy_mE9ORMSxExLZMy3zyB5g58ETDnjxaNCG8" } } @@ -36752,7 +25229,7 @@ } ] }, - "trackingParams": "CL8CEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -36761,7 +25238,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CL0CEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPQFEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -36769,7 +25246,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CL4CEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPUFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -36782,13 +25259,13 @@ } ] }, - "trackingParams": "CL4CEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPUFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -36806,7 +25283,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -36814,7 +25291,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CL0CEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPQFEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -36829,7 +25306,7 @@ } ] }, - "trackingParams": "CL0CEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPQFEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -36838,7 +25315,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CLsCEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPIFEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -36846,7 +25323,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CLwCEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPMFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -36859,7 +25336,7 @@ } ] }, - "trackingParams": "CLwCEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPMFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -36883,11 +25360,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CLsCEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPIFEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -36904,7 +25381,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CLoCEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CPEFEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -36913,7 +25390,7 @@ } ] }, - "trackingParams": "CLoCEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPEFEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -36922,7 +25399,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CLkCEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPAFEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X21FOU9STVN4RXhMWk15M3p5QjVnNThFVERuanhhTkNHOA%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -36935,11 +25412,11 @@ } ] }, - "trackingParams": "CLkCEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPAFEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CLgCEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CO8FEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -36952,7 +25429,7 @@ "browseId": "MPREb_Ffv2LVvNoHK", "params": "ggMrGilPTEFLNXV5X21FOU9STVN4RXhMWk15M3p5QjVnNThFVERuanhhTkNHOA%3D%3D" }, - "clickTrackingParams": "CLYCEKCzAhhRIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CO0FEKCzAhg2IhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -36996,7 +25473,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -37004,7 +25481,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CLcCEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CO4FEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_mE9ORMSxExLZMy3zyB5g58ETDnjxaNCG8" } @@ -37013,7 +25490,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CLcCEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CO4FEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -37038,7 +25515,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CMUCEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CPwFEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -37054,13 +25531,13 @@ "browseId": "MPREb_Ffv2LVvNoHK", "params": "ggMrGilPTEFLNXV5X21FOU9STVN4RXhMWk15M3p5QjVnNThFVERuanhhTkNHOA%3D%3D" }, - "clickTrackingParams": "CLYCEKCzAhhRIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CO0FEKCzAhg2IhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Bad Habits: The Remixes" } ] }, - "trackingParams": "CLYCEKCzAhhRIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CO0FEKCzAhg2IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -37080,7 +25557,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CLQCEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COsFEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_nRoMSORHt4QOeGrt06yhhUAvGvVSn-KAo" @@ -37093,7 +25570,7 @@ } ] }, - "trackingParams": "CLQCEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COsFEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -37102,7 +25579,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CLMCEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COoFEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_nRoMSORHt4QOeGrt06yhhUAvGvVSn-KAo" @@ -37115,7 +25592,7 @@ } ] }, - "trackingParams": "CLMCEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COoFEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -37124,7 +25601,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CLECEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -37138,15 +25615,21 @@ } ] }, - "trackingParams": "CLICEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "COkFEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CLECEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "COgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "COgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nRoMSORHt4QOeGrt06yhhUAvGvVSn-KAo" + } + }, "playlistId": "OLAK5uy_nRoMSORHt4QOeGrt06yhhUAvGvVSn-KAo" } } @@ -37158,7 +25641,7 @@ } ] }, - "trackingParams": "CLECEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -37167,7 +25650,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CK8CEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -37181,15 +25664,21 @@ } ] }, - "trackingParams": "CLACEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "COcFEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CK8CEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "COYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "COYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nRoMSORHt4QOeGrt06yhhUAvGvVSn-KAo" + } + }, "playlistId": "OLAK5uy_nRoMSORHt4QOeGrt06yhhUAvGvVSn-KAo" } } @@ -37201,7 +25690,7 @@ } ] }, - "trackingParams": "CK8CEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -37210,7 +25699,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CK0CEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COQFEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -37218,7 +25707,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CK4CEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COUFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -37231,13 +25720,13 @@ } ] }, - "trackingParams": "CK4CEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COUFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -37255,7 +25744,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -37263,7 +25752,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CK0CEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COQFEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -37278,7 +25767,7 @@ } ] }, - "trackingParams": "CK0CEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COQFEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -37287,7 +25776,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CKsCEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COIFEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -37295,7 +25784,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CKwCEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COMFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -37308,7 +25797,7 @@ } ] }, - "trackingParams": "CKwCEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COMFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -37332,11 +25821,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CKsCEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COIFEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -37353,7 +25842,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CKoCEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "COEFEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -37362,7 +25851,7 @@ } ] }, - "trackingParams": "CKoCEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COEFEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -37371,7 +25860,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CKkCEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "COAFEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X25Sb01TT1JIdDRRT2VHcnQwNnloaFVBdkd2VlNuLUtBbw%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -37384,11 +25873,11 @@ } ] }, - "trackingParams": "CKkCEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COAFEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CKgCEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CN8FEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -37401,7 +25890,7 @@ "browseId": "MPREb_AxNadFdog8i", "params": "ggMrGilPTEFLNXV5X25Sb01TT1JIdDRRT2VHcnQwNnloaFVBdkd2VlNuLUtBbw%3D%3D" }, - "clickTrackingParams": "CKYCEKCzAhhSIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CN0FEKCzAhg3IhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -37445,7 +25934,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -37453,7 +25942,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CKcCEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CN4FEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_nRoMSORHt4QOeGrt06yhhUAvGvVSn-KAo" } @@ -37462,7 +25951,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CKcCEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CN4FEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -37487,7 +25976,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CLUCEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "COwFEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -37503,13 +25992,13 @@ "browseId": "MPREb_AxNadFdog8i", "params": "ggMrGilPTEFLNXV5X25Sb01TT1JIdDRRT2VHcnQwNnloaFVBdkd2VlNuLUtBbw%3D%3D" }, - "clickTrackingParams": "CKYCEKCzAhhSIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CN0FEKCzAhg3IhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Bad Habits (Joel Corry Remix)" } ] }, - "trackingParams": "CKYCEKCzAhhSIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CN0FEKCzAhg3IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -37529,7 +26018,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CKQCEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNsFEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_nPoMBSs241Px4Wthd8ANlppeDFDHfdfk4" @@ -37542,7 +26031,7 @@ } ] }, - "trackingParams": "CKQCEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNsFEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -37551,7 +26040,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CKMCEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNoFEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_nPoMBSs241Px4Wthd8ANlppeDFDHfdfk4" @@ -37564,7 +26053,7 @@ } ] }, - "trackingParams": "CKMCEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNoFEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -37573,7 +26062,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CKECEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -37587,15 +26076,21 @@ } ] }, - "trackingParams": "CKICEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CNkFEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CKECEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CNgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nPoMBSs241Px4Wthd8ANlppeDFDHfdfk4" + } + }, "playlistId": "OLAK5uy_nPoMBSs241Px4Wthd8ANlppeDFDHfdfk4" } } @@ -37607,7 +26102,7 @@ } ] }, - "trackingParams": "CKECEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -37616,7 +26111,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CJ8CEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -37630,15 +26125,21 @@ } ] }, - "trackingParams": "CKACEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CNcFEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CJ8CEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CNYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nPoMBSs241Px4Wthd8ANlppeDFDHfdfk4" + } + }, "playlistId": "OLAK5uy_nPoMBSs241Px4Wthd8ANlppeDFDHfdfk4" } } @@ -37650,7 +26151,7 @@ } ] }, - "trackingParams": "CJ8CEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -37659,7 +26160,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CJ0CEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNQFEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -37667,7 +26168,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CJ4CEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNUFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -37680,13 +26181,13 @@ } ] }, - "trackingParams": "CJ4CEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNUFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -37704,7 +26205,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -37712,7 +26213,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CJ0CEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNQFEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -37727,7 +26228,7 @@ } ] }, - "trackingParams": "CJ0CEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNQFEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -37736,7 +26237,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CJsCEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNIFEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -37744,7 +26245,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CJwCEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNMFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -37757,7 +26258,7 @@ } ] }, - "trackingParams": "CJwCEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNMFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -37781,11 +26282,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CJsCEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNIFEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -37802,7 +26303,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CJoCEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CNEFEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -37811,7 +26312,7 @@ } ] }, - "trackingParams": "CJoCEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNEFEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -37820,7 +26321,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CJkCEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNAFEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X25Qb01CU3MyNDFQeDRXdGhkOEFObHBwZURGREhmZGZrNA%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -37833,11 +26334,11 @@ } ] }, - "trackingParams": "CJkCEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNAFEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CJgCEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CM8FEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -37850,7 +26351,7 @@ "browseId": "MPREb_LDntYApT56V", "params": "ggMrGilPTEFLNXV5X25Qb01CU3MyNDFQeDRXdGhkOEFObHBwZURGREhmZGZrNA%3D%3D" }, - "clickTrackingParams": "CJYCEKCzAhhTIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CM0FEKCzAhg4IhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -37894,7 +26395,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -37902,7 +26403,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CJcCEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CM4FEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_nPoMBSs241Px4Wthd8ANlppeDFDHfdfk4" } @@ -37911,7 +26412,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CJcCEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CM4FEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -37936,7 +26437,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CKUCEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CNwFEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -37952,13 +26453,13 @@ "browseId": "MPREb_LDntYApT56V", "params": "ggMrGilPTEFLNXV5X25Qb01CU3MyNDFQeDRXdGhkOEFObHBwZURGREhmZGZrNA%3D%3D" }, - "clickTrackingParams": "CJYCEKCzAhhTIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CM0FEKCzAhg4IhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Bad Habits (MEDUZA Remix)" } ] }, - "trackingParams": "CJYCEKCzAhhTIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CM0FEKCzAhg4IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -37978,10 +26479,10 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CJQCEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMsFEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_mpUrcLO4JRbi9bNQ9zZMOyXJzJgcjS99M" + "playlistId": "OLAK5uy_kFOpC9pi1zYj2KF1kWVJPQ17_clqU_tig" } }, "text": { @@ -37991,7 +26492,7 @@ } ] }, - "trackingParams": "CJQCEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMsFEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -38000,10 +26501,10 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CJMCEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMoFEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_mpUrcLO4JRbi9bNQ9zZMOyXJzJgcjS99M" + "playlistId": "RDAMPLOLAK5uy_kFOpC9pi1zYj2KF1kWVJPQ17_clqU_tig" } }, "text": { @@ -38013,7 +26514,7 @@ } ] }, - "trackingParams": "CJMCEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMoFEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -38022,7 +26523,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CJECEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -38036,16 +26537,22 @@ } ] }, - "trackingParams": "CJICEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CMkFEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CJECEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CMgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { - "playlistId": "OLAK5uy_mpUrcLO4JRbi9bNQ9zZMOyXJzJgcjS99M" + "onEmptyQueue": { + "clickTrackingParams": "CMgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_kFOpC9pi1zYj2KF1kWVJPQ17_clqU_tig" + } + }, + "playlistId": "OLAK5uy_kFOpC9pi1zYj2KF1kWVJPQ17_clqU_tig" } } }, @@ -38056,7 +26563,7 @@ } ] }, - "trackingParams": "CJECEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -38065,7 +26572,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CI8CEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -38079,16 +26586,22 @@ } ] }, - "trackingParams": "CJACEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CMcFEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CI8CEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CMYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { - "playlistId": "OLAK5uy_mpUrcLO4JRbi9bNQ9zZMOyXJzJgcjS99M" + "onEmptyQueue": { + "clickTrackingParams": "CMYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_kFOpC9pi1zYj2KF1kWVJPQ17_clqU_tig" + } + }, + "playlistId": "OLAK5uy_kFOpC9pi1zYj2KF1kWVJPQ17_clqU_tig" } } }, @@ -38099,7 +26612,7 @@ } ] }, - "trackingParams": "CI8CEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -38108,7 +26621,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CI0CEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMQFEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -38116,7 +26629,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CI4CEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMUFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -38129,13 +26642,13 @@ } ] }, - "trackingParams": "CI4CEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMUFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -38153,7 +26666,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -38161,11 +26674,11 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CI0CEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMQFEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { - "playlistId": "OLAK5uy_mpUrcLO4JRbi9bNQ9zZMOyXJzJgcjS99M" + "playlistId": "OLAK5uy_kFOpC9pi1zYj2KF1kWVJPQ17_clqU_tig" } } }, @@ -38176,7 +26689,7 @@ } ] }, - "trackingParams": "CI0CEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMQFEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -38185,7 +26698,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CIsCEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMIFEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -38193,7 +26706,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CIwCEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMMFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -38206,7 +26719,7 @@ } ] }, - "trackingParams": "CIwCEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMMFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -38230,11 +26743,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CIsCEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMIFEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -38251,7 +26764,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CIoCEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CMEFEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -38260,7 +26773,7 @@ } ] }, - "trackingParams": "CIoCEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMEFEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -38269,7 +26782,1390 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CIkCEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMAFEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2tGT3BDOXBpMXpZajJLRjFrV1ZKUFExN19jbHFVX3RpZw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CMAFEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CL8FEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_L6fwH6dF0r0", + "params": "ggMrGilPTEFLNXV5X2tGT3BDOXBpMXpZajJLRjFrV1ZKUFExN19jbHFVX3RpZw%3D%3D" + }, + "clickTrackingParams": "CL0FEKCzAhg5IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2021" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Bad Habits (Acoustic Version)" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Bad Habits (Acoustic Version)" + } + }, + "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": "CL4FEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_kFOpC9pi1zYj2KF1kWVJPQ17_clqU_tig" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CL4FEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/C8f5HPHhFHaXtg7GbL_MXeaQ_nlWSCDyUWLPy7UfsrkoG0Ogt4d4c8TKdwHWApeTZgcV89hLvOv2i3E=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/C8f5HPHhFHaXtg7GbL_MXeaQ_nlWSCDyUWLPy7UfsrkoG0Ogt4d4c8TKdwHWApeTZgcV89hLvOv2i3E=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CMwFEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_L6fwH6dF0r0", + "params": "ggMrGilPTEFLNXV5X2tGT3BDOXBpMXpZajJLRjFrV1ZKUFExN19jbHFVX3RpZw%3D%3D" + }, + "clickTrackingParams": "CL0FEKCzAhg5IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "Bad Habits (Acoustic Version)" + } + ] + }, + "trackingParams": "CL0FEKCzAhg5IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CLsFEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_kE6pBd_LRYyqeKGM-6nLFM6H38CIeJh2g" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CLsFEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLoFEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_kE6pBd_LRYyqeKGM-6nLFM6H38CIeJh2g" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CLoFEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CLkFEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CLgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CLgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_kE6pBd_LRYyqeKGM-6nLFM6H38CIeJh2g" + } + }, + "playlistId": "OLAK5uy_kE6pBd_LRYyqeKGM-6nLFM6H38CIeJh2g" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CLgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CLcFEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CLYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CLYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_kE6pBd_LRYyqeKGM-6nLFM6H38CIeJh2g" + } + }, + "playlistId": "OLAK5uy_kE6pBd_LRYyqeKGM-6nLFM6H38CIeJh2g" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CLYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CLQFEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CLUFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CLUFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CLQFEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_kE6pBd_LRYyqeKGM-6nLFM6H38CIeJh2g" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CLQFEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLIFEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CLMFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CLMFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CLIFEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CLEFEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CLEFEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLAFEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2tFNnBCZF9MUll5cWVLR00tNm5MRk02SDM4Q0llSmgyZw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CLAFEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CK8FEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_917r4nW96j5", + "params": "ggMrGilPTEFLNXV5X2tFNnBCZF9MUll5cWVLR00tNm5MRk02SDM4Q0llSmgyZw%3D%3D" + }, + "clickTrackingParams": "CK0FEKCzAhg6IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2021" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Bad Habits" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Bad Habits" + } + }, + "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": "CK4FEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_kE6pBd_LRYyqeKGM-6nLFM6H38CIeJh2g" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CK4FEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/3xN5Rqah_iSMqbl3ZMCr9MjnEBVyBLmLng0f-MCvFFdfPNhK619ikGwAD0iOBkzCOXIlucWE0lLLXJA=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/3xN5Rqah_iSMqbl3ZMCr9MjnEBVyBLmLng0f-MCvFFdfPNhK619ikGwAD0iOBkzCOXIlucWE0lLLXJA=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CLwFEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_917r4nW96j5", + "params": "ggMrGilPTEFLNXV5X2tFNnBCZF9MUll5cWVLR00tNm5MRk02SDM4Q0llSmgyZw%3D%3D" + }, + "clickTrackingParams": "CK0FEKCzAhg6IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "Bad Habits" + } + ] + }, + "trackingParams": "CK0FEKCzAhg6IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CKsFEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_npgXZd7CTFxQoIHJ2wbQCy2E_Vp1x5Yqw" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CKsFEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKoFEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_npgXZd7CTFxQoIHJ2wbQCy2E_Vp1x5Yqw" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CKoFEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CKkFEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CKgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_npgXZd7CTFxQoIHJ2wbQCy2E_Vp1x5Yqw" + } + }, + "playlistId": "OLAK5uy_npgXZd7CTFxQoIHJ2wbQCy2E_Vp1x5Yqw" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CKgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CKcFEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CKYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_npgXZd7CTFxQoIHJ2wbQCy2E_Vp1x5Yqw" + } + }, + "playlistId": "OLAK5uy_npgXZd7CTFxQoIHJ2wbQCy2E_Vp1x5Yqw" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CKYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CKQFEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CKUFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CKUFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CKQFEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_npgXZd7CTFxQoIHJ2wbQCy2E_Vp1x5Yqw" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CKQFEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKIFEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CKMFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CKMFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CKIFEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CKEFEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CKEFEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKAFEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X25wZ1haZDdDVEZ4UW9JSEoyd2JRQ3kyRV9WcDF4NVlxdw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CKAFEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CJ8FEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_cJ3E2IfwzTh", + "params": "ggMrGilPTEFLNXV5X25wZ1haZDdDVEZ4UW9JSEoyd2JRQ3kyRV9WcDF4NVlxdw%3D%3D" + }, + "clickTrackingParams": "CJ0FEKCzAhg7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2020" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Afterglow" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Afterglow" + } + }, + "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": "CJ4FEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_npgXZd7CTFxQoIHJ2wbQCy2E_Vp1x5Yqw" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CJ4FEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/dzpmzTpQLVrjYIZfMeyXeIHer10zf4cUU6GHSmgaV-RosRg-OaxjwvVFcj__bAiiBz19emxU7f5KHog=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/dzpmzTpQLVrjYIZfMeyXeIHer10zf4cUU6GHSmgaV-RosRg-OaxjwvVFcj__bAiiBz19emxU7f5KHog=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CKwFEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_cJ3E2IfwzTh", + "params": "ggMrGilPTEFLNXV5X25wZ1haZDdDVEZ4UW9JSEoyd2JRQ3kyRV9WcDF4NVlxdw%3D%3D" + }, + "clickTrackingParams": "CJ0FEKCzAhg7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "Afterglow" + } + ] + }, + "trackingParams": "CJ0FEKCzAhg7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CJsFEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_mpUrcLO4JRbi9bNQ9zZMOyXJzJgcjS99M" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CJsFEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJoFEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_mpUrcLO4JRbi9bNQ9zZMOyXJzJgcjS99M" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CJoFEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CJkFEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CJgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mpUrcLO4JRbi9bNQ9zZMOyXJzJgcjS99M" + } + }, + "playlistId": "OLAK5uy_mpUrcLO4JRbi9bNQ9zZMOyXJzJgcjS99M" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CJgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CJcFEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CJYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mpUrcLO4JRbi9bNQ9zZMOyXJzJgcjS99M" + } + }, + "playlistId": "OLAK5uy_mpUrcLO4JRbi9bNQ9zZMOyXJzJgcjS99M" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CJQFEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CJUFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CJUFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CJQFEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_mpUrcLO4JRbi9bNQ9zZMOyXJzJgcjS99M" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CJQFEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJIFEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CJMFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CJMFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CJIFEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CJEFEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CJEFEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJAFEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X21wVXJjTE80SlJiaTliTlE5elpNT3lYSnpKZ2NqUzk5TQ%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -38282,11 +28178,11 @@ } ] }, - "trackingParams": "CIkCEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJAFEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CIgCEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CI8FEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -38299,7 +28195,7 @@ "browseId": "MPREb_k72GvmjzLXR", "params": "ggMrGilPTEFLNXV5X21wVXJjTE80SlJiaTliTlE5elpNT3lYSnpKZ2NqUzk5TQ%3D%3D" }, - "clickTrackingParams": "CIYCEKCzAhhUIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CI0FEKCzAhg8IhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -38343,7 +28239,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -38351,7 +28247,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CIcCEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CI4FEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_mpUrcLO4JRbi9bNQ9zZMOyXJzJgcjS99M" } @@ -38360,7 +28256,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CIcCEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CI4FEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -38385,7 +28281,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CJUCEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CJwFEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -38401,13 +28297,13 @@ "browseId": "MPREb_k72GvmjzLXR", "params": "ggMrGilPTEFLNXV5X21wVXJjTE80SlJiaTliTlE5elpNT3lYSnpKZ2NqUzk5TQ%3D%3D" }, - "clickTrackingParams": "CIYCEKCzAhhUIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CI0FEKCzAhg8IhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Antisocial (MK Remix)" } ] }, - "trackingParams": "CIYCEKCzAhhUIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CI0FEKCzAhg8IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -38427,7 +28323,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CIQCEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIsFEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_mefkiZ4GZP_b9xZQuthvTO4zdH_LxgWJA" @@ -38440,7 +28336,7 @@ } ] }, - "trackingParams": "CIQCEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIsFEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -38449,7 +28345,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CIMCEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIoFEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_mefkiZ4GZP_b9xZQuthvTO4zdH_LxgWJA" @@ -38462,7 +28358,7 @@ } ] }, - "trackingParams": "CIMCEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIoFEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -38471,7 +28367,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CIECEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -38485,15 +28381,21 @@ } ] }, - "trackingParams": "CIICEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CIkFEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CIECEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CIgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mefkiZ4GZP_b9xZQuthvTO4zdH_LxgWJA" + } + }, "playlistId": "OLAK5uy_mefkiZ4GZP_b9xZQuthvTO4zdH_LxgWJA" } } @@ -38505,7 +28407,7 @@ } ] }, - "trackingParams": "CIECEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIgFEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -38514,7 +28416,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CP8BEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -38528,15 +28430,21 @@ } ] }, - "trackingParams": "CIACEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CIcFEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CP8BEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CIYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mefkiZ4GZP_b9xZQuthvTO4zdH_LxgWJA" + } + }, "playlistId": "OLAK5uy_mefkiZ4GZP_b9xZQuthvTO4zdH_LxgWJA" } } @@ -38548,7 +28456,7 @@ } ] }, - "trackingParams": "CP8BEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIYFEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -38557,7 +28465,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CP0BEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIQFEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -38565,7 +28473,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CP4BEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIUFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -38578,13 +28486,13 @@ } ] }, - "trackingParams": "CP4BEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIUFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -38602,7 +28510,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -38610,7 +28518,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CP0BEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIQFEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -38625,7 +28533,7 @@ } ] }, - "trackingParams": "CP0BEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIQFEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -38634,7 +28542,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CPsBEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIIFEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -38642,7 +28550,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CPwBEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIMFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -38655,7 +28563,7 @@ } ] }, - "trackingParams": "CPwBEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIMFEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -38679,11 +28587,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CPsBEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIIFEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -38700,7 +28608,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CPoBEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CIEFEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -38709,7 +28617,7 @@ } ] }, - "trackingParams": "CPoBEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIEFEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -38718,7 +28626,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CPkBEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIAFEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X21lZmtpWjRHWlBfYjl4WlF1dGh2VE80emRIX0x4Z1dKQQ%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -38731,11 +28639,11 @@ } ] }, - "trackingParams": "CPkBEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIAFEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CPgBEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CP8EEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -38748,7 +28656,7 @@ "browseId": "MPREb_ns28H4lccF8", "params": "ggMrGilPTEFLNXV5X21lZmtpWjRHWlBfYjl4WlF1dGh2VE80emRIX0x4Z1dKQQ%3D%3D" }, - "clickTrackingParams": "CPYBEKCzAhhVIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CP0EEKCzAhg9IhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -38792,7 +28700,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -38800,7 +28708,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CPcBEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CP4EEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_mefkiZ4GZP_b9xZQuthvTO4zdH_LxgWJA" } @@ -38809,7 +28717,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CPcBEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CP4EEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -38834,7 +28742,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CIUCEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CIwFEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -38850,13 +28758,13 @@ "browseId": "MPREb_ns28H4lccF8", "params": "ggMrGilPTEFLNXV5X21lZmtpWjRHWlBfYjl4WlF1dGh2VE80emRIX0x4Z1dKQQ%3D%3D" }, - "clickTrackingParams": "CPYBEKCzAhhVIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CP0EEKCzAhg9IhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Antisocial (Steel Banglez & Zeph Ellis Remix)" } ] }, - "trackingParams": "CPYBEKCzAhhVIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CP0EEKCzAhg9IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -38876,10 +28784,10 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CPQBEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPsEEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_m3osNf-Lsiz5hQ6R8K-Nnd3wCZbhPMb3c" + "playlistId": "OLAK5uy_mT8OUQihKYqsU5whjdgW2AjMPg4Zuk-dQ" } }, "text": { @@ -38889,7 +28797,7 @@ } ] }, - "trackingParams": "CPQBEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPsEEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -38898,10 +28806,10 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CPMBEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPoEEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_m3osNf-Lsiz5hQ6R8K-Nnd3wCZbhPMb3c" + "playlistId": "RDAMPLOLAK5uy_mT8OUQihKYqsU5whjdgW2AjMPg4Zuk-dQ" } }, "text": { @@ -38911,7 +28819,7 @@ } ] }, - "trackingParams": "CPMBEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPoEEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -38920,7 +28828,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CPEBEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPgEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -38934,16 +28842,22 @@ } ] }, - "trackingParams": "CPIBEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CPkEEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CPEBEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CPgEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { - "playlistId": "OLAK5uy_m3osNf-Lsiz5hQ6R8K-Nnd3wCZbhPMb3c" + "onEmptyQueue": { + "clickTrackingParams": "CPgEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mT8OUQihKYqsU5whjdgW2AjMPg4Zuk-dQ" + } + }, + "playlistId": "OLAK5uy_mT8OUQihKYqsU5whjdgW2AjMPg4Zuk-dQ" } } }, @@ -38954,7 +28868,7 @@ } ] }, - "trackingParams": "CPEBEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPgEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -38963,7 +28877,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CO8BEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPYEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -38977,16 +28891,22 @@ } ] }, - "trackingParams": "CPABEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CPcEEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CO8BEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CPYEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { - "playlistId": "OLAK5uy_m3osNf-Lsiz5hQ6R8K-Nnd3wCZbhPMb3c" + "onEmptyQueue": { + "clickTrackingParams": "CPYEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mT8OUQihKYqsU5whjdgW2AjMPg4Zuk-dQ" + } + }, + "playlistId": "OLAK5uy_mT8OUQihKYqsU5whjdgW2AjMPg4Zuk-dQ" } } }, @@ -38997,7 +28917,7 @@ } ] }, - "trackingParams": "CO8BEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPYEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -39006,7 +28926,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CO0BEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPQEEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -39014,7 +28934,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CO4BEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPUEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -39027,13 +28947,13 @@ } ] }, - "trackingParams": "CO4BEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPUEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -39051,7 +28971,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -39059,11 +28979,11 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CO0BEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPQEEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { - "playlistId": "OLAK5uy_m3osNf-Lsiz5hQ6R8K-Nnd3wCZbhPMb3c" + "playlistId": "OLAK5uy_mT8OUQihKYqsU5whjdgW2AjMPg4Zuk-dQ" } } }, @@ -39074,7 +28994,7 @@ } ] }, - "trackingParams": "CO0BEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPQEEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -39083,7 +29003,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "COsBEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPIEEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -39091,7 +29011,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "COwBEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPMEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -39104,7 +29024,7 @@ } ] }, - "trackingParams": "COwBEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPMEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -39128,11 +29048,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "COsBEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPIEEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -39149,7 +29069,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "COoBEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CPEEEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -39158,7 +29078,7 @@ } ] }, - "trackingParams": "COoBEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CPEEEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -39167,7 +29087,468 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "COkBEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CPAEEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X21UOE9VUWloS1lxc1U1d2hqZGdXMkFqTVBnNFp1ay1kUQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CPAEEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CO8EEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_3WBQ4njLUp6", + "params": "ggMrGilPTEFLNXV5X21UOE9VUWloS1lxc1U1d2hqZGdXMkFqTVBnNFp1ay1kUQ%3D%3D" + }, + "clickTrackingParams": "CO0EEKCzAhg-IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2019" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause South of the Border (Acoustic)" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play South of the Border (Acoustic)" + } + }, + "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": "CO4EEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_mT8OUQihKYqsU5whjdgW2AjMPg4Zuk-dQ" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CO4EEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/DlNfga41lyp3QDA0YGtJYs138V77xlKZaMjRXomOdQGzSxmNKXayb5P4N9BpH4q4Ys-_JJaCdwcvHCDGqg=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/DlNfga41lyp3QDA0YGtJYs138V77xlKZaMjRXomOdQGzSxmNKXayb5P4N9BpH4q4Ys-_JJaCdwcvHCDGqg=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CPwEEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_3WBQ4njLUp6", + "params": "ggMrGilPTEFLNXV5X21UOE9VUWloS1lxc1U1d2hqZGdXMkFqTVBnNFp1ay1kUQ%3D%3D" + }, + "clickTrackingParams": "CO0EEKCzAhg-IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "South of the Border (Acoustic) (feat. Camila Cabello)" + } + ] + }, + "trackingParams": "CO0EEKCzAhg-IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "COsEEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_m3osNf-Lsiz5hQ6R8K-Nnd3wCZbhPMb3c" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "COsEEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "COoEEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_m3osNf-Lsiz5hQ6R8K-Nnd3wCZbhPMb3c" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "COoEEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "COgEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "COkEEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "COgEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "COgEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_m3osNf-Lsiz5hQ6R8K-Nnd3wCZbhPMb3c" + } + }, + "playlistId": "OLAK5uy_m3osNf-Lsiz5hQ6R8K-Nnd3wCZbhPMb3c" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "COgEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "COYEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "COcEEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "COYEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "COYEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_m3osNf-Lsiz5hQ6R8K-Nnd3wCZbhPMb3c" + } + }, + "playlistId": "OLAK5uy_m3osNf-Lsiz5hQ6R8K-Nnd3wCZbhPMb3c" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "COYEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "COQEEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "COUEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "COUEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "COQEEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_m3osNf-Lsiz5hQ6R8K-Nnd3wCZbhPMb3c" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "COQEEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "COIEEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "COMEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "COMEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "COIEEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "COEEEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "COEEEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "COAEEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X20zb3NOZi1Mc2l6NWhRNlI4Sy1ObmQzd0NaYmhQTWIzYw%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -39180,11 +29561,11 @@ } ] }, - "trackingParams": "COkBEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COAEEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "COgBEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CN8EEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -39197,7 +29578,7 @@ "browseId": "MPREb_QnBf7Ep5aVv", "params": "ggMrGilPTEFLNXV5X20zb3NOZi1Mc2l6NWhRNlI4Sy1ObmQzd0NaYmhQTWIzYw%3D%3D" }, - "clickTrackingParams": "COYBEKCzAhhWIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CN0EEKCzAhg_IhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -39241,7 +29622,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -39249,7 +29630,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "COcBEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CN4EEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_m3osNf-Lsiz5hQ6R8K-Nnd3wCZbhPMb3c" } @@ -39258,7 +29639,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "COcBEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CN4EEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -39283,7 +29664,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CPUBEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "COwEEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -39299,13 +29680,13 @@ "browseId": "MPREb_QnBf7Ep5aVv", "params": "ggMrGilPTEFLNXV5X20zb3NOZi1Mc2l6NWhRNlI4Sy1ObmQzd0NaYmhQTWIzYw%3D%3D" }, - "clickTrackingParams": "COYBEKCzAhhWIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CN0EEKCzAhg_IhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "South of the Border (Cheat Codes Remix) (feat. Camila Cabello & Cardi B)" } ] }, - "trackingParams": "COYBEKCzAhhWIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CN0EEKCzAhg_IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -39325,7 +29706,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "COQBEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNsEEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_lfj9IeihkpSO3_hCawqDYKggTOnqoLf6s" @@ -39338,7 +29719,7 @@ } ] }, - "trackingParams": "COQBEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNsEEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -39347,7 +29728,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "COMBEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNoEEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_lfj9IeihkpSO3_hCawqDYKggTOnqoLf6s" @@ -39360,7 +29741,7 @@ } ] }, - "trackingParams": "COMBEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNoEEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -39369,7 +29750,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "COEBEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNgEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -39383,15 +29764,21 @@ } ] }, - "trackingParams": "COIBEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CNkEEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "COEBEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CNgEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNgEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lfj9IeihkpSO3_hCawqDYKggTOnqoLf6s" + } + }, "playlistId": "OLAK5uy_lfj9IeihkpSO3_hCawqDYKggTOnqoLf6s" } } @@ -39403,7 +29790,7 @@ } ] }, - "trackingParams": "COEBEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNgEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -39412,7 +29799,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CN8BEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNYEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -39426,15 +29813,21 @@ } ] }, - "trackingParams": "COABEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CNcEEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CN8BEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CNYEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNYEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lfj9IeihkpSO3_hCawqDYKggTOnqoLf6s" + } + }, "playlistId": "OLAK5uy_lfj9IeihkpSO3_hCawqDYKggTOnqoLf6s" } } @@ -39446,7 +29839,7 @@ } ] }, - "trackingParams": "CN8BEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNYEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -39455,7 +29848,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CN0BEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNQEEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -39463,7 +29856,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CN4BEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNUEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -39476,13 +29869,13 @@ } ] }, - "trackingParams": "CN4BEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNUEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -39500,7 +29893,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -39508,7 +29901,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CN0BEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNQEEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -39523,7 +29916,7 @@ } ] }, - "trackingParams": "CN0BEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNQEEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -39532,7 +29925,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CNsBEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNIEEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -39540,7 +29933,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CNwBEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNMEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -39553,7 +29946,7 @@ } ] }, - "trackingParams": "CNwBEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNMEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -39577,11 +29970,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CNsBEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNIEEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -39598,7 +29991,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CNoBEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CNEEEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -39607,7 +30000,7 @@ } ] }, - "trackingParams": "CNoBEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNEEEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -39616,7 +30009,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CNkBEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNAEEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X2xmajlJZWloa3BTTzNfaENhd3FEWUtnZ1RPbnFvTGY2cw%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -39629,11 +30022,11 @@ } ] }, - "trackingParams": "CNkBEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNAEEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CNgBEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CM8EEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -39646,7 +30039,7 @@ "browseId": "MPREb_FmQfCgcHea7", "params": "ggMrGilPTEFLNXV5X2xmajlJZWloa3BTTzNfaENhd3FEWUtnZ1RPbnFvTGY2cw%3D%3D" }, - "clickTrackingParams": "CNYBEKCzAhhXIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CM0EEKCzAhhAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -39690,7 +30083,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -39698,7 +30091,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CNcBEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CM4EEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_lfj9IeihkpSO3_hCawqDYKggTOnqoLf6s" } @@ -39707,7 +30100,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CNcBEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CM4EEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -39732,7 +30125,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "COUBEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CNwEEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -39748,13 +30141,13 @@ "browseId": "MPREb_FmQfCgcHea7", "params": "ggMrGilPTEFLNXV5X2xmajlJZWloa3BTTzNfaENhd3FEWUtnZ1RPbnFvTGY2cw%3D%3D" }, - "clickTrackingParams": "CNYBEKCzAhhXIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CM0EEKCzAhhAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "South of the Border (Andy Jarvis Remix) (feat. Camila Cabello & Cardi B)" } ] }, - "trackingParams": "CNYBEKCzAhhXIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CM0EEKCzAhhAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -39774,7 +30167,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CNQBEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMsEEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_lxQvNmbYTaZmwDWsQfRxjPDZf3PqBfcSQ" @@ -39787,7 +30180,7 @@ } ] }, - "trackingParams": "CNQBEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMsEEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -39796,7 +30189,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CNMBEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMoEEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_lxQvNmbYTaZmwDWsQfRxjPDZf3PqBfcSQ" @@ -39809,7 +30202,7 @@ } ] }, - "trackingParams": "CNMBEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMoEEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -39818,7 +30211,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CNEBEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMgEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -39832,15 +30225,21 @@ } ] }, - "trackingParams": "CNIBEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CMkEEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CNEBEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CMgEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMgEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lxQvNmbYTaZmwDWsQfRxjPDZf3PqBfcSQ" + } + }, "playlistId": "OLAK5uy_lxQvNmbYTaZmwDWsQfRxjPDZf3PqBfcSQ" } } @@ -39852,7 +30251,7 @@ } ] }, - "trackingParams": "CNEBEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMgEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -39861,7 +30260,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CM8BEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMYEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -39875,15 +30274,21 @@ } ] }, - "trackingParams": "CNABEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CMcEEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CM8BEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CMYEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMYEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lxQvNmbYTaZmwDWsQfRxjPDZf3PqBfcSQ" + } + }, "playlistId": "OLAK5uy_lxQvNmbYTaZmwDWsQfRxjPDZf3PqBfcSQ" } } @@ -39895,7 +30300,7 @@ } ] }, - "trackingParams": "CM8BEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMYEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -39904,7 +30309,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CM0BEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMQEEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -39912,7 +30317,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CM4BEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMUEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -39925,13 +30330,13 @@ } ] }, - "trackingParams": "CM4BEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMUEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -39949,7 +30354,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -39957,7 +30362,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CM0BEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMQEEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -39972,7 +30377,7 @@ } ] }, - "trackingParams": "CM0BEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMQEEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -39981,7 +30386,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CMsBEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMIEEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -39989,7 +30394,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CMwBEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMMEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -40002,7 +30407,7 @@ } ] }, - "trackingParams": "CMwBEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMMEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -40026,11 +30431,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CMsBEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMIEEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -40047,7 +30452,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CMoBEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CMEEEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -40056,7 +30461,7 @@ } ] }, - "trackingParams": "CMoBEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMEEEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -40065,7 +30470,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CMkBEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMAEEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X2x4UXZObWJZVGFabXdEV3NRZlJ4alBEWmYzUHFCZmNTUQ%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -40078,11 +30483,11 @@ } ] }, - "trackingParams": "CMkBEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMAEEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CMgBEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CL8EEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -40095,7 +30500,7 @@ "browseId": "MPREb_6QJLJoODMCK", "params": "ggMrGilPTEFLNXV5X2x4UXZObWJZVGFabXdEV3NRZlJ4alBEWmYzUHFCZmNTUQ%3D%3D" }, - "clickTrackingParams": "CMYBEKCzAhhYIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CL0EEKCzAhhBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -40139,7 +30544,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -40147,7 +30552,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CMcBEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CL4EEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_lxQvNmbYTaZmwDWsQfRxjPDZf3PqBfcSQ" } @@ -40156,7 +30561,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CMcBEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CL4EEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -40181,7 +30586,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CNUBEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CMwEEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -40197,13 +30602,13 @@ "browseId": "MPREb_6QJLJoODMCK", "params": "ggMrGilPTEFLNXV5X2x4UXZObWJZVGFabXdEV3NRZlJ4alBEWmYzUHFCZmNTUQ%3D%3D" }, - "clickTrackingParams": "CMYBEKCzAhhYIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CL0EEKCzAhhBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "South of the Border (Sam Feldt Remix) (feat. Camila Cabello & Cardi B)" } ] }, - "trackingParams": "CMYBEKCzAhhYIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CL0EEKCzAhhBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -40223,7 +30628,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CMQBEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLsEEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_nZ5HAXc_4ML7LhSBxq4RKJN6hiDp7TVQ0" @@ -40236,7 +30641,7 @@ } ] }, - "trackingParams": "CMQBEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLsEEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -40245,7 +30650,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CMMBEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLoEEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_nZ5HAXc_4ML7LhSBxq4RKJN6hiDp7TVQ0" @@ -40258,7 +30663,7 @@ } ] }, - "trackingParams": "CMMBEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLoEEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -40267,7 +30672,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CMEBEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLgEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -40281,15 +30686,21 @@ } ] }, - "trackingParams": "CMIBEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CLkEEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CMEBEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CLgEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CLgEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nZ5HAXc_4ML7LhSBxq4RKJN6hiDp7TVQ0" + } + }, "playlistId": "OLAK5uy_nZ5HAXc_4ML7LhSBxq4RKJN6hiDp7TVQ0" } } @@ -40301,7 +30712,7 @@ } ] }, - "trackingParams": "CMEBEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLgEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -40310,7 +30721,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CL8BEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLYEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -40324,15 +30735,21 @@ } ] }, - "trackingParams": "CMABEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CLcEEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CL8BEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CLYEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CLYEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nZ5HAXc_4ML7LhSBxq4RKJN6hiDp7TVQ0" + } + }, "playlistId": "OLAK5uy_nZ5HAXc_4ML7LhSBxq4RKJN6hiDp7TVQ0" } } @@ -40344,7 +30761,7 @@ } ] }, - "trackingParams": "CL8BEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLYEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -40353,7 +30770,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CL0BEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLQEEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -40361,7 +30778,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CL4BEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLUEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -40374,13 +30791,13 @@ } ] }, - "trackingParams": "CL4BEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLUEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -40398,7 +30815,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -40406,7 +30823,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CL0BEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLQEEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -40421,7 +30838,7 @@ } ] }, - "trackingParams": "CL0BEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLQEEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -40430,7 +30847,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CLsBEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLIEEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -40438,7 +30855,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CLwBEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLMEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -40451,7 +30868,7 @@ } ] }, - "trackingParams": "CLwBEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLMEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -40475,11 +30892,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CLsBEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLIEEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -40496,7 +30913,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CLoBEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CLEEEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -40505,7 +30922,7 @@ } ] }, - "trackingParams": "CLoBEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLEEEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -40514,7 +30931,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CLkBEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLAEEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X25aNUhBWGNfNE1MN0xoU0J4cTRSS0pONmhpRHA3VFZRMA%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -40527,11 +30944,11 @@ } ] }, - "trackingParams": "CLkBEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLAEEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CLgBEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CK8EEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -40544,7 +30961,7 @@ "browseId": "MPREb_E1PM8zgWWRQ", "params": "ggMrGilPTEFLNXV5X25aNUhBWGNfNE1MN0xoU0J4cTRSS0pONmhpRHA3VFZRMA%3D%3D" }, - "clickTrackingParams": "CLUBEKCzAhhZIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CKwEEKCzAhhCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -40570,7 +30987,7 @@ "icon": { "iconType": "MUSIC_EXPLICIT_BADGE" }, - "trackingParams": "CLYBEKHtAhgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CK0EEKHtAhgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], @@ -40603,7 +31020,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -40611,7 +31028,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CLcBEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CK4EEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_nZ5HAXc_4ML7LhSBxq4RKJN6hiDp7TVQ0" } @@ -40620,7 +31037,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CLcBEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CK4EEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -40645,7 +31062,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CMUBEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CLwEEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -40661,13 +31078,13 @@ "browseId": "MPREb_E1PM8zgWWRQ", "params": "ggMrGilPTEFLNXV5X25aNUhBWGNfNE1MN0xoU0J4cTRSS0pONmhpRHA3VFZRMA%3D%3D" }, - "clickTrackingParams": "CLUBEKCzAhhZIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CKwEEKCzAhhCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Take Me Back to London (Remix) (feat. Stormzy, Jaykae & Aitch)" } ] }, - "trackingParams": "CLUBEKCzAhhZIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKwEEKCzAhhCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -40687,7 +31104,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CLMBEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CKoEEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_kper8eaDXY_cS2eKiAW6VvS3JHWjgnfJg" @@ -40700,7 +31117,7 @@ } ] }, - "trackingParams": "CLMBEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKoEEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -40709,7 +31126,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CLIBEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CKkEEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_kper8eaDXY_cS2eKiAW6VvS3JHWjgnfJg" @@ -40722,7 +31139,7 @@ } ] }, - "trackingParams": "CLIBEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKkEEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -40731,7 +31148,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CLABEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CKcEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -40745,15 +31162,21 @@ } ] }, - "trackingParams": "CLEBEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CKgEEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CLABEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CKcEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKcEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_kper8eaDXY_cS2eKiAW6VvS3JHWjgnfJg" + } + }, "playlistId": "OLAK5uy_kper8eaDXY_cS2eKiAW6VvS3JHWjgnfJg" } } @@ -40765,7 +31188,7 @@ } ] }, - "trackingParams": "CLABEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKcEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -40774,7 +31197,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CK4BEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CKUEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -40788,15 +31211,21 @@ } ] }, - "trackingParams": "CK8BEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CKYEEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CK4BEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CKUEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKUEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_kper8eaDXY_cS2eKiAW6VvS3JHWjgnfJg" + } + }, "playlistId": "OLAK5uy_kper8eaDXY_cS2eKiAW6VvS3JHWjgnfJg" } } @@ -40808,7 +31237,7 @@ } ] }, - "trackingParams": "CK4BEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKUEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -40817,7 +31246,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CKwBEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CKMEEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -40825,7 +31254,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CK0BEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CKQEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -40838,13 +31267,13 @@ } ] }, - "trackingParams": "CK0BEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKQEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -40862,7 +31291,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -40870,7 +31299,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CKwBEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CKMEEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -40885,7 +31314,7 @@ } ] }, - "trackingParams": "CKwBEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKMEEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -40894,7 +31323,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CKoBEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CKEEEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -40902,7 +31331,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CKsBEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CKIEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -40915,7 +31344,7 @@ } ] }, - "trackingParams": "CKsBEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKIEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -40939,11 +31368,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CKoBEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKEEEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -40960,7 +31389,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CKkBEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CKAEEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -40969,7 +31398,7 @@ } ] }, - "trackingParams": "CKkBEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKAEEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -40978,7 +31407,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CKgBEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CJ8EEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X2twZXI4ZWFEWFlfY1MyZUtpQVc2VnZTM0pIV2pnbmZKZw%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -40991,11 +31420,11 @@ } ] }, - "trackingParams": "CKgBEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJ8EEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CKcBEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJ4EEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -41008,7 +31437,7 @@ "browseId": "MPREb_UPQWEkgkfJm", "params": "ggMrGilPTEFLNXV5X2twZXI4ZWFEWFlfY1MyZUtpQVc2VnZTM0pIV2pnbmZKZw%3D%3D" }, - "clickTrackingParams": "CKUBEKCzAhhaIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CJwEEKCzAhhDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -41052,7 +31481,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -41060,7 +31489,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CKYBEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CJ0EEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_kper8eaDXY_cS2eKiAW6VvS3JHWjgnfJg" } @@ -41069,7 +31498,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CKYBEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CJ0EEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -41094,7 +31523,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CLQBEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CKsEEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -41110,13 +31539,13 @@ "browseId": "MPREb_UPQWEkgkfJm", "params": "ggMrGilPTEFLNXV5X2twZXI4ZWFEWFlfY1MyZUtpQVc2VnZTM0pIV2pnbmZKZw%3D%3D" }, - "clickTrackingParams": "CKUBEKCzAhhaIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CJwEEKCzAhhDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Antisocial (Ghali Remix)" } ] }, - "trackingParams": "CKUBEKCzAhhaIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJwEEKCzAhhDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -41136,10 +31565,10 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CKMBEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CJoEEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_nwzlow7ZRnZTz0yfbIFb-7w81ZoOBlB2Y" + "playlistId": "OLAK5uy_kwPPyWyXMc28XV-SsyhvhpfZm8E1DIxOY" } }, "text": { @@ -41149,7 +31578,7 @@ } ] }, - "trackingParams": "CKMBEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJoEEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -41158,10 +31587,10 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CKIBEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CJkEEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_nwzlow7ZRnZTz0yfbIFb-7w81ZoOBlB2Y" + "playlistId": "RDAMPLOLAK5uy_kwPPyWyXMc28XV-SsyhvhpfZm8E1DIxOY" } }, "text": { @@ -41171,7 +31600,7 @@ } ] }, - "trackingParams": "CKIBEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJkEEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -41180,7 +31609,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CKABEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CJcEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -41194,16 +31623,22 @@ } ] }, - "trackingParams": "CKEBEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CJgEEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CKABEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CJcEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { - "playlistId": "OLAK5uy_nwzlow7ZRnZTz0yfbIFb-7w81ZoOBlB2Y" + "onEmptyQueue": { + "clickTrackingParams": "CJcEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_kwPPyWyXMc28XV-SsyhvhpfZm8E1DIxOY" + } + }, + "playlistId": "OLAK5uy_kwPPyWyXMc28XV-SsyhvhpfZm8E1DIxOY" } } }, @@ -41214,7 +31649,7 @@ } ] }, - "trackingParams": "CKABEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJcEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -41223,7 +31658,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CJ4BEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CJUEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -41237,16 +31672,22 @@ } ] }, - "trackingParams": "CJ8BEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CJYEEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CJ4BEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CJUEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { - "playlistId": "OLAK5uy_nwzlow7ZRnZTz0yfbIFb-7w81ZoOBlB2Y" + "onEmptyQueue": { + "clickTrackingParams": "CJUEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_kwPPyWyXMc28XV-SsyhvhpfZm8E1DIxOY" + } + }, + "playlistId": "OLAK5uy_kwPPyWyXMc28XV-SsyhvhpfZm8E1DIxOY" } } }, @@ -41257,7 +31698,7 @@ } ] }, - "trackingParams": "CJ4BEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJUEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -41266,7 +31707,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CJwBEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CJMEEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -41274,7 +31715,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CJ0BEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CJQEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -41287,13 +31728,13 @@ } ] }, - "trackingParams": "CJ0BEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJQEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -41311,7 +31752,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -41319,11 +31760,11 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CJwBEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CJMEEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { - "playlistId": "OLAK5uy_nwzlow7ZRnZTz0yfbIFb-7w81ZoOBlB2Y" + "playlistId": "OLAK5uy_kwPPyWyXMc28XV-SsyhvhpfZm8E1DIxOY" } } }, @@ -41334,7 +31775,7 @@ } ] }, - "trackingParams": "CJwBEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJMEEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -41343,7 +31784,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CJoBEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CJEEEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -41351,7 +31792,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CJsBEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CJIEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -41364,7 +31805,7 @@ } ] }, - "trackingParams": "CJsBEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJIEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -41388,11 +31829,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CJoBEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJEEEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -41409,7 +31850,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CJkBEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CJAEEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -41418,7 +31859,7 @@ } ] }, - "trackingParams": "CJkBEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJAEEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -41427,7 +31868,1866 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CJgBEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CI8EEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2t3UFB5V3lYTWMyOFhWLVNzeWh2aHBmWm04RTFESXhPWQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CI8EEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CI4EEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_VIXO8xFh4IZ", + "params": "ggMrGilPTEFLNXV5X2t3UFB5V3lYTWMyOFhWLVNzeWh2aHBmWm04RTFESXhPWQ%3D%3D" + }, + "clickTrackingParams": "CIsEEKCzAhhEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Album" + }, + { + "text": " • " + }, + { + "text": "2019" + } + ] + }, + "subtitleBadges": [ + { + "musicInlineBadgeRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + }, + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "trackingParams": "CIwEEKHtAhgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause No.6 Collaborations Project" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play No.6 Collaborations Project" + } + }, + "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": "CI0EEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_kwPPyWyXMc28XV-SsyhvhpfZm8E1DIxOY" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CI0EEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/2rSqxXTYIox46twhc2zC73tSPuzHz9XBx04tojSXQmXN4SK7NgYdwX5PgqcX7reoPG_3WrjnIu-hbm5G=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/2rSqxXTYIox46twhc2zC73tSPuzHz9XBx04tojSXQmXN4SK7NgYdwX5PgqcX7reoPG_3WrjnIu-hbm5G=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CJsEEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_VIXO8xFh4IZ", + "params": "ggMrGilPTEFLNXV5X2t3UFB5V3lYTWMyOFhWLVNzeWh2aHBmWm04RTFESXhPWQ%3D%3D" + }, + "clickTrackingParams": "CIsEEKCzAhhEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "No.6 Collaborations Project" + } + ] + }, + "trackingParams": "CIsEEKCzAhhEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CIkEEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_lFjaQU_KdktYdX79LLFe89xC7c4xmseIU" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CIkEEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIgEEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_lFjaQU_KdktYdX79LLFe89xC7c4xmseIU" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CIgEEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIYEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CIcEEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CIYEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIYEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lFjaQU_KdktYdX79LLFe89xC7c4xmseIU" + } + }, + "playlistId": "OLAK5uy_lFjaQU_KdktYdX79LLFe89xC7c4xmseIU" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CIYEEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIQEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CIUEEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CIQEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIQEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lFjaQU_KdktYdX79LLFe89xC7c4xmseIU" + } + }, + "playlistId": "OLAK5uy_lFjaQU_KdktYdX79LLFe89xC7c4xmseIU" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CIQEEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CIIEEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CIMEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CIMEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CIIEEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_lFjaQU_KdktYdX79LLFe89xC7c4xmseIU" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CIIEEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIAEEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CIEEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CIEEEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CIAEEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CP8DEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CP8DEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CP4DEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2xGamFRVV9LZGt0WWRYNzlMTEZlODl4QzdjNHhtc2VJVQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CP4DEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CP0DEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_CyMAAeTdw1p", + "params": "ggMrGilPTEFLNXV5X2xGamFRVV9LZGt0WWRYNzlMTEZlODl4QzdjNHhtc2VJVQ%3D%3D" + }, + "clickTrackingParams": "CPsDEKCzAhhFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2019" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Best Part of Me" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Best Part of Me" + } + }, + "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": "CPwDEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_lFjaQU_KdktYdX79LLFe89xC7c4xmseIU" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CPwDEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/aMADkfYpKT-mm2P7GdMIPvFIgbY4RCf_8OZCBCykB_gtxEkWUvKtLzKJDvAol0MCfBlOX83bKaf3tp4l=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/aMADkfYpKT-mm2P7GdMIPvFIgbY4RCf_8OZCBCykB_gtxEkWUvKtLzKJDvAol0MCfBlOX83bKaf3tp4l=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CIoEEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_CyMAAeTdw1p", + "params": "ggMrGilPTEFLNXV5X2xGamFRVV9LZGt0WWRYNzlMTEZlODl4QzdjNHhtc2VJVQ%3D%3D" + }, + "clickTrackingParams": "CPsDEKCzAhhFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "Best Part of Me (feat. Yebba )" + } + ] + }, + "trackingParams": "CPsDEKCzAhhFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CPkDEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_mTby6lJGdb4VOOYTUv0YC_2iAqu3RsxJQ" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CPkDEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPgDEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_mTby6lJGdb4VOOYTUv0YC_2iAqu3RsxJQ" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CPgDEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPYDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CPcDEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CPYDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CPYDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mTby6lJGdb4VOOYTUv0YC_2iAqu3RsxJQ" + } + }, + "playlistId": "OLAK5uy_mTby6lJGdb4VOOYTUv0YC_2iAqu3RsxJQ" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CPYDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPQDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CPUDEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CPQDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CPQDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mTby6lJGdb4VOOYTUv0YC_2iAqu3RsxJQ" + } + }, + "playlistId": "OLAK5uy_mTby6lJGdb4VOOYTUv0YC_2iAqu3RsxJQ" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CPQDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CPIDEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CPMDEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CPMDEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CPIDEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_mTby6lJGdb4VOOYTUv0YC_2iAqu3RsxJQ" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CPIDEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPADEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CPEDEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CPEDEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CPADEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CO8DEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CO8DEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CO4DEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X21UYnk2bEpHZGI0Vk9PWVRVdjBZQ18yaUFxdTNSc3hKUQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CO4DEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CO0DEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_P3ADtHY53Fe", + "params": "ggMrGilPTEFLNXV5X21UYnk2bEpHZGI0Vk9PWVRVdjBZQ18yaUFxdTNSc3hKUQ%3D%3D" + }, + "clickTrackingParams": "COsDEKCzAhhGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2019" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause BLOW" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play BLOW" + } + }, + "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": "COwDEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_mTby6lJGdb4VOOYTUv0YC_2iAqu3RsxJQ" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "COwDEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/ao3pNzel9rJ3JoW5TQmnUZTa6ADc-rUk5bgTMHtnm2SWPiYh6vygBvfCV0QJZPWhIXuURiVde1eaIojk=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/ao3pNzel9rJ3JoW5TQmnUZTa6ADc-rUk5bgTMHtnm2SWPiYh6vygBvfCV0QJZPWhIXuURiVde1eaIojk=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CPoDEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_P3ADtHY53Fe", + "params": "ggMrGilPTEFLNXV5X21UYnk2bEpHZGI0Vk9PWVRVdjBZQ18yaUFxdTNSc3hKUQ%3D%3D" + }, + "clickTrackingParams": "COsDEKCzAhhGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "BLOW" + } + ] + }, + "trackingParams": "COsDEKCzAhhGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "COkDEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_mE6SUV0sis7Hd8ntTXQmABsidPIyJ2X9g" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "COkDEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "COgDEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_mE6SUV0sis7Hd8ntTXQmABsidPIyJ2X9g" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "COgDEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "COYDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "COcDEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "COYDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "COYDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mE6SUV0sis7Hd8ntTXQmABsidPIyJ2X9g" + } + }, + "playlistId": "OLAK5uy_mE6SUV0sis7Hd8ntTXQmABsidPIyJ2X9g" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "COYDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "COQDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "COUDEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "COQDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "COQDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mE6SUV0sis7Hd8ntTXQmABsidPIyJ2X9g" + } + }, + "playlistId": "OLAK5uy_mE6SUV0sis7Hd8ntTXQmABsidPIyJ2X9g" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "COQDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "COIDEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "COMDEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "COMDEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "COIDEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_mE6SUV0sis7Hd8ntTXQmABsidPIyJ2X9g" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "COIDEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "COADEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "COEDEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "COEDEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "COADEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CN8DEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CN8DEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CN4DEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X21FNlNVVjBzaXM3SGQ4bnRUWFFtQUJzaWRQSXlKMlg5Zw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CN4DEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CN0DEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_AVphTUtHNCE", + "params": "ggMrGilPTEFLNXV5X21FNlNVVjBzaXM3SGQ4bnRUWFFtQUJzaWRQSXlKMlg5Zw%3D%3D" + }, + "clickTrackingParams": "CNsDEKCzAhhHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2019" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Beautiful People (Acoustic)" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Beautiful People (Acoustic)" + } + }, + "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": "CNwDEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_mE6SUV0sis7Hd8ntTXQmABsidPIyJ2X9g" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CNwDEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/_fAsm5XrN9i5aLcLVTXuT56gypsHcZ8DnBle6E61SvFJrlQCgjaRVF0KDG2vgUetq5yVKHWvgokwzjuw_Q=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/_fAsm5XrN9i5aLcLVTXuT56gypsHcZ8DnBle6E61SvFJrlQCgjaRVF0KDG2vgUetq5yVKHWvgokwzjuw_Q=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "COoDEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_AVphTUtHNCE", + "params": "ggMrGilPTEFLNXV5X21FNlNVVjBzaXM3SGQ4bnRUWFFtQUJzaWRQSXlKMlg5Zw%3D%3D" + }, + "clickTrackingParams": "CNsDEKCzAhhHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "Beautiful People (Acoustic)" + } + ] + }, + "trackingParams": "CNsDEKCzAhhHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CNkDEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_nwzlow7ZRnZTz0yfbIFb-7w81ZoOBlB2Y" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CNkDEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNgDEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_nwzlow7ZRnZTz0yfbIFb-7w81ZoOBlB2Y" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CNgDEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNYDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CNcDEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CNYDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNYDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nwzlow7ZRnZTz0yfbIFb-7w81ZoOBlB2Y" + } + }, + "playlistId": "OLAK5uy_nwzlow7ZRnZTz0yfbIFb-7w81ZoOBlB2Y" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CNYDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNQDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CNUDEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CNQDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNQDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nwzlow7ZRnZTz0yfbIFb-7w81ZoOBlB2Y" + } + }, + "playlistId": "OLAK5uy_nwzlow7ZRnZTz0yfbIFb-7w81ZoOBlB2Y" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CNQDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CNIDEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CNMDEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CNMDEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CNIDEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_nwzlow7ZRnZTz0yfbIFb-7w81ZoOBlB2Y" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CNIDEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNADEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CNEDEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CNEDEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CNADEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CM8DEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CM8DEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CM4DEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X253emxvdzdaUm5aVHoweWZiSUZiLTd3ODFab09CbEIyWQ%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -41440,11 +33740,11 @@ } ] }, - "trackingParams": "CJgBEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CM4DEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CJcBEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CM0DEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -41457,7 +33757,7 @@ "browseId": "MPREb_jUrQouht1aX", "params": "ggMrGilPTEFLNXV5X253emxvdzdaUm5aVHoweWZiSUZiLTd3ODFab09CbEIyWQ%3D%3D" }, - "clickTrackingParams": "CJUBEKCzAhhbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CMsDEKCzAhhIIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -41501,7 +33801,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -41509,7 +33809,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CJYBEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CMwDEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_nwzlow7ZRnZTz0yfbIFb-7w81ZoOBlB2Y" } @@ -41518,7 +33818,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CJYBEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CMwDEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -41543,7 +33843,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CKQBEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CNoDEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -41559,13 +33859,13 @@ "browseId": "MPREb_jUrQouht1aX", "params": "ggMrGilPTEFLNXV5X253emxvdzdaUm5aVHoweWZiSUZiLTd3ODFab09CbEIyWQ%3D%3D" }, - "clickTrackingParams": "CJUBEKCzAhhbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CMsDEKCzAhhIIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Beautiful People (Jack Wins Remix) (feat. Khalid)" } ] }, - "trackingParams": "CJUBEKCzAhhbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMsDEKCzAhhIIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -41585,7 +33885,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CJMBEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMkDEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_lY_dSe-XRF21syJw9ZsB0JZcHo9gTugF0" @@ -41598,7 +33898,7 @@ } ] }, - "trackingParams": "CJMBEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMkDEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -41607,7 +33907,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CJIBEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMgDEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_lY_dSe-XRF21syJw9ZsB0JZcHo9gTugF0" @@ -41620,7 +33920,7 @@ } ] }, - "trackingParams": "CJIBEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMgDEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -41629,7 +33929,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CJABEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMYDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -41643,15 +33943,21 @@ } ] }, - "trackingParams": "CJEBEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CMcDEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CJABEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CMYDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMYDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lY_dSe-XRF21syJw9ZsB0JZcHo9gTugF0" + } + }, "playlistId": "OLAK5uy_lY_dSe-XRF21syJw9ZsB0JZcHo9gTugF0" } } @@ -41663,7 +33969,7 @@ } ] }, - "trackingParams": "CJABEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMYDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -41672,7 +33978,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CI4BEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMQDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -41686,15 +33992,21 @@ } ] }, - "trackingParams": "CI8BEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CMUDEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CI4BEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CMQDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMQDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lY_dSe-XRF21syJw9ZsB0JZcHo9gTugF0" + } + }, "playlistId": "OLAK5uy_lY_dSe-XRF21syJw9ZsB0JZcHo9gTugF0" } } @@ -41706,7 +34018,7 @@ } ] }, - "trackingParams": "CI4BEPvvBRgDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMQDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -41715,7 +34027,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CIwBEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMIDEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -41723,7 +34035,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CI0BEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMMDEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -41736,13 +34048,13 @@ } ] }, - "trackingParams": "CI0BEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMMDEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -41760,7 +34072,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -41768,7 +34080,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CIwBEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMIDEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -41783,7 +34095,7 @@ } ] }, - "trackingParams": "CIwBEIT_BRgEIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMIDEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -41792,7 +34104,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CIoBEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMADEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -41800,7 +34112,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CIsBEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMEDEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -41813,7 +34125,7 @@ } ] }, - "trackingParams": "CIsBEPBbIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMEDEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -41837,11 +34149,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CIoBEMOUBhgFIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMADEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -41858,7 +34170,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CIkBEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CL8DEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -41867,7 +34179,7 @@ } ] }, - "trackingParams": "CIkBEJD7BRgGIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CL8DEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -41876,7 +34188,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CIgBEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CL4DEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X2xZX2RTZS1YUkYyMXN5Snc5WnNCMEpaY0hvOWdUdWdGMA%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -41889,11 +34201,11 @@ } ] }, - "trackingParams": "CIgBEJH7BRgHIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CL4DEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CIcBEKc7IhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CL0DEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -41906,7 +34218,7 @@ "browseId": "MPREb_6dy5LrlAvnc", "params": "ggMrGilPTEFLNXV5X2xZX2RTZS1YUkYyMXN5Snc5WnNCMEpaY0hvOWdUdWdGMA%3D%3D" }, - "clickTrackingParams": "CIUBEKCzAhhcIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CLsDEKCzAhhJIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -41950,7 +34262,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -41958,7 +34270,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CIYBEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "clickTrackingParams": "CLwDEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_lY_dSe-XRF21syJw9ZsB0JZcHo9gTugF0" } @@ -41967,7 +34279,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CIYBEMjeAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CLwDEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -41992,7 +34304,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CJQBEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CMoDEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -42008,13 +34320,13 @@ "browseId": "MPREb_6dy5LrlAvnc", "params": "ggMrGilPTEFLNXV5X2xZX2RTZS1YUkYyMXN5Snc5WnNCMEpaY0hvOWdUdWdGMA%3D%3D" }, - "clickTrackingParams": "CIUBEKCzAhhcIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CLsDEKCzAhhJIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Beautiful People (NOTD Remix) (feat. Khalid)" } ] }, - "trackingParams": "CIUBEKCzAhhcIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLsDEKCzAhhJIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -42034,7 +34346,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CIMBEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLkDEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_kn0JGtUNkpwEzjmSLqvvJ-dGp_-IiIO68" @@ -42047,7 +34359,7 @@ } ] }, - "trackingParams": "CIMBEJrzBRgAIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLkDEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -42056,7 +34368,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CIIBEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLgDEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_kn0JGtUNkpwEzjmSLqvvJ-dGp_-IiIO68" @@ -42069,7 +34381,7 @@ } ] }, - "trackingParams": "CIIBEJvzBRgBIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLgDEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -42078,7 +34390,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CIABEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLYDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -42092,15 +34404,21 @@ } ] }, - "trackingParams": "CIEBEMrHAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CLcDEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CIABEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "clickTrackingParams": "CLYDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CLYDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_kn0JGtUNkpwEzjmSLqvvJ-dGp_-IiIO68" + } + }, "playlistId": "OLAK5uy_kn0JGtUNkpwEzjmSLqvvJ-dGp_-IiIO68" } } @@ -42112,7 +34430,7 @@ } ] }, - "trackingParams": "CIABEL7uBRgCIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLYDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -42121,7 +34439,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CH4Q--8FGAMiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CLQDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -42135,15 +34453,21 @@ } ] }, - "trackingParams": "CH8QyscDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLUDEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CH4Q--8FGAMiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CLQDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CLQDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_kn0JGtUNkpwEzjmSLqvvJ-dGp_-IiIO68" + } + }, "playlistId": "OLAK5uy_kn0JGtUNkpwEzjmSLqvvJ-dGp_-IiIO68" } } @@ -42155,7 +34479,7 @@ } ] }, - "trackingParams": "CH4Q--8FGAMiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CLQDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -42164,7 +34488,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CHwQhP8FGAQiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CLIDEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -42172,7 +34496,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CH0Q8FsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CLMDEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -42185,13 +34509,13 @@ } ] }, - "trackingParams": "CH0Q8FsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CLMDEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -42209,7 +34533,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -42217,7 +34541,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CHwQhP8FGAQiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CLIDEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -42232,7 +34556,7 @@ } ] }, - "trackingParams": "CHwQhP8FGAQiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CLIDEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -42241,7 +34565,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CHoQw5QGGAUiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CLADEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -42249,7 +34573,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CHsQ8FsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CLEDEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -42262,7 +34586,7 @@ } ] }, - "trackingParams": "CHsQ8FsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CLEDEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -42286,11 +34610,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CHoQw5QGGAUiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CLADEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -42307,7 +34631,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CHkQkPsFGAYiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CK8DEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -42316,7 +34640,7 @@ } ] }, - "trackingParams": "CHkQkPsFGAYiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CK8DEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -42325,7 +34649,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CHgQkfsFGAciEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CK4DEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X2tuMEpHdFVOa3B3RXpqbVNMcXZ2Si1kR3BfLUlpSU82OA%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -42338,11 +34662,11 @@ } ] }, - "trackingParams": "CHgQkfsFGAciEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CK4DEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CHcQpzsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CK0DEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -42355,7 +34679,7 @@ "browseId": "MPREb_nACNcDlNMea", "params": "ggMrGilPTEFLNXV5X2tuMEpHdFVOa3B3RXpqbVNMcXZ2Si1kR3BfLUlpSU82OA%3D%3D" }, - "clickTrackingParams": "CHUQoLMCGF0iEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CKsDEKCzAhhKIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -42399,7 +34723,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -42407,7 +34731,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CHYQyN4CIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CKwDEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_kn0JGtUNkpwEzjmSLqvvJ-dGp_-IiIO68" } @@ -42416,7 +34740,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CHYQyN4CIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKwDEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -42441,7 +34765,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CIQBEIS_AiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CLoDEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -42457,13 +34781,13 @@ "browseId": "MPREb_nACNcDlNMea", "params": "ggMrGilPTEFLNXV5X2tuMEpHdFVOa3B3RXpqbVNMcXZ2Si1kR3BfLUlpSU82OA%3D%3D" }, - "clickTrackingParams": "CHUQoLMCGF0iEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CKsDEKCzAhhKIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Beautiful People (Danny L Harle Harlecore Remix) (feat. Khalid)" } ] }, - "trackingParams": "CHUQoLMCGF0iEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CKsDEKCzAhhKIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -42483,10 +34807,10 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CHMQmvMFGAAiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CKkDEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_n9UBeFFMf7nFEnF4i1AY9xhtYHpzXJ3fQ" + "playlistId": "OLAK5uy_lqxPSiV2PYJKiD_PyLHgxWXIVi68Zf9jo" } }, "text": { @@ -42496,7 +34820,7 @@ } ] }, - "trackingParams": "CHMQmvMFGAAiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CKkDEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -42505,10 +34829,10 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CHIQm_MFGAEiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CKgDEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_n9UBeFFMf7nFEnF4i1AY9xhtYHpzXJ3fQ" + "playlistId": "RDAMPLOLAK5uy_lqxPSiV2PYJKiD_PyLHgxWXIVi68Zf9jo" } }, "text": { @@ -42518,7 +34842,7 @@ } ] }, - "trackingParams": "CHIQm_MFGAEiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CKgDEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -42527,7 +34851,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CHAQvu4FGAIiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CKYDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -42541,16 +34865,22 @@ } ] }, - "trackingParams": "CHEQyscDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKcDEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CHAQvu4FGAIiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CKYDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { - "playlistId": "OLAK5uy_n9UBeFFMf7nFEnF4i1AY9xhtYHpzXJ3fQ" + "onEmptyQueue": { + "clickTrackingParams": "CKYDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lqxPSiV2PYJKiD_PyLHgxWXIVi68Zf9jo" + } + }, + "playlistId": "OLAK5uy_lqxPSiV2PYJKiD_PyLHgxWXIVi68Zf9jo" } } }, @@ -42561,7 +34891,7 @@ } ] }, - "trackingParams": "CHAQvu4FGAIiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CKYDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -42570,7 +34900,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CG4Q--8FGAMiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CKQDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -42584,16 +34914,22 @@ } ] }, - "trackingParams": "CG8QyscDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKUDEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CG4Q--8FGAMiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CKQDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { - "playlistId": "OLAK5uy_n9UBeFFMf7nFEnF4i1AY9xhtYHpzXJ3fQ" + "onEmptyQueue": { + "clickTrackingParams": "CKQDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lqxPSiV2PYJKiD_PyLHgxWXIVi68Zf9jo" + } + }, + "playlistId": "OLAK5uy_lqxPSiV2PYJKiD_PyLHgxWXIVi68Zf9jo" } } }, @@ -42604,7 +34940,7 @@ } ] }, - "trackingParams": "CG4Q--8FGAMiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CKQDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -42613,7 +34949,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CGwQhP8FGAQiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CKIDEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -42621,7 +34957,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CG0Q8FsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CKMDEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -42634,13 +34970,13 @@ } ] }, - "trackingParams": "CG0Q8FsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CKMDEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -42658,7 +34994,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -42666,11 +35002,11 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CGwQhP8FGAQiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CKIDEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { - "playlistId": "OLAK5uy_n9UBeFFMf7nFEnF4i1AY9xhtYHpzXJ3fQ" + "playlistId": "OLAK5uy_lqxPSiV2PYJKiD_PyLHgxWXIVi68Zf9jo" } } }, @@ -42681,7 +35017,7 @@ } ] }, - "trackingParams": "CGwQhP8FGAQiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CKIDEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -42690,7 +35026,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CGoQw5QGGAUiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CKADEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -42698,7 +35034,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CGsQ8FsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CKEDEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -42711,7 +35047,7 @@ } ] }, - "trackingParams": "CGsQ8FsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CKEDEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -42735,11 +35071,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CGoQw5QGGAUiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CKADEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -42756,7 +35092,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CGkQkPsFGAYiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CJ8DEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -42765,7 +35101,7 @@ } ] }, - "trackingParams": "CGkQkPsFGAYiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CJ8DEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -42774,7 +35110,468 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CGgQkfsFGAciEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CJ4DEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2xxeFBTaVYyUFlKS2lEX1B5TEhneFdYSVZpNjhaZjlqbw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJ4DEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CJ0DEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_twQ88DmN7lm", + "params": "ggMrGilPTEFLNXV5X2xxeFBTaVYyUFlKS2lEX1B5TEhneFdYSVZpNjhaZjlqbw%3D%3D" + }, + "clickTrackingParams": "CJsDEKCzAhhLIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2019" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Beautiful People" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Beautiful People" + } + }, + "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": "CJwDEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_lqxPSiV2PYJKiD_PyLHgxWXIVi68Zf9jo" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CJwDEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/mLYowfEczgSkvmg-dsOG20VbBR95_1gNnhPF5RYcaJLI8mS0ZOtaEd3l80r7KRsM2sAU8sxpIKaenZs=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/mLYowfEczgSkvmg-dsOG20VbBR95_1gNnhPF5RYcaJLI8mS0ZOtaEd3l80r7KRsM2sAU8sxpIKaenZs=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CKoDEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_twQ88DmN7lm", + "params": "ggMrGilPTEFLNXV5X2xxeFBTaVYyUFlKS2lEX1B5TEhneFdYSVZpNjhaZjlqbw%3D%3D" + }, + "clickTrackingParams": "CJsDEKCzAhhLIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "Beautiful People (feat. Khalid)" + } + ] + }, + "trackingParams": "CJsDEKCzAhhLIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CJkDEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_n9UBeFFMf7nFEnF4i1AY9xhtYHpzXJ3fQ" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CJkDEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJgDEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_n9UBeFFMf7nFEnF4i1AY9xhtYHpzXJ3fQ" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CJgDEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJYDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CJcDEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CJYDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJYDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_n9UBeFFMf7nFEnF4i1AY9xhtYHpzXJ3fQ" + } + }, + "playlistId": "OLAK5uy_n9UBeFFMf7nFEnF4i1AY9xhtYHpzXJ3fQ" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CJYDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJQDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CJUDEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CJQDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJQDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_n9UBeFFMf7nFEnF4i1AY9xhtYHpzXJ3fQ" + } + }, + "playlistId": "OLAK5uy_n9UBeFFMf7nFEnF4i1AY9xhtYHpzXJ3fQ" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJQDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CJIDEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CJMDEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CJMDEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CJIDEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_n9UBeFFMf7nFEnF4i1AY9xhtYHpzXJ3fQ" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CJIDEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJADEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CJEDEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CJEDEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CJADEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CI8DEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CI8DEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CI4DEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X245VUJlRkZNZjduRkVuRjRpMUFZOXhodFlIcHpYSjNmUQ%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -42787,11 +35584,11 @@ } ] }, - "trackingParams": "CGgQkfsFGAciEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CI4DEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CGcQpzsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CI0DEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -42804,7 +35601,7 @@ "browseId": "MPREb_rwojmesGd0y", "params": "ggMrGilPTEFLNXV5X245VUJlRkZNZjduRkVuRjRpMUFZOXhodFlIcHpYSjNmUQ%3D%3D" }, - "clickTrackingParams": "CGQQoLMCGF4iEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CIoDEKCzAhhMIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -42830,7 +35627,7 @@ "icon": { "iconType": "MUSIC_EXPLICIT_BADGE" }, - "trackingParams": "CGUQoe0CGAAiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CIsDEKHtAhgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], @@ -42863,7 +35660,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -42871,7 +35668,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CGYQyN4CIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIwDEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_n9UBeFFMf7nFEnF4i1AY9xhtYHpzXJ3fQ" } @@ -42880,7 +35677,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CGYQyN4CIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIwDEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -42905,7 +35702,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CHQQhL8CIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJoDEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -42921,13 +35718,13 @@ "browseId": "MPREb_rwojmesGd0y", "params": "ggMrGilPTEFLNXV5X245VUJlRkZNZjduRkVuRjRpMUFZOXhodFlIcHpYSjNmUQ%3D%3D" }, - "clickTrackingParams": "CGQQoLMCGF4iEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CIoDEKCzAhhMIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Cross Me (M-22 Remix) (feat. Chance The Rapper & PnB Rock)" } ] }, - "trackingParams": "CGQQoLMCGF4iEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CIoDEKCzAhhMIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -42947,10 +35744,10 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CGIQmvMFGAAiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CIgDEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_m1QYjjHUbLKltSi4pXJkSFNVJyttIalQs" + "playlistId": "OLAK5uy_nKRFWY721pb-t_7xWJ0BQH7IwGbsb03Ao" } }, "text": { @@ -42960,7 +35757,7 @@ } ] }, - "trackingParams": "CGIQmvMFGAAiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CIgDEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -42969,10 +35766,10 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CGEQm_MFGAEiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CIcDEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_m1QYjjHUbLKltSi4pXJkSFNVJyttIalQs" + "playlistId": "RDAMPLOLAK5uy_nKRFWY721pb-t_7xWJ0BQH7IwGbsb03Ao" } }, "text": { @@ -42982,7 +35779,7 @@ } ] }, - "trackingParams": "CGEQm_MFGAEiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CIcDEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -42991,7 +35788,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CF8Qvu4FGAIiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CIUDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -43005,16 +35802,22 @@ } ] }, - "trackingParams": "CGAQyscDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIYDEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CF8Qvu4FGAIiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CIUDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { - "playlistId": "OLAK5uy_m1QYjjHUbLKltSi4pXJkSFNVJyttIalQs" + "onEmptyQueue": { + "clickTrackingParams": "CIUDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nKRFWY721pb-t_7xWJ0BQH7IwGbsb03Ao" + } + }, + "playlistId": "OLAK5uy_nKRFWY721pb-t_7xWJ0BQH7IwGbsb03Ao" } } }, @@ -43025,7 +35828,7 @@ } ] }, - "trackingParams": "CF8Qvu4FGAIiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CIUDEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -43034,7 +35837,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CF0Q--8FGAMiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CIMDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -43048,16 +35851,22 @@ } ] }, - "trackingParams": "CF4QyscDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIQDEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CF0Q--8FGAMiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CIMDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { - "playlistId": "OLAK5uy_m1QYjjHUbLKltSi4pXJkSFNVJyttIalQs" + "onEmptyQueue": { + "clickTrackingParams": "CIMDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nKRFWY721pb-t_7xWJ0BQH7IwGbsb03Ao" + } + }, + "playlistId": "OLAK5uy_nKRFWY721pb-t_7xWJ0BQH7IwGbsb03Ao" } } }, @@ -43068,7 +35877,7 @@ } ] }, - "trackingParams": "CF0Q--8FGAMiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CIMDEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -43077,7 +35886,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CFsQhP8FGAQiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CIEDEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -43085,7 +35894,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CFwQ8FsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CIIDEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -43098,13 +35907,13 @@ } ] }, - "trackingParams": "CFwQ8FsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CIIDEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -43122,7 +35931,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -43130,11 +35939,11 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CFsQhP8FGAQiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CIEDEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { - "playlistId": "OLAK5uy_m1QYjjHUbLKltSi4pXJkSFNVJyttIalQs" + "playlistId": "OLAK5uy_nKRFWY721pb-t_7xWJ0BQH7IwGbsb03Ao" } } }, @@ -43145,7 +35954,7 @@ } ] }, - "trackingParams": "CFsQhP8FGAQiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CIEDEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -43154,7 +35963,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CFkQw5QGGAUiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CP8CEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -43162,7 +35971,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CFoQ8FsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CIADEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -43175,7 +35984,7 @@ } ] }, - "trackingParams": "CFoQ8FsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CIADEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -43199,11 +36008,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CFkQw5QGGAUiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CP8CEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -43220,7 +36029,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CFgQkPsFGAYiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CP4CEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -43229,7 +36038,7 @@ } ] }, - "trackingParams": "CFgQkPsFGAYiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CP4CEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -43238,7 +36047,944 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CFcQkfsFGAciEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CP0CEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X25LUkZXWTcyMXBiLXRfN3hXSjBCUUg3SXdHYnNiMDNBbw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CP0CEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CPwCEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_616RtSdo4UU", + "params": "ggMrGilPTEFLNXV5X25LUkZXWTcyMXBiLXRfN3hXSjBCUUg3SXdHYnNiMDNBbw%3D%3D" + }, + "clickTrackingParams": "CPkCEKCzAhhNIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2019" + } + ] + }, + "subtitleBadges": [ + { + "musicInlineBadgeRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + }, + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "trackingParams": "CPoCEKHtAhgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Cross Me" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Cross Me" + } + }, + "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": "CPsCEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_nKRFWY721pb-t_7xWJ0BQH7IwGbsb03Ao" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CPsCEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/pWiNnmgAvecsn7JqMnYP6rXMUo0mPs0rXaBHLQwjpIvRIRLkfotLIhhFz8njeD7kHPCBk5t29Q2fIjsdRw=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/pWiNnmgAvecsn7JqMnYP6rXMUo0mPs0rXaBHLQwjpIvRIRLkfotLIhhFz8njeD7kHPCBk5t29Q2fIjsdRw=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CIkDEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_616RtSdo4UU", + "params": "ggMrGilPTEFLNXV5X25LUkZXWTcyMXBiLXRfN3hXSjBCUUg3SXdHYnNiMDNBbw%3D%3D" + }, + "clickTrackingParams": "CPkCEKCzAhhNIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "Cross Me (feat. Chance The Rapper & PnB Rock)" + } + ] + }, + "trackingParams": "CPkCEKCzAhhNIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CPcCEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_kc2aQQ0b6nQpEcJHDjTLyjS2WNYA3VGHw" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CPcCEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPYCEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_kc2aQQ0b6nQpEcJHDjTLyjS2WNYA3VGHw" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CPYCEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CPUCEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CPQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CPQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_kc2aQQ0b6nQpEcJHDjTLyjS2WNYA3VGHw" + } + }, + "playlistId": "OLAK5uy_kc2aQQ0b6nQpEcJHDjTLyjS2WNYA3VGHw" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CPQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CPMCEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CPICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CPICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_kc2aQQ0b6nQpEcJHDjTLyjS2WNYA3VGHw" + } + }, + "playlistId": "OLAK5uy_kc2aQQ0b6nQpEcJHDjTLyjS2WNYA3VGHw" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CPICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CPACEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CPECEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CPECEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CPACEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_kc2aQQ0b6nQpEcJHDjTLyjS2WNYA3VGHw" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CPACEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CO4CEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CO8CEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CO8CEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CO4CEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CO0CEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CO0CEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "COwCEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2tjMmFRUTBiNm5RcEVjSkhEalRMeWpTMldOWUEzVkdIdw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "COwCEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "COsCEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_npDhgdB9yJF", + "params": "ggMrGilPTEFLNXV5X2tjMmFRUTBiNm5RcEVjSkhEalRMeWpTMldOWUEzVkdIdw%3D%3D" + }, + "clickTrackingParams": "COkCEKCzAhhOIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2019" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause I Don't Care" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play I Don't Care" + } + }, + "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": "COoCEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_kc2aQQ0b6nQpEcJHDjTLyjS2WNYA3VGHw" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "COoCEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/TOs6EF6cy4xJL9TKOiPk3WuR7U5jnA-In5CY6Mb0HGMzbpQ9rUGJPslabC-b2dJbJRSlcuUqRe0Zwgo=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/TOs6EF6cy4xJL9TKOiPk3WuR7U5jnA-In5CY6Mb0HGMzbpQ9rUGJPslabC-b2dJbJRSlcuUqRe0Zwgo=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CPgCEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_npDhgdB9yJF", + "params": "ggMrGilPTEFLNXV5X2tjMmFRUTBiNm5RcEVjSkhEalRMeWpTMldOWUEzVkdIdw%3D%3D" + }, + "clickTrackingParams": "COkCEKCzAhhOIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "I Don't Care" + } + ] + }, + "trackingParams": "COkCEKCzAhhOIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "COcCEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_m1QYjjHUbLKltSi4pXJkSFNVJyttIalQs" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "COcCEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "COYCEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_m1QYjjHUbLKltSi4pXJkSFNVJyttIalQs" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "COYCEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "COQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "COUCEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "COQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "COQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_m1QYjjHUbLKltSi4pXJkSFNVJyttIalQs" + } + }, + "playlistId": "OLAK5uy_m1QYjjHUbLKltSi4pXJkSFNVJyttIalQs" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "COQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "COICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "COMCEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "COICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "COICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_m1QYjjHUbLKltSi4pXJkSFNVJyttIalQs" + } + }, + "playlistId": "OLAK5uy_m1QYjjHUbLKltSi4pXJkSFNVJyttIalQs" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "COICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "COACEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "COECEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "COECEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "COACEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_m1QYjjHUbLKltSi4pXJkSFNVJyttIalQs" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "COACEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CN4CEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CN8CEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CN8CEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CN4CEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CN0CEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CN0CEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNwCEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X20xUVlqakhVYkxLbHRTaTRwWEprU0ZOVkp5dHRJYWxRcw%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -43251,11 +36997,11 @@ } ] }, - "trackingParams": "CFcQkfsFGAciEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CNwCEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CFYQpzsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CNsCEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -43268,7 +37014,7 @@ "browseId": "MPREb_wzuwDlIpQoe", "params": "ggMrGilPTEFLNXV5X20xUVlqakhVYkxLbHRTaTRwWEprU0ZOVkp5dHRJYWxRcw%3D%3D" }, - "clickTrackingParams": "CFQQoLMCGF8iEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CNkCEKCzAhhPIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -43312,7 +37058,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -43320,7 +37066,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CFUQyN4CIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CNoCEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_m1QYjjHUbLKltSi4pXJkSFNVJyttIalQs" } @@ -43329,7 +37075,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CFUQyN4CIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNoCEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -43354,7 +37100,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CGMQhL8CIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "COgCEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -43370,13 +37116,13 @@ "browseId": "MPREb_wzuwDlIpQoe", "params": "ggMrGilPTEFLNXV5X20xUVlqakhVYkxLbHRTaTRwWEprU0ZOVkp5dHRJYWxRcw%3D%3D" }, - "clickTrackingParams": "CFQQoLMCGF8iEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CNkCEKCzAhhPIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "I Don't Care (Jonas Blue Remix)" } ] }, - "trackingParams": "CFQQoLMCGF8iEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CNkCEKCzAhhPIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -43396,7 +37142,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CFIQmvMFGAAiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CNcCEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_mnOJSBMNbiDdFhgNW6yI25hsIHob0D_-g" @@ -43409,7 +37155,7 @@ } ] }, - "trackingParams": "CFIQmvMFGAAiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CNcCEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -43418,7 +37164,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CFEQm_MFGAEiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CNYCEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_mnOJSBMNbiDdFhgNW6yI25hsIHob0D_-g" @@ -43431,7 +37177,7 @@ } ] }, - "trackingParams": "CFEQm_MFGAEiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CNYCEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -43440,7 +37186,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CE8Qvu4FGAIiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CNQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -43454,15 +37200,21 @@ } ] }, - "trackingParams": "CFAQyscDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNUCEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CE8Qvu4FGAIiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CNQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mnOJSBMNbiDdFhgNW6yI25hsIHob0D_-g" + } + }, "playlistId": "OLAK5uy_mnOJSBMNbiDdFhgNW6yI25hsIHob0D_-g" } } @@ -43474,7 +37226,7 @@ } ] }, - "trackingParams": "CE8Qvu4FGAIiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CNQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -43483,7 +37235,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CE0Q--8FGAMiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CNICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -43497,15 +37249,21 @@ } ] }, - "trackingParams": "CE4QyscDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNMCEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CE0Q--8FGAMiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CNICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mnOJSBMNbiDdFhgNW6yI25hsIHob0D_-g" + } + }, "playlistId": "OLAK5uy_mnOJSBMNbiDdFhgNW6yI25hsIHob0D_-g" } } @@ -43517,7 +37275,7 @@ } ] }, - "trackingParams": "CE0Q--8FGAMiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CNICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -43526,7 +37284,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CEsQhP8FGAQiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CNACEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -43534,7 +37292,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CEwQ8FsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CNECEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -43547,13 +37305,13 @@ } ] }, - "trackingParams": "CEwQ8FsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CNECEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -43571,7 +37329,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -43579,7 +37337,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CEsQhP8FGAQiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CNACEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -43594,7 +37352,7 @@ } ] }, - "trackingParams": "CEsQhP8FGAQiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CNACEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -43603,7 +37361,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CEkQw5QGGAUiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CM4CEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -43611,7 +37369,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CEoQ8FsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CM8CEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -43624,7 +37382,7 @@ } ] }, - "trackingParams": "CEoQ8FsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CM8CEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -43648,11 +37406,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CEkQw5QGGAUiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CM4CEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -43669,7 +37427,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CEgQkPsFGAYiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CM0CEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -43678,7 +37436,7 @@ } ] }, - "trackingParams": "CEgQkPsFGAYiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CM0CEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -43687,7 +37445,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CEcQkfsFGAciEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CMwCEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X21uT0pTQk1OYmlEZEZoZ05XNnlJMjVoc0lIb2IwRF8tZw%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -43700,11 +37458,11 @@ } ] }, - "trackingParams": "CEcQkfsFGAciEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CMwCEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CEYQpzsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CMsCEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -43717,7 +37475,7 @@ "browseId": "MPREb_SK7p03HU4dm", "params": "ggMrGilPTEFLNXV5X21uT0pTQk1OYmlEZEZoZ05XNnlJMjVoc0lIb2IwRF8tZw%3D%3D" }, - "clickTrackingParams": "CEQQoLMCGGAiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CMkCEKCzAhhQIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -43761,7 +37519,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -43769,7 +37527,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CEUQyN4CIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CMoCEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_mnOJSBMNbiDdFhgNW6yI25hsIHob0D_-g" } @@ -43778,7 +37536,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CEUQyN4CIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMoCEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -43803,7 +37561,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CFMQhL8CIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CNgCEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -43819,13 +37577,13 @@ "browseId": "MPREb_SK7p03HU4dm", "params": "ggMrGilPTEFLNXV5X21uT0pTQk1OYmlEZEZoZ05XNnlJMjVoc0lIb2IwRF8tZw%3D%3D" }, - "clickTrackingParams": "CEQQoLMCGGAiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CMkCEKCzAhhQIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "I Don't Care (Chronixx & Koffee Remix)" } ] }, - "trackingParams": "CEQQoLMCGGAiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CMkCEKCzAhhQIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -43845,7 +37603,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CEIQmvMFGAAiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CMcCEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_kLos7JVB17iwMu8U9S8rb-fQkkaDkyMao" @@ -43858,7 +37616,7 @@ } ] }, - "trackingParams": "CEIQmvMFGAAiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CMcCEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -43867,7 +37625,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CEEQm_MFGAEiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CMYCEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_kLos7JVB17iwMu8U9S8rb-fQkkaDkyMao" @@ -43880,7 +37638,7 @@ } ] }, - "trackingParams": "CEEQm_MFGAEiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CMYCEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -43889,7 +37647,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CD8Qvu4FGAIiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CMQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -43903,15 +37661,21 @@ } ] }, - "trackingParams": "CEAQyscDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMUCEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CD8Qvu4FGAIiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CMQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_kLos7JVB17iwMu8U9S8rb-fQkkaDkyMao" + } + }, "playlistId": "OLAK5uy_kLos7JVB17iwMu8U9S8rb-fQkkaDkyMao" } } @@ -43923,7 +37687,7 @@ } ] }, - "trackingParams": "CD8Qvu4FGAIiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CMQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -43932,7 +37696,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CD0Q--8FGAMiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CMICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -43946,15 +37710,21 @@ } ] }, - "trackingParams": "CD4QyscDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMMCEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CD0Q--8FGAMiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CMICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_kLos7JVB17iwMu8U9S8rb-fQkkaDkyMao" + } + }, "playlistId": "OLAK5uy_kLos7JVB17iwMu8U9S8rb-fQkkaDkyMao" } } @@ -43966,7 +37736,7 @@ } ] }, - "trackingParams": "CD0Q--8FGAMiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CMICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -43975,7 +37745,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CDsQhP8FGAQiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CMACEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -43983,7 +37753,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CDwQ8FsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CMECEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -43996,13 +37766,13 @@ } ] }, - "trackingParams": "CDwQ8FsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CMECEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -44020,7 +37790,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -44028,7 +37798,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CDsQhP8FGAQiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CMACEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -44043,7 +37813,7 @@ } ] }, - "trackingParams": "CDsQhP8FGAQiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CMACEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -44052,7 +37822,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CDkQw5QGGAUiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CL4CEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -44060,7 +37830,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CDoQ8FsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CL8CEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -44073,7 +37843,7 @@ } ] }, - "trackingParams": "CDoQ8FsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CL8CEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -44097,11 +37867,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CDkQw5QGGAUiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CL4CEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -44118,7 +37888,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CDgQkPsFGAYiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CL0CEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -44127,7 +37897,7 @@ } ] }, - "trackingParams": "CDgQkPsFGAYiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CL0CEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -44136,7 +37906,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CDcQkfsFGAciEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CLwCEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X2tMb3M3SlZCMTdpd011OFU5UzhyYi1mUWtrYURreU1hbw%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -44149,11 +37919,11 @@ } ] }, - "trackingParams": "CDcQkfsFGAciEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CLwCEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CDYQpzsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CLsCEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -44166,7 +37936,7 @@ "browseId": "MPREb_YU9EOdPk3sh", "params": "ggMrGilPTEFLNXV5X2tMb3M3SlZCMTdpd011OFU5UzhyYi1mUWtrYURreU1hbw%3D%3D" }, - "clickTrackingParams": "CDQQoLMCGGEiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CLkCEKCzAhhRIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -44210,7 +37980,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -44218,7 +37988,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CDUQyN4CIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CLoCEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_kLos7JVB17iwMu8U9S8rb-fQkkaDkyMao" } @@ -44227,7 +37997,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CDUQyN4CIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLoCEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -44252,7 +38022,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CEMQhL8CIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CMgCEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -44268,13 +38038,13 @@ "browseId": "MPREb_YU9EOdPk3sh", "params": "ggMrGilPTEFLNXV5X2tMb3M3SlZCMTdpd011OFU5UzhyYi1mUWtrYURreU1hbw%3D%3D" }, - "clickTrackingParams": "CDQQoLMCGGEiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CLkCEKCzAhhRIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "I Don't Care (Loud Luxury Remix)" } ] }, - "trackingParams": "CDQQoLMCGGEiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CLkCEKCzAhhRIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -44294,7 +38064,7 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CDIQmvMFGAAiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CLcCEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", "playlistId": "OLAK5uy_k5MBrnkuWF4EcFsrxtTKn5SAz6juWGv_o" @@ -44307,7 +38077,7 @@ } ] }, - "trackingParams": "CDIQmvMFGAAiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CLcCEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -44316,7 +38086,7 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CDEQm_MFGAEiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CLYCEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", "playlistId": "RDAMPLOLAK5uy_k5MBrnkuWF4EcFsrxtTKn5SAz6juWGv_o" @@ -44329,7 +38099,7 @@ } ] }, - "trackingParams": "CDEQm_MFGAEiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CLYCEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -44338,7 +38108,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CC8Qvu4FGAIiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CLQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -44352,15 +38122,21 @@ } ] }, - "trackingParams": "CDAQyscDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLUCEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CC8Qvu4FGAIiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CLQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CLQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_k5MBrnkuWF4EcFsrxtTKn5SAz6juWGv_o" + } + }, "playlistId": "OLAK5uy_k5MBrnkuWF4EcFsrxtTKn5SAz6juWGv_o" } } @@ -44372,7 +38148,7 @@ } ] }, - "trackingParams": "CC8Qvu4FGAIiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CLQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -44381,7 +38157,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CC0Q--8FGAMiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CLICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -44395,15 +38171,21 @@ } ] }, - "trackingParams": "CC4QyscDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLMCEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CC0Q--8FGAMiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CLICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CLICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_k5MBrnkuWF4EcFsrxtTKn5SAz6juWGv_o" + } + }, "playlistId": "OLAK5uy_k5MBrnkuWF4EcFsrxtTKn5SAz6juWGv_o" } } @@ -44415,7 +38197,7 @@ } ] }, - "trackingParams": "CC0Q--8FGAMiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CLICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -44424,7 +38206,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CCsQhP8FGAQiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CLACEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -44432,7 +38214,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CCwQ8FsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CLECEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -44445,13 +38227,13 @@ } ] }, - "trackingParams": "CCwQ8FsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CLECEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -44469,7 +38251,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -44477,7 +38259,7 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CCsQhP8FGAQiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CLACEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { @@ -44492,7 +38274,7 @@ } ] }, - "trackingParams": "CCsQhP8FGAQiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CLACEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -44501,7 +38283,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CCkQw5QGGAUiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CK4CEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -44509,7 +38291,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CCoQ8FsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CK8CEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -44522,7 +38304,7 @@ } ] }, - "trackingParams": "CCoQ8FsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CK8CEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -44546,11 +38328,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CCkQw5QGGAUiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CK4CEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -44567,7 +38349,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CCgQkPsFGAYiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CK0CEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -44576,7 +38358,7 @@ } ] }, - "trackingParams": "CCgQkPsFGAYiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CK0CEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -44585,7 +38367,7 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CCcQkfsFGAciEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CKwCEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X2s1TUJybmt1V0Y0RWNGc3J4dFRLbjVTQXo2anVXR3Zfbw%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -44598,11 +38380,11 @@ } ] }, - "trackingParams": "CCcQkfsFGAciEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CKwCEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CCYQpzsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CKsCEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -44615,7 +38397,7 @@ "browseId": "MPREb_1CK9F0JoeWF", "params": "ggMrGilPTEFLNXV5X2s1TUJybmt1V0Y0RWNGc3J4dFRLbjVTQXo2anVXR3Zfbw%3D%3D" }, - "clickTrackingParams": "CCQQoLMCGGIiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CKkCEKCzAhhSIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -44659,7 +38441,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -44667,7 +38449,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CCUQyN4CIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CKoCEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_k5MBrnkuWF4EcFsrxtTKn5SAz6juWGv_o" } @@ -44676,7 +38458,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CCUQyN4CIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKoCEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -44701,7 +38483,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CDMQhL8CIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CLgCEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -44717,13 +38499,13 @@ "browseId": "MPREb_1CK9F0JoeWF", "params": "ggMrGilPTEFLNXV5X2s1TUJybmt1V0Y0RWNGc3J4dFRLbjVTQXo2anVXR3Zfbw%3D%3D" }, - "clickTrackingParams": "CCQQoLMCGGIiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CKkCEKCzAhhSIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Happier (Kasbo Remix)" } ] }, - "trackingParams": "CCQQoLMCGGIiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CKkCEKCzAhhSIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -44743,10 +38525,10 @@ "iconType": "MUSIC_SHUFFLE" }, "navigationEndpoint": { - "clickTrackingParams": "CCIQmvMFGAAiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CKcCEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB8gECKAE%3D", - "playlistId": "OLAK5uy_l-FdBz8yNsI_yjTOtMt8ZInj5NlurNNZw" + "playlistId": "OLAK5uy_mQDMlgG1gRTCFWsAcqibEEAtQIBWqHj9c" } }, "text": { @@ -44756,7 +38538,7 @@ } ] }, - "trackingParams": "CCIQmvMFGAAiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CKcCEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -44765,10 +38547,10 @@ "iconType": "MIX" }, "navigationEndpoint": { - "clickTrackingParams": "CCEQm_MFGAEiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CKYCEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "watchPlaylistEndpoint": { "params": "wAEB", - "playlistId": "RDAMPLOLAK5uy_l-FdBz8yNsI_yjTOtMt8ZInj5NlurNNZw" + "playlistId": "RDAMPLOLAK5uy_mQDMlgG1gRTCFWsAcqibEEAtQIBWqHj9c" } }, "text": { @@ -44778,7 +38560,7 @@ } ] }, - "trackingParams": "CCEQm_MFGAEiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CKYCEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -44787,7 +38569,7 @@ "iconType": "QUEUE_PLAY_NEXT" }, "serviceEndpoint": { - "clickTrackingParams": "CB8Qvu4FGAIiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CKQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -44801,16 +38583,22 @@ } ] }, - "trackingParams": "CCAQyscDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKUCEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CB8Qvu4FGAIiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CKQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", "queueTarget": { - "playlistId": "OLAK5uy_l-FdBz8yNsI_yjTOtMt8ZInj5NlurNNZw" + "onEmptyQueue": { + "clickTrackingParams": "CKQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mQDMlgG1gRTCFWsAcqibEEAtQIBWqHj9c" + } + }, + "playlistId": "OLAK5uy_mQDMlgG1gRTCFWsAcqibEEAtQIBWqHj9c" } } }, @@ -44821,7 +38609,7 @@ } ] }, - "trackingParams": "CB8Qvu4FGAIiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CKQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -44830,7 +38618,7 @@ "iconType": "ADD_TO_REMOTE_QUEUE" }, "serviceEndpoint": { - "clickTrackingParams": "CB0Q--8FGAMiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CKICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "queueAddEndpoint": { "commands": [ { @@ -44844,16 +38632,22 @@ } ] }, - "trackingParams": "CB4QyscDIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CKMCEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } }, - "clickTrackingParams": "CB0Q--8FGAMiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CKICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } ], "queueInsertPosition": "INSERT_AT_END", "queueTarget": { - "playlistId": "OLAK5uy_l-FdBz8yNsI_yjTOtMt8ZInj5NlurNNZw" + "onEmptyQueue": { + "clickTrackingParams": "CKICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mQDMlgG1gRTCFWsAcqibEEAtQIBWqHj9c" + } + }, + "playlistId": "OLAK5uy_mQDMlgG1gRTCFWsAcqibEEAtQIBWqHj9c" } } }, @@ -44864,7 +38658,7 @@ } ] }, - "trackingParams": "CB0Q--8FGAMiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CKICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -44873,7 +38667,7 @@ "iconType": "LIBRARY_ADD" }, "defaultServiceEndpoint": { - "clickTrackingParams": "CBsQhP8FGAQiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CKACEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -44881,7 +38675,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CBwQ8FsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CKECEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -44894,13 +38688,13 @@ } ] }, - "trackingParams": "CBwQ8FsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CKECEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { "runs": [ { - "text": "Add favorites to your library after signing in" + "text": "Save favorites to your library after signing in" } ] }, @@ -44918,7 +38712,7 @@ "defaultText": { "runs": [ { - "text": "Add album to library" + "text": "Save album to library" } ] }, @@ -44926,11 +38720,11 @@ "iconType": "LIBRARY_SAVED" }, "toggledServiceEndpoint": { - "clickTrackingParams": "CBsQhP8FGAQiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CKACEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "likeEndpoint": { "status": "INDIFFERENT", "target": { - "playlistId": "OLAK5uy_l-FdBz8yNsI_yjTOtMt8ZInj5NlurNNZw" + "playlistId": "OLAK5uy_mQDMlgG1gRTCFWsAcqibEEAtQIBWqHj9c" } } }, @@ -44941,7 +38735,7 @@ } ] }, - "trackingParams": "CBsQhP8FGAQiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CKACEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -44950,7 +38744,7 @@ "iconType": "ADD_TO_PLAYLIST" }, "navigationEndpoint": { - "clickTrackingParams": "CBkQw5QGGAUiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CJ4CEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "modalEndpoint": { "modal": { "modalWithTitleAndButtonRenderer": { @@ -44958,7 +38752,7 @@ "buttonRenderer": { "isDisabled": false, "navigationEndpoint": { - "clickTrackingParams": "CBoQ8FsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CJ8CEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "signInEndpoint": { "hack": true } @@ -44971,7 +38765,7 @@ } ] }, - "trackingParams": "CBoQ8FsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CJ8CEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "content": { @@ -44995,11 +38789,11 @@ "text": { "runs": [ { - "text": "Add to playlist" + "text": "Save to playlist" } ] }, - "trackingParams": "CBkQw5QGGAUiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CJ4CEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -45016,7 +38810,7 @@ }, "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" }, - "clickTrackingParams": "CBgQkPsFGAYiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CJ0CEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": { "runs": [ @@ -45025,7 +38819,7 @@ } ] }, - "trackingParams": "CBgQkPsFGAYiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CJ0CEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, { @@ -45034,7 +38828,468 @@ "iconType": "SHARE" }, "navigationEndpoint": { - "clickTrackingParams": "CBcQkfsFGAciEwjm0NPBw_P-AhVf5hEIHS6PAyQ=", + "clickTrackingParams": "CJwCEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X21RRE1sZ0cxZ1JUQ0ZXc0FjcWliRUVBdFFJQldxSGo5Yw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJwCEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CJsCEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_vGa5krfHkE8", + "params": "ggMrGilPTEFLNXV5X21RRE1sZ0cxZ1JUQ0ZXc0FjcWliRUVBdFFJQldxSGo5Yw%3D%3D" + }, + "clickTrackingParams": "CJkCEKCzAhhTIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2018" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Happier (Acoustic)" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Happier (Acoustic)" + } + }, + "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": "CJoCEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_mQDMlgG1gRTCFWsAcqibEEAtQIBWqHj9c" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CJoCEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/39eatOjceZ4phjdFp21jHJS-wCEkNph51VNCzdBF7JVFeH68EXAEyTGdQv9VWkClEh__1hCbJtL-jeIt=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/39eatOjceZ4phjdFp21jHJS-wCEkNph51VNCzdBF7JVFeH68EXAEyTGdQv9VWkClEh__1hCbJtL-jeIt=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CKgCEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_vGa5krfHkE8", + "params": "ggMrGilPTEFLNXV5X21RRE1sZ0cxZ1JUQ0ZXc0FjcWliRUVBdFFJQldxSGo5Yw%3D%3D" + }, + "clickTrackingParams": "CJkCEKCzAhhTIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "Happier (Acoustic)" + } + ] + }, + "trackingParams": "CJkCEKCzAhhTIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CJcCEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_l-FdBz8yNsI_yjTOtMt8ZInj5NlurNNZw" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CJcCEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJYCEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_l-FdBz8yNsI_yjTOtMt8ZInj5NlurNNZw" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CJYCEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CJUCEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CJQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_l-FdBz8yNsI_yjTOtMt8ZInj5NlurNNZw" + } + }, + "playlistId": "OLAK5uy_l-FdBz8yNsI_yjTOtMt8ZInj5NlurNNZw" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CJQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CJMCEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CJICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_l-FdBz8yNsI_yjTOtMt8ZInj5NlurNNZw" + } + }, + "playlistId": "OLAK5uy_l-FdBz8yNsI_yjTOtMt8ZInj5NlurNNZw" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CJACEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CJECEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CJECEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CJACEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_l-FdBz8yNsI_yjTOtMt8ZInj5NlurNNZw" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CJACEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CI4CEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CI8CEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CI8CEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CI4CEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CI0CEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CI0CEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIwCEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", "shareEntityEndpoint": { "serializedShareEntity": "EilPTEFLNXV5X2wtRmRCejh5TnNJX3lqVE90TXQ4WkluajVObHVyTk5adw%3D%3D", "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" @@ -45047,11 +39302,11 @@ } ] }, - "trackingParams": "CBcQkfsFGAciEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CIwCEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } } ], - "trackingParams": "CBYQpzsiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CIsCEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, "navigationEndpoint": { @@ -45064,7 +39319,7 @@ "browseId": "MPREb_QhaA3O3dTQJ", "params": "ggMrGilPTEFLNXV5X2wtRmRCejh5TnNJX3lqVE90TXQ4WkluajVObHVyTk5adw%3D%3D" }, - "clickTrackingParams": "CBQQoLMCGGMiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CIkCEKCzAhhUIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "subtitle": { "runs": [ @@ -45108,7 +39363,7 @@ "buttonSize": "MUSIC_PLAY_BUTTON_SIZE_MEDIUM", "iconColor": 4294967295, "iconLoadingColor": 1308622847, - "loadingIndicatorColor": 4294901760, + "loadingIndicatorColor": 14745645, "pauseIcon": { "iconType": "PAUSE" }, @@ -45116,7 +39371,7 @@ "iconType": "PLAY_ARROW" }, "playNavigationEndpoint": { - "clickTrackingParams": "CBUQyN4CIhMI5tDTwcPz_gIVX-YRCB0ujwMk", + "clickTrackingParams": "CIoCEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "watchPlaylistEndpoint": { "playlistId": "OLAK5uy_l-FdBz8yNsI_yjTOtMt8ZInj5NlurNNZw" } @@ -45125,7 +39380,7 @@ "iconType": "VOLUME_UP" }, "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", - "trackingParams": "CBUQyN4CIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CIoCEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "contentPosition": "MUSIC_ITEM_THUMBNAIL_OVERLAY_CONTENT_POSITION_BOTTOM_RIGHT", @@ -45150,7 +39405,7 @@ }, "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", - "trackingParams": "CCMQhL8CIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CJgCEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } }, "title": { @@ -45166,112 +39421,7289 @@ "browseId": "MPREb_QhaA3O3dTQJ", "params": "ggMrGilPTEFLNXV5X2wtRmRCejh5TnNJX3lqVE90TXQ4WkluajVObHVyTk5adw%3D%3D" }, - "clickTrackingParams": "CBQQoLMCGGMiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "clickTrackingParams": "CIkCEKCzAhhUIhMIwqfh8fqiiQMV0N9CBR0V_DAF" }, "text": "Happier (Tiësto’s AFTR:HRS Remix)" } ] }, - "trackingParams": "CBQQoLMCGGMiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CIkCEKCzAhhUIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CIcCEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_mUdFp0gZ2hI9zirdA-7Y6Uv3yFjoIWR_E" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CIcCEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIYCEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_mUdFp0gZ2hI9zirdA-7Y6Uv3yFjoIWR_E" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CIYCEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CIUCEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CIQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mUdFp0gZ2hI9zirdA-7Y6Uv3yFjoIWR_E" + } + }, + "playlistId": "OLAK5uy_mUdFp0gZ2hI9zirdA-7Y6Uv3yFjoIWR_E" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CIQCEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CIMCEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CIICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mUdFp0gZ2hI9zirdA-7Y6Uv3yFjoIWR_E" + } + }, + "playlistId": "OLAK5uy_mUdFp0gZ2hI9zirdA-7Y6Uv3yFjoIWR_E" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CIICEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CIACEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CIECEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CIECEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CIACEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_mUdFp0gZ2hI9zirdA-7Y6Uv3yFjoIWR_E" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CIACEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CP4BEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CP8BEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CP8BEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CP4BEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CP0BEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CP0BEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPwBEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X21VZEZwMGdaMmhJOXppcmRBLTdZNlV2M3lGam9JV1JfRQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CPwBEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CPsBEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_ai4tf2gU8M2", + "params": "ggMrGilPTEFLNXV5X21VZEZwMGdaMmhJOXppcmRBLTdZNlV2M3lGam9JV1JfRQ%3D%3D" + }, + "clickTrackingParams": "CPkBEKCzAhhVIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2018" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Happier (Cazzette Remix)" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Happier (Cazzette Remix)" + } + }, + "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": "CPoBEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_mUdFp0gZ2hI9zirdA-7Y6Uv3yFjoIWR_E" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CPoBEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/XjCQ31TKzwPly-VWy7e3NgbelbLJ6Zw9RoCthhcSdiduxSwDfWw4Hvc5SIXql6LKEjdeXnDB24nJ3L5P=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/XjCQ31TKzwPly-VWy7e3NgbelbLJ6Zw9RoCthhcSdiduxSwDfWw4Hvc5SIXql6LKEjdeXnDB24nJ3L5P=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CIgCEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_ai4tf2gU8M2", + "params": "ggMrGilPTEFLNXV5X21VZEZwMGdaMmhJOXppcmRBLTdZNlV2M3lGam9JV1JfRQ%3D%3D" + }, + "clickTrackingParams": "CPkBEKCzAhhVIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "Happier (Cazzette Remix)" + } + ] + }, + "trackingParams": "CPkBEKCzAhhVIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CPcBEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_nre-5QbSTp6bUxzO49yDfQZ6uJ4HBiDbs" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CPcBEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPYBEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_nre-5QbSTp6bUxzO49yDfQZ6uJ4HBiDbs" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CPYBEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CPUBEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CPQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CPQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nre-5QbSTp6bUxzO49yDfQZ6uJ4HBiDbs" + } + }, + "playlistId": "OLAK5uy_nre-5QbSTp6bUxzO49yDfQZ6uJ4HBiDbs" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CPQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CPMBEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CPIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CPIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_nre-5QbSTp6bUxzO49yDfQZ6uJ4HBiDbs" + } + }, + "playlistId": "OLAK5uy_nre-5QbSTp6bUxzO49yDfQZ6uJ4HBiDbs" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CPIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CPABEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CPEBEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CPEBEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CPABEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_nre-5QbSTp6bUxzO49yDfQZ6uJ4HBiDbs" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CPABEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CO4BEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CO8BEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CO8BEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CO4BEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CO0BEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CO0BEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "COwBEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X25yZS01UWJTVHA2YlV4ek80OXlEZlFaNnVKNEhCaURicw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "COwBEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "COsBEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_kVHz8wXHGCv", + "params": "ggMrGilPTEFLNXV5X25yZS01UWJTVHA2YlV4ek80OXlEZlFaNnVKNEhCaURicw%3D%3D" + }, + "clickTrackingParams": "COkBEKCzAhhWIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2017" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Perfect Symphony" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Perfect Symphony" + } + }, + "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": "COoBEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_nre-5QbSTp6bUxzO49yDfQZ6uJ4HBiDbs" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "COoBEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/gt2VLko0VPeGpEwZwen50BQ7KLTCC_La1Z5o2bpRfe4mqQakRcdct1adWV2Qkn5HZUOob9iAL5AU6PM=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/gt2VLko0VPeGpEwZwen50BQ7KLTCC_La1Z5o2bpRfe4mqQakRcdct1adWV2Qkn5HZUOob9iAL5AU6PM=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CPgBEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_kVHz8wXHGCv", + "params": "ggMrGilPTEFLNXV5X25yZS01UWJTVHA2YlV4ek80OXlEZlFaNnVKNEhCaURicw%3D%3D" + }, + "clickTrackingParams": "COkBEKCzAhhWIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "Perfect Symphony (feat. Andrea Bocelli)" + } + ] + }, + "trackingParams": "COkBEKCzAhhWIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "COcBEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_l7q8hcEHWEbbP0blEsRc9otcVH4cjZ8Lw" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "COcBEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "COYBEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_l7q8hcEHWEbbP0blEsRc9otcVH4cjZ8Lw" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "COYBEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "COQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "COUBEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "COQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "COQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_l7q8hcEHWEbbP0blEsRc9otcVH4cjZ8Lw" + } + }, + "playlistId": "OLAK5uy_l7q8hcEHWEbbP0blEsRc9otcVH4cjZ8Lw" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "COQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "COIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "COMBEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "COIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "COIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_l7q8hcEHWEbbP0blEsRc9otcVH4cjZ8Lw" + } + }, + "playlistId": "OLAK5uy_l7q8hcEHWEbbP0blEsRc9otcVH4cjZ8Lw" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "COIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "COABEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "COEBEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "COEBEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "COABEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_l7q8hcEHWEbbP0blEsRc9otcVH4cjZ8Lw" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "COABEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CN4BEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CN8BEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CN8BEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CN4BEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CN0BEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CN0BEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNwBEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2w3cThoY0VIV0ViYlAwYmxFc1JjOW90Y1ZINGNqWjhMdw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CNwBEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CNsBEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_digcAbZKm2w", + "params": "ggMrGilPTEFLNXV5X2w3cThoY0VIV0ViYlAwYmxFc1JjOW90Y1ZINGNqWjhMdw%3D%3D" + }, + "clickTrackingParams": "CNkBEKCzAhhXIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2017" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Perfect (Mike Perry Remix)" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Perfect (Mike Perry Remix)" + } + }, + "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": "CNoBEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_l7q8hcEHWEbbP0blEsRc9otcVH4cjZ8Lw" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CNoBEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/6_ZOj86m_zkA1E0hHmL79LnOlFGB45klRtTp1GYl3qcmxULQnd0_VA2NyFaT3cvjuMU7yUh1SKahsK4=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/6_ZOj86m_zkA1E0hHmL79LnOlFGB45klRtTp1GYl3qcmxULQnd0_VA2NyFaT3cvjuMU7yUh1SKahsK4=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "COgBEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_digcAbZKm2w", + "params": "ggMrGilPTEFLNXV5X2w3cThoY0VIV0ViYlAwYmxFc1JjOW90Y1ZINGNqWjhMdw%3D%3D" + }, + "clickTrackingParams": "CNkBEKCzAhhXIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "Perfect (Mike Perry Remix)" + } + ] + }, + "trackingParams": "CNkBEKCzAhhXIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CNcBEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_lXSQWRW8fLK0F4IAMsk3kpn1b7u0h-oxs" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CNcBEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNYBEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_lXSQWRW8fLK0F4IAMsk3kpn1b7u0h-oxs" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CNYBEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CNUBEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CNQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lXSQWRW8fLK0F4IAMsk3kpn1b7u0h-oxs" + } + }, + "playlistId": "OLAK5uy_lXSQWRW8fLK0F4IAMsk3kpn1b7u0h-oxs" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CNQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CNMBEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CNIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lXSQWRW8fLK0F4IAMsk3kpn1b7u0h-oxs" + } + }, + "playlistId": "OLAK5uy_lXSQWRW8fLK0F4IAMsk3kpn1b7u0h-oxs" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CNIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CNABEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CNEBEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CNEBEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CNABEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_lXSQWRW8fLK0F4IAMsk3kpn1b7u0h-oxs" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CNABEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CM4BEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CM8BEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CM8BEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CM4BEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CM0BEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CM0BEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMwBEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2xYU1FXUlc4ZkxLMEY0SUFNc2sza3BuMWI3dTBoLW94cw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CMwBEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CMsBEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_GQuLaofFeh4", + "params": "ggMrGilPTEFLNXV5X2xYU1FXUlc4ZkxLMEY0SUFNc2sza3BuMWI3dTBoLW94cw%3D%3D" + }, + "clickTrackingParams": "CMkBEKCzAhhYIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2017" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Perfect Duet" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Perfect Duet" + } + }, + "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": "CMoBEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_lXSQWRW8fLK0F4IAMsk3kpn1b7u0h-oxs" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CMoBEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/WcRXfdBQQ1k92rfIQYZCHXdTgRfmxEAcpGMzOtX1XN3tUkQdVjlk-Sc4NjuMeXbrjlfxWmn_AhA_-EUMMg=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/WcRXfdBQQ1k92rfIQYZCHXdTgRfmxEAcpGMzOtX1XN3tUkQdVjlk-Sc4NjuMeXbrjlfxWmn_AhA_-EUMMg=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CNgBEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_GQuLaofFeh4", + "params": "ggMrGilPTEFLNXV5X2xYU1FXUlc4ZkxLMEY0SUFNc2sza3BuMWI3dTBoLW94cw%3D%3D" + }, + "clickTrackingParams": "CMkBEKCzAhhYIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "Perfect Duet (feat. Beyoncé)" + } + ] + }, + "trackingParams": "CMkBEKCzAhhYIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CMcBEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_lAquA7qQLelEjI4ZXy89TCzlI-AqVzO_U" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CMcBEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMYBEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_lAquA7qQLelEjI4ZXy89TCzlI-AqVzO_U" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CMYBEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CMUBEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CMQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lAquA7qQLelEjI4ZXy89TCzlI-AqVzO_U" + } + }, + "playlistId": "OLAK5uy_lAquA7qQLelEjI4ZXy89TCzlI-AqVzO_U" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CMQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CMMBEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CMIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lAquA7qQLelEjI4ZXy89TCzlI-AqVzO_U" + } + }, + "playlistId": "OLAK5uy_lAquA7qQLelEjI4ZXy89TCzlI-AqVzO_U" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CMIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CMABEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CMEBEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CMEBEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CMABEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_lAquA7qQLelEjI4ZXy89TCzlI-AqVzO_U" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CMABEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CL4BEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CL8BEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CL8BEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CL4BEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CL0BEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CL0BEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLwBEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2xBcXVBN3FRTGVsRWpJNFpYeTg5VEN6bEktQXFWek9fVQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CLwBEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CLsBEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_VplSXzEydMQ", + "params": "ggMrGilPTEFLNXV5X2xBcXVBN3FRTGVsRWpJNFpYeTg5VEN6bEktQXFWek9fVQ%3D%3D" + }, + "clickTrackingParams": "CLkBEKCzAhhZIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2017" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Perfect (Acoustic)" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Perfect (Acoustic)" + } + }, + "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": "CLoBEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_lAquA7qQLelEjI4ZXy89TCzlI-AqVzO_U" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CLoBEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/7SN8J78BRhTj1Lxp78eOQiSyOzaRWUfWkShx5EwDj502OnoNQ6Fk8dGZLCA-8jZNGGLxTvnAZW3s-6YOEg=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/7SN8J78BRhTj1Lxp78eOQiSyOzaRWUfWkShx5EwDj502OnoNQ6Fk8dGZLCA-8jZNGGLxTvnAZW3s-6YOEg=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CMgBEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_VplSXzEydMQ", + "params": "ggMrGilPTEFLNXV5X2xBcXVBN3FRTGVsRWpJNFpYeTg5VEN6bEktQXFWek9fVQ%3D%3D" + }, + "clickTrackingParams": "CLkBEKCzAhhZIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "Perfect (Acoustic)" + } + ] + }, + "trackingParams": "CLkBEKCzAhhZIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CLcBEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_n5DtomVN5YslAiqA4X35NkDuN0TmmqTOM" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CLcBEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLYBEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_n5DtomVN5YslAiqA4X35NkDuN0TmmqTOM" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CLYBEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CLUBEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CLQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CLQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_n5DtomVN5YslAiqA4X35NkDuN0TmmqTOM" + } + }, + "playlistId": "OLAK5uy_n5DtomVN5YslAiqA4X35NkDuN0TmmqTOM" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CLQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CLMBEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CLIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CLIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_n5DtomVN5YslAiqA4X35NkDuN0TmmqTOM" + } + }, + "playlistId": "OLAK5uy_n5DtomVN5YslAiqA4X35NkDuN0TmmqTOM" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CLIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CLABEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CLEBEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CLEBEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CLABEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_n5DtomVN5YslAiqA4X35NkDuN0TmmqTOM" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CLABEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CK4BEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CK8BEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CK8BEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CK4BEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CK0BEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CK0BEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKwBEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X241RHRvbVZONVlzbEFpcUE0WDM1TmtEdU4wVG1tcVRPTQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CKwBEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CKsBEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_XtB3GgzBm5d", + "params": "ggMrGilPTEFLNXV5X241RHRvbVZONVlzbEFpcUE0WDM1TmtEdU4wVG1tcVRPTQ%3D%3D" + }, + "clickTrackingParams": "CKkBEKCzAhhaIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2017" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Perfect (Robin Schulz Remix)" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Perfect (Robin Schulz Remix)" + } + }, + "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": "CKoBEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_n5DtomVN5YslAiqA4X35NkDuN0TmmqTOM" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CKoBEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/xpDEOr2TeqEn1QpXosXhqtj149FzNnTgAG3oqPnpTxTbQk-oceO90Sz4Axq0s4Jp_QLGQha_um6_EG3WGQ=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/xpDEOr2TeqEn1QpXosXhqtj149FzNnTgAG3oqPnpTxTbQk-oceO90Sz4Axq0s4Jp_QLGQha_um6_EG3WGQ=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CLgBEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_XtB3GgzBm5d", + "params": "ggMrGilPTEFLNXV5X241RHRvbVZONVlzbEFpcUE0WDM1TmtEdU4wVG1tcVRPTQ%3D%3D" + }, + "clickTrackingParams": "CKkBEKCzAhhaIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "Perfect (Robin Schulz Remix)" + } + ] + }, + "trackingParams": "CKkBEKCzAhhaIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CKcBEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_lYI7tcpMcLzg3MFWiNdQu1QmxaNfdAwAs" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CKcBEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKYBEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_lYI7tcpMcLzg3MFWiNdQu1QmxaNfdAwAs" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CKYBEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CKUBEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CKQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lYI7tcpMcLzg3MFWiNdQu1QmxaNfdAwAs" + } + }, + "playlistId": "OLAK5uy_lYI7tcpMcLzg3MFWiNdQu1QmxaNfdAwAs" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CKQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CKMBEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CKIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_lYI7tcpMcLzg3MFWiNdQu1QmxaNfdAwAs" + } + }, + "playlistId": "OLAK5uy_lYI7tcpMcLzg3MFWiNdQu1QmxaNfdAwAs" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CKIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CKABEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CKEBEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CKEBEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CKABEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_lYI7tcpMcLzg3MFWiNdQu1QmxaNfdAwAs" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CKABEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJ4BEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CJ8BEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CJ8BEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CJ4BEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CJ0BEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CJ0BEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJwBEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2xZSTd0Y3BNY0x6ZzNNRldpTmRRdTFRbXhhTmZkQXdBcw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJwBEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CJsBEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_IOyG5MA08D0", + "params": "ggMrGilPTEFLNXV5X2xZSTd0Y3BNY0x6ZzNNRldpTmRRdTFRbXhhTmZkQXdBcw%3D%3D" + }, + "clickTrackingParams": "CJkBEKCzAhhbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2017" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Galway Girl (Martin Jensen Remix)" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Galway Girl (Martin Jensen Remix)" + } + }, + "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": "CJoBEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_lYI7tcpMcLzg3MFWiNdQu1QmxaNfdAwAs" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CJoBEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/80AWRdggafegQQjG5SCaCO4MrqJutunTBzvqTjYyi0ezKsAG67WjkXaldDqAwgXgdTcCV2lWFWgshOo6=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/80AWRdggafegQQjG5SCaCO4MrqJutunTBzvqTjYyi0ezKsAG67WjkXaldDqAwgXgdTcCV2lWFWgshOo6=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CKgBEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_IOyG5MA08D0", + "params": "ggMrGilPTEFLNXV5X2xZSTd0Y3BNY0x6ZzNNRldpTmRRdTFRbXhhTmZkQXdBcw%3D%3D" + }, + "clickTrackingParams": "CJkBEKCzAhhbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "Galway Girl (Martin Jensen Remix)" + } + ] + }, + "trackingParams": "CJkBEKCzAhhbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CJcBEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_mizQEF9wXLFxAjGlDF83JskTg49IZ1Ito" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CJcBEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJYBEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_mizQEF9wXLFxAjGlDF83JskTg49IZ1Ito" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CJYBEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CJUBEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CJQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mizQEF9wXLFxAjGlDF83JskTg49IZ1Ito" + } + }, + "playlistId": "OLAK5uy_mizQEF9wXLFxAjGlDF83JskTg49IZ1Ito" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CJQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CJMBEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CJIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_mizQEF9wXLFxAjGlDF83JskTg49IZ1Ito" + } + }, + "playlistId": "OLAK5uy_mizQEF9wXLFxAjGlDF83JskTg49IZ1Ito" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CJABEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CJEBEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CJEBEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CJABEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_mizQEF9wXLFxAjGlDF83JskTg49IZ1Ito" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CJABEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CI4BEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CI8BEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CI8BEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CI4BEMOUBhgFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CI0BEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CI0BEJD7BRgGIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIwBEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X21pelFFRjl3WExGeEFqR2xERjgzSnNrVGc0OUlaMUl0bw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CIwBEJH7BRgHIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + ], + "trackingParams": "CIsBEKc7IhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_T5s950Swfdy", + "params": "ggMrGilPTEFLNXV5X21pelFFRjl3WExGeEFqR2xERjgzSnNrVGc0OUlaMUl0bw%3D%3D" + }, + "clickTrackingParams": "CIkBEKCzAhhcIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "subtitle": { + "runs": [ + { + "text": "Album" + }, + { + "text": " • " + }, + { + "text": "2017" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause ÷ (Deluxe)" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play ÷ (Deluxe)" + } + }, + "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": "CIoBEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_mizQEF9wXLFxAjGlDF83JskTg49IZ1Ito" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CIoBEMjeAiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "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/xpDEOr2TeqEn1QpXosXhqtj149FzNnTgAG3oqPnpTxTbQk-oceO90Sz4Axq0s4Jp_QLGQha_um6_EG3WGQ=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/xpDEOr2TeqEn1QpXosXhqtj149FzNnTgAG3oqPnpTxTbQk-oceO90Sz4Axq0s4Jp_QLGQha_um6_EG3WGQ=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CJgBEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_T5s950Swfdy", + "params": "ggMrGilPTEFLNXV5X21pelFFRjl3WExGeEFqR2xERjgzSnNrVGc0OUlaMUl0bw%3D%3D" + }, + "clickTrackingParams": "CIkBEKCzAhhcIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + }, + "text": "÷ (Deluxe)" + } + ] + }, + "trackingParams": "CIkBEKCzAhhcIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "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": "CIcBEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_n3bXN_2XiroiTc_jBjTOl8HWg6lq-q0Fg" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CIcBEJrzBRgAIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIYBEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_n3bXN_2XiroiTc_jBjTOl8HWg6lq-q0Fg" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CIYBEJvzBRgBIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CIUBEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CIQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_n3bXN_2XiroiTc_jBjTOl8HWg6lq-q0Fg" + } + }, + "playlistId": "OLAK5uy_n3bXN_2XiroiTc_jBjTOl8HWg6lq-q0Fg" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CIQBEL7uBRgCIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CIMBEMrHAyITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + } + }, + "clickTrackingParams": "CIIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchEndpoint": { + "playlistId": "OLAK5uy_n3bXN_2XiroiTc_jBjTOl8HWg6lq-q0Fg" + } + }, + "playlistId": "OLAK5uy_n3bXN_2XiroiTc_jBjTOl8HWg6lq-q0Fg" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CIIBEPvvBRgDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CIABEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CIEBEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CIEBEPBbIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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": "CIABEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_n3bXN_2XiroiTc_jBjTOl8HWg6lq-q0Fg" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CIABEIT_BRgEIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CH4Qw5QGGAUiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CH8Q8FsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CH8Q8FsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + "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": "CH4Qw5QGGAUiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CH0QkPsFGAYiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CH0QkPsFGAYiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CHwQkfsFGAciEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X24zYlhOXzJYaXJvaVRjX2pCalRPbDhIV2c2bHEtcTBGZw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CHwQkfsFGAciEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + } + ], + "trackingParams": "CHsQpzsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_iw09vpSYqaZ", + "params": "ggMrGilPTEFLNXV5X24zYlhOXzJYaXJvaVRjX2pCalRPbDhIV2c2bHEtcTBGZw%3D%3D" + }, + "clickTrackingParams": "CHkQoLMCGF0iEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2017" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause How Would You Feel (Paean)" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play How Would You Feel (Paean)" + } + }, + "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": "CHoQyN4CIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_n3bXN_2XiroiTc_jBjTOl8HWg6lq-q0Fg" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CHoQyN4CIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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/Q55rIAk_fG3Q4HmtuD9ZQOniqMdd5wPK9ZnecT-pqaINoBPGkZpQdty93QCUF1pMLS1hk-QTwGM5HtcP=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/Q55rIAk_fG3Q4HmtuD9ZQOniqMdd5wPK9ZnecT-pqaINoBPGkZpQdty93QCUF1pMLS1hk-QTwGM5HtcP=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CIgBEIS_AiITCMKn4fH6ookDFdDfQgUdFfwwBQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_iw09vpSYqaZ", + "params": "ggMrGilPTEFLNXV5X24zYlhOXzJYaXJvaVRjX2pCalRPbDhIV2c2bHEtcTBGZw%3D%3D" + }, + "clickTrackingParams": "CHkQoLMCGF0iEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + }, + "text": "How Would You Feel (Paean)" + } + ] + }, + "trackingParams": "CHkQoLMCGF0iEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "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": "CHcQmvMFGAAiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_lQmaaTlqN7RvnbKmebpOzDMZTQsxwFfZI" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CHcQmvMFGAAiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CHYQm_MFGAEiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_lQmaaTlqN7RvnbKmebpOzDMZTQsxwFfZI" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CHYQm_MFGAEiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CHQQvu4FGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CHUQyscDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + }, + "clickTrackingParams": "CHQQvu4FGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CHQQvu4FGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "watchEndpoint": { + "playlistId": "OLAK5uy_lQmaaTlqN7RvnbKmebpOzDMZTQsxwFfZI" + } + }, + "playlistId": "OLAK5uy_lQmaaTlqN7RvnbKmebpOzDMZTQsxwFfZI" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CHQQvu4FGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CHIQ--8FGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CHMQyscDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + }, + "clickTrackingParams": "CHIQ--8FGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CHIQ--8FGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "watchEndpoint": { + "playlistId": "OLAK5uy_lQmaaTlqN7RvnbKmebpOzDMZTQsxwFfZI" + } + }, + "playlistId": "OLAK5uy_lQmaaTlqN7RvnbKmebpOzDMZTQsxwFfZI" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CHIQ--8FGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CHAQhP8FGAQiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CHEQ8FsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CHEQ8FsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + "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": "CHAQhP8FGAQiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_lQmaaTlqN7RvnbKmebpOzDMZTQsxwFfZI" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CHAQhP8FGAQiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CG4Qw5QGGAUiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CG8Q8FsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CG8Q8FsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + "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": "CG4Qw5QGGAUiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CG0QkPsFGAYiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CG0QkPsFGAYiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CGwQkfsFGAciEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2xRbWFhVGxxTjdSdm5iS21lYnBPekRNWlRRc3h3RmZaSQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CGwQkfsFGAciEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + } + ], + "trackingParams": "CGsQpzsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_6XnCnv0sKzE", + "params": "ggMrGilPTEFLNXV5X2xRbWFhVGxxTjdSdm5iS21lYnBPekRNWlRRc3h3RmZaSQ%3D%3D" + }, + "clickTrackingParams": "CGkQoLMCGF4iEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2017" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Castle on the Hill (Seeb Remix)" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Castle on the Hill (Seeb Remix)" + } + }, + "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": "CGoQyN4CIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_lQmaaTlqN7RvnbKmebpOzDMZTQsxwFfZI" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CGoQyN4CIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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/Gk9hVnyh_b4JhXObZz2XY-8Dift47Kb3hy3UXunbXW1aGYHqfO_xqGHWOtZZ1ZIGOedByxsncuBZDzAK=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/Gk9hVnyh_b4JhXObZz2XY-8Dift47Kb3hy3UXunbXW1aGYHqfO_xqGHWOtZZ1ZIGOedByxsncuBZDzAK=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CHgQhL8CIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_6XnCnv0sKzE", + "params": "ggMrGilPTEFLNXV5X2xRbWFhVGxxTjdSdm5iS21lYnBPekRNWlRRc3h3RmZaSQ%3D%3D" + }, + "clickTrackingParams": "CGkQoLMCGF4iEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + }, + "text": "Castle on the Hill (Seeb Remix)" + } + ] + }, + "trackingParams": "CGkQoLMCGF4iEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "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": "CGcQmvMFGAAiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_mCZqdGX6k88TaJ1i19e0UMsHtF7IRo_cM" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CGcQmvMFGAAiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CGYQm_MFGAEiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_mCZqdGX6k88TaJ1i19e0UMsHtF7IRo_cM" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CGYQm_MFGAEiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CGQQvu4FGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CGUQyscDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + }, + "clickTrackingParams": "CGQQvu4FGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CGQQvu4FGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "watchEndpoint": { + "playlistId": "OLAK5uy_mCZqdGX6k88TaJ1i19e0UMsHtF7IRo_cM" + } + }, + "playlistId": "OLAK5uy_mCZqdGX6k88TaJ1i19e0UMsHtF7IRo_cM" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CGQQvu4FGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CGIQ--8FGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CGMQyscDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + }, + "clickTrackingParams": "CGIQ--8FGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CGIQ--8FGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "watchEndpoint": { + "playlistId": "OLAK5uy_mCZqdGX6k88TaJ1i19e0UMsHtF7IRo_cM" + } + }, + "playlistId": "OLAK5uy_mCZqdGX6k88TaJ1i19e0UMsHtF7IRo_cM" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CGIQ--8FGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CGAQhP8FGAQiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CGEQ8FsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CGEQ8FsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + "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": "CGAQhP8FGAQiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_mCZqdGX6k88TaJ1i19e0UMsHtF7IRo_cM" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CGAQhP8FGAQiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CF4Qw5QGGAUiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CF8Q8FsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CF8Q8FsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + "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": "CF4Qw5QGGAUiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CF0QkPsFGAYiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CF0QkPsFGAYiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CFwQkfsFGAciEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X21DWnFkR1g2azg4VGFKMWkxOWUwVU1zSHRGN0lSb19jTQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CFwQkfsFGAciEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + } + ], + "trackingParams": "CFsQpzsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_PU8CEtvTo4J", + "params": "ggMrGilPTEFLNXV5X21DWnFkR1g2azg4VGFKMWkxOWUwVU1zSHRGN0lSb19jTQ%3D%3D" + }, + "clickTrackingParams": "CFkQoLMCGF8iEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2017" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Shape of You (Latin Remix)" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Shape of You (Latin Remix)" + } + }, + "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": "CFoQyN4CIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_mCZqdGX6k88TaJ1i19e0UMsHtF7IRo_cM" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CFoQyN4CIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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/p1_hH4TSu684inQ_brUpIFR59YCNtAdI_Ci7I1Dn7Ej7etS5bOXWf7jpojtYKMpGm7zIwGLfTtDHZbhWaw=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/p1_hH4TSu684inQ_brUpIFR59YCNtAdI_Ci7I1Dn7Ej7etS5bOXWf7jpojtYKMpGm7zIwGLfTtDHZbhWaw=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CGgQhL8CIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_PU8CEtvTo4J", + "params": "ggMrGilPTEFLNXV5X21DWnFkR1g2azg4VGFKMWkxOWUwVU1zSHRGN0lSb19jTQ%3D%3D" + }, + "clickTrackingParams": "CFkQoLMCGF8iEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + }, + "text": "Shape of You (Latin Remix) (feat. Zion & Lennox)" + } + ] + }, + "trackingParams": "CFkQoLMCGF8iEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "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": "CFcQmvMFGAAiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_nna9fJBEeKw9taFXLtf8dyAJIZ9kLjccI" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CFcQmvMFGAAiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CFYQm_MFGAEiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_nna9fJBEeKw9taFXLtf8dyAJIZ9kLjccI" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CFYQm_MFGAEiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CFQQvu4FGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CFUQyscDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + }, + "clickTrackingParams": "CFQQvu4FGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CFQQvu4FGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "watchEndpoint": { + "playlistId": "OLAK5uy_nna9fJBEeKw9taFXLtf8dyAJIZ9kLjccI" + } + }, + "playlistId": "OLAK5uy_nna9fJBEeKw9taFXLtf8dyAJIZ9kLjccI" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CFQQvu4FGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CFIQ--8FGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CFMQyscDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + }, + "clickTrackingParams": "CFIQ--8FGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CFIQ--8FGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "watchEndpoint": { + "playlistId": "OLAK5uy_nna9fJBEeKw9taFXLtf8dyAJIZ9kLjccI" + } + }, + "playlistId": "OLAK5uy_nna9fJBEeKw9taFXLtf8dyAJIZ9kLjccI" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CFIQ--8FGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CFAQhP8FGAQiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CFEQ8FsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CFEQ8FsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + "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": "CFAQhP8FGAQiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_nna9fJBEeKw9taFXLtf8dyAJIZ9kLjccI" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CFAQhP8FGAQiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CE4Qw5QGGAUiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CE8Q8FsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CE8Q8FsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + "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": "CE4Qw5QGGAUiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CE0QkPsFGAYiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CE0QkPsFGAYiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEwQkfsFGAciEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X25uYTlmSkJFZUt3OXRhRlhMdGY4ZHlBSklaOWtMamNjSQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CEwQkfsFGAciEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + } + ], + "trackingParams": "CEsQpzsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_fxyjJtNC3Ms", + "params": "ggMrGilPTEFLNXV5X25uYTlmSkJFZUt3OXRhRlhMdGY4ZHlBSklaOWtMamNjSQ%3D%3D" + }, + "clickTrackingParams": "CEkQoLMCGGAiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2017" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Shape of You (Major Lazer Remix)" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Shape of You (Major Lazer Remix)" + } + }, + "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": "CEoQyN4CIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_nna9fJBEeKw9taFXLtf8dyAJIZ9kLjccI" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CEoQyN4CIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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/c_i53SPZ6Ly8Ygiowl_yT8Iqm8-FcMKGNntu4ZQNJ1UDvaibdPbPbymxuBErdVuEkOLSYluZFVQ3XmfN=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/c_i53SPZ6Ly8Ygiowl_yT8Iqm8-FcMKGNntu4ZQNJ1UDvaibdPbPbymxuBErdVuEkOLSYluZFVQ3XmfN=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CFgQhL8CIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_fxyjJtNC3Ms", + "params": "ggMrGilPTEFLNXV5X25uYTlmSkJFZUt3OXRhRlhMdGY4ZHlBSklaOWtMamNjSQ%3D%3D" + }, + "clickTrackingParams": "CEkQoLMCGGAiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + }, + "text": "Shape of You (Major Lazer Remix)" + } + ] + }, + "trackingParams": "CEkQoLMCGGAiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "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": "CEcQmvMFGAAiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_k6oQ8OljahZXwSzxmNJMXCla7jY7-NWZI" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CEcQmvMFGAAiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEYQm_MFGAEiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_k6oQ8OljahZXwSzxmNJMXCla7jY7-NWZI" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CEYQm_MFGAEiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEQQvu4FGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CEUQyscDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + }, + "clickTrackingParams": "CEQQvu4FGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CEQQvu4FGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "watchEndpoint": { + "playlistId": "OLAK5uy_k6oQ8OljahZXwSzxmNJMXCla7jY7-NWZI" + } + }, + "playlistId": "OLAK5uy_k6oQ8OljahZXwSzxmNJMXCla7jY7-NWZI" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CEQQvu4FGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CEIQ--8FGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CEMQyscDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + }, + "clickTrackingParams": "CEIQ--8FGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CEIQ--8FGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "watchEndpoint": { + "playlistId": "OLAK5uy_k6oQ8OljahZXwSzxmNJMXCla7jY7-NWZI" + } + }, + "playlistId": "OLAK5uy_k6oQ8OljahZXwSzxmNJMXCla7jY7-NWZI" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CEIQ--8FGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CEAQhP8FGAQiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CEEQ8FsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CEEQ8FsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + "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": "CEAQhP8FGAQiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_k6oQ8OljahZXwSzxmNJMXCla7jY7-NWZI" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CEAQhP8FGAQiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CD4Qw5QGGAUiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CD8Q8FsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CD8Q8FsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + "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": "CD4Qw5QGGAUiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CD0QkPsFGAYiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CD0QkPsFGAYiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDwQkfsFGAciEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2s2b1E4T2xqYWhaWHdTenhtTkpNWENsYTdqWTctTldaSQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CDwQkfsFGAciEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + } + ], + "trackingParams": "CDsQpzsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_jg5X1A4aoxu", + "params": "ggMrGilPTEFLNXV5X2s2b1E4T2xqYWhaWHdTenhtTkpNWENsYTdqWTctTldaSQ%3D%3D" + }, + "clickTrackingParams": "CDgQoLMCGGEiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2017" + } + ] + }, + "subtitleBadges": [ + { + "musicInlineBadgeRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + }, + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "trackingParams": "CDkQoe0CGAAiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + } + ], + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Shape of You (Yxng Bane Remix)" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Shape of You (Yxng Bane Remix)" + } + }, + "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": "CDoQyN4CIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_k6oQ8OljahZXwSzxmNJMXCla7jY7-NWZI" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CDoQyN4CIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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/TOyICy5Om20aeXJ9YKkQ7uXuhy1mLW4BU9aJiv2XYsGuDPfMJAJEClI5oPao-dhYENmF9iCjaM33eoA=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/TOyICy5Om20aeXJ9YKkQ7uXuhy1mLW4BU9aJiv2XYsGuDPfMJAJEClI5oPao-dhYENmF9iCjaM33eoA=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CEgQhL8CIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_jg5X1A4aoxu", + "params": "ggMrGilPTEFLNXV5X2s2b1E4T2xqYWhaWHdTenhtTkpNWENsYTdqWTctTldaSQ%3D%3D" + }, + "clickTrackingParams": "CDgQoLMCGGEiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + }, + "text": "Shape of You (Yxng Bane Remix)" + } + ] + }, + "trackingParams": "CDgQoLMCGGEiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "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": "CDYQmvMFGAAiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_kqubCZxGcOoyj2FWxE7SEDQs7Mlz5ZqzI" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CDYQmvMFGAAiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDUQm_MFGAEiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_kqubCZxGcOoyj2FWxE7SEDQs7Mlz5ZqzI" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CDUQm_MFGAEiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDMQvu4FGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CDQQyscDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + }, + "clickTrackingParams": "CDMQvu4FGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CDMQvu4FGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "watchEndpoint": { + "playlistId": "OLAK5uy_kqubCZxGcOoyj2FWxE7SEDQs7Mlz5ZqzI" + } + }, + "playlistId": "OLAK5uy_kqubCZxGcOoyj2FWxE7SEDQs7Mlz5ZqzI" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CDMQvu4FGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDEQ--8FGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CDIQyscDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + }, + "clickTrackingParams": "CDEQ--8FGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CDEQ--8FGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "watchEndpoint": { + "playlistId": "OLAK5uy_kqubCZxGcOoyj2FWxE7SEDQs7Mlz5ZqzI" + } + }, + "playlistId": "OLAK5uy_kqubCZxGcOoyj2FWxE7SEDQs7Mlz5ZqzI" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CDEQ--8FGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CC8QhP8FGAQiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CDAQ8FsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CDAQ8FsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + "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": "CC8QhP8FGAQiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_kqubCZxGcOoyj2FWxE7SEDQs7Mlz5ZqzI" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CC8QhP8FGAQiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CC0Qw5QGGAUiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CC4Q8FsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CC4Q8FsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + "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": "CC0Qw5QGGAUiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CCwQkPsFGAYiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CCwQkPsFGAYiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCsQkfsFGAciEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2txdWJDWnhHY09veWoyRld4RTdTRURRczdNbHo1WnF6SQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CCsQkfsFGAciEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + } + ], + "trackingParams": "CCoQpzsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_X7o29iaA2pL", + "params": "ggMrGilPTEFLNXV5X2txdWJDWnhHY09veWoyRld4RTdTRURRczdNbHo1WnF6SQ%3D%3D" + }, + "clickTrackingParams": "CCgQoLMCGGIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2017" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Shape of You (Acoustic)" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Shape of You (Acoustic)" + } + }, + "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": "CCkQyN4CIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_kqubCZxGcOoyj2FWxE7SEDQs7Mlz5ZqzI" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CCkQyN4CIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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/bwy4-vj9NW0ZwqNnLff1pJwDeY86q_0r31JiaetMc5pFQyjYAwuC3eYLT3mc9sjeSrQQQfXZOsItBL9y=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/bwy4-vj9NW0ZwqNnLff1pJwDeY86q_0r31JiaetMc5pFQyjYAwuC3eYLT3mc9sjeSrQQQfXZOsItBL9y=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CDcQhL8CIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_X7o29iaA2pL", + "params": "ggMrGilPTEFLNXV5X2txdWJDWnhHY09veWoyRld4RTdTRURRczdNbHo1WnF6SQ%3D%3D" + }, + "clickTrackingParams": "CCgQoLMCGGIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + }, + "text": "Shape of You (Acoustic)" + } + ] + }, + "trackingParams": "CCgQoLMCGGIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "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": "CCYQmvMFGAAiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_nAMsUeEfwDEapXTuB4ltvBdXwM7ccEScY" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CCYQmvMFGAAiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCUQm_MFGAEiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_nAMsUeEfwDEapXTuB4ltvBdXwM7ccEScY" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CCUQm_MFGAEiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CCMQvu4FGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CCQQyscDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + }, + "clickTrackingParams": "CCMQvu4FGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CCMQvu4FGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "watchEndpoint": { + "playlistId": "OLAK5uy_nAMsUeEfwDEapXTuB4ltvBdXwM7ccEScY" + } + }, + "playlistId": "OLAK5uy_nAMsUeEfwDEapXTuB4ltvBdXwM7ccEScY" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CCMQvu4FGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CCEQ--8FGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CCIQyscDIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + } + }, + "clickTrackingParams": "CCEQ--8FGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CCEQ--8FGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "watchEndpoint": { + "playlistId": "OLAK5uy_nAMsUeEfwDEapXTuB4ltvBdXwM7ccEScY" + } + }, + "playlistId": "OLAK5uy_nAMsUeEfwDEapXTuB4ltvBdXwM7ccEScY" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CCEQ--8FGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CB8QhP8FGAQiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CCAQ8FsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CCAQ8FsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + "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": "CB8QhP8FGAQiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_nAMsUeEfwDEapXTuB4ltvBdXwM7ccEScY" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CB8QhP8FGAQiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CB0Qw5QGGAUiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CB4Q8FsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CB4Q8FsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + "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": "CB0Qw5QGGAUiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CBwQkPsFGAYiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CBwQkPsFGAYiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBsQkfsFGAciEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X25BTXNVZUVmd0RFYXBYVHVCNGx0dkJkWHdNN2NjRVNjWQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CBsQkfsFGAciEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + } + ], + "trackingParams": "CBoQpzsiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_9afeNFZkAHG", + "params": "ggMrGilPTEFLNXV5X25BTXNVZUVmd0RFYXBYVHVCNGx0dkJkWHdNN2NjRVNjWQ%3D%3D" + }, + "clickTrackingParams": "CBgQoLMCGGMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2017" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Castle on the Hill" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Castle on the Hill" + } + }, + "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": "CBkQyN4CIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_nAMsUeEfwDEapXTuB4ltvBdXwM7ccEScY" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CBkQyN4CIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "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/ZjsspviQCPTW7akHOuEuft-UEE_W_Ge_qBx5CRc06K5pzrKIVc3BzyiqB2WB2vD648JGEP7wQBbaEn3aSw=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/ZjsspviQCPTW7akHOuEuft-UEE_W_Ge_qBx5CRc06K5pzrKIVc3BzyiqB2WB2vD648JGEP7wQBbaEn3aSw=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CCcQhL8CIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_9afeNFZkAHG", + "params": "ggMrGilPTEFLNXV5X25BTXNVZUVmd0RFYXBYVHVCNGx0dkJkWHdNN2NjRVNjWQ%3D%3D" + }, + "clickTrackingParams": "CBgQoLMCGGMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + }, + "text": "Castle on the Hill" + } + ] + }, + "trackingParams": "CBgQoLMCGGMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" } } ], - "trackingParams": "CBIQ6IsCGAAiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CBYQ6IsCGAAiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" } } ], "header": { "musicSideAlignedItemRenderer": { + "endItems": [ + { + "musicSortFilterButtonRenderer": { + "accessibility": { + "accessibilityData": { + "label": "Sort by - Recency selected" + } + }, + "icon": { + "iconType": "ARROW_DROP_DOWN" + }, + "menu": { + "musicMultiSelectMenuRenderer": { + "formEntityKey": "EhxNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRIJABKAE%3D", + "options": [ + { + "musicMultiSelectMenuItemRenderer": { + "deselectedAccessibility": { + "accessibilityData": { + "label": "Default" + } + }, + "formItemEntityKey": "EklNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLVNPUlRfVFlQRV9VTlNQRUNJRklFRF9TT1JUX09SREVSX1VOU1BFQ0lGSUVEIJEBKAE%3D", + "selectedAccessibility": { + "accessibilityData": { + "label": "Default selected" + } + }, + "selectedCommand": { + "clickTrackingParams": "CA0Qk5QFGAAiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CA0Qk5QFGAAiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EkhNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLU9SSUdJTkFMX1JFTEVBU0VfREFURV9TT1JUX09SREVSX0RFU0NFTkRJTkcgkQEoAQ%3D%3D", + "newCheckedState": false + } + }, + { + "clickTrackingParams": "CA0Qk5QFGAAiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EkRNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLVZJRVdTX0xBU1RfN19EQVlTX1NPUlRfT1JERVJfREVTQ0VORElORyCRASgB", + "newCheckedState": false + } + }, + { + "clickTrackingParams": "CA0Qk5QFGAAiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EklNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLVNPUlRfVFlQRV9VTlNQRUNJRklFRF9TT1JUX09SREVSX1VOU1BFQ0lGSUVEIJEBKAE%3D", + "newCheckedState": true + } + }, + { + "clickTrackingParams": "CA0Qk5QFGAAiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "Ej9NUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLVJFTEVBU0VfVElUTEVfU09SVF9PUkRFUl9BU0NFTkRJTkcgkQEoAQ%3D%3D", + "newCheckedState": false + } + }, + { + "browseSectionListReloadEndpoint": { + "continuation": { + "reloadContinuationData": { + "clickTrackingParams": "CA4QxqYCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "continuation": "4qmFsgIwEhxNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRGhBnZ01HZWdRYUFnRUNvQVlC", + "showSpinnerOverlay": true + } + } + }, + "clickTrackingParams": "CA0Qk5QFGAAiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + ] + } + }, + "selectedIcon": { + "iconType": "CHECK" + }, + "title": { + "runs": [ + { + "text": "Default" + } + ] + }, + "trackingParams": "CA0Qk5QFGAAiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "musicMultiSelectMenuItemRenderer": { + "deselectedAccessibility": { + "accessibilityData": { + "label": "Recency" + } + }, + "formItemEntityKey": "EkhNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLU9SSUdJTkFMX1JFTEVBU0VfREFURV9TT1JUX09SREVSX0RFU0NFTkRJTkcgkQEoAQ%3D%3D", + "selectedAccessibility": { + "accessibilityData": { + "label": "Recency selected" + } + }, + "selectedCommand": { + "clickTrackingParams": "CAsQk5QFGAEiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CAsQk5QFGAEiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EkhNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLU9SSUdJTkFMX1JFTEVBU0VfREFURV9TT1JUX09SREVSX0RFU0NFTkRJTkcgkQEoAQ%3D%3D", + "newCheckedState": true + } + }, + { + "clickTrackingParams": "CAsQk5QFGAEiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EkRNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLVZJRVdTX0xBU1RfN19EQVlTX1NPUlRfT1JERVJfREVTQ0VORElORyCRASgB", + "newCheckedState": false + } + }, + { + "clickTrackingParams": "CAsQk5QFGAEiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EklNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLVNPUlRfVFlQRV9VTlNQRUNJRklFRF9TT1JUX09SREVSX1VOU1BFQ0lGSUVEIJEBKAE%3D", + "newCheckedState": false + } + }, + { + "clickTrackingParams": "CAsQk5QFGAEiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "Ej9NUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLVJFTEVBU0VfVElUTEVfU09SVF9PUkRFUl9BU0NFTkRJTkcgkQEoAQ%3D%3D", + "newCheckedState": false + } + }, + { + "browseSectionListReloadEndpoint": { + "continuation": { + "reloadContinuationData": { + "clickTrackingParams": "CAwQxqYCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "continuation": "4qmFsgI2EhxNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRGhZnZ01JZWdZUUFSb0NBUUtnQmdFJTNE", + "showSpinnerOverlay": true + } + } + }, + "clickTrackingParams": "CAsQk5QFGAEiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + ] + } + }, + "selectedIcon": { + "iconType": "CHECK" + }, + "title": { + "runs": [ + { + "text": "Recency" + } + ] + }, + "trackingParams": "CAsQk5QFGAEiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "musicMultiSelectMenuItemRenderer": { + "deselectedAccessibility": { + "accessibilityData": { + "label": "Popularity" + } + }, + "formItemEntityKey": "EkRNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLVZJRVdTX0xBU1RfN19EQVlTX1NPUlRfT1JERVJfREVTQ0VORElORyCRASgB", + "selectedAccessibility": { + "accessibilityData": { + "label": "Popularity selected" + } + }, + "selectedCommand": { + "clickTrackingParams": "CAkQk5QFGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CAkQk5QFGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "Ej9NUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLVJFTEVBU0VfVElUTEVfU09SVF9PUkRFUl9BU0NFTkRJTkcgkQEoAQ%3D%3D", + "newCheckedState": false + } + }, + { + "clickTrackingParams": "CAkQk5QFGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EklNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLVNPUlRfVFlQRV9VTlNQRUNJRklFRF9TT1JUX09SREVSX1VOU1BFQ0lGSUVEIJEBKAE%3D", + "newCheckedState": false + } + }, + { + "clickTrackingParams": "CAkQk5QFGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EkRNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLVZJRVdTX0xBU1RfN19EQVlTX1NPUlRfT1JERVJfREVTQ0VORElORyCRASgB", + "newCheckedState": true + } + }, + { + "clickTrackingParams": "CAkQk5QFGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EkhNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLU9SSUdJTkFMX1JFTEVBU0VfREFURV9TT1JUX09SREVSX0RFU0NFTkRJTkcgkQEoAQ%3D%3D", + "newCheckedState": false + } + }, + { + "browseSectionListReloadEndpoint": { + "continuation": { + "reloadContinuationData": { + "clickTrackingParams": "CAoQxqYCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "continuation": "4qmFsgI2EhxNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRGhZnZ01JZWdZUUFob0NBUUtnQmdFJTNE", + "showSpinnerOverlay": true + } + } + }, + "clickTrackingParams": "CAkQk5QFGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + ] + } + }, + "selectedIcon": { + "iconType": "CHECK" + }, + "title": { + "runs": [ + { + "text": "Popularity" + } + ] + }, + "trackingParams": "CAkQk5QFGAIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + }, + { + "musicMultiSelectMenuItemRenderer": { + "deselectedAccessibility": { + "accessibilityData": { + "label": "Alphabetical order" + } + }, + "formItemEntityKey": "Ej9NUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLVJFTEVBU0VfVElUTEVfU09SVF9PUkRFUl9BU0NFTkRJTkcgkQEoAQ%3D%3D", + "selectedAccessibility": { + "accessibilityData": { + "label": "Alphabetical order selected" + } + }, + "selectedCommand": { + "clickTrackingParams": "CAcQk5QFGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "commandExecutorCommand": { + "commands": [ + { + "clickTrackingParams": "CAcQk5QFGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EkRNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLVZJRVdTX0xBU1RfN19EQVlTX1NPUlRfT1JERVJfREVTQ0VORElORyCRASgB", + "newCheckedState": false + } + }, + { + "clickTrackingParams": "CAcQk5QFGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "Ej9NUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLVJFTEVBU0VfVElUTEVfU09SVF9PUkRFUl9BU0NFTkRJTkcgkQEoAQ%3D%3D", + "newCheckedState": true + } + }, + { + "clickTrackingParams": "CAcQk5QFGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EkhNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLU9SSUdJTkFMX1JFTEVBU0VfREFURV9TT1JUX09SREVSX0RFU0NFTkRJTkcgkQEoAQ%3D%3D", + "newCheckedState": false + } + }, + { + "clickTrackingParams": "CAcQk5QFGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=", + "musicCheckboxFormItemMutatedCommand": { + "formItemEntityKey": "EklNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLVNPUlRfVFlQRV9VTlNQRUNJRklFRF9TT1JUX09SREVSX1VOU1BFQ0lGSUVEIJEBKAE%3D", + "newCheckedState": false + } + }, + { + "browseSectionListReloadEndpoint": { + "continuation": { + "reloadContinuationData": { + "clickTrackingParams": "CAgQxqYCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "continuation": "4qmFsgI2EhxNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRGhZnZ01JZWdZUUF4b0NBUUtnQmdFJTNE", + "showSpinnerOverlay": true + } + } + }, + "clickTrackingParams": "CAcQk5QFGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + ] + } + }, + "selectedIcon": { + "iconType": "CHECK" + }, + "title": { + "runs": [ + { + "text": "Alphabetical order" + } + ] + }, + "trackingParams": "CAcQk5QFGAMiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + } + ], + "title": { + "musicMenuTitleRenderer": { + "primaryText": { + "runs": [ + { + "text": "Sort by" + } + ] + } + } + }, + "trackingParams": "CAYQkpQFIhMIwqfh8fqiiQMV0N9CBR0V_DAF" + } + }, + "title": { + "runs": [ + { + "text": "Recency" + } + ] + }, + "trackingParams": "CAUQkZQFGAEiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" + } + } + ], "startItems": [ { "chipCloudRenderer": { "chips": [ - { - "chipCloudChipRenderer": { - "accessibilityData": { - "accessibilityData": { - "label": "Popular" - } - }, - "isSelected": false, - "navigationEndpoint": { - "browseSectionListReloadEndpoint": { - "continuation": { - "reloadContinuationData": { - "clickTrackingParams": "CBEQxqYCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "continuation": "4qmFsgI2EhxNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRGhZnZ01JZWdZUUFob0NBUUtnQmdFJTNE", - "showSpinnerOverlay": true - } - } - }, - "clickTrackingParams": "CA8Q_V0YACITCObQ08HD8_4CFV_mEQgdLo8DJA==" - }, - "onDeselectedCommand": { - "browseSectionListReloadEndpoint": { - "continuation": { - "reloadContinuationData": { - "clickTrackingParams": "CBAQxqYCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "continuation": "4qmFsgIwEhxNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRGhBnZ01HZWdRYUFnRUNvQVlC", - "showSpinnerOverlay": true - } - } - }, - "clickTrackingParams": "CA8Q_V0YACITCObQ08HD8_4CFV_mEQgdLo8DJA==" - }, - "text": { - "runs": [ - { - "text": "Popular" - } - ] - }, - "trackingParams": "CA8Q_V0YACITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "uniqueId": "Popular" - } - }, - { - "chipCloudChipRenderer": { - "accessibilityData": { - "accessibilityData": { - "label": "Recent" - } - }, - "isSelected": false, - "navigationEndpoint": { - "browseSectionListReloadEndpoint": { - "continuation": { - "reloadContinuationData": { - "clickTrackingParams": "CA4QxqYCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "continuation": "4qmFsgI2EhxNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRGhZnZ01JZWdZUUFSb0NBUUtnQmdFJTNE", - "showSpinnerOverlay": true - } - } - }, - "clickTrackingParams": "CAwQ_V0YASITCObQ08HD8_4CFV_mEQgdLo8DJA==" - }, - "onDeselectedCommand": { - "browseSectionListReloadEndpoint": { - "continuation": { - "reloadContinuationData": { - "clickTrackingParams": "CA0QxqYCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "continuation": "4qmFsgIwEhxNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRGhBnZ01HZWdRYUFnRUNvQVlC", - "showSpinnerOverlay": true - } - } - }, - "clickTrackingParams": "CAwQ_V0YASITCObQ08HD8_4CFV_mEQgdLo8DJA==" - }, - "text": { - "runs": [ - { - "text": "Recent" - } - ] - }, - "trackingParams": "CAwQ_V0YASITCObQ08HD8_4CFV_mEQgdLo8DJA==", - "uniqueId": "Recent" - } - }, { "chipCloudChipRenderer": { "accessibilityData": { @@ -45284,25 +46716,25 @@ "browseSectionListReloadEndpoint": { "continuation": { "reloadContinuationData": { - "clickTrackingParams": "CAsQxqYCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "continuation": "4qmFsgI2EhxNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRGhZnZ01JZWdZSUFSb0NBUUtnQmdFJTNE", + "clickTrackingParams": "CBUQxqYCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "continuation": "4qmFsgI8EhxNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRGhxnZ01LZWdnSUFSQUJHZ0lCQXFBR0FRJTNEJTNE", "showSpinnerOverlay": true } } }, - "clickTrackingParams": "CAkQ_V0YAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "clickTrackingParams": "CBMQ_V0YACITCMKn4fH6ookDFdDfQgUdFfwwBQ==" }, "onDeselectedCommand": { "browseSectionListReloadEndpoint": { "continuation": { "reloadContinuationData": { - "clickTrackingParams": "CAoQxqYCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "continuation": "4qmFsgIwEhxNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRGhBnZ01HZWdRYUFnRUNvQVlC", + "clickTrackingParams": "CBQQxqYCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "continuation": "4qmFsgI2EhxNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRGhZnZ01JZWdZUUFSb0NBUUtnQmdFJTNE", "showSpinnerOverlay": true } } }, - "clickTrackingParams": "CAkQ_V0YAiITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "clickTrackingParams": "CBMQ_V0YACITCMKn4fH6ookDFdDfQgUdFfwwBQ==" }, "text": { "runs": [ @@ -45311,7 +46743,7 @@ } ] }, - "trackingParams": "CAkQ_V0YAiITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "trackingParams": "CBMQ_V0YACITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "uniqueId": "Albums" } }, @@ -45327,25 +46759,25 @@ "browseSectionListReloadEndpoint": { "continuation": { "reloadContinuationData": { - "clickTrackingParams": "CAgQxqYCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "continuation": "4qmFsgI2EhxNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRGhZnZ01JZWdZSUFob0NBUUtnQmdFJTNE", + "clickTrackingParams": "CBIQxqYCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "continuation": "4qmFsgI8EhxNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRGhxnZ01LZWdnSUFoQUJHZ0lCQXFBR0FRJTNEJTNE", "showSpinnerOverlay": true } } }, - "clickTrackingParams": "CAYQ_V0YAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "clickTrackingParams": "CBAQ_V0YASITCMKn4fH6ookDFdDfQgUdFfwwBQ==" }, "onDeselectedCommand": { "browseSectionListReloadEndpoint": { "continuation": { "reloadContinuationData": { - "clickTrackingParams": "CAcQxqYCIhMI5tDTwcPz_gIVX-YRCB0ujwMk", - "continuation": "4qmFsgIwEhxNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRGhBnZ01HZWdRYUFnRUNvQVlC", + "clickTrackingParams": "CBEQxqYCIhMIwqfh8fqiiQMV0N9CBR0V_DAF", + "continuation": "4qmFsgI2EhxNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRGhZnZ01JZWdZUUFSb0NBUUtnQmdFJTNE", "showSpinnerOverlay": true } } }, - "clickTrackingParams": "CAYQ_V0YAyITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "clickTrackingParams": "CBAQ_V0YASITCMKn4fH6ookDFdDfQgUdFfwwBQ==" }, "text": { "runs": [ @@ -45354,27 +46786,100 @@ } ] }, - "trackingParams": "CAYQ_V0YAyITCObQ08HD8_4CFV_mEQgdLo8DJA==", + "trackingParams": "CBAQ_V0YASITCMKn4fH6ookDFdDfQgUdFfwwBQ==", "uniqueId": "Singles" } } ], - "trackingParams": "CAUQ_F0YACITCObQ08HD8_4CFV_mEQgdLo8DJA==" + "trackingParams": "CA8Q_F0YACITCMKn4fH6ookDFdDfQgUdFfwwBQ==" } } ], - "trackingParams": "CAQQxv4DIhMI5tDTwcPz_gIVX-YRCB0ujwMk" + "trackingParams": "CAQQxv4DIhMIwqfh8fqiiQMV0N9CBR0V_DAF" } }, - "trackingParams": "CAMQui8iEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CAMQui8iEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" } }, - "trackingParams": "CAIQ8JMBGAAiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CAIQ8JMBGAUiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" } } ] } }, + "frameworkUpdates": { + "entityBatchUpdate": { + "mutations": [ + { + "entityKey": "EhxNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRIJABKAE%3D", + "payload": { + "musicForm": { + "booleanChoiceEntityKeys": [ + "EklNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLVNPUlRfVFlQRV9VTlNQRUNJRklFRF9TT1JUX09SREVSX1VOU1BFQ0lGSUVEIJEBKAE%3D", + "EkhNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLU9SSUdJTkFMX1JFTEVBU0VfREFURV9TT1JUX09SREVSX0RFU0NFTkRJTkcgkQEoAQ%3D%3D", + "Ej9NUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLVJFTEVBU0VfVElUTEVfU09SVF9PUkRFUl9BU0NFTkRJTkcgkQEoAQ%3D%3D", + "EkRNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLVZJRVdTX0xBU1RfN19EQVlTX1NPUlRfT1JERVJfREVTQ0VORElORyCRASgB" + ], + "id": "EhxNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRIJABKAE%3D" + } + }, + "type": "ENTITY_MUTATION_TYPE_REPLACE" + }, + { + "entityKey": "EklNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLVNPUlRfVFlQRV9VTlNQRUNJRklFRF9TT1JUX09SREVSX1VOU1BFQ0lGSUVEIJEBKAE%3D", + "payload": { + "musicFormBooleanChoice": { + "id": "EklNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLVNPUlRfVFlQRV9VTlNQRUNJRklFRF9TT1JUX09SREVSX1VOU1BFQ0lGSUVEIJEBKAE%3D", + "opaqueToken": "SORT_TYPE_UNSPECIFIED_SORT_ORDER_UNSPECIFIED", + "parentFormEntityKey": "EhxNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRIJABKAE%3D", + "selected": false + } + }, + "type": "ENTITY_MUTATION_TYPE_REPLACE" + }, + { + "entityKey": "EkhNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLU9SSUdJTkFMX1JFTEVBU0VfREFURV9TT1JUX09SREVSX0RFU0NFTkRJTkcgkQEoAQ%3D%3D", + "payload": { + "musicFormBooleanChoice": { + "id": "EkhNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLU9SSUdJTkFMX1JFTEVBU0VfREFURV9TT1JUX09SREVSX0RFU0NFTkRJTkcgkQEoAQ%3D%3D", + "opaqueToken": "ORIGINAL_RELEASE_DATE_SORT_ORDER_DESCENDING", + "parentFormEntityKey": "EhxNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRIJABKAE%3D", + "selected": true + } + }, + "type": "ENTITY_MUTATION_TYPE_REPLACE" + }, + { + "entityKey": "EkRNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLVZJRVdTX0xBU1RfN19EQVlTX1NPUlRfT1JERVJfREVTQ0VORElORyCRASgB", + "payload": { + "musicFormBooleanChoice": { + "id": "EkRNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLVZJRVdTX0xBU1RfN19EQVlTX1NPUlRfT1JERVJfREVTQ0VORElORyCRASgB", + "opaqueToken": "VIEWS_LAST_7_DAYS_SORT_ORDER_DESCENDING", + "parentFormEntityKey": "EhxNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRIJABKAE%3D", + "selected": false + } + }, + "type": "ENTITY_MUTATION_TYPE_REPLACE" + }, + { + "entityKey": "Ej9NUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLVJFTEVBU0VfVElUTEVfU09SVF9PUkRFUl9BU0NFTkRJTkcgkQEoAQ%3D%3D", + "payload": { + "musicFormBooleanChoice": { + "id": "Ej9NUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRLVJFTEVBU0VfVElUTEVfU09SVF9PUkRFUl9BU0NFTkRJTkcgkQEoAQ%3D%3D", + "opaqueToken": "RELEASE_TITLE_SORT_ORDER_ASCENDING", + "parentFormEntityKey": "EhxNUEFEVUNsbVhQZmFZaFhPWXNObl9RVXloZVdRIJABKAE%3D", + "selected": false + } + }, + "type": "ENTITY_MUTATION_TYPE_REPLACE" + } + ], + "timestamp": { + "nanos": 849915443, + "seconds": "1729633497" + } + } + }, "header": { "musicHeaderRenderer": { "title": { @@ -45384,7 +46889,7 @@ } ] }, - "trackingParams": "CAEQ4HIiEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CAEQ4HIiEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" } }, "responseContext": { @@ -45405,7 +46910,7 @@ }, { "key": "e", - "value": "9405987,23804281,23918597,23946420,23966208,23983296,23998056,24004644,24007246,24034168,24036948,24077241,24080738,24120820,24135310,24140247,24181174,24186125,24187043,24187377,24211178,24216872,24219713,24241378,24255165,24255543,24255545,24262346,24288664,24290971,24362099,24390675,24403792,24404640,24404910,24405913,24407191,24407444,24409417,24415864,24425063,24429093,24439361,24440518,24440520,24451319,24451438,24455284,24457384,24458317,24458324,24458329,24458839,24459436,24465011,24466371,24466833,24468691,24468724,24471752,24473981,24474252,24483088,24483503,24483890,24483898,24485239,24485421,24487287,24488188,24488210,24494079,24494988,24495060,24495838,24495958,24495967,24495988,24498300,24499293,24499298,24499424,24499532,24499566,24499577,24511564,24515366,24515423,24516157,24518007,24518452,24519102,24519143,24532514,24532855,24537200,24550285,24550526,24552572,24552606,24554139,24555242,24555247,24557645,24557849,24557862,24559680,24690497,24691334,24693160,24695411,24695517,24698425,24698791,24698880,24699860,39323074,39323604,39323607,51000012" + "value": "23804281,23966208,24004644,24077241,24181174,24241378,24367823,24439361,24542367,24548629,24552800,24566687,51009781,51010235,51017346,51020570,51021190,51025415,51030101,51037332,51037342,51037349,51050361,51053689,51057842,51057855,51063643,51064835,51065188,51089007,51098299,51111738,51115184,51117319,51124104,51129210,51133103,51134507,51149424,51152050,51157411,51157841,51158514,51160545,51162170,51165467,51169118,51176511,51178310,51178337,51178342,51178357,51178982,51183909,51186528,51190652,51195231,51204329,51217504,51221150,51222973,51223962,51226863,51226938,51227037,51227772,51228350,51230241,51230478,51231814,51237842,51239093,51241028,51242448,51243940,51248255,51248734,51249751,51251836,51255676,51255680,51255743,51256074,51256084,51257900,51257911,51257916,51258066,51259133,51260456,51265253,51265345,51265358,51265373,51266454,51267568,51275782,51276557,51276565,51276641,51281227,51282066,51282077,51282086,51284653,51285417,51286109,51287196,51287500,51289875,51289926,51289935,51289938,51289958,51289961,51289974,51290406,51293767,51294321,51295132,51295408,51296439,51298019,51298830,51299626,51299711,51299724,51299901,51299973,51299995,51300014,51300415,51300699,51302083,51302492,51302680,51303667,51303670,51303789,51304121,51304155,51304558,51305582,51305839,51307502,51308044,51308060,51309314,51309485,51309909,51310323,51311027,51311038,51312146,51312688,51313149,51313529,51313767,51314685,51314690,51314703,51314712,51314727,51315228,51315914,51315921,51315928,51315931,51315940,51315945,51315954,51315961,51315972,51315977,51316749,51318207,51319843,51321258,51321617,51321868,51321892,51322285,51322837,51322922,51323365,51324941,51325201,51325575,51326762,51326931,51327144,51327163,51327178" } ], "service": "GFEEDBACK" @@ -45418,7 +46923,7 @@ }, { "key": "cver", - "value": "1.20230508.01.01" + "value": "1.20241021.01.00" }, { "key": "yt_li", @@ -45426,7 +46931,7 @@ }, { "key": "GetBrowseArtistDiscographyPage_rid", - "value": "0x8a56945a44176c56" + "value": "0xa01295bb393375eb" } ], "service": "CSI" @@ -45440,16 +46945,11 @@ { "key": "client.name", "value": "WEB_REMIX" - }, - { - "key": "client.fexp", - "value": "24465011,24557862,24186125,24498300,24511564,24425063,23998056,24532855,24552606,24451319,24262346,24483503,24698425,24483898,24494079,24409417,24518007,24519143,24362099,24255543,24440520,24555247,24554139,24458839,24483088,39323074,24241378,24468691,24552572,24458329,24004644,24459436,24499298,9405987,24080738,24532514,24077241,24519102,39323607,24187377,24290971,24499577,24495967,24557849,24415864,24255545,24488210,24698880,24488188,24036948,24495838,24404910,24550285,24495988,24135310,24457384,24494988,24007246,24690497,24255165,39323604,23966208,24466833,24515423,51000012,24120820,24219713,24495060,24407444,24140247,24429093,24455284,24485239,24499424,24487287,24499532,24407191,24495958,24451438,24216872,24699860,24288664,24474252,23946420,24695517,23804281,24181174,24211178,24537200,24518452,24559680,24390675,24557645,24483890,24468724,24485421,24466371,24698791,24693160,24550526,24404640,24187043,24499566,24515366,24458324,24473981,24440518,24516157,24499293,24034168,24691334,23983296,24439361,24405913,24471752,23918597,24403792,24555242,24458317,24695411" } ], "service": "ECATCHER" } - ], - "visitorData": "CgtfR0oyV25SYWIwayjcz4CjBg%3D%3D" + ] }, - "trackingParams": "CAAQhGciEwjm0NPBw_P-AhVf5hEIHS6PAyQ=" + "trackingParams": "CAAQhGciEwjCp-Hx-qKJAxXQ30IFHRX8MAU=" } diff --git a/testfiles/music_artist/artist_default_2.json b/testfiles/music_artist/artist_default_2.json new file mode 100644 index 0000000..0863a04 --- /dev/null +++ b/testfiles/music_artist/artist_default_2.json @@ -0,0 +1,8442 @@ +{ + "continuationContents": { + "gridContinuation": { + "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": "CKUCEJrzBRgAIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_nsHDeYN1149KuUwRJalJeK72wWK_DBim0" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CKUCEJrzBRgAIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKQCEJvzBRgBIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_nsHDeYN1149KuUwRJalJeK72wWK_DBim0" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CKQCEJvzBRgBIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKICEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CKMCEMrHAyITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + } + }, + "clickTrackingParams": "CKICEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKICEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchEndpoint": { + "playlistId": "OLAK5uy_nsHDeYN1149KuUwRJalJeK72wWK_DBim0" + } + }, + "playlistId": "OLAK5uy_nsHDeYN1149KuUwRJalJeK72wWK_DBim0" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CKICEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKACEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CKECEMrHAyITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + } + }, + "clickTrackingParams": "CKACEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKACEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchEndpoint": { + "playlistId": "OLAK5uy_nsHDeYN1149KuUwRJalJeK72wWK_DBim0" + } + }, + "playlistId": "OLAK5uy_nsHDeYN1149KuUwRJalJeK72wWK_DBim0" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CKACEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CJ4CEIT_BRgEIhMIuofF9fqiiQMVsONCBR0FzA5p", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CJ8CEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CJ8CEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "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": "CJ4CEIT_BRgEIhMIuofF9fqiiQMVsONCBR0FzA5p", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_nsHDeYN1149KuUwRJalJeK72wWK_DBim0" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CJ4CEIT_BRgEIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJwCEMOUBhgFIhMIuofF9fqiiQMVsONCBR0FzA5p", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CJ0CEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CJ0CEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "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": "CJwCEMOUBhgFIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CJsCEJD7BRgGIhMIuofF9fqiiQMVsONCBR0FzA5p" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CJsCEJD7BRgGIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJoCEJH7BRgHIhMIuofF9fqiiQMVsONCBR0FzA5p", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X25zSERlWU4xMTQ5S3VVd1JKYWxKZUs3MndXS19EQmltMA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJoCEJH7BRgHIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + } + ], + "trackingParams": "CJkCEKc7IhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_BISrGiTAXgq", + "params": "ggMrGilPTEFLNXV5X25zSERlWU4xMTQ5S3VVd1JKYWxKZUs3MndXS19EQmltMA%3D%3D" + }, + "clickTrackingParams": "CJYCEKCzAhgAIhMIuofF9fqiiQMVsONCBR0FzA5p" + }, + "subtitle": { + "runs": [ + { + "text": "Album" + }, + { + "text": " • " + }, + { + "text": "2015" + } + ] + }, + "subtitleBadges": [ + { + "musicInlineBadgeRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + }, + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "trackingParams": "CJcCEKHtAhgAIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + } + ], + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause 5" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play 5" + } + }, + "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": "CJgCEMjeAiITCLqHxfX6ookDFbDjQgUdBcwOaQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_nsHDeYN1149KuUwRJalJeK72wWK_DBim0" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CJgCEMjeAiITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + }, + "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/OTZSWr6A0tGLj10SQ25AQ9zFfW2qOxm1xVZ1_oMuPWIPOJB3lCsm9474WXHP99KxX0hkEa4EWGSt_Sae=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/OTZSWr6A0tGLj10SQ25AQ9zFfW2qOxm1xVZ1_oMuPWIPOJB3lCsm9474WXHP99KxX0hkEa4EWGSt_Sae=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CKYCEIS_AiITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_BISrGiTAXgq", + "params": "ggMrGilPTEFLNXV5X25zSERlWU4xMTQ5S3VVd1JKYWxKZUs3MndXS19EQmltMA%3D%3D" + }, + "clickTrackingParams": "CJYCEKCzAhgAIhMIuofF9fqiiQMVsONCBR0FzA5p" + }, + "text": "5" + } + ] + }, + "trackingParams": "CJYCEKCzAhgAIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "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": "CJQCEJrzBRgAIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_nLYh3bXau7EV_lgxTQEFVcUo3OSkJ8Dy4" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CJQCEJrzBRgAIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJMCEJvzBRgBIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_nLYh3bXau7EV_lgxTQEFVcUo3OSkJ8Dy4" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CJMCEJvzBRgBIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJECEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CJICEMrHAyITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + } + }, + "clickTrackingParams": "CJECEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJECEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchEndpoint": { + "playlistId": "OLAK5uy_nLYh3bXau7EV_lgxTQEFVcUo3OSkJ8Dy4" + } + }, + "playlistId": "OLAK5uy_nLYh3bXau7EV_lgxTQEFVcUo3OSkJ8Dy4" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CJECEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI8CEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CJACEMrHAyITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + } + }, + "clickTrackingParams": "CI8CEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CI8CEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchEndpoint": { + "playlistId": "OLAK5uy_nLYh3bXau7EV_lgxTQEFVcUo3OSkJ8Dy4" + } + }, + "playlistId": "OLAK5uy_nLYh3bXau7EV_lgxTQEFVcUo3OSkJ8Dy4" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CI8CEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CI0CEIT_BRgEIhMIuofF9fqiiQMVsONCBR0FzA5p", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CI4CEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CI4CEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "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": "CI0CEIT_BRgEIhMIuofF9fqiiQMVsONCBR0FzA5p", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_nLYh3bXau7EV_lgxTQEFVcUo3OSkJ8Dy4" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CI0CEIT_BRgEIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIsCEMOUBhgFIhMIuofF9fqiiQMVsONCBR0FzA5p", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CIwCEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CIwCEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "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": "CIsCEMOUBhgFIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CIoCEJD7BRgGIhMIuofF9fqiiQMVsONCBR0FzA5p" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CIoCEJD7BRgGIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIkCEJH7BRgHIhMIuofF9fqiiQMVsONCBR0FzA5p", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X25MWWgzYlhhdTdFVl9sZ3hUUUVGVmNVbzNPU2tKOER5NA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CIkCEJH7BRgHIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + } + ], + "trackingParams": "CIgCEKc7IhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_FNeOTtNjbu3", + "params": "ggMrGilPTEFLNXV5X25MWWgzYlhhdTdFVl9sZ3hUUUVGVmNVbzNPU2tKOER5NA%3D%3D" + }, + "clickTrackingParams": "CIUCEKCzAhgBIhMIuofF9fqiiQMVsONCBR0FzA5p" + }, + "subtitle": { + "runs": [ + { + "text": "EP" + }, + { + "text": " • " + }, + { + "text": "2014" + } + ] + }, + "subtitleBadges": [ + { + "musicInlineBadgeRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + }, + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "trackingParams": "CIYCEKHtAhgAIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + } + ], + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Don't" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Don't" + } + }, + "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": "CIcCEMjeAiITCLqHxfX6ookDFbDjQgUdBcwOaQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_nLYh3bXau7EV_lgxTQEFVcUo3OSkJ8Dy4" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CIcCEMjeAiITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + }, + "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/Jgi4oz7s7ckM3gEAQQgIgCWZEFDITqChMqSaPPX1QtDSBlaZDenoxcfCHAl-O_6X3pn5f6Q3O4utfHvBbA=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/Jgi4oz7s7ckM3gEAQQgIgCWZEFDITqChMqSaPPX1QtDSBlaZDenoxcfCHAl-O_6X3pn5f6Q3O4utfHvBbA=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CJUCEIS_AiITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_FNeOTtNjbu3", + "params": "ggMrGilPTEFLNXV5X25MWWgzYlhhdTdFVl9sZ3hUUUVGVmNVbzNPU2tKOER5NA%3D%3D" + }, + "clickTrackingParams": "CIUCEKCzAhgBIhMIuofF9fqiiQMVsONCBR0FzA5p" + }, + "text": "Don't" + } + ] + }, + "trackingParams": "CIUCEKCzAhgBIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "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": "CIMCEJrzBRgAIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_k1MDvX2sdOeYYMTfINapYOsjGPt78jkLk" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CIMCEJrzBRgAIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIICEJvzBRgBIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_k1MDvX2sdOeYYMTfINapYOsjGPt78jkLk" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CIICEJvzBRgBIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIACEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CIECEMrHAyITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + } + }, + "clickTrackingParams": "CIACEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIACEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchEndpoint": { + "playlistId": "OLAK5uy_k1MDvX2sdOeYYMTfINapYOsjGPt78jkLk" + } + }, + "playlistId": "OLAK5uy_k1MDvX2sdOeYYMTfINapYOsjGPt78jkLk" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CIACEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CP4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CP8BEMrHAyITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + } + }, + "clickTrackingParams": "CP4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CP4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchEndpoint": { + "playlistId": "OLAK5uy_k1MDvX2sdOeYYMTfINapYOsjGPt78jkLk" + } + }, + "playlistId": "OLAK5uy_k1MDvX2sdOeYYMTfINapYOsjGPt78jkLk" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CP4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CPwBEIT_BRgEIhMIuofF9fqiiQMVsONCBR0FzA5p", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CP0BEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CP0BEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "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": "CPwBEIT_BRgEIhMIuofF9fqiiQMVsONCBR0FzA5p", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_k1MDvX2sdOeYYMTfINapYOsjGPt78jkLk" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CPwBEIT_BRgEIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPoBEMOUBhgFIhMIuofF9fqiiQMVsONCBR0FzA5p", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CPsBEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CPsBEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "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": "CPoBEMOUBhgFIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CPkBEJD7BRgGIhMIuofF9fqiiQMVsONCBR0FzA5p" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CPkBEJD7BRgGIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPgBEJH7BRgHIhMIuofF9fqiiQMVsONCBR0FzA5p", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2sxTUR2WDJzZE9lWVlNVGZJTmFwWU9zakdQdDc4amtMaw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CPgBEJH7BRgHIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + } + ], + "trackingParams": "CPcBEKc7IhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_uwYFp848Tmr", + "params": "ggMrGilPTEFLNXV5X2sxTUR2WDJzZE9lWVlNVGZJTmFwWU9zakdQdDc4amtMaw%3D%3D" + }, + "clickTrackingParams": "CPUBEKCzAhgCIhMIuofF9fqiiQMVsONCBR0FzA5p" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2014" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Photograph (Felix Jaehn Remix)" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Photograph (Felix Jaehn Remix)" + } + }, + "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": "CPYBEMjeAiITCLqHxfX6ookDFbDjQgUdBcwOaQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_k1MDvX2sdOeYYMTfINapYOsjGPt78jkLk" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CPYBEMjeAiITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + }, + "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/TFw1IamXQrn5hzkraRvYgtwzDw28X1SLulnOaAUvstXh1f5bHvUwF0AcjNdDIV8-0DpQkl__SBFZ0fNGbQ=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/TFw1IamXQrn5hzkraRvYgtwzDw28X1SLulnOaAUvstXh1f5bHvUwF0AcjNdDIV8-0DpQkl__SBFZ0fNGbQ=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CIQCEIS_AiITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_uwYFp848Tmr", + "params": "ggMrGilPTEFLNXV5X2sxTUR2WDJzZE9lWVlNVGZJTmFwWU9zakdQdDc4amtMaw%3D%3D" + }, + "clickTrackingParams": "CPUBEKCzAhgCIhMIuofF9fqiiQMVsONCBR0FzA5p" + }, + "text": "Photograph (Felix Jaehn Remix)" + } + ] + }, + "trackingParams": "CPUBEKCzAhgCIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "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": "CPMBEJrzBRgAIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_lkFY4oZHG2FXKLKirsBIa3sff0ToSxLSY" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CPMBEJrzBRgAIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CPIBEJvzBRgBIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_lkFY4oZHG2FXKLKirsBIa3sff0ToSxLSY" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CPIBEJvzBRgBIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CPABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CPEBEMrHAyITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + } + }, + "clickTrackingParams": "CPABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CPABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchEndpoint": { + "playlistId": "OLAK5uy_lkFY4oZHG2FXKLKirsBIa3sff0ToSxLSY" + } + }, + "playlistId": "OLAK5uy_lkFY4oZHG2FXKLKirsBIa3sff0ToSxLSY" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CPABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CO4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CO8BEMrHAyITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + } + }, + "clickTrackingParams": "CO4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CO4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchEndpoint": { + "playlistId": "OLAK5uy_lkFY4oZHG2FXKLKirsBIa3sff0ToSxLSY" + } + }, + "playlistId": "OLAK5uy_lkFY4oZHG2FXKLKirsBIa3sff0ToSxLSY" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CO4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "COwBEIT_BRgEIhMIuofF9fqiiQMVsONCBR0FzA5p", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CO0BEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CO0BEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "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": "COwBEIT_BRgEIhMIuofF9fqiiQMVsONCBR0FzA5p", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_lkFY4oZHG2FXKLKirsBIa3sff0ToSxLSY" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "COwBEIT_BRgEIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "COoBEMOUBhgFIhMIuofF9fqiiQMVsONCBR0FzA5p", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "COsBEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "COsBEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "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": "COoBEMOUBhgFIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "COkBEJD7BRgGIhMIuofF9fqiiQMVsONCBR0FzA5p" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "COkBEJD7BRgGIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "COgBEJH7BRgHIhMIuofF9fqiiQMVsONCBR0FzA5p", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2xrRlk0b1pIRzJGWEtMS2lyc0JJYTNzZmYwVG9TeExTWQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "COgBEJH7BRgHIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + } + ], + "trackingParams": "COcBEKc7IhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_A4r9EfLZzYN", + "params": "ggMrGilPTEFLNXV5X2xrRlk0b1pIRzJGWEtMS2lyc0JJYTNzZmYwVG9TeExTWQ%3D%3D" + }, + "clickTrackingParams": "COUBEKCzAhgDIhMIuofF9fqiiQMVsONCBR0FzA5p" + }, + "subtitle": { + "runs": [ + { + "text": "Album" + }, + { + "text": " • " + }, + { + "text": "2014" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause x (Deluxe Edition)" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play x (Deluxe Edition)" + } + }, + "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": "COYBEMjeAiITCLqHxfX6ookDFbDjQgUdBcwOaQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_lkFY4oZHG2FXKLKirsBIa3sff0ToSxLSY" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "COYBEMjeAiITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + }, + "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/emeqGnTWaGFe5roPNKOsSe5WFl81hEScrwhlaJkSrmZn8F-rcYVg_VtYKSj5v59eU5ZrUo3uzlbI0wDV=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/emeqGnTWaGFe5roPNKOsSe5WFl81hEScrwhlaJkSrmZn8F-rcYVg_VtYKSj5v59eU5ZrUo3uzlbI0wDV=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CPQBEIS_AiITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_A4r9EfLZzYN", + "params": "ggMrGilPTEFLNXV5X2xrRlk0b1pIRzJGWEtMS2lyc0JJYTNzZmYwVG9TeExTWQ%3D%3D" + }, + "clickTrackingParams": "COUBEKCzAhgDIhMIuofF9fqiiQMVsONCBR0FzA5p" + }, + "text": "x (Deluxe Edition)" + } + ] + }, + "trackingParams": "COUBEKCzAhgDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "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": "COMBEJrzBRgAIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_miD_PNamzQJ4czMQRp7P8EKqnLk-l2ZOI" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "COMBEJrzBRgAIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "COIBEJvzBRgBIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_miD_PNamzQJ4czMQRp7P8EKqnLk-l2ZOI" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "COIBEJvzBRgBIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "COABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "COEBEMrHAyITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + } + }, + "clickTrackingParams": "COABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "COABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchEndpoint": { + "playlistId": "OLAK5uy_miD_PNamzQJ4czMQRp7P8EKqnLk-l2ZOI" + } + }, + "playlistId": "OLAK5uy_miD_PNamzQJ4czMQRp7P8EKqnLk-l2ZOI" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "COABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CN4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CN8BEMrHAyITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + } + }, + "clickTrackingParams": "CN4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CN4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchEndpoint": { + "playlistId": "OLAK5uy_miD_PNamzQJ4czMQRp7P8EKqnLk-l2ZOI" + } + }, + "playlistId": "OLAK5uy_miD_PNamzQJ4czMQRp7P8EKqnLk-l2ZOI" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CN4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CNwBEIT_BRgEIhMIuofF9fqiiQMVsONCBR0FzA5p", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CN0BEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CN0BEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "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": "CNwBEIT_BRgEIhMIuofF9fqiiQMVsONCBR0FzA5p", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_miD_PNamzQJ4czMQRp7P8EKqnLk-l2ZOI" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CNwBEIT_BRgEIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNoBEMOUBhgFIhMIuofF9fqiiQMVsONCBR0FzA5p", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CNsBEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CNsBEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "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": "CNoBEMOUBhgFIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CNkBEJD7BRgGIhMIuofF9fqiiQMVsONCBR0FzA5p" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CNkBEJD7BRgGIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNgBEJH7BRgHIhMIuofF9fqiiQMVsONCBR0FzA5p", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X21pRF9QTmFtelFKNGN6TVFScDdQOEVLcW5May1sMlpPSQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CNgBEJH7BRgHIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + } + ], + "trackingParams": "CNcBEKc7IhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_mbu8NjPadMx", + "params": "ggMrGilPTEFLNXV5X21pRF9QTmFtelFKNGN6TVFScDdQOEVLcW5May1sMlpPSQ%3D%3D" + }, + "clickTrackingParams": "CNUBEKCzAhgEIhMIuofF9fqiiQMVsONCBR0FzA5p" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2014" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Thinking Out Loud (Alex Adair Remix)" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Thinking Out Loud (Alex Adair Remix)" + } + }, + "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": "CNYBEMjeAiITCLqHxfX6ookDFbDjQgUdBcwOaQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_miD_PNamzQJ4czMQRp7P8EKqnLk-l2ZOI" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CNYBEMjeAiITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + }, + "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/JU6c3mZdiDMeTZnSnmUgGF_RjQfQ8JVEn2EfM4P7bot2A2fBuMa8Q4L0brAd8fUKGdSW0ick6I2izJPp=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/JU6c3mZdiDMeTZnSnmUgGF_RjQfQ8JVEn2EfM4P7bot2A2fBuMa8Q4L0brAd8fUKGdSW0ick6I2izJPp=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "COQBEIS_AiITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_mbu8NjPadMx", + "params": "ggMrGilPTEFLNXV5X21pRF9QTmFtelFKNGN6TVFScDdQOEVLcW5May1sMlpPSQ%3D%3D" + }, + "clickTrackingParams": "CNUBEKCzAhgEIhMIuofF9fqiiQMVsONCBR0FzA5p" + }, + "text": "Thinking Out Loud (Alex Adair Remix)" + } + ] + }, + "trackingParams": "CNUBEKCzAhgEIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "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": "CNMBEJrzBRgAIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_lUso6mljDGySRaJ8I2KgcJQ3l6DPrCK2E" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CNMBEJrzBRgAIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CNIBEJvzBRgBIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_lUso6mljDGySRaJ8I2KgcJQ3l6DPrCK2E" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CNIBEJvzBRgBIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CNABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CNEBEMrHAyITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + } + }, + "clickTrackingParams": "CNABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CNABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchEndpoint": { + "playlistId": "OLAK5uy_lUso6mljDGySRaJ8I2KgcJQ3l6DPrCK2E" + } + }, + "playlistId": "OLAK5uy_lUso6mljDGySRaJ8I2KgcJQ3l6DPrCK2E" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CNABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CM4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CM8BEMrHAyITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + } + }, + "clickTrackingParams": "CM4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CM4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchEndpoint": { + "playlistId": "OLAK5uy_lUso6mljDGySRaJ8I2KgcJQ3l6DPrCK2E" + } + }, + "playlistId": "OLAK5uy_lUso6mljDGySRaJ8I2KgcJQ3l6DPrCK2E" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CM4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CMwBEIT_BRgEIhMIuofF9fqiiQMVsONCBR0FzA5p", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CM0BEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CM0BEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "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": "CMwBEIT_BRgEIhMIuofF9fqiiQMVsONCBR0FzA5p", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_lUso6mljDGySRaJ8I2KgcJQ3l6DPrCK2E" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CMwBEIT_BRgEIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMoBEMOUBhgFIhMIuofF9fqiiQMVsONCBR0FzA5p", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CMsBEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CMsBEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "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": "CMoBEMOUBhgFIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CMkBEJD7BRgGIhMIuofF9fqiiQMVsONCBR0FzA5p" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CMkBEJD7BRgGIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMgBEJH7BRgHIhMIuofF9fqiiQMVsONCBR0FzA5p", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2xVc282bWxqREd5U1JhSjhJMktnY0pRM2w2RFByQ0syRQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CMgBEJH7BRgHIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + } + ], + "trackingParams": "CMcBEKc7IhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_BZlJAuZP4ab", + "params": "ggMrGilPTEFLNXV5X2xVc282bWxqREd5U1JhSjhJMktnY0pRM2w2RFByQ0syRQ%3D%3D" + }, + "clickTrackingParams": "CMUBEKCzAhgFIhMIuofF9fqiiQMVsONCBR0FzA5p" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2014" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Bloodstream" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Bloodstream" + } + }, + "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": "CMYBEMjeAiITCLqHxfX6ookDFbDjQgUdBcwOaQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_lUso6mljDGySRaJ8I2KgcJQ3l6DPrCK2E" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CMYBEMjeAiITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + }, + "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/TgtfJ5qVk7CXg9Q3aP5gO6YatBdsIX_S5OIn0wYp4_ur8EcOYN0yET6XVVgi32rvu60JUsjgvLGifEMOVQ=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/TgtfJ5qVk7CXg9Q3aP5gO6YatBdsIX_S5OIn0wYp4_ur8EcOYN0yET6XVVgi32rvu60JUsjgvLGifEMOVQ=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CNQBEIS_AiITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_BZlJAuZP4ab", + "params": "ggMrGilPTEFLNXV5X2xVc282bWxqREd5U1JhSjhJMktnY0pRM2w2RFByQ0syRQ%3D%3D" + }, + "clickTrackingParams": "CMUBEKCzAhgFIhMIuofF9fqiiQMVsONCBR0FzA5p" + }, + "text": "Bloodstream" + } + ] + }, + "trackingParams": "CMUBEKCzAhgFIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "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": "CMMBEJrzBRgAIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_kvGoYMAOk-BJr_heHtNAUtpS-JXyCfXZE" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CMMBEJrzBRgAIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CMIBEJvzBRgBIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_kvGoYMAOk-BJr_heHtNAUtpS-JXyCfXZE" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CMIBEJvzBRgBIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CMABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CMEBEMrHAyITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + } + }, + "clickTrackingParams": "CMABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CMABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchEndpoint": { + "playlistId": "OLAK5uy_kvGoYMAOk-BJr_heHtNAUtpS-JXyCfXZE" + } + }, + "playlistId": "OLAK5uy_kvGoYMAOk-BJr_heHtNAUtpS-JXyCfXZE" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CMABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CL4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CL8BEMrHAyITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + } + }, + "clickTrackingParams": "CL4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CL4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchEndpoint": { + "playlistId": "OLAK5uy_kvGoYMAOk-BJr_heHtNAUtpS-JXyCfXZE" + } + }, + "playlistId": "OLAK5uy_kvGoYMAOk-BJr_heHtNAUtpS-JXyCfXZE" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CL4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CLwBEIT_BRgEIhMIuofF9fqiiQMVsONCBR0FzA5p", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CL0BEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CL0BEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "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": "CLwBEIT_BRgEIhMIuofF9fqiiQMVsONCBR0FzA5p", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_kvGoYMAOk-BJr_heHtNAUtpS-JXyCfXZE" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CLwBEIT_BRgEIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLoBEMOUBhgFIhMIuofF9fqiiQMVsONCBR0FzA5p", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CLsBEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CLsBEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "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": "CLoBEMOUBhgFIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CLkBEJD7BRgGIhMIuofF9fqiiQMVsONCBR0FzA5p" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CLkBEJD7BRgGIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLgBEJH7BRgHIhMIuofF9fqiiQMVsONCBR0FzA5p", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2t2R29ZTUFPay1CSnJfaGVIdE5BVXRwUy1KWHlDZlhaRQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CLgBEJH7BRgHIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + } + ], + "trackingParams": "CLcBEKc7IhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_2XIV4ErBDbZ", + "params": "ggMrGilPTEFLNXV5X2t2R29ZTUFPay1CSnJfaGVIdE5BVXRwUy1KWHlDZlhaRQ%3D%3D" + }, + "clickTrackingParams": "CLUBEKCzAhgGIhMIuofF9fqiiQMVsONCBR0FzA5p" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2014" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Don't (X Ambassadors Remix)" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Don't (X Ambassadors Remix)" + } + }, + "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": "CLYBEMjeAiITCLqHxfX6ookDFbDjQgUdBcwOaQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_kvGoYMAOk-BJr_heHtNAUtpS-JXyCfXZE" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CLYBEMjeAiITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + }, + "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/0E0z_EATMrbJ5yww3DQogNsMObZR9UC-eFDY99xiDAfUu8TSPwiqYeCm38TV5PluPf4AmTu9-_4BfnmsUA=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/0E0z_EATMrbJ5yww3DQogNsMObZR9UC-eFDY99xiDAfUu8TSPwiqYeCm38TV5PluPf4AmTu9-_4BfnmsUA=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CMQBEIS_AiITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_2XIV4ErBDbZ", + "params": "ggMrGilPTEFLNXV5X2t2R29ZTUFPay1CSnJfaGVIdE5BVXRwUy1KWHlDZlhaRQ%3D%3D" + }, + "clickTrackingParams": "CLUBEKCzAhgGIhMIuofF9fqiiQMVsONCBR0FzA5p" + }, + "text": "Don't (X Ambassadors Remix)" + } + ] + }, + "trackingParams": "CLUBEKCzAhgGIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "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": "CLMBEJrzBRgAIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_mjr7UkdiphSDGvjvSdoRO8A8DgBXH5PMI" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CLMBEJrzBRgAIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CLIBEJvzBRgBIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_mjr7UkdiphSDGvjvSdoRO8A8DgBXH5PMI" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CLIBEJvzBRgBIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CLABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CLEBEMrHAyITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + } + }, + "clickTrackingParams": "CLABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CLABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchEndpoint": { + "playlistId": "OLAK5uy_mjr7UkdiphSDGvjvSdoRO8A8DgBXH5PMI" + } + }, + "playlistId": "OLAK5uy_mjr7UkdiphSDGvjvSdoRO8A8DgBXH5PMI" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CLABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CK4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CK8BEMrHAyITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + } + }, + "clickTrackingParams": "CK4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CK4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchEndpoint": { + "playlistId": "OLAK5uy_mjr7UkdiphSDGvjvSdoRO8A8DgBXH5PMI" + } + }, + "playlistId": "OLAK5uy_mjr7UkdiphSDGvjvSdoRO8A8DgBXH5PMI" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CK4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CKwBEIT_BRgEIhMIuofF9fqiiQMVsONCBR0FzA5p", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CK0BEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CK0BEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "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": "CKwBEIT_BRgEIhMIuofF9fqiiQMVsONCBR0FzA5p", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_mjr7UkdiphSDGvjvSdoRO8A8DgBXH5PMI" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CKwBEIT_BRgEIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKoBEMOUBhgFIhMIuofF9fqiiQMVsONCBR0FzA5p", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CKsBEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CKsBEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "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": "CKoBEMOUBhgFIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CKkBEJD7BRgGIhMIuofF9fqiiQMVsONCBR0FzA5p" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CKkBEJD7BRgGIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKgBEJH7BRgHIhMIuofF9fqiiQMVsONCBR0FzA5p", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X21qcjdVa2RpcGhTREd2anZTZG9STzhBOERnQlhINVBNSQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CKgBEJH7BRgHIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + } + ], + "trackingParams": "CKcBEKc7IhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_mKuODL5O2kJ", + "params": "ggMrGilPTEFLNXV5X21qcjdVa2RpcGhTREd2anZTZG9STzhBOERnQlhINVBNSQ%3D%3D" + }, + "clickTrackingParams": "CKUBEKCzAhgHIhMIuofF9fqiiQMVsONCBR0FzA5p" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2014" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Don't (Don Diablo Remix)" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Don't (Don Diablo Remix)" + } + }, + "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": "CKYBEMjeAiITCLqHxfX6ookDFbDjQgUdBcwOaQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_mjr7UkdiphSDGvjvSdoRO8A8DgBXH5PMI" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CKYBEMjeAiITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + }, + "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/OJ-W_3ceuqZIsl78f_sFfoGUgfvWCd1JaXmOoactakct8MTkSoJTD2u2StxaKjpEyB72JXv2wQ0-l5NV=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/OJ-W_3ceuqZIsl78f_sFfoGUgfvWCd1JaXmOoactakct8MTkSoJTD2u2StxaKjpEyB72JXv2wQ0-l5NV=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CLQBEIS_AiITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_mKuODL5O2kJ", + "params": "ggMrGilPTEFLNXV5X21qcjdVa2RpcGhTREd2anZTZG9STzhBOERnQlhINVBNSQ%3D%3D" + }, + "clickTrackingParams": "CKUBEKCzAhgHIhMIuofF9fqiiQMVsONCBR0FzA5p" + }, + "text": "Don't (Don Diablo Remix)" + } + ] + }, + "trackingParams": "CKUBEKCzAhgHIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "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": "CKMBEJrzBRgAIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_mXWovLcimzzZWX9Osi8476JAWHbQXtZTg" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CKMBEJrzBRgAIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CKIBEJvzBRgBIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_mXWovLcimzzZWX9Osi8476JAWHbQXtZTg" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CKIBEJvzBRgBIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CKABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CKEBEMrHAyITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + } + }, + "clickTrackingParams": "CKABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CKABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchEndpoint": { + "playlistId": "OLAK5uy_mXWovLcimzzZWX9Osi8476JAWHbQXtZTg" + } + }, + "playlistId": "OLAK5uy_mXWovLcimzzZWX9Osi8476JAWHbQXtZTg" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CKABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJ4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CJ8BEMrHAyITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + } + }, + "clickTrackingParams": "CJ4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJ4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchEndpoint": { + "playlistId": "OLAK5uy_mXWovLcimzzZWX9Osi8476JAWHbQXtZTg" + } + }, + "playlistId": "OLAK5uy_mXWovLcimzzZWX9Osi8476JAWHbQXtZTg" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CJ4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CJwBEIT_BRgEIhMIuofF9fqiiQMVsONCBR0FzA5p", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CJ0BEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CJ0BEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "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": "CJwBEIT_BRgEIhMIuofF9fqiiQMVsONCBR0FzA5p", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_mXWovLcimzzZWX9Osi8476JAWHbQXtZTg" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CJwBEIT_BRgEIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJoBEMOUBhgFIhMIuofF9fqiiQMVsONCBR0FzA5p", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CJsBEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CJsBEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "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": "CJoBEMOUBhgFIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CJkBEJD7BRgGIhMIuofF9fqiiQMVsONCBR0FzA5p" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CJkBEJD7BRgGIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJgBEJH7BRgHIhMIuofF9fqiiQMVsONCBR0FzA5p", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X21YV292TGNpbXp6WldYOU9zaTg0NzZKQVdIYlFYdFpUZw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CJgBEJH7BRgHIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + } + ], + "trackingParams": "CJcBEKc7IhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_BRb3zdRHvHB", + "params": "ggMrGilPTEFLNXV5X21YV292TGNpbXp6WldYOU9zaTg0NzZKQVdIYlFYdFpUZw%3D%3D" + }, + "clickTrackingParams": "CJUBEKCzAhgIIhMIuofF9fqiiQMVsONCBR0FzA5p" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2014" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause I Don't Care (Acoustic)" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play I Don't Care (Acoustic)" + } + }, + "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": "CJYBEMjeAiITCLqHxfX6ookDFbDjQgUdBcwOaQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_mXWovLcimzzZWX9Osi8476JAWHbQXtZTg" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CJYBEMjeAiITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + }, + "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/yUNn6qIle5EaOJfD2SLWzbzYhYuFjg6XA911-l26DYgaPd1JAjxwo8VmbyQpoPUAwykTIuRuTA-NaaY=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/yUNn6qIle5EaOJfD2SLWzbzYhYuFjg6XA911-l26DYgaPd1JAjxwo8VmbyQpoPUAwykTIuRuTA-NaaY=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CKQBEIS_AiITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_BRb3zdRHvHB", + "params": "ggMrGilPTEFLNXV5X21YV292TGNpbXp6WldYOU9zaTg0NzZKQVdIYlFYdFpUZw%3D%3D" + }, + "clickTrackingParams": "CJUBEKCzAhgIIhMIuofF9fqiiQMVsONCBR0FzA5p" + }, + "text": "I Don't Care (Acoustic)" + } + ] + }, + "trackingParams": "CJUBEKCzAhgIIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "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": "CJMBEJrzBRgAIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_m057KK3CHzaxh2awmeZEg_mAZiLDYaa1M" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CJMBEJrzBRgAIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CJIBEJvzBRgBIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_m057KK3CHzaxh2awmeZEg_mAZiLDYaa1M" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CJIBEJvzBRgBIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CJABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CJEBEMrHAyITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + } + }, + "clickTrackingParams": "CJABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CJABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchEndpoint": { + "playlistId": "OLAK5uy_m057KK3CHzaxh2awmeZEg_mAZiLDYaa1M" + } + }, + "playlistId": "OLAK5uy_m057KK3CHzaxh2awmeZEg_mAZiLDYaa1M" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CJABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CI4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CI8BEMrHAyITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + } + }, + "clickTrackingParams": "CI4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CI4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchEndpoint": { + "playlistId": "OLAK5uy_m057KK3CHzaxh2awmeZEg_mAZiLDYaa1M" + } + }, + "playlistId": "OLAK5uy_m057KK3CHzaxh2awmeZEg_mAZiLDYaa1M" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CI4BEPvvBRgDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CIwBEIT_BRgEIhMIuofF9fqiiQMVsONCBR0FzA5p", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CI0BEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CI0BEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "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": "CIwBEIT_BRgEIhMIuofF9fqiiQMVsONCBR0FzA5p", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_m057KK3CHzaxh2awmeZEg_mAZiLDYaa1M" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CIwBEIT_BRgEIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIoBEMOUBhgFIhMIuofF9fqiiQMVsONCBR0FzA5p", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CIsBEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CIsBEPBbIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "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": "CIoBEMOUBhgFIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CIkBEJD7BRgGIhMIuofF9fqiiQMVsONCBR0FzA5p" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CIkBEJD7BRgGIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIgBEJH7BRgHIhMIuofF9fqiiQMVsONCBR0FzA5p", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X20wNTdLSzNDSHpheGgyYXdtZVpFZ19tQVppTERZYWExTQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CIgBEJH7BRgHIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + } + ], + "trackingParams": "CIcBEKc7IhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_HQMyFGXfn7Q", + "params": "ggMrGilPTEFLNXV5X20wNTdLSzNDSHpheGgyYXdtZVpFZ19tQVppTERZYWExTQ%3D%3D" + }, + "clickTrackingParams": "CIUBEKCzAhgJIhMIuofF9fqiiQMVsONCBR0FzA5p" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2014" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Sing" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Sing" + } + }, + "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": "CIYBEMjeAiITCLqHxfX6ookDFbDjQgUdBcwOaQ==", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_m057KK3CHzaxh2awmeZEg_mAZiLDYaa1M" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CIYBEMjeAiITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + }, + "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/eEvPKcOR-o7x5Hf5vhYxMW2O3p47_QoN0P7dEZ2b4BiC8F2dGl9D8Kk6ltZCGIK2mEhDwbpKqDWt4Wh9=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/eEvPKcOR-o7x5Hf5vhYxMW2O3p47_QoN0P7dEZ2b4BiC8F2dGl9D8Kk6ltZCGIK2mEhDwbpKqDWt4Wh9=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CJQBEIS_AiITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_HQMyFGXfn7Q", + "params": "ggMrGilPTEFLNXV5X20wNTdLSzNDSHpheGgyYXdtZVpFZ19tQVppTERZYWExTQ%3D%3D" + }, + "clickTrackingParams": "CIUBEKCzAhgJIhMIuofF9fqiiQMVsONCBR0FzA5p" + }, + "text": "Sing" + } + ] + }, + "trackingParams": "CIUBEKCzAhgJIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "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": "CIMBEJrzBRgAIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_lRjHAR4mhOJD8X3mVt-3QsyQYj0Y-zsB8" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CIMBEJrzBRgAIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CIIBEJvzBRgBIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_lRjHAR4mhOJD8X3mVt-3QsyQYj0Y-zsB8" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CIIBEJvzBRgBIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CIABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CIEBEMrHAyITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + } + }, + "clickTrackingParams": "CIABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CIABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchEndpoint": { + "playlistId": "OLAK5uy_lRjHAR4mhOJD8X3mVt-3QsyQYj0Y-zsB8" + } + }, + "playlistId": "OLAK5uy_lRjHAR4mhOJD8X3mVt-3QsyQYj0Y-zsB8" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CIABEL7uBRgCIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CH4Q--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CH8QyscDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + } + }, + "clickTrackingParams": "CH4Q--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CH4Q--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "watchEndpoint": { + "playlistId": "OLAK5uy_lRjHAR4mhOJD8X3mVt-3QsyQYj0Y-zsB8" + } + }, + "playlistId": "OLAK5uy_lRjHAR4mhOJD8X3mVt-3QsyQYj0Y-zsB8" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CH4Q--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CHwQhP8FGAQiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CH0Q8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CH0Q8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + "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": "CHwQhP8FGAQiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_lRjHAR4mhOJD8X3mVt-3QsyQYj0Y-zsB8" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CHwQhP8FGAQiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CHoQw5QGGAUiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CHsQ8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CHsQ8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + "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": "CHoQw5QGGAUiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CHkQkPsFGAYiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CHkQkPsFGAYiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CHgQkfsFGAciEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2xSakhBUjRtaE9KRDhYM21WdC0zUXN5UVlqMFktenNCOA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CHgQkfsFGAciEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + } + ], + "trackingParams": "CHcQpzsiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_H0GkUrdjcC9", + "params": "ggMrGilPTEFLNXV5X2xSakhBUjRtaE9KRDhYM21WdC0zUXN5UVlqMFktenNCOA%3D%3D" + }, + "clickTrackingParams": "CHUQoLMCGAoiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + }, + "subtitle": { + "runs": [ + { + "text": "Single" + }, + { + "text": " • " + }, + { + "text": "2011" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Lego House" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Lego House" + } + }, + "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": "CHYQyN4CIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_lRjHAR4mhOJD8X3mVt-3QsyQYj0Y-zsB8" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CHYQyN4CIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "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/SWX7Xcu5W8RVYn2URT-WuU9wxyuqpSBUENwYWFYMZOeNEMEqHgGki-4zohvbu5ppP54zvIR2iJO9YZ8=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/SWX7Xcu5W8RVYn2URT-WuU9wxyuqpSBUENwYWFYMZOeNEMEqHgGki-4zohvbu5ppP54zvIR2iJO9YZ8=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CIQBEIS_AiITCLqHxfX6ookDFbDjQgUdBcwOaQ==" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_H0GkUrdjcC9", + "params": "ggMrGilPTEFLNXV5X2xSakhBUjRtaE9KRDhYM21WdC0zUXN5UVlqMFktenNCOA%3D%3D" + }, + "clickTrackingParams": "CHUQoLMCGAoiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + }, + "text": "Lego House" + } + ] + }, + "trackingParams": "CHUQoLMCGAoiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "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": "CHMQmvMFGAAiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_l2X7oT-Tsacd9_S4HKZ_I_LfNj6kyXs70" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CHMQmvMFGAAiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CHIQm_MFGAEiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_l2X7oT-Tsacd9_S4HKZ_I_LfNj6kyXs70" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CHIQm_MFGAEiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CHAQvu4FGAIiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CHEQyscDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + } + }, + "clickTrackingParams": "CHAQvu4FGAIiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CHAQvu4FGAIiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "watchEndpoint": { + "playlistId": "OLAK5uy_l2X7oT-Tsacd9_S4HKZ_I_LfNj6kyXs70" + } + }, + "playlistId": "OLAK5uy_l2X7oT-Tsacd9_S4HKZ_I_LfNj6kyXs70" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CHAQvu4FGAIiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CG4Q--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CG8QyscDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + } + }, + "clickTrackingParams": "CG4Q--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CG4Q--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "watchEndpoint": { + "playlistId": "OLAK5uy_l2X7oT-Tsacd9_S4HKZ_I_LfNj6kyXs70" + } + }, + "playlistId": "OLAK5uy_l2X7oT-Tsacd9_S4HKZ_I_LfNj6kyXs70" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CG4Q--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CGwQhP8FGAQiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CG0Q8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CG0Q8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + "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": "CGwQhP8FGAQiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_l2X7oT-Tsacd9_S4HKZ_I_LfNj6kyXs70" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CGwQhP8FGAQiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CGoQw5QGGAUiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CGsQ8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CGsQ8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + "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": "CGoQw5QGGAUiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CGkQkPsFGAYiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CGkQkPsFGAYiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CGgQkfsFGAciEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2wyWDdvVC1Uc2FjZDlfUzRIS1pfSV9MZk5qNmt5WHM3MA%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CGgQkfsFGAciEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + } + ], + "trackingParams": "CGcQpzsiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_KYP1Wsy4NQn", + "params": "ggMrGilPTEFLNXV5X2wyWDdvVC1Uc2FjZDlfUzRIS1pfSV9MZk5qNmt5WHM3MA%3D%3D" + }, + "clickTrackingParams": "CGQQoLMCGAsiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + }, + "subtitle": { + "runs": [ + { + "text": "Album" + }, + { + "text": " • " + }, + { + "text": "2011" + } + ] + }, + "subtitleBadges": [ + { + "musicInlineBadgeRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + }, + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "trackingParams": "CGUQoe0CGAAiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + } + ], + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause +" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play +" + } + }, + "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": "CGYQyN4CIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_l2X7oT-Tsacd9_S4HKZ_I_LfNj6kyXs70" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CGYQyN4CIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "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/5-Z0bmxl8Smil_IosCTw95oPxleiktQjx9DBusLmQDMJ_8EinzpmvvYqSUVimNzsftg3aEUFTM6y0TFM=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/5-Z0bmxl8Smil_IosCTw95oPxleiktQjx9DBusLmQDMJ_8EinzpmvvYqSUVimNzsftg3aEUFTM6y0TFM=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CHQQhL8CIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_KYP1Wsy4NQn", + "params": "ggMrGilPTEFLNXV5X2wyWDdvVC1Uc2FjZDlfUzRIS1pfSV9MZk5qNmt5WHM3MA%3D%3D" + }, + "clickTrackingParams": "CGQQoLMCGAsiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + }, + "text": "+" + } + ] + }, + "trackingParams": "CGQQoLMCGAsiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "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": "CGIQmvMFGAAiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_lyhfOyjIUkG2r-X0mRbuZwQRLN1R316kc" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CGIQmvMFGAAiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CGEQm_MFGAEiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_lyhfOyjIUkG2r-X0mRbuZwQRLN1R316kc" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CGEQm_MFGAEiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CF8Qvu4FGAIiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CGAQyscDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + } + }, + "clickTrackingParams": "CF8Qvu4FGAIiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CF8Qvu4FGAIiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "watchEndpoint": { + "playlistId": "OLAK5uy_lyhfOyjIUkG2r-X0mRbuZwQRLN1R316kc" + } + }, + "playlistId": "OLAK5uy_lyhfOyjIUkG2r-X0mRbuZwQRLN1R316kc" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CF8Qvu4FGAIiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CF0Q--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CF4QyscDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + } + }, + "clickTrackingParams": "CF0Q--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CF0Q--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "watchEndpoint": { + "playlistId": "OLAK5uy_lyhfOyjIUkG2r-X0mRbuZwQRLN1R316kc" + } + }, + "playlistId": "OLAK5uy_lyhfOyjIUkG2r-X0mRbuZwQRLN1R316kc" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CF0Q--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CFsQhP8FGAQiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CFwQ8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CFwQ8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + "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": "CFsQhP8FGAQiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_lyhfOyjIUkG2r-X0mRbuZwQRLN1R316kc" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CFsQhP8FGAQiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CFkQw5QGGAUiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CFoQ8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CFoQ8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + "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": "CFkQw5QGGAUiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CFgQkPsFGAYiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CFgQkPsFGAYiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CFcQkfsFGAciEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2x5aGZPeWpJVWtHMnItWDBtUmJ1WndRUkxOMVIzMTZrYw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CFcQkfsFGAciEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + } + ], + "trackingParams": "CFYQpzsiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_nd0QmmAnIHw", + "params": "ggMrGilPTEFLNXV5X2x5aGZPeWpJVWtHMnItWDBtUmJ1WndRUkxOMVIzMTZrYw%3D%3D" + }, + "clickTrackingParams": "CFQQoLMCGAwiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + }, + "subtitle": { + "runs": [ + { + "text": "EP" + }, + { + "text": " • " + }, + { + "text": "2011" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause The A Team" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play The A Team" + } + }, + "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": "CFUQyN4CIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_lyhfOyjIUkG2r-X0mRbuZwQRLN1R316kc" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CFUQyN4CIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "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/JH8vdTbtfIHuimHoLhfPpZdpYjA_jmqTBKTYF0Nu_C10FX69mYQU60gF9B8ObXIB9R1UGNqeN6LvK5U=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/JH8vdTbtfIHuimHoLhfPpZdpYjA_jmqTBKTYF0Nu_C10FX69mYQU60gF9B8ObXIB9R1UGNqeN6LvK5U=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CGMQhL8CIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_nd0QmmAnIHw", + "params": "ggMrGilPTEFLNXV5X2x5aGZPeWpJVWtHMnItWDBtUmJ1WndRUkxOMVIzMTZrYw%3D%3D" + }, + "clickTrackingParams": "CFQQoLMCGAwiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + }, + "text": "The A Team" + } + ] + }, + "trackingParams": "CFQQoLMCGAwiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "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": "CFIQmvMFGAAiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_lTt5OEFrNFprf9dvMg4zqzfNAWOYfqvEE" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CFIQmvMFGAAiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CFEQm_MFGAEiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_lTt5OEFrNFprf9dvMg4zqzfNAWOYfqvEE" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CFEQm_MFGAEiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CE8Qvu4FGAIiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CFAQyscDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + } + }, + "clickTrackingParams": "CE8Qvu4FGAIiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CE8Qvu4FGAIiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "watchEndpoint": { + "playlistId": "OLAK5uy_lTt5OEFrNFprf9dvMg4zqzfNAWOYfqvEE" + } + }, + "playlistId": "OLAK5uy_lTt5OEFrNFprf9dvMg4zqzfNAWOYfqvEE" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CE8Qvu4FGAIiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CE0Q--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CE4QyscDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + } + }, + "clickTrackingParams": "CE0Q--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CE0Q--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "watchEndpoint": { + "playlistId": "OLAK5uy_lTt5OEFrNFprf9dvMg4zqzfNAWOYfqvEE" + } + }, + "playlistId": "OLAK5uy_lTt5OEFrNFprf9dvMg4zqzfNAWOYfqvEE" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CE0Q--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CEsQhP8FGAQiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CEwQ8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CEwQ8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + "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": "CEsQhP8FGAQiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_lTt5OEFrNFprf9dvMg4zqzfNAWOYfqvEE" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CEsQhP8FGAQiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEkQw5QGGAUiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CEoQ8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CEoQ8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + "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": "CEkQw5QGGAUiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CEgQkPsFGAYiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CEgQkPsFGAYiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEcQkfsFGAciEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2xUdDVPRUZyTkZwcmY5ZHZNZzR6cXpmTkFXT1lmcXZFRQ%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CEcQkfsFGAciEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + } + ], + "trackingParams": "CEYQpzsiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_rglJNvRZR9v", + "params": "ggMrGilPTEFLNXV5X2xUdDVPRUZyTkZwcmY5ZHZNZzR6cXpmTkFXT1lmcXZFRQ%3D%3D" + }, + "clickTrackingParams": "CEMQoLMCGA0iEwi6h8X1-qKJAxWw40IFHQXMDmk=" + }, + "subtitle": { + "runs": [ + { + "text": "Album" + }, + { + "text": " • " + }, + { + "text": "2011" + } + ] + }, + "subtitleBadges": [ + { + "musicInlineBadgeRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + }, + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "trackingParams": "CEQQoe0CGAAiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + } + ], + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause No.5 Collaborations Project" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play No.5 Collaborations Project" + } + }, + "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": "CEUQyN4CIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_lTt5OEFrNFprf9dvMg4zqzfNAWOYfqvEE" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CEUQyN4CIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "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/7wdqo8xOHm9VGruKlzukzOuLIVAl3QzMqldt0itaY_FsGv5al1zcs9tpKIAJZaDQbErO2bmaurbLsT6V=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/7wdqo8xOHm9VGruKlzukzOuLIVAl3QzMqldt0itaY_FsGv5al1zcs9tpKIAJZaDQbErO2bmaurbLsT6V=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CFMQhL8CIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_rglJNvRZR9v", + "params": "ggMrGilPTEFLNXV5X2xUdDVPRUZyTkZwcmY5ZHZNZzR6cXpmTkFXT1lmcXZFRQ%3D%3D" + }, + "clickTrackingParams": "CEMQoLMCGA0iEwi6h8X1-qKJAxWw40IFHQXMDmk=" + }, + "text": "No.5 Collaborations Project" + } + ] + }, + "trackingParams": "CEMQoLMCGA0iEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "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": "CEEQmvMFGAAiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_nfrXzwIRghkfWoSPds3cO8qDfWnzjyJQw" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CEEQmvMFGAAiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CEAQm_MFGAEiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_nfrXzwIRghkfWoSPds3cO8qDfWnzjyJQw" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CEAQm_MFGAEiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CD4Qvu4FGAIiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CD8QyscDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + } + }, + "clickTrackingParams": "CD4Qvu4FGAIiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CD4Qvu4FGAIiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "watchEndpoint": { + "playlistId": "OLAK5uy_nfrXzwIRghkfWoSPds3cO8qDfWnzjyJQw" + } + }, + "playlistId": "OLAK5uy_nfrXzwIRghkfWoSPds3cO8qDfWnzjyJQw" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CD4Qvu4FGAIiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CDwQ--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CD0QyscDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + } + }, + "clickTrackingParams": "CDwQ--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CDwQ--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "watchEndpoint": { + "playlistId": "OLAK5uy_nfrXzwIRghkfWoSPds3cO8qDfWnzjyJQw" + } + }, + "playlistId": "OLAK5uy_nfrXzwIRghkfWoSPds3cO8qDfWnzjyJQw" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CDwQ--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CDoQhP8FGAQiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CDsQ8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CDsQ8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + "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": "CDoQhP8FGAQiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_nfrXzwIRghkfWoSPds3cO8qDfWnzjyJQw" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CDoQhP8FGAQiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDgQw5QGGAUiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CDkQ8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CDkQ8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + "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": "CDgQw5QGGAUiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CDcQkPsFGAYiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CDcQkPsFGAYiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDYQkfsFGAciEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X25mclh6d0lSZ2hrZldvU1BkczNjTzhxRGZXbnpqeUpRdw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CDYQkfsFGAciEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + } + ], + "trackingParams": "CDUQpzsiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_UqnUOFNrfOf", + "params": "ggMrGilPTEFLNXV5X25mclh6d0lSZ2hrZldvU1BkczNjTzhxRGZXbnpqeUpRdw%3D%3D" + }, + "clickTrackingParams": "CDMQoLMCGA4iEwi6h8X1-qKJAxWw40IFHQXMDmk=" + }, + "subtitle": { + "runs": [ + { + "text": "EP" + }, + { + "text": " • " + }, + { + "text": "2010" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Live at the Bedford" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Live at the Bedford" + } + }, + "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": "CDQQyN4CIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_nfrXzwIRghkfWoSPds3cO8qDfWnzjyJQw" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CDQQyN4CIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "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/p0iWkMVsjDYyxOfLMFK3V7ZoWvK9uJOw4W5hiBCNQ4GG-t1e93KgBUKiUj9BsRXtx10m27q6cO276Pfo=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/p0iWkMVsjDYyxOfLMFK3V7ZoWvK9uJOw4W5hiBCNQ4GG-t1e93KgBUKiUj9BsRXtx10m27q6cO276Pfo=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CEIQhL8CIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_UqnUOFNrfOf", + "params": "ggMrGilPTEFLNXV5X25mclh6d0lSZ2hrZldvU1BkczNjTzhxRGZXbnpqeUpRdw%3D%3D" + }, + "clickTrackingParams": "CDMQoLMCGA4iEwi6h8X1-qKJAxWw40IFHQXMDmk=" + }, + "text": "Live at the Bedford" + } + ] + }, + "trackingParams": "CDMQoLMCGA4iEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "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": "CDEQmvMFGAAiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_kHf-z-vqi54t7BY975E5ucnP4IkQHaUwo" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CDEQmvMFGAAiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CDAQm_MFGAEiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_kHf-z-vqi54t7BY975E5ucnP4IkQHaUwo" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CDAQm_MFGAEiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CC4Qvu4FGAIiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CC8QyscDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + } + }, + "clickTrackingParams": "CC4Qvu4FGAIiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CC4Qvu4FGAIiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "watchEndpoint": { + "playlistId": "OLAK5uy_kHf-z-vqi54t7BY975E5ucnP4IkQHaUwo" + } + }, + "playlistId": "OLAK5uy_kHf-z-vqi54t7BY975E5ucnP4IkQHaUwo" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CC4Qvu4FGAIiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CCwQ--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CC0QyscDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + } + }, + "clickTrackingParams": "CCwQ--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CCwQ--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "watchEndpoint": { + "playlistId": "OLAK5uy_kHf-z-vqi54t7BY975E5ucnP4IkQHaUwo" + } + }, + "playlistId": "OLAK5uy_kHf-z-vqi54t7BY975E5ucnP4IkQHaUwo" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CCwQ--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CCoQhP8FGAQiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CCsQ8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CCsQ8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + "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": "CCoQhP8FGAQiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_kHf-z-vqi54t7BY975E5ucnP4IkQHaUwo" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CCoQhP8FGAQiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCgQw5QGGAUiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CCkQ8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CCkQ8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + "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": "CCgQw5QGGAUiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CCcQkPsFGAYiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CCcQkPsFGAYiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCYQkfsFGAciEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2tIZi16LXZxaTU0dDdCWTk3NUU1dWNuUDRJa1FIYVV3bw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CCYQkfsFGAciEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + } + ], + "trackingParams": "CCUQpzsiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_aRZymyCfxCE", + "params": "ggMrGilPTEFLNXV5X2tIZi16LXZxaTU0dDdCWTk3NUU1dWNuUDRJa1FIYVV3bw%3D%3D" + }, + "clickTrackingParams": "CCMQoLMCGA8iEwi6h8X1-qKJAxWw40IFHQXMDmk=" + }, + "subtitle": { + "runs": [ + { + "text": "EP" + }, + { + "text": " • " + }, + { + "text": "2010" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Songs I Wrote with Amy" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Songs I Wrote with Amy" + } + }, + "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": "CCQQyN4CIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_kHf-z-vqi54t7BY975E5ucnP4IkQHaUwo" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CCQQyN4CIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "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/5J-U6RzheXK9QqZBMFJG_EFzo-P_8b-RrD987IWQ8_EmyvvDjdk92OU2u0xsTrqnbCH4XkLGN2VWL5pWdg=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/5J-U6RzheXK9QqZBMFJG_EFzo-P_8b-RrD987IWQ8_EmyvvDjdk92OU2u0xsTrqnbCH4XkLGN2VWL5pWdg=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CDIQhL8CIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_aRZymyCfxCE", + "params": "ggMrGilPTEFLNXV5X2tIZi16LXZxaTU0dDdCWTk3NUU1dWNuUDRJa1FIYVV3bw%3D%3D" + }, + "clickTrackingParams": "CCMQoLMCGA8iEwi6h8X1-qKJAxWw40IFHQXMDmk=" + }, + "text": "Songs I Wrote with Amy" + } + ] + }, + "trackingParams": "CCMQoLMCGA8iEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "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": "CCEQmvMFGAAiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_lEeZ9Bmb-6nN4v8UgTzja_FQhDKKpDWSk" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CCEQmvMFGAAiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCAQm_MFGAEiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_lEeZ9Bmb-6nN4v8UgTzja_FQhDKKpDWSk" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CCAQm_MFGAEiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CB4Qvu4FGAIiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CB8QyscDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + } + }, + "clickTrackingParams": "CB4Qvu4FGAIiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CB4Qvu4FGAIiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "watchEndpoint": { + "playlistId": "OLAK5uy_lEeZ9Bmb-6nN4v8UgTzja_FQhDKKpDWSk" + } + }, + "playlistId": "OLAK5uy_lEeZ9Bmb-6nN4v8UgTzja_FQhDKKpDWSk" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CB4Qvu4FGAIiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CBwQ--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CB0QyscDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + } + }, + "clickTrackingParams": "CBwQ--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CBwQ--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "watchEndpoint": { + "playlistId": "OLAK5uy_lEeZ9Bmb-6nN4v8UgTzja_FQhDKKpDWSk" + } + }, + "playlistId": "OLAK5uy_lEeZ9Bmb-6nN4v8UgTzja_FQhDKKpDWSk" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CBwQ--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CBoQhP8FGAQiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CBsQ8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CBsQ8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + "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": "CBoQhP8FGAQiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_lEeZ9Bmb-6nN4v8UgTzja_FQhDKKpDWSk" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CBoQhP8FGAQiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBgQw5QGGAUiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CBkQ8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CBkQ8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + "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": "CBgQw5QGGAUiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CBcQkPsFGAYiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CBcQkPsFGAYiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBYQkfsFGAciEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2xFZVo5Qm1iLTZuTjR2OFVnVHpqYV9GUWhES0twRFdTaw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CBYQkfsFGAciEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + } + ], + "trackingParams": "CBUQpzsiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_TZyh5Fu0Iel", + "params": "ggMrGilPTEFLNXV5X2xFZVo5Qm1iLTZuTjR2OFVnVHpqYV9GUWhES0twRFdTaw%3D%3D" + }, + "clickTrackingParams": "CBMQoLMCGBAiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + }, + "subtitle": { + "runs": [ + { + "text": "Album" + }, + { + "text": " • " + }, + { + "text": "2010" + } + ] + }, + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause Loose Change" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play Loose Change" + } + }, + "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": "CBQQyN4CIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_lEeZ9Bmb-6nN4v8UgTzja_FQhDKKpDWSk" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CBQQyN4CIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "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/xESC6YGPy6Jj3LES1NuhyAWBxVJrDgWL_pViNBZ0wPYgTNzmDSlNt9zeSLLgoc82mD7SKTUswO6oAZf3=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/xESC6YGPy6Jj3LES1NuhyAWBxVJrDgWL_pViNBZ0wPYgTNzmDSlNt9zeSLLgoc82mD7SKTUswO6oAZf3=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CCIQhL8CIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_TZyh5Fu0Iel", + "params": "ggMrGilPTEFLNXV5X2xFZVo5Qm1iLTZuTjR2OFVnVHpqYV9GUWhES0twRFdTaw%3D%3D" + }, + "clickTrackingParams": "CBMQoLMCGBAiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + }, + "text": "Loose Change" + } + ] + }, + "trackingParams": "CBMQoLMCGBAiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "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": "CBEQmvMFGAAiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "watchPlaylistEndpoint": { + "params": "wAEB8gECKAE%3D", + "playlistId": "OLAK5uy_lLA5hUXQAGKZXd90HD-WeREGe98zjDKfk" + } + }, + "text": { + "runs": [ + { + "text": "Shuffle play" + } + ] + }, + "trackingParams": "CBEQmvMFGAAiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "MIX" + }, + "navigationEndpoint": { + "clickTrackingParams": "CBAQm_MFGAEiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "watchPlaylistEndpoint": { + "params": "wAEB", + "playlistId": "RDAMPLOLAK5uy_lLA5hUXQAGKZXd90HD-WeREGe98zjDKfk" + } + }, + "text": { + "runs": [ + { + "text": "Start radio" + } + ] + }, + "trackingParams": "CBAQm_MFGAEiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "QUEUE_PLAY_NEXT" + }, + "serviceEndpoint": { + "clickTrackingParams": "CA4Qvu4FGAIiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album will play next" + } + ] + }, + "trackingParams": "CA8QyscDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + } + }, + "clickTrackingParams": "CA4Qvu4FGAIiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + ], + "queueInsertPosition": "INSERT_AFTER_CURRENT_VIDEO", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CA4Qvu4FGAIiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "watchEndpoint": { + "playlistId": "OLAK5uy_lLA5hUXQAGKZXd90HD-WeREGe98zjDKfk" + } + }, + "playlistId": "OLAK5uy_lLA5hUXQAGKZXd90HD-WeREGe98zjDKfk" + } + } + }, + "text": { + "runs": [ + { + "text": "Play next" + } + ] + }, + "trackingParams": "CA4Qvu4FGAIiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuServiceItemRenderer": { + "icon": { + "iconType": "ADD_TO_REMOTE_QUEUE" + }, + "serviceEndpoint": { + "clickTrackingParams": "CAwQ--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "queueAddEndpoint": { + "commands": [ + { + "addToToastAction": { + "item": { + "notificationTextRenderer": { + "successResponseText": { + "runs": [ + { + "text": "Album added to queue" + } + ] + }, + "trackingParams": "CA0QyscDIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + } + }, + "clickTrackingParams": "CAwQ--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + ], + "queueInsertPosition": "INSERT_AT_END", + "queueTarget": { + "onEmptyQueue": { + "clickTrackingParams": "CAwQ--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "watchEndpoint": { + "playlistId": "OLAK5uy_lLA5hUXQAGKZXd90HD-WeREGe98zjDKfk" + } + }, + "playlistId": "OLAK5uy_lLA5hUXQAGKZXd90HD-WeREGe98zjDKfk" + } + } + }, + "text": { + "runs": [ + { + "text": "Add to queue" + } + ] + }, + "trackingParams": "CAwQ--8FGAMiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "toggleMenuServiceItemRenderer": { + "defaultIcon": { + "iconType": "LIBRARY_ADD" + }, + "defaultServiceEndpoint": { + "clickTrackingParams": "CAoQhP8FGAQiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CAsQ8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CAsQ8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + "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": "CAoQhP8FGAQiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "likeEndpoint": { + "status": "INDIFFERENT", + "target": { + "playlistId": "OLAK5uy_lLA5hUXQAGKZXd90HD-WeREGe98zjDKfk" + } + } + }, + "toggledText": { + "runs": [ + { + "text": "Remove album from library" + } + ] + }, + "trackingParams": "CAoQhP8FGAQiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ADD_TO_PLAYLIST" + }, + "navigationEndpoint": { + "clickTrackingParams": "CAgQw5QGGAUiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "button": { + "buttonRenderer": { + "isDisabled": false, + "navigationEndpoint": { + "clickTrackingParams": "CAkQ8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "signInEndpoint": { + "hack": true + } + }, + "style": "STYLE_BLUE_TEXT", + "text": { + "runs": [ + { + "text": "Sign in" + } + ] + }, + "trackingParams": "CAkQ8FsiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + "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": "CAgQw5QGGAUiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "ARTIST" + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ARTIST" + } + }, + "browseId": "UClmXPfaYhXOYsNn_QUyheWQ" + }, + "clickTrackingParams": "CAcQkPsFGAYiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + }, + "text": { + "runs": [ + { + "text": "Go to artist" + } + ] + }, + "trackingParams": "CAcQkPsFGAYiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + { + "menuNavigationItemRenderer": { + "icon": { + "iconType": "SHARE" + }, + "navigationEndpoint": { + "clickTrackingParams": "CAYQkfsFGAciEwi6h8X1-qKJAxWw40IFHQXMDmk=", + "shareEntityEndpoint": { + "serializedShareEntity": "EilPTEFLNXV5X2xMQTVoVVhRQUdLWlhkOTBIRC1XZVJFR2U5OHpqREtmaw%3D%3D", + "sharePanelType": "SHARE_PANEL_TYPE_UNIFIED_SHARE_PANEL" + } + }, + "text": { + "runs": [ + { + "text": "Share" + } + ] + }, + "trackingParams": "CAYQkfsFGAciEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + } + ], + "trackingParams": "CAUQpzsiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + }, + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_nJ5BUdCWCr1", + "params": "ggMrGilPTEFLNXV5X2xMQTVoVVhRQUdLWlhkOTBIRC1XZVJFR2U5OHpqREtmaw%3D%3D" + }, + "clickTrackingParams": "CAIQoLMCGBEiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + }, + "subtitle": { + "runs": [ + { + "text": "EP" + }, + { + "text": " • " + }, + { + "text": "2009" + } + ] + }, + "subtitleBadges": [ + { + "musicInlineBadgeRenderer": { + "accessibilityData": { + "accessibilityData": { + "label": "Explicit" + } + }, + "icon": { + "iconType": "MUSIC_EXPLICIT_BADGE" + }, + "trackingParams": "CAMQoe0CGAAiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + } + ], + "thumbnailOverlay": { + "musicItemThumbnailOverlayRenderer": { + "background": { + "verticalGradient": { + "gradientLayerColors": [ + "2147483648", + "0", + "0" + ] + } + }, + "content": { + "musicPlayButtonRenderer": { + "accessibilityPauseData": { + "accessibilityData": { + "label": "Pause You Need Me" + } + }, + "accessibilityPlayData": { + "accessibilityData": { + "label": "Play You Need Me" + } + }, + "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": "CAQQyN4CIhMIuofF9fqiiQMVsONCBR0FzA5p", + "watchPlaylistEndpoint": { + "playlistId": "OLAK5uy_lLA5hUXQAGKZXd90HD-WeREGe98zjDKfk" + } + }, + "playingIcon": { + "iconType": "VOLUME_UP" + }, + "rippleTarget": "MUSIC_PLAY_BUTTON_RIPPLE_TARGET_SELF", + "trackingParams": "CAQQyN4CIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "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/XJ1XRgHQdNcCSYYWXcgwjpLu6F-KimhB-l-pSjjKflqBLe4aRyXLMDbkkZLLfLIX8Dg6OiYFksiCGA4=w226-h226-l90-rj", + "width": 226 + }, + { + "height": 544, + "url": "https://lh3.googleusercontent.com/XJ1XRgHQdNcCSYYWXcgwjpLu6F-KimhB-l-pSjjKflqBLe4aRyXLMDbkkZLLfLIX8Dg6OiYFksiCGA4=w544-h544-l90-rj", + "width": 544 + } + ] + }, + "thumbnailCrop": "MUSIC_THUMBNAIL_CROP_UNSPECIFIED", + "thumbnailScale": "MUSIC_THUMBNAIL_SCALE_ASPECT_FILL", + "trackingParams": "CBIQhL8CIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "title": { + "runs": [ + { + "navigationEndpoint": { + "browseEndpoint": { + "browseEndpointContextSupportedConfigs": { + "browseEndpointContextMusicConfig": { + "pageType": "MUSIC_PAGE_TYPE_ALBUM" + } + }, + "browseId": "MPREb_nJ5BUdCWCr1", + "params": "ggMrGilPTEFLNXV5X2xMQTVoVVhRQUdLWlhkOTBIRC1XZVJFR2U5OHpqREtmaw%3D%3D" + }, + "clickTrackingParams": "CAIQoLMCGBEiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + }, + "text": "You Need Me" + } + ] + }, + "trackingParams": "CAIQoLMCGBEiEwi6h8X1-qKJAxWw40IFHQXMDmk=" + } + } + ], + "trackingParams": "CAEQ6IsCIhMIuofF9fqiiQMVsONCBR0FzA5p" + } + }, + "responseContext": { + "serviceTrackingParams": [ + { + "params": [ + { + "key": "browse_id", + "value": "MPADUClmXPfaYhXOYsNn_QUyheWQ" + }, + { + "key": "browse_id_prefix", + "value": "" + }, + { + "key": "logged_in", + "value": "0" + }, + { + "key": "e", + "value": "23804281,23966208,24004644,24077241,24181174,24241378,24367823,24439361,24542367,24548629,24552800,24566687,51009781,51010235,51017346,51020570,51021190,51025415,51030101,51037332,51037342,51037349,51050361,51053689,51057842,51057855,51063643,51064835,51065188,51089007,51098299,51111738,51115184,51117319,51124104,51129210,51133103,51134507,51149424,51152050,51157411,51157841,51158514,51160545,51162170,51165467,51169118,51176511,51178310,51178337,51178342,51178357,51178982,51183909,51186528,51190652,51195231,51204329,51217504,51219963,51221150,51222973,51223962,51226863,51226938,51227037,51227772,51228350,51230241,51230478,51231814,51237842,51239093,51241028,51242448,51243940,51248255,51248734,51249751,51251836,51255676,51255680,51255743,51256074,51256084,51257900,51257911,51257916,51258066,51258611,51259133,51260456,51265253,51265345,51265358,51265373,51266454,51267568,51275782,51276557,51276565,51276641,51281227,51282066,51282077,51282086,51284653,51285417,51286109,51287196,51287500,51289875,51289926,51289935,51289938,51289958,51289961,51289974,51290406,51293767,51294321,51295132,51295408,51296439,51298019,51298830,51299626,51299711,51299724,51299901,51299973,51299995,51300014,51300415,51300699,51302083,51302492,51302680,51303667,51303670,51303789,51304121,51304155,51304558,51305582,51305839,51307502,51308044,51308060,51309314,51309485,51310323,51311027,51311038,51312146,51312688,51313149,51313529,51313767,51314685,51314690,51314703,51314712,51314727,51315228,51315914,51315921,51315928,51315931,51315940,51315945,51315954,51315961,51315972,51315977,51316749,51318207,51319843,51321258,51321868,51321892,51322837,51322922,51323365,51324941,51325201,51325575,51326762,51326931,51327144,51327163,51327178" + } + ], + "service": "GFEEDBACK" + }, + { + "params": [ + { + "key": "c", + "value": "WEB_REMIX" + }, + { + "key": "cver", + "value": "1.20241021.01.00" + }, + { + "key": "yt_li", + "value": "0" + }, + { + "key": "GetBrowseArtistDiscographyPage_rid", + "value": "0xc95d0445e795a34b" + } + ], + "service": "CSI" + }, + { + "params": [ + { + "key": "client.version", + "value": "1.20000101" + }, + { + "key": "client.name", + "value": "WEB_REMIX" + } + ], + "service": "ECATCHER" + } + ] + }, + "trackingParams": "CAAQhGciEwi6h8X1-qKJAxWw40IFHQXMDmk=" +} diff --git a/tests/youtube.rs b/tests/youtube.rs index 66f7854..0f247e2 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::param::{AlbumOrder, LANGUAGES}; use time::{macros::date, OffsetDateTime}; use rustypipe::client::{ClientType, RustyPipe, RustyPipeQuery}; @@ -1719,7 +1720,11 @@ async fn music_artist( // Fetch albums seperately if name != "no_artist" { - let albums = rp.query().music_artist_albums(id).await.unwrap(); + let albums = rp + .query() + .music_artist_albums(id, None, Some(AlbumOrder::Recency)) + .await + .unwrap(); let albums_expect = artist .albums .iter() @@ -1758,7 +1763,7 @@ async fn music_artist_not_found(rp: RustyPipe) { async fn music_artist_albums_not_found(rp: RustyPipe) { let err = rp .query() - .music_artist_albums("UC7cl4MmM6ZZ2TcFyMk_b4pq") + .music_artist_albums("UC7cl4MmM6ZZ2TcFyMk_b4pq", None, None) .await .unwrap_err(); @@ -2636,23 +2641,6 @@ async fn music_genre_not_found(rp: RustyPipe) { ); } -//#AB TESTS - -const VISITOR_DATA_SEARCH_CHANNEL_HANDLES: &str = "CgszYlc1Yk1WZGRCSSjrwOSbBg%3D%3D"; - -#[tokio::test] -async fn ab3_search_channel_handles() { - let rp = rp_visitor_data(VISITOR_DATA_SEARCH_CHANNEL_HANDLES); - - rp.query() - .search_filter::( - "test", - &SearchFilter::new().item_type(search_filter::ItemType::Channel), - ) - .await - .unwrap(); -} - //#MISCELLANEOUS #[rstest] @@ -2677,6 +2665,25 @@ async fn invalid_ctoken(#[case] ep: ContinuationEndpoint, rp: RustyPipe) { } } +#[rstest] +#[tokio::test] +async fn isrc_search_languages(rp: RustyPipe) { + for lang in LANGUAGES { + let tracks = rp + .query() + .lang(lang) + .music_search_tracks("DEUM71602459") + .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}" + ); + } +} + //#TESTUTIL /// Get the language setting from the environment variable @@ -2706,6 +2713,7 @@ fn unlocalized(lang: Language) -> bool { lang == Language::En } +/* /// Get a new RustyPipe instance with pre-set visitor data fn rp_visitor_data(vdata: &str) -> RustyPipe { RustyPipe::builder() @@ -2713,7 +2721,7 @@ fn rp_visitor_data(vdata: &str) -> RustyPipe { .visitor_data(vdata) .build() .unwrap() -} +}*/ /// Assert equality within 10% margin #[track_caller] From 79a62816ff62d94e5c706f45b1ce5971e5e58a81 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 23 Oct 2024 00:30:18 +0200 Subject: [PATCH 159/347] fix: update channel order tokens --- src/client/channel.rs | 34 ++++++++++++++++++++++--- src/param/mod.rs | 6 ++--- tests/youtube.rs | 59 +++++++++++++++++-------------------------- 3 files changed, 56 insertions(+), 43 deletions(-) diff --git a/src/client/channel.rs b/src/client/channel.rs index cd29b87..93bd602 100644 --- a/src/client/channel.rs +++ b/src/client/channel.rs @@ -631,7 +631,33 @@ fn order_ctoken( ) -> String { let mut pb_tab = ProtoBuilder::new(); pb_tab.string(2, target_id); - pb_tab.varint(3, order as u64); + + match tab { + ChannelVideoTab::Videos => match order { + ChannelOrder::Latest => { + pb_tab.varint(3, 1); + pb_tab.varint(4, 4); + } + ChannelOrder::Popular => { + pb_tab.varint(3, 2); + pb_tab.varint(4, 2); + } + ChannelOrder::Oldest => { + pb_tab.varint(3, 4); + pb_tab.varint(4, 5); + } + }, + ChannelVideoTab::Shorts => match order { + ChannelOrder::Latest => pb_tab.varint(4, 4), + ChannelOrder::Popular => pb_tab.varint(4, 2), + ChannelOrder::Oldest => pb_tab.varint(4, 5), + }, + ChannelVideoTab::Live => match order { + ChannelOrder::Latest => pb_tab.varint(5, 12), + ChannelOrder::Popular => pb_tab.varint(5, 14), + ChannelOrder::Oldest => pb_tab.varint(5, 13), + }, + } let mut pb_3 = ProtoBuilder::new(); pb_3.embedded(tab.order_ctoken_id(), pb_tab); @@ -802,7 +828,7 @@ mod tests { ChannelOrder::Popular, "\n$6461d7c8-0000-2040-87aa-089e0827e420", ); - assert_eq!(videos_popular_token, "4qmFsgJkEhhVQ1h1cVNCbEhBRTZYdy15ZUpBMFR1bncaSDhnWXVHaXg2S2hJbUNpUTJORFl4WkRkak9DMHdNREF3TFRJd05EQXRPRGRoWVMwd09EbGxNRGd5TjJVME1qQVlBZyUzRCUzRA%3D%3D"); + assert_eq!(videos_popular_token, "4qmFsgJgEhhVQ1h1cVNCbEhBRTZYdy15ZUpBMFR1bncaRDhnWXdHaTU2TEJJbUNpUTJORFl4WkRkak9DMHdNREF3TFRJd05EQXRPRGRoWVMwd09EbGxNRGd5TjJVME1qQVlBaUFD"); let shorts_popular_token = order_ctoken( channel_id, @@ -810,7 +836,7 @@ mod tests { ChannelOrder::Popular, "\n$64679ffb-0000-26b3-a1bd-582429d2c794", ); - assert_eq!(shorts_popular_token, "4qmFsgJkEhhVQ1h1cVNCbEhBRTZYdy15ZUpBMFR1bncaSDhnWXVHaXhTS2hJbUNpUTJORFkzT1dabVlpMHdNREF3TFRJMllqTXRZVEZpWkMwMU9ESTBNamxrTW1NM09UUVlBZyUzRCUzRA%3D%3D"); + assert_eq!(shorts_popular_token, "4qmFsgJkEhhVQ1h1cVNCbEhBRTZYdy15ZUpBMFR1bncaSDhnWXVHaXhTS2hJbUNpUTJORFkzT1dabVlpMHdNREF3TFRJMllqTXRZVEZpWkMwMU9ESTBNamxrTW1NM09UUWdBZyUzRCUzRA%3D%3D"); let live_popular_token = order_ctoken( channel_id, @@ -818,7 +844,7 @@ mod tests { ChannelOrder::Popular, "\n$64693069-0000-2a1e-8c7d-582429bd5ba8", ); - assert_eq!(live_popular_token, "4qmFsgJkEhhVQ1h1cVNCbEhBRTZYdy15ZUpBMFR1bncaSDhnWXVHaXh5S2hJbUNpUTJORFk1TXpBMk9TMHdNREF3TFRKaE1XVXRPR00zWkMwMU9ESTBNamxpWkRWaVlUZ1lBZyUzRCUzRA%3D%3D"); + assert_eq!(live_popular_token, "4qmFsgJkEhhVQ1h1cVNCbEhBRTZYdy15ZUpBMFR1bncaSDhnWXVHaXh5S2hJbUNpUTJORFk1TXpBMk9TMHdNREF3TFRKaE1XVXRPR00zWkMwMU9ESTBNamxpWkRWaVlUZ29EZyUzRCUzRA%3D%3D"); } #[test] diff --git a/src/param/mod.rs b/src/param/mod.rs index 920da45..f0dd293 100644 --- a/src/param/mod.rs +++ b/src/param/mod.rs @@ -27,11 +27,11 @@ pub enum ChannelVideoTab { pub enum ChannelOrder { /// Order videos with the latest upload date first (default) #[default] - Latest = 1, + Latest, // video 3=1,4=4; shorts 4=4; live 5=12 /// Order videos with the highest number of views first - Popular = 2, + Popular, // video 3=2,4=2; shorts 4=2; live 5=14 /// Order videos with the earliest upload date first - Oldest = 4, + Oldest, // video 3=4,4=5; shorts 4=5; live 5=13 } impl ChannelVideoTab { diff --git a/tests/youtube.rs b/tests/youtube.rs index 0f247e2..d0b5cb4 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -1968,46 +1968,33 @@ async fn music_search_videos(rp: RustyPipe, unlocalized: bool) { } #[rstest] -#[case::main(false)] -#[case::videos(true)] #[tokio::test] -async fn music_search_episode(rp: RustyPipe, #[case] videos: bool) { +async fn music_search_episode(rp: RustyPipe) { let query = "Blond - Da muss man dabei gewesen sein: Das Hörspiel - Fall #1"; let track_id = "Zq_-LDy7AgE"; - let track = if videos { - let items = rp - .query() - .music_search_videos(query) - .await - .unwrap() - .items - .items; - items.iter().find(|a| a.id == track_id).cloned() - } else { - let items = rp - .query() - .music_search_main(query) - .await - .unwrap() - .items - .items; - items - .iter() - .find_map(|itm| { - if let MusicItem::Track(track) = itm { - if track.id == track_id { - Some(track) - } else { - None - } + let items = rp + .query() + .music_search_main(query) + .await + .unwrap() + .items + .items; + let track = items + .iter() + .find_map(|itm| { + if let MusicItem::Track(track) = itm { + if track.id == track_id { + Some(track) } else { None } - }) - .cloned() - } - .expect("could not find episode"); + } else { + None + } + }) + .cloned() + .expect("could not find episode"); assert_eq!(track.artists.len(), 1); let track_artist = &track.artists[0]; @@ -2015,9 +2002,9 @@ async fn music_search_episode(rp: RustyPipe, #[case] videos: bool) { track.name, "Blond - Da muss man dabei gewesen sein: Das Hörspiel - Fall #1" ); - assert_eq!(track_artist.name, "BLOND_OFFICIAL"); - assert_eq!(track_artist.id.as_deref(), Some("UC8SmM4bue6bKHT4p-_YFZHQ")); - assert_eq!(track.artist_id.as_deref(), Some("UC8SmM4bue6bKHT4p-_YFZHQ")); + assert_eq!(track_artist.name, "Da muss man dabei gewesen sein"); + 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); } From 9e835c8f38a3dd28c65561b2f9bb7a0f530c24f1 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 23 Oct 2024 00:52:17 +0200 Subject: [PATCH 160/347] feat!: remove TvHtml5Embed client as it got disabled --- cli/src/main.rs | 2 -- codegen/src/download_testfiles.rs | 3 +-- src/client/mod.rs | 37 +------------------------------ src/client/player.rs | 34 +++++++++++++--------------- src/error.rs | 14 ++++++++++-- tests/youtube.rs | 4 +++- 6 files changed, 32 insertions(+), 62 deletions(-) diff --git a/cli/src/main.rs b/cli/src/main.rs index 67d36fb..b48bca3 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -272,7 +272,6 @@ enum ClientTypeArg { Desktop, Mobile, Tv, - TvEmbed, Android, Ios, } @@ -324,7 +323,6 @@ impl From for ClientType { match value { ClientTypeArg::Desktop => Self::Desktop, ClientTypeArg::Mobile => Self::Mobile, - ClientTypeArg::TvEmbed => Self::TvHtml5Embed, ClientTypeArg::Tv => Self::Tv, ClientTypeArg::Android => Self::Android, ClientTypeArg::Ios => Self::Ios, diff --git a/codegen/src/download_testfiles.rs b/codegen/src/download_testfiles.rs index 1a580d2..22e4c8c 100644 --- a/codegen/src/download_testfiles.rs +++ b/codegen/src/download_testfiles.rs @@ -64,11 +64,10 @@ pub async fn download_testfiles() { music_genre().await; } -const CLIENT_TYPES: [ClientType; 6] = [ +const CLIENT_TYPES: [ClientType; 5] = [ ClientType::Desktop, ClientType::DesktopMusic, ClientType::Tv, - ClientType::TvHtml5Embed, ClientType::Android, ClientType::Ios, ]; diff --git a/src/client/mod.rs b/src/client/mod.rs index 14eade2..cc4aa7b 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -65,11 +65,6 @@ pub enum ClientType { /// - includes lower resolution audio streams /// - does not return audio tracks in different languages Mobile, - /// Client used by the embedded player for Smart TVs - /// - /// - can access age-restricted videos - /// - cannot access non-embeddable videos - TvHtml5Embed, /// Client used by youtube.com/tv /// /// - Does not return video metadata when fetching the player @@ -92,7 +87,6 @@ impl ClientType { ClientType::Desktop | ClientType::DesktopMusic | ClientType::Mobile - | ClientType::TvHtml5Embed | ClientType::Tv => true, ClientType::Android | ClientType::Ios => false, } @@ -223,7 +217,6 @@ 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 TVHTML5_CLIENT_VERSION: &str = "2.0"; // Mobile app client const APP_CLIENT_VERSION: &str = "18.03.33"; @@ -1109,7 +1102,7 @@ impl RustyPipeQuery { /// This can be used for additional HTTP requests (e.g. downloading/streaming) pub fn user_agent(&self, ctype: ClientType) -> Cow<'_, str> { match ctype { - ClientType::Desktop | ClientType::DesktopMusic | ClientType::TvHtml5Embed => { + ClientType::Desktop | ClientType::DesktopMusic => { Cow::Borrowed(&self.client.inner.user_agent) } ClientType::Mobile => MOBILE_UA.into(), @@ -1192,23 +1185,6 @@ impl RustyPipeQuery { user: User::default(), third_party: None, }, - ClientType::TvHtml5Embed => YTContext { - client: ClientInfo { - client_name: "TVHTML5_SIMPLY_EMBEDDED_PLAYER", - client_version: TVHTML5_CLIENT_VERSION.into(), - client_screen: Some("EMBED"), - platform: "TV", - visitor_data, - hl, - gl, - ..Default::default() - }, - request: Some(RequestYT::default()), - user: User::default(), - third_party: Some(ThirdParty { - embed_url: YOUTUBE_HOME_URL, - }), - }, ClientType::Tv => YTContext { client: ClientInfo { client_name: "TVHTML5", @@ -1319,17 +1295,6 @@ impl RustyPipeQuery { "X-YouTube-Client-Version", self.client.get_client_version(ctype).await.into_owned(), ), - ClientType::TvHtml5Embed => self - .client - .inner - .http - .post(format!( - "{YOUTUBEI_V1_URL}{endpoint}?{DISABLE_PRETTY_PRINT_PARAMETER}" - )) - .header(header::ORIGIN, YOUTUBE_HOME_URL) - .header(header::REFERER, YOUTUBE_HOME_URL) - .header("X-YouTube-Client-Name", "1") - .header("X-YouTube-Client-Version", TVHTML5_CLIENT_VERSION), ClientType::Tv => self .client .inner diff --git a/src/client/player.rs b/src/client/player.rs index 9b48d54..6a6e8a6 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -83,33 +83,30 @@ impl RustyPipeQuery { clients: &[ClientType], ) -> Result { let video_id = video_id.as_ref(); - let mut last_e = Error::Other("no clients".into()); + let last_e = Error::Other("no clients".into()); for client in clients { let res = self.player_from_client(video_id, *client).await; match res { Ok(res) => return Ok(res), Err(Error::Extraction(e)) => { - if e.switch_client() { - if let ExtractionError::Unavailable { - reason: UnavailabilityReason::AgeRestricted, - msg, - } = &e - { - if let Ok(res) = self - .player_from_client(video_id, ClientType::TvHtml5Embed) - .await - { - return Ok(res); - } else { - return Err(Error::Extraction(ExtractionError::Unavailable { - reason: UnavailabilityReason::AgeRestricted, - msg: msg.to_owned(), - })); + // TODO: fetch age-restricted videos with login + /* + if e.use_login() { + tracing::info!("{e}; fetching player with login"); + + match self.player_from_client(video_id, *client).await { + Ok(res) => return Ok(res), + Err(Error::Extraction(e)) => { + if !e.switch_client() { + return Err(Error::Extraction(e)); + } } + Err(e) => return Err(e), } last_e = Error::Extraction(e); - } else { + } else*/ + if !e.switch_client() { return Err(Error::Extraction(e)); } } @@ -747,7 +744,6 @@ mod tests { #[case::desktop(ClientType::Desktop)] #[case::desktop_music(ClientType::DesktopMusic)] #[case::tv(ClientType::Tv)] - #[case::tv_html5_embed(ClientType::TvHtml5Embed)] #[case::android(ClientType::Android)] #[case::ios(ClientType::Ios)] fn map_player_data(#[case] client_type: ClientType) { diff --git a/src/error.rs b/src/error.rs index ae804d8..f585f28 100644 --- a/src/error.rs +++ b/src/error.rs @@ -213,10 +213,20 @@ impl ExtractionError { matches!( self, ExtractionError::Unavailable { - reason: UnavailabilityReason::AgeRestricted - | UnavailabilityReason::UnsupportedClient, + reason: UnavailabilityReason::UnsupportedClient, .. } | ExtractionError::WrongResult(_) ) } + + /// Return true if the video should be fetched as a logged in user + pub(crate) fn use_login(&self) -> bool { + matches!( + self, + ExtractionError::Unavailable { + reason: UnavailabilityReason::AgeRestricted | UnavailabilityReason::IpBan, + .. + } + ) + } } diff --git a/tests/youtube.rs b/tests/youtube.rs index d0b5cb4..dfc1700 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -29,7 +29,6 @@ use rustypipe::validate; #[case::desktop(ClientType::Desktop)] #[case::tv(ClientType::Tv)] #[case::mobile(ClientType::Mobile)] -#[case::tv_html5_embed(ClientType::TvHtml5Embed)] #[case::android(ClientType::Android)] #[case::ios(ClientType::Ios)] #[tokio::test] @@ -222,6 +221,8 @@ async fn check_video_stream(s: impl YtStream) { false, true )] +/* +TODO: add login #[case::agelimit( "ZDKQmBWTRnw", "The Rinky Pink Pounder. Hitachi Magic Wand clone teardown.", @@ -233,6 +234,7 @@ async fn check_video_stream(s: impl YtStream) { false, false )] +*/ #[tokio::test] #[allow(clippy::too_many_arguments)] async fn get_player( From 7c4f44d09c4d813efff9e7d1059ddacd226b9e9d Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 23 Oct 2024 01:51:16 +0200 Subject: [PATCH 161/347] feat!: generate random visitorData, remove `RustyPipeQuery::get_context` and `YTContext<'a>` from public API --- codegen/src/abtest.rs | 25 +------ codegen/src/collect_album_types.rs | 4 - codegen/src/collect_large_numbers.rs | 5 -- codegen/src/collect_video_durations.rs | 1 - codegen/src/model.rs | 4 +- src/client/channel.rs | 15 +--- src/client/mod.rs | 100 +++++++++---------------- src/client/music_artist.rs | 16 +--- src/client/music_charts.rs | 5 +- src/client/music_details.rs | 18 +---- src/client/music_genres.rs | 4 - src/client/music_new.rs | 4 - src/client/music_playlist.rs | 20 +---- src/client/music_search.rs | 12 +-- src/client/pagination.rs | 43 +++++------ src/client/player.rs | 12 +-- src/client/playlist.rs | 21 +----- src/client/search.rs | 7 +- src/client/trends.rs | 2 - src/client/url_resolver.rs | 7 +- src/client/video_details.rs | 9 +-- src/util/mod.rs | 23 ++++++ 22 files changed, 99 insertions(+), 258 deletions(-) diff --git a/codegen/src/abtest.rs b/codegen/src/abtest.rs index eeb95d8..153a080 100644 --- a/codegen/src/abtest.rs +++ b/codegen/src/abtest.rs @@ -6,7 +6,7 @@ use indicatif::{ProgressBar, ProgressStyle}; use num_enum::TryFromPrimitive; use once_cell::sync::Lazy; use regex::Regex; -use rustypipe::client::{ClientType, RustyPipe, RustyPipeQuery, YTContext}; +use rustypipe::client::{ClientType, RustyPipe, RustyPipeQuery}; use rustypipe::model::{MusicItem, YouTubeItem}; use rustypipe::param::search_filter::{ItemType, SearchFilter}; use rustypipe::param::ChannelVideoTab; @@ -57,7 +57,6 @@ pub struct ABTestRes { #[derive(Debug, Serialize)] struct QVideo<'a> { - context: YTContext<'a>, video_id: &'a str, content_check_ok: bool, racy_check_ok: bool, @@ -66,7 +65,6 @@ struct QVideo<'a> { #[derive(Debug, Serialize)] #[serde(rename_all = "camelCase")] struct QBrowse<'a> { - context: YTContext<'a>, browse_id: &'a str, #[serde(skip_serializing_if = "Option::is_none")] params: Option<&'a str>, @@ -153,9 +151,7 @@ pub async fn run_all_tests(n: usize, concurrency: usize) -> Vec { } pub async fn attributed_text_description(rp: &RustyPipeQuery) -> Result { - let context = rp.get_context(ClientType::Desktop, true, None).await; let q = QVideo { - context, video_id: "ZeerrnuLi5E", content_check_ok: false, racy_check_ok: false, @@ -190,13 +186,11 @@ pub async fn channel_handles_in_search_results(rp: &RustyPipeQuery) -> Result Result { - let context = rp.get_context(ClientType::Desktop, true, None).await; let res = rp .raw( ClientType::Desktop, "browse", &QBrowse { - context, browse_id: "FEtrending", params: None, }, @@ -207,13 +201,11 @@ pub async fn trends_video_tab(rp: &RustyPipeQuery) -> Result { } pub async fn trends_page_header_renderer(rp: &RustyPipeQuery) -> Result { - let context = rp.get_context(ClientType::Desktop, true, None).await; let res = rp .raw( ClientType::Desktop, "browse", &QBrowse { - context, browse_id: "FEtrending", params: None, }, @@ -237,7 +229,6 @@ pub async fn discography_page(rp: &RustyPipeQuery) -> Result { ClientType::DesktopMusic, "browse", &QBrowse { - context: rp.get_context(ClientType::DesktopMusic, true, None).await, browse_id: id, params: None, }, @@ -301,7 +292,6 @@ pub async fn channel_about_modal(rp: &RustyPipeQuery) -> Result { ClientType::Desktop, "browse", &QBrowse { - context: rp.get_context(ClientType::Desktop, true, None).await, browse_id: id, params: None, }, @@ -317,7 +307,6 @@ pub async fn like_button_viewmodel(rp: &RustyPipeQuery) -> Result { ClientType::Desktop, "next", &QVideo { - context: rp.get_context(ClientType::Desktop, true, None).await, video_id: "ZeerrnuLi5E", content_check_ok: true, racy_check_ok: true, @@ -341,7 +330,6 @@ pub async fn music_playlist_two_column(rp: &RustyPipeQuery) -> Result { ClientType::DesktopMusic, "browse", &QBrowse { - context: rp.get_context(ClientType::DesktopMusic, true, None).await, browse_id: id, params: None, }, @@ -355,14 +343,7 @@ pub async fn comments_framework_update(rp: &RustyPipeQuery) -> Result { let continuation = "Eg0SC3dMZHBSN2d1S3k4GAYyJSIRIgt3TGRwUjdndUt5ODAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"; let res = rp - .raw( - ClientType::Desktop, - "next", - &QCont { - context: rp.get_context(ClientType::Desktop, true, None).await, - continuation, - }, - ) + .raw(ClientType::Desktop, "next", &QCont { continuation }) .await .unwrap(); Ok(res.contains("\"frameworkUpdates\"")) @@ -375,7 +356,6 @@ pub async fn channel_shorts_lockup(rp: &RustyPipeQuery) -> Result { ClientType::Desktop, "browse", &QBrowse { - context: rp.get_context(ClientType::Desktop, true, None).await, browse_id: id, params: Some("EgZzaG9ydHPyBgUKA5oBAA%3D%3D"), }, @@ -392,7 +372,6 @@ pub async fn playlist_page_header_renderer(rp: &RustyPipeQuery) -> Result ClientType::Desktop, "browse", &QBrowse { - context: rp.get_context(ClientType::Desktop, true, None).await, browse_id: id, params: None, }, diff --git a/codegen/src/collect_album_types.rs b/codegen/src/collect_album_types.rs index 49fb56a..965f37d 100644 --- a/codegen/src/collect_album_types.rs +++ b/codegen/src/collect_album_types.rs @@ -95,11 +95,7 @@ struct HeaderRenderer { } async fn get_album_type(query: &RustyPipeQuery, id: &str) -> String { - let context = query - .get_context(ClientType::DesktopMusic, true, None) - .await; let body = QBrowse { - context, browse_id: id, params: None, }; diff --git a/codegen/src/collect_large_numbers.rs b/codegen/src/collect_large_numbers.rs index 59979ef..e9ebbb7 100644 --- a/codegen/src/collect_large_numbers.rs +++ b/codegen/src/collect_large_numbers.rs @@ -350,7 +350,6 @@ async fn get_channel(query: &RustyPipeQuery, channel_id: &str) -> Result Result ClientType::DesktopMusic, "browse", &QBrowse { - context: query - .get_context(ClientType::DesktopMusic, true, None) - .await, browse_id: channel_id, params: None, }, diff --git a/codegen/src/collect_video_durations.rs b/codegen/src/collect_video_durations.rs index 8d5024f..fd097e9 100644 --- a/codegen/src/collect_video_durations.rs +++ b/codegen/src/collect_video_durations.rs @@ -270,7 +270,6 @@ async fn get_channel_vlengths( ClientType::Desktop, "browse", &QBrowse { - context: query.get_context(ClientType::Desktop, true, None).await, browse_id: channel_id, params: Some("EgZ2aWRlb3MYASAAMAE"), }, diff --git a/codegen/src/model.rs b/codegen/src/model.rs index c487d94..e14b913 100644 --- a/codegen/src/model.rs +++ b/codegen/src/model.rs @@ -1,7 +1,7 @@ use std::collections::BTreeMap; use ordered_hash_map::OrderedHashMap; -use rustypipe::{client::YTContext, model::AlbumType, param::Language}; +use rustypipe::{model::AlbumType, param::Language}; use serde::{Deserialize, Serialize}; use serde_with::{serde_as, DefaultOnError, VecSkipError}; @@ -116,7 +116,6 @@ pub enum ExtItemType { #[derive(Debug, Serialize)] #[serde(rename_all = "camelCase")] pub struct QBrowse<'a> { - pub context: YTContext<'a>, pub browse_id: &'a str, #[serde(skip_serializing_if = "Option::is_none")] pub params: Option<&'a str>, @@ -125,7 +124,6 @@ pub struct QBrowse<'a> { #[derive(Serialize)] #[serde(rename_all = "camelCase")] pub struct QCont<'a> { - pub context: YTContext<'a>, pub continuation: &'a str, } diff --git a/src/client/channel.rs b/src/client/channel.rs index 93bd602..9584697 100644 --- a/src/client/channel.rs +++ b/src/client/channel.rs @@ -16,14 +16,11 @@ use crate::{ util::{self, timeago, ProtoBuilder}, }; -use super::{ - response, ClientType, MapRespCtx, MapResponse, QContinuation, RustyPipeQuery, YTContext, -}; +use super::{response, ClientType, MapRespCtx, MapResponse, QContinuation, RustyPipeQuery}; #[derive(Debug, Serialize)] #[serde(rename_all = "camelCase")] struct QChannel<'a> { - context: YTContext<'a>, browse_id: &'a str, params: ChannelTab, #[serde(skip_serializing_if = "Option::is_none")] @@ -63,9 +60,7 @@ impl RustyPipeQuery { operation: &str, ) -> Result>, Error> { let channel_id = channel_id.as_ref(); - let context = self.get_context(ClientType::Desktop, true, None).await; let request_body = QChannel { - context, browse_id: channel_id, params, query, @@ -125,12 +120,10 @@ impl RustyPipeQuery { tab: ChannelVideoTab, order: ChannelOrder, ) -> Result, Error> { - let visitor_data = Some(self.get_visitor_data().await?); - self.continuation( order_ctoken(channel_id.as_ref(), tab, order, &random_target()), ContinuationEndpoint::Browse, - visitor_data.as_deref(), + None, ) .await } @@ -158,9 +151,7 @@ impl RustyPipeQuery { channel_id: S, ) -> Result>, Error> { let channel_id = channel_id.as_ref(); - let context = self.get_context(ClientType::Desktop, true, None).await; let request_body = QChannel { - context, browse_id: channel_id, params: ChannelTab::Playlists, query: None, @@ -183,9 +174,7 @@ impl RustyPipeQuery { channel_id: S, ) -> Result { let channel_id = channel_id.as_ref(); - let context = self.get_context(ClientType::Desktop, false, None).await; let request_body = QContinuation { - context, continuation: &channel_info_ctoken(channel_id, &random_target()), }; diff --git a/src/client/mod.rs b/src/client/mod.rs index cc4aa7b..a1a707b 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -96,7 +96,7 @@ impl ClientType { /// YouTube context request parameter #[derive(Clone, Debug, Serialize)] #[serde(rename_all = "camelCase")] -pub struct YTContext<'a> { +struct YTContext<'a> { client: ClientInfo<'a>, /// only used on desktop #[serde(skip_serializing_if = "Option::is_none")] @@ -119,8 +119,7 @@ struct ClientInfo<'a> { platform: &'a str, #[serde(skip_serializing_if = "Option::is_none")] original_url: Option<&'a str>, - #[serde(skip_serializing_if = "Option::is_none")] - visitor_data: Option<&'a str>, + visitor_data: &'a str, hl: Language, gl: Country, time_zone: &'a str, @@ -136,7 +135,7 @@ impl Default for ClientInfo<'_> { device_model: None, platform: "", original_url: None, - visitor_data: None, + visitor_data: "", hl: Language::En, gl: Country::Us, time_zone: "UTC", @@ -173,17 +172,22 @@ struct ThirdParty<'a> { embed_url: &'a str, } +#[derive(Debug, Serialize)] +struct QBody<'a, T> { + context: YTContext<'a>, + #[serde(flatten)] + body: T, +} + #[derive(Debug, Serialize)] #[serde(rename_all = "camelCase")] struct QBrowse<'a> { - context: YTContext<'a>, browse_id: &'a str, } #[derive(Debug, Serialize)] #[serde(rename_all = "camelCase")] struct QBrowseParams<'a> { - context: YTContext<'a>, browse_id: &'a str, params: &'a str, } @@ -191,7 +195,6 @@ struct QBrowseParams<'a> { #[derive(Debug, Serialize)] #[serde(rename_all = "camelCase")] struct QContinuation<'a> { - context: YTContext<'a>, continuation: &'a str, } @@ -1126,18 +1129,17 @@ impl RustyPipeQuery { /// # Parameters /// - `ctype`: Client type (`Desktop`, `DesktopMusic`, `Android`, ...) /// - `localized`: Whether to include the configured language and country - pub async fn get_context<'a>( + async fn get_context<'a>( &'a self, ctype: ClientType, localized: bool, - visitor_data: Option<&'a str>, + visitor_data: &'a str, ) -> YTContext { let (hl, gl) = if localized { (self.opts.lang, self.opts.country) } else { (Language::En, Country::Us) }; - let visitor_data = visitor_data.or(self.opts.visitor_data.as_deref()); match ctype { ClientType::Desktop => YTContext { @@ -1451,11 +1453,22 @@ impl RustyPipeQuery { ) -> Result { tracing::debug!("getting {}({})", operation, id); + let visitor_data = 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()); + + 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: ctx_src.visitor_data.or(self.opts.visitor_data.as_deref()), + visitor_data: Some(&visitor_data), client_type: ctype, artist: ctx_src.artist, }; @@ -1463,7 +1476,7 @@ impl RustyPipeQuery { let request = self .request_builder(ctype, endpoint, ctx.visitor_data) .await - .json(body) + .json(&req_body) .build()?; let req_res = self.yt_request::(&request, &ctx).await?; @@ -1563,47 +1576,6 @@ impl RustyPipeQuery { .await } - /* - /// Execute a request to the YouTube API, then map the response. - /// - /// Creates a report in case of failure for easy debugging. - /// - /// # Parameters - /// - `ctype`: Client type (`Desktop`, `DesktopMusic`, `Android`, ...) - /// - `operation`: Name of the RustyPipe operation (only for reporting, e.g. `get_player`) - /// - `id`: ID of the requested entity (Video ID, Channel ID, ...). - /// The ID is included in reports and is also passed to the mapper for validating the response. - /// Set it to an empty string if you are not requesting an entity with an ID. - /// - `method`: HTTP method - /// - `endpoint`: YouTube API endpoint (`https://www.youtube.com/youtubei/v1/?key=...`) - /// - `body`: Serializable request body to be sent in json format - /// - `visitor_data`: YouTube visitor data cookie - async fn execute_request_vdata< - R: DeserializeOwned + MapResponse + Debug, - M, - B: Serialize + ?Sized, - >( - &self, - ctype: ClientType, - operation: &str, - id: &str, - endpoint: &str, - body: &B, - visitor_data: Option<&str>, - ) -> Result { - self.execute_request_deobf::( - ctype, - operation, - id, - endpoint, - body, - visitor_data, - None, - ) - .await - } - */ - /// Execute a request to the YouTube API and return the response string /// /// # Parameters @@ -1616,10 +1588,20 @@ 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 context = self.get_context(ctype, true, &visitor_data).await; + let req_body = QBody { context, body }; + let request = self .request_builder(ctype, endpoint, None) .await - .json(body) + .json(&req_body) .build()?; self.client.http_request_txt(&request).await @@ -1646,6 +1628,7 @@ struct MapRespCtxSource<'a> { visitor_data: Option<&'a str>, deobf: Option<&'a DeobfData>, artist: Option, + unlocalized: bool, } impl<'a> MapRespCtx<'a> { @@ -1663,15 +1646,6 @@ impl<'a> MapRespCtx<'a> { } } -impl<'a> MapRespCtxSource<'a> { - fn visitor_data(visitor_data: &'a str) -> Self { - Self { - visitor_data: Some(visitor_data), - ..Default::default() - } - } -} - /// Implement this for YouTube API response structs that need to be mapped to /// RustyPipe models. trait MapResponse { diff --git a/src/client/music_artist.rs b/src/client/music_artist.rs index 9c2bf94..5d72e84 100644 --- a/src/client/music_artist.rs +++ b/src/client/music_artist.rs @@ -41,9 +41,7 @@ impl RustyPipeQuery { } async fn _music_artist(&self, artist_id: &str, all_albums: bool) -> Result { - let context = self.get_context(ClientType::DesktopMusic, true, None).await; let request_body = QBrowse { - context, browse_id: artist_id, }; @@ -84,24 +82,18 @@ impl RustyPipeQuery { filter: Option, order: Option, ) -> Result, Error> { - let visitor_data = self.get_visitor_data().await?; - let context = self - .get_context(ClientType::DesktopMusic, true, Some(&visitor_data)) - .await; let request_body = QBrowseParams { - context: context.clone(), browse_id: &format!("{}{}", util::ARTIST_DISCOGRAPHY_PREFIX, artist_id), params: &albums_param(filter, order), }; let first_page = self - .execute_request_ctx::( + .execute_request::( ClientType::DesktopMusic, "music_artist_albums", artist_id, "browse", &request_body, - MapRespCtxSource::visitor_data(&visitor_data), ) .await?; @@ -109,10 +101,7 @@ impl RustyPipeQuery { let mut ctoken = first_page.ctoken; while let Some(tkn) = &ctoken { - let request_body = QContinuation { - context: context.clone(), - continuation: tkn, - }; + let request_body = QContinuation { continuation: tkn }; let resp: Paginator = self .execute_request_ctx::, _>( ClientType::DesktopMusic, @@ -122,7 +111,6 @@ impl RustyPipeQuery { &request_body, MapRespCtxSource { artist: Some(first_page.artist.clone()), - visitor_data: Some(&visitor_data), ..Default::default() }, ) diff --git a/src/client/music_charts.rs b/src/client/music_charts.rs index 7ad6149..2d21513 100644 --- a/src/client/music_charts.rs +++ b/src/client/music_charts.rs @@ -11,13 +11,12 @@ use crate::{ use super::{ response::{self, music_item::MusicListMapper, url_endpoint::MusicPageType}, - ClientType, MapRespCtx, MapResponse, RustyPipeQuery, YTContext, + ClientType, MapRespCtx, MapResponse, RustyPipeQuery, }; #[derive(Debug, Serialize)] #[serde(rename_all = "camelCase")] struct QCharts<'a> { - context: YTContext<'a>, browse_id: &'a str, params: &'a str, #[serde(skip_serializing_if = "Option::is_none")] @@ -34,9 +33,7 @@ impl RustyPipeQuery { /// Get the YouTube Music charts for a given country #[tracing::instrument(skip(self), level = "error")] pub async fn music_charts(&self, country: Option) -> Result { - let context = self.get_context(ClientType::DesktopMusic, true, None).await; let request_body = QCharts { - context, browse_id: "FEmusic_charts", params: "sgYPRkVtdXNpY19leHBsb3Jl", form_data: country.map(|c| FormData { diff --git a/src/client/music_details.rs b/src/client/music_details.rs index ca0630b..34351ff 100644 --- a/src/client/music_details.rs +++ b/src/client/music_details.rs @@ -16,12 +16,11 @@ use super::{ self, music_item::{map_queue_item, MusicListMapper}, }, - ClientType, MapRespCtx, MapRespCtxSource, MapResponse, QBrowse, RustyPipeQuery, YTContext, + ClientType, MapRespCtx, MapResponse, QBrowse, RustyPipeQuery, }; #[derive(Debug, Serialize)] struct QMusicDetails<'a> { - context: YTContext<'a>, video_id: &'a str, enable_persistent_playlist_panel: bool, is_audio_only: bool, @@ -30,7 +29,6 @@ struct QMusicDetails<'a> { #[derive(Debug, Serialize)] struct QRadio<'a> { - context: YTContext<'a>, playlist_id: &'a str, params: &'a str, enable_persistent_playlist_panel: bool, @@ -46,9 +44,7 @@ impl RustyPipeQuery { video_id: S, ) -> Result { let video_id = video_id.as_ref(); - let context = self.get_context(ClientType::DesktopMusic, true, None).await; let request_body = QMusicDetails { - context, video_id, enable_persistent_playlist_panel: true, is_audio_only: true, @@ -71,9 +67,7 @@ impl RustyPipeQuery { #[tracing::instrument(skip(self), level = "error")] pub async fn music_lyrics + Debug>(&self, lyrics_id: S) -> Result { let lyrics_id = lyrics_id.as_ref(); - let context = self.get_context(ClientType::DesktopMusic, true, None).await; let request_body = QBrowse { - context, browse_id: lyrics_id, }; @@ -96,9 +90,7 @@ impl RustyPipeQuery { related_id: S, ) -> Result { let related_id = related_id.as_ref(); - let context = self.get_context(ClientType::DesktopMusic, true, None).await; let request_body = QBrowse { - context, browse_id: related_id, }; @@ -121,12 +113,7 @@ impl RustyPipeQuery { radio_id: S, ) -> Result, Error> { let radio_id = radio_id.as_ref(); - let visitor_data = self.get_visitor_data().await?; - let context = self - .get_context(ClientType::DesktopMusic, true, Some(&visitor_data)) - .await; let request_body = QRadio { - context, playlist_id: radio_id, params: "wAEB8gECeAE%3D", enable_persistent_playlist_panel: true, @@ -134,13 +121,12 @@ impl RustyPipeQuery { tuner_setting_value: "AUTOMIX_SETTING_NORMAL", }; - self.execute_request_ctx::( + self.execute_request::( ClientType::DesktopMusic, "music_radio", radio_id, "next", &request_body, - MapRespCtxSource::visitor_data(&visitor_data), ) .await } diff --git a/src/client/music_genres.rs b/src/client/music_genres.rs index 627b93b..cfda986 100644 --- a/src/client/music_genres.rs +++ b/src/client/music_genres.rs @@ -15,9 +15,7 @@ impl RustyPipeQuery { /// Get a list of moods and genres from YouTube Music #[tracing::instrument(skip(self), level = "error")] pub async fn music_genres(&self) -> Result, Error> { - let context = self.get_context(ClientType::DesktopMusic, true, None).await; let request_body = QBrowse { - context, browse_id: "FEmusic_moods_and_genres", }; @@ -38,9 +36,7 @@ impl RustyPipeQuery { genre_id: S, ) -> Result { let genre_id = genre_id.as_ref(); - let context = self.get_context(ClientType::DesktopMusic, true, None).await; let request_body = QBrowseParams { - context, browse_id: "FEmusic_moods_and_genres_category", params: genre_id, }; diff --git a/src/client/music_new.rs b/src/client/music_new.rs index cfc5b6d..fb6cf17 100644 --- a/src/client/music_new.rs +++ b/src/client/music_new.rs @@ -13,9 +13,7 @@ impl RustyPipeQuery { /// Get the new albums that were released on YouTube Music #[tracing::instrument(skip(self), level = "error")] pub async fn music_new_albums(&self) -> Result, Error> { - let context = self.get_context(ClientType::DesktopMusic, true, None).await; let request_body = QBrowse { - context, browse_id: "FEmusic_new_releases_albums", }; @@ -32,9 +30,7 @@ impl RustyPipeQuery { /// Get the new music videos that were released on YouTube Music #[tracing::instrument(skip(self), level = "error")] pub async fn music_new_videos(&self) -> Result, Error> { - let context = self.get_context(ClientType::DesktopMusic, true, None).await; let request_body = QBrowse { - context, browse_id: "FEmusic_new_releases_videos", }; diff --git a/src/client/music_playlist.rs b/src/client/music_playlist.rs index 3345651..0edde4f 100644 --- a/src/client/music_playlist.rs +++ b/src/client/music_playlist.rs @@ -17,7 +17,7 @@ use super::{ self, music_item::{map_album_type, map_artist_id, map_artists, MusicListMapper}, }, - ClientType, MapRespCtx, MapRespCtxSource, MapResponse, QBrowse, RustyPipeQuery, + ClientType, MapRespCtx, MapResponse, QBrowse, RustyPipeQuery, }; impl RustyPipeQuery { @@ -28,30 +28,16 @@ impl RustyPipeQuery { playlist_id: S, ) -> Result { let playlist_id = playlist_id.as_ref(); - // YTM playlists require visitor data for continuations to work - let visitor_data = if playlist_id.starts_with("RD") { - Some(self.get_visitor_data().await?) - } else { - None - }; - let context = self - .get_context(ClientType::DesktopMusic, true, visitor_data.as_deref()) - .await; let request_body = QBrowse { - context, browse_id: &format!("VL{playlist_id}"), }; - self.execute_request_ctx::( + self.execute_request::( ClientType::DesktopMusic, "music_playlist", playlist_id, "browse", &request_body, - MapRespCtxSource { - visitor_data: visitor_data.as_deref(), - ..Default::default() - }, ) .await } @@ -63,9 +49,7 @@ impl RustyPipeQuery { album_id: S, ) -> Result { let album_id = album_id.as_ref(); - let context = self.get_context(ClientType::DesktopMusic, true, None).await; let request_body = QBrowse { - context, browse_id: album_id, }; diff --git a/src/client/music_search.rs b/src/client/music_search.rs index dfcc7f2..d8548ed 100644 --- a/src/client/music_search.rs +++ b/src/client/music_search.rs @@ -15,12 +15,11 @@ use crate::{ serializer::MapResult, }; -use super::{response, ClientType, MapRespCtx, MapResponse, RustyPipeQuery, YTContext}; +use super::{response, ClientType, MapRespCtx, MapResponse, RustyPipeQuery}; #[derive(Debug, Serialize)] #[serde(rename_all = "camelCase")] struct QSearch<'a> { - context: YTContext<'a>, query: &'a str, #[serde(skip_serializing_if = "Option::is_none")] params: Option<&'a str>, @@ -29,7 +28,6 @@ struct QSearch<'a> { #[derive(Debug, Serialize)] #[serde(rename_all = "camelCase")] struct QSearchSuggestion<'a> { - context: YTContext<'a>, input: &'a str, } @@ -44,9 +42,7 @@ impl RustyPipeQuery { filter: Option, ) -> Result, Error> { let query = query.as_ref(); - let context = self.get_context(ClientType::DesktopMusic, true, None).await; let request_body = QSearch { - context, query, params: filter.map(MusicSearchFilter::params), }; @@ -132,11 +128,7 @@ impl RustyPipeQuery { query: S, ) -> Result { let query = query.as_ref(); - let context = self.get_context(ClientType::DesktopMusic, true, None).await; - let request_body = QSearchSuggestion { - context, - input: query, - }; + let request_body = QSearchSuggestion { input: query }; self.execute_request::( ClientType::DesktopMusic, diff --git a/src/client/pagination.rs b/src/client/pagination.rs index b6e22d1..f656bab 100644 --- a/src/client/pagination.rs +++ b/src/client/pagination.rs @@ -1,4 +1,3 @@ -use std::borrow::Cow; use std::fmt::Debug; use crate::error::{Error, ExtractionError}; @@ -25,16 +24,7 @@ impl RustyPipeQuery { ) -> Result, Error> { let ctoken = ctoken.as_ref(); if endpoint.is_music() { - // Visitor data is required for YTM continuations - let visitor_data = match visitor_data { - Some(vd) => Cow::Borrowed(vd), - None => Cow::Owned(self.get_visitor_data().await?), - }; - let context = self - .get_context(ClientType::DesktopMusic, true, Some(&visitor_data)) - .await; let request_body = QContinuation { - context, continuation: ctoken, }; @@ -45,59 +35,60 @@ impl RustyPipeQuery { ctoken, endpoint.as_str(), &request_body, - MapRespCtxSource::visitor_data(&visitor_data), + MapRespCtxSource { + visitor_data, + ..Default::default() + }, ) .await?; - Ok(map_ytm_paginator(p, Some(&visitor_data), endpoint)) + Ok(map_ytm_paginator(p, endpoint)) } else { - let context = self - .get_context(ClientType::Desktop, true, visitor_data) - .await; let request_body = QContinuation { - context, continuation: ctoken, }; let p = self - .execute_request::, _>( + .execute_request_ctx::, _>( ClientType::Desktop, "continuation", ctoken, endpoint.as_str(), &request_body, + MapRespCtxSource { + visitor_data, + ..Default::default() + }, ) .await?; - Ok(map_yt_paginator(p, visitor_data, endpoint)) + Ok(map_yt_paginator(p, endpoint)) } } } fn map_yt_paginator( p: Paginator, - visitor_data: Option<&str>, endpoint: ContinuationEndpoint, ) -> Paginator { Paginator { count: p.count, items: p.items.into_iter().filter_map(T::from_yt_item).collect(), ctoken: p.ctoken, - visitor_data: visitor_data.map(str::to_owned), + visitor_data: p.visitor_data, endpoint, } } fn map_ytm_paginator( p: Paginator, - visitor_data: Option<&str>, endpoint: ContinuationEndpoint, ) -> Paginator { Paginator { count: p.count, items: p.items.into_iter().filter_map(T::from_ytm_item).collect(), ctoken: p.ctoken, - visitor_data: visitor_data.map(str::to_owned), + visitor_data: p.visitor_data, endpoint, } } @@ -430,7 +421,7 @@ mod tests { let map_res: MapResult> = items.map_response(&MapRespCtx::test("")).unwrap(); let paginator: Paginator = - map_yt_paginator(map_res.c, None, ContinuationEndpoint::Browse); + map_yt_paginator(map_res.c, ContinuationEndpoint::Browse); assert!( map_res.warnings.is_empty(), @@ -453,7 +444,7 @@ mod tests { let map_res: MapResult> = items.map_response(&MapRespCtx::test("")).unwrap(); let paginator: Paginator = - map_yt_paginator(map_res.c, None, ContinuationEndpoint::Browse); + map_yt_paginator(map_res.c, ContinuationEndpoint::Browse); assert!( map_res.warnings.is_empty(), @@ -476,7 +467,7 @@ mod tests { let map_res: MapResult> = items.map_response(&MapRespCtx::test("")).unwrap(); let paginator: Paginator = - map_ytm_paginator(map_res.c, None, ContinuationEndpoint::MusicBrowse); + map_ytm_paginator(map_res.c, ContinuationEndpoint::MusicBrowse); assert!( map_res.warnings.is_empty(), @@ -497,7 +488,7 @@ mod tests { let map_res: MapResult> = items.map_response(&MapRespCtx::test("")).unwrap(); let paginator: Paginator = - map_ytm_paginator(map_res.c, None, ContinuationEndpoint::MusicBrowse); + map_ytm_paginator(map_res.c, ContinuationEndpoint::MusicBrowse); assert!( map_res.warnings.is_empty(), diff --git a/src/client/player.rs b/src/client/player.rs index 6a6e8a6..4da3162 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -24,14 +24,13 @@ use super::{ self, player::{self, Format}, }, - ClientType, MapRespCtx, MapRespCtxSource, MapResponse, MapResult, RustyPipeQuery, YTContext, + ClientType, MapRespCtx, MapRespCtxSource, MapResponse, MapResult, RustyPipeQuery, DEFAULT_PLAYER_CLIENT_ORDER, }; #[derive(Debug, Serialize)] #[serde(rename_all = "camelCase")] struct QPlayer<'a> { - context: YTContext<'a>, /// Website playback context #[serde(skip_serializing_if = "Option::is_none")] playback_context: Option>, @@ -124,16 +123,10 @@ impl RustyPipeQuery { client_type: ClientType, ) -> Result { let video_id = video_id.as_ref(); - // let vdata = self.get_visitor_data().await?; - let (context, deobf) = tokio::join!( - self.get_context(client_type, false, None), - self.client.get_deobf_data() - ); - let deobf = deobf?; + let deobf = self.client.get_deobf_data().await?; let request_body = if client_type.is_web() { QPlayer { - context, playback_context: Some(QPlaybackContext { content_playback_context: QContentPlaybackContext { signature_timestamp: &deobf.sts, @@ -148,7 +141,6 @@ impl RustyPipeQuery { } } else { QPlayer { - context, playback_context: None, cpn: Some(util::generate_content_playback_nonce()), video_id, diff --git a/src/client/playlist.rs b/src/client/playlist.rs index f61b7ef..df000e8 100644 --- a/src/client/playlist.rs +++ b/src/client/playlist.rs @@ -13,40 +13,23 @@ use crate::{ util::{self, dictionary, timeago, TryRemove}, }; -use super::{ - response, ClientType, MapRespCtx, MapRespCtxSource, MapResponse, MapResult, QBrowse, - RustyPipeQuery, -}; +use super::{response, ClientType, MapRespCtx, MapResponse, MapResult, QBrowse, RustyPipeQuery}; impl RustyPipeQuery { /// Get a YouTube playlist #[tracing::instrument(skip(self), level = "error")] pub async fn playlist + Debug>(&self, playlist_id: S) -> Result { let playlist_id = playlist_id.as_ref(); - // YTM playlists require visitor data for continuations to work - let visitor_data: Option = if playlist_id.starts_with("RD") { - Some(self.get_visitor_data().await?) - } else { - None - }; - let context = self - .get_context(ClientType::Desktop, true, visitor_data.as_deref()) - .await; let request_body = QBrowse { - context, browse_id: &format!("VL{playlist_id}"), }; - self.execute_request_ctx::( + self.execute_request::( ClientType::Desktop, "playlist", playlist_id, "browse", &request_body, - MapRespCtxSource { - visitor_data: visitor_data.as_deref(), - ..Default::default() - }, ) .await } diff --git a/src/client/search.rs b/src/client/search.rs index 50f3b33..042f200 100644 --- a/src/client/search.rs +++ b/src/client/search.rs @@ -12,12 +12,11 @@ use crate::{ param::search_filter::SearchFilter, }; -use super::{response, ClientType, MapRespCtx, MapResponse, MapResult, RustyPipeQuery, YTContext}; +use super::{response, ClientType, MapRespCtx, MapResponse, MapResult, RustyPipeQuery}; #[derive(Debug, Serialize)] #[serde(rename_all = "camelCase")] struct QSearch<'a> { - context: YTContext<'a>, query: &'a str, params: &'a str, } @@ -30,9 +29,7 @@ impl RustyPipeQuery { query: S, ) -> Result, Error> { let query = query.as_ref(); - let context = self.get_context(ClientType::Desktop, true, None).await; let request_body = QSearch { - context, query, params: "8AEB", }; @@ -55,9 +52,7 @@ impl RustyPipeQuery { filter: &SearchFilter, ) -> Result, Error> { let query = query.as_ref(); - let context = self.get_context(ClientType::Desktop, true, None).await; let request_body = QSearch { - context, query, params: &filter.encode(), }; diff --git a/src/client/trends.rs b/src/client/trends.rs index c271b7d..fa3510c 100644 --- a/src/client/trends.rs +++ b/src/client/trends.rs @@ -12,9 +12,7 @@ impl RustyPipeQuery { /// Get the videos from the YouTube trending page #[tracing::instrument(skip(self), level = "error")] pub async fn trending(&self) -> Result, Error> { - let context = self.get_context(ClientType::Desktop, true, None).await; let request_body = QBrowseParams { - context, browse_id: "FEtrending", params: "4gIOGgxtb3N0X3BvcHVsYXI%3D", }; diff --git a/src/client/url_resolver.rs b/src/client/url_resolver.rs index e771d6e..40b1b66 100644 --- a/src/client/url_resolver.rs +++ b/src/client/url_resolver.rs @@ -11,13 +11,12 @@ use crate::{ use super::{ response::{self, url_endpoint::NavigationEndpoint}, - ClientType, MapRespCtx, MapResponse, RustyPipeQuery, YTContext, + ClientType, MapRespCtx, MapResponse, RustyPipeQuery, }; #[derive(Debug, Serialize)] #[serde(rename_all = "camelCase")] -struct QResolveUrl<'a> { - context: YTContext<'a>, +struct QResolveUrl { url: String, } @@ -299,9 +298,7 @@ impl RustyPipeQuery { url_path: &str, ctype: ClientType, ) -> Result { - let context = self.get_context(ctype, true, None).await; let request_body = QResolveUrl { - context, url: format!( "https://{}.youtube.com{}", match ctype { diff --git a/src/client/video_details.rs b/src/client/video_details.rs index a1fb93e..f219531 100644 --- a/src/client/video_details.rs +++ b/src/client/video_details.rs @@ -15,12 +15,11 @@ use crate::{ use super::{ response::{self, video_details::Payload, IconType}, - ClientType, MapRespCtx, MapResponse, QContinuation, RustyPipeQuery, YTContext, + ClientType, MapRespCtx, MapResponse, QContinuation, RustyPipeQuery, }; #[derive(Debug, Serialize)] struct QVideo<'a> { - context: YTContext<'a>, /// YouTube video ID video_id: &'a str, /// Set to true to allow extraction of streams with sensitive content @@ -37,9 +36,7 @@ impl RustyPipeQuery { video_id: S, ) -> Result { let video_id = video_id.as_ref(); - let context = self.get_context(ClientType::Desktop, true, None).await; let request_body = QVideo { - context, video_id, content_check_ok: true, racy_check_ok: true, @@ -63,11 +60,7 @@ impl RustyPipeQuery { visitor_data: Option<&str>, ) -> Result, Error> { let ctoken = ctoken.as_ref(); - let context = self - .get_context(ClientType::Desktop, true, visitor_data) - .await; let request_body = QContinuation { - context, continuation: ctoken, }; diff --git a/src/util/mod.rs b/src/util/mod.rs index 121c1b0..0d36425 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -94,6 +94,29 @@ 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: From 1cc3f9ad74908d33e247ba6243103bfc22540164 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 23 Oct 2024 23:00:26 +0200 Subject: [PATCH 162/347] feat: add OAuth user login to access age-restricted videos --- .forgejo/workflows/ci.yaml | 4 +- cli/src/main.rs | 18 ++ src/client/mod.rs | 329 +++++++++++++++++++++++++++++++++++-- src/client/player.rs | 16 +- src/error.rs | 22 +++ tests/youtube.rs | 14 +- 6 files changed, 379 insertions(+), 24 deletions(-) diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index 8622f8b..60230e6 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -28,7 +28,9 @@ jobs: run: cargo clippy --all --tests --features=rss,indicatif,audiotag -- -D warnings - name: 🧪 Test - run: cargo nextest run --config-file ~/.config/nextest.toml --profile ci --retries 2 --features rss --workspace + run: | + echo "${{ secrets.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" diff --git a/cli/src/main.rs b/cli/src/main.rs index b48bca3..eb29cdf 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -191,6 +191,8 @@ enum Commands { }, /// Get a YouTube visitor data cookie Vdata, + /// Log in using your Google account + Login, } #[derive(Default, Copy, Clone, ValueEnum)] @@ -1208,6 +1210,22 @@ async fn run() -> anyhow::Result<()> { 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?; + } + Err(e) => return Err(e.into()), + } + anstream::println!("{}", "Logged in.".green()); + } }; Ok(()) } diff --git a/src/client/mod.rs b/src/client/mod.rs index a1a707b..4dee6f7 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -24,7 +24,7 @@ mod channel_rss; use std::collections::HashMap; use std::path::PathBuf; -use std::sync::Arc; +use std::sync::{Arc, RwLock}; use std::{borrow::Cow, fmt::Debug, time::Duration}; use once_cell::sync::Lazy; @@ -32,8 +32,9 @@ use regex::Regex; use reqwest::{header, Client, ClientBuilder, Request, RequestBuilder, Response, StatusCode}; use serde::{de::DeserializeOwned, Deserialize, Serialize}; use time::OffsetDateTime; -use tokio::sync::RwLock; +use tokio::sync::RwLock as AsyncRwLock; +use crate::error::AuthError; use crate::{ cache::{CacheStorage, FileStorage, DEFAULT_CACHE_FILE}, deobfuscate::DeobfData, @@ -198,6 +199,87 @@ struct QContinuation<'a> { continuation: &'a str, } +#[derive(Debug, Serialize)] +struct OauthCodeRequest { + client_id: &'static str, + device_id: String, + device_model: &'static str, + scope: &'static str, +} + +/// Device code used for logging a user into YouTube +/// +/// 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`] +/// 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 { + device_code: String, + /// Code to be shown to the user to log himself in + pub user_code: String, + /// Time in seconds until the code expires + pub expires_in: u32, + /// Interval in seconds for checking if the login was completed + pub interval: u32, + /// URL to the login page () + pub verification_url: String, +} + +#[derive(Debug, Serialize)] +struct OauthTokenRequest<'a> { + client_id: &'static str, + client_secret: &'static str, + #[serde(skip_serializing_if = "Option::is_none")] + code: Option<&'a str>, + #[serde(skip_serializing_if = "Option::is_none")] + refresh_token: Option<&'a str>, + grant_type: &'static str, +} + +#[derive(Debug, Deserialize)] +#[serde(untagged)] +enum OauthTokenResponse { + Ok(OauthTokenResponseInner), + Error { + error: String, + #[serde(default)] + error_description: String, + }, +} + +#[derive(Debug, Deserialize)] +struct OauthTokenResponseInner { + access_token: String, + refresh_token: Option, + expires_in: u32, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +struct OauthToken { + access_token: String, + refresh_token: String, + #[serde(with = "time::serde::rfc3339")] + expires_at: OffsetDateTime, +} + +impl OauthToken { + fn from_response( + value: OauthTokenResponseInner, + refresh_token: Option, + ) -> Result { + Ok(Self { + access_token: value.access_token, + refresh_token: value + .refresh_token + .or(refresh_token) + .ok_or(Error::Other("missing refresh token".into()))?, + expires_at: util::now_sec() + Duration::from_secs(value.expires_in.into()), + }) + } +} + const DEFAULT_UA: &str = "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.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"; @@ -225,6 +307,11 @@ const TV_CLIENT_VERSION: &str = "7.20241008.14.02"; const APP_CLIENT_VERSION: &str = "18.03.33"; const IOS_DEVICE_MODEL: &str = "iPhone14,5"; +const OAUTH_CLIENT_ID: &str = + "861556708454-d6dlm3lh05idd8npek18k6be8ba3oc68.apps.googleusercontent.com"; +const OAUTH_CLIENT_SECRET: &str = "SboVhoG9s0rNafixCSGGKXAT"; +const OAUTH_SCOPES: &str = "http://gdata.youtube.com https://www.googleapis.com/auth/youtube"; + static CLIENT_VERSION_REGEX: Lazy = Lazy::new(|| Regex::new(r#""INNERTUBE_CONTEXT_CLIENT_VERSION":"([\w\d\._-]+?)""#).unwrap()); static VISITOR_DATA_REGEX: Lazy = @@ -263,6 +350,7 @@ struct RustyPipeOpts { country: Country, report: bool, strict: bool, + auth: Option, visitor_data: Option, } @@ -377,6 +465,7 @@ impl Default for RustyPipeOpts { country: Country::Us, report: false, strict: false, + auth: None, visitor_data: None, } } @@ -384,8 +473,9 @@ impl Default for RustyPipeOpts { #[derive(Default, Debug)] struct CacheHolder { - clients: HashMap>>, - deobf: RwLock>, + clients: HashMap>>, + deobf: AsyncRwLock>, + oauth_token: RwLock>, } #[derive(Default, Debug, Clone, Serialize, Deserialize)] @@ -394,6 +484,8 @@ struct CacheData { clients: HashMap>, #[serde(skip_serializing_if = "CacheEntry::is_none")] deobf: CacheEntry, + #[serde(skip_serializing_if = "Option::is_none")] + oauth_token: Option, } #[derive(Default, Debug, Clone, Serialize, Deserialize)] @@ -532,7 +624,12 @@ impl RustyPipeBuilder { ClientType::Tv, ] .into_iter() - .map(|c| (c, RwLock::new(cdata.clients.remove(&c).unwrap_or_default()))) + .map(|c| { + ( + c, + AsyncRwLock::new(cdata.clients.remove(&c).unwrap_or_default()), + ) + }) .collect::>(); Ok(RustyPipe { @@ -547,7 +644,8 @@ impl RustyPipeBuilder { n_http_retries: self.n_http_retries, cache: CacheHolder { clients: cache_clients, - deobf: RwLock::new(cdata.deobf), + deobf: AsyncRwLock::new(cdata.deobf), + oauth_token: RwLock::new(cdata.oauth_token), }, default_opts: self.default_opts, user_agent, @@ -693,6 +791,20 @@ 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 { + self.default_opts.auth = Some(false); + self + } + /// Set the YouTube visitor data cookie /// /// YouTube assigns a session cookie to each user which is used for personalized @@ -970,6 +1082,7 @@ impl RustyPipe { let cdata = CacheData { clients: cache_clients, deobf: self.inner.cache.deobf.read().await.clone(), + oauth_token: self.inner.cache.oauth_token.read().unwrap().clone(), }; match serde_json::to_string(&cdata) { @@ -1033,6 +1146,175 @@ impl RustyPipe { } } } + + /// Get a new device code for logging into YouTube + pub async fn user_auth_get_code(&self) -> Result { + tracing::debug!("getting OAuth user code"); + + let code_request = OauthCodeRequest { + client_id: OAUTH_CLIENT_ID, + device_id: util::random_uuid(), + device_model: "ytlr:samsung:smarttv", + scope: OAUTH_SCOPES, + }; + + self.inner + .http + .post("https://www.youtube.com/o/oauth2/device/code") + .header(header::USER_AGENT, TV_UA) + .header(header::ORIGIN, YOUTUBE_HOME_URL) + .header(header::REFERER, YOUTUBE_TV_URL) + .json(&code_request) + .send() + .await? + .error_for_status()? + .json::() + .await + .map_err(Error::from) + } + + /// Attempt to log in the user using the given device code + /// + /// Returns `true` if the user has successfully logged in using the code. + /// + /// 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. + pub async fn user_auth_login(&self, code: &OauthDeviceCode) -> Result { + tracing::debug!("OAuth login attempt (user_code: {})", code.user_code); + + let token_request = OauthTokenRequest { + client_id: OAUTH_CLIENT_ID, + client_secret: OAUTH_CLIENT_SECRET, + code: Some(&code.device_code), + refresh_token: None, + grant_type: "http://oauth.net/grant_type/device/1.0", + }; + + let token_response = self + .inner + .http + .post("https://www.youtube.com/o/oauth2/token") + .header(header::USER_AGENT, TV_UA) + .header(header::ORIGIN, YOUTUBE_HOME_URL) + .header(header::REFERER, YOUTUBE_TV_URL) + .json(&token_request) + .send() + .await? + .error_for_status()? + .json::() + .await?; + + match token_response { + OauthTokenResponse::Ok(token) => { + let token = OauthToken::from_response(token, None)?; + { + let mut cache_token = self.inner.cache.oauth_token.write().unwrap(); + *cache_token = Some(token); + } + self.store_cache().await; + Ok(true) + } + OauthTokenResponse::Error { + error, + error_description, + } => match error.as_str() { + "authorization_pending" => Ok(false), + "expired_token" => Err(Error::Auth(AuthError::DeviceCodeExpired)), + _ => Err(Error::Auth(AuthError::Other(format!( + "{error}: {error_description}" + )))), + }, + } + } + + /// Attempt to refresh the OAuth access token to check if the user is successfully logged in + /// and the session is still valid. + 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 mut cache_token = self.inner.cache.oauth_token.write().unwrap(); + *cache_token = Some(token.clone()); + } + self.store_cache().await; + Ok(()) + } else { + Err(Error::Auth(AuthError::NoLogin)) + } + } + + /// Attempt to log in the user using the given device code. + /// + /// This function waits until the login was successful or an error occurred. + pub async fn user_auth_wait_for_login(&self, code: &OauthDeviceCode) -> Result<(), Error> { + while !self.user_auth_login(code).await? { + tokio::time::sleep(Duration::from_secs(code.interval.into())).await; + } + Ok(()) + } + + async fn refresh_token(&self, refresh_token: &str) -> Result { + tracing::debug!("refreshing OAuth token"); + + let token_request = OauthTokenRequest { + client_id: OAUTH_CLIENT_ID, + client_secret: OAUTH_CLIENT_SECRET, + code: None, + refresh_token: Some(refresh_token), + grant_type: "refresh_token", + }; + + let token_response = self + .inner + .http + .post("https://www.youtube.com/o/oauth2/token") + .header(header::USER_AGENT, TV_UA) + .header(header::ORIGIN, YOUTUBE_HOME_URL) + .header(header::REFERER, YOUTUBE_TV_URL) + .json(&token_request) + .send() + .await? + .error_for_status()? + .json::() + .await?; + + match token_response { + OauthTokenResponse::Ok(token) => { + OauthToken::from_response(token, Some(refresh_token.to_owned())) + } + OauthTokenResponse::Error { + error, + error_description, + } => Err(Error::Auth(AuthError::Refresh(format!( + "{error}: {error_description}" + )))), + } + } + + /// Get the OAuth access token for accessing YouTube as an authenticated user + pub async fn user_auth_access_token(&self) -> Result { + 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 access_token = token.access_token.to_owned(); + + { + let mut cache_token = self.inner.cache.oauth_token.write().unwrap(); + *cache_token = Some(token.clone()); + } + self.store_cache().await; + + Ok(access_token) + } else { + Ok(token.access_token.to_owned()) + } + } else { + Err(Error::Auth(AuthError::NoLogin)) + } + } } impl RustyPipeQuery { @@ -1073,6 +1355,20 @@ impl RustyPipeQuery { self } + /// Enable authentication for this request + #[must_use] + pub fn authenticated(mut self) -> Self { + self.opts.auth = Some(true); + self + } + + /// Disable authentication for this request + #[must_use] + pub fn unauthenticated(mut self) -> Self { + self.opts.auth = Some(false); + self + } + /// Set the YouTube visitor data cookie /// /// YouTube assigns a session cookie to each user which is used for personalized @@ -1123,6 +1419,15 @@ impl RustyPipeQuery { } } + /// Return `true` if the client has stored login credentials and authentication has not been disabled + pub fn auth_enabled(&self) -> bool { + if self.opts.auth == Some(false) { + return false; + } + let cache_token = self.client.inner.cache.oauth_token.read().unwrap(); + cache_token.is_some() + } + /// Create a new context object, which is included in every request to /// the YouTube API and contains language, country and device parameters. /// @@ -1473,11 +1778,15 @@ impl RustyPipeQuery { artist: ctx_src.artist, }; - let request = self + let mut r = self .request_builder(ctype, endpoint, ctx.visitor_data) - .await - .json(&req_body) - .build()?; + .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()?; let req_res = self.yt_request::(&request, &ctx).await?; diff --git a/src/client/player.rs b/src/client/player.rs index 4da3162..e4961aa 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -82,19 +82,22 @@ impl RustyPipeQuery { clients: &[ClientType], ) -> Result { let video_id = video_id.as_ref(); - let last_e = Error::Other("no clients".into()); + let mut last_e = Error::Other("no clients".into()); for client in clients { let res = self.player_from_client(video_id, *client).await; match res { Ok(res) => return Ok(res), Err(Error::Extraction(e)) => { - // TODO: fetch age-restricted videos with login - /* - if e.use_login() { + if e.use_login() && self.auth_enabled() { tracing::info!("{e}; fetching player with login"); - match self.player_from_client(video_id, *client).await { + match self + .clone() + .authenticated() + .player_from_client(video_id, *client) + .await + { Ok(res) => return Ok(res), Err(Error::Extraction(e)) => { if !e.switch_client() { @@ -104,8 +107,7 @@ impl RustyPipeQuery { Err(e) => return Err(e), } last_e = Error::Extraction(e); - } else*/ - if !e.switch_client() { + } else if !e.switch_client() { return Err(Error::Extraction(e)); } } diff --git a/src/error.rs b/src/error.rs index f585f28..a2125e8 100644 --- a/src/error.rs +++ b/src/error.rs @@ -16,6 +16,9 @@ pub enum Error { /// Erroneous HTTP status code received #[error("http status code: {0} message: {1}")] HttpStatus(u16, Cow<'static, str>), + /// Authentication error + #[error("auth error: {0}")] + Auth(#[from] AuthError), /// Unspecified error #[error("error: {0}")] Other(Cow<'static, str>), @@ -125,6 +128,25 @@ impl Display for UnavailabilityReason { } } +/// Error authenticating a YouTube user +#[derive(thiserror::Error, Debug)] +pub enum AuthError { + /// No user is logged in + #[error("you are not logged in")] + NoLogin, + /// The device code for user login has expired. + /// + /// Generate a new device code and try again + #[error("device code expired; try again")] + DeviceCodeExpired, + /// The access token could not be refreshed + #[error("error refreshing token: {0}; log in again")] + Refresh(String), + /// Unhandled OAuth error + #[error("unhandled OAuth error: {0}")] + Other(String), +} + pub(crate) mod internal { use super::{Error, ExtractionError}; diff --git a/tests/youtube.rs b/tests/youtube.rs index dfc1700..fe742a7 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -221,8 +221,6 @@ async fn check_video_stream(s: impl YtStream) { false, true )] -/* -TODO: add login #[case::agelimit( "ZDKQmBWTRnw", "The Rinky Pink Pounder. Hitachi Magic Wand clone teardown.", @@ -234,7 +232,6 @@ TODO: add login false, false )] -*/ #[tokio::test] #[allow(clippy::too_many_arguments)] async fn get_player( @@ -249,6 +246,11 @@ 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; + } + let player_data = rp.query().player(id).await.unwrap(); let details = player_data.details; @@ -338,7 +340,7 @@ async fn get_player( #[case::members_only("vYmAhoZYg64", UnavailabilityReason::MembersOnly)] #[tokio::test] async fn get_player_error(#[case] id: &str, #[case] expect: UnavailabilityReason, rp: RustyPipe) { - let err = rp.query().player(id).await.unwrap_err(); + let err = rp.query().unauthenticated().player(id).await.unwrap_err(); match err { Error::Extraction(ExtractionError::Unavailable { reason, .. }) => { @@ -755,7 +757,7 @@ async fn get_video_details_live(rp: RustyPipe) { #[rstest] #[tokio::test] -async fn get_video_details_agegate(rp: RustyPipe) { +async fn get_video_details_agelimit(rp: RustyPipe) { let details = rp.query().video_details("ZDKQmBWTRnw").await.unwrap(); // dbg!(&details); @@ -781,7 +783,7 @@ async fn get_video_details_agegate(rp: RustyPipe) { assert!(!details.is_live); assert!(!details.is_ccommons); - // No recommendations because agegate + // No recommendations because age limit assert_eq!(details.recommended.count, Some(0)); assert!(details.recommended.items.is_empty()); } From 1b08166399cccb8394d2fdd82d54162c1a9e01be Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 23 Oct 2024 23:35:08 +0200 Subject: [PATCH 163/347] 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 7984f9f13a24808b1a65111b6d2bd9f623014af9 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Thu, 24 Oct 2024 00:42:19 +0200 Subject: [PATCH 164/347] 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 165/347] 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 166/347] 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 167/347] 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 168/347] 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 169/347] 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 170/347] 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 171/347] 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 172/347] 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 173/347] 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 174/347] 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 175/347] 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 176/347] 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 177/347] 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 178/347] 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 179/347] 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 180/347] 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 181/347] 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 182/347] 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 183/347] 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 184/347] 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 185/347] 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 186/347] 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 187/347] 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 188/347] 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 189/347] 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 190/347] 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 191/347] 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 192/347] 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 193/347] 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 194/347] 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 195/347] 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 196/347] 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 197/347] 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 198/347] 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 199/347] 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 200/347] 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 201/347] 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 202/347] 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 203/347] 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 204/347] 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 205/347] 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 206/347] 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 207/347] 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 208/347] 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 209/347] 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 210/347] 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 211/347] 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 212/347] 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 213/347] 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 214/347] 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 215/347] 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 216/347] 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 217/347] 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 218/347] 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 219/347] 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 220/347] 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 221/347] 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 222/347] 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 223/347] 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 224/347] 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 225/347] 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 226/347] 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 227/347] 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 228/347] 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 229/347] 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 230/347] 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 231/347] 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 232/347] 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 233/347] 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 234/347] 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 235/347] 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 236/347] 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 237/347] 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 238/347] 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 239/347] 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 240/347] 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 241/347] 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 242/347] 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 243/347] 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 244/347] 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 245/347] 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 246/347] 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 247/347] 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 248/347] 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 249/347] 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 250/347] 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 251/347] 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 252/347] 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 253/347] 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 254/347] 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 255/347] 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 256/347] 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 257/347] 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 258/347] 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 259/347] 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 260/347] 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 261/347] 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 262/347] 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 263/347] 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 264/347] 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 265/347] 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 266/347] 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 267/347] 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 268/347] 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 269/347] 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 270/347] 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 271/347] 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 272/347] 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 273/347] 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 274/347] 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 275/347] 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 276/347] 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 277/347] 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 278/347] 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 279/347] 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 280/347] 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 281/347] 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 282/347] 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 283/347] 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 284/347] 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 285/347] 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 286/347] 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 287/347] 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 288/347] 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 289/347] 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 290/347] 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 291/347] 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 292/347] 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 293/347] 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 294/347] 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 295/347] 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 296/347] 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 297/347] 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 298/347] 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 299/347] 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 300/347] 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 301/347] 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 302/347] 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 303/347] 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 304/347] 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 305/347] 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 306/347] 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 307/347] 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 308/347] 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 309/347] 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 310/347] 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