Compare commits
No commits in common. "feat/deobf-extractor" and "main" have entirely different histories.
feat/deobf
...
main
181 changed files with 11539 additions and 262517 deletions
46
Cargo.toml
46
Cargo.toml
|
|
@ -1,7 +1,7 @@
|
||||||
[package]
|
[package]
|
||||||
name = "rustypipe"
|
name = "rustypipe"
|
||||||
version = "0.11.4"
|
version = "0.11.4"
|
||||||
rust-version = "1.89.0"
|
rust-version = "1.67.1"
|
||||||
edition.workspace = true
|
edition.workspace = true
|
||||||
authors.workspace = true
|
authors.workspace = true
|
||||||
license.workspace = true
|
license.workspace = true
|
||||||
|
|
@ -13,10 +13,10 @@ description = "Client for the public YouTube / YouTube Music API (Innertube), in
|
||||||
include = ["/src", "README.md", "CHANGELOG.md", "LICENSE", "!snapshots"]
|
include = ["/src", "README.md", "CHANGELOG.md", "LICENSE", "!snapshots"]
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
members = [".", "codegen", "downloader", "cli", "deobfuscator"]
|
members = [".", "codegen", "downloader", "cli"]
|
||||||
|
|
||||||
[workspace.package]
|
[workspace.package]
|
||||||
edition = "2024"
|
edition = "2021"
|
||||||
authors = ["ThetaDev <thetadev@magenta.de>"]
|
authors = ["ThetaDev <thetadev@magenta.de>"]
|
||||||
license = "GPL-3.0"
|
license = "GPL-3.0"
|
||||||
repository = "https://codeberg.org/ThetaDev/rustypipe"
|
repository = "https://codeberg.org/ThetaDev/rustypipe"
|
||||||
|
|
@ -24,12 +24,13 @@ keywords = ["youtube", "video", "music"]
|
||||||
categories = ["api-bindings", "multimedia"]
|
categories = ["api-bindings", "multimedia"]
|
||||||
|
|
||||||
[workspace.dependencies]
|
[workspace.dependencies]
|
||||||
rquickjs = "0.12.0"
|
rquickjs = "0.9.0"
|
||||||
once_cell = "1.12.0"
|
once_cell = "1.12.0"
|
||||||
regex = "1.6.0"
|
regex = "1.6.0"
|
||||||
|
fancy-regex = "0.14.0"
|
||||||
thiserror = "2.0.0"
|
thiserror = "2.0.0"
|
||||||
url = "2.2.0"
|
url = "2.2.0"
|
||||||
reqwest = { version = "0.13.0", default-features = false }
|
reqwest = { version = "0.12.0", default-features = false }
|
||||||
tokio = "1.20.4"
|
tokio = "1.20.4"
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
serde_json = "1.0.82"
|
serde_json = "1.0.82"
|
||||||
|
|
@ -38,8 +39,8 @@ serde_with = { version = "3.0.0", default-features = false, features = [
|
||||||
"macros",
|
"macros",
|
||||||
] }
|
] }
|
||||||
serde_plain = "1.0.0"
|
serde_plain = "1.0.0"
|
||||||
sha1 = "0.11.0"
|
sha1 = "0.10.0"
|
||||||
rand = "0.10.0"
|
rand = "0.9.0"
|
||||||
time = { version = "0.3.37", features = [
|
time = { version = "0.3.37", features = [
|
||||||
"macros",
|
"macros",
|
||||||
"serde-human-readable",
|
"serde-human-readable",
|
||||||
|
|
@ -47,18 +48,17 @@ time = { version = "0.3.37", features = [
|
||||||
"local-offset",
|
"local-offset",
|
||||||
] }
|
] }
|
||||||
futures-util = "0.3.31"
|
futures-util = "0.3.31"
|
||||||
phf = "0.13.0"
|
ress = "0.11.0"
|
||||||
phf_codegen = "0.13.0"
|
phf = "0.11.0"
|
||||||
|
phf_codegen = "0.11.0"
|
||||||
data-encoding = "2.0.0"
|
data-encoding = "2.0.0"
|
||||||
urlencoding = "2.1.0"
|
urlencoding = "2.1.0"
|
||||||
quick-xml = { version = "0.40.0", features = ["serialize"] }
|
quick-xml = { version = "0.37.0", features = ["serialize"] }
|
||||||
tracing = { version = "0.1.0", features = ["log"] }
|
tracing = { version = "0.1.0", features = ["log"] }
|
||||||
log = "0.4.0"
|
|
||||||
localzone = "0.3.1"
|
localzone = "0.3.1"
|
||||||
double-ended-peekable = "0.1.0"
|
|
||||||
|
|
||||||
# CLI
|
# CLI
|
||||||
indicatif = "0.18.0"
|
indicatif = "0.17.0"
|
||||||
anyhow = "1.0"
|
anyhow = "1.0"
|
||||||
clap = { version = "4.0.0", features = ["derive"] }
|
clap = { version = "4.0.0", features = ["derive"] }
|
||||||
tracing-subscriber = { version = "0.3.17", features = ["env-filter"] }
|
tracing-subscriber = { version = "0.3.17", features = ["env-filter"] }
|
||||||
|
|
@ -67,11 +67,11 @@ dirs = "6.0.0"
|
||||||
filenamify = "0.1.0"
|
filenamify = "0.1.0"
|
||||||
|
|
||||||
# Testing
|
# Testing
|
||||||
rstest = "0.26.0"
|
rstest = "0.25.0"
|
||||||
tokio-test = "0.4.2"
|
tokio-test = "0.4.2"
|
||||||
insta = { version = "1.17.1", features = ["ron", "redactions"] }
|
insta = { version = "1.17.1", features = ["ron", "redactions"] }
|
||||||
path_macro = "1.0.0"
|
path_macro = "1.0.0"
|
||||||
tracing-test = { version = "0.2.5", features = ["no-env-filter"] }
|
tracing-test = "0.2.5"
|
||||||
|
|
||||||
# Included crates
|
# Included crates
|
||||||
rustypipe = { path = ".", version = "0.11.4", default-features = false }
|
rustypipe = { path = ".", version = "0.11.4", default-features = false }
|
||||||
|
|
@ -79,27 +79,26 @@ rustypipe-downloader = { path = "./downloader", version = "0.3.1", default-featu
|
||||||
"indicatif",
|
"indicatif",
|
||||||
"audiotag",
|
"audiotag",
|
||||||
] }
|
] }
|
||||||
rustypipe-deobfuscator = { path = "./deobfuscator", version = "0.1.0" }
|
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["default-tls", "deobfuscator"]
|
default = ["default-tls"]
|
||||||
|
|
||||||
rss = ["dep:quick-xml"]
|
rss = ["dep:quick-xml"]
|
||||||
userdata = []
|
userdata = []
|
||||||
deobfuscator = ["dep:rustypipe-deobfuscator"]
|
|
||||||
|
|
||||||
# Reqwest TLS options
|
# Reqwest TLS options
|
||||||
default-tls = ["reqwest/default-tls"]
|
default-tls = ["reqwest/default-tls"]
|
||||||
rustls = ["reqwest/rustls"]
|
|
||||||
rustls-no-provider = ["reqwest/rustls-no-provider"]
|
|
||||||
native-tls = ["reqwest/native-tls"]
|
native-tls = ["reqwest/native-tls"]
|
||||||
native-tls-no-alpn = ["reqwest/native-tls-no-alpn"]
|
native-tls-alpn = ["reqwest/native-tls-alpn"]
|
||||||
native-tls-vendored = ["reqwest/native-tls-vendored"]
|
native-tls-vendored = ["reqwest/native-tls-vendored"]
|
||||||
native-tls-vendored-no-alpn = ["reqwest/native-tls-vendored-no-alpn"]
|
rustls-tls-webpki-roots = ["reqwest/rustls-tls-webpki-roots"]
|
||||||
|
rustls-tls-native-roots = ["reqwest/rustls-tls-native-roots"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
rquickjs.workspace = true
|
||||||
once_cell.workspace = true
|
once_cell.workspace = true
|
||||||
regex.workspace = true
|
regex.workspace = true
|
||||||
|
fancy-regex.workspace = true
|
||||||
thiserror.workspace = true
|
thiserror.workspace = true
|
||||||
url.workspace = true
|
url.workspace = true
|
||||||
reqwest = { workspace = true, features = ["json", "gzip", "brotli"] }
|
reqwest = { workspace = true, features = ["json", "gzip", "brotli"] }
|
||||||
|
|
@ -111,14 +110,13 @@ serde_plain.workspace = true
|
||||||
sha1.workspace = true
|
sha1.workspace = true
|
||||||
rand.workspace = true
|
rand.workspace = true
|
||||||
time.workspace = true
|
time.workspace = true
|
||||||
|
ress.workspace = true
|
||||||
phf.workspace = true
|
phf.workspace = true
|
||||||
data-encoding.workspace = true
|
data-encoding.workspace = true
|
||||||
urlencoding.workspace = true
|
urlencoding.workspace = true
|
||||||
tracing.workspace = true
|
tracing.workspace = true
|
||||||
localzone.workspace = true
|
localzone.workspace = true
|
||||||
double-ended-peekable.workspace = true
|
|
||||||
quick-xml = { workspace = true, optional = true }
|
quick-xml = { workspace = true, optional = true }
|
||||||
rustypipe-deobfuscator = { workspace = true, optional = true }
|
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
rstest.workspace = true
|
rstest.workspace = true
|
||||||
|
|
|
||||||
|
|
@ -103,7 +103,7 @@ async fn main() {
|
||||||
// Create a client
|
// Create a client
|
||||||
let rp = RustyPipe::new();
|
let rp = RustyPipe::new();
|
||||||
// Get the playlist
|
// Get the playlist
|
||||||
let mut playlist = rp
|
let playlist = rp
|
||||||
.query()
|
.query()
|
||||||
.playlist("PL2_OBreMn7FrsiSW0VDZjdq0xqUKkZYHT")
|
.playlist("PL2_OBreMn7FrsiSW0VDZjdq0xqUKkZYHT")
|
||||||
.await
|
.await
|
||||||
|
|
@ -119,7 +119,7 @@ async fn main() {
|
||||||
.videos
|
.videos
|
||||||
.items
|
.items
|
||||||
.iter()
|
.iter()
|
||||||
.for_each(|v| println!("[{}] {} ({}s)", v.id, v.name, v.duration.unwrap_or_default()));
|
.for_each(|v| println!("[{}] {} ({}s)", v.id, v.name, v.length));
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -162,7 +162,7 @@ async fn main() {
|
||||||
.content
|
.content
|
||||||
.items
|
.items
|
||||||
.iter()
|
.iter()
|
||||||
.for_each(|v| println!("[{}] {} ({}s)", v.id, v.name, v.duration.unwrap_or_default()));
|
.for_each(|v| println!("[{}] {} ({}s)", v.id, v.name, v.length.unwrap()));
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
[package]
|
[package]
|
||||||
name = "rustypipe-cli"
|
name = "rustypipe-cli"
|
||||||
version = "0.7.2"
|
version = "0.7.2"
|
||||||
rust-version = "1.89.0"
|
rust-version = "1.70.0"
|
||||||
edition.workspace = true
|
edition.workspace = true
|
||||||
authors.workspace = true
|
authors.workspace = true
|
||||||
license.workspace = true
|
license.workspace = true
|
||||||
|
|
@ -15,33 +15,30 @@ default = ["native-tls"]
|
||||||
timezone = ["dep:time", "dep:time-tz"]
|
timezone = ["dep:time", "dep:time-tz"]
|
||||||
|
|
||||||
# Reqwest TLS options
|
# Reqwest TLS options
|
||||||
default-tls = [
|
native-tls = [
|
||||||
"reqwest/default-tls",
|
"reqwest/native-tls",
|
||||||
"rustypipe/default-tls",
|
"rustypipe/native-tls",
|
||||||
"rustypipe-downloader/default-tls",
|
"rustypipe-downloader/native-tls",
|
||||||
]
|
]
|
||||||
rustls = ["reqwest/rustls", "rustypipe/rustls", "rustypipe-downloader/rustls"]
|
native-tls-alpn = [
|
||||||
rustls-no-provider = [
|
"reqwest/native-tls-alpn",
|
||||||
"reqwest/rustls-no-provider",
|
"rustypipe/native-tls-alpn",
|
||||||
"rustypipe/rustls-no-provider",
|
"rustypipe-downloader/native-tls-alpn",
|
||||||
"rustypipe-downloader/rustls-no-provider",
|
|
||||||
|
|
||||||
]
|
|
||||||
native-tls = ["reqwest/native-tls", "rustypipe/native-tls"]
|
|
||||||
native-tls-no-alpn = [
|
|
||||||
"reqwest/native-tls-no-alpn",
|
|
||||||
"rustypipe/native-tls-no-alpn",
|
|
||||||
"rustypipe-downloader/native-tls-no-alpn",
|
|
||||||
]
|
]
|
||||||
native-tls-vendored = [
|
native-tls-vendored = [
|
||||||
"reqwest/native-tls-vendored",
|
"reqwest/native-tls-vendored",
|
||||||
"rustypipe/native-tls-vendored",
|
"rustypipe/native-tls-vendored",
|
||||||
"rustypipe-downloader/native-tls-vendored",
|
"rustypipe-downloader/native-tls-vendored",
|
||||||
]
|
]
|
||||||
native-tls-vendored-no-alpn = [
|
rustls-tls-webpki-roots = [
|
||||||
"reqwest/native-tls-vendored-no-alpn",
|
"reqwest/rustls-tls-webpki-roots",
|
||||||
"rustypipe/native-tls-vendored-no-alpn",
|
"rustypipe/rustls-tls-webpki-roots",
|
||||||
"rustypipe-downloader/native-tls-vendored-no-alpn",
|
"rustypipe-downloader/rustls-tls-webpki-roots",
|
||||||
|
]
|
||||||
|
rustls-tls-native-roots = [
|
||||||
|
"reqwest/rustls-tls-native-roots",
|
||||||
|
"rustypipe/rustls-tls-native-roots",
|
||||||
|
"rustypipe-downloader/rustls-tls-native-roots",
|
||||||
]
|
]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
|
@ -64,7 +61,7 @@ tracing-subscriber.workspace = true
|
||||||
serde_yaml.workspace = true
|
serde_yaml.workspace = true
|
||||||
dirs.workspace = true
|
dirs.workspace = true
|
||||||
|
|
||||||
anstream = "1.0.0"
|
anstream = "0.6.15"
|
||||||
owo-colors = "4.0.0"
|
owo-colors = "4.0.0"
|
||||||
const_format = "0.2.33"
|
const_format = "0.2.33"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ use std::{
|
||||||
ffi::OsString,
|
ffi::OsString,
|
||||||
path::PathBuf,
|
path::PathBuf,
|
||||||
str::FromStr,
|
str::FromStr,
|
||||||
sync::{Arc, atomic::AtomicUsize},
|
sync::{atomic::AtomicUsize, Arc},
|
||||||
time::Duration,
|
time::Duration,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -18,12 +18,12 @@ use rustypipe::{
|
||||||
cache::FileStorage,
|
cache::FileStorage,
|
||||||
client::{ClientType, RustyPipe},
|
client::{ClientType, RustyPipe},
|
||||||
model::{
|
model::{
|
||||||
ArtistId, AudioCodec, Comment, MusicSearchResult, TrackItem, TrackType, UrlTarget,
|
|
||||||
Verification, YouTubeItem,
|
|
||||||
richtext::{RichText, ToPlaintext},
|
richtext::{RichText, ToPlaintext},
|
||||||
traits::YtEntity,
|
traits::YtEntity,
|
||||||
|
ArtistId, AudioCodec, Comment, MusicSearchResult, TrackItem, TrackType, UrlTarget,
|
||||||
|
Verification, YouTubeItem,
|
||||||
},
|
},
|
||||||
param::{ChannelVideoTab, Country, Language, StreamFilter, search_filter},
|
param::{search_filter, ChannelVideoTab, Country, Language, StreamFilter},
|
||||||
report::FileReporter,
|
report::FileReporter,
|
||||||
};
|
};
|
||||||
use rustypipe_downloader::{
|
use rustypipe_downloader::{
|
||||||
|
|
@ -31,7 +31,7 @@ use rustypipe_downloader::{
|
||||||
};
|
};
|
||||||
use serde::Serialize;
|
use serde::Serialize;
|
||||||
use tracing::level_filters::LevelFilter;
|
use tracing::level_filters::LevelFilter;
|
||||||
use tracing_subscriber::{EnvFilter, fmt::MakeWriter};
|
use tracing_subscriber::{fmt::MakeWriter, EnvFilter};
|
||||||
|
|
||||||
#[derive(Parser)]
|
#[derive(Parser)]
|
||||||
#[clap(
|
#[clap(
|
||||||
|
|
@ -103,13 +103,12 @@ impl DownloadTarget {
|
||||||
fn assert_dir(&self) {
|
fn assert_dir(&self) {
|
||||||
if self.output_file.is_some() {
|
if self.output_file.is_some() {
|
||||||
panic!("Cannot download multiple videos to a single file")
|
panic!("Cannot download multiple videos to a single file")
|
||||||
} else if let Some(template) = &self.template
|
} else if let Some(template) = &self.template {
|
||||||
&& !template.contains("{id}")
|
if !template.contains("{id}") && !template.contains("{title}") {
|
||||||
&& !template.contains("{title}")
|
|
||||||
{
|
|
||||||
panic!("Template must contain {{id}} or {{title}} variables")
|
panic!("Template must contain {{id}} or {{title}} variables")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn apply(&self, q: DownloadQuery) -> DownloadQuery {
|
fn apply(&self, q: DownloadQuery) -> DownloadQuery {
|
||||||
if let Some(output_file) = &self.output_file {
|
if let Some(output_file) = &self.output_file {
|
||||||
|
|
@ -426,7 +425,6 @@ enum ClientTypeArg {
|
||||||
Mobile,
|
Mobile,
|
||||||
Tv,
|
Tv,
|
||||||
Android,
|
Android,
|
||||||
AndroidVr,
|
|
||||||
Ios,
|
Ios,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -493,7 +491,6 @@ impl From<ClientTypeArg> for ClientType {
|
||||||
ClientTypeArg::Mobile => Self::Mobile,
|
ClientTypeArg::Mobile => Self::Mobile,
|
||||||
ClientTypeArg::Tv => Self::Tv,
|
ClientTypeArg::Tv => Self::Tv,
|
||||||
ClientTypeArg::Android => Self::Android,
|
ClientTypeArg::Android => Self::Android,
|
||||||
ClientTypeArg::AndroidVr => Self::AndroidVr,
|
|
||||||
ClientTypeArg::Ios => Self::Ios,
|
ClientTypeArg::Ios => Self::Ios,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -530,9 +527,11 @@ fn print_entities(items: &[impl YtEntity], with_type: bool) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn print_entity(e: &impl YtEntity, with_type: bool) {
|
fn print_entity(e: &impl YtEntity, with_type: bool) {
|
||||||
if with_type && let Some(t) = e.music_item_type() {
|
if with_type {
|
||||||
|
if let Some(t) = e.music_item_type() {
|
||||||
anstream::print!("{: >8} ", format!("{t:?}").dimmed());
|
anstream::print!("{: >8} ", format!("{t:?}").dimmed());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
anstream::print!("[{}] {}", e.id(), e.name().bold());
|
anstream::print!("[{}] {}", e.id(), e.name().bold());
|
||||||
if let Some(n) = e.channel_name() {
|
if let Some(n) = e.channel_name() {
|
||||||
anstream::print!(" - {}", n.cyan());
|
anstream::print!(" - {}", n.cyan());
|
||||||
|
|
@ -692,12 +691,12 @@ fn print_music_search<T: Serialize + YtEntity>(
|
||||||
}
|
}
|
||||||
|
|
||||||
fn print_description(desc: Option<String>) {
|
fn print_description(desc: Option<String>) {
|
||||||
if let Some(desc) = desc
|
if let Some(desc) = desc {
|
||||||
&& !desc.is_empty()
|
if !desc.is_empty() {
|
||||||
{
|
|
||||||
print_h2("Description");
|
print_h2("Description");
|
||||||
println!("{}", desc.trim());
|
println!("{}", desc.trim());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn print_h1(title: &str) {
|
fn print_h1(title: &str) {
|
||||||
|
|
@ -1225,9 +1224,7 @@ async fn run() -> anyhow::Result<()> {
|
||||||
if let Some(id) = artist.radio_id {
|
if let Some(id) = artist.radio_id {
|
||||||
anstream::println!("{} {}", "Radio:".blue(), id);
|
anstream::println!("{} {}", "Radio:".blue(), id);
|
||||||
}
|
}
|
||||||
if let Some(desc) = &artist.description {
|
print_description(artist.description);
|
||||||
print_richtext(desc);
|
|
||||||
}
|
|
||||||
if !artist.albums.is_empty() {
|
if !artist.albums.is_empty() {
|
||||||
print_h2("Albums");
|
print_h2("Albums");
|
||||||
for b in artist.albums {
|
for b in artist.albums {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
[package]
|
[package]
|
||||||
name = "rustypipe-codegen"
|
name = "rustypipe-codegen"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
rust-version = "1.89.0"
|
rust-version = "1.74.0"
|
||||||
edition.workspace = true
|
edition.workspace = true
|
||||||
authors.workspace = true
|
authors.workspace = true
|
||||||
license.workspace = true
|
license.workspace = true
|
||||||
|
|
@ -30,4 +30,4 @@ indicatif.workspace = true
|
||||||
num_enum = "0.7.2"
|
num_enum = "0.7.2"
|
||||||
intl_pluralrules = "7.0.2"
|
intl_pluralrules = "7.0.2"
|
||||||
unic-langid = "0.9.1"
|
unic-langid = "0.9.1"
|
||||||
ordered_hash_map = { version = "0.6.0", features = ["serde"] }
|
ordered_hash_map = { version = "0.4.0", features = ["serde"] }
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,15 @@
|
||||||
use std::collections::BTreeMap;
|
use std::collections::BTreeMap;
|
||||||
|
|
||||||
use anyhow::{Result, bail};
|
use anyhow::{bail, Result};
|
||||||
use futures_util::{StreamExt, stream};
|
use futures_util::{stream, StreamExt};
|
||||||
use indicatif::{ProgressBar, ProgressStyle};
|
use indicatif::{ProgressBar, ProgressStyle};
|
||||||
use num_enum::TryFromPrimitive;
|
use num_enum::TryFromPrimitive;
|
||||||
use once_cell::sync::Lazy;
|
use once_cell::sync::Lazy;
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
use rustypipe::client::{ClientType, RustyPipe, RustyPipeQuery};
|
use rustypipe::client::{ClientType, RustyPipe, RustyPipeQuery};
|
||||||
use rustypipe::model::{MusicItem, YouTubeItem};
|
use rustypipe::model::{MusicItem, YouTubeItem};
|
||||||
use rustypipe::param::ChannelVideoTab;
|
|
||||||
use rustypipe::param::search_filter::{ItemType, SearchFilter};
|
use rustypipe::param::search_filter::{ItemType, SearchFilter};
|
||||||
|
use rustypipe::param::ChannelVideoTab;
|
||||||
use serde::de::IgnoredAny;
|
use serde::de::IgnoredAny;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ use path_macro::path;
|
||||||
use rustypipe::{
|
use rustypipe::{
|
||||||
client::{ClientType, RustyPipe, RustyPipeQuery},
|
client::{ClientType, RustyPipe, RustyPipeQuery},
|
||||||
model::AlbumType,
|
model::AlbumType,
|
||||||
param::{LANGUAGES, Language},
|
param::{Language, LANGUAGES},
|
||||||
};
|
};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use serde_with::rust::deserialize_ignore_any;
|
use serde_with::rust::deserialize_ignore_any;
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ use std::{collections::BTreeMap, fs::File, io::BufReader};
|
||||||
use path_macro::path;
|
use path_macro::path;
|
||||||
use rustypipe::{
|
use rustypipe::{
|
||||||
client::{ClientType, RustyPipe},
|
client::{ClientType, RustyPipe},
|
||||||
param::{LANGUAGES, Language},
|
param::{Language, LANGUAGES},
|
||||||
};
|
};
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use serde_with::rust::deserialize_ignore_any;
|
use serde_with::rust::deserialize_ignore_any;
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ use std::{collections::BTreeMap, fs::File, io::BufReader};
|
||||||
use path_macro::path;
|
use path_macro::path;
|
||||||
use rustypipe::{
|
use rustypipe::{
|
||||||
client::RustyPipe,
|
client::RustyPipe,
|
||||||
param::{LANGUAGES, Language},
|
param::{Language, LANGUAGES},
|
||||||
};
|
};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ use std::{collections::BTreeMap, fs::File, io::BufReader};
|
||||||
use path_macro::path;
|
use path_macro::path;
|
||||||
use rustypipe::{
|
use rustypipe::{
|
||||||
client::RustyPipe,
|
client::RustyPipe,
|
||||||
param::{LANGUAGES, Language},
|
param::{Language, LANGUAGES},
|
||||||
};
|
};
|
||||||
|
|
||||||
use crate::util::{self, DICT_DIR};
|
use crate::util::{self, DICT_DIR};
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,12 @@ use std::{
|
||||||
};
|
};
|
||||||
|
|
||||||
use anyhow::{Context, Result};
|
use anyhow::{Context, Result};
|
||||||
use futures_util::{StreamExt, stream};
|
use futures_util::{stream, StreamExt};
|
||||||
use once_cell::sync::Lazy;
|
use once_cell::sync::Lazy;
|
||||||
use path_macro::path;
|
use path_macro::path;
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
use rustypipe::client::{ClientType, RustyPipe, RustyPipeQuery};
|
use rustypipe::client::{ClientType, RustyPipe, RustyPipeQuery};
|
||||||
use rustypipe::param::{LANGUAGES, Language};
|
use rustypipe::param::{Language, LANGUAGES};
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
|
|
||||||
use crate::model::{Channel, ContinuationResponse};
|
use crate::model::{Channel, ContinuationResponse};
|
||||||
|
|
@ -194,21 +194,21 @@ pub fn write_samples_to_dict() {
|
||||||
x => Some(x),
|
x => Some(x),
|
||||||
});
|
});
|
||||||
|
|
||||||
if let Some(f) = found_token
|
if let Some(f) = found_token {
|
||||||
&& *f != mag
|
if *f != mag {
|
||||||
{
|
|
||||||
*found_token = None;
|
*found_token = None;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
let mut insert_nd_token = |token: String, n: Option<u8>| {
|
let mut insert_nd_token = |token: String, n: Option<u8>| {
|
||||||
let found_token = found_nd_tokens.entry(token).or_insert(n);
|
let found_token = found_nd_tokens.entry(token).or_insert(n);
|
||||||
|
|
||||||
if let Some(f) = found_token
|
if let Some(f) = found_token {
|
||||||
&& Some(*f) != n
|
if Some(*f) != n {
|
||||||
{
|
|
||||||
*found_token = None;
|
*found_token = None;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
for lang in e_langs {
|
for lang in e_langs {
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,12 @@ use std::{
|
||||||
io::BufReader,
|
io::BufReader,
|
||||||
};
|
};
|
||||||
|
|
||||||
use futures_util::{StreamExt, stream};
|
use futures_util::{stream, StreamExt};
|
||||||
use ordered_hash_map::OrderedHashMap;
|
use ordered_hash_map::OrderedHashMap;
|
||||||
use path_macro::path;
|
use path_macro::path;
|
||||||
use rustypipe::{
|
use rustypipe::{
|
||||||
client::RustyPipe,
|
client::RustyPipe,
|
||||||
param::{LANGUAGES, Language},
|
param::{Language, LANGUAGES},
|
||||||
};
|
};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
|
@ -22,8 +22,7 @@ type CollectedDates = BTreeMap<Language, BTreeMap<DateCase, String>>;
|
||||||
enum DateCase {
|
enum DateCase {
|
||||||
Today,
|
Today,
|
||||||
Yesterday,
|
Yesterday,
|
||||||
Ago2,
|
Ago,
|
||||||
AgoN,
|
|
||||||
Jan,
|
Jan,
|
||||||
Feb,
|
Feb,
|
||||||
Mar,
|
Mar,
|
||||||
|
|
@ -62,16 +61,14 @@ enum DateCase {
|
||||||
///
|
///
|
||||||
/// Because the relative dates change with time, the first three playlists
|
/// Because the relative dates change with time, the first three playlists
|
||||||
/// have to checked and eventually changed before running the program.
|
/// have to checked and eventually changed before running the program.
|
||||||
/// To find matching playlists, search for music on YouTube and filter for playlists
|
|
||||||
pub async fn collect_dates(concurrency: usize) {
|
pub async fn collect_dates(concurrency: usize) {
|
||||||
let json_path = path!(*DICT_DIR / "playlist_samples.json");
|
let json_path = path!(*DICT_DIR / "playlist_samples.json");
|
||||||
|
|
||||||
// These are the sample playlists
|
// These are the sample playlists
|
||||||
let cases = [
|
let cases = [
|
||||||
(DateCase::Today, "PL3oW2tjiIxvQ98ZTLhBh5soCbE1mC3uAT"),
|
(DateCase::Today, "PL3oW2tjiIxvQ98ZTLhBh5soCbE1mC3uAT"),
|
||||||
(DateCase::Yesterday, "PLDIoUOhQQPlXzhp-83rECoLaV6BwFtNC4"),
|
(DateCase::Yesterday, "PLGBuKfnErZlCkRRgt06em8nbXvcV5Sae7"),
|
||||||
(DateCase::Ago2, "PLplXQ2cg9B_qrCVd1J_iId5SvP8Kf_BfS"),
|
(DateCase::Ago, "PLAQ7nLSEnhWTEihjeM1I-ToPDJEKfZHZu"),
|
||||||
(DateCase::AgoN, "PLeIL8_T2qvIRtvk6gryaK4Uh-E8Z_YYYR"),
|
|
||||||
(DateCase::Jan, "PL1J-6JOckZtFjcni6Xj1pLYglJp6JCpKD"),
|
(DateCase::Jan, "PL1J-6JOckZtFjcni6Xj1pLYglJp6JCpKD"),
|
||||||
(DateCase::Feb, "PL1J-6JOckZtETrbzwZE7mRIIK6BzWNLAs"),
|
(DateCase::Feb, "PL1J-6JOckZtETrbzwZE7mRIIK6BzWNLAs"),
|
||||||
(DateCase::Mar, "PL1J-6JOckZtG3AVdvBXhMO64mB2k3BtKi"),
|
(DateCase::Mar, "PL1J-6JOckZtG3AVdvBXhMO64mB2k3BtKi"),
|
||||||
|
|
@ -196,7 +193,7 @@ pub fn write_samples_to_dict() {
|
||||||
|
|
||||||
parse(datestr_table.get(&DateCase::Today).unwrap(), 1);
|
parse(datestr_table.get(&DateCase::Today).unwrap(), 1);
|
||||||
parse(datestr_table.get(&DateCase::Yesterday).unwrap(), 2);
|
parse(datestr_table.get(&DateCase::Yesterday).unwrap(), 2);
|
||||||
parse(datestr_table.get(&DateCase::AgoN).unwrap(), 0);
|
parse(datestr_table.get(&DateCase::Ago).unwrap(), 0);
|
||||||
parse(datestr_table.get(&DateCase::Jan).unwrap(), 0);
|
parse(datestr_table.get(&DateCase::Jan).unwrap(), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,11 @@ use std::{
|
||||||
fs::File,
|
fs::File,
|
||||||
};
|
};
|
||||||
|
|
||||||
use futures_util::{StreamExt, stream};
|
use futures_util::{stream, StreamExt};
|
||||||
use path_macro::path;
|
use path_macro::path;
|
||||||
use rustypipe::{
|
use rustypipe::{
|
||||||
client::{RustyPipe, RustyPipeQuery},
|
client::{RustyPipe, RustyPipeQuery},
|
||||||
param::{LANGUAGES, Language},
|
param::{Language, LANGUAGES},
|
||||||
};
|
};
|
||||||
|
|
||||||
use crate::util::DICT_DIR;
|
use crate::util::DICT_DIR;
|
||||||
|
|
|
||||||
|
|
@ -5,11 +5,11 @@ use std::{
|
||||||
};
|
};
|
||||||
|
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use futures_util::{StreamExt, stream};
|
use futures_util::{stream, StreamExt};
|
||||||
use path_macro::path;
|
use path_macro::path;
|
||||||
use rustypipe::{
|
use rustypipe::{
|
||||||
client::{ClientType, RustyPipe, RustyPipeQuery},
|
client::{ClientType, RustyPipe, RustyPipeQuery},
|
||||||
param::{LANGUAGES, Language},
|
param::{Language, LANGUAGES},
|
||||||
};
|
};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
|
|
@ -121,11 +121,11 @@ pub fn parse_video_durations() {
|
||||||
}
|
}
|
||||||
|
|
||||||
let entry = words.entry(w.to_owned()).or_insert(Some(*val));
|
let entry = words.entry(w.to_owned()).or_insert(Some(*val));
|
||||||
if let Some(e) = entry
|
if let Some(e) = entry {
|
||||||
&& e != val
|
if e != val {
|
||||||
{
|
|
||||||
*entry = None;
|
*entry = None;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
let mut val = TimeAgo {
|
let mut val = TimeAgo {
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,8 @@ use rustypipe::{
|
||||||
client::{ClientType, RustyPipe},
|
client::{ClientType, RustyPipe},
|
||||||
model::YouTubeItem,
|
model::YouTubeItem,
|
||||||
param::{
|
param::{
|
||||||
ChannelVideoTab, Country,
|
|
||||||
search_filter::{self, ItemType, SearchFilter},
|
search_filter::{self, ItemType, SearchFilter},
|
||||||
|
ChannelVideoTab, Country,
|
||||||
},
|
},
|
||||||
report::{Report, Reporter},
|
report::{Report, Reporter},
|
||||||
};
|
};
|
||||||
|
|
@ -129,7 +129,7 @@ impl Reporter for TestFileReporter {
|
||||||
};
|
};
|
||||||
|
|
||||||
let data =
|
let data =
|
||||||
serde_json::from_str::<serde_json::Value>(report.http_request.resp_body).unwrap();
|
serde_json::from_str::<serde_json::Value>(&report.http_request.resp_body).unwrap();
|
||||||
let file = File::create(&path).unwrap();
|
let file = File::create(&path).unwrap();
|
||||||
serde_json::to_writer_pretty(file, &data).unwrap();
|
serde_json::to_writer_pretty(file, &data).unwrap();
|
||||||
|
|
||||||
|
|
@ -193,7 +193,6 @@ async fn playlist() {
|
||||||
("long", "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ"),
|
("long", "PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ"),
|
||||||
("nomusic", "PL1J-6JOckZtE_P9Xx8D3b2O6w0idhuKBe"),
|
("nomusic", "PL1J-6JOckZtE_P9Xx8D3b2O6w0idhuKBe"),
|
||||||
("live", "UULVvqRdlKsE5Q8mf8YXbdIJLw"),
|
("live", "UULVvqRdlKsE5Q8mf8YXbdIJLw"),
|
||||||
("featuring", "PLLsua0MU5Y8JZZaDko8Ewv95Tv98A36ee"),
|
|
||||||
] {
|
] {
|
||||||
let json_path = path!(*TESTFILES_DIR / "playlist" / format!("playlist_{name}.json"));
|
let json_path = path!(*TESTFILES_DIR / "playlist" / format!("playlist_{name}.json"));
|
||||||
if json_path.exists() {
|
if json_path.exists() {
|
||||||
|
|
@ -230,7 +229,6 @@ async fn video_details() {
|
||||||
("chapters", "nFDBxBUfE74"),
|
("chapters", "nFDBxBUfE74"),
|
||||||
("live", "86YLFOog4GM"),
|
("live", "86YLFOog4GM"),
|
||||||
("agegate", "HRKu0cvrr_o"),
|
("agegate", "HRKu0cvrr_o"),
|
||||||
("featuring", "Y8JFxS1HlDo"),
|
|
||||||
] {
|
] {
|
||||||
let json_path =
|
let json_path =
|
||||||
path!(*TESTFILES_DIR / "video_details" / format!("video_details_{name}.json"));
|
path!(*TESTFILES_DIR / "video_details" / format!("video_details_{name}.json"));
|
||||||
|
|
|
||||||
|
|
@ -115,16 +115,16 @@ pub(crate) fn entry(lang: Language) -> Entry {
|
||||||
match unit {
|
match unit {
|
||||||
Some(unit) => ta_tokens.entry(
|
Some(unit) => ta_tokens.entry(
|
||||||
txt,
|
txt,
|
||||||
format!("TaToken {{ n: {n}, unit: Some(TimeUnit::{unit:?}) }}"),
|
&format!("TaToken {{ n: {n}, unit: Some(TimeUnit::{unit:?}) }}"),
|
||||||
),
|
),
|
||||||
None => ta_tokens.entry(txt, format!("TaToken {{ n: {n}, unit: None }}")),
|
None => ta_tokens.entry(txt, &format!("TaToken {{ n: {n}, unit: None }}")),
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
// Months
|
// Months
|
||||||
let mut months = phf_codegen::Map::<&str>::new();
|
let mut months = phf_codegen::Map::<&str>::new();
|
||||||
entry.months.iter().for_each(|(txt, n_mon)| {
|
entry.months.iter().for_each(|(txt, n_mon)| {
|
||||||
months.entry(txt, n_mon.to_string());
|
months.entry(txt, &n_mon.to_string());
|
||||||
});
|
});
|
||||||
|
|
||||||
// Timeago(ND) tokens
|
// Timeago(ND) tokens
|
||||||
|
|
@ -134,28 +134,28 @@ pub(crate) fn entry(lang: Language) -> Entry {
|
||||||
match unit {
|
match unit {
|
||||||
Some(unit) => ta_nd_tokens.entry(
|
Some(unit) => ta_nd_tokens.entry(
|
||||||
txt,
|
txt,
|
||||||
format!("TaToken {{ n: {n}, unit: Some(TimeUnit::{unit:?}) }}"),
|
&format!("TaToken {{ n: {n}, unit: Some(TimeUnit::{unit:?}) }}"),
|
||||||
),
|
),
|
||||||
None => ta_nd_tokens.entry(txt, format!("TaToken {{ n: {n}, unit: None }}")),
|
None => ta_nd_tokens.entry(txt, &format!("TaToken {{ n: {n}, unit: None }}")),
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
// Number tokens
|
// Number tokens
|
||||||
let mut number_tokens = phf_codegen::Map::<&str>::new();
|
let mut number_tokens = phf_codegen::Map::<&str>::new();
|
||||||
entry.number_tokens.iter().for_each(|(txt, mag)| {
|
entry.number_tokens.iter().for_each(|(txt, mag)| {
|
||||||
number_tokens.entry(txt, mag.to_string());
|
number_tokens.entry(txt, &mag.to_string());
|
||||||
});
|
});
|
||||||
|
|
||||||
// Number nd tokens
|
// Number nd tokens
|
||||||
let mut number_nd_tokens = phf_codegen::Map::<&str>::new();
|
let mut number_nd_tokens = phf_codegen::Map::<&str>::new();
|
||||||
entry.number_nd_tokens.iter().for_each(|(txt, mag)| {
|
entry.number_nd_tokens.iter().for_each(|(txt, mag)| {
|
||||||
number_nd_tokens.entry(txt, mag.to_string());
|
number_nd_tokens.entry(txt, &mag.to_string());
|
||||||
});
|
});
|
||||||
|
|
||||||
// Album types
|
// Album types
|
||||||
let mut album_types = phf_codegen::Map::<&str>::new();
|
let mut album_types = phf_codegen::Map::<&str>::new();
|
||||||
entry.album_types.iter().for_each(|(txt, album_type)| {
|
entry.album_types.iter().for_each(|(txt, album_type)| {
|
||||||
album_types.entry(txt, format!("AlbumType::{album_type:?}"));
|
album_types.entry(txt, &format!("AlbumType::{album_type:?}"));
|
||||||
});
|
});
|
||||||
|
|
||||||
let code_ta_tokens = &ta_tokens
|
let code_ta_tokens = &ta_tokens
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,11 @@ use std::fs::File;
|
||||||
use std::io::BufReader;
|
use std::io::BufReader;
|
||||||
|
|
||||||
use path_macro::path;
|
use path_macro::path;
|
||||||
use reqwest::Client;
|
|
||||||
use reqwest::header;
|
use reqwest::header;
|
||||||
|
use reqwest::Client;
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use serde_with::VecSkipError;
|
|
||||||
use serde_with::serde_as;
|
use serde_with::serde_as;
|
||||||
|
use serde_with::VecSkipError;
|
||||||
|
|
||||||
use crate::model::Text;
|
use crate::model::Text;
|
||||||
use crate::util::DICT_DIR;
|
use crate::util::DICT_DIR;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#![allow(dead_code)]
|
|
||||||
#![warn(clippy::todo)]
|
#![warn(clippy::todo)]
|
||||||
|
|
||||||
mod abtest;
|
mod abtest;
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ use std::collections::BTreeMap;
|
||||||
use ordered_hash_map::OrderedHashMap;
|
use ordered_hash_map::OrderedHashMap;
|
||||||
use rustypipe::{model::AlbumType, param::Language};
|
use rustypipe::{model::AlbumType, param::Language};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use serde_with::{DefaultOnError, VecSkipError, serde_as};
|
use serde_with::{serde_as, DefaultOnError, VecSkipError};
|
||||||
|
|
||||||
#[derive(Debug, Default, Serialize, Deserialize)]
|
#[derive(Debug, Default, Serialize, Deserialize)]
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
|
|
|
||||||
|
|
@ -140,11 +140,11 @@ where
|
||||||
buf.clear();
|
buf.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !buf.is_empty()
|
if !buf.is_empty() {
|
||||||
&& let Ok(n) = buf.parse::<F>()
|
if let Ok(n) = buf.parse::<F>() {
|
||||||
{
|
|
||||||
numbers.push(n);
|
numbers.push(n);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
numbers
|
numbers
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
[package]
|
|
||||||
name = "rustypipe-deobfuscator"
|
|
||||||
version = "0.1.0"
|
|
||||||
edition.workspace = true
|
|
||||||
authors.workspace = true
|
|
||||||
license.workspace = true
|
|
||||||
repository.workspace = true
|
|
||||||
keywords.workspace = true
|
|
||||||
categories.workspace = true
|
|
||||||
description = "Deobfuscation javascript extractor for RustyPipe"
|
|
||||||
|
|
||||||
[dependencies]
|
|
||||||
javascript-globals = "1.5.0"
|
|
||||||
oxc_allocator = "0.133.0"
|
|
||||||
oxc_ast = "0.133.0"
|
|
||||||
oxc_ast_visit = "0.133.0"
|
|
||||||
oxc_codegen = "0.133.0"
|
|
||||||
oxc_parser = "0.133.0"
|
|
||||||
oxc_semantic = "0.133.0"
|
|
||||||
oxc_span = "0.133.0"
|
|
||||||
oxc_str = "0.133.0"
|
|
||||||
oxc_syntax = "0.133.0"
|
|
||||||
itertools = "0.14.0"
|
|
||||||
rquickjs.workspace = true
|
|
||||||
regex.workspace = true
|
|
||||||
rand.workspace = true
|
|
||||||
log.workspace = true
|
|
||||||
thiserror.workspace = true
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
||||||
use std::borrow::Cow;
|
|
||||||
|
|
||||||
/// Error from
|
|
||||||
#[derive(thiserror::Error, Debug)]
|
|
||||||
#[non_exhaustive]
|
|
||||||
pub enum DeobfExtractionError {
|
|
||||||
#[error("JS parsing error:\n{0}")]
|
|
||||||
Parsing(String),
|
|
||||||
#[error("{0} not found")]
|
|
||||||
NotFound(&'static str),
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Error that occurred during the initialization
|
|
||||||
/// or use of the YouTube URL signature deobfuscator.
|
|
||||||
#[derive(thiserror::Error, Debug)]
|
|
||||||
pub enum DeobfuscationError {
|
|
||||||
/// Error during JavaScript execution
|
|
||||||
#[error("js execution error: {0}")]
|
|
||||||
JavaScript(#[from] rquickjs::Error),
|
|
||||||
/// Unspecified error
|
|
||||||
#[error("error: {0}")]
|
|
||||||
Other(Cow<'static, str>),
|
|
||||||
}
|
|
||||||
|
|
||||||
impl From<rquickjs::CaughtError<'_>> for DeobfuscationError {
|
|
||||||
fn from(value: rquickjs::CaughtError) -> Self {
|
|
||||||
match value {
|
|
||||||
rquickjs::CaughtError::Error(error) => DeobfuscationError::JavaScript(error),
|
|
||||||
_ => DeobfuscationError::Other(value.to_string().into()),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,397 +0,0 @@
|
||||||
use std::collections::HashSet;
|
|
||||||
use std::sync::{Arc, LazyLock};
|
|
||||||
|
|
||||||
use itertools::Itertools;
|
|
||||||
use oxc_allocator::{Allocator, Box as OxBox, FromIn, Vec as OxVec};
|
|
||||||
use oxc_ast::ast::{
|
|
||||||
ArrowFunctionExpression, AssignmentExpression, AssignmentOperator, AssignmentTarget,
|
|
||||||
BindingIdentifier, BindingPattern, Expression, ExpressionStatement, IdentifierName,
|
|
||||||
IdentifierReference, Program, Statement, StaticMemberExpression, VariableDeclaration,
|
|
||||||
VariableDeclarator,
|
|
||||||
};
|
|
||||||
use oxc_semantic::{NodeId, SemanticBuilder};
|
|
||||||
use oxc_span::{GetSpan, SPAN, SourceType};
|
|
||||||
use oxc_str::Ident;
|
|
||||||
use regex::Regex;
|
|
||||||
|
|
||||||
use crate::visitor::{find_function, get_function_length, program_contains_string};
|
|
||||||
|
|
||||||
pub fn makeprog<'a>(statements: OxVec<'a, Statement<'a>>, allocator: &'a Allocator) -> Program<'a> {
|
|
||||||
Program {
|
|
||||||
span: SPAN,
|
|
||||||
node_id: NodeId::DUMMY.into(),
|
|
||||||
scope_id: None.into(),
|
|
||||||
source_text: "",
|
|
||||||
comments: OxVec::new_in(allocator),
|
|
||||||
hashbang: None,
|
|
||||||
directives: OxVec::new_in(allocator),
|
|
||||||
body: statements,
|
|
||||||
source_type: SourceType::script(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn makeprog_expr<'a>(expression: Expression<'a>, allocator: &'a Allocator) -> Program<'a> {
|
|
||||||
let statements = OxVec::from_array_in(
|
|
||||||
[Statement::ExpressionStatement(OxBox::new_in(
|
|
||||||
ExpressionStatement {
|
|
||||||
span: SPAN,
|
|
||||||
node_id: NodeId::DUMMY.into(),
|
|
||||||
expression,
|
|
||||||
},
|
|
||||||
allocator,
|
|
||||||
))],
|
|
||||||
allocator,
|
|
||||||
);
|
|
||||||
makeprog(statements, allocator)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn makeprog_stmt<'a>(statement: Statement<'a>, allocator: &'a Allocator) -> Program<'a> {
|
|
||||||
let statements = OxVec::from_array_in([statement], allocator);
|
|
||||||
makeprog(statements, allocator)
|
|
||||||
}
|
|
||||||
|
|
||||||
fn make_stub_fn<'a>(value: Option<Expression<'a>>, allocator: &'a Allocator) -> Expression<'a> {
|
|
||||||
Expression::ArrowFunctionExpression(OxBox::new_in(
|
|
||||||
ArrowFunctionExpression {
|
|
||||||
node_id: NodeId::DUMMY.into(),
|
|
||||||
span: SPAN,
|
|
||||||
expression: value.is_some(),
|
|
||||||
r#async: false,
|
|
||||||
type_parameters: None,
|
|
||||||
params: OxBox::new_in(
|
|
||||||
oxc_ast::ast::FormalParameters {
|
|
||||||
node_id: NodeId::DUMMY.into(),
|
|
||||||
span: SPAN,
|
|
||||||
kind: oxc_ast::ast::FormalParameterKind::ArrowFormalParameters,
|
|
||||||
items: OxVec::new_in(allocator),
|
|
||||||
rest: None,
|
|
||||||
},
|
|
||||||
allocator,
|
|
||||||
),
|
|
||||||
return_type: None,
|
|
||||||
body: OxBox::new_in(
|
|
||||||
oxc_ast::ast::FunctionBody {
|
|
||||||
node_id: NodeId::DUMMY.into(),
|
|
||||||
span: SPAN,
|
|
||||||
directives: OxVec::new_in(allocator),
|
|
||||||
statements: match value {
|
|
||||||
Some(value) => OxVec::from_array_in(
|
|
||||||
[Statement::ExpressionStatement(OxBox::new_in(
|
|
||||||
ExpressionStatement {
|
|
||||||
node_id: NodeId::DUMMY.into(),
|
|
||||||
span: SPAN,
|
|
||||||
expression: value,
|
|
||||||
},
|
|
||||||
allocator,
|
|
||||||
))],
|
|
||||||
allocator,
|
|
||||||
),
|
|
||||||
None => OxVec::new_in(allocator),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
allocator,
|
|
||||||
),
|
|
||||||
scope_id: None.into(),
|
|
||||||
pure: false,
|
|
||||||
pife: false,
|
|
||||||
},
|
|
||||||
allocator,
|
|
||||||
))
|
|
||||||
}
|
|
||||||
|
|
||||||
fn prog_to_expr<'a>(program: Program<'a>) -> Expression<'a> {
|
|
||||||
let s1 = program.body.into_iter().next().unwrap();
|
|
||||||
if let Statement::ExpressionStatement(expr) = s1 {
|
|
||||||
expr.unbox().expression
|
|
||||||
} else {
|
|
||||||
panic!("invalid statement");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn prog_to_stmt<'a>(program: Program<'a>) -> Statement<'a> {
|
|
||||||
program.body.into_iter().next().unwrap()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn make_declaration<'a>(
|
|
||||||
fname: String,
|
|
||||||
g: bool,
|
|
||||||
value: Expression<'a>,
|
|
||||||
allocator: &'a Allocator,
|
|
||||||
) -> Statement<'a> {
|
|
||||||
let span = value.span();
|
|
||||||
if g {
|
|
||||||
Statement::ExpressionStatement(OxBox::new_in(
|
|
||||||
ExpressionStatement {
|
|
||||||
node_id: NodeId::DUMMY.into(),
|
|
||||||
span,
|
|
||||||
expression: Expression::AssignmentExpression(OxBox::new_in(
|
|
||||||
AssignmentExpression {
|
|
||||||
node_id: NodeId::DUMMY.into(),
|
|
||||||
span: SPAN,
|
|
||||||
operator: AssignmentOperator::Assign,
|
|
||||||
left: AssignmentTarget::StaticMemberExpression(OxBox::new_in(
|
|
||||||
StaticMemberExpression {
|
|
||||||
node_id: NodeId::DUMMY.into(),
|
|
||||||
span: SPAN,
|
|
||||||
object: Expression::Identifier(OxBox::new_in(
|
|
||||||
IdentifierReference {
|
|
||||||
node_id: NodeId::DUMMY.into(),
|
|
||||||
span: SPAN,
|
|
||||||
name: Ident::from_in("g", allocator),
|
|
||||||
reference_id: None.into(),
|
|
||||||
},
|
|
||||||
allocator,
|
|
||||||
)),
|
|
||||||
property: IdentifierName {
|
|
||||||
node_id: NodeId::DUMMY.into(),
|
|
||||||
span: SPAN,
|
|
||||||
name: Ident::from_in(fname, allocator),
|
|
||||||
},
|
|
||||||
optional: false,
|
|
||||||
},
|
|
||||||
allocator,
|
|
||||||
)),
|
|
||||||
right: value,
|
|
||||||
},
|
|
||||||
allocator,
|
|
||||||
)),
|
|
||||||
},
|
|
||||||
allocator,
|
|
||||||
))
|
|
||||||
} else {
|
|
||||||
Statement::VariableDeclaration(OxBox::new_in(
|
|
||||||
VariableDeclaration {
|
|
||||||
node_id: NodeId::DUMMY.into(),
|
|
||||||
span,
|
|
||||||
kind: oxc_ast::ast::VariableDeclarationKind::Const,
|
|
||||||
declarations: OxVec::from_array_in(
|
|
||||||
[VariableDeclarator {
|
|
||||||
node_id: NodeId::DUMMY.into(),
|
|
||||||
span: SPAN,
|
|
||||||
kind: oxc_ast::ast::VariableDeclarationKind::Const,
|
|
||||||
id: BindingPattern::BindingIdentifier(OxBox::new_in(
|
|
||||||
BindingIdentifier {
|
|
||||||
node_id: NodeId::DUMMY.into(),
|
|
||||||
span: SPAN,
|
|
||||||
name: Ident::from_in(fname, allocator),
|
|
||||||
symbol_id: None.into(),
|
|
||||||
},
|
|
||||||
allocator,
|
|
||||||
)),
|
|
||||||
type_annotation: None,
|
|
||||||
init: Some(value),
|
|
||||||
definite: false,
|
|
||||||
}],
|
|
||||||
allocator,
|
|
||||||
),
|
|
||||||
declare: false,
|
|
||||||
},
|
|
||||||
allocator,
|
|
||||||
))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn extract_function_deps<'a>(
|
|
||||||
program: &mut Program<'a>,
|
|
||||||
name: &str,
|
|
||||||
fprog: &Program<'a>,
|
|
||||||
visited: &mut HashSet<String>,
|
|
||||||
extracted: &mut OxVec<'a, Statement<'a>>,
|
|
||||||
source_text: Arc<String>,
|
|
||||||
allocator: &'a Allocator,
|
|
||||||
) {
|
|
||||||
let semantic = SemanticBuilder::new().build(fprog);
|
|
||||||
if !semantic.errors.is_empty() {
|
|
||||||
let reason = semantic
|
|
||||||
.errors
|
|
||||||
.into_iter()
|
|
||||||
.map(|error| format!("{:?}", error.with_source_code(Arc::clone(&source_text))))
|
|
||||||
.join("\n");
|
|
||||||
log::error!("could not evaluate function {name}:\n{reason}");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let symbol_table = semantic.semantic.scoping();
|
|
||||||
|
|
||||||
// extract dependencies
|
|
||||||
static RE_VAR: LazyLock<Regex> = LazyLock::new(|| Regex::new(r"^g\.[\w$]+").unwrap());
|
|
||||||
for (name, reference_id_list) in symbol_table.root_unresolved_references() {
|
|
||||||
if name == "g" {
|
|
||||||
for reference_id in reference_id_list {
|
|
||||||
let reference = symbol_table.get_reference(*reference_id);
|
|
||||||
let node = semantic.semantic.nodes().get_node(reference.node_id());
|
|
||||||
let pos = node.span().start as usize;
|
|
||||||
let found = RE_VAR.captures(&source_text[pos..]).unwrap();
|
|
||||||
let g_name = &found[0];
|
|
||||||
extract_function(
|
|
||||||
program,
|
|
||||||
g_name,
|
|
||||||
visited,
|
|
||||||
extracted,
|
|
||||||
source_text.clone(),
|
|
||||||
allocator,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
} else if !(name.len() > 2
|
|
||||||
&& (javascript_globals::GLOBALS_BUILTIN.contains_key(name)
|
|
||||||
|| javascript_globals::GLOBALS_BROWSER.contains_key(name)))
|
|
||||||
&& name != "arguments"
|
|
||||||
{
|
|
||||||
extract_function(
|
|
||||||
program,
|
|
||||||
name.as_str(),
|
|
||||||
visited,
|
|
||||||
extracted,
|
|
||||||
source_text.clone(),
|
|
||||||
allocator,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn extract_function<'a>(
|
|
||||||
program: &mut Program<'a>,
|
|
||||||
name: &str,
|
|
||||||
visited: &mut HashSet<String>,
|
|
||||||
extracted: &mut OxVec<'a, Statement<'a>>,
|
|
||||||
source_text: Arc<String>,
|
|
||||||
allocator: &'a Allocator,
|
|
||||||
) {
|
|
||||||
let mut found_func = None;
|
|
||||||
|
|
||||||
if visited.contains(name) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
visited.insert(name.to_owned());
|
|
||||||
log::debug!("deobf: extracting function {name}");
|
|
||||||
|
|
||||||
let (fname, g) = match name.strip_prefix("g.") {
|
|
||||||
Some(n) => (n.to_owned(), true),
|
|
||||||
None => (name.to_owned(), false),
|
|
||||||
};
|
|
||||||
|
|
||||||
let (found, overloads) =
|
|
||||||
match find_function(program, fname.to_owned(), g, source_text.clone(), allocator) {
|
|
||||||
Some(f) => f,
|
|
||||||
None => {
|
|
||||||
log::error!("function {name} not found");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
let fprog = makeprog_expr(found, allocator);
|
|
||||||
let flen = get_function_length(&fprog);
|
|
||||||
|
|
||||||
if flen < 3 {
|
|
||||||
match program_contains_string(&fprog, &["yt.logging.", "Trusted Stream URL"]) {
|
|
||||||
Some(0) => {
|
|
||||||
log::debug!("stubbing logging func {name}; len={flen}");
|
|
||||||
found_func = Some(make_stub_fn(None, allocator));
|
|
||||||
}
|
|
||||||
Some(1) => {
|
|
||||||
log::debug!("stubbing url verification func {name}; len={flen}");
|
|
||||||
found_func = Some(make_stub_fn(
|
|
||||||
Some(Expression::BooleanLiteral(OxBox::new_in(
|
|
||||||
oxc_ast::ast::BooleanLiteral {
|
|
||||||
node_id: NodeId::DUMMY.into(),
|
|
||||||
span: SPAN,
|
|
||||||
value: true,
|
|
||||||
},
|
|
||||||
allocator,
|
|
||||||
))),
|
|
||||||
allocator,
|
|
||||||
));
|
|
||||||
}
|
|
||||||
_ => {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let found_func = match found_func {
|
|
||||||
Some(f) => f,
|
|
||||||
None => {
|
|
||||||
extract_function_deps(
|
|
||||||
program,
|
|
||||||
name,
|
|
||||||
&fprog,
|
|
||||||
visited,
|
|
||||||
extracted,
|
|
||||||
source_text.clone(),
|
|
||||||
allocator,
|
|
||||||
);
|
|
||||||
prog_to_expr(fprog)
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
extracted.push(make_declaration(fname, g, found_func, allocator));
|
|
||||||
// extracted.extend(overloads);
|
|
||||||
|
|
||||||
for (stmt, name) in overloads {
|
|
||||||
let olprog = makeprog_stmt(stmt, allocator);
|
|
||||||
extract_function_deps(
|
|
||||||
program,
|
|
||||||
&name,
|
|
||||||
&olprog,
|
|
||||||
visited,
|
|
||||||
extracted,
|
|
||||||
source_text.clone(),
|
|
||||||
allocator,
|
|
||||||
);
|
|
||||||
extracted.push(prog_to_stmt(olprog));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
|
||||||
mod tests {
|
|
||||||
use super::*;
|
|
||||||
|
|
||||||
use oxc_parser::Parser;
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn t_extract_function() {
|
|
||||||
let dyn_assign_js = Arc::new(
|
|
||||||
r#"g.hB=function(){return "Hello"};g.hB[F[65]][F[42]]=function(){return "set"};"#
|
|
||||||
.to_owned(),
|
|
||||||
);
|
|
||||||
|
|
||||||
let allocator = Allocator::new();
|
|
||||||
let ret = Parser::new(&allocator, &dyn_assign_js, SourceType::script()).parse();
|
|
||||||
assert!(ret.errors.is_empty());
|
|
||||||
|
|
||||||
let mut program = ret.program;
|
|
||||||
|
|
||||||
let (found_fn, overloads) = find_function(
|
|
||||||
&mut program,
|
|
||||||
"hB".to_owned(),
|
|
||||||
true,
|
|
||||||
dyn_assign_js.clone(),
|
|
||||||
&allocator,
|
|
||||||
)
|
|
||||||
.unwrap();
|
|
||||||
assert!(found_fn.is_function());
|
|
||||||
assert_eq!(overloads.len(), 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn t_extract_function2() {
|
|
||||||
let dyn_assign_js = Arc::new(
|
|
||||||
r#"g.hB=function(){return "Hello"};g.hB.prototype.set=function(){return "set"};"#
|
|
||||||
.to_owned(),
|
|
||||||
);
|
|
||||||
|
|
||||||
let allocator = Allocator::new();
|
|
||||||
let ret = Parser::new(&allocator, &dyn_assign_js, SourceType::script()).parse();
|
|
||||||
assert!(ret.errors.is_empty());
|
|
||||||
|
|
||||||
let mut program = ret.program;
|
|
||||||
|
|
||||||
let (found_fn, overloads) = find_function(
|
|
||||||
&mut program,
|
|
||||||
"hB".to_owned(),
|
|
||||||
true,
|
|
||||||
dyn_assign_js.clone(),
|
|
||||||
&allocator,
|
|
||||||
)
|
|
||||||
.unwrap();
|
|
||||||
assert!(found_fn.is_function());
|
|
||||||
assert_eq!(overloads.len(), 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,113 +0,0 @@
|
||||||
use std::collections::HashSet;
|
|
||||||
use std::sync::Arc;
|
|
||||||
|
|
||||||
use itertools::Itertools;
|
|
||||||
use oxc_allocator::{Allocator, Box as OxBox, FromIn, Vec as OxVec};
|
|
||||||
use oxc_ast::ast::{
|
|
||||||
BindingIdentifier, BindingPattern, Expression, ObjectExpression, Statement,
|
|
||||||
VariableDeclaration, VariableDeclarator,
|
|
||||||
};
|
|
||||||
use oxc_parser::Parser;
|
|
||||||
use oxc_semantic::NodeId;
|
|
||||||
use oxc_span::{GetSpan, SPAN, SourceType};
|
|
||||||
use oxc_str::Ident;
|
|
||||||
|
|
||||||
use crate::extract::{extract_function, makeprog};
|
|
||||||
use crate::visitor::{find_deobf_fn, get_script_body};
|
|
||||||
|
|
||||||
pub use crate::error::DeobfExtractionError;
|
|
||||||
|
|
||||||
pub const DEOBF_SIG_FUNC_NAME: &str = "deobf_sig";
|
|
||||||
pub const DEOBF_NSIG_FUNC_NAME: &str = "deobf_nsig";
|
|
||||||
|
|
||||||
pub fn extract_deobf_fn(player_js: Arc<String>) -> Result<String, DeobfExtractionError> {
|
|
||||||
let allocator = Allocator::new();
|
|
||||||
let ret = Parser::new(&allocator, &player_js, SourceType::script()).parse();
|
|
||||||
if !ret.errors.is_empty() {
|
|
||||||
let msg = ret
|
|
||||||
.errors
|
|
||||||
.into_iter()
|
|
||||||
.map(|e| e.with_source_code(player_js.clone()))
|
|
||||||
.join("\n");
|
|
||||||
return Err(DeobfExtractionError::Parsing(msg));
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut program = ret.program;
|
|
||||||
let script_body = get_script_body(&mut program, &allocator)
|
|
||||||
.and_then(|fx| fx.body)
|
|
||||||
.ok_or(DeobfExtractionError::NotFound("script body"))?;
|
|
||||||
let mut program = makeprog(script_body.unbox().statements, &allocator);
|
|
||||||
|
|
||||||
let start_fn =
|
|
||||||
find_deobf_fn(&program).ok_or(DeobfExtractionError::NotFound("deobf function"))?;
|
|
||||||
|
|
||||||
let mut visited = HashSet::new();
|
|
||||||
let mut extracted = OxVec::from_array_in(
|
|
||||||
[Statement::VariableDeclaration(OxBox::new_in(
|
|
||||||
VariableDeclaration {
|
|
||||||
node_id: NodeId::DUMMY.into(),
|
|
||||||
span: SPAN,
|
|
||||||
kind: oxc_ast::ast::VariableDeclarationKind::Const,
|
|
||||||
declarations: OxVec::from_array_in(
|
|
||||||
[VariableDeclarator {
|
|
||||||
node_id: NodeId::DUMMY.into(),
|
|
||||||
span: SPAN,
|
|
||||||
kind: oxc_ast::ast::VariableDeclarationKind::Const,
|
|
||||||
id: BindingPattern::BindingIdentifier(OxBox::new_in(
|
|
||||||
BindingIdentifier {
|
|
||||||
node_id: NodeId::DUMMY.into(),
|
|
||||||
span: SPAN,
|
|
||||||
name: Ident::from_in("g", &allocator),
|
|
||||||
symbol_id: None.into(),
|
|
||||||
},
|
|
||||||
&allocator,
|
|
||||||
)),
|
|
||||||
type_annotation: None,
|
|
||||||
init: Some(Expression::ObjectExpression(OxBox::new_in(
|
|
||||||
ObjectExpression {
|
|
||||||
node_id: NodeId::DUMMY.into(),
|
|
||||||
span: SPAN,
|
|
||||||
properties: OxVec::new_in(&allocator),
|
|
||||||
},
|
|
||||||
&allocator,
|
|
||||||
))),
|
|
||||||
definite: false,
|
|
||||||
}],
|
|
||||||
&allocator,
|
|
||||||
),
|
|
||||||
declare: false,
|
|
||||||
},
|
|
||||||
&allocator,
|
|
||||||
))],
|
|
||||||
&allocator,
|
|
||||||
);
|
|
||||||
extract_function(
|
|
||||||
&mut program,
|
|
||||||
&start_fn,
|
|
||||||
&mut visited,
|
|
||||||
&mut extracted,
|
|
||||||
player_js.clone(),
|
|
||||||
&allocator,
|
|
||||||
);
|
|
||||||
|
|
||||||
if extracted.len() < 2 {
|
|
||||||
return Err(DeobfExtractionError::NotFound("nothing extracted"));
|
|
||||||
}
|
|
||||||
|
|
||||||
extracted.sort_by_key(|s| s.span().start);
|
|
||||||
|
|
||||||
let extracted_script = makeprog(extracted, &allocator);
|
|
||||||
|
|
||||||
let printed = oxc_codegen::Codegen::new()
|
|
||||||
.with_options(oxc_codegen::CodegenOptions {
|
|
||||||
minify: true,
|
|
||||||
..Default::default()
|
|
||||||
})
|
|
||||||
.build(&extracted_script);
|
|
||||||
let script = printed.code
|
|
||||||
+ "\nconst solver=({sig,n})=>{const url="
|
|
||||||
+ &start_fn
|
|
||||||
+ r#"("https://youtube.com/watch?v=yt-dlp-wins","s",sig?encodeURIComponent(sig):undefined,);url.set("n",n);const proto=Object.getPrototypeOf(url);const keys=Object.keys(proto).concat(Object.getOwnPropertyNames(proto));for(const key of keys){if(!["constructor","set","get","clone"].includes(key)){url[key]();break}}const s=url.get("s");return{sig:s?decodeURIComponent(s):null,n:url.get("n")??null}};function deobf_sig(sig) {return solver({sig}).sig} function deobf_nsig(n) {return solver({n}).n}"#;
|
|
||||||
|
|
||||||
Ok(script)
|
|
||||||
}
|
|
||||||
|
|
@ -1,114 +0,0 @@
|
||||||
pub mod error;
|
|
||||||
mod extract;
|
|
||||||
mod extract_deobf;
|
|
||||||
mod visitor;
|
|
||||||
|
|
||||||
use crate::error::DeobfuscationError;
|
|
||||||
use crate::extract_deobf::{DEOBF_NSIG_FUNC_NAME, DEOBF_SIG_FUNC_NAME};
|
|
||||||
use rand::RngExt;
|
|
||||||
use rquickjs::{CatchResultExt, Context, Runtime};
|
|
||||||
|
|
||||||
pub use extract_deobf::extract_deobf_fn;
|
|
||||||
|
|
||||||
pub struct Deobfuscator {
|
|
||||||
ctx: Context,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Deobfuscator {
|
|
||||||
/// Instantiate a new deobfuscator with the given data
|
|
||||||
pub fn new(script: &str) -> Result<Self, DeobfuscationError> {
|
|
||||||
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::<(), _>(script.as_bytes(), opts)
|
|
||||||
.catch(&ctx)
|
|
||||||
.map_err(DeobfuscationError::from)
|
|
||||||
})?;
|
|
||||||
let deobf = Self { ctx };
|
|
||||||
deobf.verify()?;
|
|
||||||
Ok(deobf)
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Verify if the deobfuscator successfully processes a random input string
|
|
||||||
fn verify(&self) -> Result<(), DeobfuscationError> {
|
|
||||||
let testinp = generate_content_playback_nonce();
|
|
||||||
|
|
||||||
let res = self.deobfuscate_sig(&testinp)?;
|
|
||||||
if res.is_empty() {
|
|
||||||
return Err(DeobfuscationError::Other(
|
|
||||||
"sig fn returned empty string".into(),
|
|
||||||
));
|
|
||||||
}
|
|
||||||
if res.starts_with("enhanced_except_") || res.ends_with(&testinp) {
|
|
||||||
return Err(DeobfuscationError::Other(
|
|
||||||
"sig fn returned an exception".into(),
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
let res = self.deobfuscate_nsig(&testinp)?;
|
|
||||||
if res.is_empty() {
|
|
||||||
return Err(DeobfuscationError::Other(
|
|
||||||
"nsig fn returned empty string".into(),
|
|
||||||
));
|
|
||||||
}
|
|
||||||
if res.starts_with("enhanced_except_") || res.ends_with(&testinp) {
|
|
||||||
return Err(DeobfuscationError::Other(
|
|
||||||
"nsig fn returned an exception".into(),
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Deobfuscate the `s` parameter from the `signature_cipher` field
|
|
||||||
pub fn deobfuscate_sig(&self, sig: &str) -> Result<String, DeobfuscationError> {
|
|
||||||
let res = self.ctx.with(|ctx| {
|
|
||||||
call_fn(&ctx, DEOBF_SIG_FUNC_NAME, sig)
|
|
||||||
.catch(&ctx)
|
|
||||||
.map_err(DeobfuscationError::from)
|
|
||||||
})?;
|
|
||||||
log::trace!("deobf sig: {sig} -> {res}");
|
|
||||||
Ok(res)
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Deobfuscate the `n` stream URL parameter to circumvent throttling
|
|
||||||
pub fn deobfuscate_nsig(&self, nsig: &str) -> Result<String, DeobfuscationError> {
|
|
||||||
let res = self.ctx.with(|ctx| {
|
|
||||||
call_fn(&ctx, DEOBF_NSIG_FUNC_NAME, nsig)
|
|
||||||
.catch(&ctx)
|
|
||||||
.map_err(DeobfuscationError::from)
|
|
||||||
})?;
|
|
||||||
log::trace!("deobf nsig: {nsig} -> {res}");
|
|
||||||
if res.starts_with("enhanced_except_") || res.ends_with(nsig) {
|
|
||||||
return Err(DeobfuscationError::Other(
|
|
||||||
"nsig fn returned an exception".into(),
|
|
||||||
));
|
|
||||||
}
|
|
||||||
Ok(res)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn call_fn(ctx: &rquickjs::Ctx, fn_name: &str, arg: &str) -> Result<String, rquickjs::Error> {
|
|
||||||
let f: rquickjs::Function = ctx.globals().get(fn_name)?;
|
|
||||||
f.call((arg,))
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Generate a random string with given length and byte charset.
|
|
||||||
fn random_string(charset: &[u8], length: usize) -> String {
|
|
||||||
let mut result = String::with_capacity(length);
|
|
||||||
let mut rng = rand::rng();
|
|
||||||
|
|
||||||
for _ in 0..length {
|
|
||||||
result.push(char::from(charset[rng.random_range(0..charset.len())]));
|
|
||||||
}
|
|
||||||
|
|
||||||
result
|
|
||||||
}
|
|
||||||
|
|
||||||
fn generate_content_playback_nonce() -> String {
|
|
||||||
const CONTENT_PLAYBACK_NONCE_ALPHABET: &[u8; 64] =
|
|
||||||
b"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
|
|
||||||
random_string(CONTENT_PLAYBACK_NONCE_ALPHABET, 16)
|
|
||||||
}
|
|
||||||
|
|
@ -1,352 +0,0 @@
|
||||||
use std::sync::Arc;
|
|
||||||
|
|
||||||
use oxc_allocator::{Allocator, Box as OxBox, TakeIn};
|
|
||||||
use oxc_ast::ast::{
|
|
||||||
AssignmentExpression, AssignmentOperator, AssignmentTarget, BindingPattern, Expression,
|
|
||||||
Function, FunctionBody, Program, Statement, StringLiteral, UnaryOperator, VariableDeclarator,
|
|
||||||
};
|
|
||||||
use oxc_ast_visit::{Visit, VisitMut};
|
|
||||||
use oxc_semantic::NodeId;
|
|
||||||
use oxc_span::GetSpan;
|
|
||||||
|
|
||||||
pub fn get_script_body<'a>(
|
|
||||||
program: &mut Program<'a>,
|
|
||||||
allocator: &'a Allocator,
|
|
||||||
) -> Option<Function<'a>> {
|
|
||||||
let mut ff = BodyFinder {
|
|
||||||
allocator,
|
|
||||||
found_function: None,
|
|
||||||
};
|
|
||||||
ff.visit_program(program);
|
|
||||||
ff.found_function
|
|
||||||
}
|
|
||||||
|
|
||||||
struct BodyFinder<'a> {
|
|
||||||
allocator: &'a Allocator,
|
|
||||||
found_function: Option<Function<'a>>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<'a> VisitMut<'a> for BodyFinder<'a> {
|
|
||||||
fn visit_function(&mut self, func: &mut Function<'a>, _flags: oxc_semantic::ScopeFlags) {
|
|
||||||
if self.found_function.is_none() && func.body.is_some() {
|
|
||||||
let params = &func.params.items;
|
|
||||||
let has_single_g = params.len() == 1
|
|
||||||
&& matches!(
|
|
||||||
¶ms[0].pattern,
|
|
||||||
BindingPattern::BindingIdentifier(id)
|
|
||||||
if id.name == "g"
|
|
||||||
);
|
|
||||||
if has_single_g {
|
|
||||||
self.found_function = Some(func.take_in(self.allocator));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn find_function<'a>(
|
|
||||||
program: &mut Program<'a>,
|
|
||||||
name: String,
|
|
||||||
g: bool,
|
|
||||||
source_text: Arc<String>,
|
|
||||||
allocator: &'a Allocator,
|
|
||||||
) -> Option<(Expression<'a>, Vec<(Statement<'a>, String)>)> {
|
|
||||||
let mut ff = FunctionFinder {
|
|
||||||
allocator,
|
|
||||||
name,
|
|
||||||
g,
|
|
||||||
source_text,
|
|
||||||
found: None,
|
|
||||||
overloads: Vec::new(),
|
|
||||||
};
|
|
||||||
ff.visit_program(program);
|
|
||||||
ff.found.map(|f| (f, ff.overloads))
|
|
||||||
}
|
|
||||||
|
|
||||||
struct FunctionFinder<'a> {
|
|
||||||
allocator: &'a Allocator,
|
|
||||||
name: String,
|
|
||||||
g: bool,
|
|
||||||
source_text: Arc<String>,
|
|
||||||
found: Option<Expression<'a>>,
|
|
||||||
overloads: Vec<(Statement<'a>, String)>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<'a> FunctionFinder<'a> {
|
|
||||||
fn assignment_target_matches(&self, at: &AssignmentTarget<'a>, i: usize) -> usize {
|
|
||||||
match at {
|
|
||||||
// x = fn
|
|
||||||
AssignmentTarget::AssignmentTargetIdentifier(id) => {
|
|
||||||
self.id_matches(id.name.as_str(), i)
|
|
||||||
}
|
|
||||||
// g.hB = fn
|
|
||||||
AssignmentTarget::StaticMemberExpression(static_member_expression) => {
|
|
||||||
// First level must be g.
|
|
||||||
if let Expression::Identifier(oid) = &static_member_expression.object
|
|
||||||
&& self.g
|
|
||||||
&& oid.name == "g"
|
|
||||||
&& static_member_expression.property.name.as_str() == self.name
|
|
||||||
{
|
|
||||||
return i + 1;
|
|
||||||
}
|
|
||||||
self.expression_matches(&static_member_expression.object, i)
|
|
||||||
}
|
|
||||||
// g.hB[F[65]][F[22]] = fn
|
|
||||||
// CME{object: CME{object: SME{object: g, property: hB}, expression: CME{object: F, expression: 65}}, expression: CME{object: F, expression: 22}}
|
|
||||||
// hB[F[65]][F[22]] = fn
|
|
||||||
// CME{object: CME{object:hB, expression: CME{object: F, expression: 65}}, expression: CME{object: F, expression: 22}}
|
|
||||||
AssignmentTarget::ComputedMemberExpression(id) => {
|
|
||||||
self.expression_matches(&id.object, i + 1)
|
|
||||||
}
|
|
||||||
_ => 0,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn expression_matches(&self, exp: &Expression<'a>, i: usize) -> usize {
|
|
||||||
match exp {
|
|
||||||
Expression::ComputedMemberExpression(computed_member_expression) => {
|
|
||||||
self.expression_matches(&computed_member_expression.object, i + 1)
|
|
||||||
}
|
|
||||||
Expression::StaticMemberExpression(static_member_expression) => {
|
|
||||||
if let Expression::Identifier(oid) = &static_member_expression.object
|
|
||||||
&& self.g
|
|
||||||
&& oid.name == "g"
|
|
||||||
&& static_member_expression.property.name.as_str() == self.name
|
|
||||||
{
|
|
||||||
return i + 1;
|
|
||||||
}
|
|
||||||
self.expression_matches(&static_member_expression.object, i + 1)
|
|
||||||
}
|
|
||||||
Expression::Identifier(id) => self.id_matches(id.name.as_str(), i),
|
|
||||||
_ => 0,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn id_matches(&self, id: &str, i: usize) -> usize {
|
|
||||||
if !self.g && id == self.name { i + 1 } else { 0 }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<'a> VisitMut<'a> for FunctionFinder<'a> {
|
|
||||||
fn visit_assignment_expression(&mut self, it: &mut AssignmentExpression<'a>) {
|
|
||||||
let depth = self.assignment_target_matches(&it.left, 0);
|
|
||||||
if depth == 1 {
|
|
||||||
if self.found.is_none() {
|
|
||||||
self.found = Some(it.right.take_in(self.allocator));
|
|
||||||
}
|
|
||||||
} else if depth > 1 {
|
|
||||||
let stmt = Statement::ExpressionStatement(OxBox::new_in(
|
|
||||||
oxc_ast::ast::ExpressionStatement {
|
|
||||||
span: it.span,
|
|
||||||
node_id: NodeId::DUMMY.into(),
|
|
||||||
expression: Expression::AssignmentExpression(it.take_in_box(self.allocator)),
|
|
||||||
},
|
|
||||||
self.allocator,
|
|
||||||
));
|
|
||||||
|
|
||||||
self.overloads.push((
|
|
||||||
stmt,
|
|
||||||
it.left.span().source_text(&self.source_text).to_owned(),
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn visit_variable_declarator(&mut self, it: &mut VariableDeclarator<'a>) {
|
|
||||||
if !self.g
|
|
||||||
&& self.found.is_none()
|
|
||||||
&& let BindingPattern::BindingIdentifier(ident) = &it.id
|
|
||||||
&& ident.name.as_str() == self.name
|
|
||||||
&& let Some(init) = &mut it.init
|
|
||||||
{
|
|
||||||
self.found = Some(init.take_in(self.allocator));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn program_contains_string(program: &Program<'_>, strings: &[&str]) -> Option<u32> {
|
|
||||||
let mut sf = StringFinder {
|
|
||||||
strings,
|
|
||||||
found: None,
|
|
||||||
};
|
|
||||||
sf.visit_program(program);
|
|
||||||
sf.found
|
|
||||||
}
|
|
||||||
|
|
||||||
struct StringFinder<'a> {
|
|
||||||
strings: &'a [&'a str],
|
|
||||||
found: Option<u32>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<'a> Visit<'a> for StringFinder<'a> {
|
|
||||||
fn visit_string_literal(&mut self, it: &StringLiteral<'a>) {
|
|
||||||
if self.found.is_none() {
|
|
||||||
self.found = self
|
|
||||||
.strings
|
|
||||||
.iter()
|
|
||||||
.position(|s| it.value.starts_with(s))
|
|
||||||
.map(|x| x as u32);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn get_function_length(program: &Program<'_>) -> usize {
|
|
||||||
let mut fl = FunctionLength { len: 0 };
|
|
||||||
fl.visit_program(program);
|
|
||||||
fl.len
|
|
||||||
}
|
|
||||||
|
|
||||||
struct FunctionLength {
|
|
||||||
len: usize,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<'a> Visit<'a> for FunctionLength {
|
|
||||||
fn visit_function_body(&mut self, it: &FunctionBody<'a>) {
|
|
||||||
self.len += it.statements.len();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn find_deobf_fn<'a>(program: &Program<'a>) -> Option<String> {
|
|
||||||
let mut df = DeobfFinder { found: None };
|
|
||||||
df.visit_program(program);
|
|
||||||
df.found
|
|
||||||
}
|
|
||||||
|
|
||||||
struct DeobfFinder {
|
|
||||||
found: Option<String>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl DeobfFinder {
|
|
||||||
/// p0 = new g.Hd(p0, !0);
|
|
||||||
fn is_url_creation(stmt: &Statement<'_>, p0: &str) -> bool {
|
|
||||||
if let Statement::ExpressionStatement(expr) = stmt
|
|
||||||
&& let Expression::AssignmentExpression(ae) = &expr.expression
|
|
||||||
&& ae.operator == AssignmentOperator::Assign
|
|
||||||
&& ae.left.get_identifier_name().is_some_and(|n| n == p0)
|
|
||||||
&& let Expression::NewExpression(ne) = &ae.right
|
|
||||||
&& let Expression::StaticMemberExpression(gne) = &ne.callee
|
|
||||||
&& gne
|
|
||||||
.object
|
|
||||||
.get_identifier_reference()
|
|
||||||
.is_some_and(|r| r.name == "g")
|
|
||||||
&& ne.arguments.len() == 2
|
|
||||||
{
|
|
||||||
let a0 = &ne.arguments[0];
|
|
||||||
let a1 = &ne.arguments[1];
|
|
||||||
|
|
||||||
if a0.as_expression().is_some_and(|x| x.is_specific_id(p0))
|
|
||||||
&& let Some(Expression::UnaryExpression(ue)) = a1.as_expression()
|
|
||||||
&& ue.operator == UnaryOperator::LogicalNot
|
|
||||||
&& ue.argument.is_number_0()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
false
|
|
||||||
}
|
|
||||||
|
|
||||||
/// p0.set("alr", "yes");
|
|
||||||
fn is_set_alr_yes(stmt: &Statement<'_>, p0: &str) -> bool {
|
|
||||||
if let Statement::ExpressionStatement(expr) = stmt
|
|
||||||
&& let Expression::CallExpression(call) = &expr.expression
|
|
||||||
&& let Some(callee) = call.callee.as_member_expression()
|
|
||||||
&& callee.object().is_specific_id(p0)
|
|
||||||
{
|
|
||||||
if callee.static_property_name().is_some_and(|pn| pn != "set") {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if call.arguments.len() == 2
|
|
||||||
&& let (Some(a0), Some(a1)) = (
|
|
||||||
call.arguments[0].as_expression(),
|
|
||||||
call.arguments[1].as_expression(),
|
|
||||||
)
|
|
||||||
{
|
|
||||||
// accept string literal "alr" or any expression in case this gets obfuscated
|
|
||||||
if a0.is_string_literal() && !a0.is_specific_string_literal("alr") {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if a1.is_string_literal() && !a1.is_specific_string_literal("yes") {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
false
|
|
||||||
}
|
|
||||||
|
|
||||||
fn is_deobf_function(expression: &Expression<'_>) -> bool {
|
|
||||||
let res = match expression {
|
|
||||||
Expression::FunctionExpression(f) => {
|
|
||||||
if f.r#async {
|
|
||||||
None
|
|
||||||
} else {
|
|
||||||
f.body.as_ref().map(|b| (b, f.params.items.first()))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Expression::ArrowFunctionExpression(f) => {
|
|
||||||
if f.r#async {
|
|
||||||
None
|
|
||||||
} else {
|
|
||||||
Some((&f.body, f.params.items.first()))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_ => None,
|
|
||||||
};
|
|
||||||
|
|
||||||
res.is_some_and(|(body, p0)| {
|
|
||||||
if let Some(p0) = p0
|
|
||||||
&& let BindingPattern::BindingIdentifier(p0_id) = &p0.pattern
|
|
||||||
{
|
|
||||||
let p0n = p0_id.name.as_str();
|
|
||||||
if !(4..11).contains(&body.statements.len()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if let Some(i_url_creation) = body
|
|
||||||
.statements
|
|
||||||
.iter()
|
|
||||||
.position(|s| Self::is_url_creation(s, p0n))
|
|
||||||
{
|
|
||||||
return body
|
|
||||||
.statements
|
|
||||||
.iter()
|
|
||||||
.skip(i_url_creation + 1)
|
|
||||||
.any(|s| Self::is_set_alr_yes(s, p0n));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
false
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<'a> Visit<'a> for DeobfFinder {
|
|
||||||
fn visit_assignment_expression(&mut self, it: &AssignmentExpression<'a>) {
|
|
||||||
if self.found.is_none()
|
|
||||||
&& matches!(
|
|
||||||
&it.left,
|
|
||||||
AssignmentTarget::AssignmentTargetIdentifier(_)
|
|
||||||
| AssignmentTarget::StaticMemberExpression(_)
|
|
||||||
)
|
|
||||||
&& Self::is_deobf_function(&it.right)
|
|
||||||
{
|
|
||||||
match &it.left {
|
|
||||||
AssignmentTarget::AssignmentTargetIdentifier(id) => {
|
|
||||||
self.found = Some(id.name.to_string());
|
|
||||||
}
|
|
||||||
AssignmentTarget::StaticMemberExpression(id) => {
|
|
||||||
if let Some(idr) = id.object.get_identifier_reference() {
|
|
||||||
self.found = Some(format!("{}.{}", idr.name, id.property.name))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_ => {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn visit_variable_declarator(&mut self, it: &VariableDeclarator<'a>) {
|
|
||||||
if self.found.is_none()
|
|
||||||
&& let Some(init) = &it.init
|
|
||||||
&& Self::is_deobf_function(init)
|
|
||||||
&& let Some(ident) = it.id.get_identifier_name()
|
|
||||||
{
|
|
||||||
self.found = Some(ident.to_string());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
[package]
|
[package]
|
||||||
name = "rustypipe-downloader"
|
name = "rustypipe-downloader"
|
||||||
version = "0.3.1"
|
version = "0.3.1"
|
||||||
rust-version = "1.89.0"
|
rust-version = "1.67.1"
|
||||||
edition.workspace = true
|
edition.workspace = true
|
||||||
authors.workspace = true
|
authors.workspace = true
|
||||||
license.workspace = true
|
license.workspace = true
|
||||||
|
|
@ -15,23 +15,19 @@ default = ["default-tls"]
|
||||||
|
|
||||||
# Reqwest TLS options
|
# Reqwest TLS options
|
||||||
default-tls = ["reqwest/default-tls", "rustypipe/default-tls"]
|
default-tls = ["reqwest/default-tls", "rustypipe/default-tls"]
|
||||||
rustls = ["reqwest/rustls", "rustypipe/rustls"]
|
|
||||||
rustls-no-provider = [
|
|
||||||
"reqwest/rustls-no-provider",
|
|
||||||
"rustypipe/rustls-no-provider",
|
|
||||||
]
|
|
||||||
native-tls = ["reqwest/native-tls", "rustypipe/native-tls"]
|
native-tls = ["reqwest/native-tls", "rustypipe/native-tls"]
|
||||||
native-tls-no-alpn = [
|
native-tls-alpn = ["reqwest/native-tls-alpn", "rustypipe/native-tls-alpn"]
|
||||||
"reqwest/native-tls-no-alpn",
|
|
||||||
"rustypipe/native-tls-no-alpn",
|
|
||||||
]
|
|
||||||
native-tls-vendored = [
|
native-tls-vendored = [
|
||||||
"reqwest/native-tls-vendored",
|
"reqwest/native-tls-vendored",
|
||||||
"rustypipe/native-tls-vendored",
|
"rustypipe/native-tls-vendored",
|
||||||
]
|
]
|
||||||
native-tls-vendored-no-alpn = [
|
rustls-tls-webpki-roots = [
|
||||||
"reqwest/native-tls-vendored-no-alpn",
|
"reqwest/rustls-tls-webpki-roots",
|
||||||
"rustypipe/native-tls-vendored-no-alpn",
|
"rustypipe/rustls-tls-webpki-roots",
|
||||||
|
]
|
||||||
|
rustls-tls-native-roots = [
|
||||||
|
"reqwest/rustls-tls-native-roots",
|
||||||
|
"rustypipe/rustls-tls-native-roots",
|
||||||
]
|
]
|
||||||
|
|
||||||
audiotag = ["dep:lofty", "dep:image", "dep:smartcrop2"]
|
audiotag = ["dep:lofty", "dep:image", "dep:smartcrop2"]
|
||||||
|
|
@ -49,7 +45,7 @@ indicatif = { workspace = true, optional = true }
|
||||||
filenamify.workspace = true
|
filenamify.workspace = true
|
||||||
tracing.workspace = true
|
tracing.workspace = true
|
||||||
time.workspace = true
|
time.workspace = true
|
||||||
lofty = { version = "0.24.0", optional = true }
|
lofty = { version = "0.22.0", optional = true }
|
||||||
image = { version = "0.25.0", optional = true, default-features = false, features = [
|
image = { version = "0.25.0", optional = true, default-features = false, features = [
|
||||||
"rayon",
|
"rayon",
|
||||||
"jpeg",
|
"jpeg",
|
||||||
|
|
|
||||||
|
|
@ -17,14 +17,14 @@ use std::{
|
||||||
|
|
||||||
use futures_util::stream::{self, StreamExt, TryStreamExt};
|
use futures_util::stream::{self, StreamExt, TryStreamExt};
|
||||||
use once_cell::sync::Lazy;
|
use once_cell::sync::Lazy;
|
||||||
use rand::RngExt;
|
use rand::Rng;
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
use reqwest::{Client, StatusCode, Url, header};
|
use reqwest::{header, Client, StatusCode, Url};
|
||||||
use rustypipe::{
|
use rustypipe::{
|
||||||
client::{ClientType, RustyPipe},
|
client::{ClientType, RustyPipe},
|
||||||
model::{
|
model::{
|
||||||
|
traits::{FileFormat, YtEntity},
|
||||||
AudioCodec, TrackItem, VideoCodec, VideoPlayer,
|
AudioCodec, TrackItem, VideoCodec, VideoPlayer,
|
||||||
traits::{FileFormat, YtEntity, YtStream},
|
|
||||||
},
|
},
|
||||||
param::StreamFilter,
|
param::StreamFilter,
|
||||||
};
|
};
|
||||||
|
|
@ -40,7 +40,7 @@ use indicatif::{MultiProgress, ProgressBar, ProgressStyle};
|
||||||
#[cfg(feature = "audiotag")]
|
#[cfg(feature = "audiotag")]
|
||||||
use lofty::{config::WriteOptions, picture::Picture, prelude::*, tag::Tag};
|
use lofty::{config::WriteOptions, picture::Picture, prelude::*, tag::Tag};
|
||||||
#[cfg(feature = "audiotag")]
|
#[cfg(feature = "audiotag")]
|
||||||
use rustypipe::model::{VideoDetails, VideoPlayerDetails, richtext::ToPlaintext};
|
use rustypipe::model::{richtext::ToPlaintext, VideoDetails, VideoPlayerDetails};
|
||||||
#[cfg(feature = "audiotag")]
|
#[cfg(feature = "audiotag")]
|
||||||
use time::{Date, OffsetDateTime};
|
use time::{Date, OffsetDateTime};
|
||||||
|
|
||||||
|
|
@ -742,9 +742,8 @@ impl DownloadQuery {
|
||||||
);
|
);
|
||||||
|
|
||||||
// If the last download failed, try another client if possible
|
// If the last download failed, try another client if possible
|
||||||
if let Some(failed_client) = failed_client
|
if let Some(failed_client) = failed_client {
|
||||||
&& let Some(pos) = client_types.iter().position(|c| c == &failed_client)
|
if let Some(pos) = client_types.iter().position(|c| c == &failed_client) {
|
||||||
{
|
|
||||||
let p2 = pos + 1;
|
let p2 = pos + 1;
|
||||||
if p2 < client_types.len() {
|
if p2 < client_types.len() {
|
||||||
let mut v = client_types[p2..].to_vec();
|
let mut v = client_types[p2..].to_vec();
|
||||||
|
|
@ -752,6 +751,7 @@ impl DownloadQuery {
|
||||||
client_types = v.into();
|
client_types = v.into();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let player_data = q.player_from_clients(&self.video.id, &client_types).await?;
|
let player_data = q.player_from_clients(&self.video.id, &client_types).await?;
|
||||||
let user_agent = q.user_agent(player_data.client_type);
|
let user_agent = q.user_agent(player_data.client_type);
|
||||||
|
|
@ -812,22 +812,18 @@ impl DownloadQuery {
|
||||||
|
|
||||||
let mut downloads: Vec<StreamDownload> = Vec::new();
|
let mut downloads: Vec<StreamDownload> = Vec::new();
|
||||||
|
|
||||||
if let Some(v) = video
|
if let Some(v) = video {
|
||||||
&& let Some(url) = v.url()
|
|
||||||
{
|
|
||||||
downloads.push(StreamDownload {
|
downloads.push(StreamDownload {
|
||||||
file: output_path.with_extension(format!("video{}", v.format.extension())),
|
file: output_path.with_extension(format!("video{}", v.format.extension())),
|
||||||
url: url.to_owned(),
|
url: v.url.clone(),
|
||||||
video_codec: Some(v.codec),
|
video_codec: Some(v.codec),
|
||||||
audio_codec: None,
|
audio_codec: None,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if let Some(a) = audio
|
if let Some(a) = audio {
|
||||||
&& let Some(url) = a.url()
|
|
||||||
{
|
|
||||||
downloads.push(StreamDownload {
|
downloads.push(StreamDownload {
|
||||||
file: output_path.with_extension(format!("audio{}", a.format.extension())),
|
file: output_path.with_extension(format!("audio{}", a.format.extension())),
|
||||||
url: url.to_owned(),
|
url: a.url.clone(),
|
||||||
video_codec: None,
|
video_codec: None,
|
||||||
audio_codec: Some(a.codec),
|
audio_codec: Some(a.codec),
|
||||||
});
|
});
|
||||||
|
|
@ -846,9 +842,8 @@ impl DownloadQuery {
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
.map_err(|e| {
|
.map_err(|e| {
|
||||||
if let DownloadError::Http(e) = &e
|
if let DownloadError::Http(e) = &e {
|
||||||
&& e.status() == Some(StatusCode::FORBIDDEN)
|
if e.status() == Some(StatusCode::FORBIDDEN) {
|
||||||
{
|
|
||||||
// 403 errors may occur due to bad visitor data IDs
|
// 403 errors may occur due to bad visitor data IDs
|
||||||
if let Some(vd) = &player_data.visitor_data {
|
if let Some(vd) = &player_data.visitor_data {
|
||||||
q.remove_visitor_data(vd);
|
q.remove_visitor_data(vd);
|
||||||
|
|
@ -858,6 +853,7 @@ impl DownloadQuery {
|
||||||
visitor_data: player_data.visitor_data.clone(),
|
visitor_data: player_data.visitor_data.clone(),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
}
|
||||||
e
|
e
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
|
|
@ -959,11 +955,11 @@ impl DownloadQuery {
|
||||||
.unwrap_or(details.channel.name),
|
.unwrap_or(details.channel.name),
|
||||||
);
|
);
|
||||||
tag.set_title(track.name);
|
tag.set_title(track.name);
|
||||||
if let Some(release_date) = extract_yt_release_date(&description, details.publish_date)
|
if let Some(release_date) = extract_yt_release_date(&description, details.publish_date) {
|
||||||
&& let Ok(date_str) = release_date.format(&YMD_FORMAT)
|
if let Ok(date_str) = release_date.format(&YMD_FORMAT) {
|
||||||
{
|
|
||||||
tag.insert_text(ItemKey::RecordingDate, date_str);
|
tag.insert_text(ItemKey::RecordingDate, date_str);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
tag.set_comment(description);
|
tag.set_comment(description);
|
||||||
if let Some(track_nr) = track_nr {
|
if let Some(track_nr) = track_nr {
|
||||||
tag.set_track(track_nr.into());
|
tag.set_track(track_nr.into());
|
||||||
|
|
@ -992,8 +988,8 @@ impl DownloadQuery {
|
||||||
if let Some(thumbnail) = thumbnail {
|
if let Some(thumbnail) = thumbnail {
|
||||||
// Attempt to get the higher resolution, uncropped maxresdefault.jpg thumbnail if available
|
// Attempt to get the higher resolution, uncropped maxresdefault.jpg thumbnail if available
|
||||||
let mut resp = None;
|
let mut resp = None;
|
||||||
if thumbnail.height != thumbnail.width
|
if thumbnail.height != thumbnail.width {
|
||||||
&& let Ok(x) = self
|
if let Ok(x) = self
|
||||||
.dl
|
.dl
|
||||||
.i
|
.i
|
||||||
.http
|
.http
|
||||||
|
|
@ -1007,6 +1003,7 @@ impl DownloadQuery {
|
||||||
{
|
{
|
||||||
resp = Some(x);
|
resp = Some(x);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let resp = match resp {
|
let resp = match resp {
|
||||||
Some(resp) => resp,
|
Some(resp) => resp,
|
||||||
|
|
@ -1212,21 +1209,19 @@ async fn download_single_file(
|
||||||
.open(&output_path_tmp)
|
.open(&output_path_tmp)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
let res = match size {
|
let res = if is_gvideo && size.is_some() {
|
||||||
Some(size) if is_gvideo => {
|
|
||||||
download_chunks_by_param(
|
download_chunks_by_param(
|
||||||
http,
|
http,
|
||||||
&mut file,
|
&mut file,
|
||||||
url,
|
url,
|
||||||
size,
|
size.unwrap(),
|
||||||
offset,
|
offset,
|
||||||
user_agent,
|
user_agent,
|
||||||
#[cfg(feature = "indicatif")]
|
#[cfg(feature = "indicatif")]
|
||||||
pb,
|
pb,
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
}
|
} else {
|
||||||
_ => {
|
|
||||||
download_chunks_by_header(
|
download_chunks_by_header(
|
||||||
http,
|
http,
|
||||||
&mut file,
|
&mut file,
|
||||||
|
|
@ -1238,7 +1233,6 @@ async fn download_single_file(
|
||||||
pb,
|
pb,
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
drop(file);
|
drop(file);
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,6 @@ fn rp() -> RustyPipe {
|
||||||
|
|
||||||
#[rstest]
|
#[rstest]
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
#[ignore]
|
|
||||||
async fn download_video(rp: RustyPipe) {
|
async fn download_video(rp: RustyPipe) {
|
||||||
let td = TempDir::default();
|
let td = TempDir::default();
|
||||||
let td_path = td.to_path_buf();
|
let td_path = td.to_path_buf();
|
||||||
|
|
@ -44,7 +43,6 @@ async fn download_video(rp: RustyPipe) {
|
||||||
|
|
||||||
#[rstest]
|
#[rstest]
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
#[ignore]
|
|
||||||
async fn download_music(rp: RustyPipe) {
|
async fn download_music(rp: RustyPipe) {
|
||||||
let td = TempDir::default();
|
let td = TempDir::default();
|
||||||
let td_path = td.to_path_buf();
|
let td_path = td.to_path_buf();
|
||||||
|
|
|
||||||
33
rbody.json
33
rbody.json
|
|
@ -1,33 +0,0 @@
|
||||||
{
|
|
||||||
"videoId": "83C3TZ4Zm_o",
|
|
||||||
"context": {
|
|
||||||
"client": {
|
|
||||||
"hl": "de",
|
|
||||||
"gl": "DE",
|
|
||||||
"deviceMake": "Samsung",
|
|
||||||
"deviceModel": "SmartTV",
|
|
||||||
"visitorData": "CgtTT3hKd0FIZVVOOCjdoqfRBjIKCgJERRIEEgAgMGLfAgrcAjE5LllUPW9PQUdYdlRSblFFYk1oR3Q4clpLSVVlVWtkR1UyemU1VDd6aWJRRmpsVGtSbFhhd3M2dVJjaWdFbE5MZmpxYkdFdlpDcDhKVjdGWDNacFZMQ1lnaFRHdGdNSVRuS0ZKa2ZQckxwT19vTmlQYjNUMEpobmN6NmRFRnQ3SWZtVVJzZjEzWkh4Z2QxZVhtb04yUHRMM2ZsS1FtQmJNakluRDJxc3hMQWtZeXhJWUo4d1RhQl9vV21hV0cxRTYtSUI5TUFMWGdpS0hCeVc1VDhQUUdack1SN3JzN2UtZnVYbTBMVGUwZEJyeWF4SjBxOWJfQnlyQnZ6UTZHYUE1WW0tT28ta19DbHc0bUxWSnlnOGFLdHQ1OG5wV1k5T3RDbGRLMU5XMGNLWkRBRk9mOVZZUjViWnNKX3p0TWE4Q1VrUTdkdmY3cEV2Z2hXMnRpY0RRN3hfeEtXQQ%3D%3D",
|
|
||||||
"clientName": "TVHTML5",
|
|
||||||
"clientVersion": "7.20260609.06.00",
|
|
||||||
"osName": "Tizen",
|
|
||||||
"osVersion": "5.0",
|
|
||||||
"originalUrl": "https://www.youtube.com/tv",
|
|
||||||
"platform": "TV",
|
|
||||||
"clientFormFactor": "UNKNOWN_FORM_FACTOR",
|
|
||||||
"webpSupport": false,
|
|
||||||
"timeZone": "Europe/Berlin",
|
|
||||||
"clientScreen": "WATCH"
|
|
||||||
},
|
|
||||||
"user": { "lockedSafetyMode": false },
|
|
||||||
"request": {
|
|
||||||
"useSsl": true,
|
|
||||||
"internalExperimentFlags": []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"playbackContext": {
|
|
||||||
"contentPlaybackContext": {
|
|
||||||
"referer": "https://www.youtube.com/tv#/watch?v=83C3TZ4Zm_o&list=RD83C3TZ4Zm_o",
|
|
||||||
"signatureTimestamp": 20612
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -8,16 +8,16 @@ use crate::{
|
||||||
client::response::YouTubeListItem,
|
client::response::YouTubeListItem,
|
||||||
error::{Error, ExtractionError},
|
error::{Error, ExtractionError},
|
||||||
model::{
|
model::{
|
||||||
Channel, ChannelInfo, PlaylistItem, Verification, VideoItem,
|
|
||||||
paginator::{ContinuationEndpoint, Paginator},
|
paginator::{ContinuationEndpoint, Paginator},
|
||||||
|
Channel, ChannelInfo, PlaylistItem, Verification, VideoItem,
|
||||||
},
|
},
|
||||||
param::{ChannelOrder, ChannelVideoTab, Language},
|
param::{ChannelOrder, ChannelVideoTab, Language},
|
||||||
serializer::{MapResult, text::TextComponent},
|
serializer::{text::TextComponent, MapResult},
|
||||||
util::{self, ProtoBuilder, timeago},
|
util::{self, timeago, ProtoBuilder},
|
||||||
};
|
};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
ClientType, MapRespCtx, MapRespOptions, MapResponse, QContinuation, RustyPipeQuery, response,
|
response, ClientType, MapRespCtx, MapRespOptions, MapResponse, QContinuation, RustyPipeQuery,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Debug, Serialize)]
|
#[derive(Debug, Serialize)]
|
||||||
|
|
@ -37,7 +37,7 @@ enum ChannelTab {
|
||||||
Shorts,
|
Shorts,
|
||||||
#[serde(rename = "EgdzdHJlYW1z8gYECgJ6AA%3D%3D")]
|
#[serde(rename = "EgdzdHJlYW1z8gYECgJ6AA%3D%3D")]
|
||||||
Live,
|
Live,
|
||||||
#[serde(rename = "EglwbGF5bGlzdHPyBgQKAkIA")]
|
#[serde(rename = "EglwbGF5bGlzdHMgAQ%3D%3D")]
|
||||||
Playlists,
|
Playlists,
|
||||||
#[serde(rename = "EgZzZWFyY2jyBgQKAloA")]
|
#[serde(rename = "EgZzZWFyY2jyBgQKAloA")]
|
||||||
Search,
|
Search,
|
||||||
|
|
@ -123,7 +123,7 @@ impl RustyPipeQuery {
|
||||||
order: ChannelOrder,
|
order: ChannelOrder,
|
||||||
) -> Result<Paginator<VideoItem>, Error> {
|
) -> Result<Paginator<VideoItem>, Error> {
|
||||||
self.continuation(
|
self.continuation(
|
||||||
order_ctoken(channel_id.as_ref(), tab, order, &util::random_uuid()),
|
order_ctoken(channel_id.as_ref(), tab, order, &random_target()),
|
||||||
ContinuationEndpoint::Browse,
|
ContinuationEndpoint::Browse,
|
||||||
None,
|
None,
|
||||||
)
|
)
|
||||||
|
|
@ -626,27 +626,35 @@ fn order_ctoken(
|
||||||
order: ChannelOrder,
|
order: ChannelOrder,
|
||||||
target_id: &str,
|
target_id: &str,
|
||||||
) -> String {
|
) -> String {
|
||||||
let mut pb_tab_order = ProtoBuilder::new();
|
|
||||||
pb_tab_order.string(1, target_id);
|
|
||||||
|
|
||||||
let order_id = if tab == ChannelVideoTab::Live {
|
|
||||||
match order {
|
|
||||||
ChannelOrder::Latest => 12,
|
|
||||||
ChannelOrder::Popular => 14,
|
|
||||||
ChannelOrder::Oldest => 13,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
match order {
|
|
||||||
ChannelOrder::Latest => 4,
|
|
||||||
ChannelOrder::Popular => 2,
|
|
||||||
ChannelOrder::Oldest => 5,
|
|
||||||
}
|
|
||||||
};
|
|
||||||
pb_tab_order.varint(3, order_id);
|
|
||||||
|
|
||||||
let mut pb_tab = ProtoBuilder::new();
|
let mut pb_tab = ProtoBuilder::new();
|
||||||
let otabid = if tab == ChannelVideoTab::Shorts { 7 } else { 8 };
|
pb_tab.string(2, target_id);
|
||||||
pb_tab.embedded(otabid, pb_tab_order);
|
|
||||||
|
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();
|
let mut pb_3 = ProtoBuilder::new();
|
||||||
pb_3.embedded(tab.order_ctoken_id(), pb_tab);
|
pb_3.embedded(tab.order_ctoken_id(), pb_tab);
|
||||||
|
|
@ -701,9 +709,9 @@ mod tests {
|
||||||
use rstest::rstest;
|
use rstest::rstest;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
client::{MapRespCtx, MapResponse, response},
|
client::{response, MapRespCtx, MapResponse},
|
||||||
error::{ExtractionError, UnavailabilityReason},
|
error::{ExtractionError, UnavailabilityReason},
|
||||||
model::{Channel, ChannelInfo, PlaylistItem, VideoItem, paginator::Paginator},
|
model::{paginator::Paginator, Channel, ChannelInfo, PlaylistItem, VideoItem},
|
||||||
param::{ChannelOrder, ChannelVideoTab},
|
param::{ChannelOrder, ChannelVideoTab},
|
||||||
serializer::MapResult,
|
serializer::MapResult,
|
||||||
util::tests::TESTFILES,
|
util::tests::TESTFILES,
|
||||||
|
|
@ -725,7 +733,7 @@ mod tests {
|
||||||
#[case::livestreams("livestreams", "UC2DjFE7Xf11URZqWBigcVOQ")]
|
#[case::livestreams("livestreams", "UC2DjFE7Xf11URZqWBigcVOQ")]
|
||||||
#[case::pageheader("shorts_20240129_pageheader", "UCh8gHdtzO2tXd593_bjErWg")]
|
#[case::pageheader("shorts_20240129_pageheader", "UCh8gHdtzO2tXd593_bjErWg")]
|
||||||
#[case::pageheader2("videos_20240324_pageheader2", "UC2DjFE7Xf11URZqWBigcVOQ")]
|
#[case::pageheader2("videos_20240324_pageheader2", "UC2DjFE7Xf11URZqWBigcVOQ")]
|
||||||
#[case::s20260606("shorts_20260606", "UCh8gHdtzO2tXd593_bjErWg")]
|
#[case::lockup("shorts_20240910_lockup", "UCh8gHdtzO2tXd593_bjErWg")]
|
||||||
fn map_channel_videos(#[case] name: &str, #[case] id: &str) {
|
fn map_channel_videos(#[case] name: &str, #[case] id: &str) {
|
||||||
let json_path = path!(*TESTFILES / "channel" / format!("channel_{name}.json"));
|
let json_path = path!(*TESTFILES / "channel" / format!("channel_{name}.json"));
|
||||||
let json_file = File::open(json_path).unwrap();
|
let json_file = File::open(json_path).unwrap();
|
||||||
|
|
@ -819,10 +827,7 @@ mod tests {
|
||||||
ChannelOrder::Popular,
|
ChannelOrder::Popular,
|
||||||
"\n$6461d7c8-0000-2040-87aa-089e0827e420",
|
"\n$6461d7c8-0000-2040-87aa-089e0827e420",
|
||||||
);
|
);
|
||||||
assert_eq!(
|
assert_eq!(videos_popular_token, "4qmFsgJgEhhVQ1h1cVNCbEhBRTZYdy15ZUpBMFR1bncaRDhnWXdHaTU2TEJJbUNpUTJORFl4WkRkak9DMHdNREF3TFRJd05EQXRPRGRoWVMwd09EbGxNRGd5TjJVME1qQVlBaUFD");
|
||||||
videos_popular_token,
|
|
||||||
"4qmFsgJgEhhVQ1h1cVNCbEhBRTZYdy15ZUpBMFR1bncaRDhnWXdHaTU2TEVJcUNpWUtKRFkwTmpGa04yTTRMVEF3TURBdE1qQTBNQzA0TjJGaExUQTRPV1V3T0RJM1pUUXlNQmdD"
|
|
||||||
);
|
|
||||||
|
|
||||||
let shorts_popular_token = order_ctoken(
|
let shorts_popular_token = order_ctoken(
|
||||||
channel_id,
|
channel_id,
|
||||||
|
|
@ -830,10 +835,7 @@ mod tests {
|
||||||
ChannelOrder::Popular,
|
ChannelOrder::Popular,
|
||||||
"\n$64679ffb-0000-26b3-a1bd-582429d2c794",
|
"\n$64679ffb-0000-26b3-a1bd-582429d2c794",
|
||||||
);
|
);
|
||||||
assert_eq!(
|
assert_eq!(shorts_popular_token, "4qmFsgJkEhhVQ1h1cVNCbEhBRTZYdy15ZUpBMFR1bncaSDhnWXVHaXhTS2hJbUNpUTJORFkzT1dabVlpMHdNREF3TFRJMllqTXRZVEZpWkMwMU9ESTBNamxrTW1NM09UUWdBZyUzRCUzRA%3D%3D");
|
||||||
shorts_popular_token,
|
|
||||||
"4qmFsgJgEhhVQ1h1cVNCbEhBRTZYdy15ZUpBMFR1bncaRDhnWXdHaTVTTERvcUNpWUtKRFkwTmpjNVptWmlMVEF3TURBdE1qWmlNeTFoTVdKa0xUVTRNalF5T1dReVl6YzVOQmdD"
|
|
||||||
);
|
|
||||||
|
|
||||||
let live_popular_token = order_ctoken(
|
let live_popular_token = order_ctoken(
|
||||||
channel_id,
|
channel_id,
|
||||||
|
|
@ -841,10 +843,7 @@ mod tests {
|
||||||
ChannelOrder::Popular,
|
ChannelOrder::Popular,
|
||||||
"\n$64693069-0000-2a1e-8c7d-582429bd5ba8",
|
"\n$64693069-0000-2a1e-8c7d-582429bd5ba8",
|
||||||
);
|
);
|
||||||
assert_eq!(
|
assert_eq!(live_popular_token, "4qmFsgJkEhhVQ1h1cVNCbEhBRTZYdy15ZUpBMFR1bncaSDhnWXVHaXh5S2hJbUNpUTJORFk1TXpBMk9TMHdNREF3TFRKaE1XVXRPR00zWkMwMU9ESTBNamxpWkRWaVlUZ29EZyUzRCUzRA%3D%3D");
|
||||||
live_popular_token,
|
|
||||||
"4qmFsgJgEhhVQ1h1cVNCbEhBRTZYdy15ZUpBMFR1bncaRDhnWXdHaTV5TEVJcUNpWUtKRFkwTmprek1EWTVMVEF3TURBdE1tRXhaUzA0WXpka0xUVTRNalF5T1dKa05XSmhPQmdP"
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
@ -852,9 +851,6 @@ mod tests {
|
||||||
let channel_id = "UCh8gHdtzO2tXd593_bjErWg";
|
let channel_id = "UCh8gHdtzO2tXd593_bjErWg";
|
||||||
|
|
||||||
let token = channel_info_ctoken(channel_id, "\n$655b339a-0000-20b9-92dc-582429d254b4");
|
let token = channel_info_ctoken(channel_id, "\n$655b339a-0000-20b9-92dc-582429d254b4");
|
||||||
assert_eq!(
|
assert_eq!(token, "4qmFsgJgEhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2caRDhnWXJHaW1hQVNZS0pEWTFOV0l6TXpsaExUQXdNREF0TWpCaU9TMDVNbVJqTFRVNE1qUXlPV1F5TlRSaU5BJTNEJTNE");
|
||||||
token,
|
|
||||||
"4qmFsgJgEhhVQ2g4Z0hkdHpPMnRYZDU5M19iakVyV2caRDhnWXJHaW1hQVNZS0pEWTFOV0l6TXpsaExUQXdNREF0TWpCaU9TMDVNbVJqTFRVNE1qUXlPV1F5TlRSaU5BJTNEJTNE"
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ use crate::{
|
||||||
util,
|
util,
|
||||||
};
|
};
|
||||||
|
|
||||||
use super::{RustyPipeQuery, response};
|
use super::{response, RustyPipeQuery};
|
||||||
|
|
||||||
impl RustyPipeQuery {
|
impl RustyPipeQuery {
|
||||||
/// Get the 15 latest videos from the channel's RSS feed
|
/// Get the 15 latest videos from the channel's RSS feed
|
||||||
|
|
@ -50,14 +50,14 @@ impl RustyPipeQuery {
|
||||||
operation: "channel_rss",
|
operation: "channel_rss",
|
||||||
error: Some(e.to_string()),
|
error: Some(e.to_string()),
|
||||||
msgs: Vec::new(),
|
msgs: Vec::new(),
|
||||||
deobf_js_url: None,
|
deobf_data: None,
|
||||||
http_request: crate::report::HTTPRequest {
|
http_request: crate::report::HTTPRequest {
|
||||||
url: &url,
|
url: &url,
|
||||||
method: "GET",
|
method: "GET",
|
||||||
status: 200,
|
status: 200,
|
||||||
req_header: None,
|
req_header: None,
|
||||||
req_body: None,
|
req_body: None,
|
||||||
resp_body: &xml,
|
resp_body: xml,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,23 +37,21 @@ use std::{borrow::Cow, fmt::Debug, time::Duration};
|
||||||
|
|
||||||
use once_cell::sync::Lazy;
|
use once_cell::sync::Lazy;
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
use reqwest::{Client, ClientBuilder, Request, RequestBuilder, Response, StatusCode, header};
|
use reqwest::{header, Client, ClientBuilder, Request, RequestBuilder, Response, StatusCode};
|
||||||
use serde::{Deserialize, Serialize, de::DeserializeOwned};
|
use serde::{de::DeserializeOwned, Deserialize, Serialize};
|
||||||
use serde_with::{DefaultOnError, serde_as};
|
|
||||||
use sha1::{Digest, Sha1};
|
use sha1::{Digest, Sha1};
|
||||||
use time::{OffsetDateTime, UtcOffset};
|
use time::{OffsetDateTime, UtcOffset};
|
||||||
use tokio::sync::RwLock as AsyncRwLock;
|
use tokio::sync::RwLock as AsyncRwLock;
|
||||||
|
|
||||||
use crate::deobfuscate::Deobfuscator;
|
|
||||||
use crate::error::AuthError;
|
use crate::error::AuthError;
|
||||||
use crate::util::VisitorDataCache;
|
use crate::util::VisitorDataCache;
|
||||||
use crate::{
|
use crate::{
|
||||||
cache::{CacheStorage, DEFAULT_CACHE_FILE, FileStorage},
|
cache::{CacheStorage, FileStorage, DEFAULT_CACHE_FILE},
|
||||||
deobfuscate::DeobfData,
|
deobfuscate::DeobfData,
|
||||||
error::{Error, ExtractionError},
|
error::{Error, ExtractionError},
|
||||||
model::ArtistId,
|
model::ArtistId,
|
||||||
param::{Country, Language},
|
param::{Country, Language},
|
||||||
report::{DEFAULT_REPORT_DIR, FileReporter, Level, Report, Reporter, RustyPipeInfo},
|
report::{FileReporter, Level, Report, Reporter, RustyPipeInfo, DEFAULT_REPORT_DIR},
|
||||||
serializer::MapResult,
|
serializer::MapResult,
|
||||||
util,
|
util,
|
||||||
};
|
};
|
||||||
|
|
@ -87,8 +85,6 @@ pub enum ClientType {
|
||||||
/// - no obfuscated stream URLs
|
/// - no obfuscated stream URLs
|
||||||
/// - includes lower resolution audio streams
|
/// - includes lower resolution audio streams
|
||||||
Android,
|
Android,
|
||||||
/// Client used by the Android VR Player
|
|
||||||
AndroidVr,
|
|
||||||
/// Client used by the iOS app
|
/// Client used by the iOS app
|
||||||
///
|
///
|
||||||
/// - no obfuscated stream URLs
|
/// - no obfuscated stream URLs
|
||||||
|
|
@ -104,11 +100,7 @@ impl ClientType {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn needs_deobf(self) -> bool {
|
fn needs_deobf(self) -> bool {
|
||||||
self.is_web() || self == ClientType::Tv
|
!matches!(self, ClientType::Ios)
|
||||||
}
|
|
||||||
|
|
||||||
fn needs_visitor_data(self) -> bool {
|
|
||||||
self == ClientType::Tv
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn needs_po_token(self) -> bool {
|
fn needs_po_token(self) -> bool {
|
||||||
|
|
@ -141,8 +133,6 @@ struct ClientInfo<'a> {
|
||||||
#[serde(skip_serializing_if = "str::is_empty")]
|
#[serde(skip_serializing_if = "str::is_empty")]
|
||||||
client_screen: &'a str,
|
client_screen: &'a str,
|
||||||
#[serde(skip_serializing_if = "str::is_empty")]
|
#[serde(skip_serializing_if = "str::is_empty")]
|
||||||
device_make: &'a str,
|
|
||||||
#[serde(skip_serializing_if = "str::is_empty")]
|
|
||||||
device_model: &'a str,
|
device_model: &'a str,
|
||||||
#[serde(skip_serializing_if = "str::is_empty")]
|
#[serde(skip_serializing_if = "str::is_empty")]
|
||||||
os_name: &'a str,
|
os_name: &'a str,
|
||||||
|
|
@ -166,7 +156,6 @@ impl Default for ClientInfo<'_> {
|
||||||
client_name: "",
|
client_name: "",
|
||||||
client_version: Cow::default(),
|
client_version: Cow::default(),
|
||||||
client_screen: "",
|
client_screen: "",
|
||||||
device_make: "",
|
|
||||||
device_model: "",
|
device_model: "",
|
||||||
os_name: "",
|
os_name: "",
|
||||||
os_version: "",
|
os_version: "",
|
||||||
|
|
@ -368,8 +357,8 @@ const IOS_CLIENT_VERSION: &str = "20.03.02";
|
||||||
const IOS_VERSION: &str = "18_2_1";
|
const IOS_VERSION: &str = "18_2_1";
|
||||||
const IOS_VERSION_BUILD: &str = "18.2.1.22C161";
|
const IOS_VERSION_BUILD: &str = "18.2.1.22C161";
|
||||||
const IOS_DEVICE_MODEL: &str = "iPhone16,2";
|
const IOS_DEVICE_MODEL: &str = "iPhone16,2";
|
||||||
const ANDROID_CLIENT_VERSION: &str = "21.03.36";
|
const ANDROID_CLIENT_VERSION: &str = "19.44.38";
|
||||||
const ANDROID_VERSION: &str = "15";
|
const ANDROID_VERSION: &str = "11";
|
||||||
|
|
||||||
const OAUTH_CLIENT_ID: &str =
|
const OAUTH_CLIENT_ID: &str =
|
||||||
"861556708454-d6dlm3lh05idd8npek18k6be8ba3oc68.apps.googleusercontent.com";
|
"861556708454-d6dlm3lh05idd8npek18k6be8ba3oc68.apps.googleusercontent.com";
|
||||||
|
|
@ -581,18 +570,13 @@ struct CacheHolder {
|
||||||
auth_cookie: RwLock<Option<AuthCookie>>,
|
auth_cookie: RwLock<Option<AuthCookie>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[serde_as]
|
|
||||||
#[derive(Default, Debug, Clone, Serialize, Deserialize)]
|
#[derive(Default, Debug, Clone, Serialize, Deserialize)]
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
struct CacheData {
|
struct CacheData {
|
||||||
#[serde_as(as = "DefaultOnError")]
|
|
||||||
clients: HashMap<ClientType, CacheEntry<ClientData>>,
|
clients: HashMap<ClientType, CacheEntry<ClientData>>,
|
||||||
#[serde_as(as = "DefaultOnError")]
|
|
||||||
deobf: CacheEntry<DeobfData>,
|
deobf: CacheEntry<DeobfData>,
|
||||||
#[serde_as(as = "DefaultOnError")]
|
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
oauth_token: Option<OauthToken>,
|
oauth_token: Option<OauthToken>,
|
||||||
#[serde_as(as = "DefaultOnError")]
|
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
auth_cookie: Option<AuthCookie>,
|
auth_cookie: Option<AuthCookie>,
|
||||||
}
|
}
|
||||||
|
|
@ -642,7 +626,6 @@ impl<T> CacheEntry<T> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Get the content of the cache, even if it is expired
|
/// Get the content of the cache, even if it is expired
|
||||||
#[allow(unused)]
|
|
||||||
fn get_expired(&self) -> Option<&T> {
|
fn get_expired(&self) -> Option<&T> {
|
||||||
self.data.as_ref()
|
self.data.as_ref()
|
||||||
}
|
}
|
||||||
|
|
@ -1288,47 +1271,40 @@ impl RustyPipe {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Get deobfuscation data (either from cache or extracted from YouTube's JavaScript code)
|
/// Get deobfuscation data (either from cache or extracted from YouTube's JavaScript code)
|
||||||
async fn get_deobf_data(&self) -> Result<Option<DeobfData>, Error> {
|
async fn get_deobf_data(&self) -> Result<DeobfData, Error> {
|
||||||
// Write lock here to prevent concurrent tasks from fetching the same data
|
// Write lock here to prevent concurrent tasks from fetching the same data
|
||||||
let mut deobf_data = self.inner.cache.deobf.write().await;
|
let mut deobf_data = self.inner.cache.deobf.write().await;
|
||||||
|
|
||||||
// Return cached deobf data if it is up-to-date and contains extracted script
|
match deobf_data.get() {
|
||||||
// If the deobfuscator is disabled, allow deobf data without a script (STS is still required for player requests)
|
Some(deobf_data) => Ok(deobf_data.clone()),
|
||||||
if let Some(d) = deobf_data.get()
|
None => {
|
||||||
&& (d.script.is_some() || !Deobfuscator::ENABLED)
|
|
||||||
{
|
|
||||||
Ok(Some(d.clone()))
|
|
||||||
} else {
|
|
||||||
// Only attempt to fetch deobf data every 24 hours to avoid a flood of error reports
|
// Only attempt to fetch deobf data every 24 hours to avoid a flood of error reports
|
||||||
// if the client JS cannot be parsed
|
// if the client JS cannot be parsed
|
||||||
if deobf_data.should_retry() {
|
if deobf_data.should_retry() {
|
||||||
tracing::debug!("getting deobf data");
|
tracing::debug!("getting deobf data");
|
||||||
|
|
||||||
match DeobfData::extract(&self.inner.http, self.inner.reporter.as_deref()).await {
|
match DeobfData::extract(&self.inner.http, self.inner.reporter.as_deref()).await
|
||||||
|
{
|
||||||
Ok(new_data) => {
|
Ok(new_data) => {
|
||||||
// Write new data to the cache
|
// Write new data to the cache
|
||||||
*deobf_data = CacheEntry::from(new_data.clone());
|
*deobf_data = CacheEntry::from(new_data.clone());
|
||||||
drop(deobf_data);
|
drop(deobf_data);
|
||||||
self.store_cache().await;
|
self.store_cache().await;
|
||||||
Ok(Some(new_data))
|
Ok(new_data)
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
// Try to fall back to expired cache data if available, otherwise return error
|
// Try to fall back to expired cache data if available, otherwise return error
|
||||||
deobf_data.retry_later(24);
|
deobf_data.retry_later(24);
|
||||||
|
let res = match deobf_data.get_expired() {
|
||||||
let res = if let Some(d) = deobf_data.get_expired()
|
Some(d) => {
|
||||||
&& (d.script.is_some() || !Deobfuscator::ENABLED)
|
tracing::warn!("could not get new deobf data ({e}), falling back to expired cache");
|
||||||
{
|
|
||||||
tracing::warn!(
|
|
||||||
"could not get new deobf data ({e}), falling back to expired cache"
|
|
||||||
);
|
|
||||||
Ok(d.clone())
|
Ok(d.clone())
|
||||||
} else {
|
}
|
||||||
Err(e)
|
None => Err(e),
|
||||||
};
|
};
|
||||||
drop(deobf_data);
|
drop(deobf_data);
|
||||||
self.store_cache().await;
|
self.store_cache().await;
|
||||||
res.map(Some)
|
res
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -1337,15 +1313,16 @@ impl RustyPipe {
|
||||||
tracing::warn!(
|
tracing::warn!(
|
||||||
"could not get new deobf data, falling back to expired cache"
|
"could not get new deobf data, falling back to expired cache"
|
||||||
);
|
);
|
||||||
Ok(Some(d.clone()))
|
Ok(d.clone())
|
||||||
}
|
}
|
||||||
None => Err(Error::Extraction(ExtractionError::Deobfuscation(
|
None => Err(Error::Extraction(ExtractionError::Deobfuscation(
|
||||||
crate::error::DeobfError::Extraction("deobf data".into()),
|
"could not get deobf data".into(),
|
||||||
))),
|
))),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Write the current cache data to the storage backend.
|
/// Write the current cache data to the storage backend.
|
||||||
async fn store_cache(&self) {
|
async fn store_cache(&self) {
|
||||||
|
|
@ -1862,9 +1839,6 @@ impl RustyPipeQuery {
|
||||||
ANDROID_CLIENT_VERSION, ANDROID_VERSION
|
ANDROID_CLIENT_VERSION, ANDROID_VERSION
|
||||||
)
|
)
|
||||||
.into(),
|
.into(),
|
||||||
ClientType::AndroidVr => Cow::Borrowed(
|
|
||||||
"com.google.android.apps.youtube.vr.oculus/1.65.10 (Linux; U; Android 12L; en_US; Quest 3 Build/SQ3A.220605.009.A1) gzip",
|
|
||||||
),
|
|
||||||
ClientType::Ios => format!(
|
ClientType::Ios => format!(
|
||||||
"com.google.ios.youtube/{} ({}; U; CPU iOS {} like Mac OS X)",
|
"com.google.ios.youtube/{} ({}; U; CPU iOS {} like Mac OS X)",
|
||||||
IOS_CLIENT_VERSION, IOS_DEVICE_MODEL, IOS_VERSION
|
IOS_CLIENT_VERSION, IOS_DEVICE_MODEL, IOS_VERSION
|
||||||
|
|
@ -2002,11 +1976,7 @@ impl RustyPipeQuery {
|
||||||
client_version: self.client.get_client_version(ctype).await,
|
client_version: self.client.get_client_version(ctype).await,
|
||||||
client_screen: "WATCH",
|
client_screen: "WATCH",
|
||||||
platform: "TV",
|
platform: "TV",
|
||||||
device_make: "Samsung",
|
|
||||||
device_model: "SmartTV",
|
device_model: "SmartTV",
|
||||||
os_name: "Tizen",
|
|
||||||
os_version: "5.0",
|
|
||||||
original_url: "https://www.youtube.com/tv",
|
|
||||||
visitor_data,
|
visitor_data,
|
||||||
hl,
|
hl,
|
||||||
gl,
|
gl,
|
||||||
|
|
@ -2026,28 +1996,7 @@ impl RustyPipeQuery {
|
||||||
client_version: ANDROID_CLIENT_VERSION.into(),
|
client_version: ANDROID_CLIENT_VERSION.into(),
|
||||||
os_name: "Android",
|
os_name: "Android",
|
||||||
os_version: ANDROID_VERSION,
|
os_version: ANDROID_VERSION,
|
||||||
android_sdk_version: Some(35),
|
android_sdk_version: Some(30),
|
||||||
platform: "MOBILE",
|
|
||||||
client_screen: "WATCH",
|
|
||||||
visitor_data,
|
|
||||||
hl,
|
|
||||||
gl,
|
|
||||||
time_zone,
|
|
||||||
utc_offset_minutes,
|
|
||||||
..Default::default()
|
|
||||||
},
|
|
||||||
request: None,
|
|
||||||
user: User::default(),
|
|
||||||
third_party: None,
|
|
||||||
},
|
|
||||||
ClientType::AndroidVr => YTContext {
|
|
||||||
client: ClientInfo {
|
|
||||||
client_name: "ANDROID_VR",
|
|
||||||
client_version: "1.65.10".into(),
|
|
||||||
device_model: "Quest 3",
|
|
||||||
os_name: "Android",
|
|
||||||
os_version: "12L",
|
|
||||||
android_sdk_version: Some(32),
|
|
||||||
platform: "MOBILE",
|
platform: "MOBILE",
|
||||||
visitor_data,
|
visitor_data,
|
||||||
hl,
|
hl,
|
||||||
|
|
@ -2165,15 +2114,6 @@ impl RustyPipeQuery {
|
||||||
))
|
))
|
||||||
.header("X-YouTube-Client-Name", "3")
|
.header("X-YouTube-Client-Name", "3")
|
||||||
.header("X-Goog-Api-Format-Version", "2"),
|
.header("X-Goog-Api-Format-Version", "2"),
|
||||||
ClientType::AndroidVr => self
|
|
||||||
.client
|
|
||||||
.inner
|
|
||||||
.http
|
|
||||||
.post(format!(
|
|
||||||
"{YOUTUBEI_V1_GAPIS_URL}{endpoint}?{DISABLE_PRETTY_PRINT_PARAMETER}"
|
|
||||||
))
|
|
||||||
.header("X-YouTube-Client-Name", "28")
|
|
||||||
.header("X-Goog-Api-Format-Version", "2"),
|
|
||||||
ClientType::Ios => self
|
ClientType::Ios => self
|
||||||
.client
|
.client
|
||||||
.inner
|
.inner
|
||||||
|
|
@ -2577,16 +2517,15 @@ impl RustyPipeQuery {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if (level > Level::DBG || self.opts.report)
|
if level > Level::DBG || self.opts.report {
|
||||||
&& let Some(reporter) = &self.client.inner.reporter
|
if let Some(reporter) = &self.client.inner.reporter {
|
||||||
{
|
|
||||||
let report = Report {
|
let report = Report {
|
||||||
info: self.rp_info(),
|
info: self.rp_info(),
|
||||||
level,
|
level,
|
||||||
operation: &format!("{operation}({id})"),
|
operation: &format!("{operation}({id})"),
|
||||||
error,
|
error,
|
||||||
msgs,
|
msgs,
|
||||||
deobf_js_url: ctx_src.deobf.as_ref().map(|d| d.js_url.to_owned()),
|
deobf_data: ctx_src.deobf.cloned(),
|
||||||
http_request: crate::report::HTTPRequest {
|
http_request: crate::report::HTTPRequest {
|
||||||
url: request.url().as_str(),
|
url: request.url().as_str(),
|
||||||
method: request.method().as_str(),
|
method: request.method().as_str(),
|
||||||
|
|
@ -2611,11 +2550,12 @@ impl RustyPipeQuery {
|
||||||
.and_then(|b| b.as_bytes())
|
.and_then(|b| b.as_bytes())
|
||||||
.map(|b| String::from_utf8_lossy(b).into_owned()),
|
.map(|b| String::from_utf8_lossy(b).into_owned()),
|
||||||
status: req_res.status.into(),
|
status: req_res.status.into(),
|
||||||
resp_body: &req_res.body,
|
resp_body: req_res.body,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
reporter.report(&report);
|
reporter.report(&report);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if res.is_ok() && level > Level::DBG && self.opts.strict {
|
if res.is_ok() && level > Level::DBG && self.opts.strict {
|
||||||
return Err(Error::Extraction(ExtractionError::DeserializationWarnings));
|
return Err(Error::Extraction(ExtractionError::DeserializationWarnings));
|
||||||
|
|
@ -2760,9 +2700,7 @@ trait MapResponse<T> {
|
||||||
|
|
||||||
fn validate_country(country: Country) -> Country {
|
fn validate_country(country: Country) -> Country {
|
||||||
if country == Country::Zz {
|
if country == Country::Zz {
|
||||||
tracing::warn!(
|
tracing::warn!("Country:Zz (Global) can only be used for fetching music charts, falling back to Country:Us");
|
||||||
"Country:Zz (Global) can only be used for fetching music charts, falling back to Country:Us"
|
|
||||||
);
|
|
||||||
Country::Us
|
Country::Us
|
||||||
} else {
|
} else {
|
||||||
country
|
country
|
||||||
|
|
@ -2868,7 +2806,7 @@ mod tests {
|
||||||
let token_bts = data_encoding::BASE64URL
|
let token_bts = data_encoding::BASE64URL
|
||||||
.decode(po_token.po_token.as_bytes())
|
.decode(po_token.po_token.as_bytes())
|
||||||
.unwrap();
|
.unwrap();
|
||||||
assert!(token_bts.len() > 100, "{}", po_token.po_token);
|
assert_eq!(token_bts.len(), ident.len() + 74);
|
||||||
assert!(
|
assert!(
|
||||||
po_token.valid_until > OffsetDateTime::now_utc() + time::Duration::minutes(30),
|
po_token.valid_until > OffsetDateTime::now_utc() + time::Duration::minutes(30),
|
||||||
"valid until {}",
|
"valid until {}",
|
||||||
|
|
|
||||||
|
|
@ -6,22 +6,22 @@ use tracing::debug;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
client::{
|
client::{
|
||||||
MapRespOptions, QContinuation,
|
|
||||||
response::{music_item::map_album_type, url_endpoint::NavigationEndpoint},
|
response::{music_item::map_album_type, url_endpoint::NavigationEndpoint},
|
||||||
|
MapRespOptions, QContinuation,
|
||||||
},
|
},
|
||||||
error::{Error, ExtractionError},
|
error::{Error, ExtractionError},
|
||||||
model::{
|
model::{
|
||||||
AlbumItem, AlbumType, ArtistId, MusicArtist, MusicItem, paginator::Paginator,
|
paginator::Paginator, traits::FromYtItem, AlbumItem, AlbumType, ArtistId, MusicArtist,
|
||||||
richtext::RichText, traits::FromYtItem,
|
MusicItem,
|
||||||
},
|
},
|
||||||
param::{AlbumFilter, AlbumOrder},
|
param::{AlbumFilter, AlbumOrder},
|
||||||
serializer::{MapResult, text::TextComponent},
|
serializer::MapResult,
|
||||||
util::{self, ProtoBuilder},
|
util::{self, ProtoBuilder},
|
||||||
};
|
};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
ClientType, MapRespCtx, MapResponse, QBrowse, QBrowseParams, RustyPipeQuery,
|
|
||||||
response::{self, music_item::MusicListMapper, url_endpoint::PageType},
|
response::{self, music_item::MusicListMapper, url_endpoint::PageType},
|
||||||
|
ClientType, MapRespCtx, MapResponse, QBrowse, QBrowseParams, RustyPipeQuery,
|
||||||
};
|
};
|
||||||
|
|
||||||
impl RustyPipeQuery {
|
impl RustyPipeQuery {
|
||||||
|
|
@ -181,12 +181,12 @@ fn map_artist_page(
|
||||||
.and_then(|pb| util::b64_decode(pb.as_bytes()).ok())
|
.and_then(|pb| util::b64_decode(pb.as_bytes()).ok())
|
||||||
.and_then(|pb| util::string_from_pb(pb, 3));
|
.and_then(|pb| util::string_from_pb(pb, 3));
|
||||||
|
|
||||||
if let Some(share_channel_id) = share_channel_id
|
if let Some(share_channel_id) = share_channel_id {
|
||||||
&& share_channel_id != ctx.id
|
if share_channel_id != ctx.id {
|
||||||
{
|
|
||||||
return Err(ExtractionError::Redirect(share_channel_id));
|
return Err(ExtractionError::Redirect(share_channel_id));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let sections = contents
|
let sections = contents
|
||||||
.single_column_browse_results_renderer
|
.single_column_browse_results_renderer
|
||||||
|
|
@ -211,13 +211,19 @@ fn map_artist_page(
|
||||||
for section in sections {
|
for section in sections {
|
||||||
match section {
|
match section {
|
||||||
response::music_item::ItemSection::MusicShelfRenderer(shelf) => {
|
response::music_item::ItemSection::MusicShelfRenderer(shelf) => {
|
||||||
if tracks_playlist_id.is_none()
|
if tracks_playlist_id.is_none() {
|
||||||
&& let Some(ep) = shelf.bottom_endpoint
|
if let Some(ep) = shelf.bottom_endpoint {
|
||||||
&& let Some(cfg) = ep.browse_endpoint.browse_endpoint_context_supported_configs
|
if let Some(cfg) =
|
||||||
&& cfg.browse_endpoint_context_music_config.page_type == PageType::Playlist
|
ep.browse_endpoint.browse_endpoint_context_supported_configs
|
||||||
|
{
|
||||||
|
if cfg.browse_endpoint_context_music_config.page_type
|
||||||
|
== PageType::Playlist
|
||||||
{
|
{
|
||||||
tracks_playlist_id = Some(ep.browse_endpoint.browse_id);
|
tracks_playlist_id = Some(ep.browse_endpoint.browse_id);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
mapper.album_type = AlbumType::Single;
|
mapper.album_type = AlbumType::Single;
|
||||||
mapper.map_response(shelf.contents);
|
mapper.map_response(shelf.contents);
|
||||||
}
|
}
|
||||||
|
|
@ -228,7 +234,8 @@ fn map_artist_page(
|
||||||
if let Some(button) = h
|
if let Some(button) = h
|
||||||
.music_carousel_shelf_basic_header_renderer
|
.music_carousel_shelf_basic_header_renderer
|
||||||
.more_content_button
|
.more_content_button
|
||||||
&& let NavigationEndpoint::Browse {
|
{
|
||||||
|
if let NavigationEndpoint::Browse {
|
||||||
browse_endpoint, ..
|
browse_endpoint, ..
|
||||||
} = button.button_renderer.navigation_endpoint
|
} = button.button_renderer.navigation_endpoint
|
||||||
{
|
{
|
||||||
|
|
@ -252,18 +259,15 @@ fn map_artist_page(
|
||||||
extendable_albums = true;
|
extendable_albums = true;
|
||||||
} else {
|
} else {
|
||||||
// Peek at the first item to determine type
|
// Peek at the first item to determine type
|
||||||
if let Some(
|
if let Some(response::music_item::MusicResponseItem::MusicTwoRowItemRenderer(item)) = shelf.contents.c.first() {
|
||||||
response::music_item::MusicResponseItem::MusicTwoRowItemRenderer(
|
if let Some(PageType::Album) = item.navigation_endpoint.page_type() {
|
||||||
item,
|
|
||||||
),
|
|
||||||
) = shelf.contents.c.first()
|
|
||||||
&& let Some(PageType::Album) = item.navigation_endpoint.page_type()
|
|
||||||
{
|
|
||||||
can_fetch_more = true;
|
can_fetch_more = true;
|
||||||
extendable_albums = true;
|
extendable_albums = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
mapper.album_type = map_album_type(
|
mapper.album_type = map_album_type(
|
||||||
h.music_carousel_shelf_basic_header_renderer
|
h.music_carousel_shelf_basic_header_renderer
|
||||||
.title
|
.title
|
||||||
|
|
@ -283,11 +287,17 @@ fn map_artist_page(
|
||||||
let mut mapped = mapper.group_items();
|
let mut mapped = mapper.group_items();
|
||||||
|
|
||||||
static WIKIPEDIA_REGEX: Lazy<Regex> =
|
static WIKIPEDIA_REGEX: Lazy<Regex> =
|
||||||
Lazy::new(|| Regex::new(r"^https://[a-z\d-]+\.wikipedia.org/wiki/").unwrap());
|
Lazy::new(|| Regex::new(r"\(?https://[a-z\d-]+\.wikipedia.org/wiki/[^\s]+").unwrap());
|
||||||
let wikipedia_url = header.description.as_ref().and_then(|d| {
|
let wikipedia_url = header.description.as_deref().and_then(|h| {
|
||||||
d.0.iter().find_map(|c| match c {
|
WIKIPEDIA_REGEX.captures(h).and_then(|c| c.get(0)).map(|m| {
|
||||||
TextComponent::Web { url, .. } if WIKIPEDIA_REGEX.is_match(url) => Some(url.to_owned()),
|
let m = m.as_str();
|
||||||
_ => None,
|
match m.strip_prefix('(') {
|
||||||
|
Some(m) => match m.strip_suffix(')') {
|
||||||
|
Some(m) => m.to_owned(),
|
||||||
|
None => m.to_owned(),
|
||||||
|
},
|
||||||
|
None => m.to_owned(),
|
||||||
|
}
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -306,7 +316,7 @@ fn map_artist_page(
|
||||||
id: ctx.id.to_owned(),
|
id: ctx.id.to_owned(),
|
||||||
name: header.title,
|
name: header.title,
|
||||||
header_image: header.thumbnail.into(),
|
header_image: header.thumbnail.into(),
|
||||||
description: header.description.map(RichText::from),
|
description: header.description,
|
||||||
wikipedia_url,
|
wikipedia_url,
|
||||||
subscriber_count: header.subscription_button.and_then(|btn| {
|
subscriber_count: header.subscription_button.and_then(|btn| {
|
||||||
util::parse_large_numstr_or_warn(
|
util::parse_large_numstr_or_warn(
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,8 @@ use crate::{
|
||||||
};
|
};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
ClientType, MapRespCtx, MapResponse, RustyPipeQuery,
|
|
||||||
response::{self, music_item::MusicListMapper, url_endpoint::MusicPageType},
|
response::{self, music_item::MusicListMapper, url_endpoint::MusicPageType},
|
||||||
|
ClientType, MapRespCtx, MapResponse, RustyPipeQuery,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Debug, Serialize)]
|
#[derive(Debug, Serialize)]
|
||||||
|
|
|
||||||
|
|
@ -5,18 +5,18 @@ use serde::Serialize;
|
||||||
use crate::{
|
use crate::{
|
||||||
error::{Error, ExtractionError},
|
error::{Error, ExtractionError},
|
||||||
model::{
|
model::{
|
||||||
ArtistId, Lyrics, MusicRelated, TrackDetails, TrackItem,
|
|
||||||
paginator::{ContinuationEndpoint, Paginator},
|
paginator::{ContinuationEndpoint, Paginator},
|
||||||
|
ArtistId, Lyrics, MusicRelated, TrackDetails, TrackItem,
|
||||||
},
|
},
|
||||||
serializer::MapResult,
|
serializer::MapResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
ClientType, MapRespCtx, MapResponse, QBrowse, RustyPipeQuery,
|
|
||||||
response::{
|
response::{
|
||||||
self,
|
self,
|
||||||
music_item::{MusicListMapper, map_queue_item},
|
music_item::{map_queue_item, MusicListMapper},
|
||||||
},
|
},
|
||||||
|
ClientType, MapRespCtx, MapResponse, QBrowse, RustyPipeQuery,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Debug, Serialize)]
|
#[derive(Debug, Serialize)]
|
||||||
|
|
@ -207,7 +207,7 @@ impl MapResponse<TrackDetails> for response::MusicDetails {
|
||||||
response::music_item::PlaylistPanelVideo::None => None,
|
response::music_item::PlaylistPanelVideo::None => None,
|
||||||
})
|
})
|
||||||
.ok_or(ExtractionError::InvalidData(Cow::Borrowed("no video item")))?;
|
.ok_or(ExtractionError::InvalidData(Cow::Borrowed("no video item")))?;
|
||||||
let mut track = map_queue_item(track_item, ctx.lang)?;
|
let mut track = map_queue_item(track_item, ctx.lang);
|
||||||
|
|
||||||
let mut warnings = content.contents.warnings;
|
let mut warnings = content.contents.warnings;
|
||||||
warnings.append(&mut track.warnings);
|
warnings.append(&mut track.warnings);
|
||||||
|
|
@ -254,17 +254,10 @@ impl MapResponse<Paginator<TrackItem>> for response::MusicDetails {
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.filter_map(|item| match item {
|
.filter_map(|item| match item {
|
||||||
response::music_item::PlaylistPanelVideo::PlaylistPanelVideoRenderer(item) => {
|
response::music_item::PlaylistPanelVideo::PlaylistPanelVideoRenderer(item) => {
|
||||||
match map_queue_item(item, ctx.lang) {
|
let mut track = map_queue_item(item, ctx.lang);
|
||||||
Ok(mut track) => {
|
|
||||||
warnings.append(&mut track.warnings);
|
warnings.append(&mut track.warnings);
|
||||||
Some(track.c)
|
Some(track.c)
|
||||||
}
|
}
|
||||||
Err(e) => {
|
|
||||||
warnings.push(e.to_string());
|
|
||||||
None
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
response::music_item::PlaylistPanelVideo::None => None,
|
response::music_item::PlaylistPanelVideo::None => None,
|
||||||
})
|
})
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
@ -400,7 +393,6 @@ mod tests {
|
||||||
|
|
||||||
#[rstest]
|
#[rstest]
|
||||||
#[case::mv("mv", "ZeerrnuLi5E")]
|
#[case::mv("mv", "ZeerrnuLi5E")]
|
||||||
#[case::mv_20260603("mv_20260603", "ZeerrnuLi5E")]
|
|
||||||
#[case::track("track", "7nigXQS1Xb0")]
|
#[case::track("track", "7nigXQS1Xb0")]
|
||||||
fn map_music_details(#[case] name: &str, #[case] id: &str) {
|
fn map_music_details(#[case] name: &str, #[case] id: &str) {
|
||||||
let json_path = path!(*TESTFILES / "music_details" / format!("details_{name}.json"));
|
let json_path = path!(*TESTFILES / "music_details" / format!("details_{name}.json"));
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,8 @@ use crate::{
|
||||||
};
|
};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
ClientType, MapRespCtx, MapResponse, QBrowse, QBrowseParams, RustyPipeQuery,
|
|
||||||
response::{self, music_item::MusicListMapper, url_endpoint::NavigationEndpoint},
|
response::{self, music_item::MusicListMapper, url_endpoint::NavigationEndpoint},
|
||||||
|
ClientType, MapRespCtx, MapResponse, QBrowse, QBrowseParams, RustyPipeQuery,
|
||||||
};
|
};
|
||||||
|
|
||||||
impl RustyPipeQuery {
|
impl RustyPipeQuery {
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,11 @@ use std::borrow::Cow;
|
||||||
use crate::{
|
use crate::{
|
||||||
client::response::music_item::MusicListMapper,
|
client::response::music_item::MusicListMapper,
|
||||||
error::{Error, ExtractionError},
|
error::{Error, ExtractionError},
|
||||||
model::{AlbumItem, TrackItem, traits::FromYtItem},
|
model::{traits::FromYtItem, AlbumItem, TrackItem},
|
||||||
serializer::MapResult,
|
serializer::MapResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
use super::{ClientType, MapRespCtx, MapResponse, QBrowse, RustyPipeQuery, response};
|
use super::{response, ClientType, MapRespCtx, MapResponse, QBrowse, RustyPipeQuery};
|
||||||
|
|
||||||
impl RustyPipeQuery {
|
impl RustyPipeQuery {
|
||||||
/// Get the new albums that were released on YouTube Music
|
/// Get the new albums that were released on YouTube Music
|
||||||
|
|
|
||||||
|
|
@ -4,22 +4,22 @@ use crate::{
|
||||||
client::response::url_endpoint::NavigationEndpoint,
|
client::response::url_endpoint::NavigationEndpoint,
|
||||||
error::{Error, ExtractionError},
|
error::{Error, ExtractionError},
|
||||||
model::{
|
model::{
|
||||||
AlbumId, ChannelId, MusicAlbum, MusicPlaylist, TrackItem, TrackType,
|
|
||||||
paginator::{ContinuationEndpoint, Paginator},
|
paginator::{ContinuationEndpoint, Paginator},
|
||||||
richtext::RichText,
|
richtext::RichText,
|
||||||
|
AlbumId, ChannelId, MusicAlbum, MusicPlaylist, TrackItem, TrackType,
|
||||||
},
|
},
|
||||||
serializer::{MapResult, text::TextComponents},
|
serializer::{text::TextComponents, MapResult},
|
||||||
util::{self, DOT_SEPARATOR, TryRemove, dictionary},
|
util::{self, dictionary, TryRemove, DOT_SEPARATOR},
|
||||||
};
|
};
|
||||||
|
|
||||||
use self::response::url_endpoint::MusicPageType;
|
use self::response::url_endpoint::MusicPageType;
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
ClientType, MapRespCtx, MapResponse, QBrowse, RustyPipeQuery,
|
|
||||||
response::{
|
response::{
|
||||||
self,
|
self,
|
||||||
music_item::{MusicListMapper, map_album_type, map_artist_id, map_artists},
|
music_item::{map_album_type, map_artist_id, map_artists, MusicListMapper},
|
||||||
},
|
},
|
||||||
|
ClientType, MapRespCtx, MapResponse, QBrowse, RustyPipeQuery,
|
||||||
};
|
};
|
||||||
|
|
||||||
impl RustyPipeQuery {
|
impl RustyPipeQuery {
|
||||||
|
|
@ -211,14 +211,14 @@ impl MapResponse<MusicPlaylist> for response::MusicPlaylist {
|
||||||
"no sectionListRenderer content",
|
"no sectionListRenderer content",
|
||||||
)))?;
|
)))?;
|
||||||
|
|
||||||
if let Some(playlist_id) = shelf.playlist_id
|
if let Some(playlist_id) = shelf.playlist_id {
|
||||||
&& playlist_id != ctx.id
|
if playlist_id != ctx.id {
|
||||||
{
|
|
||||||
return Err(ExtractionError::WrongResult(format!(
|
return Err(ExtractionError::WrongResult(format!(
|
||||||
"got wrong playlist id {}, expected {}",
|
"got wrong playlist id {}, expected {}",
|
||||||
playlist_id, ctx.id
|
playlist_id, ctx.id
|
||||||
)));
|
)));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let mut mapper = MusicListMapper::new(ctx.lang);
|
let mut mapper = MusicListMapper::new(ctx.lang);
|
||||||
mapper.map_response(shelf.contents);
|
mapper.map_response(shelf.contents);
|
||||||
|
|
|
||||||
|
|
@ -3,19 +3,19 @@ use std::{borrow::Cow, fmt::Debug};
|
||||||
use serde::Serialize;
|
use serde::Serialize;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
client::response::{music_item::MusicListMapper, music_search::ItemSectionRendererItem},
|
client::response::music_item::MusicListMapper,
|
||||||
error::{Error, ExtractionError},
|
error::{Error, ExtractionError},
|
||||||
model::{
|
model::{
|
||||||
AlbumItem, ArtistItem, MusicItem, MusicPlaylistItem, MusicSearchResult,
|
|
||||||
MusicSearchSuggestion, TrackItem, UserItem,
|
|
||||||
paginator::{ContinuationEndpoint, Paginator},
|
paginator::{ContinuationEndpoint, Paginator},
|
||||||
traits::FromYtItem,
|
traits::FromYtItem,
|
||||||
|
AlbumItem, ArtistItem, MusicItem, MusicPlaylistItem, MusicSearchResult,
|
||||||
|
MusicSearchSuggestion, TrackItem, UserItem,
|
||||||
},
|
},
|
||||||
param::search_filter::MusicSearchFilter,
|
param::search_filter::MusicSearchFilter,
|
||||||
serializer::MapResult,
|
serializer::MapResult,
|
||||||
};
|
};
|
||||||
|
|
||||||
use super::{ClientType, MapRespCtx, MapResponse, RustyPipeQuery, response};
|
use super::{response, ClientType, MapRespCtx, MapResponse, RustyPipeQuery};
|
||||||
|
|
||||||
#[derive(Debug, Serialize)]
|
#[derive(Debug, Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
|
|
@ -46,14 +46,10 @@ impl RustyPipeQuery {
|
||||||
query,
|
query,
|
||||||
params: filter.map(MusicSearchFilter::params),
|
params: filter.map(MusicSearchFilter::params),
|
||||||
};
|
};
|
||||||
let op = match filter {
|
|
||||||
Some(op) => Cow::Owned(format!("music_search_{op:?}").to_ascii_lowercase()),
|
|
||||||
None => Cow::Borrowed("music_search"),
|
|
||||||
};
|
|
||||||
|
|
||||||
self.execute_request::<response::MusicSearch, _, _>(
|
self.execute_request::<response::MusicSearch, _, _>(
|
||||||
ClientType::DesktopMusic,
|
ClientType::DesktopMusic,
|
||||||
&op,
|
"music_search_tracks",
|
||||||
query,
|
query,
|
||||||
"search",
|
"search",
|
||||||
&request_body,
|
&request_body,
|
||||||
|
|
@ -183,22 +179,9 @@ impl<T: FromYtItem> MapResponse<MusicSearchResult<T>> for response::MusicSearch
|
||||||
response::music_search::ItemSection::MusicCardShelfRenderer(card) => {
|
response::music_search::ItemSection::MusicCardShelfRenderer(card) => {
|
||||||
mapper.map_card(card);
|
mapper.map_card(card);
|
||||||
}
|
}
|
||||||
response::music_search::ItemSection::ItemSectionRenderer { mut contents } => {
|
response::music_search::ItemSection::ItemSectionRenderer { contents } => {
|
||||||
mapper.add_warnings(&mut contents.warnings);
|
if let Some(corrected) = contents.into_iter().next() {
|
||||||
for item in contents.c {
|
corrected_query = Some(corrected.showing_results_for_renderer.corrected_query);
|
||||||
match item {
|
|
||||||
ItemSectionRendererItem::MusicResponsiveListItemRenderer(
|
|
||||||
list_music_item,
|
|
||||||
) => {
|
|
||||||
mapper.add_list_item(list_music_item);
|
|
||||||
}
|
|
||||||
ItemSectionRendererItem::ShowingResultsForRenderer(
|
|
||||||
showing_results_for_renderer,
|
|
||||||
) => {
|
|
||||||
corrected_query = Some(showing_results_for_renderer.corrected_query);
|
|
||||||
}
|
|
||||||
ItemSectionRendererItem::None => {}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
response::music_search::ItemSection::None => {}
|
response::music_search::ItemSection::None => {}
|
||||||
|
|
@ -268,7 +251,7 @@ mod tests {
|
||||||
use rstest::rstest;
|
use rstest::rstest;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
client::{MapRespCtx, MapResponse, response},
|
client::{response, MapRespCtx, MapResponse},
|
||||||
model::{
|
model::{
|
||||||
AlbumItem, ArtistItem, MusicItem, MusicPlaylistItem, MusicSearchResult,
|
AlbumItem, ArtistItem, MusicItem, MusicPlaylistItem, MusicSearchResult,
|
||||||
MusicSearchSuggestion, TrackItem,
|
MusicSearchSuggestion, TrackItem,
|
||||||
|
|
@ -283,7 +266,6 @@ mod tests {
|
||||||
#[case::radio("radio")]
|
#[case::radio("radio")]
|
||||||
#[case::artist("artist")]
|
#[case::artist("artist")]
|
||||||
#[case::live("live")]
|
#[case::live("live")]
|
||||||
#[case::artist_20260603("artist_20260603")]
|
|
||||||
fn map_music_search_main(#[case] name: &str) {
|
fn map_music_search_main(#[case] name: &str) {
|
||||||
let json_path = path!(*TESTFILES / "music_search" / format!("main_{name}.json"));
|
let json_path = path!(*TESTFILES / "music_search" / format!("main_{name}.json"));
|
||||||
let json_file = File::open(json_path).unwrap();
|
let json_file = File::open(json_path).unwrap();
|
||||||
|
|
|
||||||
|
|
@ -2,13 +2,13 @@ use std::fmt::Debug;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
client::{
|
client::{
|
||||||
ClientType, MapResponse, QBrowseParams, RustyPipeQuery,
|
|
||||||
response::{self, music_item::MusicListMapper},
|
response::{self, music_item::MusicListMapper},
|
||||||
|
ClientType, MapResponse, QBrowseParams, RustyPipeQuery,
|
||||||
},
|
},
|
||||||
error::{Error, ExtractionError},
|
error::{Error, ExtractionError},
|
||||||
model::{
|
model::{
|
||||||
AlbumItem, ArtistItem, HistoryItem, MusicPlaylist, MusicPlaylistItem, TrackItem,
|
|
||||||
paginator::{ContinuationEndpoint, Paginator},
|
paginator::{ContinuationEndpoint, Paginator},
|
||||||
|
AlbumItem, ArtistItem, HistoryItem, MusicPlaylist, MusicPlaylistItem, TrackItem,
|
||||||
},
|
},
|
||||||
serializer::MapResult,
|
serializer::MapResult,
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,9 @@ use std::fmt::Debug;
|
||||||
|
|
||||||
use crate::error::{Error, ExtractionError};
|
use crate::error::{Error, ExtractionError};
|
||||||
use crate::model::{
|
use crate::model::{
|
||||||
Comment, MusicItem, YouTubeItem,
|
|
||||||
paginator::{ContinuationEndpoint, Paginator},
|
paginator::{ContinuationEndpoint, Paginator},
|
||||||
traits::FromYtItem,
|
traits::FromYtItem,
|
||||||
|
Comment, MusicItem, YouTubeItem,
|
||||||
};
|
};
|
||||||
use crate::serializer::MapResult;
|
use crate::serializer::MapResult;
|
||||||
|
|
||||||
|
|
@ -12,11 +12,11 @@ use crate::serializer::MapResult;
|
||||||
use crate::model::{HistoryItem, TrackItem, VideoItem};
|
use crate::model::{HistoryItem, TrackItem, VideoItem};
|
||||||
|
|
||||||
use super::response::{
|
use super::response::{
|
||||||
|
music_item::{map_queue_item, MusicListMapper, PlaylistPanelVideo},
|
||||||
YouTubeListItem,
|
YouTubeListItem,
|
||||||
music_item::{MusicListMapper, PlaylistPanelVideo, map_queue_item},
|
|
||||||
};
|
};
|
||||||
use super::{
|
use super::{
|
||||||
ClientType, MapRespCtx, MapRespOptions, MapResponse, QContinuation, RustyPipeQuery, response,
|
response, ClientType, MapRespCtx, MapRespOptions, MapResponse, QContinuation, RustyPipeQuery,
|
||||||
};
|
};
|
||||||
|
|
||||||
impl RustyPipeQuery {
|
impl RustyPipeQuery {
|
||||||
|
|
@ -189,16 +189,10 @@ impl MapResponse<Paginator<MusicItem>> for response::MusicContinuation {
|
||||||
mapper.add_warnings(&mut panel.contents.warnings);
|
mapper.add_warnings(&mut panel.contents.warnings);
|
||||||
panel.contents.c.into_iter().for_each(|item| {
|
panel.contents.c.into_iter().for_each(|item| {
|
||||||
if let PlaylistPanelVideo::PlaylistPanelVideoRenderer(item) = item {
|
if let PlaylistPanelVideo::PlaylistPanelVideoRenderer(item) = item {
|
||||||
match map_queue_item(item, ctx.lang) {
|
let mut track = map_queue_item(item, ctx.lang);
|
||||||
Ok(mut track) => {
|
|
||||||
mapper.add_item(MusicItem::Track(track.c));
|
mapper.add_item(MusicItem::Track(track.c));
|
||||||
mapper.add_warnings(&mut track.warnings);
|
mapper.add_warnings(&mut track.warnings);
|
||||||
}
|
}
|
||||||
Err(e) => {
|
|
||||||
mapper.add_warning(e.to_string());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
Some(response::music_item::ContinuationContents::GridContinuation(mut grid)) => {
|
Some(response::music_item::ContinuationContents::GridContinuation(mut grid)) => {
|
||||||
|
|
@ -255,9 +249,11 @@ impl MapResponse<Paginator<HistoryItem<VideoItem>>> for response::Continuation {
|
||||||
&mut map_res,
|
&mut map_res,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
response::YouTubeListItem::ContinuationItemRenderer(ep) if ctoken.is_none() => {
|
response::YouTubeListItem::ContinuationItemRenderer(ep) => {
|
||||||
|
if ctoken.is_none() {
|
||||||
ctoken = ep.continuation_endpoint.into_token();
|
ctoken = ep.continuation_endpoint.into_token();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
use std::{
|
use std::{
|
||||||
borrow::Cow,
|
borrow::Cow,
|
||||||
collections::{BTreeMap, HashMap},
|
collections::{BTreeMap, HashMap, HashSet},
|
||||||
fmt::Debug,
|
fmt::Debug,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -12,21 +12,21 @@ use url::Url;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
deobfuscate::{DeobfData, Deobfuscator},
|
deobfuscate::{DeobfData, Deobfuscator},
|
||||||
error::{AuthError, DeobfError, Error, ExtractionError, UnavailabilityReason},
|
error::{internal::DeobfError, AuthError, Error, ExtractionError, UnavailabilityReason},
|
||||||
model::{
|
model::{
|
||||||
AudioCodec, AudioFormat, AudioStream, AudioTrack, DrmLicense, DrmSystem, Frameset,
|
traits::QualityOrd, AudioCodec, AudioFormat, AudioStream, AudioTrack, DrmLicense,
|
||||||
Subtitle, VideoCodec, VideoFormat, VideoPlayer, VideoPlayerDetails, VideoPlayerDrm,
|
DrmSystem, Frameset, Subtitle, VideoCodec, VideoFormat, VideoPlayer, VideoPlayerDetails,
|
||||||
VideoStream, traits::QualityOrd,
|
VideoPlayerDrm, VideoStream,
|
||||||
},
|
},
|
||||||
util,
|
util,
|
||||||
};
|
};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
ClientType, MapRespCtx, MapRespOptions, MapResponse, MapResult, PoToken, RustyPipeQuery,
|
|
||||||
response::{
|
response::{
|
||||||
self,
|
self,
|
||||||
player::{self, Format},
|
player::{self, Format},
|
||||||
},
|
},
|
||||||
|
ClientType, MapRespCtx, MapRespOptions, MapResponse, MapResult, PoToken, RustyPipeQuery,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Debug, Serialize)]
|
#[derive(Debug, Serialize)]
|
||||||
|
|
@ -106,6 +106,7 @@ impl RustyPipeQuery {
|
||||||
let mut last_e = None;
|
let mut last_e = None;
|
||||||
let mut query = Cow::Borrowed(self);
|
let mut query = Cow::Borrowed(self);
|
||||||
let mut clients_iter = clients.iter().peekable();
|
let mut clients_iter = clients.iter().peekable();
|
||||||
|
let mut failed_clients = HashSet::new();
|
||||||
|
|
||||||
while let Some(client) = clients_iter.next() {
|
while let Some(client) = clients_iter.next() {
|
||||||
if query.opts.auth == Some(true) && !self.auth_enabled(*client) {
|
if query.opts.auth == Some(true) && !self.auth_enabled(*client) {
|
||||||
|
|
@ -115,6 +116,9 @@ impl RustyPipeQuery {
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if failed_clients.contains(client) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
let res = query.player_from_client(video_id, *client).await;
|
let res = query.player_from_client(video_id, *client).await;
|
||||||
match res {
|
match res {
|
||||||
|
|
@ -127,11 +131,10 @@ impl RustyPipeQuery {
|
||||||
return Err(Error::Extraction(e));
|
return Err(Error::Extraction(e));
|
||||||
}
|
}
|
||||||
if let Some(next_client) = clients_iter.peek() {
|
if let Some(next_client) = clients_iter.peek() {
|
||||||
tracing::warn!(
|
tracing::warn!("error fetching player with {client:?} client: {e}; retrying with {next_client:?} client");
|
||||||
"error fetching player with {client:?} client: {e}; retrying with {next_client:?} client"
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
last_e = Some(Error::Extraction(e));
|
last_e = Some(Error::Extraction(e));
|
||||||
|
failed_clients.insert(*client);
|
||||||
}
|
}
|
||||||
Err(e) => return Err(e),
|
Err(e) => return Err(e),
|
||||||
}
|
}
|
||||||
|
|
@ -188,10 +191,10 @@ impl RustyPipeQuery {
|
||||||
}
|
}
|
||||||
let video_id = video_id.as_ref();
|
let video_id = video_id.as_ref();
|
||||||
|
|
||||||
let (deobf, player_po, visitor_data) = tokio::try_join!(
|
let (deobf, player_po) = tokio::try_join!(
|
||||||
async {
|
async {
|
||||||
if client_type.needs_deobf() {
|
if client_type.needs_deobf() {
|
||||||
Ok::<_, Error>(self.client.get_deobf_data().await?)
|
Ok::<_, Error>(Some(self.client.get_deobf_data().await?))
|
||||||
} else {
|
} else {
|
||||||
Ok(None)
|
Ok(None)
|
||||||
}
|
}
|
||||||
|
|
@ -202,14 +205,7 @@ impl RustyPipeQuery {
|
||||||
} else {
|
} else {
|
||||||
Ok(PlayerPoToken::default())
|
Ok(PlayerPoToken::default())
|
||||||
}
|
}
|
||||||
},
|
|
||||||
async {
|
|
||||||
if client_type.needs_visitor_data() {
|
|
||||||
Ok::<_, Error>(Some(self.get_visitor_data(false).await?))
|
|
||||||
} else {
|
|
||||||
Ok(None)
|
|
||||||
}
|
}
|
||||||
},
|
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
let playback_context = deobf.as_ref().map(|deobf| QPlaybackContext {
|
let playback_context = deobf.as_ref().map(|deobf| QPlaybackContext {
|
||||||
|
|
@ -234,10 +230,7 @@ impl RustyPipeQuery {
|
||||||
"player",
|
"player",
|
||||||
&request_body,
|
&request_body,
|
||||||
MapRespOptions {
|
MapRespOptions {
|
||||||
visitor_data: player_po
|
visitor_data: player_po.visitor_data.as_deref(),
|
||||||
.visitor_data
|
|
||||||
.as_deref()
|
|
||||||
.or(visitor_data.as_deref()),
|
|
||||||
deobf: deobf.as_ref(),
|
deobf: deobf.as_ref(),
|
||||||
unlocalized: true,
|
unlocalized: true,
|
||||||
session_po_token: player_po.session_po_token,
|
session_po_token: player_po.session_po_token,
|
||||||
|
|
@ -252,12 +245,10 @@ impl RustyPipeQuery {
|
||||||
/// The order may change in the future in case YouTube applies changes to their
|
/// The order may change in the future in case YouTube applies changes to their
|
||||||
/// platform that disable a client or make it less reliable.
|
/// platform that disable a client or make it less reliable.
|
||||||
pub fn player_client_order(&self) -> &'static [ClientType] {
|
pub fn player_client_order(&self) -> &'static [ClientType] {
|
||||||
if self.client.inner.botguard.is_some() && Deobfuscator::ENABLED {
|
if self.client.inner.botguard.is_some() {
|
||||||
&[ClientType::Tv, ClientType::AndroidVr, ClientType::Desktop]
|
&[ClientType::Desktop, ClientType::Ios, ClientType::Tv]
|
||||||
} else if Deobfuscator::ENABLED {
|
|
||||||
&[ClientType::Tv, ClientType::AndroidVr]
|
|
||||||
} else {
|
} else {
|
||||||
&[ClientType::AndroidVr]
|
&[ClientType::Ios, ClientType::Tv]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -309,8 +300,7 @@ impl MapResponse<VideoPlayer> for response::Player {
|
||||||
// Check playability status
|
// Check playability status
|
||||||
let is_live = match self.playability_status {
|
let is_live = match self.playability_status {
|
||||||
response::player::PlayabilityStatus::Ok { live_streamability } => {
|
response::player::PlayabilityStatus::Ok { live_streamability } => {
|
||||||
let ls = live_streamability.live_streamability_renderer;
|
live_streamability.is_some()
|
||||||
ls.broadcast_id.is_some() && !ls.display_endscreen
|
|
||||||
}
|
}
|
||||||
response::player::PlayabilityStatus::Unplayable {
|
response::player::PlayabilityStatus::Unplayable {
|
||||||
reason,
|
reason,
|
||||||
|
|
@ -397,6 +387,21 @@ impl MapResponse<VideoPlayer> for response::Player {
|
||||||
video_details.video_id, ctx.id
|
video_details.video_id, ctx.id
|
||||||
)));
|
)));
|
||||||
}
|
}
|
||||||
|
// Sometimes YouTube Desktop does not output any URLs for adaptive streams.
|
||||||
|
// Since this is currently rare, it is best to retry the request in this case.
|
||||||
|
if !is_live
|
||||||
|
&& !streaming_data.adaptive_formats.c.is_empty()
|
||||||
|
&& streaming_data
|
||||||
|
.adaptive_formats
|
||||||
|
.c
|
||||||
|
.iter()
|
||||||
|
.all(|f| f.url.is_none() && f.signature_cipher.is_none())
|
||||||
|
{
|
||||||
|
return Err(ExtractionError::Unavailable {
|
||||||
|
reason: UnavailabilityReason::TryAgain,
|
||||||
|
msg: "no adaptive stream URLs".to_owned(),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
let video_info = VideoPlayerDetails {
|
let video_info = VideoPlayerDetails {
|
||||||
id: video_details.video_id,
|
id: video_details.video_id,
|
||||||
|
|
@ -412,27 +417,11 @@ impl MapResponse<VideoPlayer> for response::Player {
|
||||||
is_live_content: video_details.is_live_content,
|
is_live_content: video_details.is_live_content,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let streams = if !is_live {
|
||||||
let mut mapper = StreamsMapper::new(
|
let mut mapper = StreamsMapper::new(
|
||||||
ctx.deobf,
|
ctx.deobf,
|
||||||
ctx.session_po_token.as_ref().map(|t| t.po_token.as_str()),
|
ctx.session_po_token.as_ref().map(|t| t.po_token.as_str()),
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
let abr_streaming_url = match &streaming_data.server_abr_streaming_url {
|
|
||||||
Some(url) => match mapper.map_url_abr(url) {
|
|
||||||
Ok(res) => Some(res),
|
|
||||||
Err(e) => {
|
|
||||||
warnings.push(format!("could not map abr_streaming_url: {e}"));
|
|
||||||
None
|
|
||||||
}
|
|
||||||
},
|
|
||||||
None => None,
|
|
||||||
};
|
|
||||||
let abr_ustreamer_config = self.player_config.media_common_config.map(|cfg| {
|
|
||||||
cfg.media_ustreamer_request_config
|
|
||||||
.video_playback_ustreamer_config
|
|
||||||
});
|
|
||||||
|
|
||||||
let streams = if !is_live {
|
|
||||||
mapper.map_streams(streaming_data.formats);
|
mapper.map_streams(streaming_data.formats);
|
||||||
mapper.map_streams(streaming_data.adaptive_formats);
|
mapper.map_streams(streaming_data.adaptive_formats);
|
||||||
let mut res = mapper.output()?;
|
let mut res = mapper.output()?;
|
||||||
|
|
@ -541,12 +530,6 @@ impl MapResponse<VideoPlayer> for response::Player {
|
||||||
valid_until,
|
valid_until,
|
||||||
hls_manifest_url: streaming_data.hls_manifest_url,
|
hls_manifest_url: streaming_data.hls_manifest_url,
|
||||||
dash_manifest_url: streaming_data.dash_manifest_url,
|
dash_manifest_url: streaming_data.dash_manifest_url,
|
||||||
abr_streaming_url,
|
|
||||||
abr_ustreamer_config,
|
|
||||||
po_token: ctx
|
|
||||||
.session_po_token
|
|
||||||
.as_ref()
|
|
||||||
.map(|pot| pot.po_token.to_owned()),
|
|
||||||
preview_frames,
|
preview_frames,
|
||||||
drm,
|
drm,
|
||||||
client_type: ctx.client_type,
|
client_type: ctx.client_type,
|
||||||
|
|
@ -585,8 +568,8 @@ impl<'a> StreamsMapper<'a> {
|
||||||
deobf_data: Option<&DeobfData>,
|
deobf_data: Option<&DeobfData>,
|
||||||
session_po_token: Option<&'a str>,
|
session_po_token: Option<&'a str>,
|
||||||
) -> Result<Self, DeobfError> {
|
) -> Result<Self, DeobfError> {
|
||||||
let deobf = match deobf_data.and_then(|d| d.script.as_deref()) {
|
let deobf = match deobf_data {
|
||||||
Some(script) => Some(Deobfuscator::new(script)?),
|
Some(deobf_data) => Some(Deobfuscator::new(deobf_data)?),
|
||||||
None => None,
|
None => None,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -605,15 +588,10 @@ impl<'a> StreamsMapper<'a> {
|
||||||
self.warnings.append(&mut streams.warnings);
|
self.warnings.append(&mut streams.warnings);
|
||||||
|
|
||||||
let map_e = |m: &mut Self, e: ExtractionError| {
|
let map_e = |m: &mut Self, e: ExtractionError| {
|
||||||
if !matches!(
|
|
||||||
e,
|
|
||||||
ExtractionError::Deobfuscation(DeobfError::Disabled | DeobfError::NoInstance)
|
|
||||||
) {
|
|
||||||
m.warnings.push(e.to_string());
|
m.warnings.push(e.to_string());
|
||||||
if m.first_err.is_none() {
|
if m.first_err.is_none() {
|
||||||
m.first_err = Some(e);
|
m.first_err = Some(e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
for f in streams.c {
|
for f in streams.c {
|
||||||
|
|
@ -645,10 +623,11 @@ impl<'a> StreamsMapper<'a> {
|
||||||
// If we did not extract any streams and there were mapping errors, fail with the first error
|
// If we did not extract any streams and there were mapping errors, fail with the first error
|
||||||
if self.streams.video_streams.is_empty()
|
if self.streams.video_streams.is_empty()
|
||||||
&& (self.streams.video_only_streams.is_empty() || self.streams.audio_streams.is_empty())
|
&& (self.streams.video_only_streams.is_empty() || self.streams.audio_streams.is_empty())
|
||||||
&& let Some(e) = self.first_err
|
|
||||||
{
|
{
|
||||||
|
if let Some(e) = self.first_err {
|
||||||
return Err(e);
|
return Err(e);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
self.streams.video_streams.sort_by(QualityOrd::quality_cmp);
|
self.streams.video_streams.sort_by(QualityOrd::quality_cmp);
|
||||||
self.streams
|
self.streams
|
||||||
|
|
@ -663,11 +642,9 @@ impl<'a> StreamsMapper<'a> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn deobf(&self) -> Result<&Deobfuscator, DeobfError> {
|
fn deobf(&self) -> Result<&Deobfuscator, DeobfError> {
|
||||||
self.deobf.as_ref().ok_or(if Deobfuscator::ENABLED {
|
self.deobf
|
||||||
DeobfError::NoInstance
|
.as_ref()
|
||||||
} else {
|
.ok_or(DeobfError::Other("no deobfuscator".into()))
|
||||||
DeobfError::Disabled
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cipher_to_url_params(
|
fn cipher_to_url_params(
|
||||||
|
|
@ -682,18 +659,13 @@ impl<'a> StreamsMapper<'a> {
|
||||||
// `sp`: Signature parameter
|
// `sp`: Signature parameter
|
||||||
// `url`: URL that is missing the signature parameter
|
// `url`: URL that is missing the signature parameter
|
||||||
|
|
||||||
let sig = params
|
let sig = params.get("s").ok_or(DeobfError::Extraction("s param"))?;
|
||||||
.get("s")
|
let sp = params.get("sp").ok_or(DeobfError::Extraction("sp param"))?;
|
||||||
.ok_or(DeobfError::Extraction("s param".into()))?;
|
|
||||||
let sp = params
|
|
||||||
.get("sp")
|
|
||||||
.ok_or(DeobfError::Extraction("sp param".into()))?;
|
|
||||||
let raw_url = params
|
let raw_url = params
|
||||||
.get("url")
|
.get("url")
|
||||||
.ok_or(DeobfError::Extraction("no url param".into()))?;
|
.ok_or(DeobfError::Extraction("no url param"))?;
|
||||||
let (url_base, mut url_params) = util::url_to_params(raw_url).or(Err(
|
let (url_base, mut url_params) =
|
||||||
DeobfError::Extraction("cannot split url to params".into()),
|
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);
|
url_params.insert(sp.to_string(), deobf_sig);
|
||||||
|
|
@ -722,23 +694,23 @@ impl<'a> StreamsMapper<'a> {
|
||||||
url: &Option<String>,
|
url: &Option<String>,
|
||||||
signature_cipher: &Option<String>,
|
signature_cipher: &Option<String>,
|
||||||
) -> Result<UrlMapRes, ExtractionError> {
|
) -> Result<UrlMapRes, ExtractionError> {
|
||||||
let (url_base, mut url_params) = match url {
|
let (url_base, mut url_params) =
|
||||||
|
match url {
|
||||||
Some(url) => util::url_to_params(url).map_err(|_| {
|
Some(url) => util::url_to_params(url).map_err(|_| {
|
||||||
ExtractionError::InvalidData(format!("Could not parse url `{url}`").into())
|
ExtractionError::InvalidData(format!("Could not parse url `{url}`").into())
|
||||||
}),
|
}),
|
||||||
None => match signature_cipher {
|
None => match signature_cipher {
|
||||||
Some(signature_cipher) => {
|
Some(signature_cipher) => {
|
||||||
self.cipher_to_url_params(signature_cipher).map_err(|e| {
|
self.cipher_to_url_params(signature_cipher).map_err(|e| {
|
||||||
if matches!(e, DeobfError::Extraction(_)) {
|
|
||||||
ExtractionError::InvalidData(
|
ExtractionError::InvalidData(
|
||||||
format!("Could not deobfuscate signatureCipher `{signature_cipher}`: {e}")
|
format!("Could not deobfuscate signatureCipher `{signature_cipher}`: {e}")
|
||||||
.into())
|
.into(),
|
||||||
} else {
|
)
|
||||||
ExtractionError::Deobfuscation(e)
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
None => return Ok(UrlMapRes::default()),
|
None => Err(ExtractionError::InvalidData(
|
||||||
|
"stream contained neither url or cipher".into(),
|
||||||
|
)),
|
||||||
},
|
},
|
||||||
}?;
|
}?;
|
||||||
|
|
||||||
|
|
@ -751,21 +723,11 @@ impl<'a> StreamsMapper<'a> {
|
||||||
.map_err(|_| ExtractionError::InvalidData("could not combine URL".into()))?;
|
.map_err(|_| ExtractionError::InvalidData("could not combine URL".into()))?;
|
||||||
|
|
||||||
Ok(UrlMapRes {
|
Ok(UrlMapRes {
|
||||||
url: Some(url.to_string()),
|
url: url.to_string(),
|
||||||
xtags: url_params.get("xtags").cloned(),
|
xtags: url_params.get("xtags").cloned(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fn map_url_abr(&mut self, url: &str) -> Result<String, ExtractionError> {
|
|
||||||
let (url_base, mut url_params) = util::url_to_params(url).map_err(|_| {
|
|
||||||
ExtractionError::InvalidData(format!("Could not parse url `{url}`").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(url.to_string())
|
|
||||||
}
|
|
||||||
|
|
||||||
fn map_video_stream(&mut self, f: player::Format) -> Result<VideoStream, ExtractionError> {
|
fn map_video_stream(&mut self, f: player::Format) -> Result<VideoStream, ExtractionError> {
|
||||||
let Some((mtype, codecs)) = parse_mime(&f.mime_type) else {
|
let Some((mtype, codecs)) = parse_mime(&f.mime_type) else {
|
||||||
return Err(ExtractionError::InvalidData(
|
return Err(ExtractionError::InvalidData(
|
||||||
|
|
@ -789,7 +751,6 @@ impl<'a> StreamsMapper<'a> {
|
||||||
bitrate: f.bitrate,
|
bitrate: f.bitrate,
|
||||||
average_bitrate: f.average_bitrate.unwrap_or(f.bitrate),
|
average_bitrate: f.average_bitrate.unwrap_or(f.bitrate),
|
||||||
size: f.content_length,
|
size: f.content_length,
|
||||||
last_modified: f.last_modified,
|
|
||||||
index_range: f.index_range,
|
index_range: f.index_range,
|
||||||
init_range: f.init_range,
|
init_range: f.init_range,
|
||||||
duration_ms: f.approx_duration_ms,
|
duration_ms: f.approx_duration_ms,
|
||||||
|
|
@ -804,7 +765,6 @@ impl<'a> StreamsMapper<'a> {
|
||||||
format,
|
format,
|
||||||
codec: get_video_codec(codecs),
|
codec: get_video_codec(codecs),
|
||||||
mime: f.mime_type,
|
mime: f.mime_type,
|
||||||
xtags: f.xtags,
|
|
||||||
drm_track_type: f.drm_track_type.map(|t| t.into()),
|
drm_track_type: f.drm_track_type.map(|t| t.into()),
|
||||||
drm_systems: f.drm_families.into_iter().map(|t| t.into()).collect(),
|
drm_systems: f.drm_families.into_iter().map(|t| t.into()).collect(),
|
||||||
})
|
})
|
||||||
|
|
@ -835,7 +795,6 @@ impl<'a> StreamsMapper<'a> {
|
||||||
format!("no audio content length. itag: {}", f.itag).into(),
|
format!("no audio content length. itag: {}", f.itag).into(),
|
||||||
)
|
)
|
||||||
})?,
|
})?,
|
||||||
last_modified: f.last_modified,
|
|
||||||
index_range: f.index_range,
|
index_range: f.index_range,
|
||||||
init_range: f.init_range,
|
init_range: f.init_range,
|
||||||
duration_ms: f.approx_duration_ms,
|
duration_ms: f.approx_duration_ms,
|
||||||
|
|
@ -844,11 +803,9 @@ impl<'a> StreamsMapper<'a> {
|
||||||
mime: f.mime_type,
|
mime: f.mime_type,
|
||||||
channels: f.audio_channels,
|
channels: f.audio_channels,
|
||||||
loudness_db: f.loudness_db,
|
loudness_db: f.loudness_db,
|
||||||
is_drc: f.is_drc,
|
|
||||||
track: f
|
track: f
|
||||||
.audio_track
|
.audio_track
|
||||||
.map(|t| self.map_audio_track(t, map_res.xtags.as_deref())),
|
.map(|t| self.map_audio_track(t, map_res.xtags)),
|
||||||
xtags: f.xtags,
|
|
||||||
drm_track_type: f.drm_track_type.map(|t| t.into()),
|
drm_track_type: f.drm_track_type.map(|t| t.into()),
|
||||||
drm_systems: f.drm_families.into_iter().map(|t| t.into()).collect(),
|
drm_systems: f.drm_families.into_iter().map(|t| t.into()).collect(),
|
||||||
})
|
})
|
||||||
|
|
@ -857,7 +814,7 @@ impl<'a> StreamsMapper<'a> {
|
||||||
fn map_audio_track(
|
fn map_audio_track(
|
||||||
&mut self,
|
&mut self,
|
||||||
track: response::player::AudioTrack,
|
track: response::player::AudioTrack,
|
||||||
xtags: Option<&str>,
|
xtags: Option<String>,
|
||||||
) -> AudioTrack {
|
) -> AudioTrack {
|
||||||
let mut lang = None;
|
let mut lang = None;
|
||||||
let mut track_type = None;
|
let mut track_type = None;
|
||||||
|
|
@ -893,9 +850,8 @@ impl<'a> StreamsMapper<'a> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Default)]
|
|
||||||
struct UrlMapRes {
|
struct UrlMapRes {
|
||||||
url: Option<String>,
|
url: String,
|
||||||
xtags: Option<String>,
|
xtags: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1001,12 +957,13 @@ mod tests {
|
||||||
use time::UtcOffset;
|
use time::UtcOffset;
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
use crate::{param::Language, util::tests::TESTFILES};
|
use crate::{deobfuscate::DeobfData, param::Language, util::tests::TESTFILES};
|
||||||
|
|
||||||
static DEOBF_DATA: Lazy<DeobfData> = Lazy::new(|| {
|
static DEOBF_DATA: Lazy<DeobfData> = Lazy::new(|| {
|
||||||
DeobfData {
|
DeobfData {
|
||||||
js_url: "https://www.youtube.com/s/player/c8b8a173/player_ias.vflset/en_US/base.js".to_owned(),
|
js_url: "https://www.youtube.com/s/player/c8b8a173/player_ias.vflset/en_US/base.js".to_owned(),
|
||||||
script: Some("var oB={B4:function(a){a.reverse()},xm:function(a,b){a.splice(0,b)},dC:function(a,b){var c=a[0];a[0]=a[b%a.length];a[b%a.length]=c}};var Vva=function(a){a=a.split(\"\");oB.dC(a,42);oB.xm(a,3);oB.dC(a,48);oB.B4(a,68);return a.join(\"\")};var deobf_sig=Vva; var Ska=function(a){var b=a.split(\"\"),c=[-1505243983,function(d,e){e=(e%d.length+d.length)%d.length;d.splice(-e).reverse().forEach(function(f){d.unshift(f)})},\n-1692381986,function(d,e){e=(e%d.length+d.length)%d.length;var f=d[0];d[0]=d[e];d[e]=f},\n-262444939,\"unshift\",function(d){for(var e=d.length;e;)d.push(d.splice(--e,1)[0])},\n1201502951,-546377604,-504264123,-1978377336,1042456724,function(d,e){for(e=(e%d.length+d.length)%d.length;e--;)d.unshift(d.pop())},\n711986897,406699922,-1842537993,-1678108293,1803491779,1671716087,12778705,-718839990,null,null,-1617525823,342523552,-1338406651,-399705108,-696713950,b,function(d,e){e=(e%d.length+d.length)%d.length;d.splice(0,1,d.splice(e,1,d[0])[0])},\nfunction(d,e){e=(e%d.length+d.length)%d.length;d.splice(e,1)},\n-980602034,356396192,null,-1617525823,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(\"\"))},\n-1029864222,-641353250,-1681901809,-1391247867,1707415199,-1957855835,b,function(){for(var d=64,e=[];++d-e.length-32;)switch(d){case 58:d=96;continue;case 91:d=44;break;case 65:d=47;continue;case 46:d=153;case 123:d-=58;default:e.push(String.fromCharCode(d))}return e},\n-1936558978,-1505243983,function(d){d.reverse()},\n1296889058,-1813915420,-943019300,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(\"\"))},\n\"join\",b,-2061642263];c[21]=c;c[22]=c;c[33]=c;try{c[3](c[33],c[9]),c[29](c[22],c[25]),c[29](c[22],c[19]),c[29](c[33],c[17]),c[29](c[21],c[2]),c[29](c[42],c[10]),c[1](c[52],c[40]),c[12](c[28],c[8]),c[29](c[21],c[45]),c[1](c[21],c[48]),c[44](c[26]),c[39](c[5],c[2]),c[31](c[53],c[16]),c[30](c[29],c[8]),c[51](c[29],c[6],c[44]()),c[4](c[43],c[1]),c[2](c[23],c[42]),c[2](c[0],c[46]),c[38](c[14],c[52]),c[32](c[5]),c[26](c[29],c[46]),c[26](c[5],c[13]),c[28](c[1],c[37]),c[26](c[31],c[13]),c[26](c[1],c[34]),\nc[46](c[1],c[32],c[40]()),c[26](c[50],c[44]),c[17](c[50],c[51]),c[0](c[3],c[24]),c[32](c[13]),c[43](c[3],c[51]),c[0](c[34],c[17]),c[16](c[45],c[53]),c[29](c[44],c[13]),c[42](c[1],c[50]),c[47](c[22],c[53]),c[37](c[22]),c[13](c[52],c[21]),c[6](c[43],c[34]),c[6](c[31],c[46])}catch(d){return\"enhanced_except_gZYB_un-_w8_\"+a}return b.join(\"\")};var deobf_nsig=Ska;".to_owned()),
|
sig_fn: "var oB={B4:function(a){a.reverse()},xm:function(a,b){a.splice(0,b)},dC:function(a,b){var c=a[0];a[0]=a[b%a.length];a[b%a.length]=c}};var Vva=function(a){a=a.split(\"\");oB.dC(a,42);oB.xm(a,3);oB.dC(a,48);oB.B4(a,68);return a.join(\"\")};var deobf_sig=Vva;".to_owned(),
|
||||||
|
nsig_fn: "Ska=function(a){var b=a.split(\"\"),c=[-1505243983,function(d,e){e=(e%d.length+d.length)%d.length;d.splice(-e).reverse().forEach(function(f){d.unshift(f)})},\n-1692381986,function(d,e){e=(e%d.length+d.length)%d.length;var f=d[0];d[0]=d[e];d[e]=f},\n-262444939,\"unshift\",function(d){for(var e=d.length;e;)d.push(d.splice(--e,1)[0])},\n1201502951,-546377604,-504264123,-1978377336,1042456724,function(d,e){for(e=(e%d.length+d.length)%d.length;e--;)d.unshift(d.pop())},\n711986897,406699922,-1842537993,-1678108293,1803491779,1671716087,12778705,-718839990,null,null,-1617525823,342523552,-1338406651,-399705108,-696713950,b,function(d,e){e=(e%d.length+d.length)%d.length;d.splice(0,1,d.splice(e,1,d[0])[0])},\nfunction(d,e){e=(e%d.length+d.length)%d.length;d.splice(e,1)},\n-980602034,356396192,null,-1617525823,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(\"\"))},\n-1029864222,-641353250,-1681901809,-1391247867,1707415199,-1957855835,b,function(){for(var d=64,e=[];++d-e.length-32;)switch(d){case 58:d=96;continue;case 91:d=44;break;case 65:d=47;continue;case 46:d=153;case 123:d-=58;default:e.push(String.fromCharCode(d))}return e},\n-1936558978,-1505243983,function(d){d.reverse()},\n1296889058,-1813915420,-943019300,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(\"\"))},\n\"join\",b,-2061642263];c[21]=c;c[22]=c;c[33]=c;try{c[3](c[33],c[9]),c[29](c[22],c[25]),c[29](c[22],c[19]),c[29](c[33],c[17]),c[29](c[21],c[2]),c[29](c[42],c[10]),c[1](c[52],c[40]),c[12](c[28],c[8]),c[29](c[21],c[45]),c[1](c[21],c[48]),c[44](c[26]),c[39](c[5],c[2]),c[31](c[53],c[16]),c[30](c[29],c[8]),c[51](c[29],c[6],c[44]()),c[4](c[43],c[1]),c[2](c[23],c[42]),c[2](c[0],c[46]),c[38](c[14],c[52]),c[32](c[5]),c[26](c[29],c[46]),c[26](c[5],c[13]),c[28](c[1],c[37]),c[26](c[31],c[13]),c[26](c[1],c[34]),\nc[46](c[1],c[32],c[40]()),c[26](c[50],c[44]),c[17](c[50],c[51]),c[0](c[3],c[24]),c[32](c[13]),c[43](c[3],c[51]),c[0](c[34],c[17]),c[16](c[45],c[53]),c[29](c[44],c[13]),c[42](c[1],c[50]),c[47](c[22],c[53]),c[37](c[22]),c[13](c[52],c[21]),c[6](c[43],c[34]),c[6](c[31],c[46])}catch(d){return\"enhanced_except_gZYB_un-_w8_\"+a}return b.join(\"\")};var deobf_nsig=Ska;".to_owned(),
|
||||||
sts: "19201".to_owned(),
|
sts: "19201".to_owned(),
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
@ -1056,12 +1013,8 @@ mod tests {
|
||||||
let url = mapper
|
let url = mapper
|
||||||
.map_url(&None, &Some(signature_cipher.to_owned()))
|
.map_url(&None, &Some(signature_cipher.to_owned()))
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.url
|
.url;
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
assert_eq!(
|
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");
|
||||||
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"
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,15 +5,15 @@ use time::OffsetDateTime;
|
||||||
use crate::{
|
use crate::{
|
||||||
error::{Error, ExtractionError},
|
error::{Error, ExtractionError},
|
||||||
model::{
|
model::{
|
||||||
ChannelId, Playlist, VideoItem,
|
|
||||||
paginator::{ContinuationEndpoint, Paginator},
|
paginator::{ContinuationEndpoint, Paginator},
|
||||||
richtext::RichText,
|
richtext::RichText,
|
||||||
|
ChannelId, Playlist, VideoItem,
|
||||||
},
|
},
|
||||||
serializer::text::{TextComponent, TextComponents},
|
serializer::text::{TextComponent, TextComponents},
|
||||||
util::{self, TryRemove, dictionary, timeago},
|
util::{self, dictionary, timeago, TryRemove},
|
||||||
};
|
};
|
||||||
|
|
||||||
use super::{ClientType, MapRespCtx, MapResponse, MapResult, QBrowse, RustyPipeQuery, response};
|
use super::{response, ClientType, MapRespCtx, MapResponse, MapResult, QBrowse, RustyPipeQuery};
|
||||||
|
|
||||||
impl RustyPipeQuery {
|
impl RustyPipeQuery {
|
||||||
/// Get a YouTube playlist
|
/// Get a YouTube playlist
|
||||||
|
|
@ -59,8 +59,14 @@ impl MapResponse<Playlist> for response::Playlist {
|
||||||
"sectionListRenderer empty",
|
"sectionListRenderer empty",
|
||||||
)))?
|
)))?
|
||||||
.item_section_renderer
|
.item_section_renderer
|
||||||
|
.contents
|
||||||
|
.into_iter()
|
||||||
|
.next()
|
||||||
|
.ok_or(ExtractionError::InvalidData(Cow::Borrowed(
|
||||||
|
"itemSectionRenderer empty",
|
||||||
|
)))?
|
||||||
|
.playlist_video_list_renderer
|
||||||
.contents;
|
.contents;
|
||||||
// dbg!(&ci.warnings);
|
|
||||||
|
|
||||||
let mut mapper = response::YouTubeListMapper::<VideoItem>::new(ctx.lang);
|
let mut mapper = response::YouTubeListMapper::<VideoItem>::new(ctx.lang);
|
||||||
mapper.map_response(video_items);
|
mapper.map_response(video_items);
|
||||||
|
|
@ -252,8 +258,6 @@ mod tests {
|
||||||
#[case::live("live", "UULVvqRdlKsE5Q8mf8YXbdIJLw")]
|
#[case::live("live", "UULVvqRdlKsE5Q8mf8YXbdIJLw")]
|
||||||
#[case::pageheader("20241011_pageheader", "PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5")]
|
#[case::pageheader("20241011_pageheader", "PLT2w2oBf1TZKyvY_M6JsASs73m-wjLzH5")]
|
||||||
#[case::cmdexecutor("20250316_cmdexecutor", "PLbZIPy20-1pN7mqjckepWF78ndb6ci_qi")]
|
#[case::cmdexecutor("20250316_cmdexecutor", "PLbZIPy20-1pN7mqjckepWF78ndb6ci_qi")]
|
||||||
#[case::featuring("featuring", "PLLsua0MU5Y8JZZaDko8Ewv95Tv98A36ee")]
|
|
||||||
#[case::noplrenderer("20260610_noplrenderer", "PLbZIPy20-1pN7mqjckepWF78ndb6ci_qi")]
|
|
||||||
fn map_playlist_data(#[case] name: &str, #[case] id: &str) {
|
fn map_playlist_data(#[case] name: &str, #[case] id: &str) {
|
||||||
let json_path = path!(*TESTFILES / "playlist" / format!("playlist_{name}.json"));
|
let json_path = path!(*TESTFILES / "playlist" / format!("playlist_{name}.json"));
|
||||||
let json_file = File::open(json_path).unwrap();
|
let json_file = File::open(json_path).unwrap();
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use serde_with::{DefaultOnError, VecSkipError, rust::deserialize_ignore_any, serde_as};
|
use serde_with::{rust::deserialize_ignore_any, serde_as, DefaultOnError, VecSkipError};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
Alert, AttachmentRun, AvatarViewModel, ChannelBadge, ContentRenderer, ContentsRenderer,
|
video_item::YouTubeListRenderer, Alert, AttachmentRun, AvatarViewModel, ChannelBadge,
|
||||||
ContinuationActionWrap, ImageView, PageHeaderRendererContent, PhMetadataView, ResponseContext,
|
ContentRenderer, ContentsRenderer, ContinuationActionWrap, ImageView,
|
||||||
Thumbnails, TwoColumnBrowseResults, video_item::YouTubeListRenderer,
|
PageHeaderRendererContent, PhMetadataView, ResponseContext, Thumbnails, TwoColumnBrowseResults,
|
||||||
};
|
};
|
||||||
use crate::{
|
use crate::{
|
||||||
model::Verification,
|
model::Verification,
|
||||||
|
|
@ -75,6 +75,7 @@ pub(crate) struct ChannelTabWebCommandMetadata {
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
|
#[allow(clippy::enum_variant_names)]
|
||||||
pub(crate) enum Header {
|
pub(crate) enum Header {
|
||||||
C4TabbedHeaderRenderer(HeaderRenderer),
|
C4TabbedHeaderRenderer(HeaderRenderer),
|
||||||
/// Used for special channels like YouTube Music
|
/// Used for special channels like YouTube Music
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
|
|
||||||
use super::{Tab, TwoColumnBrowseResults, video_item::YouTubeListRendererWrap};
|
use super::{video_item::YouTubeListRendererWrap, Tab, TwoColumnBrowseResults};
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
pub(crate) struct History {
|
pub(crate) struct History {
|
||||||
|
|
|
||||||
|
|
@ -61,12 +61,11 @@ use std::collections::HashMap;
|
||||||
use std::marker::PhantomData;
|
use std::marker::PhantomData;
|
||||||
|
|
||||||
use serde::{
|
use serde::{
|
||||||
Deserialize,
|
|
||||||
de::{IgnoredAny, Visitor},
|
de::{IgnoredAny, Visitor},
|
||||||
|
Deserialize,
|
||||||
};
|
};
|
||||||
use serde_with::{DisplayFromStr, VecSkipError, serde_as};
|
use serde_with::{serde_as, DisplayFromStr, VecSkipError};
|
||||||
|
|
||||||
use crate::client::response::url_endpoint::OnTapWrap;
|
|
||||||
use crate::error::ExtractionError;
|
use crate::error::ExtractionError;
|
||||||
use crate::serializer::text::{AttributedText, Text, TextComponent};
|
use crate::serializer::text::{AttributedText, Text, TextComponent};
|
||||||
use crate::serializer::{MapResult, VecSkipErrorWrap};
|
use crate::serializer::{MapResult, VecSkipErrorWrap};
|
||||||
|
|
@ -143,16 +142,13 @@ pub(crate) struct Thumbnails {
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub(crate) struct Thumbnail {
|
pub(crate) struct Thumbnail {
|
||||||
pub url: String,
|
pub url: String,
|
||||||
#[serde(default)]
|
|
||||||
pub width: u32,
|
pub width: u32,
|
||||||
#[serde(default)]
|
|
||||||
pub height: u32,
|
pub height: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub(crate) struct ContinuationItemRenderer {
|
pub(crate) struct ContinuationItemRenderer {
|
||||||
#[serde(alias = "continuationCommand")]
|
|
||||||
pub continuation_endpoint: ContinuationEndpoint,
|
pub continuation_endpoint: ContinuationEndpoint,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -160,16 +156,9 @@ pub(crate) struct ContinuationItemRenderer {
|
||||||
#[serde(untagged)]
|
#[serde(untagged)]
|
||||||
pub(crate) enum ContinuationEndpoint {
|
pub(crate) enum ContinuationEndpoint {
|
||||||
ContinuationCommand(ContinuationCommandWrap),
|
ContinuationCommand(ContinuationCommandWrap),
|
||||||
InnertubeCommand(ContinuationInnertubeCommand),
|
|
||||||
CommandExecutorCommand(CommandExecutorCommandWrap),
|
CommandExecutorCommand(CommandExecutorCommandWrap),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub(crate) struct ContinuationInnertubeCommand {
|
|
||||||
pub innertube_command: ContinuationCommandWrap,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub(crate) struct ContinuationCommandWrap {
|
pub(crate) struct ContinuationCommandWrap {
|
||||||
|
|
@ -200,7 +189,6 @@ impl ContinuationEndpoint {
|
||||||
pub fn into_token(self) -> Option<String> {
|
pub fn into_token(self) -> Option<String> {
|
||||||
match self {
|
match self {
|
||||||
Self::ContinuationCommand(cmd) => Some(cmd.continuation_command.token),
|
Self::ContinuationCommand(cmd) => Some(cmd.continuation_command.token),
|
||||||
Self::InnertubeCommand(cmd) => Some(cmd.innertube_command.continuation_command.token),
|
|
||||||
Self::CommandExecutorCommand(cmd) => cmd
|
Self::CommandExecutorCommand(cmd) => cmd
|
||||||
.command_executor_command
|
.command_executor_command
|
||||||
.commands
|
.commands
|
||||||
|
|
@ -714,7 +702,6 @@ pub(crate) struct ThumbnailViewModelWrap {
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub(crate) struct ImageViewOl {
|
pub(crate) struct ImageViewOl {
|
||||||
pub image: Thumbnails,
|
pub image: Thumbnails,
|
||||||
#[serde(default)]
|
|
||||||
#[serde_as(as = "VecSkipError<_>")]
|
#[serde_as(as = "VecSkipError<_>")]
|
||||||
pub overlays: Vec<ImageViewOverlay>,
|
pub overlays: Vec<ImageViewOverlay>,
|
||||||
}
|
}
|
||||||
|
|
@ -722,17 +709,15 @@ pub(crate) struct ImageViewOl {
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub(crate) struct ImageViewOverlay {
|
pub(crate) struct ImageViewOverlay {
|
||||||
#[serde(alias = "thumbnailOverlayBadgeViewModel")]
|
pub thumbnail_overlay_badge_view_model: ThumbnailOverlayBadgeViewModel,
|
||||||
pub thumbnail_bottom_overlay_view_model: ThumbnailBottomOverlayViewModel,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[serde_as]
|
#[serde_as]
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub(crate) struct ThumbnailBottomOverlayViewModel {
|
pub(crate) struct ThumbnailOverlayBadgeViewModel {
|
||||||
#[serde(alias = "thumbnailBadges")]
|
|
||||||
#[serde_as(as = "VecSkipError<_>")]
|
#[serde_as(as = "VecSkipError<_>")]
|
||||||
pub badges: Vec<ThumbnailBadges>,
|
pub thumbnail_badges: Vec<ThumbnailBadges>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
|
|
@ -743,9 +728,3 @@ pub(crate) struct ThumbnailBadges {
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
pub(crate) struct Empty {}
|
pub(crate) struct Empty {}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub(crate) struct AvatarRendererContext {
|
|
||||||
pub command_context: Option<OnTapWrap>,
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,14 @@
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use serde_with::{DefaultOnError, serde_as};
|
use serde_with::{serde_as, DefaultOnError};
|
||||||
|
|
||||||
use crate::serializer::text::{Text, TextComponents};
|
use crate::serializer::text::Text;
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
SectionList, Tab,
|
|
||||||
music_item::{
|
music_item::{
|
||||||
Button, Grid, ItemSection, MusicMicroformat, MusicThumbnailRenderer, SimpleHeader,
|
Button, Grid, ItemSection, MusicMicroformat, MusicThumbnailRenderer, SimpleHeader,
|
||||||
SingleColumnBrowseResult,
|
SingleColumnBrowseResult,
|
||||||
},
|
},
|
||||||
|
SectionList, Tab,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Response model for YouTube Music artists
|
/// Response model for YouTube Music artists
|
||||||
|
|
@ -37,7 +37,8 @@ pub(crate) struct MusicHeaderRenderer {
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
#[serde_as(as = "DefaultOnError")]
|
#[serde_as(as = "DefaultOnError")]
|
||||||
pub subscription_button: Option<SubscriptionButton>,
|
pub subscription_button: Option<SubscriptionButton>,
|
||||||
pub description: Option<TextComponents>,
|
#[serde_as(as = "Option<Text>")]
|
||||||
|
pub description: Option<String>,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub thumbnail: MusicThumbnailRenderer,
|
pub thumbnail: MusicThumbnailRenderer,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use serde_with::{VecSkipError, rust::deserialize_ignore_any, serde_as};
|
use serde_with::{rust::deserialize_ignore_any, serde_as, VecSkipError};
|
||||||
|
|
||||||
use crate::param::Country;
|
use crate::param::Country;
|
||||||
|
|
||||||
use super::{ContentsRenderer, SectionList, Tab, music_item::MusicCarouselShelf};
|
use super::{music_item::MusicCarouselShelf, ContentsRenderer, SectionList, Tab};
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,13 @@
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use serde_with::{DefaultOnError, VecSkipError, serde_as};
|
use serde_with::{serde_as, DefaultOnError, VecSkipError};
|
||||||
|
|
||||||
use crate::serializer::text::Text;
|
use crate::serializer::text::Text;
|
||||||
|
|
||||||
use super::ContentsRenderer;
|
use super::ContentsRenderer;
|
||||||
use super::TextBox;
|
use super::TextBox;
|
||||||
use super::{
|
use super::{
|
||||||
ContentRenderer,
|
|
||||||
music_item::{ItemSection, PlaylistPanelRenderer},
|
music_item::{ItemSection, PlaylistPanelRenderer},
|
||||||
|
ContentRenderer,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Response model for YouTube Music track details
|
/// Response model for YouTube Music track details
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,9 @@ use serde_with::{rust::deserialize_ignore_any, serde_as};
|
||||||
use crate::serializer::text::Text;
|
use crate::serializer::text::Text;
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
ContentsRendererLogged, SectionList, Tab,
|
|
||||||
music_item::{ItemSection, SimpleHeader, SingleColumnBrowseResult},
|
music_item::{ItemSection, SimpleHeader, SingleColumnBrowseResult},
|
||||||
url_endpoint::BrowseEndpointWrap,
|
url_endpoint::BrowseEndpointWrap,
|
||||||
|
ContentsRendererLogged, SectionList, Tab,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
|
|
|
||||||
|
|
@ -1,29 +1,25 @@
|
||||||
#![allow(clippy::large_enum_variant)]
|
|
||||||
|
|
||||||
use double_ended_peekable::DoubleEndedPeekableExt;
|
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use serde_with::{DefaultOnError, VecSkipError, rust::deserialize_ignore_any, serde_as};
|
use serde_with::{rust::deserialize_ignore_any, serde_as, DefaultOnError, VecSkipError};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
error::ExtractionError,
|
|
||||||
model::{
|
model::{
|
||||||
self, AlbumId, AlbumItem, AlbumType, ArtistId, ArtistItem, ChannelId, MusicItem,
|
self, traits::FromYtItem, AlbumId, AlbumItem, AlbumType, ArtistId, ArtistItem, ChannelId,
|
||||||
MusicItemType, MusicPlaylistItem, TrackItem, UserItem, traits::FromYtItem,
|
MusicItem, MusicItemType, MusicPlaylistItem, TrackItem, UserItem,
|
||||||
},
|
},
|
||||||
param::Language,
|
param::Language,
|
||||||
serializer::{
|
serializer::{
|
||||||
MapResult,
|
|
||||||
text::{Text, TextComponent, TextComponents},
|
text::{Text, TextComponent, TextComponents},
|
||||||
|
MapResult,
|
||||||
},
|
},
|
||||||
util::{self, dictionary, timeago},
|
util::{self, dictionary, timeago},
|
||||||
};
|
};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
ContentsRenderer, ContinuationActionWrap, ContinuationEndpoint, MusicContinuationData,
|
|
||||||
SimpleHeaderRenderer, Thumbnails, ThumbnailsWrap,
|
|
||||||
url_endpoint::{
|
url_endpoint::{
|
||||||
BrowseEndpointWrap, MusicPage, MusicPageType, MusicVideoType, NavigationEndpoint, PageType,
|
BrowseEndpointWrap, MusicPage, MusicPageType, MusicVideoType, NavigationEndpoint, PageType,
|
||||||
},
|
},
|
||||||
|
ContentsRenderer, ContinuationActionWrap, ContinuationEndpoint, MusicContinuationData,
|
||||||
|
SimpleHeaderRenderer, Thumbnails, ThumbnailsWrap,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[cfg(feature = "userdata")]
|
#[cfg(feature = "userdata")]
|
||||||
|
|
@ -92,6 +88,7 @@ pub(crate) struct MusicCardShelf {
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
|
#[allow(clippy::enum_variant_names)]
|
||||||
pub(crate) enum MusicResponseItem {
|
pub(crate) enum MusicResponseItem {
|
||||||
MusicResponsiveListItemRenderer(ListMusicItem),
|
MusicResponsiveListItemRenderer(ListMusicItem),
|
||||||
MusicTwoRowItemRenderer(CoverMusicItem),
|
MusicTwoRowItemRenderer(CoverMusicItem),
|
||||||
|
|
@ -267,7 +264,7 @@ pub(crate) enum PlaylistPanelVideo {
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub(crate) struct QueueMusicItem {
|
pub(crate) struct QueueMusicItem {
|
||||||
pub video_id: Option<String>,
|
pub video_id: String,
|
||||||
#[serde_as(as = "Text")]
|
#[serde_as(as = "Text")]
|
||||||
pub title: String,
|
pub title: String,
|
||||||
#[serde_as(as = "Option<Text>")]
|
#[serde_as(as = "Option<Text>")]
|
||||||
|
|
@ -282,8 +279,6 @@ pub(crate) struct QueueMusicItem {
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub thumbnail: Thumbnails,
|
pub thumbnail: Thumbnails,
|
||||||
pub menu: Option<MusicItemMenu>,
|
pub menu: Option<MusicItemMenu>,
|
||||||
/// Alternative source for Video ID
|
|
||||||
pub navigation_endpoint: Option<NavigationEndpoint>,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Default, Debug, Deserialize)]
|
#[derive(Default, Debug, Deserialize)]
|
||||||
|
|
@ -350,6 +345,7 @@ pub(crate) struct MusicContinuation {
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
|
#[allow(clippy::enum_variant_names)]
|
||||||
pub(crate) enum ContinuationContents {
|
pub(crate) enum ContinuationContents {
|
||||||
#[serde(alias = "musicPlaylistShelfContinuation")]
|
#[serde(alias = "musicPlaylistShelfContinuation")]
|
||||||
MusicShelfContinuation(MusicShelf),
|
MusicShelfContinuation(MusicShelf),
|
||||||
|
|
@ -565,11 +561,11 @@ impl MusicListMapper {
|
||||||
let mut etype = None;
|
let mut etype = None;
|
||||||
self.warnings.append(&mut res.warnings);
|
self.warnings.append(&mut res.warnings);
|
||||||
res.c.into_iter().for_each(|item| {
|
res.c.into_iter().for_each(|item| {
|
||||||
if let Some(et) = self.add_response_item(item)
|
if let Some(et) = self.add_response_item(item) {
|
||||||
&& etype.is_none()
|
if etype.is_none() {
|
||||||
{
|
|
||||||
etype = Some(et);
|
etype = Some(et);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
etype
|
etype
|
||||||
}
|
}
|
||||||
|
|
@ -662,14 +658,12 @@ impl MusicListMapper {
|
||||||
..Default::default()
|
..Default::default()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
let subtitle_parts = c2
|
let mut subtitle_parts = c2
|
||||||
.ok_or_else(|| format!("track {id}: could not get subtitle"))?
|
.ok_or_else(|| format!("track {id}: could not get subtitle"))?
|
||||||
.renderer
|
.renderer
|
||||||
.text
|
.text
|
||||||
.split(util::DOT_SEPARATOR)
|
.split(util::DOT_SEPARATOR)
|
||||||
.into_iter();
|
.into_iter();
|
||||||
let subtitle_parts_len = subtitle_parts.len();
|
|
||||||
let mut subtitle_parts = subtitle_parts.double_ended_peekable();
|
|
||||||
|
|
||||||
// Is this a related video?
|
// Is this a related video?
|
||||||
if item.item_height == ItemHeight::Compact {
|
if item.item_height == ItemHeight::Compact {
|
||||||
|
|
@ -698,17 +692,8 @@ impl MusicListMapper {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Skip first part (track type)
|
// Skip first part (track type)
|
||||||
// Track (main search): Track type * Artists * View count
|
if subtitle_parts.len() > 3
|
||||||
// Track (main search featured): {Track type * Artists * Duration}, {View count}
|
|| (vtype == MusicVideoType::Video && subtitle_parts.len() == 2)
|
||||||
// Track (dedicated): {Artists * Album * Duration}, {View count}
|
|
||||||
// Video: [Track type] * Artists * View count * (Duration)
|
|
||||||
|
|
||||||
// If last part is not duration, remove first part (from main search)
|
|
||||||
|
|
||||||
if subtitle_parts_len > 3
|
|
||||||
|| !subtitle_parts.peek_back().is_some_and(|p| {
|
|
||||||
util::parse_video_length(p.first_str()).is_some()
|
|
||||||
})
|
|
||||||
{
|
{
|
||||||
subtitle_parts.next();
|
subtitle_parts.next();
|
||||||
}
|
}
|
||||||
|
|
@ -782,8 +767,8 @@ impl MusicListMapper {
|
||||||
// This is used for extracting artist pages.
|
// This is used for extracting artist pages.
|
||||||
// On some albums, the artist name of the tracks is not given but different
|
// On some albums, the artist name of the tracks is not given but different
|
||||||
// from the album artist. In this case dont copy the album artist.
|
// from the album artist. In this case dont copy the album artist.
|
||||||
if let Some((fb_artists, _)) = &self.artists
|
if let Some((fb_artists, _)) = &self.artists {
|
||||||
&& artists.is_empty()
|
if artists.is_empty()
|
||||||
&& (self.artist_page
|
&& (self.artist_page
|
||||||
|| artist_id.is_none()
|
|| artist_id.is_none()
|
||||||
|| fb_artists.iter().any(|fb_id| {
|
|| fb_artists.iter().any(|fb_id| {
|
||||||
|
|
@ -796,6 +781,7 @@ impl MusicListMapper {
|
||||||
{
|
{
|
||||||
artists.clone_from(fb_artists);
|
artists.clone_from(fb_artists);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let track_nr = item.index.and_then(|txt| util::parse_numeric(&txt).ok());
|
let track_nr = item.index.and_then(|txt| util::parse_numeric(&txt).ok());
|
||||||
|
|
||||||
|
|
@ -866,11 +852,11 @@ impl MusicListMapper {
|
||||||
|
|
||||||
// Album artist links may be invisible on the search page, so
|
// Album artist links may be invisible on the search page, so
|
||||||
// fall back to menu data
|
// fall back to menu data
|
||||||
if let Some(a1) = artists.first_mut()
|
if let Some(a1) = artists.first_mut() {
|
||||||
&& a1.id.is_none()
|
if a1.id.is_none() {
|
||||||
{
|
|
||||||
a1.id.clone_from(&artist_id);
|
a1.id.clone_from(&artist_id);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let year =
|
let year =
|
||||||
subtitle_p3.and_then(|st| util::parse_numeric(st.first_str()).ok());
|
subtitle_p3.and_then(|st| util::parse_numeric(st.first_str()).ok());
|
||||||
|
|
@ -1068,7 +1054,7 @@ impl MusicListMapper {
|
||||||
let from_ytm = subtitle_p2
|
let from_ytm = subtitle_p2
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.and_then(|p| p.0.first())
|
.and_then(|p| p.0.first())
|
||||||
.is_none_or(util::is_ytm);
|
.map_or(true, util::is_ytm);
|
||||||
let channel = subtitle_p2
|
let channel = subtitle_p2
|
||||||
.and_then(|p| p.0.into_iter().find_map(|c| ChannelId::try_from(c).ok()));
|
.and_then(|p| p.0.into_iter().find_map(|c| ChannelId::try_from(c).ok()));
|
||||||
|
|
||||||
|
|
@ -1204,7 +1190,7 @@ impl MusicListMapper {
|
||||||
let from_ytm = subtitle_p2
|
let from_ytm = subtitle_p2
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.and_then(|p| p.0.first())
|
.and_then(|p| p.0.first())
|
||||||
.is_none_or(util::is_ytm);
|
.map_or(true, util::is_ytm);
|
||||||
let channel = subtitle_p2
|
let channel = subtitle_p2
|
||||||
.and_then(|p| p.0.into_iter().find_map(|c| ChannelId::try_from(c).ok()));
|
.and_then(|p| p.0.into_iter().find_map(|c| ChannelId::try_from(c).ok()));
|
||||||
let track_count =
|
let track_count =
|
||||||
|
|
@ -1262,20 +1248,6 @@ impl MusicListMapper {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn add_list_item(&mut self, item: ListMusicItem) -> Option<MusicItemType> {
|
|
||||||
match self.map_list_item(item) {
|
|
||||||
Ok(et) => et,
|
|
||||||
Err(e) => {
|
|
||||||
self.warnings.push(e);
|
|
||||||
None
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn add_warning(&mut self, warning: String) {
|
|
||||||
self.warnings.push(warning);
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn add_warnings(&mut self, warnings: &mut Vec<String>) {
|
pub fn add_warnings(&mut self, warnings: &mut Vec<String>) {
|
||||||
self.warnings.append(warnings);
|
self.warnings.append(warnings);
|
||||||
}
|
}
|
||||||
|
|
@ -1423,45 +1395,23 @@ pub(crate) fn map_album_type(txt: &str, lang: Language) -> AlbumType {
|
||||||
.unwrap_or_default()
|
.unwrap_or_default()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn map_queue_item(
|
pub(crate) fn map_queue_item(item: QueueMusicItem, lang: Language) -> MapResult<TrackItem> {
|
||||||
item: QueueMusicItem,
|
|
||||||
lang: Language,
|
|
||||||
) -> Result<MapResult<TrackItem>, ExtractionError> {
|
|
||||||
let mut warnings = Vec::new();
|
let mut warnings = Vec::new();
|
||||||
let mut subtitle_parts = item.long_byline_text.split(util::DOT_SEPARATOR).into_iter();
|
let mut subtitle_parts = item.long_byline_text.split(util::DOT_SEPARATOR).into_iter();
|
||||||
|
|
||||||
let nav_wep = item.navigation_endpoint.and_then(|itm| {
|
let is_video = !item
|
||||||
if let NavigationEndpoint::Watch { watch_endpoint } = itm {
|
|
||||||
Some(watch_endpoint)
|
|
||||||
} else {
|
|
||||||
None
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
let mv_type = nav_wep
|
|
||||||
.as_ref()
|
|
||||||
.map(|wep| {
|
|
||||||
wep.watch_endpoint_music_supported_configs
|
|
||||||
.watch_endpoint_music_config
|
|
||||||
.music_video_type
|
|
||||||
})
|
|
||||||
.unwrap_or_else(|| {
|
|
||||||
MusicVideoType::from_is_video(
|
|
||||||
!item
|
|
||||||
.thumbnail
|
.thumbnail
|
||||||
.thumbnails
|
.thumbnails
|
||||||
.first()
|
.first()
|
||||||
.map(|tn| tn.height == tn.width)
|
.map(|tn| tn.height == tn.width)
|
||||||
.unwrap_or_default(),
|
.unwrap_or_default();
|
||||||
)
|
|
||||||
});
|
|
||||||
|
|
||||||
let artist_p = subtitle_parts.next();
|
let artist_p = subtitle_parts.next();
|
||||||
let (artists, by_va) = map_artists(artist_p);
|
let (artists, by_va) = map_artists(artist_p);
|
||||||
let artist_id = map_artist_id_fallback(item.menu, artists.first());
|
let artist_id = map_artist_id_fallback(item.menu, artists.first());
|
||||||
|
|
||||||
let subtitle_p2 = subtitle_parts.next();
|
let subtitle_p2 = subtitle_parts.next();
|
||||||
let (album, view_count) = if mv_type.is_video() {
|
let (album, view_count) = if is_video {
|
||||||
(
|
(
|
||||||
None,
|
None,
|
||||||
subtitle_p2
|
subtitle_p2
|
||||||
|
|
@ -1474,14 +1424,9 @@ pub(crate) fn map_queue_item(
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
let video_id = item
|
MapResult {
|
||||||
.video_id
|
|
||||||
.or(nav_wep.map(|wep| wep.video_id))
|
|
||||||
.ok_or(ExtractionError::InvalidData("missing video ID".into()))?;
|
|
||||||
|
|
||||||
Ok(MapResult {
|
|
||||||
c: TrackItem {
|
c: TrackItem {
|
||||||
id: video_id,
|
id: item.video_id,
|
||||||
name: item.title,
|
name: item.title,
|
||||||
duration: item
|
duration: item
|
||||||
.length_text
|
.length_text
|
||||||
|
|
@ -1491,13 +1436,13 @@ pub(crate) fn map_queue_item(
|
||||||
artist_id,
|
artist_id,
|
||||||
album,
|
album,
|
||||||
view_count,
|
view_count,
|
||||||
track_type: mv_type.into(),
|
track_type: MusicVideoType::from_is_video(is_video).into(),
|
||||||
track_nr: None,
|
track_nr: None,
|
||||||
by_va,
|
by_va,
|
||||||
unavailable: false,
|
unavailable: false,
|
||||||
},
|
},
|
||||||
warnings,
|
warnings,
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
SectionList, Tab,
|
|
||||||
music_item::{Grid, SingleColumnBrowseResult},
|
music_item::{Grid, SingleColumnBrowseResult},
|
||||||
|
SectionList, Tab,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,15 @@
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use serde_with::{DefaultOnError, VecSkipError, serde_as};
|
use serde_with::{serde_as, DefaultOnError, VecSkipError};
|
||||||
|
|
||||||
use crate::{
|
use crate::serializer::text::{AttributedText, Text, TextComponents};
|
||||||
client::response::AvatarRendererContext,
|
|
||||||
serializer::text::{AttributedText, Text, TextComponents},
|
|
||||||
};
|
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
ContentsRenderer, SectionList, Tab,
|
|
||||||
music_item::{
|
music_item::{
|
||||||
Button, ItemSection, MusicContentsRenderer, MusicItemMenuEntry, MusicMicroformat,
|
Button, ItemSection, MusicContentsRenderer, MusicItemMenuEntry, MusicMicroformat,
|
||||||
MusicThumbnailRenderer,
|
MusicThumbnailRenderer,
|
||||||
},
|
},
|
||||||
|
url_endpoint::OnTapWrap,
|
||||||
|
ContentsRenderer, SectionList, Tab,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Response model for YouTube Music playlists and albums
|
/// Response model for YouTube Music playlists and albums
|
||||||
|
|
@ -155,5 +153,11 @@ pub(crate) struct AvatarStackViewModel {
|
||||||
// pub avatars: Vec<AvatarViewModel>,
|
// pub avatars: Vec<AvatarViewModel>,
|
||||||
#[serde_as(as = "AttributedText")]
|
#[serde_as(as = "AttributedText")]
|
||||||
pub text: String,
|
pub text: String,
|
||||||
pub renderer_context: AvatarRendererContext,
|
pub renderer_context: AvatarStackRendererContext,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Deserialize)]
|
||||||
|
#[serde(rename_all = "camelCase")]
|
||||||
|
pub(crate) struct AvatarStackRendererContext {
|
||||||
|
pub command_context: Option<OnTapWrap>,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use serde_with::{VecSkipError, rust::deserialize_ignore_any, serde_as};
|
use serde_with::{rust::deserialize_ignore_any, serde_as, VecSkipError};
|
||||||
|
|
||||||
use crate::serializer::{MapResult, text::Text};
|
use crate::serializer::text::Text;
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
ContentsRenderer, SectionList, Tab,
|
|
||||||
music_item::{ListMusicItem, MusicCardShelf, MusicShelf},
|
music_item::{ListMusicItem, MusicCardShelf, MusicShelf},
|
||||||
|
ContentsRenderer, SectionList, Tab,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Response model for YouTube Music search
|
/// Response model for YouTube Music search
|
||||||
|
|
@ -31,26 +31,25 @@ pub(crate) struct Contents {
|
||||||
pub tabbed_search_results_renderer: ContentsRenderer<Tab<SectionList<ItemSection>>>,
|
pub tabbed_search_results_renderer: ContentsRenderer<Tab<SectionList<ItemSection>>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(clippy::enum_variant_names)]
|
||||||
|
#[serde_as]
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub(crate) enum ItemSection {
|
pub(crate) enum ItemSection {
|
||||||
MusicShelfRenderer(MusicShelf),
|
MusicShelfRenderer(MusicShelf),
|
||||||
MusicCardShelfRenderer(MusicCardShelf),
|
MusicCardShelfRenderer(MusicCardShelf),
|
||||||
ItemSectionRenderer {
|
ItemSectionRenderer {
|
||||||
contents: MapResult<Vec<ItemSectionRendererItem>>,
|
#[serde_as(as = "VecSkipError<_>")]
|
||||||
|
contents: Vec<ShowingResultsFor>,
|
||||||
},
|
},
|
||||||
#[serde(other, deserialize_with = "deserialize_ignore_any")]
|
#[serde(other, deserialize_with = "deserialize_ignore_any")]
|
||||||
None,
|
None,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(clippy::large_enum_variant)]
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub(crate) enum ItemSectionRendererItem {
|
pub(crate) struct ShowingResultsFor {
|
||||||
MusicResponsiveListItemRenderer(ListMusicItem),
|
pub showing_results_for_renderer: ShowingResultsForRenderer,
|
||||||
ShowingResultsForRenderer(ShowingResultsForRenderer),
|
|
||||||
#[serde(other, deserialize_with = "deserialize_ignore_any")]
|
|
||||||
None,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[serde_as]
|
#[serde_as]
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ use serde_with::serde_as;
|
||||||
use serde_with::{DefaultOnError, DisplayFromStr, VecSkipError};
|
use serde_with::{DefaultOnError, DisplayFromStr, VecSkipError};
|
||||||
|
|
||||||
use super::{Empty, ResponseContext, Thumbnails};
|
use super::{Empty, ResponseContext, Thumbnails};
|
||||||
use crate::serializer::{MapResult, text::Text};
|
use crate::serializer::{text::Text, MapResult};
|
||||||
|
|
||||||
#[serde_as]
|
#[serde_as]
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
|
|
@ -30,10 +30,7 @@ pub(crate) struct Player {
|
||||||
#[serde(tag = "status", rename_all = "SCREAMING_SNAKE_CASE")]
|
#[serde(tag = "status", rename_all = "SCREAMING_SNAKE_CASE")]
|
||||||
pub(crate) enum PlayabilityStatus {
|
pub(crate) enum PlayabilityStatus {
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
Ok {
|
Ok { live_streamability: Option<Empty> },
|
||||||
#[serde(default)]
|
|
||||||
live_streamability: LiveStreamability,
|
|
||||||
},
|
|
||||||
/// Video cant be played because of DRM / Geoblock
|
/// Video cant be played because of DRM / Geoblock
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
Unplayable {
|
Unplayable {
|
||||||
|
|
@ -81,20 +78,6 @@ pub(crate) struct ErrorMessage {
|
||||||
pub subreason: String,
|
pub subreason: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Default, Debug, Deserialize)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub(crate) struct LiveStreamability {
|
|
||||||
pub live_streamability_renderer: LiveStreamabilityRenderer,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Default, Debug, Deserialize)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub(crate) struct LiveStreamabilityRenderer {
|
|
||||||
pub broadcast_id: Option<String>,
|
|
||||||
#[serde(default)]
|
|
||||||
pub display_endscreen: bool,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[serde_as]
|
#[serde_as]
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
|
|
@ -109,7 +92,6 @@ pub(crate) struct StreamingData {
|
||||||
pub dash_manifest_url: Option<String>,
|
pub dash_manifest_url: Option<String>,
|
||||||
/// Only on livestreams
|
/// Only on livestreams
|
||||||
pub hls_manifest_url: Option<String>,
|
pub hls_manifest_url: Option<String>,
|
||||||
pub server_abr_streaming_url: Option<String>,
|
|
||||||
pub drm_params: Option<String>,
|
pub drm_params: Option<String>,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
#[serde_as(deserialize_as = "VecSkipError<_>")]
|
#[serde_as(deserialize_as = "VecSkipError<_>")]
|
||||||
|
|
@ -127,12 +109,8 @@ pub(crate) struct Format {
|
||||||
pub format_type: FormatType,
|
pub format_type: FormatType,
|
||||||
|
|
||||||
pub mime_type: String,
|
pub mime_type: String,
|
||||||
#[serde_as(as = "Option<DisplayFromStr>")]
|
|
||||||
pub last_modified: Option<u64>,
|
|
||||||
#[serde_as(as = "Option<DisplayFromStr>")]
|
|
||||||
pub content_length: Option<u64>,
|
|
||||||
pub bitrate: u32,
|
pub bitrate: u32,
|
||||||
pub xtags: Option<String>,
|
|
||||||
|
|
||||||
pub width: Option<u32>,
|
pub width: Option<u32>,
|
||||||
pub height: Option<u32>,
|
pub height: Option<u32>,
|
||||||
|
|
@ -144,6 +122,9 @@ pub(crate) struct Format {
|
||||||
#[serde_as(as = "Option<crate::serializer::Range>")]
|
#[serde_as(as = "Option<crate::serializer::Range>")]
|
||||||
pub init_range: Option<Range<u32>>,
|
pub init_range: Option<Range<u32>>,
|
||||||
|
|
||||||
|
#[serde_as(as = "Option<DisplayFromStr>")]
|
||||||
|
pub content_length: Option<u64>,
|
||||||
|
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
#[serde_as(deserialize_as = "DefaultOnError")]
|
#[serde_as(deserialize_as = "DefaultOnError")]
|
||||||
pub quality: Option<Quality>,
|
pub quality: Option<Quality>,
|
||||||
|
|
@ -160,8 +141,6 @@ pub(crate) struct Format {
|
||||||
pub audio_sample_rate: Option<u32>,
|
pub audio_sample_rate: Option<u32>,
|
||||||
pub audio_channels: Option<u8>,
|
pub audio_channels: Option<u8>,
|
||||||
pub loudness_db: Option<f32>,
|
pub loudness_db: Option<f32>,
|
||||||
#[serde(default)]
|
|
||||||
pub is_drc: bool,
|
|
||||||
pub audio_track: Option<AudioTrack>,
|
pub audio_track: Option<AudioTrack>,
|
||||||
|
|
||||||
pub signature_cipher: Option<String>,
|
pub signature_cipher: Option<String>,
|
||||||
|
|
@ -237,6 +216,7 @@ pub(crate) enum Primaries {
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug, Deserialize, PartialEq, Eq)]
|
#[derive(Clone, Copy, Debug, Deserialize, PartialEq, Eq)]
|
||||||
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
||||||
|
#[allow(clippy::enum_variant_names)]
|
||||||
pub(crate) enum DrmTrackType {
|
pub(crate) enum DrmTrackType {
|
||||||
DrmTrackTypeAudio,
|
DrmTrackTypeAudio,
|
||||||
DrmTrackTypeSd,
|
DrmTrackTypeSd,
|
||||||
|
|
@ -314,13 +294,9 @@ pub(crate) struct StoryboardRenderer {
|
||||||
pub spec: String,
|
pub spec: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[serde_as]
|
|
||||||
#[derive(Default, Debug, Deserialize)]
|
#[derive(Default, Debug, Deserialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub(crate) struct PlayerConfig {
|
pub(crate) struct PlayerConfig {
|
||||||
#[serde(default)]
|
|
||||||
#[serde_as(deserialize_as = "DefaultOnError")]
|
|
||||||
pub media_common_config: Option<MediaCommonConfig>,
|
|
||||||
pub web_drm_config: Option<WebDrmConfig>,
|
pub web_drm_config: Option<WebDrmConfig>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -330,18 +306,6 @@ pub(crate) struct WebDrmConfig {
|
||||||
pub widevine_service_cert: Option<String>,
|
pub widevine_service_cert: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub struct MediaCommonConfig {
|
|
||||||
pub media_ustreamer_request_config: UstreamerRequestConfig,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub struct UstreamerRequestConfig {
|
|
||||||
pub video_playback_ustreamer_config: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Default, Debug, Deserialize)]
|
#[derive(Default, Debug, Deserialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub(crate) struct HeartbeatParams {
|
pub(crate) struct HeartbeatParams {
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use serde_with::{DefaultOnError, VecSkipError, serde_as};
|
use serde_with::{serde_as, DefaultOnError, VecSkipError};
|
||||||
|
|
||||||
use crate::serializer::text::{AttributedText, Text, TextComponent, TextComponents};
|
use crate::serializer::text::{AttributedText, Text, TextComponent, TextComponents};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
Alert, ContentRenderer, ContentsRenderer, ImageView, PageHeaderRendererContent, PhMetadataView,
|
url_endpoint::OnTapWrap, video_item::YouTubeListRenderer, Alert, ContentRenderer,
|
||||||
ResponseContext, SectionList, Tab, TextBox, ThumbnailsWrap, TwoColumnBrowseResults,
|
ContentsRenderer, ImageView, PageHeaderRendererContent, PhMetadataView, ResponseContext,
|
||||||
url_endpoint::OnTapWrap, video_item::YouTubeListRenderer,
|
SectionList, Tab, TextBox, ThumbnailsWrap, TwoColumnBrowseResults,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[serde_as]
|
#[serde_as]
|
||||||
|
|
@ -24,7 +24,14 @@ pub(crate) struct Playlist {
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub(crate) struct ItemSection {
|
pub(crate) struct ItemSection {
|
||||||
pub item_section_renderer: YouTubeListRenderer,
|
pub item_section_renderer: ContentsRenderer<PlaylistVideoListRenderer>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Deserialize)]
|
||||||
|
#[serde(rename_all = "camelCase")]
|
||||||
|
pub(crate) struct PlaylistVideoListRenderer {
|
||||||
|
#[serde(alias = "richGridRenderer")]
|
||||||
|
pub playlist_video_list_renderer: YouTubeListRenderer,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use serde::{
|
use serde::{
|
||||||
Deserialize,
|
|
||||||
de::{IgnoredAny, Visitor},
|
de::{IgnoredAny, Visitor},
|
||||||
|
Deserialize,
|
||||||
};
|
};
|
||||||
use serde_with::{DisplayFromStr, serde_as};
|
use serde_with::{serde_as, DisplayFromStr};
|
||||||
|
|
||||||
use super::{ResponseContext, video_item::YouTubeListRendererWrap};
|
use super::{video_item::YouTubeListRendererWrap, ResponseContext};
|
||||||
|
|
||||||
#[serde_as]
|
#[serde_as]
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
|
|
||||||
use super::{Tab, TwoColumnBrowseResults, video_item::YouTubeListRendererWrap};
|
use super::{video_item::YouTubeListRendererWrap, Tab, TwoColumnBrowseResults};
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use serde_with::{DefaultOnError, serde_as};
|
use serde_with::{serde_as, DefaultOnError};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
model::{TrackType, UrlTarget},
|
model::{TrackType, UrlTarget},
|
||||||
|
|
@ -191,7 +191,11 @@ impl MusicVideoType {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn from_is_video(is_video: bool) -> Self {
|
pub fn from_is_video(is_video: bool) -> Self {
|
||||||
if is_video { Self::Video } else { Self::Track }
|
if is_video {
|
||||||
|
Self::Video
|
||||||
|
} else {
|
||||||
|
Self::Track
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -376,11 +380,11 @@ impl NavigationEndpoint {
|
||||||
} => Some(browse_endpoint.browse_id).filter(|_| {
|
} => Some(browse_endpoint.browse_id).filter(|_| {
|
||||||
browse_endpoint
|
browse_endpoint
|
||||||
.browse_endpoint_context_supported_configs
|
.browse_endpoint_context_supported_configs
|
||||||
.is_some_and(|c| {
|
.map(|c| c.browse_endpoint_context_music_config.page_type == PageType::Playlist)
|
||||||
c.browse_endpoint_context_music_config.page_type == PageType::Playlist
|
.unwrap_or_default()
|
||||||
})
|
|
||||||
|| command_metadata
|
|| command_metadata
|
||||||
.is_some_and(|c| c.web_command_metadata.web_page_type == PageType::Playlist)
|
.map(|c| c.web_command_metadata.web_page_type == PageType::Playlist)
|
||||||
|
.unwrap_or_default()
|
||||||
}),
|
}),
|
||||||
NavigationEndpoint::Url { .. } => None,
|
NavigationEndpoint::Url { .. } => None,
|
||||||
NavigationEndpoint::WatchPlaylist {
|
NavigationEndpoint::WatchPlaylist {
|
||||||
|
|
@ -389,22 +393,4 @@ impl NavigationEndpoint {
|
||||||
NavigationEndpoint::CreatePlaylist { .. } => None,
|
NavigationEndpoint::CreatePlaylist { .. } => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn into_channel_id(self) -> Option<String> {
|
|
||||||
match self {
|
|
||||||
NavigationEndpoint::Browse {
|
|
||||||
browse_endpoint,
|
|
||||||
command_metadata,
|
|
||||||
} => Some(browse_endpoint.browse_id).filter(|_| {
|
|
||||||
browse_endpoint
|
|
||||||
.browse_endpoint_context_supported_configs
|
|
||||||
.is_some_and(|c| {
|
|
||||||
c.browse_endpoint_context_music_config.page_type == PageType::Channel
|
|
||||||
})
|
|
||||||
|| command_metadata
|
|
||||||
.is_some_and(|c| c.web_command_metadata.web_page_type == PageType::Channel)
|
|
||||||
}),
|
|
||||||
_ => None,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,31 +1,27 @@
|
||||||
#![allow(clippy::enum_variant_names)]
|
#![allow(clippy::enum_variant_names)]
|
||||||
|
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use serde_with::{DefaultOnError, VecSkipError, rust::deserialize_ignore_any, serde_as};
|
use serde_with::{rust::deserialize_ignore_any, serde_as, DefaultOnError, VecSkipError};
|
||||||
|
|
||||||
use crate::{
|
use crate::serializer::{
|
||||||
client::response::video_item::DialogNavigationEndpoint,
|
text::{AccessibilityText, AttributedText, Text, TextComponent, TextComponents},
|
||||||
serializer::{
|
|
||||||
MapResult,
|
MapResult,
|
||||||
text::{AccessibilityText, AttributedText, Text, TextComponents},
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
use super::{
|
||||||
|
url_endpoint::BrowseEndpointWrap, ContinuationEndpoint, ContinuationItemRenderer, Icon,
|
||||||
|
MusicContinuationData, Thumbnails,
|
||||||
|
};
|
||||||
use super::{
|
use super::{
|
||||||
ChannelBadge, ContentsRendererLogged, FrameworkUpdates, ImageView, ResponseContext,
|
ChannelBadge, ContentsRendererLogged, FrameworkUpdates, ImageView, ResponseContext,
|
||||||
YouTubeListItem,
|
YouTubeListItem,
|
||||||
};
|
};
|
||||||
use super::{
|
|
||||||
ContinuationEndpoint, ContinuationItemRenderer, Icon, MusicContinuationData, Thumbnails,
|
|
||||||
url_endpoint::BrowseEndpointWrap,
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
#VIDEO DETAILS
|
#VIDEO DETAILS
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/// Video details response
|
/// Video details response
|
||||||
#[serde_as]
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub(crate) struct VideoDetails {
|
pub(crate) struct VideoDetails {
|
||||||
|
|
@ -34,8 +30,7 @@ pub(crate) struct VideoDetails {
|
||||||
/// Video ID
|
/// Video ID
|
||||||
pub current_video_endpoint: Option<CurrentVideoEndpoint>,
|
pub current_video_endpoint: Option<CurrentVideoEndpoint>,
|
||||||
/// Video chapters + comment section
|
/// Video chapters + comment section
|
||||||
#[serde_as(as = "VecSkipError<_>")]
|
pub engagement_panels: MapResult<Vec<EngagementPanel>>,
|
||||||
pub engagement_panels: Vec<EngagementPanel>,
|
|
||||||
pub response_context: ResponseContext,
|
pub response_context: ResponseContext,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -229,13 +224,8 @@ pub(crate) struct VideoOwner {
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub(crate) struct VideoOwnerRenderer {
|
pub(crate) struct VideoOwnerRenderer {
|
||||||
#[serde(alias = "attributedTitle")]
|
pub title: TextComponent,
|
||||||
#[serde_as(as = "Text")]
|
pub thumbnail: Thumbnails,
|
||||||
pub title: String,
|
|
||||||
/// Channel avatar (single channel)
|
|
||||||
pub thumbnail: Option<Thumbnails>,
|
|
||||||
/// Channel avatar (featuring channels)
|
|
||||||
pub navigation_endpoint: DialogNavigationEndpoint,
|
|
||||||
#[serde_as(as = "Option<Text>")]
|
#[serde_as(as = "Option<Text>")]
|
||||||
pub subscriber_count_text: Option<String>,
|
pub subscriber_count_text: Option<String>,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
|
|
@ -374,6 +364,14 @@ pub(crate) enum EngagementPanelRenderer {
|
||||||
/// Comment section (contains no comments, but the
|
/// Comment section (contains no comments, but the
|
||||||
/// continuation tokens for fetching top/latest comments)
|
/// continuation tokens for fetching top/latest comments)
|
||||||
EngagementPanelCommentsSection { header: CommentItemSectionHeader },
|
EngagementPanelCommentsSection { header: CommentItemSectionHeader },
|
||||||
|
/// Ignored items:
|
||||||
|
/// - `engagement-panel-ads`
|
||||||
|
/// - `engagement-panel-structured-description`
|
||||||
|
/// (Description already included in `VideoSecondaryInfoRenderer`)
|
||||||
|
/// - `engagement-panel-searchable-transcript`
|
||||||
|
/// (basically video subtitles in a different format)
|
||||||
|
#[serde(other, deserialize_with = "deserialize_ignore_any")]
|
||||||
|
None,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Chapter markers
|
/// Chapter markers
|
||||||
|
|
@ -432,8 +430,6 @@ pub(crate) struct CommentItemSectionHeader {
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub(crate) struct CommentItemSectionHeaderRenderer {
|
pub(crate) struct CommentItemSectionHeaderRenderer {
|
||||||
#[serde_as(as = "Option<Text>")]
|
|
||||||
pub contextual_info: Option<String>,
|
|
||||||
pub menu: CommentItemSectionHeaderMenu,
|
pub menu: CommentItemSectionHeaderMenu,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,18 @@
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use serde_with::{
|
use serde_with::{
|
||||||
DefaultOnError, DisplayFromStr, VecSkipError, rust::deserialize_ignore_any, serde_as,
|
rust::deserialize_ignore_any, serde_as, DefaultOnError, DisplayFromStr, VecSkipError,
|
||||||
};
|
};
|
||||||
use time::OffsetDateTime;
|
use time::OffsetDateTime;
|
||||||
|
|
||||||
use super::{ChannelBadge, ContentImage, ContinuationItemRenderer, PhMetadataView, Thumbnails};
|
use super::{ChannelBadge, ContentImage, ContinuationItemRenderer, PhMetadataView, Thumbnails};
|
||||||
use crate::{
|
use crate::{
|
||||||
client::response::{
|
model::{Channel, ChannelItem, ChannelTag, PlaylistItem, VideoItem, YouTubeItem},
|
||||||
AvatarRendererContext, AvatarViewModel, ThumbnailViewModelWrap,
|
|
||||||
url_endpoint::BrowseEndpoint,
|
|
||||||
},
|
|
||||||
model::{Channel, ChannelItem, ChannelTag, PlaylistItem, Verification, VideoItem, YouTubeItem},
|
|
||||||
param::Language,
|
param::Language,
|
||||||
serializer::{
|
serializer::{
|
||||||
MapResult,
|
|
||||||
text::{AttributedText, Text, TextComponent},
|
text::{AttributedText, Text, TextComponent},
|
||||||
|
MapResult,
|
||||||
},
|
},
|
||||||
util::{self, DOT_SEPARATOR, TryRemove, timeago},
|
util::{self, timeago, TryRemove},
|
||||||
};
|
};
|
||||||
|
|
||||||
#[cfg(feature = "userdata")]
|
#[cfg(feature = "userdata")]
|
||||||
|
|
@ -29,7 +25,7 @@ use time::UtcOffset;
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub(crate) enum YouTubeListItem {
|
pub(crate) enum YouTubeListItem {
|
||||||
#[serde(alias = "gridVideoRenderer", alias = "compactVideoRenderer")]
|
#[serde(alias = "gridVideoRenderer", alias = "compactVideoRenderer")]
|
||||||
VideoRenderer(Box<VideoRenderer>),
|
VideoRenderer(VideoRenderer),
|
||||||
ReelItemRenderer(ReelItemRenderer),
|
ReelItemRenderer(ReelItemRenderer),
|
||||||
ShortsLockupViewModel(ShortsLockupViewModel),
|
ShortsLockupViewModel(ShortsLockupViewModel),
|
||||||
PlaylistVideoRenderer(PlaylistVideoRenderer),
|
PlaylistVideoRenderer(PlaylistVideoRenderer),
|
||||||
|
|
@ -43,7 +39,6 @@ pub(crate) enum YouTubeListItem {
|
||||||
|
|
||||||
/// Continuation items are located at the end of a list
|
/// Continuation items are located at the end of a list
|
||||||
/// and contain the continuation token for progressive loading
|
/// and contain the continuation token for progressive loading
|
||||||
#[serde(alias = "continuationItemViewModel")]
|
|
||||||
ContinuationItemRenderer(ContinuationItemRenderer),
|
ContinuationItemRenderer(ContinuationItemRenderer),
|
||||||
|
|
||||||
/// Corrected search query
|
/// Corrected search query
|
||||||
|
|
@ -68,17 +63,9 @@ pub(crate) enum YouTubeListItem {
|
||||||
/// as of 11.10.2022
|
/// as of 11.10.2022
|
||||||
///
|
///
|
||||||
/// GridRenderer: contains videos on channel page
|
/// GridRenderer: contains videos on channel page
|
||||||
#[serde(
|
#[serde(alias = "expandedShelfContentsRenderer", alias = "gridRenderer")]
|
||||||
alias = "expandedShelfContentsRenderer",
|
|
||||||
alias = "gridRenderer",
|
|
||||||
alias = "verticalListRenderer",
|
|
||||||
alias = "gridShelfViewModel",
|
|
||||||
alias = "playlistVideoListRenderer"
|
|
||||||
)]
|
|
||||||
ItemSectionRenderer {
|
ItemSectionRenderer {
|
||||||
#[cfg(feature = "userdata")]
|
#[cfg(feature = "userdata")]
|
||||||
#[serde(default)]
|
|
||||||
#[serde_as(as = "DefaultOnError")]
|
|
||||||
header: Option<ItemSectionHeader>,
|
header: Option<ItemSectionHeader>,
|
||||||
#[serde(alias = "items")]
|
#[serde(alias = "items")]
|
||||||
contents: MapResult<Vec<YouTubeListItem>>,
|
contents: MapResult<Vec<YouTubeListItem>>,
|
||||||
|
|
@ -140,7 +127,6 @@ pub(crate) struct VideoRenderer {
|
||||||
pub detailed_metadata_snippets: Option<Vec<DetailedMetadataSnippet>>,
|
pub detailed_metadata_snippets: Option<Vec<DetailedMetadataSnippet>>,
|
||||||
/// Release date for upcoming videos
|
/// Release date for upcoming videos
|
||||||
pub upcoming_event_data: Option<UpcomingEventData>,
|
pub upcoming_event_data: Option<UpcomingEventData>,
|
||||||
pub avatar: Option<LockupViewModelMetadataImage>,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Short video item
|
/// Short video item
|
||||||
|
|
@ -166,7 +152,7 @@ pub(crate) struct ReelItemRenderer {
|
||||||
pub(crate) struct ShortsLockupViewModel {
|
pub(crate) struct ShortsLockupViewModel {
|
||||||
/// `shorts-shelf-item-[video_id]`
|
/// `shorts-shelf-item-[video_id]`
|
||||||
pub entity_id: String,
|
pub entity_id: String,
|
||||||
pub thumbnail_view_model: ThumbnailViewModelWrap,
|
pub thumbnail: Thumbnails,
|
||||||
pub overlay_metadata: ShortsOverlayMetadata,
|
pub overlay_metadata: ShortsOverlayMetadata,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -197,6 +183,7 @@ pub(crate) struct LockupViewModel {
|
||||||
|
|
||||||
#[derive(Default, Debug, Deserialize)]
|
#[derive(Default, Debug, Deserialize)]
|
||||||
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
||||||
|
#[allow(clippy::enum_variant_names)]
|
||||||
pub(crate) enum LockupContentType {
|
pub(crate) enum LockupContentType {
|
||||||
LockupContentTypePlaylist,
|
LockupContentTypePlaylist,
|
||||||
LockupContentTypeVideo,
|
LockupContentTypeVideo,
|
||||||
|
|
@ -216,106 +203,9 @@ pub(crate) struct LockupViewModelMetadata {
|
||||||
pub(crate) struct LockupViewModelMetadataInner {
|
pub(crate) struct LockupViewModelMetadataInner {
|
||||||
#[serde_as(as = "AttributedText")]
|
#[serde_as(as = "AttributedText")]
|
||||||
pub title: String,
|
pub title: String,
|
||||||
/// Channel avatar image with link to channel
|
|
||||||
pub image: Option<LockupViewModelMetadataImage>,
|
|
||||||
pub metadata: PhMetadataView,
|
pub metadata: PhMetadataView,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub(crate) enum LockupViewModelMetadataImage {
|
|
||||||
/// Single channel avatar
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
DecoratedAvatarViewModel { avatar: AvatarViewModel },
|
|
||||||
/// Multiple avatars for featured channels
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
AvatarStackViewModel {
|
|
||||||
renderer_context: AvatarStackRendererContext,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub(crate) struct AvatarStackRendererContext {
|
|
||||||
pub command_context: AvatarStackRendererContext2,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub(crate) struct AvatarStackRendererContext2 {
|
|
||||||
pub on_tap: AvatarStackRendererContext3,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub(crate) struct AvatarStackRendererContext3 {
|
|
||||||
pub innertube_command: DialogNavigationEndpoint,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
|
||||||
#[serde(untagged)]
|
|
||||||
pub(crate) enum DialogNavigationEndpoint {
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
Browse { browse_endpoint: BrowseEndpoint },
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
ShowDialog {
|
|
||||||
show_dialog_command: ShowDialogCommand,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub(crate) struct ShowDialogCommand {
|
|
||||||
pub panel_loading_strategy: AvatarStackRendererContext6,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub(crate) struct AvatarStackRendererContext6 {
|
|
||||||
pub inline_content: AvatarStackRendererContext7,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub(crate) struct AvatarStackRendererContext7 {
|
|
||||||
pub dialog_view_model: AvatarStackRendererContext8,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub(crate) struct AvatarStackRendererContext8 {
|
|
||||||
pub custom_content: AvatarStackRendererContext9,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub(crate) struct AvatarStackRendererContext9 {
|
|
||||||
pub list_view_model: AvatarStackRendererContext10,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub(crate) struct AvatarStackRendererContext10 {
|
|
||||||
pub list_items: Vec<AvatarStackRendererContext11>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub(crate) struct AvatarStackRendererContext11 {
|
|
||||||
pub list_item_view_model: ChannelDialogItem,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[serde_as]
|
|
||||||
#[derive(Debug, Deserialize)]
|
|
||||||
#[serde(rename_all = "camelCase")]
|
|
||||||
pub(crate) struct ChannelDialogItem {
|
|
||||||
pub title: AttributedText,
|
|
||||||
#[serde_as(as = "Text")]
|
|
||||||
pub subtitle: String,
|
|
||||||
pub renderer_context: AvatarRendererContext,
|
|
||||||
pub leading_accessory: AvatarViewModel,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Video displayed in a playlist
|
/// Video displayed in a playlist
|
||||||
#[serde_as]
|
#[serde_as]
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
|
|
@ -567,66 +457,6 @@ impl IsShort for Vec<TimeOverlay> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ShowDialogCommand {
|
|
||||||
pub fn map(
|
|
||||||
self,
|
|
||||||
lang: Language,
|
|
||||||
warnings: &mut Vec<String>,
|
|
||||||
) -> Option<(ChannelTag, Vec<ChannelTag>)> {
|
|
||||||
let mut channel_items = self
|
|
||||||
.panel_loading_strategy
|
|
||||||
.inline_content
|
|
||||||
.dialog_view_model
|
|
||||||
.custom_content
|
|
||||||
.list_view_model
|
|
||||||
.list_items
|
|
||||||
.into_iter()
|
|
||||||
.filter_map(|itm| {
|
|
||||||
let itm = itm.list_item_view_model;
|
|
||||||
let id = if let Some(id) = itm
|
|
||||||
.renderer_context
|
|
||||||
.command_context
|
|
||||||
.and_then(|x| x.on_tap.innertube_command.into_channel_id())
|
|
||||||
.or_else(|| {
|
|
||||||
itm.title
|
|
||||||
.command_runs
|
|
||||||
.into_iter()
|
|
||||||
.find_map(|c| c.on_tap.innertube_command.into_channel_id())
|
|
||||||
}) {
|
|
||||||
id
|
|
||||||
} else {
|
|
||||||
warnings.push("could not parse featured channel: no ID".to_owned());
|
|
||||||
return None;
|
|
||||||
};
|
|
||||||
let subscriber_count =
|
|
||||||
if let Some((_vname, stxt)) = itm.subtitle.split_once(DOT_SEPARATOR) {
|
|
||||||
util::parse_large_numstr_or_warn(stxt, lang, warnings)
|
|
||||||
} else {
|
|
||||||
warnings.push(
|
|
||||||
"could not parse featured channel: could not split subtitle".to_owned(),
|
|
||||||
);
|
|
||||||
None
|
|
||||||
};
|
|
||||||
|
|
||||||
Some(ChannelTag {
|
|
||||||
id,
|
|
||||||
name: itm.title.content,
|
|
||||||
avatar: itm.leading_accessory.avatar_view_model.image.into(),
|
|
||||||
verification: itm
|
|
||||||
.title
|
|
||||||
.attachment_runs
|
|
||||||
.into_iter()
|
|
||||||
.next()
|
|
||||||
.map(Verification::from)
|
|
||||||
.unwrap_or_default(),
|
|
||||||
subscriber_count,
|
|
||||||
})
|
|
||||||
});
|
|
||||||
|
|
||||||
channel_items.next().map(|c| (c, channel_items.collect()))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Result of mapping a list of different YouTube enities
|
/// Result of mapping a list of different YouTube enities
|
||||||
/// (videos, channels, playlists)
|
/// (videos, channels, playlists)
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
|
|
@ -683,7 +513,12 @@ impl<T> YouTubeListMapper<T> {
|
||||||
.map(|ol| ol.thumbnail_overlay_time_status_renderer.text)
|
.map(|ol| ol.thumbnail_overlay_time_status_renderer.text)
|
||||||
});
|
});
|
||||||
|
|
||||||
let channel_t = video
|
VideoItem {
|
||||||
|
id: video.video_id,
|
||||||
|
name: video.title,
|
||||||
|
duration: length_text.and_then(|txt| util::parse_video_length(&txt)),
|
||||||
|
thumbnail: video.thumbnail.into(),
|
||||||
|
channel: video
|
||||||
.channel
|
.channel
|
||||||
.and_then(|c| ChannelTag::try_from(c).ok())
|
.and_then(|c| ChannelTag::try_from(c).ok())
|
||||||
.map(|mut c| {
|
.map(|mut c| {
|
||||||
|
|
@ -697,45 +532,8 @@ impl<T> YouTubeListMapper<T> {
|
||||||
c.verification = video.owner_badges.into();
|
c.verification = video.owner_badges.into();
|
||||||
}
|
}
|
||||||
c
|
c
|
||||||
});
|
})
|
||||||
|
.or_else(|| self.channel.clone()),
|
||||||
let (channel, channels_feat) = match video.avatar {
|
|
||||||
Some(LockupViewModelMetadataImage::DecoratedAvatarViewModel { avatar }) => {
|
|
||||||
let mut c = channel_t;
|
|
||||||
if let Some(c) = &mut c
|
|
||||||
&& c.avatar.is_empty()
|
|
||||||
{
|
|
||||||
c.avatar = avatar.avatar_view_model.image.into();
|
|
||||||
}
|
|
||||||
(c, Vec::new())
|
|
||||||
}
|
|
||||||
Some(LockupViewModelMetadataImage::AvatarStackViewModel { renderer_context }) => {
|
|
||||||
if let DialogNavigationEndpoint::ShowDialog {
|
|
||||||
show_dialog_command,
|
|
||||||
} = renderer_context.command_context.on_tap.innertube_command
|
|
||||||
{
|
|
||||||
if let Some((c, feat)) = show_dialog_command.map(self.lang, &mut self.warnings)
|
|
||||||
{
|
|
||||||
(Some(c), feat)
|
|
||||||
} else {
|
|
||||||
self.warnings
|
|
||||||
.push("no valid featured channel item".to_owned());
|
|
||||||
(None, Vec::new())
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
(None, Vec::new())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
None => (channel_t, Vec::new()),
|
|
||||||
};
|
|
||||||
|
|
||||||
VideoItem {
|
|
||||||
id: video.video_id,
|
|
||||||
name: video.title,
|
|
||||||
duration: length_text.and_then(|txt| util::parse_video_length(&txt)),
|
|
||||||
thumbnail: video.thumbnail.into(),
|
|
||||||
channel: channel.or_else(|| self.channel.clone()),
|
|
||||||
channels_feat,
|
|
||||||
publish_date: video
|
publish_date: video
|
||||||
.upcoming_event_data
|
.upcoming_event_data
|
||||||
.as_ref()
|
.as_ref()
|
||||||
|
|
@ -775,7 +573,6 @@ impl<T> YouTubeListMapper<T> {
|
||||||
duration: None,
|
duration: None,
|
||||||
thumbnail: video.thumbnail.into(),
|
thumbnail: video.thumbnail.into(),
|
||||||
channel: self.channel.clone(),
|
channel: self.channel.clone(),
|
||||||
channels_feat: Vec::new(),
|
|
||||||
publish_date: pub_date_txt.as_ref().and_then(|txt| {
|
publish_date: pub_date_txt.as_ref().and_then(|txt| {
|
||||||
timeago::parse_timeago_dt_or_warn(self.lang, txt, &mut self.warnings)
|
timeago::parse_timeago_dt_or_warn(self.lang, txt, &mut self.warnings)
|
||||||
}),
|
}),
|
||||||
|
|
@ -796,9 +593,8 @@ impl<T> YouTubeListMapper<T> {
|
||||||
id: video_id.to_owned(),
|
id: video_id.to_owned(),
|
||||||
name: video.overlay_metadata.primary_text,
|
name: video.overlay_metadata.primary_text,
|
||||||
duration: None,
|
duration: None,
|
||||||
thumbnail: video.thumbnail_view_model.thumbnail_view_model.image.into(),
|
thumbnail: video.thumbnail.into(),
|
||||||
channel: self.channel.clone(),
|
channel: self.channel.clone(),
|
||||||
channels_feat: Vec::new(),
|
|
||||||
publish_date: None,
|
publish_date: None,
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: video.overlay_metadata.secondary_text.and_then(|txt| {
|
view_count: video.overlay_metadata.secondary_text.and_then(|txt| {
|
||||||
|
|
@ -857,7 +653,6 @@ impl<T> YouTubeListMapper<T> {
|
||||||
duration: video.length_seconds,
|
duration: video.length_seconds,
|
||||||
thumbnail: video.thumbnail.into(),
|
thumbnail: video.thumbnail.into(),
|
||||||
channel,
|
channel,
|
||||||
channels_feat: Vec::new(), // TODO: multi-channel
|
|
||||||
publish_date,
|
publish_date,
|
||||||
publish_date_txt,
|
publish_date_txt,
|
||||||
view_count: view_count_txt.and_then(|txt| {
|
view_count: view_count_txt.and_then(|txt| {
|
||||||
|
|
@ -936,63 +731,26 @@ impl<T> YouTubeListMapper<T> {
|
||||||
video_count: tn
|
video_count: tn
|
||||||
.overlays
|
.overlays
|
||||||
.first()
|
.first()
|
||||||
.and_then(|ol| ol.thumbnail_bottom_overlay_view_model.badges.first())
|
.and_then(|ol| {
|
||||||
|
ol.thumbnail_overlay_badge_view_model
|
||||||
|
.thumbnail_badges
|
||||||
|
.first()
|
||||||
|
})
|
||||||
.and_then(|badge| {
|
.and_then(|badge| {
|
||||||
util::parse_numeric(&badge.thumbnail_badge_view_model.text).ok()
|
util::parse_numeric(&badge.thumbnail_badge_view_model.text).ok()
|
||||||
}),
|
}),
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
LockupContentType::LockupContentTypeVideo => {
|
LockupContentType::LockupContentTypeVideo => {
|
||||||
// Metadata rows:
|
|
||||||
// Channel name
|
|
||||||
// 55M views * 1 month ago
|
|
||||||
let mut mdr = md
|
let mut mdr = md
|
||||||
.metadata
|
.metadata
|
||||||
.content_metadata_view_model
|
.content_metadata_view_model
|
||||||
.metadata_rows
|
.metadata_rows
|
||||||
.into_iter()
|
.into_iter();
|
||||||
.peekable();
|
let channel = mdr
|
||||||
|
.next()
|
||||||
let channel_t = if mdr.peek().is_some_and(|r1| r1.metadata_parts.len() == 1) {
|
|
||||||
mdr.next()
|
|
||||||
.and_then(|r| r.metadata_parts.into_iter().next())
|
.and_then(|r| r.metadata_parts.into_iter().next())
|
||||||
.and_then(|p| ChannelTag::try_from(p.into_text_component()).ok())
|
.and_then(|p| ChannelTag::try_from(p.into_text_component()).ok());
|
||||||
} else {
|
|
||||||
None
|
|
||||||
};
|
|
||||||
|
|
||||||
let (channel, channels_feat) = match md.image {
|
|
||||||
Some(LockupViewModelMetadataImage::DecoratedAvatarViewModel {
|
|
||||||
avatar, ..
|
|
||||||
}) => channel_t
|
|
||||||
.map(|mut c| {
|
|
||||||
c.avatar = avatar.avatar_view_model.image.into();
|
|
||||||
(Some(c), Vec::new())
|
|
||||||
})
|
|
||||||
.unwrap_or_default(),
|
|
||||||
Some(LockupViewModelMetadataImage::AvatarStackViewModel {
|
|
||||||
renderer_context,
|
|
||||||
}) => {
|
|
||||||
if let DialogNavigationEndpoint::ShowDialog {
|
|
||||||
show_dialog_command,
|
|
||||||
} = renderer_context.command_context.on_tap.innertube_command
|
|
||||||
{
|
|
||||||
if let Some((c, feat)) =
|
|
||||||
show_dialog_command.map(self.lang, &mut self.warnings)
|
|
||||||
{
|
|
||||||
(Some(c), feat)
|
|
||||||
} else {
|
|
||||||
self.warnings
|
|
||||||
.push("no valid featured channel item".to_owned());
|
|
||||||
(None, Vec::new())
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
(None, Vec::new())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
None => (channel_t, Vec::new()),
|
|
||||||
};
|
|
||||||
|
|
||||||
let (view_count, publish_date_txt) = mdr
|
let (view_count, publish_date_txt) = mdr
|
||||||
.next()
|
.next()
|
||||||
.map(|metadata_row| {
|
.map(|metadata_row| {
|
||||||
|
|
@ -1018,13 +776,16 @@ impl<T> YouTubeListMapper<T> {
|
||||||
duration: tn
|
duration: tn
|
||||||
.overlays
|
.overlays
|
||||||
.first()
|
.first()
|
||||||
.and_then(|ol| ol.thumbnail_bottom_overlay_view_model.badges.first())
|
.and_then(|ol| {
|
||||||
|
ol.thumbnail_overlay_badge_view_model
|
||||||
|
.thumbnail_badges
|
||||||
|
.first()
|
||||||
|
})
|
||||||
.and_then(|badge| {
|
.and_then(|badge| {
|
||||||
util::parse_video_length(&badge.thumbnail_badge_view_model.text)
|
util::parse_video_length(&badge.thumbnail_badge_view_model.text)
|
||||||
}),
|
}),
|
||||||
thumbnail: tn.image.into(),
|
thumbnail: tn.image.into(),
|
||||||
channel,
|
channel,
|
||||||
channels_feat,
|
|
||||||
publish_date: publish_date_txt.as_deref().and_then(|t| {
|
publish_date: publish_date_txt.as_deref().and_then(|t| {
|
||||||
timeago::parse_timeago_dt_or_warn(self.lang, t, &mut self.warnings)
|
timeago::parse_timeago_dt_or_warn(self.lang, t, &mut self.warnings)
|
||||||
}),
|
}),
|
||||||
|
|
@ -1045,7 +806,7 @@ impl YouTubeListMapper<YouTubeItem> {
|
||||||
fn map_item(&mut self, item: YouTubeListItem) {
|
fn map_item(&mut self, item: YouTubeListItem) {
|
||||||
match item {
|
match item {
|
||||||
YouTubeListItem::VideoRenderer(video) => {
|
YouTubeListItem::VideoRenderer(video) => {
|
||||||
let mapped = YouTubeItem::Video(self.map_video(*video));
|
let mapped = YouTubeItem::Video(self.map_video(video));
|
||||||
self.items.push(mapped);
|
self.items.push(mapped);
|
||||||
}
|
}
|
||||||
YouTubeListItem::ShortsLockupViewModel(video) => {
|
YouTubeListItem::ShortsLockupViewModel(video) => {
|
||||||
|
|
@ -1103,7 +864,7 @@ impl YouTubeListMapper<VideoItem> {
|
||||||
fn map_item(&mut self, item: YouTubeListItem) {
|
fn map_item(&mut self, item: YouTubeListItem) {
|
||||||
match item {
|
match item {
|
||||||
YouTubeListItem::VideoRenderer(video) => {
|
YouTubeListItem::VideoRenderer(video) => {
|
||||||
let mapped = self.map_video(*video);
|
let mapped = self.map_video(video);
|
||||||
self.items.push(mapped);
|
self.items.push(mapped);
|
||||||
}
|
}
|
||||||
YouTubeListItem::ReelItemRenderer(video) => {
|
YouTubeListItem::ReelItemRenderer(video) => {
|
||||||
|
|
|
||||||
|
|
@ -5,14 +5,14 @@ use serde::Serialize;
|
||||||
use crate::{
|
use crate::{
|
||||||
error::{Error, ExtractionError},
|
error::{Error, ExtractionError},
|
||||||
model::{
|
model::{
|
||||||
SearchResult, YouTubeItem,
|
|
||||||
paginator::{ContinuationEndpoint, Paginator},
|
paginator::{ContinuationEndpoint, Paginator},
|
||||||
traits::FromYtItem,
|
traits::FromYtItem,
|
||||||
|
SearchResult, YouTubeItem,
|
||||||
},
|
},
|
||||||
param::search_filter::SearchFilter,
|
param::search_filter::SearchFilter,
|
||||||
};
|
};
|
||||||
|
|
||||||
use super::{ClientType, MapRespCtx, MapResponse, MapResult, RustyPipeQuery, response};
|
use super::{response, ClientType, MapRespCtx, MapResponse, MapResult, RustyPipeQuery};
|
||||||
|
|
||||||
#[derive(Debug, Serialize)]
|
#[derive(Debug, Serialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
|
|
@ -143,7 +143,7 @@ mod tests {
|
||||||
use rstest::rstest;
|
use rstest::rstest;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
client::{MapRespCtx, MapResponse, response},
|
client::{response, MapRespCtx, MapResponse},
|
||||||
model::{SearchResult, YouTubeItem},
|
model::{SearchResult, YouTubeItem},
|
||||||
serializer::MapResult,
|
serializer::MapResult,
|
||||||
util::tests::TESTFILES,
|
util::tests::TESTFILES,
|
||||||
|
|
@ -153,7 +153,6 @@ mod tests {
|
||||||
#[case::default("default")]
|
#[case::default("default")]
|
||||||
#[case::playlists("playlists")]
|
#[case::playlists("playlists")]
|
||||||
#[case::empty("empty")]
|
#[case::empty("empty")]
|
||||||
#[case::featuring("featuring")]
|
|
||||||
#[case::ab3_channel_handles("20221121_AB3_channel_handles")]
|
#[case::ab3_channel_handles("20221121_AB3_channel_handles")]
|
||||||
fn t_map_search(#[case] name: &str) {
|
fn t_map_search(#[case] name: &str) {
|
||||||
let json_path = path!(*TESTFILES / "search" / format!("{name}.json"));
|
let json_path = path!(*TESTFILES / "search" / format!("{name}.json"));
|
||||||
|
|
|
||||||
|
|
@ -128,7 +128,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(884000),
|
subscriber_count: Some(884000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 1 year ago"),
|
publish_date_txt: Some("Streamed 1 year ago"),
|
||||||
view_count: Some(28847),
|
view_count: Some(28847),
|
||||||
|
|
@ -170,7 +169,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(884000),
|
subscriber_count: Some(884000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 3 years ago"),
|
publish_date_txt: Some("Streamed 3 years ago"),
|
||||||
view_count: Some(24182),
|
view_count: Some(24182),
|
||||||
|
|
@ -212,7 +210,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(884000),
|
subscriber_count: Some(884000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 3 years ago"),
|
publish_date_txt: Some("Streamed 3 years ago"),
|
||||||
view_count: Some(23565),
|
view_count: Some(23565),
|
||||||
|
|
@ -254,7 +251,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(884000),
|
subscriber_count: Some(884000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 3 years ago"),
|
publish_date_txt: Some("Streamed 3 years ago"),
|
||||||
view_count: Some(25015),
|
view_count: Some(25015),
|
||||||
|
|
@ -296,7 +292,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(884000),
|
subscriber_count: Some(884000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 3 years ago"),
|
publish_date_txt: Some("Streamed 3 years ago"),
|
||||||
view_count: Some(8752),
|
view_count: Some(8752),
|
||||||
|
|
@ -338,7 +333,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(884000),
|
subscriber_count: Some(884000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 3 years ago"),
|
publish_date_txt: Some("Streamed 3 years ago"),
|
||||||
view_count: Some(9189),
|
view_count: Some(9189),
|
||||||
|
|
@ -380,7 +374,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(884000),
|
subscriber_count: Some(884000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 3 years ago"),
|
publish_date_txt: Some("Streamed 3 years ago"),
|
||||||
view_count: Some(17241),
|
view_count: Some(17241),
|
||||||
|
|
@ -422,7 +415,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(884000),
|
subscriber_count: Some(884000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 3 years ago"),
|
publish_date_txt: Some("Streamed 3 years ago"),
|
||||||
view_count: Some(47171),
|
view_count: Some(47171),
|
||||||
|
|
@ -464,7 +456,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(884000),
|
subscriber_count: Some(884000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 3 years ago"),
|
publish_date_txt: Some("Streamed 3 years ago"),
|
||||||
view_count: Some(23998),
|
view_count: Some(23998),
|
||||||
|
|
@ -506,7 +497,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(884000),
|
subscriber_count: Some(884000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(36880),
|
view_count: Some(36880),
|
||||||
|
|
@ -548,7 +538,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(884000),
|
subscriber_count: Some(884000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(49061),
|
view_count: Some(49061),
|
||||||
|
|
@ -590,7 +579,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(884000),
|
subscriber_count: Some(884000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(13210),
|
view_count: Some(13210),
|
||||||
|
|
@ -632,7 +620,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(884000),
|
subscriber_count: Some(884000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(37927),
|
view_count: Some(37927),
|
||||||
|
|
@ -674,7 +661,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(884000),
|
subscriber_count: Some(884000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 5 years ago"),
|
publish_date_txt: Some("Streamed 5 years ago"),
|
||||||
view_count: Some(18865),
|
view_count: Some(18865),
|
||||||
|
|
@ -716,7 +702,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(884000),
|
subscriber_count: Some(884000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 5 years ago"),
|
publish_date_txt: Some("Streamed 5 years ago"),
|
||||||
view_count: Some(72807),
|
view_count: Some(72807),
|
||||||
|
|
@ -758,7 +743,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(884000),
|
subscriber_count: Some(884000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 5 years ago"),
|
publish_date_txt: Some("Streamed 5 years ago"),
|
||||||
view_count: Some(61173),
|
view_count: Some(61173),
|
||||||
|
|
@ -800,7 +784,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(884000),
|
subscriber_count: Some(884000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 6 years ago"),
|
publish_date_txt: Some("Streamed 6 years ago"),
|
||||||
view_count: Some(13529),
|
view_count: Some(13529),
|
||||||
|
|
@ -842,7 +825,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(884000),
|
subscriber_count: Some(884000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 6 years ago"),
|
publish_date_txt: Some("Streamed 6 years ago"),
|
||||||
view_count: Some(6536),
|
view_count: Some(6536),
|
||||||
|
|
@ -884,7 +866,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(884000),
|
subscriber_count: Some(884000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 6 years ago"),
|
publish_date_txt: Some("Streamed 6 years ago"),
|
||||||
view_count: Some(14472),
|
view_count: Some(14472),
|
||||||
|
|
@ -926,7 +907,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(884000),
|
subscriber_count: Some(884000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 6 years ago"),
|
publish_date_txt: Some("Streamed 6 years ago"),
|
||||||
view_count: Some(21240),
|
view_count: Some(21240),
|
||||||
|
|
@ -968,7 +948,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(884000),
|
subscriber_count: Some(884000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 6 years ago"),
|
publish_date_txt: Some("Streamed 6 years ago"),
|
||||||
view_count: Some(30840),
|
view_count: Some(30840),
|
||||||
|
|
@ -1010,7 +989,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(884000),
|
subscriber_count: Some(884000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 6 years ago"),
|
publish_date_txt: Some("Streamed 6 years ago"),
|
||||||
view_count: Some(34258),
|
view_count: Some(34258),
|
||||||
|
|
@ -1052,7 +1030,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(884000),
|
subscriber_count: Some(884000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 6 years ago"),
|
publish_date_txt: Some("Streamed 6 years ago"),
|
||||||
view_count: Some(26864),
|
view_count: Some(26864),
|
||||||
|
|
@ -1094,7 +1071,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(884000),
|
subscriber_count: Some(884000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 6 years ago"),
|
publish_date_txt: Some("Streamed 6 years ago"),
|
||||||
view_count: Some(10757),
|
view_count: Some(10757),
|
||||||
|
|
@ -1136,7 +1112,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(884000),
|
subscriber_count: Some(884000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 7 years ago"),
|
publish_date_txt: Some("Streamed 7 years ago"),
|
||||||
view_count: Some(21599),
|
view_count: Some(21599),
|
||||||
|
|
@ -1178,7 +1153,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(884000),
|
subscriber_count: Some(884000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 7 years ago"),
|
publish_date_txt: Some("Streamed 7 years ago"),
|
||||||
view_count: Some(23010),
|
view_count: Some(23010),
|
||||||
|
|
@ -1220,7 +1194,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(884000),
|
subscriber_count: Some(884000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 7 years ago"),
|
publish_date_txt: Some("Streamed 7 years ago"),
|
||||||
view_count: Some(24056),
|
view_count: Some(24056),
|
||||||
|
|
@ -1262,7 +1235,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(884000),
|
subscriber_count: Some(884000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 7 years ago"),
|
publish_date_txt: Some("Streamed 7 years ago"),
|
||||||
view_count: Some(41211),
|
view_count: Some(41211),
|
||||||
|
|
@ -1304,7 +1276,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(884000),
|
subscriber_count: Some(884000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 8 years ago"),
|
publish_date_txt: Some("Streamed 8 years ago"),
|
||||||
view_count: Some(25316),
|
view_count: Some(25316),
|
||||||
|
|
@ -1346,7 +1317,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(884000),
|
subscriber_count: Some(884000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 8 years ago"),
|
publish_date_txt: Some("Streamed 8 years ago"),
|
||||||
view_count: Some(11747),
|
view_count: Some(11747),
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1300000),
|
view_count: Some(1300000),
|
||||||
|
|
@ -111,7 +110,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(3000000),
|
view_count: Some(3000000),
|
||||||
|
|
@ -138,7 +136,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(6400000),
|
view_count: Some(6400000),
|
||||||
|
|
@ -165,7 +162,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(935000),
|
view_count: Some(935000),
|
||||||
|
|
@ -192,7 +188,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(3000000),
|
view_count: Some(3000000),
|
||||||
|
|
@ -219,7 +214,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(3300000),
|
view_count: Some(3300000),
|
||||||
|
|
@ -246,7 +240,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1800000),
|
view_count: Some(1800000),
|
||||||
|
|
@ -273,7 +266,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(2400000),
|
view_count: Some(2400000),
|
||||||
|
|
@ -300,7 +292,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(3000000),
|
view_count: Some(3000000),
|
||||||
|
|
@ -327,7 +318,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1900000),
|
view_count: Some(1900000),
|
||||||
|
|
@ -354,7 +344,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(3100000),
|
view_count: Some(3100000),
|
||||||
|
|
@ -381,7 +370,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(2800000),
|
view_count: Some(2800000),
|
||||||
|
|
@ -408,7 +396,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(2400000),
|
view_count: Some(2400000),
|
||||||
|
|
@ -435,7 +422,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(6700000),
|
view_count: Some(6700000),
|
||||||
|
|
@ -462,7 +448,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(2900000),
|
view_count: Some(2900000),
|
||||||
|
|
@ -489,7 +474,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(4700000),
|
view_count: Some(4700000),
|
||||||
|
|
@ -516,7 +500,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1500000),
|
view_count: Some(1500000),
|
||||||
|
|
@ -543,7 +526,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(3700000),
|
view_count: Some(3700000),
|
||||||
|
|
@ -570,7 +552,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1600000),
|
view_count: Some(1600000),
|
||||||
|
|
@ -597,7 +578,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(982000),
|
view_count: Some(982000),
|
||||||
|
|
@ -624,7 +604,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1700000),
|
view_count: Some(1700000),
|
||||||
|
|
@ -651,7 +630,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1400000),
|
view_count: Some(1400000),
|
||||||
|
|
@ -678,7 +656,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(2200000),
|
view_count: Some(2200000),
|
||||||
|
|
@ -705,7 +682,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1500000),
|
view_count: Some(1500000),
|
||||||
|
|
@ -732,7 +708,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(2500000),
|
view_count: Some(2500000),
|
||||||
|
|
@ -759,7 +734,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1700000),
|
view_count: Some(1700000),
|
||||||
|
|
@ -786,7 +760,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(3600000),
|
view_count: Some(3600000),
|
||||||
|
|
@ -813,7 +786,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1500000),
|
view_count: Some(1500000),
|
||||||
|
|
@ -840,7 +812,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(4100000),
|
view_count: Some(4100000),
|
||||||
|
|
@ -867,7 +838,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1600000),
|
view_count: Some(1600000),
|
||||||
|
|
@ -894,7 +864,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(980000),
|
view_count: Some(980000),
|
||||||
|
|
@ -921,7 +890,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1600000),
|
view_count: Some(1600000),
|
||||||
|
|
@ -948,7 +916,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(2600000),
|
view_count: Some(2600000),
|
||||||
|
|
@ -975,7 +942,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(9300000),
|
view_count: Some(9300000),
|
||||||
|
|
@ -1002,7 +968,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(529000),
|
view_count: Some(529000),
|
||||||
|
|
@ -1029,7 +994,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1200000),
|
view_count: Some(1200000),
|
||||||
|
|
@ -1056,7 +1020,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1500000),
|
view_count: Some(1500000),
|
||||||
|
|
@ -1083,7 +1046,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(5700000),
|
view_count: Some(5700000),
|
||||||
|
|
@ -1110,7 +1072,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(2100000),
|
view_count: Some(2100000),
|
||||||
|
|
@ -1137,7 +1098,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(3200000),
|
view_count: Some(3200000),
|
||||||
|
|
@ -1164,7 +1124,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(4400000),
|
view_count: Some(4400000),
|
||||||
|
|
@ -1191,7 +1150,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1200000),
|
view_count: Some(1200000),
|
||||||
|
|
@ -1218,7 +1176,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(2700000),
|
view_count: Some(2700000),
|
||||||
|
|
@ -1245,7 +1202,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1200000),
|
view_count: Some(1200000),
|
||||||
|
|
@ -1272,7 +1228,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(6600000),
|
view_count: Some(6600000),
|
||||||
|
|
@ -1299,7 +1254,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(2700000),
|
view_count: Some(2700000),
|
||||||
|
|
@ -1326,7 +1280,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1800000),
|
view_count: Some(1800000),
|
||||||
|
|
@ -1353,7 +1306,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3360000),
|
subscriber_count: Some(3360000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1600000),
|
view_count: Some(1600000),
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(835000),
|
view_count: Some(835000),
|
||||||
|
|
@ -111,7 +110,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(932000),
|
view_count: Some(932000),
|
||||||
|
|
@ -138,7 +136,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1200000),
|
view_count: Some(1200000),
|
||||||
|
|
@ -165,7 +162,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(906000),
|
view_count: Some(906000),
|
||||||
|
|
@ -192,7 +188,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1300000),
|
view_count: Some(1300000),
|
||||||
|
|
@ -219,7 +214,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(409000),
|
view_count: Some(409000),
|
||||||
|
|
@ -246,7 +240,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1000000),
|
view_count: Some(1000000),
|
||||||
|
|
@ -273,7 +266,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(895000),
|
view_count: Some(895000),
|
||||||
|
|
@ -300,7 +292,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(696000),
|
view_count: Some(696000),
|
||||||
|
|
@ -327,7 +318,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1200000),
|
view_count: Some(1200000),
|
||||||
|
|
@ -354,7 +344,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(2500000),
|
view_count: Some(2500000),
|
||||||
|
|
@ -381,7 +370,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1400000),
|
view_count: Some(1400000),
|
||||||
|
|
@ -408,7 +396,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1200000),
|
view_count: Some(1200000),
|
||||||
|
|
@ -435,7 +422,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1800000),
|
view_count: Some(1800000),
|
||||||
|
|
@ -462,7 +448,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(5400000),
|
view_count: Some(5400000),
|
||||||
|
|
@ -489,7 +474,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1700000),
|
view_count: Some(1700000),
|
||||||
|
|
@ -516,7 +500,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(780000),
|
view_count: Some(780000),
|
||||||
|
|
@ -543,7 +526,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(961000),
|
view_count: Some(961000),
|
||||||
|
|
@ -570,7 +552,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1000000),
|
view_count: Some(1000000),
|
||||||
|
|
@ -597,7 +578,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(835000),
|
view_count: Some(835000),
|
||||||
|
|
@ -624,7 +604,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(3900000),
|
view_count: Some(3900000),
|
||||||
|
|
@ -651,7 +630,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(2100000),
|
view_count: Some(2100000),
|
||||||
|
|
@ -678,7 +656,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(3100000),
|
view_count: Some(3100000),
|
||||||
|
|
@ -705,7 +682,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1300000),
|
view_count: Some(1300000),
|
||||||
|
|
@ -732,7 +708,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(2300000),
|
view_count: Some(2300000),
|
||||||
|
|
@ -759,7 +734,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(3700000),
|
view_count: Some(3700000),
|
||||||
|
|
@ -786,7 +760,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(2900000),
|
view_count: Some(2900000),
|
||||||
|
|
@ -813,7 +786,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(5500000),
|
view_count: Some(5500000),
|
||||||
|
|
@ -840,7 +812,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(16000000),
|
view_count: Some(16000000),
|
||||||
|
|
@ -867,7 +838,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1500000),
|
view_count: Some(1500000),
|
||||||
|
|
@ -894,7 +864,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(4100000),
|
view_count: Some(4100000),
|
||||||
|
|
@ -921,7 +890,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(7100000),
|
view_count: Some(7100000),
|
||||||
|
|
@ -948,7 +916,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(2700000),
|
view_count: Some(2700000),
|
||||||
|
|
@ -975,7 +942,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(3200000),
|
view_count: Some(3200000),
|
||||||
|
|
@ -1002,7 +968,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(3600000),
|
view_count: Some(3600000),
|
||||||
|
|
@ -1029,7 +994,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(2500000),
|
view_count: Some(2500000),
|
||||||
|
|
@ -1056,7 +1020,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(4300000),
|
view_count: Some(4300000),
|
||||||
|
|
@ -1083,7 +1046,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(4200000),
|
view_count: Some(4200000),
|
||||||
|
|
@ -1110,7 +1072,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(3500000),
|
view_count: Some(3500000),
|
||||||
|
|
@ -1137,7 +1098,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(11000000),
|
view_count: Some(11000000),
|
||||||
|
|
@ -1164,7 +1124,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(3400000),
|
view_count: Some(3400000),
|
||||||
|
|
@ -1191,7 +1150,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(5300000),
|
view_count: Some(5300000),
|
||||||
|
|
@ -1218,7 +1176,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1800000),
|
view_count: Some(1800000),
|
||||||
|
|
@ -1245,7 +1202,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(4800000),
|
view_count: Some(4800000),
|
||||||
|
|
@ -1272,7 +1228,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1900000),
|
view_count: Some(1900000),
|
||||||
|
|
@ -1299,7 +1254,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1100000),
|
view_count: Some(1100000),
|
||||||
|
|
@ -1326,7 +1280,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1900000),
|
view_count: Some(1900000),
|
||||||
|
|
@ -1353,7 +1306,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(3740000),
|
subscriber_count: Some(3740000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(1600000),
|
view_count: Some(1600000),
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -99,7 +99,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2930000),
|
subscriber_count: Some(2930000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 hours ago"),
|
publish_date_txt: Some("9 hours ago"),
|
||||||
view_count: Some(142423),
|
view_count: Some(142423),
|
||||||
|
|
@ -141,7 +140,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2930000),
|
subscriber_count: Some(2930000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 days ago"),
|
publish_date_txt: Some("7 days ago"),
|
||||||
view_count: Some(989763),
|
view_count: Some(989763),
|
||||||
|
|
@ -183,7 +181,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2930000),
|
subscriber_count: Some(2930000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 weeks ago"),
|
publish_date_txt: Some("2 weeks ago"),
|
||||||
view_count: Some(355470),
|
view_count: Some(355470),
|
||||||
|
|
@ -225,7 +222,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2930000),
|
subscriber_count: Some(2930000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 weeks ago"),
|
publish_date_txt: Some("3 weeks ago"),
|
||||||
view_count: Some(697188),
|
view_count: Some(697188),
|
||||||
|
|
@ -267,7 +263,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2930000),
|
subscriber_count: Some(2930000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 weeks ago"),
|
publish_date_txt: Some("4 weeks ago"),
|
||||||
view_count: Some(529586),
|
view_count: Some(529586),
|
||||||
|
|
@ -309,7 +304,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2930000),
|
subscriber_count: Some(2930000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(1066729),
|
view_count: Some(1066729),
|
||||||
|
|
@ -351,7 +345,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2930000),
|
subscriber_count: Some(2930000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(525663),
|
view_count: Some(525663),
|
||||||
|
|
@ -393,7 +386,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2930000),
|
subscriber_count: Some(2930000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(717806),
|
view_count: Some(717806),
|
||||||
|
|
@ -435,7 +427,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2930000),
|
subscriber_count: Some(2930000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(624673),
|
view_count: Some(624673),
|
||||||
|
|
@ -477,7 +468,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2930000),
|
subscriber_count: Some(2930000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(924135),
|
view_count: Some(924135),
|
||||||
|
|
@ -519,7 +509,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2930000),
|
subscriber_count: Some(2930000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(1053353),
|
view_count: Some(1053353),
|
||||||
|
|
@ -561,7 +550,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2930000),
|
subscriber_count: Some(2930000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(697242),
|
view_count: Some(697242),
|
||||||
|
|
@ -603,7 +591,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2930000),
|
subscriber_count: Some(2930000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 months ago"),
|
publish_date_txt: Some("4 months ago"),
|
||||||
view_count: Some(1086097),
|
view_count: Some(1086097),
|
||||||
|
|
@ -645,7 +632,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2930000),
|
subscriber_count: Some(2930000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 months ago"),
|
publish_date_txt: Some("4 months ago"),
|
||||||
view_count: Some(528979),
|
view_count: Some(528979),
|
||||||
|
|
@ -687,7 +673,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2930000),
|
subscriber_count: Some(2930000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 months ago"),
|
publish_date_txt: Some("4 months ago"),
|
||||||
view_count: Some(1036890),
|
view_count: Some(1036890),
|
||||||
|
|
@ -729,7 +714,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2930000),
|
subscriber_count: Some(2930000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 months ago"),
|
publish_date_txt: Some("4 months ago"),
|
||||||
view_count: Some(832542),
|
view_count: Some(832542),
|
||||||
|
|
@ -771,7 +755,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2930000),
|
subscriber_count: Some(2930000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 months ago"),
|
publish_date_txt: Some("4 months ago"),
|
||||||
view_count: Some(1342882),
|
view_count: Some(1342882),
|
||||||
|
|
@ -813,7 +796,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2930000),
|
subscriber_count: Some(2930000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 months ago"),
|
publish_date_txt: Some("4 months ago"),
|
||||||
view_count: Some(1076848),
|
view_count: Some(1076848),
|
||||||
|
|
@ -855,7 +837,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2930000),
|
subscriber_count: Some(2930000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 months ago"),
|
publish_date_txt: Some("5 months ago"),
|
||||||
view_count: Some(562349),
|
view_count: Some(562349),
|
||||||
|
|
@ -897,7 +878,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2930000),
|
subscriber_count: Some(2930000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 months ago"),
|
publish_date_txt: Some("6 months ago"),
|
||||||
view_count: Some(531938),
|
view_count: Some(531938),
|
||||||
|
|
@ -939,7 +919,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2930000),
|
subscriber_count: Some(2930000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 months ago"),
|
publish_date_txt: Some("6 months ago"),
|
||||||
view_count: Some(426469),
|
view_count: Some(426469),
|
||||||
|
|
@ -981,7 +960,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2930000),
|
subscriber_count: Some(2930000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 months ago"),
|
publish_date_txt: Some("6 months ago"),
|
||||||
view_count: Some(448915),
|
view_count: Some(448915),
|
||||||
|
|
@ -1023,7 +1001,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2930000),
|
subscriber_count: Some(2930000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 months ago"),
|
publish_date_txt: Some("6 months ago"),
|
||||||
view_count: Some(675443),
|
view_count: Some(675443),
|
||||||
|
|
@ -1065,7 +1042,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2930000),
|
subscriber_count: Some(2930000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 months ago"),
|
publish_date_txt: Some("6 months ago"),
|
||||||
view_count: Some(426465),
|
view_count: Some(426465),
|
||||||
|
|
@ -1107,7 +1083,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2930000),
|
subscriber_count: Some(2930000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 months ago"),
|
publish_date_txt: Some("7 months ago"),
|
||||||
view_count: Some(1137831),
|
view_count: Some(1137831),
|
||||||
|
|
@ -1149,7 +1124,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2930000),
|
subscriber_count: Some(2930000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 months ago"),
|
publish_date_txt: Some("7 months ago"),
|
||||||
view_count: Some(612275),
|
view_count: Some(612275),
|
||||||
|
|
@ -1191,7 +1165,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2930000),
|
subscriber_count: Some(2930000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 months ago"),
|
publish_date_txt: Some("7 months ago"),
|
||||||
view_count: Some(396397),
|
view_count: Some(396397),
|
||||||
|
|
@ -1233,7 +1206,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2930000),
|
subscriber_count: Some(2930000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 months ago"),
|
publish_date_txt: Some("7 months ago"),
|
||||||
view_count: Some(599030),
|
view_count: Some(599030),
|
||||||
|
|
@ -1275,7 +1247,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2930000),
|
subscriber_count: Some(2930000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 months ago"),
|
publish_date_txt: Some("7 months ago"),
|
||||||
view_count: Some(530192),
|
view_count: Some(530192),
|
||||||
|
|
@ -1317,7 +1288,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2930000),
|
subscriber_count: Some(2930000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 months ago"),
|
publish_date_txt: Some("8 months ago"),
|
||||||
view_count: Some(567604),
|
view_count: Some(567604),
|
||||||
|
|
|
||||||
|
|
@ -128,7 +128,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(883000),
|
subscriber_count: Some(883000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 day ago"),
|
publish_date_txt: Some("1 day ago"),
|
||||||
view_count: Some(8813),
|
view_count: Some(8813),
|
||||||
|
|
@ -170,7 +169,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(883000),
|
subscriber_count: Some(883000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 days ago"),
|
publish_date_txt: Some("6 days ago"),
|
||||||
view_count: Some(48599),
|
view_count: Some(48599),
|
||||||
|
|
@ -212,7 +210,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(883000),
|
subscriber_count: Some(883000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("10 days ago"),
|
publish_date_txt: Some("10 days ago"),
|
||||||
view_count: Some(74126),
|
view_count: Some(74126),
|
||||||
|
|
@ -254,7 +251,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(883000),
|
subscriber_count: Some(883000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 days ago"),
|
publish_date_txt: Some("11 days ago"),
|
||||||
view_count: Some(36129),
|
view_count: Some(36129),
|
||||||
|
|
@ -296,7 +292,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(883000),
|
subscriber_count: Some(883000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 weeks ago"),
|
publish_date_txt: Some("2 weeks ago"),
|
||||||
view_count: Some(87357),
|
view_count: Some(87357),
|
||||||
|
|
@ -338,7 +333,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(883000),
|
subscriber_count: Some(883000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 weeks ago"),
|
publish_date_txt: Some("2 weeks ago"),
|
||||||
view_count: Some(48259),
|
view_count: Some(48259),
|
||||||
|
|
@ -380,7 +374,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(883000),
|
subscriber_count: Some(883000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 weeks ago"),
|
publish_date_txt: Some("3 weeks ago"),
|
||||||
view_count: Some(27509),
|
view_count: Some(27509),
|
||||||
|
|
@ -422,7 +415,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(883000),
|
subscriber_count: Some(883000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 weeks ago"),
|
publish_date_txt: Some("3 weeks ago"),
|
||||||
view_count: Some(57925),
|
view_count: Some(57925),
|
||||||
|
|
@ -464,7 +456,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(883000),
|
subscriber_count: Some(883000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(77907),
|
view_count: Some(77907),
|
||||||
|
|
@ -506,7 +497,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(883000),
|
subscriber_count: Some(883000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(63421),
|
view_count: Some(63421),
|
||||||
|
|
@ -548,7 +538,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(883000),
|
subscriber_count: Some(883000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(73052),
|
view_count: Some(73052),
|
||||||
|
|
@ -590,7 +579,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(883000),
|
subscriber_count: Some(883000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(93529),
|
view_count: Some(93529),
|
||||||
|
|
@ -632,7 +620,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(883000),
|
subscriber_count: Some(883000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(41569),
|
view_count: Some(41569),
|
||||||
|
|
@ -674,7 +661,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(883000),
|
subscriber_count: Some(883000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(22842),
|
view_count: Some(22842),
|
||||||
|
|
@ -716,7 +702,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(883000),
|
subscriber_count: Some(883000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(41621),
|
view_count: Some(41621),
|
||||||
|
|
@ -758,7 +743,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(883000),
|
subscriber_count: Some(883000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(77542),
|
view_count: Some(77542),
|
||||||
|
|
@ -800,7 +784,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(883000),
|
subscriber_count: Some(883000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(34947),
|
view_count: Some(34947),
|
||||||
|
|
@ -842,7 +825,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(883000),
|
subscriber_count: Some(883000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(45618),
|
view_count: Some(45618),
|
||||||
|
|
@ -884,7 +866,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(883000),
|
subscriber_count: Some(883000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(34868),
|
view_count: Some(34868),
|
||||||
|
|
@ -926,7 +907,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(883000),
|
subscriber_count: Some(883000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(64336),
|
view_count: Some(64336),
|
||||||
|
|
@ -968,7 +948,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(883000),
|
subscriber_count: Some(883000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(150958),
|
view_count: Some(150958),
|
||||||
|
|
@ -1010,7 +989,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(883000),
|
subscriber_count: Some(883000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(30903),
|
view_count: Some(30903),
|
||||||
|
|
@ -1052,7 +1030,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(883000),
|
subscriber_count: Some(883000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(48669),
|
view_count: Some(48669),
|
||||||
|
|
@ -1094,7 +1071,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(883000),
|
subscriber_count: Some(883000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(83505),
|
view_count: Some(83505),
|
||||||
|
|
@ -1136,7 +1112,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(883000),
|
subscriber_count: Some(883000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(42843),
|
view_count: Some(42843),
|
||||||
|
|
@ -1178,7 +1153,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(883000),
|
subscriber_count: Some(883000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(26036),
|
view_count: Some(26036),
|
||||||
|
|
@ -1220,7 +1194,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(883000),
|
subscriber_count: Some(883000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(63729),
|
view_count: Some(63729),
|
||||||
|
|
@ -1262,7 +1235,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(883000),
|
subscriber_count: Some(883000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(22920),
|
view_count: Some(22920),
|
||||||
|
|
@ -1304,7 +1276,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(883000),
|
subscriber_count: Some(883000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(66042),
|
view_count: Some(66042),
|
||||||
|
|
@ -1346,7 +1317,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(883000),
|
subscriber_count: Some(883000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(52065),
|
view_count: Some(52065),
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2710000),
|
subscriber_count: Some(2710000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("15 hours ago"),
|
publish_date_txt: Some("15 hours ago"),
|
||||||
view_count: Some(18243),
|
view_count: Some(18243),
|
||||||
|
|
@ -115,7 +114,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2710000),
|
subscriber_count: Some(2710000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("15 hours ago"),
|
publish_date_txt: Some("15 hours ago"),
|
||||||
view_count: Some(22085),
|
view_count: Some(22085),
|
||||||
|
|
@ -157,7 +155,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2710000),
|
subscriber_count: Some(2710000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("15 hours ago"),
|
publish_date_txt: Some("15 hours ago"),
|
||||||
view_count: Some(12816),
|
view_count: Some(12816),
|
||||||
|
|
@ -199,7 +196,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2710000),
|
subscriber_count: Some(2710000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("15 hours ago"),
|
publish_date_txt: Some("15 hours ago"),
|
||||||
view_count: Some(5648),
|
view_count: Some(5648),
|
||||||
|
|
@ -241,7 +237,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2710000),
|
subscriber_count: Some(2710000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("15 hours ago"),
|
publish_date_txt: Some("15 hours ago"),
|
||||||
view_count: Some(21741),
|
view_count: Some(21741),
|
||||||
|
|
@ -283,7 +278,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2710000),
|
subscriber_count: Some(2710000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("15 hours ago"),
|
publish_date_txt: Some("15 hours ago"),
|
||||||
view_count: Some(8090),
|
view_count: Some(8090),
|
||||||
|
|
@ -325,7 +319,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2710000),
|
subscriber_count: Some(2710000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("15 hours ago"),
|
publish_date_txt: Some("15 hours ago"),
|
||||||
view_count: Some(19118),
|
view_count: Some(19118),
|
||||||
|
|
@ -367,7 +360,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2710000),
|
subscriber_count: Some(2710000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("15 hours ago"),
|
publish_date_txt: Some("15 hours ago"),
|
||||||
view_count: Some(13697),
|
view_count: Some(13697),
|
||||||
|
|
@ -409,7 +401,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2710000),
|
subscriber_count: Some(2710000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("15 hours ago"),
|
publish_date_txt: Some("15 hours ago"),
|
||||||
view_count: Some(293675),
|
view_count: Some(293675),
|
||||||
|
|
@ -451,7 +442,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2710000),
|
subscriber_count: Some(2710000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("15 hours ago"),
|
publish_date_txt: Some("15 hours ago"),
|
||||||
view_count: Some(230150),
|
view_count: Some(230150),
|
||||||
|
|
@ -493,7 +483,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2710000),
|
subscriber_count: Some(2710000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 days ago"),
|
publish_date_txt: Some("8 days ago"),
|
||||||
view_count: Some(19046),
|
view_count: Some(19046),
|
||||||
|
|
@ -535,7 +524,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2710000),
|
subscriber_count: Some(2710000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("12 days ago"),
|
publish_date_txt: Some("12 days ago"),
|
||||||
view_count: Some(487186),
|
view_count: Some(487186),
|
||||||
|
|
@ -577,7 +565,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2710000),
|
subscriber_count: Some(2710000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 weeks ago"),
|
publish_date_txt: Some("4 weeks ago"),
|
||||||
view_count: Some(8763),
|
view_count: Some(8763),
|
||||||
|
|
@ -619,7 +606,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2710000),
|
subscriber_count: Some(2710000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(712644),
|
view_count: Some(712644),
|
||||||
|
|
@ -661,7 +647,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2710000),
|
subscriber_count: Some(2710000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 months ago"),
|
publish_date_txt: Some("6 months ago"),
|
||||||
view_count: Some(6701),
|
view_count: Some(6701),
|
||||||
|
|
@ -703,7 +688,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2710000),
|
subscriber_count: Some(2710000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 months ago"),
|
publish_date_txt: Some("11 months ago"),
|
||||||
view_count: Some(7898),
|
view_count: Some(7898),
|
||||||
|
|
@ -745,7 +729,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2710000),
|
subscriber_count: Some(2710000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 months ago"),
|
publish_date_txt: Some("11 months ago"),
|
||||||
view_count: Some(8503),
|
view_count: Some(8503),
|
||||||
|
|
@ -787,7 +770,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2710000),
|
subscriber_count: Some(2710000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 months ago"),
|
publish_date_txt: Some("11 months ago"),
|
||||||
view_count: Some(2155),
|
view_count: Some(2155),
|
||||||
|
|
@ -829,7 +811,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2710000),
|
subscriber_count: Some(2710000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 months ago"),
|
publish_date_txt: Some("11 months ago"),
|
||||||
view_count: Some(3050),
|
view_count: Some(3050),
|
||||||
|
|
@ -871,7 +852,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2710000),
|
subscriber_count: Some(2710000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 months ago"),
|
publish_date_txt: Some("11 months ago"),
|
||||||
view_count: Some(16468),
|
view_count: Some(16468),
|
||||||
|
|
@ -913,7 +893,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2710000),
|
subscriber_count: Some(2710000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 months ago"),
|
publish_date_txt: Some("11 months ago"),
|
||||||
view_count: Some(91744),
|
view_count: Some(91744),
|
||||||
|
|
@ -955,7 +934,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2710000),
|
subscriber_count: Some(2710000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 months ago"),
|
publish_date_txt: Some("11 months ago"),
|
||||||
view_count: Some(3921),
|
view_count: Some(3921),
|
||||||
|
|
@ -997,7 +975,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2710000),
|
subscriber_count: Some(2710000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 months ago"),
|
publish_date_txt: Some("11 months ago"),
|
||||||
view_count: Some(2924),
|
view_count: Some(2924),
|
||||||
|
|
@ -1039,7 +1016,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2710000),
|
subscriber_count: Some(2710000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 months ago"),
|
publish_date_txt: Some("11 months ago"),
|
||||||
view_count: Some(36043),
|
view_count: Some(36043),
|
||||||
|
|
@ -1081,7 +1057,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2710000),
|
subscriber_count: Some(2710000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 months ago"),
|
publish_date_txt: Some("11 months ago"),
|
||||||
view_count: Some(966),
|
view_count: Some(966),
|
||||||
|
|
@ -1123,7 +1098,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2710000),
|
subscriber_count: Some(2710000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 months ago"),
|
publish_date_txt: Some("11 months ago"),
|
||||||
view_count: Some(6601),
|
view_count: Some(6601),
|
||||||
|
|
@ -1165,7 +1139,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2710000),
|
subscriber_count: Some(2710000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 months ago"),
|
publish_date_txt: Some("11 months ago"),
|
||||||
view_count: Some(39401),
|
view_count: Some(39401),
|
||||||
|
|
@ -1207,7 +1180,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2710000),
|
subscriber_count: Some(2710000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 months ago"),
|
publish_date_txt: Some("11 months ago"),
|
||||||
view_count: Some(2111),
|
view_count: Some(2111),
|
||||||
|
|
@ -1249,7 +1221,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2710000),
|
subscriber_count: Some(2710000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 months ago"),
|
publish_date_txt: Some("11 months ago"),
|
||||||
view_count: Some(6124),
|
view_count: Some(6124),
|
||||||
|
|
@ -1291,7 +1262,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2710000),
|
subscriber_count: Some(2710000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 months ago"),
|
publish_date_txt: Some("11 months ago"),
|
||||||
view_count: Some(2944),
|
view_count: Some(2944),
|
||||||
|
|
|
||||||
|
|
@ -128,7 +128,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(933000),
|
subscriber_count: Some(933000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("12 days ago"),
|
publish_date_txt: Some("12 days ago"),
|
||||||
view_count: Some(27799),
|
view_count: Some(27799),
|
||||||
|
|
@ -170,7 +169,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(933000),
|
subscriber_count: Some(933000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 weeks ago"),
|
publish_date_txt: Some("2 weeks ago"),
|
||||||
view_count: Some(34723),
|
view_count: Some(34723),
|
||||||
|
|
@ -212,7 +210,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(933000),
|
subscriber_count: Some(933000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 weeks ago"),
|
publish_date_txt: Some("3 weeks ago"),
|
||||||
view_count: Some(60589),
|
view_count: Some(60589),
|
||||||
|
|
@ -254,7 +251,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(933000),
|
subscriber_count: Some(933000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 weeks ago"),
|
publish_date_txt: Some("3 weeks ago"),
|
||||||
view_count: Some(48158),
|
view_count: Some(48158),
|
||||||
|
|
@ -296,7 +292,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(933000),
|
subscriber_count: Some(933000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 weeks ago"),
|
publish_date_txt: Some("4 weeks ago"),
|
||||||
view_count: Some(23312),
|
view_count: Some(23312),
|
||||||
|
|
@ -338,7 +333,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(933000),
|
subscriber_count: Some(933000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(70912),
|
view_count: Some(70912),
|
||||||
|
|
@ -380,7 +374,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(933000),
|
subscriber_count: Some(933000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(45396),
|
view_count: Some(45396),
|
||||||
|
|
@ -422,7 +415,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(933000),
|
subscriber_count: Some(933000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(54864),
|
view_count: Some(54864),
|
||||||
|
|
@ -464,7 +456,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(933000),
|
subscriber_count: Some(933000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(145453),
|
view_count: Some(145453),
|
||||||
|
|
@ -506,7 +497,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(933000),
|
subscriber_count: Some(933000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(37347),
|
view_count: Some(37347),
|
||||||
|
|
@ -548,7 +538,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(933000),
|
subscriber_count: Some(933000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(145315),
|
view_count: Some(145315),
|
||||||
|
|
@ -590,7 +579,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(933000),
|
subscriber_count: Some(933000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(73277),
|
view_count: Some(73277),
|
||||||
|
|
@ -632,7 +620,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(933000),
|
subscriber_count: Some(933000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(24722),
|
view_count: Some(24722),
|
||||||
|
|
@ -674,7 +661,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(933000),
|
subscriber_count: Some(933000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(51408),
|
view_count: Some(51408),
|
||||||
|
|
@ -716,7 +702,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(933000),
|
subscriber_count: Some(933000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(48969),
|
view_count: Some(48969),
|
||||||
|
|
@ -758,7 +743,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(933000),
|
subscriber_count: Some(933000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(49405),
|
view_count: Some(49405),
|
||||||
|
|
@ -800,7 +784,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(933000),
|
subscriber_count: Some(933000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(24160),
|
view_count: Some(24160),
|
||||||
|
|
@ -842,7 +825,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(933000),
|
subscriber_count: Some(933000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(56586),
|
view_count: Some(56586),
|
||||||
|
|
@ -884,7 +866,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(933000),
|
subscriber_count: Some(933000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(21250),
|
view_count: Some(21250),
|
||||||
|
|
@ -926,7 +907,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(933000),
|
subscriber_count: Some(933000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(23126),
|
view_count: Some(23126),
|
||||||
|
|
@ -968,7 +948,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(933000),
|
subscriber_count: Some(933000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(42940),
|
view_count: Some(42940),
|
||||||
|
|
@ -1010,7 +989,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(933000),
|
subscriber_count: Some(933000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(48996),
|
view_count: Some(48996),
|
||||||
|
|
@ -1052,7 +1030,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(933000),
|
subscriber_count: Some(933000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(49899),
|
view_count: Some(49899),
|
||||||
|
|
@ -1094,7 +1071,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(933000),
|
subscriber_count: Some(933000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(24076),
|
view_count: Some(24076),
|
||||||
|
|
@ -1136,7 +1112,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(933000),
|
subscriber_count: Some(933000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(149964),
|
view_count: Some(149964),
|
||||||
|
|
@ -1178,7 +1153,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(933000),
|
subscriber_count: Some(933000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 months ago"),
|
publish_date_txt: Some("4 months ago"),
|
||||||
view_count: Some(52290),
|
view_count: Some(52290),
|
||||||
|
|
@ -1220,7 +1194,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(933000),
|
subscriber_count: Some(933000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 months ago"),
|
publish_date_txt: Some("4 months ago"),
|
||||||
view_count: Some(29462),
|
view_count: Some(29462),
|
||||||
|
|
@ -1262,7 +1235,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(933000),
|
subscriber_count: Some(933000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 months ago"),
|
publish_date_txt: Some("4 months ago"),
|
||||||
view_count: Some(116169),
|
view_count: Some(116169),
|
||||||
|
|
@ -1304,7 +1276,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(933000),
|
subscriber_count: Some(933000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 months ago"),
|
publish_date_txt: Some("4 months ago"),
|
||||||
view_count: Some(40487),
|
view_count: Some(40487),
|
||||||
|
|
@ -1346,7 +1317,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(933000),
|
subscriber_count: Some(933000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 months ago"),
|
publish_date_txt: Some("4 months ago"),
|
||||||
view_count: Some(17237),
|
view_count: Some(17237),
|
||||||
|
|
|
||||||
|
|
@ -128,7 +128,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(880000),
|
subscriber_count: Some(880000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("20 hours ago"),
|
publish_date_txt: Some("20 hours ago"),
|
||||||
view_count: Some(19739),
|
view_count: Some(19739),
|
||||||
|
|
@ -170,7 +169,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(880000),
|
subscriber_count: Some(880000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 days ago"),
|
publish_date_txt: Some("5 days ago"),
|
||||||
view_count: Some(24194),
|
view_count: Some(24194),
|
||||||
|
|
@ -212,7 +210,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(880000),
|
subscriber_count: Some(880000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 days ago"),
|
publish_date_txt: Some("7 days ago"),
|
||||||
view_count: Some(51443),
|
view_count: Some(51443),
|
||||||
|
|
@ -254,7 +251,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(880000),
|
subscriber_count: Some(880000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("13 days ago"),
|
publish_date_txt: Some("13 days ago"),
|
||||||
view_count: Some(72324),
|
view_count: Some(72324),
|
||||||
|
|
@ -296,7 +292,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(880000),
|
subscriber_count: Some(880000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 weeks ago"),
|
publish_date_txt: Some("2 weeks ago"),
|
||||||
view_count: Some(57348),
|
view_count: Some(57348),
|
||||||
|
|
@ -338,7 +333,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(880000),
|
subscriber_count: Some(880000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 weeks ago"),
|
publish_date_txt: Some("2 weeks ago"),
|
||||||
view_count: Some(68645),
|
view_count: Some(68645),
|
||||||
|
|
@ -380,7 +374,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(880000),
|
subscriber_count: Some(880000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 weeks ago"),
|
publish_date_txt: Some("3 weeks ago"),
|
||||||
view_count: Some(91388),
|
view_count: Some(91388),
|
||||||
|
|
@ -422,7 +415,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(880000),
|
subscriber_count: Some(880000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 weeks ago"),
|
publish_date_txt: Some("3 weeks ago"),
|
||||||
view_count: Some(39993),
|
view_count: Some(39993),
|
||||||
|
|
@ -464,7 +456,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(880000),
|
subscriber_count: Some(880000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 weeks ago"),
|
publish_date_txt: Some("4 weeks ago"),
|
||||||
view_count: Some(22512),
|
view_count: Some(22512),
|
||||||
|
|
@ -506,7 +497,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(880000),
|
subscriber_count: Some(880000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(40137),
|
view_count: Some(40137),
|
||||||
|
|
@ -548,7 +538,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(880000),
|
subscriber_count: Some(880000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(74510),
|
view_count: Some(74510),
|
||||||
|
|
@ -590,7 +579,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(880000),
|
subscriber_count: Some(880000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(34487),
|
view_count: Some(34487),
|
||||||
|
|
@ -632,7 +620,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(880000),
|
subscriber_count: Some(880000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(44928),
|
view_count: Some(44928),
|
||||||
|
|
@ -674,7 +661,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(880000),
|
subscriber_count: Some(880000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(34324),
|
view_count: Some(34324),
|
||||||
|
|
@ -716,7 +702,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(880000),
|
subscriber_count: Some(880000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(63763),
|
view_count: Some(63763),
|
||||||
|
|
@ -758,7 +743,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(880000),
|
subscriber_count: Some(880000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(149186),
|
view_count: Some(149186),
|
||||||
|
|
@ -800,7 +784,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(880000),
|
subscriber_count: Some(880000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(30130),
|
view_count: Some(30130),
|
||||||
|
|
@ -842,7 +825,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(880000),
|
subscriber_count: Some(880000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(48037),
|
view_count: Some(48037),
|
||||||
|
|
@ -884,7 +866,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(880000),
|
subscriber_count: Some(880000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(81958),
|
view_count: Some(81958),
|
||||||
|
|
@ -926,7 +907,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(880000),
|
subscriber_count: Some(880000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(42635),
|
view_count: Some(42635),
|
||||||
|
|
@ -968,7 +948,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(880000),
|
subscriber_count: Some(880000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(25860),
|
view_count: Some(25860),
|
||||||
|
|
@ -1010,7 +989,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(880000),
|
subscriber_count: Some(880000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(63035),
|
view_count: Some(63035),
|
||||||
|
|
@ -1052,7 +1030,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(880000),
|
subscriber_count: Some(880000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(22731),
|
view_count: Some(22731),
|
||||||
|
|
@ -1094,7 +1071,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(880000),
|
subscriber_count: Some(880000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(65765),
|
view_count: Some(65765),
|
||||||
|
|
@ -1136,7 +1112,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(880000),
|
subscriber_count: Some(880000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(51555),
|
view_count: Some(51555),
|
||||||
|
|
@ -1178,7 +1153,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(880000),
|
subscriber_count: Some(880000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(46638),
|
view_count: Some(46638),
|
||||||
|
|
@ -1220,7 +1194,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(880000),
|
subscriber_count: Some(880000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(62921),
|
view_count: Some(62921),
|
||||||
|
|
@ -1262,7 +1235,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(880000),
|
subscriber_count: Some(880000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(66895),
|
view_count: Some(66895),
|
||||||
|
|
@ -1304,7 +1276,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(880000),
|
subscriber_count: Some(880000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(25894),
|
view_count: Some(25894),
|
||||||
|
|
@ -1346,7 +1317,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(880000),
|
subscriber_count: Some(880000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(80173),
|
view_count: Some(80173),
|
||||||
|
|
|
||||||
|
|
@ -112,7 +112,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(760000),
|
subscriber_count: Some(760000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(94),
|
view_count: Some(94),
|
||||||
|
|
@ -154,7 +153,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(760000),
|
subscriber_count: Some(760000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(381),
|
view_count: Some(381),
|
||||||
|
|
@ -196,7 +194,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(760000),
|
subscriber_count: Some(760000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(241528),
|
view_count: Some(241528),
|
||||||
|
|
@ -238,7 +235,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(760000),
|
subscriber_count: Some(760000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(118351),
|
view_count: Some(118351),
|
||||||
|
|
@ -280,7 +276,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(760000),
|
subscriber_count: Some(760000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(157971),
|
view_count: Some(157971),
|
||||||
|
|
@ -322,7 +317,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(760000),
|
subscriber_count: Some(760000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(82309),
|
view_count: Some(82309),
|
||||||
|
|
@ -364,7 +358,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(760000),
|
subscriber_count: Some(760000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(2043),
|
view_count: Some(2043),
|
||||||
|
|
@ -406,7 +399,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(760000),
|
subscriber_count: Some(760000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 years ago"),
|
publish_date_txt: Some("2 years ago"),
|
||||||
view_count: Some(186475),
|
view_count: Some(186475),
|
||||||
|
|
@ -448,7 +440,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(760000),
|
subscriber_count: Some(760000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 years ago"),
|
publish_date_txt: Some("2 years ago"),
|
||||||
view_count: Some(66425),
|
view_count: Some(66425),
|
||||||
|
|
@ -490,7 +481,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(760000),
|
subscriber_count: Some(760000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 years ago"),
|
publish_date_txt: Some("2 years ago"),
|
||||||
view_count: Some(1520020),
|
view_count: Some(1520020),
|
||||||
|
|
@ -532,7 +522,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(760000),
|
subscriber_count: Some(760000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 years ago"),
|
publish_date_txt: Some("2 years ago"),
|
||||||
view_count: Some(37549),
|
view_count: Some(37549),
|
||||||
|
|
@ -574,7 +563,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(760000),
|
subscriber_count: Some(760000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 years ago"),
|
publish_date_txt: Some("2 years ago"),
|
||||||
view_count: Some(33002),
|
view_count: Some(33002),
|
||||||
|
|
@ -616,7 +604,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(760000),
|
subscriber_count: Some(760000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 years ago"),
|
publish_date_txt: Some("2 years ago"),
|
||||||
view_count: Some(42036),
|
view_count: Some(42036),
|
||||||
|
|
@ -658,7 +645,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(760000),
|
subscriber_count: Some(760000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 years ago"),
|
publish_date_txt: Some("2 years ago"),
|
||||||
view_count: Some(322935),
|
view_count: Some(322935),
|
||||||
|
|
@ -700,7 +686,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(760000),
|
subscriber_count: Some(760000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 years ago"),
|
publish_date_txt: Some("2 years ago"),
|
||||||
view_count: Some(91980),
|
view_count: Some(91980),
|
||||||
|
|
@ -742,7 +727,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(760000),
|
subscriber_count: Some(760000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(4030),
|
view_count: Some(4030),
|
||||||
|
|
@ -784,7 +768,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(760000),
|
subscriber_count: Some(760000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 years ago"),
|
publish_date_txt: Some("2 years ago"),
|
||||||
view_count: Some(288098),
|
view_count: Some(288098),
|
||||||
|
|
@ -826,7 +809,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(760000),
|
subscriber_count: Some(760000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 years ago"),
|
publish_date_txt: Some("2 years ago"),
|
||||||
view_count: Some(50818),
|
view_count: Some(50818),
|
||||||
|
|
@ -868,7 +850,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(760000),
|
subscriber_count: Some(760000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 years ago"),
|
publish_date_txt: Some("2 years ago"),
|
||||||
view_count: Some(98431),
|
view_count: Some(98431),
|
||||||
|
|
@ -910,7 +891,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(760000),
|
subscriber_count: Some(760000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 years ago"),
|
publish_date_txt: Some("3 years ago"),
|
||||||
view_count: Some(572456),
|
view_count: Some(572456),
|
||||||
|
|
@ -952,7 +932,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(760000),
|
subscriber_count: Some(760000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 years ago"),
|
publish_date_txt: Some("3 years ago"),
|
||||||
view_count: Some(3114909),
|
view_count: Some(3114909),
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2840000),
|
subscriber_count: Some(2840000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 day ago"),
|
publish_date_txt: Some("1 day ago"),
|
||||||
view_count: Some(443549),
|
view_count: Some(443549),
|
||||||
|
|
@ -111,7 +110,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2840000),
|
subscriber_count: Some(2840000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 days ago"),
|
publish_date_txt: Some("2 days ago"),
|
||||||
view_count: Some(1154962),
|
view_count: Some(1154962),
|
||||||
|
|
@ -153,7 +151,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2840000),
|
subscriber_count: Some(2840000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 days ago"),
|
publish_date_txt: Some("3 days ago"),
|
||||||
view_count: Some(477460),
|
view_count: Some(477460),
|
||||||
|
|
@ -180,7 +177,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2840000),
|
subscriber_count: Some(2840000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 days ago"),
|
publish_date_txt: Some("6 days ago"),
|
||||||
view_count: Some(1388173),
|
view_count: Some(1388173),
|
||||||
|
|
@ -207,7 +203,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2840000),
|
subscriber_count: Some(2840000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 days ago"),
|
publish_date_txt: Some("7 days ago"),
|
||||||
view_count: Some(1738301),
|
view_count: Some(1738301),
|
||||||
|
|
@ -234,7 +229,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2840000),
|
subscriber_count: Some(2840000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 days ago"),
|
publish_date_txt: Some("9 days ago"),
|
||||||
view_count: Some(1316594),
|
view_count: Some(1316594),
|
||||||
|
|
@ -276,7 +270,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2840000),
|
subscriber_count: Some(2840000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("10 days ago"),
|
publish_date_txt: Some("10 days ago"),
|
||||||
view_count: Some(478703),
|
view_count: Some(478703),
|
||||||
|
|
@ -303,7 +296,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2840000),
|
subscriber_count: Some(2840000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 days ago"),
|
publish_date_txt: Some("11 days ago"),
|
||||||
view_count: Some(1412213),
|
view_count: Some(1412213),
|
||||||
|
|
@ -330,7 +322,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2840000),
|
subscriber_count: Some(2840000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("13 days ago"),
|
publish_date_txt: Some("13 days ago"),
|
||||||
view_count: Some(1513305),
|
view_count: Some(1513305),
|
||||||
|
|
@ -357,7 +348,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2840000),
|
subscriber_count: Some(2840000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 weeks ago"),
|
publish_date_txt: Some("2 weeks ago"),
|
||||||
view_count: Some(8936223),
|
view_count: Some(8936223),
|
||||||
|
|
@ -399,7 +389,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2840000),
|
subscriber_count: Some(2840000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 weeks ago"),
|
publish_date_txt: Some("2 weeks ago"),
|
||||||
view_count: Some(987083),
|
view_count: Some(987083),
|
||||||
|
|
@ -426,7 +415,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2840000),
|
subscriber_count: Some(2840000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 weeks ago"),
|
publish_date_txt: Some("2 weeks ago"),
|
||||||
view_count: Some(2769717),
|
view_count: Some(2769717),
|
||||||
|
|
@ -468,7 +456,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2840000),
|
subscriber_count: Some(2840000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 weeks ago"),
|
publish_date_txt: Some("3 weeks ago"),
|
||||||
view_count: Some(497660),
|
view_count: Some(497660),
|
||||||
|
|
@ -495,7 +482,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2840000),
|
subscriber_count: Some(2840000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 weeks ago"),
|
publish_date_txt: Some("3 weeks ago"),
|
||||||
view_count: Some(572107),
|
view_count: Some(572107),
|
||||||
|
|
@ -522,7 +508,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2840000),
|
subscriber_count: Some(2840000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 weeks ago"),
|
publish_date_txt: Some("3 weeks ago"),
|
||||||
view_count: Some(1707132),
|
view_count: Some(1707132),
|
||||||
|
|
@ -549,7 +534,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2840000),
|
subscriber_count: Some(2840000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 weeks ago"),
|
publish_date_txt: Some("3 weeks ago"),
|
||||||
view_count: Some(933094),
|
view_count: Some(933094),
|
||||||
|
|
@ -576,7 +560,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2840000),
|
subscriber_count: Some(2840000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(5985184),
|
view_count: Some(5985184),
|
||||||
|
|
@ -603,7 +586,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2840000),
|
subscriber_count: Some(2840000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(14741387),
|
view_count: Some(14741387),
|
||||||
|
|
@ -630,7 +612,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2840000),
|
subscriber_count: Some(2840000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(2511322),
|
view_count: Some(2511322),
|
||||||
|
|
@ -657,7 +638,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2840000),
|
subscriber_count: Some(2840000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(2364408),
|
view_count: Some(2364408),
|
||||||
|
|
@ -699,7 +679,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2840000),
|
subscriber_count: Some(2840000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(706059),
|
view_count: Some(706059),
|
||||||
|
|
@ -726,7 +705,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2840000),
|
subscriber_count: Some(2840000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(1947627),
|
view_count: Some(1947627),
|
||||||
|
|
@ -753,7 +731,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2840000),
|
subscriber_count: Some(2840000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(4763839),
|
view_count: Some(4763839),
|
||||||
|
|
@ -780,7 +757,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2840000),
|
subscriber_count: Some(2840000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(1915695),
|
view_count: Some(1915695),
|
||||||
|
|
@ -807,7 +783,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2840000),
|
subscriber_count: Some(2840000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(7268944),
|
view_count: Some(7268944),
|
||||||
|
|
@ -834,7 +809,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2840000),
|
subscriber_count: Some(2840000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(2539103),
|
view_count: Some(2539103),
|
||||||
|
|
@ -861,7 +835,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2840000),
|
subscriber_count: Some(2840000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(5545680),
|
view_count: Some(5545680),
|
||||||
|
|
@ -888,7 +861,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2840000),
|
subscriber_count: Some(2840000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(2202314),
|
view_count: Some(2202314),
|
||||||
|
|
@ -930,7 +902,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2840000),
|
subscriber_count: Some(2840000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(613416),
|
view_count: Some(613416),
|
||||||
|
|
@ -957,7 +928,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(2840000),
|
subscriber_count: Some(2840000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(6443699),
|
view_count: Some(6443699),
|
||||||
|
|
|
||||||
|
|
@ -116,7 +116,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(947000),
|
subscriber_count: Some(947000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: Some("2022-09-27T16:00:00Z"),
|
publish_date: Some("2022-09-27T16:00:00Z"),
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(237),
|
view_count: Some(237),
|
||||||
|
|
@ -158,7 +157,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(947000),
|
subscriber_count: Some(947000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("13 days ago"),
|
publish_date_txt: Some("13 days ago"),
|
||||||
view_count: Some(742284),
|
view_count: Some(742284),
|
||||||
|
|
@ -200,7 +198,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(947000),
|
subscriber_count: Some(947000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 weeks ago"),
|
publish_date_txt: Some("3 weeks ago"),
|
||||||
view_count: Some(420368),
|
view_count: Some(420368),
|
||||||
|
|
@ -242,7 +239,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(947000),
|
subscriber_count: Some(947000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 weeks ago"),
|
publish_date_txt: Some("3 weeks ago"),
|
||||||
view_count: Some(528718),
|
view_count: Some(528718),
|
||||||
|
|
@ -284,7 +280,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(947000),
|
subscriber_count: Some(947000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(897237),
|
view_count: Some(897237),
|
||||||
|
|
@ -326,7 +321,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(947000),
|
subscriber_count: Some(947000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(526638),
|
view_count: Some(526638),
|
||||||
|
|
@ -368,7 +362,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(947000),
|
subscriber_count: Some(947000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(368801),
|
view_count: Some(368801),
|
||||||
|
|
@ -410,7 +403,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(947000),
|
subscriber_count: Some(947000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(286737),
|
view_count: Some(286737),
|
||||||
|
|
@ -452,7 +444,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(947000),
|
subscriber_count: Some(947000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(664499),
|
view_count: Some(664499),
|
||||||
|
|
@ -494,7 +485,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(947000),
|
subscriber_count: Some(947000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(592227),
|
view_count: Some(592227),
|
||||||
|
|
@ -536,7 +526,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(947000),
|
subscriber_count: Some(947000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(396946),
|
view_count: Some(396946),
|
||||||
|
|
@ -578,7 +567,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(947000),
|
subscriber_count: Some(947000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(778430),
|
view_count: Some(778430),
|
||||||
|
|
@ -620,7 +608,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(947000),
|
subscriber_count: Some(947000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(2118499),
|
view_count: Some(2118499),
|
||||||
|
|
@ -662,7 +649,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(947000),
|
subscriber_count: Some(947000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(525824),
|
view_count: Some(525824),
|
||||||
|
|
@ -704,7 +690,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(947000),
|
subscriber_count: Some(947000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(1097056),
|
view_count: Some(1097056),
|
||||||
|
|
@ -746,7 +731,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(947000),
|
subscriber_count: Some(947000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 months ago"),
|
publish_date_txt: Some("4 months ago"),
|
||||||
view_count: Some(1532114),
|
view_count: Some(1532114),
|
||||||
|
|
@ -788,7 +772,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(947000),
|
subscriber_count: Some(947000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 months ago"),
|
publish_date_txt: Some("4 months ago"),
|
||||||
view_count: Some(511601),
|
view_count: Some(511601),
|
||||||
|
|
@ -830,7 +813,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(947000),
|
subscriber_count: Some(947000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 months ago"),
|
publish_date_txt: Some("4 months ago"),
|
||||||
view_count: Some(662099),
|
view_count: Some(662099),
|
||||||
|
|
@ -872,7 +854,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(947000),
|
subscriber_count: Some(947000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 months ago"),
|
publish_date_txt: Some("4 months ago"),
|
||||||
view_count: Some(549826),
|
view_count: Some(549826),
|
||||||
|
|
@ -914,7 +895,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(947000),
|
subscriber_count: Some(947000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 months ago"),
|
publish_date_txt: Some("4 months ago"),
|
||||||
view_count: Some(538197),
|
view_count: Some(538197),
|
||||||
|
|
@ -956,7 +936,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(947000),
|
subscriber_count: Some(947000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 months ago"),
|
publish_date_txt: Some("5 months ago"),
|
||||||
view_count: Some(536648),
|
view_count: Some(536648),
|
||||||
|
|
@ -998,7 +977,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(947000),
|
subscriber_count: Some(947000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 months ago"),
|
publish_date_txt: Some("5 months ago"),
|
||||||
view_count: Some(724630),
|
view_count: Some(724630),
|
||||||
|
|
@ -1040,7 +1018,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(947000),
|
subscriber_count: Some(947000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 months ago"),
|
publish_date_txt: Some("5 months ago"),
|
||||||
view_count: Some(426960),
|
view_count: Some(426960),
|
||||||
|
|
@ -1082,7 +1059,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(947000),
|
subscriber_count: Some(947000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 months ago"),
|
publish_date_txt: Some("6 months ago"),
|
||||||
view_count: Some(735941),
|
view_count: Some(735941),
|
||||||
|
|
@ -1124,7 +1100,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(947000),
|
subscriber_count: Some(947000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 months ago"),
|
publish_date_txt: Some("6 months ago"),
|
||||||
view_count: Some(502205),
|
view_count: Some(502205),
|
||||||
|
|
@ -1166,7 +1141,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(947000),
|
subscriber_count: Some(947000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 months ago"),
|
publish_date_txt: Some("6 months ago"),
|
||||||
view_count: Some(718668),
|
view_count: Some(718668),
|
||||||
|
|
@ -1208,7 +1182,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(947000),
|
subscriber_count: Some(947000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 months ago"),
|
publish_date_txt: Some("7 months ago"),
|
||||||
view_count: Some(775830),
|
view_count: Some(775830),
|
||||||
|
|
@ -1250,7 +1223,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(947000),
|
subscriber_count: Some(947000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 months ago"),
|
publish_date_txt: Some("7 months ago"),
|
||||||
view_count: Some(480357),
|
view_count: Some(480357),
|
||||||
|
|
@ -1292,7 +1264,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(947000),
|
subscriber_count: Some(947000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 months ago"),
|
publish_date_txt: Some("7 months ago"),
|
||||||
view_count: Some(460878),
|
view_count: Some(460878),
|
||||||
|
|
@ -1334,7 +1305,6 @@ Channel(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: Some(947000),
|
subscriber_count: Some(947000),
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 months ago"),
|
publish_date_txt: Some("7 months ago"),
|
||||||
view_count: Some(228151),
|
view_count: Some(228151),
|
||||||
|
|
|
||||||
|
|
@ -32,25 +32,7 @@ MusicArtist(
|
||||||
height: 1200,
|
height: 1200,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
description: Some(RichText([
|
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)"),
|
||||||
Text(
|
|
||||||
text: "Edward Christopher Sheeran is an English singer-songwriter and musician. 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 on 9 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 (",
|
|
||||||
),
|
|
||||||
Web(
|
|
||||||
text: "https://en.wikipedia.org/wiki/Ed_Sheeran",
|
|
||||||
url: "https://en.wikipedia.org/wiki/Ed_Sheeran",
|
|
||||||
),
|
|
||||||
Text(
|
|
||||||
text: ") under Creative Commons Attribution CC-BY-SA 3.0 (",
|
|
||||||
),
|
|
||||||
Web(
|
|
||||||
text: "http://creativecommons.org/licenses/b...",
|
|
||||||
url: "http://creativecommons.org/licenses/by-sa/3.0/legalcode",
|
|
||||||
),
|
|
||||||
Text(
|
|
||||||
text: ")",
|
|
||||||
),
|
|
||||||
])),
|
|
||||||
wikipedia_url: Some("https://en.wikipedia.org/wiki/Ed_Sheeran"),
|
wikipedia_url: Some("https://en.wikipedia.org/wiki/Ed_Sheeran"),
|
||||||
subscriber_count: Some(55300000),
|
subscriber_count: Some(55300000),
|
||||||
tracks: [
|
tracks: [
|
||||||
|
|
|
||||||
|
|
@ -32,25 +32,7 @@ MusicArtist(
|
||||||
height: 1200,
|
height: 1200,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
description: Some(RichText([
|
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)"),
|
||||||
Text(
|
|
||||||
text: "Edward Christopher Sheeran is an English singer-songwriter and musician. 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 on 9 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 (",
|
|
||||||
),
|
|
||||||
Web(
|
|
||||||
text: "https://en.wikipedia.org/wiki/Ed_Sheeran",
|
|
||||||
url: "https://en.wikipedia.org/wiki/Ed_Sheeran",
|
|
||||||
),
|
|
||||||
Text(
|
|
||||||
text: ") under Creative Commons Attribution CC-BY-SA 3.0 (",
|
|
||||||
),
|
|
||||||
Web(
|
|
||||||
text: "http://creativecommons.org/licenses/b...",
|
|
||||||
url: "http://creativecommons.org/licenses/by-sa/3.0/legalcode",
|
|
||||||
),
|
|
||||||
Text(
|
|
||||||
text: ")",
|
|
||||||
),
|
|
||||||
])),
|
|
||||||
wikipedia_url: Some("https://en.wikipedia.org/wiki/Ed_Sheeran"),
|
wikipedia_url: Some("https://en.wikipedia.org/wiki/Ed_Sheeran"),
|
||||||
subscriber_count: Some(55300000),
|
subscriber_count: Some(55300000),
|
||||||
tracks: [
|
tracks: [
|
||||||
|
|
|
||||||
|
|
@ -32,12 +32,7 @@ MusicArtist(
|
||||||
height: 1200,
|
height: 1200,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
description: Some(RichText([
|
description: Some("ImagineDragons.lnk.to/Mercury"),
|
||||||
Web(
|
|
||||||
text: "https://imaginedragons.lnk.to/EyesClosed",
|
|
||||||
url: "https://imaginedragons.lnk.to/EyesClosed",
|
|
||||||
),
|
|
||||||
])),
|
|
||||||
wikipedia_url: None,
|
wikipedia_url: None,
|
||||||
subscriber_count: Some(30400000),
|
subscriber_count: Some(30400000),
|
||||||
tracks: [
|
tracks: [
|
||||||
|
|
|
||||||
|
|
@ -32,25 +32,7 @@ MusicArtist(
|
||||||
height: 1200,
|
height: 1200,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
description: Some(RichText([
|
description: Some("Choi Jin-ri, better known by her stage name Sulli, was a South Korean actress and singer. 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)"),
|
||||||
Text(
|
|
||||||
text: "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 (",
|
|
||||||
),
|
|
||||||
Web(
|
|
||||||
text: "https://en.wikipedia.org/wiki/Sulli",
|
|
||||||
url: "https://en.wikipedia.org/wiki/Sulli",
|
|
||||||
),
|
|
||||||
Text(
|
|
||||||
text: ") under Creative Commons Attribution CC-BY-SA 3.0 (",
|
|
||||||
),
|
|
||||||
Web(
|
|
||||||
text: "http://creativecommons.org/licenses/b...",
|
|
||||||
url: "http://creativecommons.org/licenses/by-sa/3.0/legalcode",
|
|
||||||
),
|
|
||||||
Text(
|
|
||||||
text: ")",
|
|
||||||
),
|
|
||||||
])),
|
|
||||||
wikipedia_url: Some("https://en.wikipedia.org/wiki/Sulli"),
|
wikipedia_url: Some("https://en.wikipedia.org/wiki/Sulli"),
|
||||||
subscriber_count: Some(80800),
|
subscriber_count: Some(80800),
|
||||||
tracks: [
|
tracks: [
|
||||||
|
|
|
||||||
|
|
@ -1,43 +0,0 @@
|
||||||
---
|
|
||||||
source: src/client/music_details.rs
|
|
||||||
expression: map_res.c
|
|
||||||
---
|
|
||||||
TrackDetails(
|
|
||||||
track: TrackItem(
|
|
||||||
id: "ZeerrnuLi5E",
|
|
||||||
name: "Black Mamba",
|
|
||||||
duration: Some(230),
|
|
||||||
cover: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/ZeerrnuLi5E/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3maNxpYzTFmXZBd8s1w1iE6rTBDaw",
|
|
||||||
width: 400,
|
|
||||||
height: 225,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/ZeerrnuLi5E/hq720.jpg?sqp=-oaymwEXCKAGEMIDIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3k5q17nduJ8-t3h9_obEVMVi8Cz3A",
|
|
||||||
width: 800,
|
|
||||||
height: 450,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/ZeerrnuLi5E/hq720.jpg?sqp=-oaymwEXCNUGEOADIAQqCwjVARCqCBh4INgESFo&rs=AMzJL3k7CsaxHObhW1JXPtGyKE1fgSGZ3Q",
|
|
||||||
width: 853,
|
|
||||||
height: 480,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
artists: [
|
|
||||||
ArtistId(
|
|
||||||
id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"),
|
|
||||||
name: "aespa",
|
|
||||||
),
|
|
||||||
],
|
|
||||||
artist_id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"),
|
|
||||||
album: None,
|
|
||||||
view_count: Some(290000000),
|
|
||||||
track_type: video,
|
|
||||||
track_nr: None,
|
|
||||||
by_va: false,
|
|
||||||
unavailable: false,
|
|
||||||
),
|
|
||||||
lyrics_id: Some("MPLYt_wrKjTn9hmry"),
|
|
||||||
related_id: Some("MPTRt_wrKjTn9hmry"),
|
|
||||||
)
|
|
||||||
|
|
@ -1,815 +0,0 @@
|
||||||
---
|
|
||||||
source: src/client/music_search.rs
|
|
||||||
expression: map_res.c
|
|
||||||
---
|
|
||||||
MusicSearchResult(
|
|
||||||
items: Paginator(
|
|
||||||
count: Some(30),
|
|
||||||
items: [
|
|
||||||
Artist(ArtistItem(
|
|
||||||
id: "UCPC0L1d253x-KuMNwa05TpA",
|
|
||||||
name: "Taylor Swift",
|
|
||||||
avatar: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/RCpTA6EXJQyjVFDosWOKa2SMmqkua_lA9mHPDWWciLwgqpZLz-k8rXWRF_367trrQ7up9BUwCbk6kRk=w60-h60-p-l90-rj",
|
|
||||||
width: 60,
|
|
||||||
height: 60,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/RCpTA6EXJQyjVFDosWOKa2SMmqkua_lA9mHPDWWciLwgqpZLz-k8rXWRF_367trrQ7up9BUwCbk6kRk=w120-h120-p-l90-rj",
|
|
||||||
width: 120,
|
|
||||||
height: 120,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
subscriber_count: Some(375000000),
|
|
||||||
)),
|
|
||||||
Track(TrackItem(
|
|
||||||
id: "7nVctvQVz0U",
|
|
||||||
name: "The Fate of Ophelia",
|
|
||||||
duration: Some(227),
|
|
||||||
cover: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/ZpWD37EEQE_LVuQ_O03cRmz5mZA7jG0gKGLt-49uHNDX6DycysijGGSOX9woU-OfQR5jyahz3aEdmBmm3A=w60-h60-l90-rj",
|
|
||||||
width: 60,
|
|
||||||
height: 60,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/ZpWD37EEQE_LVuQ_O03cRmz5mZA7jG0gKGLt-49uHNDX6DycysijGGSOX9woU-OfQR5jyahz3aEdmBmm3A=w120-h120-l90-rj",
|
|
||||||
width: 120,
|
|
||||||
height: 120,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
artists: [
|
|
||||||
ArtistId(
|
|
||||||
id: None,
|
|
||||||
name: "Song",
|
|
||||||
),
|
|
||||||
],
|
|
||||||
artist_id: Some("UCPC0L1d253x-KuMNwa05TpA"),
|
|
||||||
album: None,
|
|
||||||
view_count: Some(650000000),
|
|
||||||
track_type: track,
|
|
||||||
track_nr: None,
|
|
||||||
by_va: false,
|
|
||||||
unavailable: false,
|
|
||||||
)),
|
|
||||||
Track(TrackItem(
|
|
||||||
id: "Qc0sEMYv620",
|
|
||||||
name: "Out Of The Woods (Taylor\'s Version)",
|
|
||||||
duration: Some(236),
|
|
||||||
cover: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/gj8tAERbPzlAoLI6knG2Yv1JiB9kv_pFwckfFHWUS6RcnQonszeMyxTdDEdOxCRNFmMezvwEBeRPwNSy3Q=w60-h60-l90-rj",
|
|
||||||
width: 60,
|
|
||||||
height: 60,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/gj8tAERbPzlAoLI6knG2Yv1JiB9kv_pFwckfFHWUS6RcnQonszeMyxTdDEdOxCRNFmMezvwEBeRPwNSy3Q=w120-h120-l90-rj",
|
|
||||||
width: 120,
|
|
||||||
height: 120,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
artists: [
|
|
||||||
ArtistId(
|
|
||||||
id: None,
|
|
||||||
name: "Song",
|
|
||||||
),
|
|
||||||
],
|
|
||||||
artist_id: Some("UCPC0L1d253x-KuMNwa05TpA"),
|
|
||||||
album: None,
|
|
||||||
view_count: Some(30000000),
|
|
||||||
track_type: track,
|
|
||||||
track_nr: None,
|
|
||||||
by_va: false,
|
|
||||||
unavailable: false,
|
|
||||||
)),
|
|
||||||
Track(TrackItem(
|
|
||||||
id: "DDIcJUf3Al4",
|
|
||||||
name: "Starlight",
|
|
||||||
duration: Some(221),
|
|
||||||
cover: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/4DDgDnCVMgPB8TBvd26Yt4gEvBN8zymEdEBnfRzjleANB6PdEe8ZcNWn_-sXMyAJ5_2egN8wYXOHf4F-=w60-h60-l90-rj",
|
|
||||||
width: 60,
|
|
||||||
height: 60,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/4DDgDnCVMgPB8TBvd26Yt4gEvBN8zymEdEBnfRzjleANB6PdEe8ZcNWn_-sXMyAJ5_2egN8wYXOHf4F-=w120-h120-l90-rj",
|
|
||||||
width: 120,
|
|
||||||
height: 120,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
artists: [
|
|
||||||
ArtistId(
|
|
||||||
id: None,
|
|
||||||
name: "Song",
|
|
||||||
),
|
|
||||||
],
|
|
||||||
artist_id: Some("UCPC0L1d253x-KuMNwa05TpA"),
|
|
||||||
album: None,
|
|
||||||
view_count: Some(10000000),
|
|
||||||
track_type: track,
|
|
||||||
track_nr: None,
|
|
||||||
by_va: false,
|
|
||||||
unavailable: false,
|
|
||||||
)),
|
|
||||||
Album(AlbumItem(
|
|
||||||
id: "MPREb_p6BGcsuOpGt",
|
|
||||||
name: "The Life of a Showgirl",
|
|
||||||
cover: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/ZpWD37EEQE_LVuQ_O03cRmz5mZA7jG0gKGLt-49uHNDX6DycysijGGSOX9woU-OfQR5jyahz3aEdmBmm3A=w60-h60-l90-rj",
|
|
||||||
width: 60,
|
|
||||||
height: 60,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/ZpWD37EEQE_LVuQ_O03cRmz5mZA7jG0gKGLt-49uHNDX6DycysijGGSOX9woU-OfQR5jyahz3aEdmBmm3A=w120-h120-l90-rj",
|
|
||||||
width: 120,
|
|
||||||
height: 120,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/ZpWD37EEQE_LVuQ_O03cRmz5mZA7jG0gKGLt-49uHNDX6DycysijGGSOX9woU-OfQR5jyahz3aEdmBmm3A=w226-h226-l90-rj",
|
|
||||||
width: 226,
|
|
||||||
height: 226,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/ZpWD37EEQE_LVuQ_O03cRmz5mZA7jG0gKGLt-49uHNDX6DycysijGGSOX9woU-OfQR5jyahz3aEdmBmm3A=w544-h544-l90-rj",
|
|
||||||
width: 544,
|
|
||||||
height: 544,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
artists: [
|
|
||||||
ArtistId(
|
|
||||||
id: Some("UCPC0L1d253x-KuMNwa05TpA"),
|
|
||||||
name: "Taylor Swift",
|
|
||||||
),
|
|
||||||
],
|
|
||||||
artist_id: Some("UCPC0L1d253x-KuMNwa05TpA"),
|
|
||||||
album_type: album,
|
|
||||||
year: Some(2025),
|
|
||||||
by_va: false,
|
|
||||||
)),
|
|
||||||
Playlist(MusicPlaylistItem(
|
|
||||||
id: "RDCLAK5uy_mzXJjbWkgn116YtozMdS4kAgaPhjIWqBg",
|
|
||||||
name: "Taylor Swift Eras Setlist",
|
|
||||||
thumbnail: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/A59BQG7X0v_lyJqDjqhq0G83r_Lck-7puOITTfhKc-khapWkrtOBNLwvp_fLy34e960OLIRyJ5zPEfw=w60-h60-l90-rj",
|
|
||||||
width: 60,
|
|
||||||
height: 60,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/A59BQG7X0v_lyJqDjqhq0G83r_Lck-7puOITTfhKc-khapWkrtOBNLwvp_fLy34e960OLIRyJ5zPEfw=w120-h120-l90-rj",
|
|
||||||
width: 120,
|
|
||||||
height: 120,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/A59BQG7X0v_lyJqDjqhq0G83r_Lck-7puOITTfhKc-khapWkrtOBNLwvp_fLy34e960OLIRyJ5zPEfw=w226-h226-l90-rj",
|
|
||||||
width: 226,
|
|
||||||
height: 226,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/A59BQG7X0v_lyJqDjqhq0G83r_Lck-7puOITTfhKc-khapWkrtOBNLwvp_fLy34e960OLIRyJ5zPEfw=w544-h544-l90-rj",
|
|
||||||
width: 544,
|
|
||||||
height: 544,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
channel: None,
|
|
||||||
track_count: Some(44),
|
|
||||||
from_ytm: true,
|
|
||||||
is_podcast: false,
|
|
||||||
)),
|
|
||||||
Playlist(MusicPlaylistItem(
|
|
||||||
id: "RDCLAK5uy_k1272v-yXtLJm7gmMiAxjOl-vh5aEC11A",
|
|
||||||
name: "Presenting Taylor Swift",
|
|
||||||
thumbnail: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/jvshZlSlG9Kc5RRuzl-dT4RWigZeKhyg1pA1wE-zNOy5Wm2Du-ILxI-dbH-Fu-zA-fwqk-FtK5a_09w=w60-h60-l90-rj",
|
|
||||||
width: 60,
|
|
||||||
height: 60,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/jvshZlSlG9Kc5RRuzl-dT4RWigZeKhyg1pA1wE-zNOy5Wm2Du-ILxI-dbH-Fu-zA-fwqk-FtK5a_09w=w120-h120-l90-rj",
|
|
||||||
width: 120,
|
|
||||||
height: 120,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/jvshZlSlG9Kc5RRuzl-dT4RWigZeKhyg1pA1wE-zNOy5Wm2Du-ILxI-dbH-Fu-zA-fwqk-FtK5a_09w=w226-h226-l90-rj",
|
|
||||||
width: 226,
|
|
||||||
height: 226,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/jvshZlSlG9Kc5RRuzl-dT4RWigZeKhyg1pA1wE-zNOy5Wm2Du-ILxI-dbH-Fu-zA-fwqk-FtK5a_09w=w544-h544-l90-rj",
|
|
||||||
width: 544,
|
|
||||||
height: 544,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
channel: None,
|
|
||||||
track_count: Some(121),
|
|
||||||
from_ytm: true,
|
|
||||||
is_podcast: false,
|
|
||||||
)),
|
|
||||||
Album(AlbumItem(
|
|
||||||
id: "MPREb_BdDqjcHkOwb",
|
|
||||||
name: "reputation",
|
|
||||||
cover: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/RuKPkn6LLmXNOUcyRqh0zQbMWTpZDhHnkxHEZHrv6J8AbxLwemm9F0xaPpHX51WB_Xlj00My9vpZ_zRh=w60-h60-l90-rj",
|
|
||||||
width: 60,
|
|
||||||
height: 60,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/RuKPkn6LLmXNOUcyRqh0zQbMWTpZDhHnkxHEZHrv6J8AbxLwemm9F0xaPpHX51WB_Xlj00My9vpZ_zRh=w120-h120-l90-rj",
|
|
||||||
width: 120,
|
|
||||||
height: 120,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/RuKPkn6LLmXNOUcyRqh0zQbMWTpZDhHnkxHEZHrv6J8AbxLwemm9F0xaPpHX51WB_Xlj00My9vpZ_zRh=w226-h226-l90-rj",
|
|
||||||
width: 226,
|
|
||||||
height: 226,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/RuKPkn6LLmXNOUcyRqh0zQbMWTpZDhHnkxHEZHrv6J8AbxLwemm9F0xaPpHX51WB_Xlj00My9vpZ_zRh=w544-h544-l90-rj",
|
|
||||||
width: 544,
|
|
||||||
height: 544,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
artists: [
|
|
||||||
ArtistId(
|
|
||||||
id: Some("UCPC0L1d253x-KuMNwa05TpA"),
|
|
||||||
name: "Taylor Swift",
|
|
||||||
),
|
|
||||||
],
|
|
||||||
artist_id: Some("UCPC0L1d253x-KuMNwa05TpA"),
|
|
||||||
album_type: album,
|
|
||||||
year: Some(2017),
|
|
||||||
by_va: false,
|
|
||||||
)),
|
|
||||||
Album(AlbumItem(
|
|
||||||
id: "MPREb_7u82vYqpamW",
|
|
||||||
name: "Speak Now (Taylor\'s Version)",
|
|
||||||
cover: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/PzdFvhZwBo2kxfifFF82vShEUh8xEQfvoUTRIUBvZjs3ibCmTqMQZ6ZL03tPz1iwjP4UH6xB0CAGPwqj=w60-h60-l90-rj",
|
|
||||||
width: 60,
|
|
||||||
height: 60,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/PzdFvhZwBo2kxfifFF82vShEUh8xEQfvoUTRIUBvZjs3ibCmTqMQZ6ZL03tPz1iwjP4UH6xB0CAGPwqj=w120-h120-l90-rj",
|
|
||||||
width: 120,
|
|
||||||
height: 120,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/PzdFvhZwBo2kxfifFF82vShEUh8xEQfvoUTRIUBvZjs3ibCmTqMQZ6ZL03tPz1iwjP4UH6xB0CAGPwqj=w226-h226-l90-rj",
|
|
||||||
width: 226,
|
|
||||||
height: 226,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/PzdFvhZwBo2kxfifFF82vShEUh8xEQfvoUTRIUBvZjs3ibCmTqMQZ6ZL03tPz1iwjP4UH6xB0CAGPwqj=w544-h544-l90-rj",
|
|
||||||
width: 544,
|
|
||||||
height: 544,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
artists: [
|
|
||||||
ArtistId(
|
|
||||||
id: Some("UCPC0L1d253x-KuMNwa05TpA"),
|
|
||||||
name: "Taylor Swift",
|
|
||||||
),
|
|
||||||
],
|
|
||||||
artist_id: Some("UCPC0L1d253x-KuMNwa05TpA"),
|
|
||||||
album_type: album,
|
|
||||||
year: Some(2023),
|
|
||||||
by_va: false,
|
|
||||||
)),
|
|
||||||
Track(TrackItem(
|
|
||||||
id: "e7yg0A-PCTI",
|
|
||||||
name: "Love Story (Taylor’s Version)",
|
|
||||||
duration: None,
|
|
||||||
cover: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/huIYugJjpimikk-tSDJyDU09Jr8vDVJuLOh5uGG6T45c5MEtYvFW_9NlqkHHSaLl231kLBgAS8rtDfQ=w60-h60-l90-rj",
|
|
||||||
width: 60,
|
|
||||||
height: 60,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/huIYugJjpimikk-tSDJyDU09Jr8vDVJuLOh5uGG6T45c5MEtYvFW_9NlqkHHSaLl231kLBgAS8rtDfQ=w120-h120-l90-rj",
|
|
||||||
width: 120,
|
|
||||||
height: 120,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
artists: [
|
|
||||||
ArtistId(
|
|
||||||
id: Some("UCPC0L1d253x-KuMNwa05TpA"),
|
|
||||||
name: "Taylor Swift",
|
|
||||||
),
|
|
||||||
],
|
|
||||||
artist_id: Some("UCPC0L1d253x-KuMNwa05TpA"),
|
|
||||||
album: None,
|
|
||||||
view_count: Some(259000000),
|
|
||||||
track_type: track,
|
|
||||||
track_nr: None,
|
|
||||||
by_va: false,
|
|
||||||
unavailable: false,
|
|
||||||
)),
|
|
||||||
Track(TrackItem(
|
|
||||||
id: "LYyUr75fs_o",
|
|
||||||
name: "You Belong With Me",
|
|
||||||
duration: None,
|
|
||||||
cover: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/YEcmx-25aRBMaKNTvCx17QboP0KCJq2jqKdjpjLImqA60wWE2AZV_ZdQa417ZEmAkK7ipsEt1m0DEI-Z9A=w60-h60-l90-rj",
|
|
||||||
width: 60,
|
|
||||||
height: 60,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/YEcmx-25aRBMaKNTvCx17QboP0KCJq2jqKdjpjLImqA60wWE2AZV_ZdQa417ZEmAkK7ipsEt1m0DEI-Z9A=w120-h120-l90-rj",
|
|
||||||
width: 120,
|
|
||||||
height: 120,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
artists: [
|
|
||||||
ArtistId(
|
|
||||||
id: Some("UCPC0L1d253x-KuMNwa05TpA"),
|
|
||||||
name: "Taylor Swift",
|
|
||||||
),
|
|
||||||
],
|
|
||||||
artist_id: Some("UCPC0L1d253x-KuMNwa05TpA"),
|
|
||||||
album: None,
|
|
||||||
view_count: Some(2100000000),
|
|
||||||
track_type: track,
|
|
||||||
track_nr: None,
|
|
||||||
by_va: false,
|
|
||||||
unavailable: false,
|
|
||||||
)),
|
|
||||||
Track(TrackItem(
|
|
||||||
id: "gGwN25z7FrE",
|
|
||||||
name: "Anti-Hero",
|
|
||||||
duration: None,
|
|
||||||
cover: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/omCs21jqwK4Ss_VZxPFKwQP5z0UY0vi_8gXu4XNxHKDgE-GHYHWkIw80XR1uzFgdyhM3PvVUZeZ8iAfF=w60-h60-l90-rj",
|
|
||||||
width: 60,
|
|
||||||
height: 60,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/omCs21jqwK4Ss_VZxPFKwQP5z0UY0vi_8gXu4XNxHKDgE-GHYHWkIw80XR1uzFgdyhM3PvVUZeZ8iAfF=w120-h120-l90-rj",
|
|
||||||
width: 120,
|
|
||||||
height: 120,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
artists: [
|
|
||||||
ArtistId(
|
|
||||||
id: Some("UCPC0L1d253x-KuMNwa05TpA"),
|
|
||||||
name: "Taylor Swift",
|
|
||||||
),
|
|
||||||
],
|
|
||||||
artist_id: Some("UCPC0L1d253x-KuMNwa05TpA"),
|
|
||||||
album: None,
|
|
||||||
view_count: Some(541000000),
|
|
||||||
track_type: track,
|
|
||||||
track_nr: None,
|
|
||||||
by_va: false,
|
|
||||||
unavailable: false,
|
|
||||||
)),
|
|
||||||
Track(TrackItem(
|
|
||||||
id: "sEPXrepgujY",
|
|
||||||
name: "Style",
|
|
||||||
duration: None,
|
|
||||||
cover: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/GcrDhHXqrPm4BjS-4L1c0OHC9iz0ZxmFeRur2A6Aqo9Vm7OfFCBOSVbRzp1M1D1s_3rsvKaC7w6kku0=w60-h60-l90-rj",
|
|
||||||
width: 60,
|
|
||||||
height: 60,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/GcrDhHXqrPm4BjS-4L1c0OHC9iz0ZxmFeRur2A6Aqo9Vm7OfFCBOSVbRzp1M1D1s_3rsvKaC7w6kku0=w120-h120-l90-rj",
|
|
||||||
width: 120,
|
|
||||||
height: 120,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
artists: [
|
|
||||||
ArtistId(
|
|
||||||
id: Some("UCPC0L1d253x-KuMNwa05TpA"),
|
|
||||||
name: "Taylor Swift",
|
|
||||||
),
|
|
||||||
],
|
|
||||||
artist_id: Some("UCPC0L1d253x-KuMNwa05TpA"),
|
|
||||||
album: None,
|
|
||||||
view_count: Some(1300000000),
|
|
||||||
track_type: track,
|
|
||||||
track_nr: None,
|
|
||||||
by_va: false,
|
|
||||||
unavailable: false,
|
|
||||||
)),
|
|
||||||
Track(TrackItem(
|
|
||||||
id: "oOEhHDx6xOQ",
|
|
||||||
name: "Back To December (Taylor\'s Version)",
|
|
||||||
duration: None,
|
|
||||||
cover: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/PzdFvhZwBo2kxfifFF82vShEUh8xEQfvoUTRIUBvZjs3ibCmTqMQZ6ZL03tPz1iwjP4UH6xB0CAGPwqj=w60-h60-l90-rj",
|
|
||||||
width: 60,
|
|
||||||
height: 60,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/PzdFvhZwBo2kxfifFF82vShEUh8xEQfvoUTRIUBvZjs3ibCmTqMQZ6ZL03tPz1iwjP4UH6xB0CAGPwqj=w120-h120-l90-rj",
|
|
||||||
width: 120,
|
|
||||||
height: 120,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
artists: [
|
|
||||||
ArtistId(
|
|
||||||
id: Some("UCPC0L1d253x-KuMNwa05TpA"),
|
|
||||||
name: "Taylor Swift",
|
|
||||||
),
|
|
||||||
],
|
|
||||||
artist_id: Some("UCPC0L1d253x-KuMNwa05TpA"),
|
|
||||||
album: None,
|
|
||||||
view_count: Some(101000000),
|
|
||||||
track_type: track,
|
|
||||||
track_nr: None,
|
|
||||||
by_va: false,
|
|
||||||
unavailable: false,
|
|
||||||
)),
|
|
||||||
Playlist(MusicPlaylistItem(
|
|
||||||
id: "PLh7pLzn8qaqXxc4S-sYw_P2jAqgJl_UNu",
|
|
||||||
name: "Taylor Swift Study Playlist",
|
|
||||||
thumbnail: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.ggpht.com/W8K9kHzTWhnBBVUwFp8ybP4WpUNaZL26P1-jH4T4AdDrQq-zV-x5qOsGLlhbaCBUQO3LMEkIbL4=s192",
|
|
||||||
width: 192,
|
|
||||||
height: 192,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.ggpht.com/W8K9kHzTWhnBBVUwFp8ybP4WpUNaZL26P1-jH4T4AdDrQq-zV-x5qOsGLlhbaCBUQO3LMEkIbL4=s576",
|
|
||||||
width: 576,
|
|
||||||
height: 576,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.ggpht.com/W8K9kHzTWhnBBVUwFp8ybP4WpUNaZL26P1-jH4T4AdDrQq-zV-x5qOsGLlhbaCBUQO3LMEkIbL4=s1200",
|
|
||||||
width: 1200,
|
|
||||||
height: 1200,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
channel: Some(ChannelId(
|
|
||||||
id: "UC4Nx_ksbcnfAexy0YOeXWDA",
|
|
||||||
name: "Jorgelina Ramirez",
|
|
||||||
)),
|
|
||||||
track_count: None,
|
|
||||||
from_ytm: false,
|
|
||||||
is_podcast: false,
|
|
||||||
)),
|
|
||||||
Artist(ArtistItem(
|
|
||||||
id: "UCYmegxA27i3GYivu-FN-lYg",
|
|
||||||
name: "Piano Tribute Players",
|
|
||||||
avatar: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/6c7xT8CeESUklHTzG0iEkbf14-6jM46dZep_6eCeiliAxMwi1We4XXe_XhXiaTarSz5Mj338DUhPnOEDXQ=w60-h60-l90-rj",
|
|
||||||
width: 60,
|
|
||||||
height: 60,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/6c7xT8CeESUklHTzG0iEkbf14-6jM46dZep_6eCeiliAxMwi1We4XXe_XhXiaTarSz5Mj338DUhPnOEDXQ=w120-h120-l90-rj",
|
|
||||||
width: 120,
|
|
||||||
height: 120,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
subscriber_count: Some(1),
|
|
||||||
)),
|
|
||||||
Artist(ArtistItem(
|
|
||||||
id: "UCcFRMtkYJsQO2biUzogKp-g",
|
|
||||||
name: "Sweet Baby Mae",
|
|
||||||
avatar: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/rTzDOTEMth0I63JRgkHG-iXivVWgqN9Z-r0ziTKB40qT2XwYL9y80zwv8R6gTsGW9724jPzehcjaj52ufg=w60-h60-l90-rj",
|
|
||||||
width: 60,
|
|
||||||
height: 60,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/rTzDOTEMth0I63JRgkHG-iXivVWgqN9Z-r0ziTKB40qT2XwYL9y80zwv8R6gTsGW9724jPzehcjaj52ufg=w120-h120-l90-rj",
|
|
||||||
width: 120,
|
|
||||||
height: 120,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
subscriber_count: Some(185),
|
|
||||||
)),
|
|
||||||
Artist(ArtistItem(
|
|
||||||
id: "UCw-0GSqznYHfyfDBBe6a46A",
|
|
||||||
name: "Gracie Abrams",
|
|
||||||
avatar: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://lh3.googleusercontent.com/ZK5OsaCicvq8y9dbDlfZIYW9IEVbfou_NWdTmeoQ-EYFu5EgE-mBKZmjaShYinYveVNvw0Dvs04w5eo=w60-h60-p-l90-rj",
|
|
||||||
width: 60,
|
|
||||||
height: 60,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://lh3.googleusercontent.com/ZK5OsaCicvq8y9dbDlfZIYW9IEVbfou_NWdTmeoQ-EYFu5EgE-mBKZmjaShYinYveVNvw0Dvs04w5eo=w120-h120-p-l90-rj",
|
|
||||||
width: 120,
|
|
||||||
height: 120,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
subscriber_count: Some(103000000),
|
|
||||||
)),
|
|
||||||
Playlist(MusicPlaylistItem(
|
|
||||||
id: "PLXmaWI4hITKsFZ9QnKIatkCBUtJ3q7deG",
|
|
||||||
name: "Taylor Swift • folklore (the long pond studio sessions)",
|
|
||||||
thumbnail: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/mVfzb7S_KwI/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3k8tcigyW7D4rFLA0VK6NHEF9NNlg",
|
|
||||||
width: 400,
|
|
||||||
height: 225,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/mVfzb7S_KwI/sddefault.jpg?sqp=-oaymwEWCKoDEPABIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3l1twBfvFOTd-Lk0sl-8rtbggLMZA",
|
|
||||||
width: 426,
|
|
||||||
height: 240,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
channel: Some(ChannelId(
|
|
||||||
id: "UC35imtjkWi43Wpvbv_2gkZw",
|
|
||||||
name: "imusic",
|
|
||||||
)),
|
|
||||||
track_count: None,
|
|
||||||
from_ytm: false,
|
|
||||||
is_podcast: false,
|
|
||||||
)),
|
|
||||||
Track(TrackItem(
|
|
||||||
id: "uo_CXTq6gmU",
|
|
||||||
name: "TAYLOR SWIFT THE ERAS TOUR Concert ~ Best Summer Songs Full Album || Penguin",
|
|
||||||
duration: None,
|
|
||||||
cover: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/uo_CXTq6gmU/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3l396KNdVXRKRjyFKwiwcDfNP7jeg",
|
|
||||||
width: 400,
|
|
||||||
height: 225,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
artists: [
|
|
||||||
ArtistId(
|
|
||||||
id: Some("UCRwekCSL5jAT-vLLcaf8k2g"),
|
|
||||||
name: "Penguin Lyrics",
|
|
||||||
),
|
|
||||||
],
|
|
||||||
artist_id: Some("UCRwekCSL5jAT-vLLcaf8k2g"),
|
|
||||||
album: None,
|
|
||||||
view_count: Some(8100000),
|
|
||||||
track_type: video,
|
|
||||||
track_nr: None,
|
|
||||||
by_va: false,
|
|
||||||
unavailable: false,
|
|
||||||
)),
|
|
||||||
Playlist(MusicPlaylistItem(
|
|
||||||
id: "RDCLAK5uy_lL718gGQZgQf4jkKYjVbOXHABQCFAYuj0",
|
|
||||||
name: "Presenting Ed Sheeran",
|
|
||||||
thumbnail: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/jPfSesF1ouKETA3Bd_mfIQvyhQdLFv4vbwbaQLTIfCHaftzSzqrh6adTh3d9_RKUJEj9l2kA_At3Ej5T=w60-h60-l90-rj",
|
|
||||||
width: 60,
|
|
||||||
height: 60,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/jPfSesF1ouKETA3Bd_mfIQvyhQdLFv4vbwbaQLTIfCHaftzSzqrh6adTh3d9_RKUJEj9l2kA_At3Ej5T=w120-h120-l90-rj",
|
|
||||||
width: 120,
|
|
||||||
height: 120,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/jPfSesF1ouKETA3Bd_mfIQvyhQdLFv4vbwbaQLTIfCHaftzSzqrh6adTh3d9_RKUJEj9l2kA_At3Ej5T=w226-h226-l90-rj",
|
|
||||||
width: 226,
|
|
||||||
height: 226,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/jPfSesF1ouKETA3Bd_mfIQvyhQdLFv4vbwbaQLTIfCHaftzSzqrh6adTh3d9_RKUJEj9l2kA_At3Ej5T=w544-h544-l90-rj",
|
|
||||||
width: 544,
|
|
||||||
height: 544,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
channel: None,
|
|
||||||
track_count: Some(45),
|
|
||||||
from_ytm: true,
|
|
||||||
is_podcast: false,
|
|
||||||
)),
|
|
||||||
Playlist(MusicPlaylistItem(
|
|
||||||
id: "PLxdXxDPCmiu1gk8Mhvvb8b8Up3IYq48VN",
|
|
||||||
name: "Taylor Swift random playlist",
|
|
||||||
thumbnail: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/aRnpZpC-UvD2b50ziNEEB5kIoSnLeH_QKEG1DkoVQd_yyqS_xTAFqGov0B96L-ZdlzrXHFKwCWs=s192",
|
|
||||||
width: 192,
|
|
||||||
height: 192,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/aRnpZpC-UvD2b50ziNEEB5kIoSnLeH_QKEG1DkoVQd_yyqS_xTAFqGov0B96L-ZdlzrXHFKwCWs=s576",
|
|
||||||
width: 576,
|
|
||||||
height: 576,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/aRnpZpC-UvD2b50ziNEEB5kIoSnLeH_QKEG1DkoVQd_yyqS_xTAFqGov0B96L-ZdlzrXHFKwCWs=s1200",
|
|
||||||
width: 1200,
|
|
||||||
height: 1200,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
channel: Some(ChannelId(
|
|
||||||
id: "UCaW05RDAz0Ry5RSwBl2J2Fg",
|
|
||||||
name: "Dayne Jumawid",
|
|
||||||
)),
|
|
||||||
track_count: None,
|
|
||||||
from_ytm: false,
|
|
||||||
is_podcast: false,
|
|
||||||
)),
|
|
||||||
Track(TrackItem(
|
|
||||||
id: "ko70cExuzZM",
|
|
||||||
name: "The Fate of Ophelia",
|
|
||||||
duration: None,
|
|
||||||
cover: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/ko70cExuzZM/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3mEOKu47w7ANm72Cvx-cwKcqskR_w",
|
|
||||||
width: 400,
|
|
||||||
height: 225,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
artists: [
|
|
||||||
ArtistId(
|
|
||||||
id: Some("UCPC0L1d253x-KuMNwa05TpA"),
|
|
||||||
name: "Taylor Swift",
|
|
||||||
),
|
|
||||||
],
|
|
||||||
artist_id: Some("UCPC0L1d253x-KuMNwa05TpA"),
|
|
||||||
album: None,
|
|
||||||
view_count: Some(415000000),
|
|
||||||
track_type: video,
|
|
||||||
track_nr: None,
|
|
||||||
by_va: false,
|
|
||||||
unavailable: false,
|
|
||||||
)),
|
|
||||||
Track(TrackItem(
|
|
||||||
id: "2glHZo0gx_w",
|
|
||||||
name: "Taylor Swift, Shakira, Bruno Mars, Justin Bieber 🏖\u{fe0f}🎧 Top Hits 2026 🔥 Spotify Trending – Summer Vibes",
|
|
||||||
duration: None,
|
|
||||||
cover: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/2glHZo0gx_w/sddefault.jpg?sqp=-oaymwEWCJADEOEBIAQqCghqEJQEGHgg6AJIWg&rs=AMzJL3lk1zghRbX4ijRMoZrDOONkQx-SAw",
|
|
||||||
width: 400,
|
|
||||||
height: 225,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
artists: [
|
|
||||||
ArtistId(
|
|
||||||
id: Some("UCsUUmUhP6u_gqzGGFtFPpOA"),
|
|
||||||
name: "Moonlight Chill Vibes",
|
|
||||||
),
|
|
||||||
],
|
|
||||||
artist_id: Some("UCsUUmUhP6u_gqzGGFtFPpOA"),
|
|
||||||
album: None,
|
|
||||||
view_count: Some(7900),
|
|
||||||
track_type: video,
|
|
||||||
track_nr: None,
|
|
||||||
by_va: false,
|
|
||||||
unavailable: false,
|
|
||||||
)),
|
|
||||||
Playlist(MusicPlaylistItem(
|
|
||||||
id: "PL1Nc9dcQuS8z1oj6avXVkM0GqGZg9_6Mk",
|
|
||||||
name: "Die Taylor Swift Story",
|
|
||||||
thumbnail: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/pl_c/PL1Nc9dcQuS8z1oj6avXVkM0GqGZg9_6Mk/studio_square_thumbnail.jpg?sqp=COKkgNEG-oaymwEICDwQPCAASFqi85f_AwYI98WAswY&rs=AMzJL3nVC62cMZapgD9W46alyXxOXmhcpg",
|
|
||||||
width: 60,
|
|
||||||
height: 60,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/pl_c/PL1Nc9dcQuS8z1oj6avXVkM0GqGZg9_6Mk/studio_square_thumbnail.jpg?sqp=COKkgNEG-oaymwEICHgQeCAASFqi85f_AwYI98WAswY&rs=AMzJL3l46lAvy96qFssa6Xh3ipVgBjKwAA",
|
|
||||||
width: 120,
|
|
||||||
height: 120,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/pl_c/PL1Nc9dcQuS8z1oj6avXVkM0GqGZg9_6Mk/studio_square_thumbnail.jpg?sqp=COKkgNEG-oaymwEKCOIBEOIBIABIWqLzl_8DBgj3xYCzBg&rs=AMzJL3nWJKQykUL6rbg4AswYexiBIji5Yw",
|
|
||||||
width: 226,
|
|
||||||
height: 226,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/pl_c/PL1Nc9dcQuS8z1oj6avXVkM0GqGZg9_6Mk/studio_square_thumbnail.jpg?sqp=COKkgNEG-oaymwEKCKAEEKAEIABIWqLzl_8DBgj3xYCzBg&rs=AMzJL3lJ1a1qj2NY_FBVMPcRc6lX_JrxeQ",
|
|
||||||
width: 544,
|
|
||||||
height: 544,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
channel: None,
|
|
||||||
track_count: None,
|
|
||||||
from_ytm: false,
|
|
||||||
is_podcast: true,
|
|
||||||
)),
|
|
||||||
Playlist(MusicPlaylistItem(
|
|
||||||
id: "PLkM40s4AfBz9KtVJIHlExeqvETajdLwWW",
|
|
||||||
name: "Mend with Mere x Taylor Swift Reaction Videos!",
|
|
||||||
thumbnail: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/pl_c/PLkM40s4AfBz9KtVJIHlExeqvETajdLwWW/studio_square_thumbnail.jpg?sqp=COKkgNEG-oaymwEICDwQPCAASFqi85f_AwYI5onxpQY&rs=AMzJL3lVxLHz9SmZXaVBKVL_yJH_ukf9Sg",
|
|
||||||
width: 60,
|
|
||||||
height: 60,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/pl_c/PLkM40s4AfBz9KtVJIHlExeqvETajdLwWW/studio_square_thumbnail.jpg?sqp=COKkgNEG-oaymwEICHgQeCAASFqi85f_AwYI5onxpQY&rs=AMzJL3khQTkIKo0HgBJ9lXGLeuWqGOuSvQ",
|
|
||||||
width: 120,
|
|
||||||
height: 120,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/pl_c/PLkM40s4AfBz9KtVJIHlExeqvETajdLwWW/studio_square_thumbnail.jpg?sqp=COKkgNEG-oaymwEKCOIBEOIBIABIWqLzl_8DBgjmifGlBg&rs=AMzJL3kjtHIKz8ReNzURFLVhGdTeeht4ig",
|
|
||||||
width: 226,
|
|
||||||
height: 226,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/pl_c/PLkM40s4AfBz9KtVJIHlExeqvETajdLwWW/studio_square_thumbnail.jpg?sqp=COKkgNEG-oaymwEKCKAEEKAEIABIWqLzl_8DBgjmifGlBg&rs=AMzJL3nHKxJGRrPac8LyyX_nyogrsxWyeQ",
|
|
||||||
width: 544,
|
|
||||||
height: 544,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
channel: None,
|
|
||||||
track_count: None,
|
|
||||||
from_ytm: false,
|
|
||||||
is_podcast: true,
|
|
||||||
)),
|
|
||||||
Playlist(MusicPlaylistItem(
|
|
||||||
id: "PLKXeAFgIkqY_dNNWZVsdlXyVxbeErJROg",
|
|
||||||
name: "13: A Taylor Swift Fan Podcast",
|
|
||||||
thumbnail: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/podcasts_artwork/PLKXeAFgIkqY_dNNWZVsdlXyVxbeErJROg/rss_feed_ingested.jpg?sqp=COKkgNEG-oaymwEICDwQPCAASFo&rs=AMzJL3kc8M2AJIUFAHKl0HJxIge3-OTP8A",
|
|
||||||
width: 60,
|
|
||||||
height: 60,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/podcasts_artwork/PLKXeAFgIkqY_dNNWZVsdlXyVxbeErJROg/rss_feed_ingested.jpg?sqp=COKkgNEG-oaymwEICHgQeCAASFo&rs=AMzJL3m-4F49HfVIhBVj_rX4o9HqmdaCzw",
|
|
||||||
width: 120,
|
|
||||||
height: 120,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/podcasts_artwork/PLKXeAFgIkqY_dNNWZVsdlXyVxbeErJROg/rss_feed_ingested.jpg?sqp=COKkgNEG-oaymwEKCOIBEOIBIABIWg&rs=AMzJL3nRT636cpspamEYXtKmvZh_lGqbmw",
|
|
||||||
width: 226,
|
|
||||||
height: 226,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/podcasts_artwork/PLKXeAFgIkqY_dNNWZVsdlXyVxbeErJROg/rss_feed_ingested.jpg?sqp=COKkgNEG-oaymwEKCKAEEKAEIABIWg&rs=AMzJL3n6BSBouho3uZwzayb1V8UafYd_MA",
|
|
||||||
width: 544,
|
|
||||||
height: 544,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
channel: None,
|
|
||||||
track_count: None,
|
|
||||||
from_ytm: false,
|
|
||||||
is_podcast: true,
|
|
||||||
)),
|
|
||||||
User(UserItem(
|
|
||||||
id: "UC84Q02DHvuBzaB1a1TCF9OQ",
|
|
||||||
name: "Official Album Instrumentals",
|
|
||||||
handle: Some("@officialalbuminstrumentals9760"),
|
|
||||||
avatar: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/LAQXnLOzsXC7-hJtbREHUM53A8pcgIe0go592Ikw9mmh6AQNiGoxN1TXH1YV-sA0ySFEiyjzS6Q=w60-c-h60-k-c0x00ffffff-no-l90-rj",
|
|
||||||
width: 60,
|
|
||||||
height: 60,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/LAQXnLOzsXC7-hJtbREHUM53A8pcgIe0go592Ikw9mmh6AQNiGoxN1TXH1YV-sA0ySFEiyjzS6Q=w120-c-h120-k-c0x00ffffff-no-l90-rj",
|
|
||||||
width: 120,
|
|
||||||
height: 120,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
)),
|
|
||||||
User(UserItem(
|
|
||||||
id: "UCz6aKkENqq23rL3RyCH_QOw",
|
|
||||||
name: "Timeless_Swiftie",
|
|
||||||
handle: Some("@Timeless_Swiftie1989"),
|
|
||||||
avatar: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/D_VDSnN7WfsH08g1LwpzpXlXBoO6PpX-DLVP8Joob0NfHNyr0fBJYLFbV8u3IdhXdFJUr0BOAAM=w60-c-h60-k-c0x00ffffff-no-l90-rj",
|
|
||||||
width: 60,
|
|
||||||
height: 60,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/D_VDSnN7WfsH08g1LwpzpXlXBoO6PpX-DLVP8Joob0NfHNyr0fBJYLFbV8u3IdhXdFJUr0BOAAM=w120-c-h120-k-c0x00ffffff-no-l90-rj",
|
|
||||||
width: 120,
|
|
||||||
height: 120,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
)),
|
|
||||||
User(UserItem(
|
|
||||||
id: "UCvJwHWeD6SJ8zXXVsXIbVEw",
|
|
||||||
name: "Taylor swift fan ",
|
|
||||||
handle: Some("@realTaylorswift13fan"),
|
|
||||||
avatar: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/SHeka46S_UVKpsE6iXN0zt_7nRltUEq-NLf9gTw24cqcn4ngyOa0yzrFmj59tiZiY79y_bPV=w60-c-h60-k-c0x00ffffff-no-l90-rj",
|
|
||||||
width: 60,
|
|
||||||
height: 60,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.googleusercontent.com/SHeka46S_UVKpsE6iXN0zt_7nRltUEq-NLf9gTw24cqcn4ngyOa0yzrFmj59tiZiY79y_bPV=w120-c-h120-k-c0x00ffffff-no-l90-rj",
|
|
||||||
width: 120,
|
|
||||||
height: 120,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
)),
|
|
||||||
],
|
|
||||||
ctoken: None,
|
|
||||||
endpoint: music_search,
|
|
||||||
),
|
|
||||||
corrected_query: None,
|
|
||||||
)
|
|
||||||
|
|
@ -32,7 +32,6 @@ Paginator(
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
channel: None,
|
channel: None,
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(80296),
|
view_count: Some(80296),
|
||||||
|
|
@ -68,7 +67,6 @@ Paginator(
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
channel: None,
|
channel: None,
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(36294),
|
view_count: Some(36294),
|
||||||
|
|
@ -104,7 +102,6 @@ Paginator(
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
channel: None,
|
channel: None,
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(34736),
|
view_count: Some(34736),
|
||||||
|
|
@ -140,7 +137,6 @@ Paginator(
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
channel: None,
|
channel: None,
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(73544),
|
view_count: Some(73544),
|
||||||
|
|
@ -176,7 +172,6 @@ Paginator(
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
channel: None,
|
channel: None,
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 months ago"),
|
publish_date_txt: Some("4 months ago"),
|
||||||
view_count: Some(67231),
|
view_count: Some(67231),
|
||||||
|
|
@ -212,7 +207,6 @@ Paginator(
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
channel: None,
|
channel: None,
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 months ago"),
|
publish_date_txt: Some("4 months ago"),
|
||||||
view_count: Some(44946),
|
view_count: Some(44946),
|
||||||
|
|
@ -248,7 +242,6 @@ Paginator(
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
channel: None,
|
channel: None,
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 months ago"),
|
publish_date_txt: Some("4 months ago"),
|
||||||
view_count: Some(43264),
|
view_count: Some(43264),
|
||||||
|
|
@ -284,7 +277,6 @@ Paginator(
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
channel: None,
|
channel: None,
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 months ago"),
|
publish_date_txt: Some("4 months ago"),
|
||||||
view_count: Some(98175),
|
view_count: Some(98175),
|
||||||
|
|
@ -320,7 +312,6 @@ Paginator(
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
channel: None,
|
channel: None,
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 months ago"),
|
publish_date_txt: Some("4 months ago"),
|
||||||
view_count: Some(59376),
|
view_count: Some(59376),
|
||||||
|
|
@ -356,7 +347,6 @@ Paginator(
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
channel: None,
|
channel: None,
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 months ago"),
|
publish_date_txt: Some("5 months ago"),
|
||||||
view_count: Some(25496),
|
view_count: Some(25496),
|
||||||
|
|
@ -392,7 +382,6 @@ Paginator(
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
channel: None,
|
channel: None,
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 months ago"),
|
publish_date_txt: Some("5 months ago"),
|
||||||
view_count: Some(22982),
|
view_count: Some(22982),
|
||||||
|
|
@ -428,7 +417,6 @@ Paginator(
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
channel: None,
|
channel: None,
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 months ago"),
|
publish_date_txt: Some("5 months ago"),
|
||||||
view_count: Some(38804),
|
view_count: Some(38804),
|
||||||
|
|
@ -464,7 +452,6 @@ Paginator(
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
channel: None,
|
channel: None,
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 months ago"),
|
publish_date_txt: Some("5 months ago"),
|
||||||
view_count: Some(25505),
|
view_count: Some(25505),
|
||||||
|
|
@ -500,7 +487,6 @@ Paginator(
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
channel: None,
|
channel: None,
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 months ago"),
|
publish_date_txt: Some("5 months ago"),
|
||||||
view_count: Some(98432),
|
view_count: Some(98432),
|
||||||
|
|
@ -536,7 +522,6 @@ Paginator(
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
channel: None,
|
channel: None,
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 months ago"),
|
publish_date_txt: Some("5 months ago"),
|
||||||
view_count: Some(53410),
|
view_count: Some(53410),
|
||||||
|
|
@ -572,7 +557,6 @@ Paginator(
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
channel: None,
|
channel: None,
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 months ago"),
|
publish_date_txt: Some("5 months ago"),
|
||||||
view_count: Some(54771),
|
view_count: Some(54771),
|
||||||
|
|
@ -608,7 +592,6 @@ Paginator(
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
channel: None,
|
channel: None,
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 months ago"),
|
publish_date_txt: Some("6 months ago"),
|
||||||
view_count: Some(39823),
|
view_count: Some(39823),
|
||||||
|
|
@ -644,7 +627,6 @@ Paginator(
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
channel: None,
|
channel: None,
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 months ago"),
|
publish_date_txt: Some("6 months ago"),
|
||||||
view_count: Some(51596),
|
view_count: Some(51596),
|
||||||
|
|
@ -680,7 +662,6 @@ Paginator(
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
channel: None,
|
channel: None,
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 months ago"),
|
publish_date_txt: Some("6 months ago"),
|
||||||
view_count: Some(125391),
|
view_count: Some(125391),
|
||||||
|
|
@ -716,7 +697,6 @@ Paginator(
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
channel: None,
|
channel: None,
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 months ago"),
|
publish_date_txt: Some("6 months ago"),
|
||||||
view_count: Some(120457),
|
view_count: Some(120457),
|
||||||
|
|
@ -752,7 +732,6 @@ Paginator(
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
channel: None,
|
channel: None,
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 months ago"),
|
publish_date_txt: Some("6 months ago"),
|
||||||
view_count: Some(49062),
|
view_count: Some(49062),
|
||||||
|
|
@ -788,7 +767,6 @@ Paginator(
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
channel: None,
|
channel: None,
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 months ago"),
|
publish_date_txt: Some("6 months ago"),
|
||||||
view_count: Some(49032),
|
view_count: Some(49032),
|
||||||
|
|
@ -824,7 +802,6 @@ Paginator(
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
channel: None,
|
channel: None,
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 months ago"),
|
publish_date_txt: Some("7 months ago"),
|
||||||
view_count: Some(64108),
|
view_count: Some(64108),
|
||||||
|
|
@ -860,7 +837,6 @@ Paginator(
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
channel: None,
|
channel: None,
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 months ago"),
|
publish_date_txt: Some("7 months ago"),
|
||||||
view_count: Some(76831),
|
view_count: Some(76831),
|
||||||
|
|
@ -896,7 +872,6 @@ Paginator(
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
channel: None,
|
channel: None,
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 months ago"),
|
publish_date_txt: Some("7 months ago"),
|
||||||
view_count: Some(49961),
|
view_count: Some(49961),
|
||||||
|
|
@ -932,7 +907,6 @@ Paginator(
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
channel: None,
|
channel: None,
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 months ago"),
|
publish_date_txt: Some("7 months ago"),
|
||||||
view_count: Some(17393),
|
view_count: Some(17393),
|
||||||
|
|
@ -968,7 +942,6 @@ Paginator(
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
channel: None,
|
channel: None,
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 months ago"),
|
publish_date_txt: Some("7 months ago"),
|
||||||
view_count: Some(38281),
|
view_count: Some(38281),
|
||||||
|
|
@ -1004,7 +977,6 @@ Paginator(
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
channel: None,
|
channel: None,
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 months ago"),
|
publish_date_txt: Some("7 months ago"),
|
||||||
view_count: Some(70004),
|
view_count: Some(70004),
|
||||||
|
|
@ -1040,7 +1012,6 @@ Paginator(
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
channel: None,
|
channel: None,
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 months ago"),
|
publish_date_txt: Some("7 months ago"),
|
||||||
view_count: Some(93700),
|
view_count: Some(93700),
|
||||||
|
|
@ -1076,7 +1047,6 @@ Paginator(
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
channel: None,
|
channel: None,
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 months ago"),
|
publish_date_txt: Some("7 months ago"),
|
||||||
view_count: Some(37515),
|
view_count: Some(37515),
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 years ago"),
|
publish_date_txt: Some("6 years ago"),
|
||||||
view_count: Some(85000000),
|
view_count: Some(85000000),
|
||||||
|
|
@ -80,7 +79,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(59000000),
|
view_count: Some(59000000),
|
||||||
|
|
@ -122,7 +120,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(15000000),
|
view_count: Some(15000000),
|
||||||
|
|
@ -164,7 +161,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(19000000),
|
view_count: Some(19000000),
|
||||||
|
|
@ -206,7 +202,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(14000000),
|
view_count: Some(14000000),
|
||||||
|
|
@ -248,7 +243,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(21000000),
|
view_count: Some(21000000),
|
||||||
|
|
@ -290,7 +284,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(20000000),
|
view_count: Some(20000000),
|
||||||
|
|
@ -332,7 +325,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(16000000),
|
view_count: Some(16000000),
|
||||||
|
|
@ -374,7 +366,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(4100000),
|
view_count: Some(4100000),
|
||||||
|
|
@ -416,7 +407,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(10000000),
|
view_count: Some(10000000),
|
||||||
|
|
@ -458,7 +448,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(33000000),
|
view_count: Some(33000000),
|
||||||
|
|
@ -500,7 +489,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(3600000),
|
view_count: Some(3600000),
|
||||||
|
|
@ -542,7 +530,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(14000000),
|
view_count: Some(14000000),
|
||||||
|
|
@ -584,7 +571,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(7200000),
|
view_count: Some(7200000),
|
||||||
|
|
@ -626,7 +612,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(11000000),
|
view_count: Some(11000000),
|
||||||
|
|
@ -668,7 +653,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(31000000),
|
view_count: Some(31000000),
|
||||||
|
|
@ -710,7 +694,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(25000000),
|
view_count: Some(25000000),
|
||||||
|
|
@ -752,7 +735,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(2200000),
|
view_count: Some(2200000),
|
||||||
|
|
@ -794,7 +776,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(69000000),
|
view_count: Some(69000000),
|
||||||
|
|
@ -836,7 +817,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(7700000),
|
view_count: Some(7700000),
|
||||||
|
|
@ -878,7 +858,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(3400000),
|
view_count: Some(3400000),
|
||||||
|
|
@ -920,7 +899,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(3000000),
|
view_count: Some(3000000),
|
||||||
|
|
@ -962,7 +940,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 years ago"),
|
publish_date_txt: Some("6 years ago"),
|
||||||
view_count: Some(35000000),
|
view_count: Some(35000000),
|
||||||
|
|
@ -1004,7 +981,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(134000000),
|
view_count: Some(134000000),
|
||||||
|
|
@ -1046,7 +1022,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(19000000),
|
view_count: Some(19000000),
|
||||||
|
|
@ -1088,7 +1063,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(17000000),
|
view_count: Some(17000000),
|
||||||
|
|
@ -1130,7 +1104,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(60000000),
|
view_count: Some(60000000),
|
||||||
|
|
@ -1172,7 +1145,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 years ago"),
|
publish_date_txt: Some("8 years ago"),
|
||||||
view_count: Some(63000000),
|
view_count: Some(63000000),
|
||||||
|
|
@ -1214,7 +1186,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(36000000),
|
view_count: Some(36000000),
|
||||||
|
|
@ -1256,7 +1227,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(8100000),
|
view_count: Some(8100000),
|
||||||
|
|
@ -1298,7 +1268,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(8300000),
|
view_count: Some(8300000),
|
||||||
|
|
@ -1340,7 +1309,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(31000000),
|
view_count: Some(31000000),
|
||||||
|
|
@ -1382,7 +1350,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(41000000),
|
view_count: Some(41000000),
|
||||||
|
|
@ -1424,7 +1391,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(4600000),
|
view_count: Some(4600000),
|
||||||
|
|
@ -1466,7 +1432,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(9200000),
|
view_count: Some(9200000),
|
||||||
|
|
@ -1508,7 +1473,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(50000000),
|
view_count: Some(50000000),
|
||||||
|
|
@ -1550,7 +1514,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(61000000),
|
view_count: Some(61000000),
|
||||||
|
|
@ -1592,7 +1555,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(8000000),
|
view_count: Some(8000000),
|
||||||
|
|
@ -1634,7 +1596,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(38000000),
|
view_count: Some(38000000),
|
||||||
|
|
@ -1676,7 +1637,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 years ago"),
|
publish_date_txt: Some("6 years ago"),
|
||||||
view_count: Some(49000000),
|
view_count: Some(49000000),
|
||||||
|
|
@ -1718,7 +1678,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 years ago"),
|
publish_date_txt: Some("6 years ago"),
|
||||||
view_count: Some(28000000),
|
view_count: Some(28000000),
|
||||||
|
|
@ -1760,7 +1719,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(75000000),
|
view_count: Some(75000000),
|
||||||
|
|
@ -1802,7 +1760,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(23000000),
|
view_count: Some(23000000),
|
||||||
|
|
@ -1844,7 +1801,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(1800000),
|
view_count: Some(1800000),
|
||||||
|
|
@ -1886,7 +1842,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(2000000),
|
view_count: Some(2000000),
|
||||||
|
|
@ -1928,7 +1883,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(21000000),
|
view_count: Some(21000000),
|
||||||
|
|
@ -1970,7 +1924,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 years ago"),
|
publish_date_txt: Some("8 years ago"),
|
||||||
view_count: Some(51000000),
|
view_count: Some(51000000),
|
||||||
|
|
@ -2012,7 +1965,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(15000000),
|
view_count: Some(15000000),
|
||||||
|
|
@ -2054,7 +2006,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 years ago"),
|
publish_date_txt: Some("6 years ago"),
|
||||||
view_count: Some(47000000),
|
view_count: Some(47000000),
|
||||||
|
|
@ -2096,7 +2047,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(8300000),
|
view_count: Some(8300000),
|
||||||
|
|
@ -2138,7 +2088,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(49000000),
|
view_count: Some(49000000),
|
||||||
|
|
@ -2180,7 +2129,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(20000000),
|
view_count: Some(20000000),
|
||||||
|
|
@ -2222,7 +2170,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(25000000),
|
view_count: Some(25000000),
|
||||||
|
|
@ -2264,7 +2211,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 years ago"),
|
publish_date_txt: Some("6 years ago"),
|
||||||
view_count: Some(55000000),
|
view_count: Some(55000000),
|
||||||
|
|
@ -2306,7 +2252,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(47000000),
|
view_count: Some(47000000),
|
||||||
|
|
@ -2348,7 +2293,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(509000000),
|
view_count: Some(509000000),
|
||||||
|
|
@ -2390,7 +2334,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(89000000),
|
view_count: Some(89000000),
|
||||||
|
|
@ -2432,7 +2375,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(88000000),
|
view_count: Some(88000000),
|
||||||
|
|
@ -2474,7 +2416,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(88000000),
|
view_count: Some(88000000),
|
||||||
|
|
@ -2516,7 +2457,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("10 years ago"),
|
publish_date_txt: Some("10 years ago"),
|
||||||
view_count: Some(49000000),
|
view_count: Some(49000000),
|
||||||
|
|
@ -2558,7 +2498,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(62000000),
|
view_count: Some(62000000),
|
||||||
|
|
@ -2600,7 +2539,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(63000000),
|
view_count: Some(63000000),
|
||||||
|
|
@ -2642,7 +2580,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(42000000),
|
view_count: Some(42000000),
|
||||||
|
|
@ -2684,7 +2621,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 years ago"),
|
publish_date_txt: Some("6 years ago"),
|
||||||
view_count: Some(46000000),
|
view_count: Some(46000000),
|
||||||
|
|
@ -2726,7 +2662,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(32000000),
|
view_count: Some(32000000),
|
||||||
|
|
@ -2768,7 +2703,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(34000000),
|
view_count: Some(34000000),
|
||||||
|
|
@ -2810,7 +2744,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 years ago"),
|
publish_date_txt: Some("6 years ago"),
|
||||||
view_count: Some(47000000),
|
view_count: Some(47000000),
|
||||||
|
|
@ -2852,7 +2785,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 years ago"),
|
publish_date_txt: Some("8 years ago"),
|
||||||
view_count: Some(37000000),
|
view_count: Some(37000000),
|
||||||
|
|
@ -2894,7 +2826,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 years ago"),
|
publish_date_txt: Some("8 years ago"),
|
||||||
view_count: Some(31000000),
|
view_count: Some(31000000),
|
||||||
|
|
@ -2936,7 +2867,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(45000000),
|
view_count: Some(45000000),
|
||||||
|
|
@ -2978,7 +2908,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(38000000),
|
view_count: Some(38000000),
|
||||||
|
|
@ -3020,7 +2949,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(30000000),
|
view_count: Some(30000000),
|
||||||
|
|
@ -3062,7 +2990,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 years ago"),
|
publish_date_txt: Some("6 years ago"),
|
||||||
view_count: Some(36000000),
|
view_count: Some(36000000),
|
||||||
|
|
@ -3104,7 +3031,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 years ago"),
|
publish_date_txt: Some("6 years ago"),
|
||||||
view_count: Some(34000000),
|
view_count: Some(34000000),
|
||||||
|
|
@ -3146,7 +3072,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 years ago"),
|
publish_date_txt: Some("8 years ago"),
|
||||||
view_count: Some(27000000),
|
view_count: Some(27000000),
|
||||||
|
|
@ -3188,7 +3113,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(25000000),
|
view_count: Some(25000000),
|
||||||
|
|
@ -3230,7 +3154,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(22000000),
|
view_count: Some(22000000),
|
||||||
|
|
@ -3272,7 +3195,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(31000000),
|
view_count: Some(31000000),
|
||||||
|
|
@ -3314,7 +3236,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(18000000),
|
view_count: Some(18000000),
|
||||||
|
|
@ -3356,7 +3277,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(25000000),
|
view_count: Some(25000000),
|
||||||
|
|
@ -3398,7 +3318,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(24000000),
|
view_count: Some(24000000),
|
||||||
|
|
@ -3440,7 +3359,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(29000000),
|
view_count: Some(29000000),
|
||||||
|
|
@ -3482,7 +3400,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 years ago"),
|
publish_date_txt: Some("6 years ago"),
|
||||||
view_count: Some(23000000),
|
view_count: Some(23000000),
|
||||||
|
|
@ -3524,7 +3441,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("14 years ago"),
|
publish_date_txt: Some("14 years ago"),
|
||||||
view_count: Some(27000000),
|
view_count: Some(27000000),
|
||||||
|
|
@ -3566,7 +3482,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 years ago"),
|
publish_date_txt: Some("8 years ago"),
|
||||||
view_count: Some(19000000),
|
view_count: Some(19000000),
|
||||||
|
|
@ -3608,7 +3523,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 years ago"),
|
publish_date_txt: Some("8 years ago"),
|
||||||
view_count: Some(31000000),
|
view_count: Some(31000000),
|
||||||
|
|
@ -3650,7 +3564,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(19000000),
|
view_count: Some(19000000),
|
||||||
|
|
@ -3692,7 +3605,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 years ago"),
|
publish_date_txt: Some("6 years ago"),
|
||||||
view_count: Some(18000000),
|
view_count: Some(18000000),
|
||||||
|
|
@ -3734,7 +3646,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(22000000),
|
view_count: Some(22000000),
|
||||||
|
|
@ -3776,7 +3687,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(16000000),
|
view_count: Some(16000000),
|
||||||
|
|
@ -3818,7 +3728,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(16000000),
|
view_count: Some(16000000),
|
||||||
|
|
@ -3860,7 +3769,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 years ago"),
|
publish_date_txt: Some("8 years ago"),
|
||||||
view_count: Some(21000000),
|
view_count: Some(21000000),
|
||||||
|
|
@ -3902,7 +3810,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(40000000),
|
view_count: Some(40000000),
|
||||||
|
|
@ -3944,7 +3851,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 years ago"),
|
publish_date_txt: Some("8 years ago"),
|
||||||
view_count: Some(15000000),
|
view_count: Some(15000000),
|
||||||
|
|
@ -3986,7 +3892,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(19000000),
|
view_count: Some(19000000),
|
||||||
|
|
@ -4028,7 +3933,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(15000000),
|
view_count: Some(15000000),
|
||||||
|
|
@ -4070,7 +3974,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(25000000),
|
view_count: Some(25000000),
|
||||||
|
|
@ -4112,7 +4015,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(16000000),
|
view_count: Some(16000000),
|
||||||
|
|
@ -4154,7 +4056,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 years ago"),
|
publish_date_txt: Some("8 years ago"),
|
||||||
view_count: Some(23000000),
|
view_count: Some(23000000),
|
||||||
|
|
@ -4196,7 +4097,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("10 years ago"),
|
publish_date_txt: Some("10 years ago"),
|
||||||
view_count: Some(15000000),
|
view_count: Some(15000000),
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,6 @@ Paginator(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 months ago"),
|
publish_date_txt: Some("11 months ago"),
|
||||||
view_count: Some(216222873),
|
view_count: Some(216222873),
|
||||||
|
|
@ -72,7 +71,6 @@ Paginator(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 months ago"),
|
publish_date_txt: Some("5 months ago"),
|
||||||
view_count: Some(155106313),
|
view_count: Some(155106313),
|
||||||
|
|
@ -110,7 +108,6 @@ Paginator(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 years ago"),
|
publish_date_txt: Some("2 years ago"),
|
||||||
view_count: Some(265238677),
|
view_count: Some(265238677),
|
||||||
|
|
@ -148,7 +145,6 @@ Paginator(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(9989591),
|
view_count: Some(9989591),
|
||||||
|
|
@ -186,7 +182,6 @@ Paginator(
|
||||||
verification: artist,
|
verification: artist,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(34588526),
|
view_count: Some(34588526),
|
||||||
|
|
@ -224,7 +219,6 @@ Paginator(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(242737870),
|
view_count: Some(242737870),
|
||||||
|
|
@ -262,7 +256,6 @@ Paginator(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 years ago"),
|
publish_date_txt: Some("2 years ago"),
|
||||||
view_count: Some(126677200),
|
view_count: Some(126677200),
|
||||||
|
|
@ -300,7 +293,6 @@ Paginator(
|
||||||
verification: artist,
|
verification: artist,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(335903776),
|
view_count: Some(335903776),
|
||||||
|
|
@ -338,7 +330,6 @@ Paginator(
|
||||||
verification: artist,
|
verification: artist,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(86125645),
|
view_count: Some(86125645),
|
||||||
|
|
@ -376,7 +367,6 @@ Paginator(
|
||||||
verification: artist,
|
verification: artist,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 months ago"),
|
publish_date_txt: Some("6 months ago"),
|
||||||
view_count: Some(170016610),
|
view_count: Some(170016610),
|
||||||
|
|
@ -414,7 +404,6 @@ Paginator(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(123861096),
|
view_count: Some(123861096),
|
||||||
|
|
@ -452,7 +441,6 @@ Paginator(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(101968219),
|
view_count: Some(101968219),
|
||||||
|
|
@ -490,7 +478,6 @@ Paginator(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 years ago"),
|
publish_date_txt: Some("2 years ago"),
|
||||||
view_count: Some(322510403),
|
view_count: Some(322510403),
|
||||||
|
|
@ -528,7 +515,6 @@ Paginator(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 years ago"),
|
publish_date_txt: Some("2 years ago"),
|
||||||
view_count: Some(345491789),
|
view_count: Some(345491789),
|
||||||
|
|
@ -566,7 +552,6 @@ Paginator(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 months ago"),
|
publish_date_txt: Some("11 months ago"),
|
||||||
view_count: Some(314744776),
|
view_count: Some(314744776),
|
||||||
|
|
@ -604,7 +589,6 @@ Paginator(
|
||||||
verification: artist,
|
verification: artist,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(18830758),
|
view_count: Some(18830758),
|
||||||
|
|
@ -642,7 +626,6 @@ Paginator(
|
||||||
verification: artist,
|
verification: artist,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(282957370),
|
view_count: Some(282957370),
|
||||||
|
|
@ -680,7 +663,6 @@ Paginator(
|
||||||
verification: artist,
|
verification: artist,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 years ago"),
|
publish_date_txt: Some("2 years ago"),
|
||||||
view_count: Some(355203298),
|
view_count: Some(355203298),
|
||||||
|
|
@ -718,7 +700,6 @@ Paginator(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 years ago"),
|
publish_date_txt: Some("2 years ago"),
|
||||||
view_count: Some(157400947),
|
view_count: Some(157400947),
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,6 @@ Paginator(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 day ago"),
|
publish_date_txt: Some("1 day ago"),
|
||||||
view_count: Some(859366),
|
view_count: Some(859366),
|
||||||
|
|
@ -62,7 +61,6 @@ Paginator(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 days ago"),
|
publish_date_txt: Some("3 days ago"),
|
||||||
view_count: Some(1000402),
|
view_count: Some(1000402),
|
||||||
|
|
@ -100,7 +98,6 @@ Paginator(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 months ago"),
|
publish_date_txt: Some("4 months ago"),
|
||||||
view_count: Some(528795),
|
view_count: Some(528795),
|
||||||
|
|
@ -133,7 +130,6 @@ Paginator(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 days ago"),
|
publish_date_txt: Some("8 days ago"),
|
||||||
view_count: Some(1096055),
|
view_count: Some(1096055),
|
||||||
|
|
@ -171,7 +167,6 @@ Paginator(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 months ago"),
|
publish_date_txt: Some("8 months ago"),
|
||||||
view_count: Some(928968),
|
view_count: Some(928968),
|
||||||
|
|
@ -209,7 +204,6 @@ Paginator(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 months ago"),
|
publish_date_txt: Some("7 months ago"),
|
||||||
view_count: Some(1137138),
|
view_count: Some(1137138),
|
||||||
|
|
@ -247,7 +241,6 @@ Paginator(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 months ago"),
|
publish_date_txt: Some("8 months ago"),
|
||||||
view_count: Some(462437),
|
view_count: Some(462437),
|
||||||
|
|
@ -280,7 +273,6 @@ Paginator(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(11285067),
|
view_count: Some(11285067),
|
||||||
|
|
@ -313,7 +305,6 @@ Paginator(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 weeks ago"),
|
publish_date_txt: Some("3 weeks ago"),
|
||||||
view_count: Some(2415040),
|
view_count: Some(2415040),
|
||||||
|
|
@ -346,7 +337,6 @@ Paginator(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(5100787),
|
view_count: Some(5100787),
|
||||||
|
|
@ -379,7 +369,6 @@ Paginator(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("10 months ago"),
|
publish_date_txt: Some("10 months ago"),
|
||||||
view_count: Some(55308394),
|
view_count: Some(55308394),
|
||||||
|
|
@ -417,7 +406,6 @@ Paginator(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 months ago"),
|
publish_date_txt: Some("8 months ago"),
|
||||||
view_count: Some(774061),
|
view_count: Some(774061),
|
||||||
|
|
@ -450,7 +438,6 @@ Paginator(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 months ago"),
|
publish_date_txt: Some("8 months ago"),
|
||||||
view_count: Some(12314192),
|
view_count: Some(12314192),
|
||||||
|
|
@ -483,7 +470,6 @@ Paginator(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(4266748),
|
view_count: Some(4266748),
|
||||||
|
|
@ -521,7 +507,6 @@ Paginator(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 months ago"),
|
publish_date_txt: Some("9 months ago"),
|
||||||
view_count: Some(439888),
|
view_count: Some(439888),
|
||||||
|
|
@ -554,7 +539,6 @@ Paginator(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 months ago"),
|
publish_date_txt: Some("6 months ago"),
|
||||||
view_count: Some(9312774),
|
view_count: Some(9312774),
|
||||||
|
|
|
||||||
|
|
@ -61,12 +61,11 @@ VideoPlayer(
|
||||||
),
|
),
|
||||||
video_streams: [
|
video_streams: [
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=ANDROID&clen=1619781&dur=163.143&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=17&lmt=1580005480199246&lsig=AG3C_xAwRgIhAOiL-qJ04sA8FSOkEJfOYl3gFe4SzwYu_rAf3DMLHYigAiEA0Upi1HqqIu7NH_LTDL0jT1R5TTozQypL5FiSP9RoqtU%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2F3gpp&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1659459429&mv=m&mvi=5&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAJ2s7Pm4w42X3u3PWYViDeqIaE2tE9J6oIGpd0KB9gFsAiAH84QaJ4oUNivdRDUBi1ZYI7JSxESsPQ53mLInajKzcQ%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&txp=2211222&vprv=1"),
|
url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=ANDROID&clen=1619781&dur=163.143&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=17&lmt=1580005480199246&lsig=AG3C_xAwRgIhAOiL-qJ04sA8FSOkEJfOYl3gFe4SzwYu_rAf3DMLHYigAiEA0Upi1HqqIu7NH_LTDL0jT1R5TTozQypL5FiSP9RoqtU%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mime=video%2F3gpp&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1659459429&mv=m&mvi=5&pl=37&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhAJ2s7Pm4w42X3u3PWYViDeqIaE2tE9J6oIGpd0KB9gFsAiAH84QaJ4oUNivdRDUBi1ZYI7JSxESsPQ53mLInajKzcQ%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&txp=2211222&vprv=1",
|
||||||
itag: 17,
|
itag: 17,
|
||||||
bitrate: 79452,
|
bitrate: 79452,
|
||||||
average_bitrate: 79428,
|
average_bitrate: 79428,
|
||||||
size: Some(1619781),
|
size: Some(1619781),
|
||||||
last_modified: Some(1580005480199246),
|
|
||||||
index_range: None,
|
index_range: None,
|
||||||
init_range: None,
|
init_range: None,
|
||||||
duration_ms: Some(163143),
|
duration_ms: Some(163143),
|
||||||
|
|
@ -78,17 +77,15 @@ VideoPlayer(
|
||||||
mime: "video/3gpp; codecs=\"mp4v.20.3, mp4a.40.2\"",
|
mime: "video/3gpp; codecs=\"mp4v.20.3, mp4a.40.2\"",
|
||||||
format: r#3gp,
|
format: r#3gp,
|
||||||
codec: mp4v,
|
codec: mp4v,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 18,
|
itag: 18,
|
||||||
bitrate: 561339,
|
bitrate: 561339,
|
||||||
average_bitrate: 561109,
|
average_bitrate: 561109,
|
||||||
size: Some(11439331),
|
size: Some(11439331),
|
||||||
last_modified: Some(1580005476071743),
|
|
||||||
index_range: None,
|
index_range: None,
|
||||||
init_range: None,
|
init_range: None,
|
||||||
duration_ms: Some(163096),
|
duration_ms: Some(163096),
|
||||||
|
|
@ -100,17 +97,15 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"avc1.42001E, mp4a.40.2\"",
|
mime: "video/mp4; codecs=\"avc1.42001E, mp4a.40.2\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: avc1,
|
codec: avc1,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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,
|
itag: 22,
|
||||||
bitrate: 1574434,
|
bitrate: 1574434,
|
||||||
average_bitrate: 1574434,
|
average_bitrate: 1574434,
|
||||||
size: None,
|
size: None,
|
||||||
last_modified: Some(1580005750956837),
|
|
||||||
index_range: None,
|
index_range: None,
|
||||||
init_range: None,
|
init_range: None,
|
||||||
duration_ms: Some(163096),
|
duration_ms: Some(163096),
|
||||||
|
|
@ -122,19 +117,17 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"avc1.64001F, mp4a.40.2\"",
|
mime: "video/mp4; codecs=\"avc1.64001F, mp4a.40.2\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: avc1,
|
codec: avc1,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
video_only_streams: [
|
video_only_streams: [
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=ANDROID&clen=1224002&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=394&keepalive=yes&lmt=1608045375671513&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=AOq0QJ8wRQIgYCPleG9F86UoDRvzFL2xSUUI-HLZGw_P7qBOixlcmKsCIQChdmrJ1NvKo5Ra4QJ9ivR5V8fEcQs0f_3aUiqMhGB5DQ%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&txp=1311222&vprv=1"),
|
url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=ANDROID&clen=1224002&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=394&keepalive=yes&lmt=1608045375671513&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=AOq0QJ8wRQIgYCPleG9F86UoDRvzFL2xSUUI-HLZGw_P7qBOixlcmKsCIQChdmrJ1NvKo5Ra4QJ9ivR5V8fEcQs0f_3aUiqMhGB5DQ%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&txp=1311222&vprv=1",
|
||||||
itag: 394,
|
itag: 394,
|
||||||
bitrate: 67637,
|
bitrate: 67637,
|
||||||
average_bitrate: 60063,
|
average_bitrate: 60063,
|
||||||
size: Some(1224002),
|
size: Some(1224002),
|
||||||
last_modified: Some(1608045375671513),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 700,
|
start: 700,
|
||||||
end: 1115,
|
end: 1115,
|
||||||
|
|
@ -152,17 +145,15 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"av01.0.00M.08\"",
|
mime: "video/mp4; codecs=\"av01.0.00M.08\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: av01,
|
codec: av01,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 395,
|
itag: 395,
|
||||||
bitrate: 135747,
|
bitrate: 135747,
|
||||||
average_bitrate: 109867,
|
average_bitrate: 109867,
|
||||||
size: Some(2238952),
|
size: Some(2238952),
|
||||||
last_modified: Some(1608045728968690),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 700,
|
start: 700,
|
||||||
end: 1115,
|
end: 1115,
|
||||||
|
|
@ -180,17 +171,15 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"av01.0.00M.08\"",
|
mime: "video/mp4; codecs=\"av01.0.00M.08\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: av01,
|
codec: av01,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 134,
|
itag: 134,
|
||||||
bitrate: 538143,
|
bitrate: 538143,
|
||||||
average_bitrate: 383195,
|
average_bitrate: 383195,
|
||||||
size: Some(7808990),
|
size: Some(7808990),
|
||||||
last_modified: Some(1580005649163759),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 740,
|
start: 740,
|
||||||
end: 1155,
|
end: 1155,
|
||||||
|
|
@ -208,17 +197,15 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"avc1.4d401e\"",
|
mime: "video/mp4; codecs=\"avc1.4d401e\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: avc1,
|
codec: avc1,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 396,
|
itag: 396,
|
||||||
bitrate: 258097,
|
bitrate: 258097,
|
||||||
average_bitrate: 202682,
|
average_bitrate: 202682,
|
||||||
size: Some(4130385),
|
size: Some(4130385),
|
||||||
last_modified: Some(1608045761576250),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 700,
|
start: 700,
|
||||||
end: 1115,
|
end: 1115,
|
||||||
|
|
@ -236,17 +223,15 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"av01.0.01M.08\"",
|
mime: "video/mp4; codecs=\"av01.0.01M.08\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: av01,
|
codec: av01,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 397,
|
itag: 397,
|
||||||
bitrate: 436843,
|
bitrate: 436843,
|
||||||
average_bitrate: 337281,
|
average_bitrate: 337281,
|
||||||
size: Some(6873325),
|
size: Some(6873325),
|
||||||
last_modified: Some(1608045990917419),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 700,
|
start: 700,
|
||||||
end: 1115,
|
end: 1115,
|
||||||
|
|
@ -264,17 +249,15 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"av01.0.04M.08\"",
|
mime: "video/mp4; codecs=\"av01.0.04M.08\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: av01,
|
codec: av01,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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,
|
itag: 398,
|
||||||
bitrate: 1348419,
|
bitrate: 1348419,
|
||||||
average_bitrate: 1097369,
|
average_bitrate: 1097369,
|
||||||
size: Some(22365208),
|
size: Some(22365208),
|
||||||
last_modified: Some(1608048380553749),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 700,
|
start: 700,
|
||||||
end: 1115,
|
end: 1115,
|
||||||
|
|
@ -292,17 +275,15 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"av01.0.08M.08\"",
|
mime: "video/mp4; codecs=\"av01.0.08M.08\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: av01,
|
codec: av01,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 299,
|
itag: 299,
|
||||||
bitrate: 4190323,
|
bitrate: 4190323,
|
||||||
average_bitrate: 3208919,
|
average_bitrate: 3208919,
|
||||||
size: Some(65400181),
|
size: Some(65400181),
|
||||||
last_modified: Some(1580005649161486),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 740,
|
start: 740,
|
||||||
end: 1155,
|
end: 1155,
|
||||||
|
|
@ -320,17 +301,15 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"avc1.64002a\"",
|
mime: "video/mp4; codecs=\"avc1.64002a\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: avc1,
|
codec: avc1,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 399,
|
itag: 399,
|
||||||
bitrate: 2572342,
|
bitrate: 2572342,
|
||||||
average_bitrate: 2088624,
|
average_bitrate: 2088624,
|
||||||
size: Some(42567727),
|
size: Some(42567727),
|
||||||
last_modified: Some(1608052932785283),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 700,
|
start: 700,
|
||||||
end: 1115,
|
end: 1115,
|
||||||
|
|
@ -348,19 +327,17 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"av01.0.09M.08\"",
|
mime: "video/mp4; codecs=\"av01.0.09M.08\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: av01,
|
codec: av01,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
audio_streams: [
|
audio_streams: [
|
||||||
AudioStream(
|
AudioStream(
|
||||||
url: Some("https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=ANDROID&clen=995840&dur=163.189&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=139&keepalive=yes&lmt=1580005582214385&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=AOq0QJ8wRQIhALhtrbIL9_CQBeXsEwxFqyPY1XqBCOceQc7y00h7XBS9AiAH9VkMnkuFCU1ACkYU__uApTwcYeDoYNU74VYmKED3Gw%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&txp=2211222&vprv=1"),
|
url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=ANDROID&clen=995840&dur=163.189&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=139&keepalive=yes&lmt=1580005582214385&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=AOq0QJ8wRQIhALhtrbIL9_CQBeXsEwxFqyPY1XqBCOceQc7y00h7XBS9AiAH9VkMnkuFCU1ACkYU__uApTwcYeDoYNU74VYmKED3Gw%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&txp=2211222&vprv=1",
|
||||||
itag: 139,
|
itag: 139,
|
||||||
bitrate: 49724,
|
bitrate: 49724,
|
||||||
average_bitrate: 48818,
|
average_bitrate: 48818,
|
||||||
size: 995840,
|
size: 995840,
|
||||||
last_modified: Some(1580005582214385),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 641,
|
start: 641,
|
||||||
end: 876,
|
end: 876,
|
||||||
|
|
@ -375,19 +352,16 @@ VideoPlayer(
|
||||||
codec: mp4a,
|
codec: mp4a,
|
||||||
channels: Some(2),
|
channels: Some(2),
|
||||||
loudness_db: None,
|
loudness_db: None,
|
||||||
is_drc: false,
|
|
||||||
track: None,
|
track: None,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
AudioStream(
|
AudioStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 249,
|
itag: 249,
|
||||||
bitrate: 53039,
|
bitrate: 53039,
|
||||||
average_bitrate: 45845,
|
average_bitrate: 45845,
|
||||||
size: 934449,
|
size: 934449,
|
||||||
last_modified: Some(1608509101590706),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 266,
|
start: 266,
|
||||||
end: 551,
|
end: 551,
|
||||||
|
|
@ -402,19 +376,16 @@ VideoPlayer(
|
||||||
codec: opus,
|
codec: opus,
|
||||||
channels: Some(2),
|
channels: Some(2),
|
||||||
loudness_db: None,
|
loudness_db: None,
|
||||||
is_drc: false,
|
|
||||||
track: None,
|
track: None,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
AudioStream(
|
AudioStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 250,
|
itag: 250,
|
||||||
bitrate: 71268,
|
bitrate: 71268,
|
||||||
average_bitrate: 61123,
|
average_bitrate: 61123,
|
||||||
size: 1245866,
|
size: 1245866,
|
||||||
last_modified: Some(1608509101111096),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 266,
|
start: 266,
|
||||||
end: 551,
|
end: 551,
|
||||||
|
|
@ -429,19 +400,16 @@ VideoPlayer(
|
||||||
codec: opus,
|
codec: opus,
|
||||||
channels: Some(2),
|
channels: Some(2),
|
||||||
loudness_db: None,
|
loudness_db: None,
|
||||||
is_drc: false,
|
|
||||||
track: None,
|
track: None,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
AudioStream(
|
AudioStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 140,
|
itag: 140,
|
||||||
bitrate: 130268,
|
bitrate: 130268,
|
||||||
average_bitrate: 129508,
|
average_bitrate: 129508,
|
||||||
size: 2640283,
|
size: 2640283,
|
||||||
last_modified: Some(1580005579712232),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 632,
|
start: 632,
|
||||||
end: 867,
|
end: 867,
|
||||||
|
|
@ -456,19 +424,16 @@ VideoPlayer(
|
||||||
codec: mp4a,
|
codec: mp4a,
|
||||||
channels: Some(2),
|
channels: Some(2),
|
||||||
loudness_db: None,
|
loudness_db: None,
|
||||||
is_drc: false,
|
|
||||||
track: None,
|
track: None,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
AudioStream(
|
AudioStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 251,
|
itag: 251,
|
||||||
bitrate: 140633,
|
bitrate: 140633,
|
||||||
average_bitrate: 121491,
|
average_bitrate: 121491,
|
||||||
size: 2476314,
|
size: 2476314,
|
||||||
last_modified: Some(1608509101894140),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 266,
|
start: 266,
|
||||||
end: 551,
|
end: 551,
|
||||||
|
|
@ -483,9 +448,7 @@ VideoPlayer(
|
||||||
codec: opus,
|
codec: opus,
|
||||||
channels: Some(2),
|
channels: Some(2),
|
||||||
loudness_db: None,
|
loudness_db: None,
|
||||||
is_drc: false,
|
|
||||||
track: None,
|
track: None,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
|
|
@ -502,9 +465,6 @@ VideoPlayer(
|
||||||
valid_until: "[date]",
|
valid_until: "[date]",
|
||||||
hls_manifest_url: None,
|
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"),
|
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"),
|
||||||
abr_streaming_url: None,
|
|
||||||
abr_ustreamer_config: Some("Cs0CCAAlMZkqPi0AAIA_NT0Klz9YAXjoAoABAaABAbUB9ijcP-ABAegBA_ABAfkBAAAAAAAA0D-BAgAAAAAAABhAmALwAaAC6AK4AgDaAlUQsOoBGKhGIKCcASjYNjCYdXCIJ4AB9AO4AQHgAQGYAgyoAgGwAgG4AgHAAgHIAgHQAgLgAgHoAgLwAgGAAwaIA4gnmAMBqAMIsAMBuAMBwAMB2AMB-gIrCAwQGBgyIDItAABwQjUAAIxCQAFIAWUAAIBAaMBwzQEAAIA_8AEB6ALgA4IDAJADAaADAbADA-ADkE6wBAG4BAHKBFgKFQiA4gkQmHUYrAIlAAAAACgAMABAARDg1AMY0A8qNgoKdGJfY29zdF81MCAIKQAAAAAAAAAASAFQAV2amZk-ZQAAAD9tAAAAP3UAAAA_eMCpB5IBADAB6AQB8AQB-AQBkAUBGAEgATIMCKsCEI662NuboOcCMgwIjwMQg-na_r_Q7QIyDAiqAhCOutjbm6DnAjIMCI4DEJXUhISv0O0CMgwIhwEQjrrY25ug5wIyDAiNAxCr6siQptDtAjIMCIYBEO_L2NuboOcCMgwIjAMQuvqao6XQ7QIyDAiFARCOutjbm6DnAjIMCIsDEPLf1JOl0O0CMgwIoAEQjrrY25ug5wIyDAiKAxDZmZnro9DtAjIMCIsBEPGp4ruboOcCMgwIjAEQ6M3Jupug5wIyDAj5ARCykfms493tAjIMCPoBELju26zj3e0CMgwI-wEQ_NOLrePd7QI6AA=="),
|
|
||||||
po_token: None,
|
|
||||||
preview_frames: [
|
preview_frames: [
|
||||||
Frameset(
|
Frameset(
|
||||||
url_template: "https://i.ytimg.com/sb/pPvd8UxmSbQ/storyboard3_L0/default.jpg?sqp=-oaymwENSDfyq4qpAwVwAcABBqLzl_8DBgjf8LPxBQ==&sigh=rs$AOn4CLAXobPyrylgm8IEvjlZzqYTiPe1Ow",
|
url_template: "https://i.ytimg.com/sb/pPvd8UxmSbQ/storyboard3_L0/default.jpg?sqp=-oaymwENSDfyq4qpAwVwAcABBqLzl_8DBgjf8LPxBQ==&sigh=rs$AOn4CLAXobPyrylgm8IEvjlZzqYTiPe1Ow",
|
||||||
|
|
|
||||||
|
|
@ -66,12 +66,11 @@ VideoPlayer(
|
||||||
),
|
),
|
||||||
video_streams: [
|
video_streams: [
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("https://rr4---sn-h0jelnez.googlevideo.com/videoplayback?c=WEB&clen=11439331&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=18&lmt=1580005476071743&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=ig_QojS86GYHYg&ns=cOm8mnsR9HFwfq55dDyGyqYH&pl=37&ratebypass=yes&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIgNqstD2C4HG7Vn5En5Z4aUyH2mk7gAB9cyfOAWGCaWeoCIQDbxxJZuOnz_3RJNviFYADvgTO7u8YBYKtpFtp9Ujmk2w%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cratebypass%2Cdur%2Clmt&spc=lT-KhrZGE2opztWyVdAtyUNlb8dXPDs&txp=2211222&vprv=1"),
|
url: "https://rr4---sn-h0jelnez.googlevideo.com/videoplayback?c=WEB&clen=11439331&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=18&lmt=1580005476071743&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=ig_QojS86GYHYg&ns=cOm8mnsR9HFwfq55dDyGyqYH&pl=37&ratebypass=yes&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIgNqstD2C4HG7Vn5En5Z4aUyH2mk7gAB9cyfOAWGCaWeoCIQDbxxJZuOnz_3RJNviFYADvgTO7u8YBYKtpFtp9Ujmk2w%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cratebypass%2Cdur%2Clmt&spc=lT-KhrZGE2opztWyVdAtyUNlb8dXPDs&txp=2211222&vprv=1",
|
||||||
itag: 18,
|
itag: 18,
|
||||||
bitrate: 561339,
|
bitrate: 561339,
|
||||||
average_bitrate: 561109,
|
average_bitrate: 561109,
|
||||||
size: Some(11439331),
|
size: Some(11439331),
|
||||||
last_modified: Some(1580005476071743),
|
|
||||||
index_range: None,
|
index_range: None,
|
||||||
init_range: None,
|
init_range: None,
|
||||||
duration_ms: Some(163096),
|
duration_ms: Some(163096),
|
||||||
|
|
@ -83,19 +82,17 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"avc1.42001E, mp4a.40.2\"",
|
mime: "video/mp4; codecs=\"avc1.42001E, mp4a.40.2\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: avc1,
|
codec: avc1,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
video_only_streams: [
|
video_only_streams: [
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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=1484736&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=278&keepalive=yes&lmt=1608509388295661&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=AOq0QJ8wRQIgDYs7xrSqi-Co90zypk9zutEJ-aaEpNAHWnE57zVIfxgCIQDE0exs9SN8JH5OEJ8728Ke6bfa0CsUucFETHLk3IFF7w%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"),
|
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=1484736&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=278&keepalive=yes&lmt=1608509388295661&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=AOq0QJ8wRQIgDYs7xrSqi-Co90zypk9zutEJ-aaEpNAHWnE57zVIfxgCIQDE0exs9SN8JH5OEJ8728Ke6bfa0CsUucFETHLk3IFF7w%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",
|
||||||
itag: 278,
|
itag: 278,
|
||||||
bitrate: 87458,
|
bitrate: 87458,
|
||||||
average_bitrate: 72857,
|
average_bitrate: 72857,
|
||||||
size: Some(1484736),
|
size: Some(1484736),
|
||||||
last_modified: Some(1608509388295661),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 218,
|
start: 218,
|
||||||
end: 751,
|
end: 751,
|
||||||
|
|
@ -113,17 +110,15 @@ VideoPlayer(
|
||||||
mime: "video/webm; codecs=\"vp9\"",
|
mime: "video/webm; codecs=\"vp9\"",
|
||||||
format: webm,
|
format: webm,
|
||||||
codec: vp9,
|
codec: vp9,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 394,
|
itag: 394,
|
||||||
bitrate: 67637,
|
bitrate: 67637,
|
||||||
average_bitrate: 60063,
|
average_bitrate: 60063,
|
||||||
size: Some(1224002),
|
size: Some(1224002),
|
||||||
last_modified: Some(1608045375671513),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 700,
|
start: 700,
|
||||||
end: 1115,
|
end: 1115,
|
||||||
|
|
@ -141,17 +136,15 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"av01.0.00M.08\"",
|
mime: "video/mp4; codecs=\"av01.0.00M.08\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: av01,
|
codec: av01,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 242,
|
itag: 242,
|
||||||
bitrate: 184064,
|
bitrate: 184064,
|
||||||
average_bitrate: 145902,
|
average_bitrate: 145902,
|
||||||
size: Some(2973283),
|
size: Some(2973283),
|
||||||
last_modified: Some(1608509388282028),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 219,
|
start: 219,
|
||||||
end: 753,
|
end: 753,
|
||||||
|
|
@ -169,17 +162,15 @@ VideoPlayer(
|
||||||
mime: "video/webm; codecs=\"vp9\"",
|
mime: "video/webm; codecs=\"vp9\"",
|
||||||
format: webm,
|
format: webm,
|
||||||
codec: vp9,
|
codec: vp9,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 395,
|
itag: 395,
|
||||||
bitrate: 135747,
|
bitrate: 135747,
|
||||||
average_bitrate: 109867,
|
average_bitrate: 109867,
|
||||||
size: Some(2238952),
|
size: Some(2238952),
|
||||||
last_modified: Some(1608045728968690),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 700,
|
start: 700,
|
||||||
end: 1115,
|
end: 1115,
|
||||||
|
|
@ -197,17 +188,15 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"av01.0.00M.08\"",
|
mime: "video/mp4; codecs=\"av01.0.00M.08\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: av01,
|
codec: av01,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 134,
|
itag: 134,
|
||||||
bitrate: 538143,
|
bitrate: 538143,
|
||||||
average_bitrate: 383195,
|
average_bitrate: 383195,
|
||||||
size: Some(7808990),
|
size: Some(7808990),
|
||||||
last_modified: Some(1580005649163759),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 740,
|
start: 740,
|
||||||
end: 1155,
|
end: 1155,
|
||||||
|
|
@ -225,17 +214,15 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"avc1.4d401e\"",
|
mime: "video/mp4; codecs=\"avc1.4d401e\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: avc1,
|
codec: avc1,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 243,
|
itag: 243,
|
||||||
bitrate: 319085,
|
bitrate: 319085,
|
||||||
average_bitrate: 253673,
|
average_bitrate: 253673,
|
||||||
size: Some(5169510),
|
size: Some(5169510),
|
||||||
last_modified: Some(1608509388282405),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 220,
|
start: 220,
|
||||||
end: 754,
|
end: 754,
|
||||||
|
|
@ -253,17 +240,15 @@ VideoPlayer(
|
||||||
mime: "video/webm; codecs=\"vp9\"",
|
mime: "video/webm; codecs=\"vp9\"",
|
||||||
format: webm,
|
format: webm,
|
||||||
codec: vp9,
|
codec: vp9,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 396,
|
itag: 396,
|
||||||
bitrate: 258097,
|
bitrate: 258097,
|
||||||
average_bitrate: 202682,
|
average_bitrate: 202682,
|
||||||
size: Some(4130385),
|
size: Some(4130385),
|
||||||
last_modified: Some(1608045761576250),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 700,
|
start: 700,
|
||||||
end: 1115,
|
end: 1115,
|
||||||
|
|
@ -281,17 +266,15 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"av01.0.01M.08\"",
|
mime: "video/mp4; codecs=\"av01.0.01M.08\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: av01,
|
codec: av01,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 244,
|
itag: 244,
|
||||||
bitrate: 539056,
|
bitrate: 539056,
|
||||||
average_bitrate: 436270,
|
average_bitrate: 436270,
|
||||||
size: Some(8890590),
|
size: Some(8890590),
|
||||||
last_modified: Some(1608509388284632),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 220,
|
start: 220,
|
||||||
end: 754,
|
end: 754,
|
||||||
|
|
@ -309,17 +292,15 @@ VideoPlayer(
|
||||||
mime: "video/webm; codecs=\"vp9\"",
|
mime: "video/webm; codecs=\"vp9\"",
|
||||||
format: webm,
|
format: webm,
|
||||||
codec: vp9,
|
codec: vp9,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 397,
|
itag: 397,
|
||||||
bitrate: 436843,
|
bitrate: 436843,
|
||||||
average_bitrate: 337281,
|
average_bitrate: 337281,
|
||||||
size: Some(6873325),
|
size: Some(6873325),
|
||||||
last_modified: Some(1608045990917419),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 700,
|
start: 700,
|
||||||
end: 1115,
|
end: 1115,
|
||||||
|
|
@ -337,17 +318,15 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"av01.0.04M.08\"",
|
mime: "video/mp4; codecs=\"av01.0.04M.08\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: av01,
|
codec: av01,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 247,
|
itag: 247,
|
||||||
bitrate: 982813,
|
bitrate: 982813,
|
||||||
average_bitrate: 812006,
|
average_bitrate: 812006,
|
||||||
size: Some(16547577),
|
size: Some(16547577),
|
||||||
last_modified: Some(1608509388326822),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 220,
|
start: 220,
|
||||||
end: 754,
|
end: 754,
|
||||||
|
|
@ -365,17 +344,15 @@ VideoPlayer(
|
||||||
mime: "video/webm; codecs=\"vp9\"",
|
mime: "video/webm; codecs=\"vp9\"",
|
||||||
format: webm,
|
format: webm,
|
||||||
codec: vp9,
|
codec: vp9,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 302,
|
itag: 302,
|
||||||
bitrate: 2354009,
|
bitrate: 2354009,
|
||||||
average_bitrate: 1764202,
|
average_bitrate: 1764202,
|
||||||
size: Some(35955780),
|
size: Some(35955780),
|
||||||
last_modified: Some(1608509234088626),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 219,
|
start: 219,
|
||||||
end: 771,
|
end: 771,
|
||||||
|
|
@ -393,17 +370,15 @@ VideoPlayer(
|
||||||
mime: "video/webm; codecs=\"vp9\"",
|
mime: "video/webm; codecs=\"vp9\"",
|
||||||
format: webm,
|
format: webm,
|
||||||
codec: vp9,
|
codec: vp9,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 398,
|
itag: 398,
|
||||||
bitrate: 1348419,
|
bitrate: 1348419,
|
||||||
average_bitrate: 1097369,
|
average_bitrate: 1097369,
|
||||||
size: Some(22365208),
|
size: Some(22365208),
|
||||||
last_modified: Some(1608048380553749),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 700,
|
start: 700,
|
||||||
end: 1115,
|
end: 1115,
|
||||||
|
|
@ -421,17 +396,15 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"av01.0.08M.08\"",
|
mime: "video/mp4; codecs=\"av01.0.08M.08\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: av01,
|
codec: av01,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 299,
|
itag: 299,
|
||||||
bitrate: 4190323,
|
bitrate: 4190323,
|
||||||
average_bitrate: 3208919,
|
average_bitrate: 3208919,
|
||||||
size: Some(65400181),
|
size: Some(65400181),
|
||||||
last_modified: Some(1580005649161486),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 740,
|
start: 740,
|
||||||
end: 1155,
|
end: 1155,
|
||||||
|
|
@ -449,17 +422,15 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"avc1.64002a\"",
|
mime: "video/mp4; codecs=\"avc1.64002a\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: avc1,
|
codec: avc1,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 303,
|
itag: 303,
|
||||||
bitrate: 3832648,
|
bitrate: 3832648,
|
||||||
average_bitrate: 3090839,
|
average_bitrate: 3090839,
|
||||||
size: Some(62993617),
|
size: Some(62993617),
|
||||||
last_modified: Some(1608509371758331),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 219,
|
start: 219,
|
||||||
end: 776,
|
end: 776,
|
||||||
|
|
@ -477,17 +448,15 @@ VideoPlayer(
|
||||||
mime: "video/webm; codecs=\"vp9\"",
|
mime: "video/webm; codecs=\"vp9\"",
|
||||||
format: webm,
|
format: webm,
|
||||||
codec: vp9,
|
codec: vp9,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 399,
|
itag: 399,
|
||||||
bitrate: 2572342,
|
bitrate: 2572342,
|
||||||
average_bitrate: 2088624,
|
average_bitrate: 2088624,
|
||||||
size: Some(42567727),
|
size: Some(42567727),
|
||||||
last_modified: Some(1608052932785283),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 700,
|
start: 700,
|
||||||
end: 1115,
|
end: 1115,
|
||||||
|
|
@ -505,19 +474,17 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"av01.0.09M.08\"",
|
mime: "video/mp4; codecs=\"av01.0.09M.08\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: av01,
|
codec: av01,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
audio_streams: [
|
audio_streams: [
|
||||||
AudioStream(
|
AudioStream(
|
||||||
url: Some("https://rr4---sn-h0jelnez.googlevideo.com/videoplayback?c=WEB&clen=934449&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=249&keepalive=yes&lmt=1608509101590706&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=AOq0QJ8wRQIhAOdVu1woKNveQspV4WPm1PHrOBuzlrnPu2ZLvyiYZCSbAiAYODN_y5t1oU334SHUqqgyc4Wnt-9If-W98Fd966fy2A%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"),
|
url: "https://rr4---sn-h0jelnez.googlevideo.com/videoplayback?c=WEB&clen=934449&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=249&keepalive=yes&lmt=1608509101590706&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=AOq0QJ8wRQIhAOdVu1woKNveQspV4WPm1PHrOBuzlrnPu2ZLvyiYZCSbAiAYODN_y5t1oU334SHUqqgyc4Wnt-9If-W98Fd966fy2A%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",
|
||||||
itag: 249,
|
itag: 249,
|
||||||
bitrate: 53039,
|
bitrate: 53039,
|
||||||
average_bitrate: 45845,
|
average_bitrate: 45845,
|
||||||
size: 934449,
|
size: 934449,
|
||||||
last_modified: Some(1608509101590706),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 266,
|
start: 266,
|
||||||
end: 551,
|
end: 551,
|
||||||
|
|
@ -532,19 +499,16 @@ VideoPlayer(
|
||||||
codec: opus,
|
codec: opus,
|
||||||
channels: Some(2),
|
channels: Some(2),
|
||||||
loudness_db: Some(5.2200003),
|
loudness_db: Some(5.2200003),
|
||||||
is_drc: false,
|
|
||||||
track: None,
|
track: None,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
AudioStream(
|
AudioStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 250,
|
itag: 250,
|
||||||
bitrate: 71268,
|
bitrate: 71268,
|
||||||
average_bitrate: 61123,
|
average_bitrate: 61123,
|
||||||
size: 1245866,
|
size: 1245866,
|
||||||
last_modified: Some(1608509101111096),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 266,
|
start: 266,
|
||||||
end: 551,
|
end: 551,
|
||||||
|
|
@ -559,19 +523,16 @@ VideoPlayer(
|
||||||
codec: opus,
|
codec: opus,
|
||||||
channels: Some(2),
|
channels: Some(2),
|
||||||
loudness_db: Some(5.2200003),
|
loudness_db: Some(5.2200003),
|
||||||
is_drc: false,
|
|
||||||
track: None,
|
track: None,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
AudioStream(
|
AudioStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 140,
|
itag: 140,
|
||||||
bitrate: 130268,
|
bitrate: 130268,
|
||||||
average_bitrate: 129508,
|
average_bitrate: 129508,
|
||||||
size: 2640283,
|
size: 2640283,
|
||||||
last_modified: Some(1580005579712232),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 632,
|
start: 632,
|
||||||
end: 867,
|
end: 867,
|
||||||
|
|
@ -586,19 +547,16 @@ VideoPlayer(
|
||||||
codec: mp4a,
|
codec: mp4a,
|
||||||
channels: Some(2),
|
channels: Some(2),
|
||||||
loudness_db: Some(5.2159004),
|
loudness_db: Some(5.2159004),
|
||||||
is_drc: false,
|
|
||||||
track: None,
|
track: None,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
AudioStream(
|
AudioStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 251,
|
itag: 251,
|
||||||
bitrate: 140633,
|
bitrate: 140633,
|
||||||
average_bitrate: 121491,
|
average_bitrate: 121491,
|
||||||
size: 2476314,
|
size: 2476314,
|
||||||
last_modified: Some(1608509101894140),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 266,
|
start: 266,
|
||||||
end: 551,
|
end: 551,
|
||||||
|
|
@ -613,9 +571,7 @@ VideoPlayer(
|
||||||
codec: opus,
|
codec: opus,
|
||||||
channels: Some(2),
|
channels: Some(2),
|
||||||
loudness_db: Some(5.2200003),
|
loudness_db: Some(5.2200003),
|
||||||
is_drc: false,
|
|
||||||
track: None,
|
track: None,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
|
|
@ -632,9 +588,6 @@ VideoPlayer(
|
||||||
valid_until: "[date]",
|
valid_until: "[date]",
|
||||||
hls_manifest_url: None,
|
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"),
|
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"),
|
||||||
abr_streaming_url: None,
|
|
||||||
abr_ustreamer_config: None,
|
|
||||||
po_token: None,
|
|
||||||
preview_frames: [
|
preview_frames: [
|
||||||
Frameset(
|
Frameset(
|
||||||
url_template: "https://i.ytimg.com/sb/pPvd8UxmSbQ/storyboard3_L0/default.jpg?sqp=-oaymwENSDfyq4qpAwVwAcABBqLzl_8DBgjf8LPxBQ==&sigh=rs$AOn4CLAXobPyrylgm8IEvjlZzqYTiPe1Ow",
|
url_template: "https://i.ytimg.com/sb/pPvd8UxmSbQ/storyboard3_L0/default.jpg?sqp=-oaymwENSDfyq4qpAwVwAcABBqLzl_8DBgjf8LPxBQ==&sigh=rs$AOn4CLAXobPyrylgm8IEvjlZzqYTiPe1Ow",
|
||||||
|
|
|
||||||
|
|
@ -34,12 +34,11 @@ VideoPlayer(
|
||||||
),
|
),
|
||||||
video_streams: [
|
video_streams: [
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=WEB_REMIX&clen=11439331&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=18&lmt=1580005476071743&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=mAEwZepBJSQPkQ&ns=orl5qWACo00YlHHyQZ7a6awH&pl=37&ratebypass=yes&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhANfXubbDcXpc25m3F5xQ97ygJRjrTvm8ruVxgnxgFAUBAiAEnj_3KacDNTTLUk-6ZEbL-52zxmBLU1iuTEDx0NvJzA%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cratebypass%2Cdur%2Clmt&spc=lT-Khox4YuJQ2wmH79zYALRvsWTPCUc&txp=2211222&vprv=1"),
|
url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=WEB_REMIX&clen=11439331&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=18&lmt=1580005476071743&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=mAEwZepBJSQPkQ&ns=orl5qWACo00YlHHyQZ7a6awH&pl=37&ratebypass=yes&rbqsm=fr&requiressl=yes&sig=AOq0QJ8wRQIhANfXubbDcXpc25m3F5xQ97ygJRjrTvm8ruVxgnxgFAUBAiAEnj_3KacDNTTLUk-6ZEbL-52zxmBLU1iuTEDx0NvJzA%3D%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cratebypass%2Cdur%2Clmt&spc=lT-Khox4YuJQ2wmH79zYALRvsWTPCUc&txp=2211222&vprv=1",
|
||||||
itag: 18,
|
itag: 18,
|
||||||
bitrate: 561339,
|
bitrate: 561339,
|
||||||
average_bitrate: 561109,
|
average_bitrate: 561109,
|
||||||
size: Some(11439331),
|
size: Some(11439331),
|
||||||
last_modified: Some(1580005476071743),
|
|
||||||
index_range: None,
|
index_range: None,
|
||||||
init_range: None,
|
init_range: None,
|
||||||
duration_ms: Some(163096),
|
duration_ms: Some(163096),
|
||||||
|
|
@ -51,19 +50,17 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"avc1.42001E, mp4a.40.2\"",
|
mime: "video/mp4; codecs=\"avc1.42001E, mp4a.40.2\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: avc1,
|
codec: avc1,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
video_only_streams: [
|
video_only_streams: [
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=WEB_REMIX&clen=1484736&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=278&keepalive=yes&lmt=1608509388295661&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=AOq0QJ8wRAIgEQ0-VVvo41T4l2X26p5zP8Wo8sXOPmBWvCf2OW33ilgCIH2bIFOYgpmsml7FvRQj_SoLzPh7yBvmLZ61Kgsj4FUe&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"),
|
url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=WEB_REMIX&clen=1484736&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=278&keepalive=yes&lmt=1608509388295661&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=AOq0QJ8wRAIgEQ0-VVvo41T4l2X26p5zP8Wo8sXOPmBWvCf2OW33ilgCIH2bIFOYgpmsml7FvRQj_SoLzPh7yBvmLZ61Kgsj4FUe&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",
|
||||||
itag: 278,
|
itag: 278,
|
||||||
bitrate: 87458,
|
bitrate: 87458,
|
||||||
average_bitrate: 72857,
|
average_bitrate: 72857,
|
||||||
size: Some(1484736),
|
size: Some(1484736),
|
||||||
last_modified: Some(1608509388295661),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 218,
|
start: 218,
|
||||||
end: 751,
|
end: 751,
|
||||||
|
|
@ -81,17 +78,15 @@ VideoPlayer(
|
||||||
mime: "video/webm; codecs=\"vp9\"",
|
mime: "video/webm; codecs=\"vp9\"",
|
||||||
format: webm,
|
format: webm,
|
||||||
codec: vp9,
|
codec: vp9,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 242,
|
itag: 242,
|
||||||
bitrate: 184064,
|
bitrate: 184064,
|
||||||
average_bitrate: 145902,
|
average_bitrate: 145902,
|
||||||
size: Some(2973283),
|
size: Some(2973283),
|
||||||
last_modified: Some(1608509388282028),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 219,
|
start: 219,
|
||||||
end: 753,
|
end: 753,
|
||||||
|
|
@ -109,17 +104,15 @@ VideoPlayer(
|
||||||
mime: "video/webm; codecs=\"vp9\"",
|
mime: "video/webm; codecs=\"vp9\"",
|
||||||
format: webm,
|
format: webm,
|
||||||
codec: vp9,
|
codec: vp9,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 134,
|
itag: 134,
|
||||||
bitrate: 538143,
|
bitrate: 538143,
|
||||||
average_bitrate: 383195,
|
average_bitrate: 383195,
|
||||||
size: Some(7808990),
|
size: Some(7808990),
|
||||||
last_modified: Some(1580005649163759),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 740,
|
start: 740,
|
||||||
end: 1155,
|
end: 1155,
|
||||||
|
|
@ -137,17 +130,15 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"avc1.4d401e\"",
|
mime: "video/mp4; codecs=\"avc1.4d401e\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: avc1,
|
codec: avc1,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 243,
|
itag: 243,
|
||||||
bitrate: 319085,
|
bitrate: 319085,
|
||||||
average_bitrate: 253673,
|
average_bitrate: 253673,
|
||||||
size: Some(5169510),
|
size: Some(5169510),
|
||||||
last_modified: Some(1608509388282405),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 220,
|
start: 220,
|
||||||
end: 754,
|
end: 754,
|
||||||
|
|
@ -165,17 +156,15 @@ VideoPlayer(
|
||||||
mime: "video/webm; codecs=\"vp9\"",
|
mime: "video/webm; codecs=\"vp9\"",
|
||||||
format: webm,
|
format: webm,
|
||||||
codec: vp9,
|
codec: vp9,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 244,
|
itag: 244,
|
||||||
bitrate: 539056,
|
bitrate: 539056,
|
||||||
average_bitrate: 436270,
|
average_bitrate: 436270,
|
||||||
size: Some(8890590),
|
size: Some(8890590),
|
||||||
last_modified: Some(1608509388284632),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 220,
|
start: 220,
|
||||||
end: 754,
|
end: 754,
|
||||||
|
|
@ -193,17 +182,15 @@ VideoPlayer(
|
||||||
mime: "video/webm; codecs=\"vp9\"",
|
mime: "video/webm; codecs=\"vp9\"",
|
||||||
format: webm,
|
format: webm,
|
||||||
codec: vp9,
|
codec: vp9,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 247,
|
itag: 247,
|
||||||
bitrate: 982813,
|
bitrate: 982813,
|
||||||
average_bitrate: 812006,
|
average_bitrate: 812006,
|
||||||
size: Some(16547577),
|
size: Some(16547577),
|
||||||
last_modified: Some(1608509388326822),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 220,
|
start: 220,
|
||||||
end: 754,
|
end: 754,
|
||||||
|
|
@ -221,17 +208,15 @@ VideoPlayer(
|
||||||
mime: "video/webm; codecs=\"vp9\"",
|
mime: "video/webm; codecs=\"vp9\"",
|
||||||
format: webm,
|
format: webm,
|
||||||
codec: vp9,
|
codec: vp9,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 302,
|
itag: 302,
|
||||||
bitrate: 2354009,
|
bitrate: 2354009,
|
||||||
average_bitrate: 1764202,
|
average_bitrate: 1764202,
|
||||||
size: Some(35955780),
|
size: Some(35955780),
|
||||||
last_modified: Some(1608509234088626),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 219,
|
start: 219,
|
||||||
end: 771,
|
end: 771,
|
||||||
|
|
@ -249,17 +234,15 @@ VideoPlayer(
|
||||||
mime: "video/webm; codecs=\"vp9\"",
|
mime: "video/webm; codecs=\"vp9\"",
|
||||||
format: webm,
|
format: webm,
|
||||||
codec: vp9,
|
codec: vp9,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 299,
|
itag: 299,
|
||||||
bitrate: 4190323,
|
bitrate: 4190323,
|
||||||
average_bitrate: 3208919,
|
average_bitrate: 3208919,
|
||||||
size: Some(65400181),
|
size: Some(65400181),
|
||||||
last_modified: Some(1580005649161486),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 740,
|
start: 740,
|
||||||
end: 1155,
|
end: 1155,
|
||||||
|
|
@ -277,17 +260,15 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"avc1.64002a\"",
|
mime: "video/mp4; codecs=\"avc1.64002a\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: avc1,
|
codec: avc1,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 303,
|
itag: 303,
|
||||||
bitrate: 3832648,
|
bitrate: 3832648,
|
||||||
average_bitrate: 3090839,
|
average_bitrate: 3090839,
|
||||||
size: Some(62993617),
|
size: Some(62993617),
|
||||||
last_modified: Some(1608509371758331),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 219,
|
start: 219,
|
||||||
end: 776,
|
end: 776,
|
||||||
|
|
@ -305,19 +286,17 @@ VideoPlayer(
|
||||||
mime: "video/webm; codecs=\"vp9\"",
|
mime: "video/webm; codecs=\"vp9\"",
|
||||||
format: webm,
|
format: webm,
|
||||||
codec: vp9,
|
codec: vp9,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
audio_streams: [
|
audio_streams: [
|
||||||
AudioStream(
|
AudioStream(
|
||||||
url: Some("https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=WEB_REMIX&clen=934449&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=249&keepalive=yes&lmt=1608509101590706&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=AOq0QJ8wRgIhAMUfr2X-eQJt1abn-IK1H4d5DtvKZuBaETo4opNi6mqCAiEAvBmrmuaoFjB1CJ2Kug87w-Uv6OCdxyrJ_3HIaHX9KBI%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"),
|
url: "https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=WEB_REMIX&clen=934449&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=249&keepalive=yes&lmt=1608509101590706&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=AOq0QJ8wRgIhAMUfr2X-eQJt1abn-IK1H4d5DtvKZuBaETo4opNi6mqCAiEAvBmrmuaoFjB1CJ2Kug87w-Uv6OCdxyrJ_3HIaHX9KBI%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",
|
||||||
itag: 249,
|
itag: 249,
|
||||||
bitrate: 53039,
|
bitrate: 53039,
|
||||||
average_bitrate: 45845,
|
average_bitrate: 45845,
|
||||||
size: 934449,
|
size: 934449,
|
||||||
last_modified: Some(1608509101590706),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 266,
|
start: 266,
|
||||||
end: 551,
|
end: 551,
|
||||||
|
|
@ -332,19 +311,16 @@ VideoPlayer(
|
||||||
codec: opus,
|
codec: opus,
|
||||||
channels: Some(2),
|
channels: Some(2),
|
||||||
loudness_db: Some(0.0006532669),
|
loudness_db: Some(0.0006532669),
|
||||||
is_drc: false,
|
|
||||||
track: None,
|
track: None,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
AudioStream(
|
AudioStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 250,
|
itag: 250,
|
||||||
bitrate: 71268,
|
bitrate: 71268,
|
||||||
average_bitrate: 61123,
|
average_bitrate: 61123,
|
||||||
size: 1245866,
|
size: 1245866,
|
||||||
last_modified: Some(1608509101111096),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 266,
|
start: 266,
|
||||||
end: 551,
|
end: 551,
|
||||||
|
|
@ -359,19 +335,16 @@ VideoPlayer(
|
||||||
codec: opus,
|
codec: opus,
|
||||||
channels: Some(2),
|
channels: Some(2),
|
||||||
loudness_db: Some(0.0006532669),
|
loudness_db: Some(0.0006532669),
|
||||||
is_drc: false,
|
|
||||||
track: None,
|
track: None,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
AudioStream(
|
AudioStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 140,
|
itag: 140,
|
||||||
bitrate: 130268,
|
bitrate: 130268,
|
||||||
average_bitrate: 129508,
|
average_bitrate: 129508,
|
||||||
size: 2640283,
|
size: 2640283,
|
||||||
last_modified: Some(1580005579712232),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 632,
|
start: 632,
|
||||||
end: 867,
|
end: 867,
|
||||||
|
|
@ -386,19 +359,16 @@ VideoPlayer(
|
||||||
codec: mp4a,
|
codec: mp4a,
|
||||||
channels: Some(2),
|
channels: Some(2),
|
||||||
loudness_db: Some(-0.003446579),
|
loudness_db: Some(-0.003446579),
|
||||||
is_drc: false,
|
|
||||||
track: None,
|
track: None,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
AudioStream(
|
AudioStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 251,
|
itag: 251,
|
||||||
bitrate: 140633,
|
bitrate: 140633,
|
||||||
average_bitrate: 121491,
|
average_bitrate: 121491,
|
||||||
size: 2476314,
|
size: 2476314,
|
||||||
last_modified: Some(1608509101894140),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 266,
|
start: 266,
|
||||||
end: 551,
|
end: 551,
|
||||||
|
|
@ -413,9 +383,7 @@ VideoPlayer(
|
||||||
codec: opus,
|
codec: opus,
|
||||||
channels: Some(2),
|
channels: Some(2),
|
||||||
loudness_db: Some(0.0006532669),
|
loudness_db: Some(0.0006532669),
|
||||||
is_drc: false,
|
|
||||||
track: None,
|
track: None,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
|
|
@ -432,9 +400,6 @@ VideoPlayer(
|
||||||
valid_until: "[date]",
|
valid_until: "[date]",
|
||||||
hls_manifest_url: None,
|
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"),
|
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"),
|
||||||
abr_streaming_url: None,
|
|
||||||
abr_ustreamer_config: None,
|
|
||||||
po_token: None,
|
|
||||||
preview_frames: [
|
preview_frames: [
|
||||||
Frameset(
|
Frameset(
|
||||||
url_template: "https://i.ytimg.com/sb/pPvd8UxmSbQ/storyboard3_L0/default.jpg?sqp=-oaymwENSDfyq4qpAwVwAcABBqLzl_8DBgjf8LPxBQ==&sigh=rs$AOn4CLAXobPyrylgm8IEvjlZzqYTiPe1Ow",
|
url_template: "https://i.ytimg.com/sb/pPvd8UxmSbQ/storyboard3_L0/default.jpg?sqp=-oaymwENSDfyq4qpAwVwAcABBqLzl_8DBgjf8LPxBQ==&sigh=rs$AOn4CLAXobPyrylgm8IEvjlZzqYTiPe1Ow",
|
||||||
|
|
|
||||||
|
|
@ -57,12 +57,11 @@ VideoPlayer(
|
||||||
video_streams: [],
|
video_streams: [],
|
||||||
video_only_streams: [
|
video_only_streams: [
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("https://rr4---sn-h0jelnez.googlevideo.com/videoplayback?c=IOS&clen=7808990&dur=163.029&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=134&keepalive=yes&lmt=1580005649163759&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=AOq0QJ8wRgIhAMFQo_RyC3Ud44QVGtKckMcuq5UQ3J7CgYsYl0bXaWMUAiEAhMi1h0ru4zoIGX0jBZT23dozvtrhf_m61p4qbAfEhZo%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"),
|
url: "https://rr4---sn-h0jelnez.googlevideo.com/videoplayback?c=IOS&clen=7808990&dur=163.029&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=134&keepalive=yes&lmt=1580005649163759&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=AOq0QJ8wRgIhAMFQo_RyC3Ud44QVGtKckMcuq5UQ3J7CgYsYl0bXaWMUAiEAhMi1h0ru4zoIGX0jBZT23dozvtrhf_m61p4qbAfEhZo%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",
|
||||||
itag: 134,
|
itag: 134,
|
||||||
bitrate: 538143,
|
bitrate: 538143,
|
||||||
average_bitrate: 383195,
|
average_bitrate: 383195,
|
||||||
size: Some(7808990),
|
size: Some(7808990),
|
||||||
last_modified: Some(1580005649163759),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 740,
|
start: 740,
|
||||||
end: 1155,
|
end: 1155,
|
||||||
|
|
@ -80,17 +79,15 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"avc1.4D401E\"",
|
mime: "video/mp4; codecs=\"avc1.4D401E\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: avc1,
|
codec: avc1,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 299,
|
itag: 299,
|
||||||
bitrate: 4190323,
|
bitrate: 4190323,
|
||||||
average_bitrate: 3208919,
|
average_bitrate: 3208919,
|
||||||
size: Some(65400181),
|
size: Some(65400181),
|
||||||
last_modified: Some(1580005649161486),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 740,
|
start: 740,
|
||||||
end: 1155,
|
end: 1155,
|
||||||
|
|
@ -108,19 +105,17 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"avc1.64002A\"",
|
mime: "video/mp4; codecs=\"avc1.64002A\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: avc1,
|
codec: avc1,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
audio_streams: [
|
audio_streams: [
|
||||||
AudioStream(
|
AudioStream(
|
||||||
url: Some("https://rr4---sn-h0jelnez.googlevideo.com/videoplayback?c=IOS&clen=995840&dur=163.189&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=139&keepalive=yes&lmt=1580005582214385&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=AOq0QJ8wRgIhAMXDvZZznm1LafIKh_pdGf-TjY5Kz-F9N67o6gXenKouAiEA5qji45i5ABmAytPDOORjw0OaBmwX88S7bgUWcmF-_LU%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"),
|
url: "https://rr4---sn-h0jelnez.googlevideo.com/videoplayback?c=IOS&clen=995840&dur=163.189&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=139&keepalive=yes&lmt=1580005582214385&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=AOq0QJ8wRgIhAMXDvZZznm1LafIKh_pdGf-TjY5Kz-F9N67o6gXenKouAiEA5qji45i5ABmAytPDOORjw0OaBmwX88S7bgUWcmF-_LU%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",
|
||||||
itag: 139,
|
itag: 139,
|
||||||
bitrate: 49724,
|
bitrate: 49724,
|
||||||
average_bitrate: 48818,
|
average_bitrate: 48818,
|
||||||
size: 995840,
|
size: 995840,
|
||||||
last_modified: Some(1580005582214385),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 641,
|
start: 641,
|
||||||
end: 876,
|
end: 876,
|
||||||
|
|
@ -135,19 +130,16 @@ VideoPlayer(
|
||||||
codec: mp4a,
|
codec: mp4a,
|
||||||
channels: Some(2),
|
channels: Some(2),
|
||||||
loudness_db: Some(5.2159004),
|
loudness_db: Some(5.2159004),
|
||||||
is_drc: false,
|
|
||||||
track: None,
|
track: None,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
AudioStream(
|
AudioStream(
|
||||||
url: Some("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"),
|
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",
|
||||||
itag: 140,
|
itag: 140,
|
||||||
bitrate: 130268,
|
bitrate: 130268,
|
||||||
average_bitrate: 129508,
|
average_bitrate: 129508,
|
||||||
size: 2640283,
|
size: 2640283,
|
||||||
last_modified: Some(1580005579712232),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 632,
|
start: 632,
|
||||||
end: 867,
|
end: 867,
|
||||||
|
|
@ -162,9 +154,7 @@ VideoPlayer(
|
||||||
codec: mp4a,
|
codec: mp4a,
|
||||||
channels: Some(2),
|
channels: Some(2),
|
||||||
loudness_db: Some(5.2159004),
|
loudness_db: Some(5.2159004),
|
||||||
is_drc: false,
|
|
||||||
track: None,
|
track: None,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
|
|
@ -181,9 +171,6 @@ VideoPlayer(
|
||||||
valid_until: "[date]",
|
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"),
|
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,
|
dash_manifest_url: None,
|
||||||
abr_streaming_url: Some("https://rr4---sn-h0jelnez.googlevideo.com/videoplayback?c=IOS&ei=q1jpYq-xHs7NgQev0bfwAQ&expire=1659481355&fexp=24001373%2C24007246&fvip=5&id=o-ANNg3iPHI56jhLSlPQk4pi4mdub5iAby0hmJBVrtiJgY&initcwndbps=1513750&ip=2003%3Ade%3Aaf0e%3A2f00%3Ade47%3A297%3Aa6db%3A774e&keepalive=yes&lsig=AG3C_xAwRgIhAK6T5ehnFBsc0FOurPHH1ME_vGcVysI-g5jrtEsvX64sAiEArY-iAvQCsc4R8yg8dvMdpnuHPIcPMCnRgyh8E527HF0%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mm=31%2C29&mn=sn-h0jelnez%2Csn-h0jeenek&ms=au%2Crdu&mt=1659459429&mv=m&mvi=4&pl=37&rbqsm=fr&requiressl=yes&sabr=1&sig=AOq0QJ8wRgIhAJCJpb5gE12jQc2qOUy-Y61vEHeiAP_F78weNCzj8VklAiEAwR2PK52CmwsVHfRVk75OOYOxwYKNW2g1eDBw3COBP9w%3D&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Csvpuc%2Csabr&svpuc=1"),
|
|
||||||
abr_ustreamer_config: Some("CpYECp0DCAAQgAUY6AIl-n6qPi0AAIA_NT0Klz9oAXI6ChJtZnMyX2NtZnNfdjNfMV8wNDMSIAoeCgxkZXZpY2VfbW9kZWwSDgoMCgppcGhvbmUxNCw1GAAgAXIWChJtZnMyX2NtZnNfdjNfMV8wNDMYAHjoAoABAagBAbUB9ijcP6AC6AK4AgDaAmEQsOoBGKhGIKCcASjYNjCYdXCIJ4AB9AO4AQHgAQP4AQGQAgGYAgygAgGoAgGwAgG4AgHAAgHIAgHQAgLgAgHoAgLwAgGAAwKIA4gnmAMBqAMIwAMByAMB2AMB-LWR5QwB-gIvCAwQGBgyIDItAABwQjUAAIxCQAFIAVAKWAplAACAQGjAcM0BAACAP_ABAegC0AWCAwCQAwGgAwGoAwGwAwPQAwHYAwHgA5BOuAQBygRWChUI4NQDEJh1GOgHJQAAAAAoADAAQAEQ4NQDGNAPKjYKCnRiX2Nvc3RfNTAgDykAAAAAAAAAAEgBUAFdZmbmPmXNzEw-bZqZGT91mpkZP3jAqQeSAQDoBAHwBAH4BAGQBQGgBQEYASABMgwIqwIQjrrY25ug5wIyDAiqAhCOutjbm6DnAjIMCIcBEI662NuboOcCMgwIhgEQ78vY25ug5wIyDAiFARCOutjbm6DnAjIMCKABEI662NuboOcCMgwIiwEQ8aniu5ug5wIyDAiMARDozcm6m6DnAjoAEkwA8tjvwTBFAiAyo6mtW-M8Y8noBO_6Y3RmNo5U2LntCwiKcI2yye_zRgIhAK27d1UbqzhtkQhminIBAajD70ONeAQNwjt7VRpJRDimGgJlaQ=="),
|
|
||||||
po_token: None,
|
|
||||||
preview_frames: [
|
preview_frames: [
|
||||||
Frameset(
|
Frameset(
|
||||||
url_template: "https://i.ytimg.com/sb/pPvd8UxmSbQ/storyboard3_L0/default.jpg?sqp=-oaymwGbA0g48quKqQOSA4gBAZUBAAAEQpgBMqABPKgBBLABELABDbABDLABELABFbABH7ABJrABLbABDrABDrABD7ABErABF7ABK7ABLLABKbABD7ABDrABELABFbABH7ABKrABMrABKbABD7ABEbABFLABGLABJrABPbABOLABLbABEbABFLABHrABKrABMbABS7ABR7ABNrABFbABHLABKbABLrABObABR7ABTbABP7ABJbABLrABN7ABPbABR7ABUrABUbABRbABM7ABQLABQrABQ7ABTLABRLABRrABQ7gBEbgBEbgBFbgBI7gBRLgBQ7gBQ7gBQ7gBEbgBE7gBFrgBL7gBQ7gBQ7gBQ7gBQ7gBFbgBFrgBKbgBQ7gBQ7gBQ7gBQ7gBQ7gBI7gBL7gBQ7gBQ7gBQ7gBQ7gBQ7gBQ7gBRLgBQ7gBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQ7gBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQrgBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQrgBQrgBQ7gBQ7gBQ7gBQrgBQrgBQrgBQrgBQqLzl_8DBgjf8LPxBQ==&sigh=rs$AOn4CLCsCT8Lprh2S0ptmCRsWH7VtDl3YQ",
|
url_template: "https://i.ytimg.com/sb/pPvd8UxmSbQ/storyboard3_L0/default.jpg?sqp=-oaymwGbA0g48quKqQOSA4gBAZUBAAAEQpgBMqABPKgBBLABELABDbABDLABELABFbABH7ABJrABLbABDrABDrABD7ABErABF7ABK7ABLLABKbABD7ABDrABELABFbABH7ABKrABMrABKbABD7ABEbABFLABGLABJrABPbABOLABLbABEbABFLABHrABKrABMbABS7ABR7ABNrABFbABHLABKbABLrABObABR7ABTbABP7ABJbABLrABN7ABPbABR7ABUrABUbABRbABM7ABQLABQrABQ7ABTLABRLABRrABQ7gBEbgBEbgBFbgBI7gBRLgBQ7gBQ7gBQ7gBEbgBE7gBFrgBL7gBQ7gBQ7gBQ7gBQ7gBFbgBFrgBKbgBQ7gBQ7gBQ7gBQ7gBQ7gBI7gBL7gBQ7gBQ7gBQ7gBQ7gBQ7gBQ7gBRLgBQ7gBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQ7gBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQrgBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQrgBQrgBQ7gBQ7gBQ7gBQrgBQrgBQrgBQrgBQqLzl_8DBgjf8LPxBQ==&sigh=rs$AOn4CLCsCT8Lprh2S0ptmCRsWH7VtDl3YQ",
|
||||||
|
|
|
||||||
|
|
@ -24,12 +24,11 @@ VideoPlayer(
|
||||||
),
|
),
|
||||||
video_streams: [
|
video_streams: [
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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,
|
itag: 18,
|
||||||
bitrate: 503574,
|
bitrate: 503574,
|
||||||
average_bitrate: 503367,
|
average_bitrate: 503367,
|
||||||
size: Some(10262148),
|
size: Some(10262148),
|
||||||
last_modified: Some(1700885551970466),
|
|
||||||
index_range: None,
|
index_range: None,
|
||||||
init_range: None,
|
init_range: None,
|
||||||
duration_ms: Some(163096),
|
duration_ms: Some(163096),
|
||||||
|
|
@ -41,19 +40,17 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"avc1.42001E, mp4a.40.2\"",
|
mime: "video/mp4; codecs=\"avc1.42001E, mp4a.40.2\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: avc1,
|
codec: avc1,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
video_only_streams: [
|
video_only_streams: [
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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,
|
itag: 160,
|
||||||
bitrate: 114816,
|
bitrate: 114816,
|
||||||
average_bitrate: 111551,
|
average_bitrate: 111551,
|
||||||
size: Some(2273274),
|
size: Some(2273274),
|
||||||
last_modified: Some(1705967288821438),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 738,
|
start: 738,
|
||||||
end: 1165,
|
end: 1165,
|
||||||
|
|
@ -71,17 +68,15 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"avc1.4d400c\"",
|
mime: "video/mp4; codecs=\"avc1.4d400c\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: avc1,
|
codec: avc1,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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,
|
itag: 278,
|
||||||
bitrate: 70630,
|
bitrate: 70630,
|
||||||
average_bitrate: 56524,
|
average_bitrate: 56524,
|
||||||
size: Some(1151892),
|
size: Some(1151892),
|
||||||
last_modified: Some(1705966620402771),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 218,
|
start: 218,
|
||||||
end: 767,
|
end: 767,
|
||||||
|
|
@ -99,17 +94,15 @@ VideoPlayer(
|
||||||
mime: "video/webm; codecs=\"vp9\"",
|
mime: "video/webm; codecs=\"vp9\"",
|
||||||
format: webm,
|
format: webm,
|
||||||
codec: vp9,
|
codec: vp9,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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,
|
itag: 133,
|
||||||
bitrate: 257417,
|
bitrate: 257417,
|
||||||
average_bitrate: 246656,
|
average_bitrate: 246656,
|
||||||
size: Some(5026513),
|
size: Some(5026513),
|
||||||
last_modified: Some(1705967298859029),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 739,
|
start: 739,
|
||||||
end: 1166,
|
end: 1166,
|
||||||
|
|
@ -127,17 +120,15 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"avc1.4d4015\"",
|
mime: "video/mp4; codecs=\"avc1.4d4015\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: avc1,
|
codec: avc1,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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,
|
itag: 242,
|
||||||
bitrate: 149589,
|
bitrate: 149589,
|
||||||
average_bitrate: 124706,
|
average_bitrate: 124706,
|
||||||
size: Some(2541351),
|
size: Some(2541351),
|
||||||
last_modified: Some(1705966614837727),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 219,
|
start: 219,
|
||||||
end: 768,
|
end: 768,
|
||||||
|
|
@ -155,17 +146,15 @@ VideoPlayer(
|
||||||
mime: "video/webm; codecs=\"vp9\"",
|
mime: "video/webm; codecs=\"vp9\"",
|
||||||
format: webm,
|
format: webm,
|
||||||
codec: vp9,
|
codec: vp9,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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,
|
itag: 134,
|
||||||
bitrate: 537902,
|
bitrate: 537902,
|
||||||
average_bitrate: 383290,
|
average_bitrate: 383290,
|
||||||
size: Some(7810925),
|
size: Some(7810925),
|
||||||
last_modified: Some(1705967286812435),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 740,
|
start: 740,
|
||||||
end: 1167,
|
end: 1167,
|
||||||
|
|
@ -183,17 +172,15 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"avc1.4d401e\"",
|
mime: "video/mp4; codecs=\"avc1.4d401e\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: avc1,
|
codec: avc1,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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,
|
itag: 243,
|
||||||
bitrate: 248858,
|
bitrate: 248858,
|
||||||
average_bitrate: 205556,
|
average_bitrate: 205556,
|
||||||
size: Some(4188954),
|
size: Some(4188954),
|
||||||
last_modified: Some(1705966624121874),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 220,
|
start: 220,
|
||||||
end: 770,
|
end: 770,
|
||||||
|
|
@ -211,17 +198,15 @@ VideoPlayer(
|
||||||
mime: "video/webm; codecs=\"vp9\"",
|
mime: "video/webm; codecs=\"vp9\"",
|
||||||
format: webm,
|
format: webm,
|
||||||
codec: vp9,
|
codec: vp9,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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,
|
itag: 135,
|
||||||
bitrate: 978945,
|
bitrate: 978945,
|
||||||
average_bitrate: 722499,
|
average_bitrate: 722499,
|
||||||
size: Some(14723538),
|
size: Some(14723538),
|
||||||
last_modified: Some(1705967282545273),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 740,
|
start: 740,
|
||||||
end: 1167,
|
end: 1167,
|
||||||
|
|
@ -239,17 +224,15 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"avc1.4d401f\"",
|
mime: "video/mp4; codecs=\"avc1.4d401f\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: avc1,
|
codec: avc1,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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,
|
itag: 244,
|
||||||
bitrate: 467884,
|
bitrate: 467884,
|
||||||
average_bitrate: 382209,
|
average_bitrate: 382209,
|
||||||
size: Some(7788899),
|
size: Some(7788899),
|
||||||
last_modified: Some(1705966622098793),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 220,
|
start: 220,
|
||||||
end: 770,
|
end: 770,
|
||||||
|
|
@ -267,17 +250,15 @@ VideoPlayer(
|
||||||
mime: "video/webm; codecs=\"vp9\"",
|
mime: "video/webm; codecs=\"vp9\"",
|
||||||
format: webm,
|
format: webm,
|
||||||
codec: vp9,
|
codec: vp9,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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,
|
itag: 136,
|
||||||
bitrate: 1560439,
|
bitrate: 1560439,
|
||||||
average_bitrate: 1207947,
|
average_bitrate: 1207947,
|
||||||
size: Some(24616305),
|
size: Some(24616305),
|
||||||
last_modified: Some(1705967307531372),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 739,
|
start: 739,
|
||||||
end: 1166,
|
end: 1166,
|
||||||
|
|
@ -295,17 +276,15 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"avc1.4d401f\"",
|
mime: "video/mp4; codecs=\"avc1.4d401f\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: avc1,
|
codec: avc1,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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,
|
itag: 247,
|
||||||
bitrate: 929607,
|
bitrate: 929607,
|
||||||
average_bitrate: 722521,
|
average_bitrate: 722521,
|
||||||
size: Some(14723992),
|
size: Some(14723992),
|
||||||
last_modified: Some(1705966613897741),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 220,
|
start: 220,
|
||||||
end: 770,
|
end: 770,
|
||||||
|
|
@ -323,17 +302,15 @@ VideoPlayer(
|
||||||
mime: "video/webm; codecs=\"vp9\"",
|
mime: "video/webm; codecs=\"vp9\"",
|
||||||
format: webm,
|
format: webm,
|
||||||
codec: vp9,
|
codec: vp9,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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,
|
itag: 298,
|
||||||
bitrate: 2188961,
|
bitrate: 2188961,
|
||||||
average_bitrate: 1694973,
|
average_bitrate: 1694973,
|
||||||
size: Some(34544823),
|
size: Some(34544823),
|
||||||
last_modified: Some(1705967092637061),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 739,
|
start: 739,
|
||||||
end: 1166,
|
end: 1166,
|
||||||
|
|
@ -351,17 +328,15 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"avc1.4d4020\"",
|
mime: "video/mp4; codecs=\"avc1.4d4020\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: avc1,
|
codec: avc1,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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,
|
itag: 302,
|
||||||
bitrate: 2250391,
|
bitrate: 2250391,
|
||||||
average_bitrate: 1482051,
|
average_bitrate: 1482051,
|
||||||
size: Some(30205331),
|
size: Some(30205331),
|
||||||
last_modified: Some(1705966545733919),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 219,
|
start: 219,
|
||||||
end: 786,
|
end: 786,
|
||||||
|
|
@ -379,17 +354,15 @@ VideoPlayer(
|
||||||
mime: "video/webm; codecs=\"vp9\"",
|
mime: "video/webm; codecs=\"vp9\"",
|
||||||
format: webm,
|
format: webm,
|
||||||
codec: vp9,
|
codec: vp9,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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,
|
itag: 299,
|
||||||
bitrate: 3926810,
|
bitrate: 3926810,
|
||||||
average_bitrate: 3044926,
|
average_bitrate: 3044926,
|
||||||
size: Some(62057888),
|
size: Some(62057888),
|
||||||
last_modified: Some(1705967093743693),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 740,
|
start: 740,
|
||||||
end: 1167,
|
end: 1167,
|
||||||
|
|
@ -407,17 +380,15 @@ VideoPlayer(
|
||||||
mime: "video/mp4; codecs=\"avc1.64002a\"",
|
mime: "video/mp4; codecs=\"avc1.64002a\"",
|
||||||
format: mp4,
|
format: mp4,
|
||||||
codec: avc1,
|
codec: avc1,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
VideoStream(
|
VideoStream(
|
||||||
url: Some("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"),
|
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,
|
itag: 303,
|
||||||
bitrate: 3473307,
|
bitrate: 3473307,
|
||||||
average_bitrate: 2713348,
|
average_bitrate: 2713348,
|
||||||
size: Some(55300085),
|
size: Some(55300085),
|
||||||
last_modified: Some(1705966651743358),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 219,
|
start: 219,
|
||||||
end: 792,
|
end: 792,
|
||||||
|
|
@ -435,19 +406,17 @@ VideoPlayer(
|
||||||
mime: "video/webm; codecs=\"vp9\"",
|
mime: "video/webm; codecs=\"vp9\"",
|
||||||
format: webm,
|
format: webm,
|
||||||
codec: vp9,
|
codec: vp9,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
audio_streams: [
|
audio_streams: [
|
||||||
AudioStream(
|
AudioStream(
|
||||||
url: Some("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"),
|
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,
|
itag: 249,
|
||||||
bitrate: 53073,
|
bitrate: 53073,
|
||||||
average_bitrate: 45860,
|
average_bitrate: 45860,
|
||||||
size: 934750,
|
size: 934750,
|
||||||
last_modified: Some(1714877357172339),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 266,
|
start: 266,
|
||||||
end: 551,
|
end: 551,
|
||||||
|
|
@ -462,19 +431,16 @@ VideoPlayer(
|
||||||
codec: opus,
|
codec: opus,
|
||||||
channels: Some(2),
|
channels: Some(2),
|
||||||
loudness_db: Some(5.21),
|
loudness_db: Some(5.21),
|
||||||
is_drc: false,
|
|
||||||
track: None,
|
track: None,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
AudioStream(
|
AudioStream(
|
||||||
url: Some("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"),
|
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,
|
itag: 250,
|
||||||
bitrate: 71197,
|
bitrate: 71197,
|
||||||
average_bitrate: 61109,
|
average_bitrate: 61109,
|
||||||
size: 1245582,
|
size: 1245582,
|
||||||
last_modified: Some(1714877466693058),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 266,
|
start: 266,
|
||||||
end: 551,
|
end: 551,
|
||||||
|
|
@ -489,19 +455,16 @@ VideoPlayer(
|
||||||
codec: opus,
|
codec: opus,
|
||||||
channels: Some(2),
|
channels: Some(2),
|
||||||
loudness_db: Some(5.21),
|
loudness_db: Some(5.21),
|
||||||
is_drc: false,
|
|
||||||
track: None,
|
track: None,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
AudioStream(
|
AudioStream(
|
||||||
url: Some("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"),
|
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,
|
itag: 140,
|
||||||
bitrate: 130268,
|
bitrate: 130268,
|
||||||
average_bitrate: 129508,
|
average_bitrate: 129508,
|
||||||
size: 2640283,
|
size: 2640283,
|
||||||
last_modified: Some(1705966477945761),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 632,
|
start: 632,
|
||||||
end: 867,
|
end: 867,
|
||||||
|
|
@ -516,19 +479,16 @@ VideoPlayer(
|
||||||
codec: mp4a,
|
codec: mp4a,
|
||||||
channels: Some(2),
|
channels: Some(2),
|
||||||
loudness_db: Some(5.2200003),
|
loudness_db: Some(5.2200003),
|
||||||
is_drc: false,
|
|
||||||
track: None,
|
track: None,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
AudioStream(
|
AudioStream(
|
||||||
url: Some("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"),
|
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,
|
itag: 251,
|
||||||
bitrate: 140833,
|
bitrate: 140833,
|
||||||
average_bitrate: 121691,
|
average_bitrate: 121691,
|
||||||
size: 2480393,
|
size: 2480393,
|
||||||
last_modified: Some(1714877359450110),
|
|
||||||
index_range: Some(Range(
|
index_range: Some(Range(
|
||||||
start: 266,
|
start: 266,
|
||||||
end: 551,
|
end: 551,
|
||||||
|
|
@ -543,9 +503,7 @@ VideoPlayer(
|
||||||
codec: opus,
|
codec: opus,
|
||||||
channels: Some(2),
|
channels: Some(2),
|
||||||
loudness_db: Some(5.21),
|
loudness_db: Some(5.21),
|
||||||
is_drc: false,
|
|
||||||
track: None,
|
track: None,
|
||||||
xtags: None,
|
|
||||||
drm_track_type: None,
|
drm_track_type: None,
|
||||||
drm_systems: [],
|
drm_systems: [],
|
||||||
),
|
),
|
||||||
|
|
@ -562,9 +520,6 @@ VideoPlayer(
|
||||||
valid_until: "[date]",
|
valid_until: "[date]",
|
||||||
hls_manifest_url: None,
|
hls_manifest_url: None,
|
||||||
dash_manifest_url: None,
|
dash_manifest_url: None,
|
||||||
abr_streaming_url: Some("https://rr5---sn-h0jeenek.googlevideo.com/videoplayback?c=TVHTML5&ei=viioZtTdKteHi9oPl42KsAg&expire=1722318110&fvip=4&id=o-AC7iotZ_nCvg7C6fK7ofX174GXVOdwW68lsyXLLmCs0h&initcwndbps=1957500&ip=93.235.183.158&keepalive=yes&lsig=AGtxev0wRgIhANyFV4Ji7jlkXvfkb_czMQDZCiu6AbJ3Kzyv_s9V9WyvAiEA0o8XuM9kyh98hG1yg7h44L3I5OAUXuTpQdjxUaZ1V4A%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&mh=mQ&mm=31%2C29&mn=sn-h0jeenek%2Csn-h0jelnez&ms=au%2Crdu&mt=1722295996&mv=m&mvi=5&n=eBXmY26Y0c3VPyt&ns=Kl83P0QZk1oI9742KUD7ly8Q&pl=26&requiressl=yes&rqh=1&sabr=1&sig=AJfQdSswRAIgJRK55pIkQ3Pak9jZ4fHPDsxXv0YgkxKE-FFdIN12ph8CIFHlFEvAoUOoX4Fd1RmyCJqgLZhDkSLwD6s-xVW25kYL&smc=1&source=youtube&sparams=expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Cxpc%2Csvpuc%2Cns%2Csabr%2Crqh&svpuc=1&xpc=EgVo2aDSNQ%3D%3D"),
|
|
||||||
abr_ustreamer_config: Some("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"),
|
|
||||||
po_token: None,
|
|
||||||
preview_frames: [
|
preview_frames: [
|
||||||
Frameset(
|
Frameset(
|
||||||
url_template: "https://i.ytimg.com/sb/pPvd8UxmSbQ/storyboard3_L0/default.jpg?sqp=-oaymwGbA0g48quKqQOSA4gBAZUBAAAEQpgBMqABPKgBBLABELABDbABDLABELABFbABH7ABJrABLbABDrABDrABD7ABErABF7ABK7ABLLABKbABD7ABDrABELABFbABH7ABKrABMrABKbABD7ABEbABFLABGLABJrABPbABOLABLbABEbABFLABHrABKrABMbABS7ABR7ABNrABFbABHLABKbABLrABObABR7ABTbABP7ABJbABLrABN7ABPbABR7ABUrABUbABRbABM7ABQLABQrABQ7ABTLABRLABRrABQ7gBEbgBEbgBFbgBI7gBRLgBQ7gBQ7gBQ7gBEbgBE7gBFrgBL7gBQ7gBQ7gBQ7gBQ7gBFbgBFrgBKbgBQ7gBQ7gBQ7gBQ7gBQ7gBI7gBL7gBQ7gBQ7gBQ7gBQ7gBQ7gBQ7gBRLgBQ7gBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQ7gBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQrgBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQrgBQrgBQ7gBQ7gBQ7gBQrgBQrgBQrgBQrgBQqLzl_8DBgjf8LPxBQ==&sigh=rs$AOn4CLCsCT8Lprh2S0ptmCRsWH7VtDl3YQ",
|
url_template: "https://i.ytimg.com/sb/pPvd8UxmSbQ/storyboard3_L0/default.jpg?sqp=-oaymwGbA0g48quKqQOSA4gBAZUBAAAEQpgBMqABPKgBBLABELABDbABDLABELABFbABH7ABJrABLbABDrABDrABD7ABErABF7ABK7ABLLABKbABD7ABDrABELABFbABH7ABKrABMrABKbABD7ABEbABFLABGLABJrABPbABOLABLbABEbABFLABHrABKrABMbABS7ABR7ABNrABFbABHLABKbABLrABObABR7ABTbABP7ABJbABLrABN7ABPbABR7ABUrABUbABRbABM7ABQLABQrABQ7ABTLABRLABRrABQ7gBEbgBEbgBFbgBI7gBRLgBQ7gBQ7gBQ7gBEbgBE7gBFrgBL7gBQ7gBQ7gBQ7gBQ7gBFbgBFrgBKbgBQ7gBQ7gBQ7gBQ7gBQ7gBI7gBL7gBQ7gBQ7gBQ7gBQ7gBQ7gBQ7gBRLgBQ7gBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQ7gBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQrgBQ7gBQ7gBQ7gBQ7gBQrgBQrgBQrgBQrgBQ7gBQ7gBQ7gBQrgBQrgBQrgBQrgBQqLzl_8DBgjf8LPxBQ==&sigh=rs$AOn4CLCsCT8Lprh2S0ptmCRsWH7VtDl3YQ",
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 years ago"),
|
publish_date_txt: Some("4 years ago"),
|
||||||
view_count: Some(15000000),
|
view_count: Some(15000000),
|
||||||
|
|
@ -83,7 +82,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 years ago"),
|
publish_date_txt: Some("4 years ago"),
|
||||||
view_count: Some(1200000),
|
view_count: Some(1200000),
|
||||||
|
|
@ -125,7 +123,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 years ago"),
|
publish_date_txt: Some("4 years ago"),
|
||||||
view_count: Some(843000),
|
view_count: Some(843000),
|
||||||
|
|
@ -167,7 +164,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 years ago"),
|
publish_date_txt: Some("4 years ago"),
|
||||||
view_count: Some(1300000),
|
view_count: Some(1300000),
|
||||||
|
|
@ -209,7 +205,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 years ago"),
|
publish_date_txt: Some("4 years ago"),
|
||||||
view_count: Some(707000),
|
view_count: Some(707000),
|
||||||
|
|
@ -251,7 +246,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 years ago"),
|
publish_date_txt: Some("4 years ago"),
|
||||||
view_count: Some(797000),
|
view_count: Some(797000),
|
||||||
|
|
@ -293,7 +287,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 years ago"),
|
publish_date_txt: Some("4 years ago"),
|
||||||
view_count: Some(2500000),
|
view_count: Some(2500000),
|
||||||
|
|
@ -335,7 +328,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 years ago"),
|
publish_date_txt: Some("4 years ago"),
|
||||||
view_count: Some(983000),
|
view_count: Some(983000),
|
||||||
|
|
@ -377,7 +369,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 years ago"),
|
publish_date_txt: Some("4 years ago"),
|
||||||
view_count: Some(1100000),
|
view_count: Some(1100000),
|
||||||
|
|
@ -419,7 +410,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 years ago"),
|
publish_date_txt: Some("4 years ago"),
|
||||||
view_count: Some(1800000),
|
view_count: Some(1800000),
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("16 years ago"),
|
publish_date_txt: Some("16 years ago"),
|
||||||
view_count: Some(964000000),
|
view_count: Some(964000000),
|
||||||
|
|
@ -83,7 +82,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(168000000),
|
view_count: Some(168000000),
|
||||||
|
|
@ -125,7 +123,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("10 years ago"),
|
publish_date_txt: Some("10 years ago"),
|
||||||
view_count: Some(9600000),
|
view_count: Some(9600000),
|
||||||
|
|
@ -167,7 +164,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(989000000),
|
view_count: Some(989000000),
|
||||||
|
|
@ -209,7 +205,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("12 years ago"),
|
publish_date_txt: Some("12 years ago"),
|
||||||
view_count: Some(431000),
|
view_count: Some(431000),
|
||||||
|
|
@ -251,7 +246,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(13000000),
|
view_count: Some(13000000),
|
||||||
|
|
@ -293,7 +287,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("12 years ago"),
|
publish_date_txt: Some("12 years ago"),
|
||||||
view_count: Some(769000),
|
view_count: Some(769000),
|
||||||
|
|
@ -335,7 +328,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("10 years ago"),
|
publish_date_txt: Some("10 years ago"),
|
||||||
view_count: Some(3600000000),
|
view_count: Some(3600000000),
|
||||||
|
|
@ -377,7 +369,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(648000000),
|
view_count: Some(648000000),
|
||||||
|
|
@ -419,7 +410,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(266000000),
|
view_count: Some(266000000),
|
||||||
|
|
@ -461,7 +451,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("12 years ago"),
|
publish_date_txt: Some("12 years ago"),
|
||||||
view_count: Some(92000000),
|
view_count: Some(92000000),
|
||||||
|
|
@ -503,7 +492,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(45000000),
|
view_count: Some(45000000),
|
||||||
|
|
@ -545,7 +533,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(41000000),
|
view_count: Some(41000000),
|
||||||
|
|
@ -587,7 +574,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(1200000000),
|
view_count: Some(1200000000),
|
||||||
|
|
@ -629,7 +615,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(219000000),
|
view_count: Some(219000000),
|
||||||
|
|
@ -671,7 +656,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(7800000),
|
view_count: Some(7800000),
|
||||||
|
|
@ -713,7 +697,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("12 years ago"),
|
publish_date_txt: Some("12 years ago"),
|
||||||
view_count: Some(60000),
|
view_count: Some(60000),
|
||||||
|
|
@ -755,7 +738,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(652000),
|
view_count: Some(652000),
|
||||||
|
|
@ -797,7 +779,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("12 years ago"),
|
publish_date_txt: Some("12 years ago"),
|
||||||
view_count: Some(2400000),
|
view_count: Some(2400000),
|
||||||
|
|
@ -839,7 +820,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(117000000),
|
view_count: Some(117000000),
|
||||||
|
|
@ -881,7 +861,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(1000000000),
|
view_count: Some(1000000000),
|
||||||
|
|
@ -923,7 +902,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("13 years ago"),
|
publish_date_txt: Some("13 years ago"),
|
||||||
view_count: Some(290000000),
|
view_count: Some(290000000),
|
||||||
|
|
@ -965,7 +943,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(583000000),
|
view_count: Some(583000000),
|
||||||
|
|
@ -1007,7 +984,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(68000000),
|
view_count: Some(68000000),
|
||||||
|
|
@ -1049,7 +1025,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(18000000),
|
view_count: Some(18000000),
|
||||||
|
|
@ -1091,7 +1066,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("13 years ago"),
|
publish_date_txt: Some("13 years ago"),
|
||||||
view_count: Some(842000),
|
view_count: Some(842000),
|
||||||
|
|
@ -1133,7 +1107,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(2400000000),
|
view_count: Some(2400000000),
|
||||||
|
|
@ -1175,7 +1148,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(21000000),
|
view_count: Some(21000000),
|
||||||
|
|
@ -1217,7 +1189,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(178000000),
|
view_count: Some(178000000),
|
||||||
|
|
@ -1259,7 +1230,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(3900000),
|
view_count: Some(3900000),
|
||||||
|
|
@ -1301,7 +1271,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(865000),
|
view_count: Some(865000),
|
||||||
|
|
@ -1343,7 +1312,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(292000000),
|
view_count: Some(292000000),
|
||||||
|
|
@ -1385,7 +1353,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("14 years ago"),
|
publish_date_txt: Some("14 years ago"),
|
||||||
view_count: Some(150000000),
|
view_count: Some(150000000),
|
||||||
|
|
@ -1427,7 +1394,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("14 years ago"),
|
publish_date_txt: Some("14 years ago"),
|
||||||
view_count: Some(1700000),
|
view_count: Some(1700000),
|
||||||
|
|
@ -1469,7 +1435,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(5800000),
|
view_count: Some(5800000),
|
||||||
|
|
@ -1511,7 +1476,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(140000000),
|
view_count: Some(140000000),
|
||||||
|
|
@ -1553,7 +1517,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(16000000),
|
view_count: Some(16000000),
|
||||||
|
|
@ -1595,7 +1558,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(305000000),
|
view_count: Some(305000000),
|
||||||
|
|
@ -1637,7 +1599,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(219000000),
|
view_count: Some(219000000),
|
||||||
|
|
@ -1679,7 +1640,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("14 years ago"),
|
publish_date_txt: Some("14 years ago"),
|
||||||
view_count: Some(51000000),
|
view_count: Some(51000000),
|
||||||
|
|
@ -1721,7 +1681,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("12 years ago"),
|
publish_date_txt: Some("12 years ago"),
|
||||||
view_count: Some(24000000),
|
view_count: Some(24000000),
|
||||||
|
|
@ -1763,7 +1722,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("13 years ago"),
|
publish_date_txt: Some("13 years ago"),
|
||||||
view_count: Some(104000000),
|
view_count: Some(104000000),
|
||||||
|
|
@ -1805,7 +1763,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(159000000),
|
view_count: Some(159000000),
|
||||||
|
|
@ -1847,7 +1804,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(823000000),
|
view_count: Some(823000000),
|
||||||
|
|
@ -1889,7 +1845,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(271000),
|
view_count: Some(271000),
|
||||||
|
|
@ -1931,7 +1886,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(94000000),
|
view_count: Some(94000000),
|
||||||
|
|
@ -1973,7 +1927,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(110000000),
|
view_count: Some(110000000),
|
||||||
|
|
@ -2015,7 +1968,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("14 years ago"),
|
publish_date_txt: Some("14 years ago"),
|
||||||
view_count: Some(76000000),
|
view_count: Some(76000000),
|
||||||
|
|
@ -2057,7 +2009,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(4100000000),
|
view_count: Some(4100000000),
|
||||||
|
|
@ -2099,7 +2050,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("12 years ago"),
|
publish_date_txt: Some("12 years ago"),
|
||||||
view_count: Some(169000000),
|
view_count: Some(169000000),
|
||||||
|
|
@ -2141,7 +2091,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(28000000),
|
view_count: Some(28000000),
|
||||||
|
|
@ -2183,7 +2132,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("16 years ago"),
|
publish_date_txt: Some("16 years ago"),
|
||||||
view_count: Some(239000000),
|
view_count: Some(239000000),
|
||||||
|
|
@ -2225,7 +2173,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("13 years ago"),
|
publish_date_txt: Some("13 years ago"),
|
||||||
view_count: Some(285000000),
|
view_count: Some(285000000),
|
||||||
|
|
@ -2267,7 +2214,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("13 years ago"),
|
publish_date_txt: Some("13 years ago"),
|
||||||
view_count: Some(428000000),
|
view_count: Some(428000000),
|
||||||
|
|
@ -2309,7 +2255,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("13 years ago"),
|
publish_date_txt: Some("13 years ago"),
|
||||||
view_count: Some(556000000),
|
view_count: Some(556000000),
|
||||||
|
|
@ -2351,7 +2296,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(1300000000),
|
view_count: Some(1300000000),
|
||||||
|
|
@ -2393,7 +2337,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(1000000000),
|
view_count: Some(1000000000),
|
||||||
|
|
@ -2435,7 +2378,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("14 years ago"),
|
publish_date_txt: Some("14 years ago"),
|
||||||
view_count: Some(70000),
|
view_count: Some(70000),
|
||||||
|
|
@ -2477,7 +2419,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("12 years ago"),
|
publish_date_txt: Some("12 years ago"),
|
||||||
view_count: Some(1400000000),
|
view_count: Some(1400000000),
|
||||||
|
|
@ -2519,7 +2460,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(1200000000),
|
view_count: Some(1200000000),
|
||||||
|
|
@ -2561,7 +2501,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("13 years ago"),
|
publish_date_txt: Some("13 years ago"),
|
||||||
view_count: Some(1000000),
|
view_count: Some(1000000),
|
||||||
|
|
@ -2603,7 +2542,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("14 years ago"),
|
publish_date_txt: Some("14 years ago"),
|
||||||
view_count: Some(232000000),
|
view_count: Some(232000000),
|
||||||
|
|
@ -2645,7 +2583,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("15 years ago"),
|
publish_date_txt: Some("15 years ago"),
|
||||||
view_count: Some(185000000),
|
view_count: Some(185000000),
|
||||||
|
|
@ -2687,7 +2624,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("16 years ago"),
|
publish_date_txt: Some("16 years ago"),
|
||||||
view_count: Some(19000),
|
view_count: Some(19000),
|
||||||
|
|
@ -2729,7 +2665,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("13 years ago"),
|
publish_date_txt: Some("13 years ago"),
|
||||||
view_count: Some(6000000),
|
view_count: Some(6000000),
|
||||||
|
|
@ -2771,7 +2706,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("12 years ago"),
|
publish_date_txt: Some("12 years ago"),
|
||||||
view_count: Some(2500000),
|
view_count: Some(2500000),
|
||||||
|
|
@ -2813,7 +2747,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("14 years ago"),
|
publish_date_txt: Some("14 years ago"),
|
||||||
view_count: Some(62000000),
|
view_count: Some(62000000),
|
||||||
|
|
@ -2855,7 +2788,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("15 years ago"),
|
publish_date_txt: Some("15 years ago"),
|
||||||
view_count: Some(154000000),
|
view_count: Some(154000000),
|
||||||
|
|
@ -2897,7 +2829,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("16 years ago"),
|
publish_date_txt: Some("16 years ago"),
|
||||||
view_count: Some(255000000),
|
view_count: Some(255000000),
|
||||||
|
|
@ -2939,7 +2870,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(134000000),
|
view_count: Some(134000000),
|
||||||
|
|
@ -2981,7 +2911,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("15 years ago"),
|
publish_date_txt: Some("15 years ago"),
|
||||||
view_count: Some(671000000),
|
view_count: Some(671000000),
|
||||||
|
|
@ -3023,7 +2952,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("16 years ago"),
|
publish_date_txt: Some("16 years ago"),
|
||||||
view_count: Some(3800000),
|
view_count: Some(3800000),
|
||||||
|
|
@ -3065,7 +2993,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("16 years ago"),
|
publish_date_txt: Some("16 years ago"),
|
||||||
view_count: Some(39000000),
|
view_count: Some(39000000),
|
||||||
|
|
@ -3107,7 +3034,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("12 years ago"),
|
publish_date_txt: Some("12 years ago"),
|
||||||
view_count: Some(14000000),
|
view_count: Some(14000000),
|
||||||
|
|
@ -3149,7 +3075,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("14 years ago"),
|
publish_date_txt: Some("14 years ago"),
|
||||||
view_count: Some(437000),
|
view_count: Some(437000),
|
||||||
|
|
@ -3191,7 +3116,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("12 years ago"),
|
publish_date_txt: Some("12 years ago"),
|
||||||
view_count: Some(114000000),
|
view_count: Some(114000000),
|
||||||
|
|
@ -3233,7 +3157,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("12 years ago"),
|
publish_date_txt: Some("12 years ago"),
|
||||||
view_count: Some(115000000),
|
view_count: Some(115000000),
|
||||||
|
|
@ -3275,7 +3198,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("12 years ago"),
|
publish_date_txt: Some("12 years ago"),
|
||||||
view_count: Some(361000000),
|
view_count: Some(361000000),
|
||||||
|
|
@ -3317,7 +3239,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(31000000),
|
view_count: Some(31000000),
|
||||||
|
|
@ -3359,7 +3280,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("15 years ago"),
|
publish_date_txt: Some("15 years ago"),
|
||||||
view_count: Some(13000000),
|
view_count: Some(13000000),
|
||||||
|
|
@ -3401,7 +3321,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("13 years ago"),
|
publish_date_txt: Some("13 years ago"),
|
||||||
view_count: Some(385000000),
|
view_count: Some(385000000),
|
||||||
|
|
@ -3443,7 +3362,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("12 years ago"),
|
publish_date_txt: Some("12 years ago"),
|
||||||
view_count: Some(672000000),
|
view_count: Some(672000000),
|
||||||
|
|
@ -3485,7 +3403,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(127000000),
|
view_count: Some(127000000),
|
||||||
|
|
@ -3527,7 +3444,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("12 years ago"),
|
publish_date_txt: Some("12 years ago"),
|
||||||
view_count: Some(17000000),
|
view_count: Some(17000000),
|
||||||
|
|
@ -3569,7 +3485,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("14 years ago"),
|
publish_date_txt: Some("14 years ago"),
|
||||||
view_count: Some(154000),
|
view_count: Some(154000),
|
||||||
|
|
@ -3611,7 +3526,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("14 years ago"),
|
publish_date_txt: Some("14 years ago"),
|
||||||
view_count: Some(328000000),
|
view_count: Some(328000000),
|
||||||
|
|
@ -3653,7 +3567,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(931000000),
|
view_count: Some(931000000),
|
||||||
|
|
@ -3695,7 +3608,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("15 years ago"),
|
publish_date_txt: Some("15 years ago"),
|
||||||
view_count: Some(1600000000),
|
view_count: Some(1600000000),
|
||||||
|
|
@ -3737,7 +3649,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("15 years ago"),
|
publish_date_txt: Some("15 years ago"),
|
||||||
view_count: Some(177000000),
|
view_count: Some(177000000),
|
||||||
|
|
@ -3779,7 +3690,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("12 years ago"),
|
publish_date_txt: Some("12 years ago"),
|
||||||
view_count: Some(3700000000),
|
view_count: Some(3700000000),
|
||||||
|
|
@ -3821,7 +3731,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(798000000),
|
view_count: Some(798000000),
|
||||||
|
|
@ -3863,7 +3772,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("14 years ago"),
|
publish_date_txt: Some("14 years ago"),
|
||||||
view_count: Some(71000000),
|
view_count: Some(71000000),
|
||||||
|
|
@ -3905,7 +3813,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("13 years ago"),
|
publish_date_txt: Some("13 years ago"),
|
||||||
view_count: Some(739000000),
|
view_count: Some(739000000),
|
||||||
|
|
@ -3947,7 +3854,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(499000000),
|
view_count: Some(499000000),
|
||||||
|
|
@ -3989,7 +3895,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("15 years ago"),
|
publish_date_txt: Some("15 years ago"),
|
||||||
view_count: Some(291000),
|
view_count: Some(291000),
|
||||||
|
|
@ -4031,7 +3936,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("13 years ago"),
|
publish_date_txt: Some("13 years ago"),
|
||||||
view_count: Some(2600000000),
|
view_count: Some(2600000000),
|
||||||
|
|
@ -4073,7 +3977,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("12 years ago"),
|
publish_date_txt: Some("12 years ago"),
|
||||||
view_count: Some(36000000),
|
view_count: Some(36000000),
|
||||||
|
|
@ -4115,7 +4018,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("12 years ago"),
|
publish_date_txt: Some("12 years ago"),
|
||||||
view_count: Some(8500000),
|
view_count: Some(8500000),
|
||||||
|
|
@ -4157,7 +4059,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("13 years ago"),
|
publish_date_txt: Some("13 years ago"),
|
||||||
view_count: Some(27000000),
|
view_count: Some(27000000),
|
||||||
|
|
@ -4199,7 +4100,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("14 years ago"),
|
publish_date_txt: Some("14 years ago"),
|
||||||
view_count: Some(101000000),
|
view_count: Some(101000000),
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -41,7 +41,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(8),
|
view_count: Some(8),
|
||||||
|
|
@ -83,7 +82,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(4),
|
view_count: Some(4),
|
||||||
|
|
@ -125,7 +123,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(66000),
|
view_count: Some(66000),
|
||||||
|
|
@ -167,7 +164,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 2 days ago"),
|
publish_date_txt: Some("Streamed 2 days ago"),
|
||||||
view_count: Some(553000),
|
view_count: Some(553000),
|
||||||
|
|
@ -209,7 +205,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 3 days ago"),
|
publish_date_txt: Some("Streamed 3 days ago"),
|
||||||
view_count: Some(729000),
|
view_count: Some(729000),
|
||||||
|
|
@ -251,7 +246,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 days ago"),
|
publish_date_txt: Some("Streamed 4 days ago"),
|
||||||
view_count: Some(629000),
|
view_count: Some(629000),
|
||||||
|
|
@ -293,7 +287,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 1 year ago"),
|
publish_date_txt: Some("Streamed 1 year ago"),
|
||||||
view_count: Some(1400000),
|
view_count: Some(1400000),
|
||||||
|
|
@ -335,7 +328,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 1 year ago"),
|
publish_date_txt: Some("Streamed 1 year ago"),
|
||||||
view_count: Some(1000000),
|
view_count: Some(1000000),
|
||||||
|
|
@ -377,7 +369,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 1 year ago"),
|
publish_date_txt: Some("Streamed 1 year ago"),
|
||||||
view_count: Some(780000),
|
view_count: Some(780000),
|
||||||
|
|
@ -419,7 +410,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 2 years ago"),
|
publish_date_txt: Some("Streamed 2 years ago"),
|
||||||
view_count: Some(913000),
|
view_count: Some(913000),
|
||||||
|
|
@ -461,7 +451,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 53 years ago"),
|
publish_date_txt: Some("Streamed 53 years ago"),
|
||||||
view_count: Some(0),
|
view_count: Some(0),
|
||||||
|
|
@ -503,7 +492,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 53 years ago"),
|
publish_date_txt: Some("Streamed 53 years ago"),
|
||||||
view_count: Some(0),
|
view_count: Some(0),
|
||||||
|
|
@ -545,7 +533,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 53 years ago"),
|
publish_date_txt: Some("Streamed 53 years ago"),
|
||||||
view_count: Some(0),
|
view_count: Some(0),
|
||||||
|
|
@ -587,7 +574,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 2 years ago"),
|
publish_date_txt: Some("Streamed 2 years ago"),
|
||||||
view_count: Some(34000),
|
view_count: Some(34000),
|
||||||
|
|
@ -629,7 +615,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 3 years ago"),
|
publish_date_txt: Some("Streamed 3 years ago"),
|
||||||
view_count: Some(876000),
|
view_count: Some(876000),
|
||||||
|
|
@ -671,7 +656,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 3 years ago"),
|
publish_date_txt: Some("Streamed 3 years ago"),
|
||||||
view_count: Some(533000),
|
view_count: Some(533000),
|
||||||
|
|
@ -713,7 +697,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 3 years ago"),
|
publish_date_txt: Some("Streamed 3 years ago"),
|
||||||
view_count: Some(570000),
|
view_count: Some(570000),
|
||||||
|
|
@ -755,7 +738,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 3 years ago"),
|
publish_date_txt: Some("Streamed 3 years ago"),
|
||||||
view_count: Some(308000),
|
view_count: Some(308000),
|
||||||
|
|
@ -797,7 +779,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 3 years ago"),
|
publish_date_txt: Some("Streamed 3 years ago"),
|
||||||
view_count: Some(699000),
|
view_count: Some(699000),
|
||||||
|
|
@ -839,7 +820,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 3 years ago"),
|
publish_date_txt: Some("Streamed 3 years ago"),
|
||||||
view_count: Some(474000),
|
view_count: Some(474000),
|
||||||
|
|
@ -881,7 +861,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 3 years ago"),
|
publish_date_txt: Some("Streamed 3 years ago"),
|
||||||
view_count: Some(573000),
|
view_count: Some(573000),
|
||||||
|
|
@ -923,7 +902,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 3 years ago"),
|
publish_date_txt: Some("Streamed 3 years ago"),
|
||||||
view_count: Some(676000),
|
view_count: Some(676000),
|
||||||
|
|
@ -965,7 +943,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 3 years ago"),
|
publish_date_txt: Some("Streamed 3 years ago"),
|
||||||
view_count: Some(5600000),
|
view_count: Some(5600000),
|
||||||
|
|
@ -1007,7 +984,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 3 years ago"),
|
publish_date_txt: Some("Streamed 3 years ago"),
|
||||||
view_count: Some(206000),
|
view_count: Some(206000),
|
||||||
|
|
@ -1049,7 +1025,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 3 years ago"),
|
publish_date_txt: Some("Streamed 3 years ago"),
|
||||||
view_count: Some(354000),
|
view_count: Some(354000),
|
||||||
|
|
@ -1091,7 +1066,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 3 years ago"),
|
publish_date_txt: Some("Streamed 3 years ago"),
|
||||||
view_count: Some(2400000),
|
view_count: Some(2400000),
|
||||||
|
|
@ -1133,7 +1107,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 3 years ago"),
|
publish_date_txt: Some("Streamed 3 years ago"),
|
||||||
view_count: Some(2600000),
|
view_count: Some(2600000),
|
||||||
|
|
@ -1175,7 +1148,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 3 years ago"),
|
publish_date_txt: Some("Streamed 3 years ago"),
|
||||||
view_count: Some(2100000),
|
view_count: Some(2100000),
|
||||||
|
|
@ -1217,7 +1189,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 3 years ago"),
|
publish_date_txt: Some("Streamed 3 years ago"),
|
||||||
view_count: Some(2200000),
|
view_count: Some(2200000),
|
||||||
|
|
@ -1259,7 +1230,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 3 years ago"),
|
publish_date_txt: Some("Streamed 3 years ago"),
|
||||||
view_count: Some(2100000),
|
view_count: Some(2100000),
|
||||||
|
|
@ -1301,7 +1271,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 3 years ago"),
|
publish_date_txt: Some("Streamed 3 years ago"),
|
||||||
view_count: Some(1900000),
|
view_count: Some(1900000),
|
||||||
|
|
@ -1343,7 +1312,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 3 years ago"),
|
publish_date_txt: Some("Streamed 3 years ago"),
|
||||||
view_count: Some(369000),
|
view_count: Some(369000),
|
||||||
|
|
@ -1385,7 +1353,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 3 years ago"),
|
publish_date_txt: Some("Streamed 3 years ago"),
|
||||||
view_count: Some(296000),
|
view_count: Some(296000),
|
||||||
|
|
@ -1427,7 +1394,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 3 years ago"),
|
publish_date_txt: Some("Streamed 3 years ago"),
|
||||||
view_count: Some(472000),
|
view_count: Some(472000),
|
||||||
|
|
@ -1469,7 +1435,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 3 years ago"),
|
publish_date_txt: Some("Streamed 3 years ago"),
|
||||||
view_count: Some(561000),
|
view_count: Some(561000),
|
||||||
|
|
@ -1511,7 +1476,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(259000),
|
view_count: Some(259000),
|
||||||
|
|
@ -1553,7 +1517,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(455000),
|
view_count: Some(455000),
|
||||||
|
|
@ -1595,7 +1558,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(97000),
|
view_count: Some(97000),
|
||||||
|
|
@ -1637,7 +1599,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(365000),
|
view_count: Some(365000),
|
||||||
|
|
@ -1679,7 +1640,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(123000),
|
view_count: Some(123000),
|
||||||
|
|
@ -1721,7 +1681,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(88000),
|
view_count: Some(88000),
|
||||||
|
|
@ -1763,7 +1722,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(246000),
|
view_count: Some(246000),
|
||||||
|
|
@ -1805,7 +1763,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(876000),
|
view_count: Some(876000),
|
||||||
|
|
@ -1847,7 +1804,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(149000),
|
view_count: Some(149000),
|
||||||
|
|
@ -1889,7 +1845,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(196000),
|
view_count: Some(196000),
|
||||||
|
|
@ -1931,7 +1886,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(192000),
|
view_count: Some(192000),
|
||||||
|
|
@ -1973,7 +1927,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(189000),
|
view_count: Some(189000),
|
||||||
|
|
@ -2015,7 +1968,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(110000),
|
view_count: Some(110000),
|
||||||
|
|
@ -2057,7 +2009,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(61000),
|
view_count: Some(61000),
|
||||||
|
|
@ -2099,7 +2050,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(75000),
|
view_count: Some(75000),
|
||||||
|
|
@ -2141,7 +2091,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(89000),
|
view_count: Some(89000),
|
||||||
|
|
@ -2183,7 +2132,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(73000),
|
view_count: Some(73000),
|
||||||
|
|
@ -2225,7 +2173,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(33000),
|
view_count: Some(33000),
|
||||||
|
|
@ -2267,7 +2214,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(96000),
|
view_count: Some(96000),
|
||||||
|
|
@ -2309,7 +2255,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(92000),
|
view_count: Some(92000),
|
||||||
|
|
@ -2351,7 +2296,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(82000),
|
view_count: Some(82000),
|
||||||
|
|
@ -2393,7 +2337,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(123000),
|
view_count: Some(123000),
|
||||||
|
|
@ -2435,7 +2378,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(89000),
|
view_count: Some(89000),
|
||||||
|
|
@ -2477,7 +2419,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(94000),
|
view_count: Some(94000),
|
||||||
|
|
@ -2519,7 +2460,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(148000),
|
view_count: Some(148000),
|
||||||
|
|
@ -2561,7 +2501,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(125000),
|
view_count: Some(125000),
|
||||||
|
|
@ -2603,7 +2542,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(52000),
|
view_count: Some(52000),
|
||||||
|
|
@ -2645,7 +2583,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(414000),
|
view_count: Some(414000),
|
||||||
|
|
@ -2687,7 +2624,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(150000),
|
view_count: Some(150000),
|
||||||
|
|
@ -2729,7 +2665,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(22000),
|
view_count: Some(22000),
|
||||||
|
|
@ -2771,7 +2706,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(326000),
|
view_count: Some(326000),
|
||||||
|
|
@ -2813,7 +2747,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(65000),
|
view_count: Some(65000),
|
||||||
|
|
@ -2855,7 +2788,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(58000),
|
view_count: Some(58000),
|
||||||
|
|
@ -2897,7 +2829,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(100000),
|
view_count: Some(100000),
|
||||||
|
|
@ -2939,7 +2870,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: None,
|
publish_date_txt: None,
|
||||||
view_count: Some(4),
|
view_count: Some(4),
|
||||||
|
|
@ -2981,7 +2911,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(53000),
|
view_count: Some(53000),
|
||||||
|
|
@ -3023,7 +2952,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(50000),
|
view_count: Some(50000),
|
||||||
|
|
@ -3065,7 +2993,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(40000),
|
view_count: Some(40000),
|
||||||
|
|
@ -3107,7 +3034,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(40000),
|
view_count: Some(40000),
|
||||||
|
|
@ -3149,7 +3075,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(90000),
|
view_count: Some(90000),
|
||||||
|
|
@ -3191,7 +3116,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(29000),
|
view_count: Some(29000),
|
||||||
|
|
@ -3233,7 +3157,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(40000),
|
view_count: Some(40000),
|
||||||
|
|
@ -3275,7 +3198,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(328000),
|
view_count: Some(328000),
|
||||||
|
|
@ -3317,7 +3239,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(12000),
|
view_count: Some(12000),
|
||||||
|
|
@ -3359,7 +3280,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(65000),
|
view_count: Some(65000),
|
||||||
|
|
@ -3401,7 +3321,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(14000),
|
view_count: Some(14000),
|
||||||
|
|
@ -3443,7 +3362,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(38000),
|
view_count: Some(38000),
|
||||||
|
|
@ -3485,7 +3403,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(81000),
|
view_count: Some(81000),
|
||||||
|
|
@ -3527,7 +3444,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(48000),
|
view_count: Some(48000),
|
||||||
|
|
@ -3569,7 +3485,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(18000),
|
view_count: Some(18000),
|
||||||
|
|
@ -3611,7 +3526,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(68000),
|
view_count: Some(68000),
|
||||||
|
|
@ -3653,7 +3567,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(26000),
|
view_count: Some(26000),
|
||||||
|
|
@ -3695,7 +3608,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(59000),
|
view_count: Some(59000),
|
||||||
|
|
@ -3737,7 +3649,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(57000),
|
view_count: Some(57000),
|
||||||
|
|
@ -3779,7 +3690,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(208000),
|
view_count: Some(208000),
|
||||||
|
|
@ -3821,7 +3731,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(17000),
|
view_count: Some(17000),
|
||||||
|
|
@ -3863,7 +3772,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(48000),
|
view_count: Some(48000),
|
||||||
|
|
@ -3905,7 +3813,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(404000),
|
view_count: Some(404000),
|
||||||
|
|
@ -3947,7 +3854,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(16000),
|
view_count: Some(16000),
|
||||||
|
|
@ -3989,7 +3895,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(244000),
|
view_count: Some(244000),
|
||||||
|
|
@ -4031,7 +3936,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(27000),
|
view_count: Some(27000),
|
||||||
|
|
@ -4073,7 +3977,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(284000),
|
view_count: Some(284000),
|
||||||
|
|
@ -4115,7 +4018,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(26000),
|
view_count: Some(26000),
|
||||||
|
|
@ -4157,7 +4059,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(314000),
|
view_count: Some(314000),
|
||||||
|
|
@ -4199,7 +4100,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("Streamed 4 years ago"),
|
publish_date_txt: Some("Streamed 4 years ago"),
|
||||||
view_count: Some(25000),
|
view_count: Some(25000),
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(210000000),
|
view_count: Some(210000000),
|
||||||
|
|
@ -83,7 +82,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(119000),
|
view_count: Some(119000),
|
||||||
|
|
@ -125,7 +123,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(168000000),
|
view_count: Some(168000000),
|
||||||
|
|
@ -167,7 +164,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(170000000),
|
view_count: Some(170000000),
|
||||||
|
|
@ -209,7 +205,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(161000000),
|
view_count: Some(161000000),
|
||||||
|
|
@ -251,7 +246,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(110000000),
|
view_count: Some(110000000),
|
||||||
|
|
@ -293,7 +287,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 years ago"),
|
publish_date_txt: Some("8 years ago"),
|
||||||
view_count: Some(151000000),
|
view_count: Some(151000000),
|
||||||
|
|
@ -335,7 +328,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(101000000),
|
view_count: Some(101000000),
|
||||||
|
|
@ -377,7 +369,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(83000000),
|
view_count: Some(83000000),
|
||||||
|
|
@ -419,7 +410,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(73000000),
|
view_count: Some(73000000),
|
||||||
|
|
@ -461,7 +451,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(68000000),
|
view_count: Some(68000000),
|
||||||
|
|
@ -503,7 +492,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(70000000),
|
view_count: Some(70000000),
|
||||||
|
|
@ -545,7 +533,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(78000000),
|
view_count: Some(78000000),
|
||||||
|
|
@ -587,7 +574,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 years ago"),
|
publish_date_txt: Some("6 years ago"),
|
||||||
view_count: Some(104000000),
|
view_count: Some(104000000),
|
||||||
|
|
@ -629,7 +615,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 years ago"),
|
publish_date_txt: Some("8 years ago"),
|
||||||
view_count: Some(70000000),
|
view_count: Some(70000000),
|
||||||
|
|
@ -671,7 +656,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(60000000),
|
view_count: Some(60000000),
|
||||||
|
|
@ -713,7 +697,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(76000000),
|
view_count: Some(76000000),
|
||||||
|
|
@ -755,7 +738,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(97000000),
|
view_count: Some(97000000),
|
||||||
|
|
@ -797,7 +779,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("14 years ago"),
|
publish_date_txt: Some("14 years ago"),
|
||||||
view_count: Some(80000000),
|
view_count: Some(80000000),
|
||||||
|
|
@ -839,7 +820,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 years ago"),
|
publish_date_txt: Some("6 years ago"),
|
||||||
view_count: Some(73000000),
|
view_count: Some(73000000),
|
||||||
|
|
@ -881,7 +861,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(66000000),
|
view_count: Some(66000000),
|
||||||
|
|
@ -923,7 +902,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(59000000),
|
view_count: Some(59000000),
|
||||||
|
|
@ -965,7 +943,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("12 years ago"),
|
publish_date_txt: Some("12 years ago"),
|
||||||
view_count: Some(58000000),
|
view_count: Some(58000000),
|
||||||
|
|
@ -1007,7 +984,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 years ago"),
|
publish_date_txt: Some("6 years ago"),
|
||||||
view_count: Some(90000000),
|
view_count: Some(90000000),
|
||||||
|
|
@ -1049,7 +1025,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(59000000),
|
view_count: Some(59000000),
|
||||||
|
|
@ -1091,7 +1066,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 years ago"),
|
publish_date_txt: Some("8 years ago"),
|
||||||
view_count: Some(62000000),
|
view_count: Some(62000000),
|
||||||
|
|
@ -1133,7 +1107,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 years ago"),
|
publish_date_txt: Some("6 years ago"),
|
||||||
view_count: Some(58000000),
|
view_count: Some(58000000),
|
||||||
|
|
@ -1175,7 +1148,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 years ago"),
|
publish_date_txt: Some("6 years ago"),
|
||||||
view_count: Some(75000000),
|
view_count: Some(75000000),
|
||||||
|
|
@ -1217,7 +1189,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 years ago"),
|
publish_date_txt: Some("8 years ago"),
|
||||||
view_count: Some(71000000),
|
view_count: Some(71000000),
|
||||||
|
|
@ -1259,7 +1230,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("12 years ago"),
|
publish_date_txt: Some("12 years ago"),
|
||||||
view_count: Some(62000000),
|
view_count: Some(62000000),
|
||||||
|
|
@ -1301,7 +1271,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("14 years ago"),
|
publish_date_txt: Some("14 years ago"),
|
||||||
view_count: Some(71000000),
|
view_count: Some(71000000),
|
||||||
|
|
@ -1343,7 +1312,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 years ago"),
|
publish_date_txt: Some("6 years ago"),
|
||||||
view_count: Some(52000000),
|
view_count: Some(52000000),
|
||||||
|
|
@ -1385,7 +1353,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("13 years ago"),
|
publish_date_txt: Some("13 years ago"),
|
||||||
view_count: Some(45000000),
|
view_count: Some(45000000),
|
||||||
|
|
@ -1427,7 +1394,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(59000000),
|
view_count: Some(59000000),
|
||||||
|
|
@ -1469,7 +1435,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(85000000),
|
view_count: Some(85000000),
|
||||||
|
|
@ -1511,7 +1476,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("13 years ago"),
|
publish_date_txt: Some("13 years ago"),
|
||||||
view_count: Some(47000000),
|
view_count: Some(47000000),
|
||||||
|
|
@ -1553,7 +1517,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(108000000),
|
view_count: Some(108000000),
|
||||||
|
|
@ -1595,7 +1558,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 years ago"),
|
publish_date_txt: Some("6 years ago"),
|
||||||
view_count: Some(90000000),
|
view_count: Some(90000000),
|
||||||
|
|
@ -1637,7 +1599,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(89000000),
|
view_count: Some(89000000),
|
||||||
|
|
@ -1679,7 +1640,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(61000000),
|
view_count: Some(61000000),
|
||||||
|
|
@ -1721,7 +1681,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(103000000),
|
view_count: Some(103000000),
|
||||||
|
|
@ -1763,7 +1722,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("13 years ago"),
|
publish_date_txt: Some("13 years ago"),
|
||||||
view_count: Some(72000000),
|
view_count: Some(72000000),
|
||||||
|
|
@ -1805,7 +1763,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 years ago"),
|
publish_date_txt: Some("6 years ago"),
|
||||||
view_count: Some(38000000),
|
view_count: Some(38000000),
|
||||||
|
|
@ -1847,7 +1804,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("10 years ago"),
|
publish_date_txt: Some("10 years ago"),
|
||||||
view_count: Some(49000000),
|
view_count: Some(49000000),
|
||||||
|
|
@ -1889,7 +1845,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("14 years ago"),
|
publish_date_txt: Some("14 years ago"),
|
||||||
view_count: Some(65000000),
|
view_count: Some(65000000),
|
||||||
|
|
@ -1931,7 +1886,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(38000000),
|
view_count: Some(38000000),
|
||||||
|
|
@ -1973,7 +1927,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 years ago"),
|
publish_date_txt: Some("8 years ago"),
|
||||||
view_count: Some(43000000),
|
view_count: Some(43000000),
|
||||||
|
|
@ -2015,7 +1968,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 years ago"),
|
publish_date_txt: Some("8 years ago"),
|
||||||
view_count: Some(47000000),
|
view_count: Some(47000000),
|
||||||
|
|
@ -2057,7 +2009,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(61000000),
|
view_count: Some(61000000),
|
||||||
|
|
@ -2099,7 +2050,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("12 years ago"),
|
publish_date_txt: Some("12 years ago"),
|
||||||
view_count: Some(40000000),
|
view_count: Some(40000000),
|
||||||
|
|
@ -2141,7 +2091,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 years ago"),
|
publish_date_txt: Some("8 years ago"),
|
||||||
view_count: Some(40000000),
|
view_count: Some(40000000),
|
||||||
|
|
@ -2183,7 +2132,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(46000000),
|
view_count: Some(46000000),
|
||||||
|
|
@ -2225,7 +2173,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(83000000),
|
view_count: Some(83000000),
|
||||||
|
|
@ -2267,7 +2214,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(42000000),
|
view_count: Some(42000000),
|
||||||
|
|
@ -2309,7 +2255,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(84000000),
|
view_count: Some(84000000),
|
||||||
|
|
@ -2351,7 +2296,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("10 years ago"),
|
publish_date_txt: Some("10 years ago"),
|
||||||
view_count: Some(34000000),
|
view_count: Some(34000000),
|
||||||
|
|
@ -2393,7 +2337,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(37000000),
|
view_count: Some(37000000),
|
||||||
|
|
@ -2435,7 +2378,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(47000000),
|
view_count: Some(47000000),
|
||||||
|
|
@ -2477,7 +2419,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 years ago"),
|
publish_date_txt: Some("6 years ago"),
|
||||||
view_count: Some(92000000),
|
view_count: Some(92000000),
|
||||||
|
|
@ -2519,7 +2460,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 years ago"),
|
publish_date_txt: Some("6 years ago"),
|
||||||
view_count: Some(56000000),
|
view_count: Some(56000000),
|
||||||
|
|
@ -2561,7 +2501,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(39000000),
|
view_count: Some(39000000),
|
||||||
|
|
@ -2603,7 +2542,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("10 years ago"),
|
publish_date_txt: Some("10 years ago"),
|
||||||
view_count: Some(37000000),
|
view_count: Some(37000000),
|
||||||
|
|
@ -2645,7 +2583,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(42000000),
|
view_count: Some(42000000),
|
||||||
|
|
@ -2687,7 +2624,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(35000000),
|
view_count: Some(35000000),
|
||||||
|
|
@ -2729,7 +2665,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("12 years ago"),
|
publish_date_txt: Some("12 years ago"),
|
||||||
view_count: Some(37000000),
|
view_count: Some(37000000),
|
||||||
|
|
@ -2771,7 +2706,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(56000000),
|
view_count: Some(56000000),
|
||||||
|
|
@ -2813,7 +2747,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(56000000),
|
view_count: Some(56000000),
|
||||||
|
|
@ -2855,7 +2788,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("13 years ago"),
|
publish_date_txt: Some("13 years ago"),
|
||||||
view_count: Some(25000000),
|
view_count: Some(25000000),
|
||||||
|
|
@ -2897,7 +2829,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(36000000),
|
view_count: Some(36000000),
|
||||||
|
|
@ -2939,7 +2870,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(38000000),
|
view_count: Some(38000000),
|
||||||
|
|
@ -2981,7 +2911,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("14 years ago"),
|
publish_date_txt: Some("14 years ago"),
|
||||||
view_count: Some(36000000),
|
view_count: Some(36000000),
|
||||||
|
|
@ -3023,7 +2952,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(28000000),
|
view_count: Some(28000000),
|
||||||
|
|
@ -3065,7 +2993,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(40000000),
|
view_count: Some(40000000),
|
||||||
|
|
@ -3107,7 +3034,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 years ago"),
|
publish_date_txt: Some("8 years ago"),
|
||||||
view_count: Some(30000000),
|
view_count: Some(30000000),
|
||||||
|
|
@ -3149,7 +3075,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(33000000),
|
view_count: Some(33000000),
|
||||||
|
|
@ -3191,7 +3116,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("12 years ago"),
|
publish_date_txt: Some("12 years ago"),
|
||||||
view_count: Some(27000000),
|
view_count: Some(27000000),
|
||||||
|
|
@ -3233,7 +3157,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(28000000),
|
view_count: Some(28000000),
|
||||||
|
|
@ -3275,7 +3198,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(42000000),
|
view_count: Some(42000000),
|
||||||
|
|
@ -3317,7 +3239,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 years ago"),
|
publish_date_txt: Some("8 years ago"),
|
||||||
view_count: Some(28000000),
|
view_count: Some(28000000),
|
||||||
|
|
@ -3359,7 +3280,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(37000000),
|
view_count: Some(37000000),
|
||||||
|
|
@ -3401,7 +3321,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(37000000),
|
view_count: Some(37000000),
|
||||||
|
|
@ -3443,7 +3362,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 years ago"),
|
publish_date_txt: Some("6 years ago"),
|
||||||
view_count: Some(33000000),
|
view_count: Some(33000000),
|
||||||
|
|
@ -3485,7 +3403,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(34000000),
|
view_count: Some(34000000),
|
||||||
|
|
@ -3527,7 +3444,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 years ago"),
|
publish_date_txt: Some("8 years ago"),
|
||||||
view_count: Some(36000000),
|
view_count: Some(36000000),
|
||||||
|
|
@ -3569,7 +3485,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 years ago"),
|
publish_date_txt: Some("6 years ago"),
|
||||||
view_count: Some(34000000),
|
view_count: Some(34000000),
|
||||||
|
|
@ -3611,7 +3526,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("12 years ago"),
|
publish_date_txt: Some("12 years ago"),
|
||||||
view_count: Some(31000000),
|
view_count: Some(31000000),
|
||||||
|
|
@ -3653,7 +3567,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("13 years ago"),
|
publish_date_txt: Some("13 years ago"),
|
||||||
view_count: Some(31000000),
|
view_count: Some(31000000),
|
||||||
|
|
@ -3695,7 +3608,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(26000000),
|
view_count: Some(26000000),
|
||||||
|
|
@ -3737,7 +3649,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 years ago"),
|
publish_date_txt: Some("6 years ago"),
|
||||||
view_count: Some(26000000),
|
view_count: Some(26000000),
|
||||||
|
|
@ -3779,7 +3690,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 years ago"),
|
publish_date_txt: Some("8 years ago"),
|
||||||
view_count: Some(27000000),
|
view_count: Some(27000000),
|
||||||
|
|
@ -3821,7 +3731,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("12 years ago"),
|
publish_date_txt: Some("12 years ago"),
|
||||||
view_count: Some(24000000),
|
view_count: Some(24000000),
|
||||||
|
|
@ -3863,7 +3772,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("14 years ago"),
|
publish_date_txt: Some("14 years ago"),
|
||||||
view_count: Some(24000000),
|
view_count: Some(24000000),
|
||||||
|
|
@ -3905,7 +3813,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(27000000),
|
view_count: Some(27000000),
|
||||||
|
|
@ -3947,7 +3854,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(25000000),
|
view_count: Some(25000000),
|
||||||
|
|
@ -3989,7 +3895,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(31000000),
|
view_count: Some(31000000),
|
||||||
|
|
@ -4031,7 +3936,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(54000000),
|
view_count: Some(54000000),
|
||||||
|
|
@ -4073,7 +3977,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("12 years ago"),
|
publish_date_txt: Some("12 years ago"),
|
||||||
view_count: Some(19000000),
|
view_count: Some(19000000),
|
||||||
|
|
@ -4115,7 +4018,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(78000000),
|
view_count: Some(78000000),
|
||||||
|
|
@ -4157,7 +4059,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(19000000),
|
view_count: Some(19000000),
|
||||||
|
|
@ -4199,7 +4100,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 years ago"),
|
publish_date_txt: Some("6 years ago"),
|
||||||
view_count: Some(99000000),
|
view_count: Some(99000000),
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(290000),
|
view_count: Some(290000),
|
||||||
|
|
@ -83,7 +82,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(414000),
|
view_count: Some(414000),
|
||||||
|
|
@ -125,7 +123,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(177000),
|
view_count: Some(177000),
|
||||||
|
|
@ -167,7 +164,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(126000),
|
view_count: Some(126000),
|
||||||
|
|
@ -209,7 +205,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(135000),
|
view_count: Some(135000),
|
||||||
|
|
@ -251,7 +246,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(101000),
|
view_count: Some(101000),
|
||||||
|
|
@ -293,7 +287,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(93000),
|
view_count: Some(93000),
|
||||||
|
|
@ -335,7 +328,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(83000),
|
view_count: Some(83000),
|
||||||
|
|
@ -377,7 +369,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(76000),
|
view_count: Some(76000),
|
||||||
|
|
@ -419,7 +410,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(69000),
|
view_count: Some(69000),
|
||||||
|
|
@ -461,7 +451,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(66000),
|
view_count: Some(66000),
|
||||||
|
|
@ -503,7 +492,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(55000),
|
view_count: Some(55000),
|
||||||
|
|
@ -545,7 +533,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(48000),
|
view_count: Some(48000),
|
||||||
|
|
@ -587,7 +574,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(59000),
|
view_count: Some(59000),
|
||||||
|
|
@ -629,7 +615,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(63000),
|
view_count: Some(63000),
|
||||||
|
|
@ -671,7 +656,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(213000),
|
view_count: Some(213000),
|
||||||
|
|
@ -713,7 +697,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(382000),
|
view_count: Some(382000),
|
||||||
|
|
@ -755,7 +738,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(113000),
|
view_count: Some(113000),
|
||||||
|
|
@ -797,7 +779,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(73000),
|
view_count: Some(73000),
|
||||||
|
|
@ -839,7 +820,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(111000),
|
view_count: Some(111000),
|
||||||
|
|
@ -881,7 +861,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(191000),
|
view_count: Some(191000),
|
||||||
|
|
@ -923,7 +902,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(65000),
|
view_count: Some(65000),
|
||||||
|
|
@ -965,7 +943,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(59000),
|
view_count: Some(59000),
|
||||||
|
|
@ -1007,7 +984,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(64000),
|
view_count: Some(64000),
|
||||||
|
|
@ -1049,7 +1025,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(58000),
|
view_count: Some(58000),
|
||||||
|
|
@ -1091,7 +1066,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(66000),
|
view_count: Some(66000),
|
||||||
|
|
@ -1133,7 +1107,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(44000),
|
view_count: Some(44000),
|
||||||
|
|
@ -1175,7 +1148,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(43000),
|
view_count: Some(43000),
|
||||||
|
|
@ -1217,7 +1189,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(39000),
|
view_count: Some(39000),
|
||||||
|
|
@ -1259,7 +1230,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(147000),
|
view_count: Some(147000),
|
||||||
|
|
@ -1301,7 +1271,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(78000),
|
view_count: Some(78000),
|
||||||
|
|
@ -1343,7 +1312,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(45000),
|
view_count: Some(45000),
|
||||||
|
|
@ -1385,7 +1353,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(34000),
|
view_count: Some(34000),
|
||||||
|
|
@ -1427,7 +1394,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(45000),
|
view_count: Some(45000),
|
||||||
|
|
@ -1469,7 +1435,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(39000),
|
view_count: Some(39000),
|
||||||
|
|
@ -1511,7 +1476,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(42000),
|
view_count: Some(42000),
|
||||||
|
|
@ -1553,7 +1517,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(39000),
|
view_count: Some(39000),
|
||||||
|
|
@ -1595,7 +1558,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(46000),
|
view_count: Some(46000),
|
||||||
|
|
@ -1637,7 +1599,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(51000),
|
view_count: Some(51000),
|
||||||
|
|
@ -1679,7 +1640,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(51000),
|
view_count: Some(51000),
|
||||||
|
|
@ -1721,7 +1681,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(57000),
|
view_count: Some(57000),
|
||||||
|
|
@ -1763,7 +1722,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(47000),
|
view_count: Some(47000),
|
||||||
|
|
@ -1805,7 +1763,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(63000),
|
view_count: Some(63000),
|
||||||
|
|
@ -1847,7 +1804,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(253000),
|
view_count: Some(253000),
|
||||||
|
|
@ -1889,7 +1845,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(96000),
|
view_count: Some(96000),
|
||||||
|
|
@ -1931,7 +1886,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(248000),
|
view_count: Some(248000),
|
||||||
|
|
@ -1973,7 +1927,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(124000),
|
view_count: Some(124000),
|
||||||
|
|
@ -2015,7 +1968,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(40000),
|
view_count: Some(40000),
|
||||||
|
|
@ -2057,7 +2009,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(161000),
|
view_count: Some(161000),
|
||||||
|
|
@ -2099,7 +2050,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(49000),
|
view_count: Some(49000),
|
||||||
|
|
@ -2141,7 +2091,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(41000),
|
view_count: Some(41000),
|
||||||
|
|
@ -2183,7 +2132,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(191000),
|
view_count: Some(191000),
|
||||||
|
|
@ -2225,7 +2173,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(33000),
|
view_count: Some(33000),
|
||||||
|
|
@ -2267,7 +2214,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(43000),
|
view_count: Some(43000),
|
||||||
|
|
@ -2309,7 +2255,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(255000),
|
view_count: Some(255000),
|
||||||
|
|
@ -2351,7 +2296,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(104000),
|
view_count: Some(104000),
|
||||||
|
|
@ -2393,7 +2337,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(126000),
|
view_count: Some(126000),
|
||||||
|
|
@ -2435,7 +2378,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(265000),
|
view_count: Some(265000),
|
||||||
|
|
@ -2477,7 +2419,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(105000),
|
view_count: Some(105000),
|
||||||
|
|
@ -2519,7 +2460,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(69000),
|
view_count: Some(69000),
|
||||||
|
|
@ -2561,7 +2501,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(73000),
|
view_count: Some(73000),
|
||||||
|
|
@ -2603,7 +2542,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(127000),
|
view_count: Some(127000),
|
||||||
|
|
@ -2645,7 +2583,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(43000),
|
view_count: Some(43000),
|
||||||
|
|
@ -2687,7 +2624,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(171000),
|
view_count: Some(171000),
|
||||||
|
|
@ -2729,7 +2665,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(146000),
|
view_count: Some(146000),
|
||||||
|
|
@ -2771,7 +2706,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 years ago"),
|
publish_date_txt: Some("9 years ago"),
|
||||||
view_count: Some(139000),
|
view_count: Some(139000),
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 months ago"),
|
publish_date_txt: Some("8 months ago"),
|
||||||
view_count: Some(37000000),
|
view_count: Some(37000000),
|
||||||
|
|
@ -83,7 +82,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(72000000),
|
view_count: Some(72000000),
|
||||||
|
|
@ -125,7 +123,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 months ago"),
|
publish_date_txt: Some("9 months ago"),
|
||||||
view_count: Some(32000000),
|
view_count: Some(32000000),
|
||||||
|
|
@ -167,7 +164,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(40000000),
|
view_count: Some(40000000),
|
||||||
|
|
@ -209,7 +205,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("13 years ago"),
|
publish_date_txt: Some("13 years ago"),
|
||||||
view_count: Some(491000000),
|
view_count: Some(491000000),
|
||||||
|
|
@ -251,7 +246,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 months ago"),
|
publish_date_txt: Some("9 months ago"),
|
||||||
view_count: Some(27000000),
|
view_count: Some(27000000),
|
||||||
|
|
@ -293,7 +287,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 months ago"),
|
publish_date_txt: Some("6 months ago"),
|
||||||
view_count: Some(18000000),
|
view_count: Some(18000000),
|
||||||
|
|
@ -335,7 +328,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 years ago"),
|
publish_date_txt: Some("8 years ago"),
|
||||||
view_count: Some(259000000),
|
view_count: Some(259000000),
|
||||||
|
|
@ -377,7 +369,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("13 years ago"),
|
publish_date_txt: Some("13 years ago"),
|
||||||
view_count: Some(361000000),
|
view_count: Some(361000000),
|
||||||
|
|
@ -419,7 +410,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 years ago"),
|
publish_date_txt: Some("11 years ago"),
|
||||||
view_count: Some(313000000),
|
view_count: Some(313000000),
|
||||||
|
|
@ -461,7 +451,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 years ago"),
|
publish_date_txt: Some("4 years ago"),
|
||||||
view_count: Some(104000000),
|
view_count: Some(104000000),
|
||||||
|
|
@ -503,7 +492,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 years ago"),
|
publish_date_txt: Some("3 years ago"),
|
||||||
view_count: Some(76000000),
|
view_count: Some(76000000),
|
||||||
|
|
@ -545,7 +533,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 years ago"),
|
publish_date_txt: Some("2 years ago"),
|
||||||
view_count: Some(66000000),
|
view_count: Some(66000000),
|
||||||
|
|
@ -587,7 +574,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(6200000),
|
view_count: Some(6200000),
|
||||||
|
|
@ -629,7 +615,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("13 years ago"),
|
publish_date_txt: Some("13 years ago"),
|
||||||
view_count: Some(265000000),
|
view_count: Some(265000000),
|
||||||
|
|
@ -671,7 +656,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("13 years ago"),
|
publish_date_txt: Some("13 years ago"),
|
||||||
view_count: Some(283000000),
|
view_count: Some(283000000),
|
||||||
|
|
@ -713,7 +697,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("13 years ago"),
|
publish_date_txt: Some("13 years ago"),
|
||||||
view_count: Some(279000000),
|
view_count: Some(279000000),
|
||||||
|
|
@ -755,7 +738,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 years ago"),
|
publish_date_txt: Some("3 years ago"),
|
||||||
view_count: Some(76000000),
|
view_count: Some(76000000),
|
||||||
|
|
@ -797,7 +779,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(31000000),
|
view_count: Some(31000000),
|
||||||
|
|
@ -839,7 +820,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("12 years ago"),
|
publish_date_txt: Some("12 years ago"),
|
||||||
view_count: Some(210000000),
|
view_count: Some(210000000),
|
||||||
|
|
@ -881,7 +861,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 months ago"),
|
publish_date_txt: Some("9 months ago"),
|
||||||
view_count: Some(13000000),
|
view_count: Some(13000000),
|
||||||
|
|
@ -923,7 +902,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 years ago"),
|
publish_date_txt: Some("3 years ago"),
|
||||||
view_count: Some(58000000),
|
view_count: Some(58000000),
|
||||||
|
|
@ -965,7 +943,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(14000000),
|
view_count: Some(14000000),
|
||||||
|
|
@ -1007,7 +984,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(12000000),
|
view_count: Some(12000000),
|
||||||
|
|
@ -1049,7 +1025,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(62000000),
|
view_count: Some(62000000),
|
||||||
|
|
@ -1091,7 +1066,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 months ago"),
|
publish_date_txt: Some("6 months ago"),
|
||||||
view_count: Some(5500000),
|
view_count: Some(5500000),
|
||||||
|
|
@ -1133,7 +1107,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(78000000),
|
view_count: Some(78000000),
|
||||||
|
|
@ -1175,7 +1148,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(17000000),
|
view_count: Some(17000000),
|
||||||
|
|
@ -1217,7 +1189,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(15000000),
|
view_count: Some(15000000),
|
||||||
|
|
@ -1259,7 +1230,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("11 months ago"),
|
publish_date_txt: Some("11 months ago"),
|
||||||
view_count: Some(8800000),
|
view_count: Some(8800000),
|
||||||
|
|
@ -1301,7 +1271,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 years ago"),
|
publish_date_txt: Some("2 years ago"),
|
||||||
view_count: Some(22000000),
|
view_count: Some(22000000),
|
||||||
|
|
@ -1343,7 +1312,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("13 years ago"),
|
publish_date_txt: Some("13 years ago"),
|
||||||
view_count: Some(112000000),
|
view_count: Some(112000000),
|
||||||
|
|
@ -1385,7 +1353,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 years ago"),
|
publish_date_txt: Some("3 years ago"),
|
||||||
view_count: Some(29000000),
|
view_count: Some(29000000),
|
||||||
|
|
@ -1427,7 +1394,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 years ago"),
|
publish_date_txt: Some("3 years ago"),
|
||||||
view_count: Some(23000000),
|
view_count: Some(23000000),
|
||||||
|
|
@ -1469,7 +1435,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("13 years ago"),
|
publish_date_txt: Some("13 years ago"),
|
||||||
view_count: Some(90000000),
|
view_count: Some(90000000),
|
||||||
|
|
@ -1511,7 +1476,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(6100000),
|
view_count: Some(6100000),
|
||||||
|
|
@ -1553,7 +1517,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 years ago"),
|
publish_date_txt: Some("4 years ago"),
|
||||||
view_count: Some(23000000),
|
view_count: Some(23000000),
|
||||||
|
|
@ -1595,7 +1558,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("15 years ago"),
|
publish_date_txt: Some("15 years ago"),
|
||||||
view_count: Some(74000000),
|
view_count: Some(74000000),
|
||||||
|
|
@ -1637,7 +1599,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 months ago"),
|
publish_date_txt: Some("7 months ago"),
|
||||||
view_count: Some(2800000),
|
view_count: Some(2800000),
|
||||||
|
|
@ -1679,7 +1640,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(4900000),
|
view_count: Some(4900000),
|
||||||
|
|
@ -1721,7 +1681,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(7300000),
|
view_count: Some(7300000),
|
||||||
|
|
@ -1763,7 +1722,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("10 years ago"),
|
publish_date_txt: Some("10 years ago"),
|
||||||
view_count: Some(39000000),
|
view_count: Some(39000000),
|
||||||
|
|
@ -1805,7 +1763,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 years ago"),
|
publish_date_txt: Some("7 years ago"),
|
||||||
view_count: Some(27000000),
|
view_count: Some(27000000),
|
||||||
|
|
@ -1847,7 +1804,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("10 years ago"),
|
publish_date_txt: Some("10 years ago"),
|
||||||
view_count: Some(38000000),
|
view_count: Some(38000000),
|
||||||
|
|
@ -1889,7 +1845,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 months ago"),
|
publish_date_txt: Some("6 months ago"),
|
||||||
view_count: Some(1900000),
|
view_count: Some(1900000),
|
||||||
|
|
@ -1931,7 +1886,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 years ago"),
|
publish_date_txt: Some("2 years ago"),
|
||||||
view_count: Some(8800000),
|
view_count: Some(8800000),
|
||||||
|
|
@ -1973,7 +1927,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("9 months ago"),
|
publish_date_txt: Some("9 months ago"),
|
||||||
view_count: Some(2500000),
|
view_count: Some(2500000),
|
||||||
|
|
@ -2015,7 +1968,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 years ago"),
|
publish_date_txt: Some("2 years ago"),
|
||||||
view_count: Some(6300000),
|
view_count: Some(6300000),
|
||||||
|
|
@ -2057,7 +2009,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(5600000),
|
view_count: Some(5600000),
|
||||||
|
|
@ -2099,7 +2050,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 months ago"),
|
publish_date_txt: Some("5 months ago"),
|
||||||
view_count: Some(1100000),
|
view_count: Some(1100000),
|
||||||
|
|
@ -2141,7 +2091,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 months ago"),
|
publish_date_txt: Some("7 months ago"),
|
||||||
view_count: Some(1200000),
|
view_count: Some(1200000),
|
||||||
|
|
@ -2183,7 +2132,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(1700000),
|
view_count: Some(1700000),
|
||||||
|
|
@ -2225,7 +2173,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 years ago"),
|
publish_date_txt: Some("4 years ago"),
|
||||||
view_count: Some(7100000),
|
view_count: Some(7100000),
|
||||||
|
|
@ -2267,7 +2214,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("10 months ago"),
|
publish_date_txt: Some("10 months ago"),
|
||||||
view_count: Some(1400000),
|
view_count: Some(1400000),
|
||||||
|
|
@ -2309,7 +2255,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 years ago"),
|
publish_date_txt: Some("2 years ago"),
|
||||||
view_count: Some(3600000),
|
view_count: Some(3600000),
|
||||||
|
|
@ -2351,7 +2296,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 months ago"),
|
publish_date_txt: Some("6 months ago"),
|
||||||
view_count: Some(635000),
|
view_count: Some(635000),
|
||||||
|
|
@ -2393,7 +2337,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(5700000),
|
view_count: Some(5700000),
|
||||||
|
|
@ -2435,7 +2378,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 years ago"),
|
publish_date_txt: Some("3 years ago"),
|
||||||
view_count: Some(3700000),
|
view_count: Some(3700000),
|
||||||
|
|
@ -2477,7 +2419,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 months ago"),
|
publish_date_txt: Some("6 months ago"),
|
||||||
view_count: Some(497000),
|
view_count: Some(497000),
|
||||||
|
|
@ -2519,7 +2460,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 months ago"),
|
publish_date_txt: Some("6 months ago"),
|
||||||
view_count: Some(484000),
|
view_count: Some(484000),
|
||||||
|
|
@ -2561,7 +2501,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(1400000),
|
view_count: Some(1400000),
|
||||||
|
|
@ -2603,7 +2542,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 years ago"),
|
publish_date_txt: Some("4 years ago"),
|
||||||
view_count: Some(3100000),
|
view_count: Some(3100000),
|
||||||
|
|
@ -2645,7 +2583,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(960000),
|
view_count: Some(960000),
|
||||||
|
|
@ -2687,7 +2624,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 years ago"),
|
publish_date_txt: Some("3 years ago"),
|
||||||
view_count: Some(1800000),
|
view_count: Some(1800000),
|
||||||
|
|
@ -2729,7 +2665,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(2700000),
|
view_count: Some(2700000),
|
||||||
|
|
@ -2771,7 +2706,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(528000),
|
view_count: Some(528000),
|
||||||
|
|
@ -2813,7 +2747,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 months ago"),
|
publish_date_txt: Some("6 months ago"),
|
||||||
view_count: Some(237000),
|
view_count: Some(237000),
|
||||||
|
|
@ -2855,7 +2788,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 months ago"),
|
publish_date_txt: Some("6 months ago"),
|
||||||
view_count: Some(211000),
|
view_count: Some(211000),
|
||||||
|
|
@ -2897,7 +2829,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 months ago"),
|
publish_date_txt: Some("6 months ago"),
|
||||||
view_count: Some(195000),
|
view_count: Some(195000),
|
||||||
|
|
@ -2939,7 +2870,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("10 months ago"),
|
publish_date_txt: Some("10 months ago"),
|
||||||
view_count: Some(303000),
|
view_count: Some(303000),
|
||||||
|
|
@ -2981,7 +2911,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("10 months ago"),
|
publish_date_txt: Some("10 months ago"),
|
||||||
view_count: Some(255000),
|
view_count: Some(255000),
|
||||||
|
|
@ -3023,7 +2952,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 months ago"),
|
publish_date_txt: Some("5 months ago"),
|
||||||
view_count: Some(102000),
|
view_count: Some(102000),
|
||||||
|
|
@ -3065,7 +2993,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(222000),
|
view_count: Some(222000),
|
||||||
|
|
@ -3107,7 +3034,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 years ago"),
|
publish_date_txt: Some("3 years ago"),
|
||||||
view_count: Some(693000),
|
view_count: Some(693000),
|
||||||
|
|
@ -3149,7 +3075,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 years ago"),
|
publish_date_txt: Some("3 years ago"),
|
||||||
view_count: Some(613000),
|
view_count: Some(613000),
|
||||||
|
|
@ -3191,7 +3116,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 months ago"),
|
publish_date_txt: Some("7 months ago"),
|
||||||
view_count: Some(125000),
|
view_count: Some(125000),
|
||||||
|
|
@ -3233,7 +3157,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("10 months ago"),
|
publish_date_txt: Some("10 months ago"),
|
||||||
view_count: Some(143000),
|
view_count: Some(143000),
|
||||||
|
|
@ -3275,7 +3198,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 years ago"),
|
publish_date_txt: Some("2 years ago"),
|
||||||
view_count: Some(252000),
|
view_count: Some(252000),
|
||||||
|
|
@ -3317,7 +3239,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("10 months ago"),
|
publish_date_txt: Some("10 months ago"),
|
||||||
view_count: Some(100000),
|
view_count: Some(100000),
|
||||||
|
|
@ -3359,7 +3280,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(97000),
|
view_count: Some(97000),
|
||||||
|
|
@ -3401,7 +3321,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 years ago"),
|
publish_date_txt: Some("2 years ago"),
|
||||||
view_count: Some(88000),
|
view_count: Some(88000),
|
||||||
|
|
@ -3443,7 +3362,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 years ago"),
|
publish_date_txt: Some("4 years ago"),
|
||||||
view_count: Some(151000),
|
view_count: Some(151000),
|
||||||
|
|
@ -3485,7 +3403,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 months ago"),
|
publish_date_txt: Some("8 months ago"),
|
||||||
view_count: Some(26000),
|
view_count: Some(26000),
|
||||||
|
|
@ -3527,7 +3444,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 months ago"),
|
publish_date_txt: Some("6 months ago"),
|
||||||
view_count: Some(16000),
|
view_count: Some(16000),
|
||||||
|
|
@ -3569,7 +3485,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(125000),
|
view_count: Some(125000),
|
||||||
|
|
@ -3611,7 +3526,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("5 years ago"),
|
publish_date_txt: Some("5 years ago"),
|
||||||
view_count: Some(108000),
|
view_count: Some(108000),
|
||||||
|
|
@ -3653,7 +3567,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 year ago"),
|
publish_date_txt: Some("1 year ago"),
|
||||||
view_count: Some(13000),
|
view_count: Some(13000),
|
||||||
|
|
@ -3695,7 +3608,6 @@ Playlist(
|
||||||
verification: none,
|
verification: none,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 months ago"),
|
publish_date_txt: Some("7 months ago"),
|
||||||
view_count: Some(4500),
|
view_count: Some(4500),
|
||||||
|
|
|
||||||
|
|
@ -26,346 +26,6 @@ SearchResult(
|
||||||
subscriber_count: Some(2920000),
|
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}...",
|
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(
|
|
||||||
id: "N5AKQflK1TU",
|
|
||||||
name: "When you impulse buy...",
|
|
||||||
duration: Some(60),
|
|
||||||
thumbnail: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/N5AKQflK1TU/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLAsKUEXxvFyA6J9cUPJlYYtRBjxmg",
|
|
||||||
width: 405,
|
|
||||||
height: 720,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
channel: Some(ChannelTag(
|
|
||||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
|
||||||
name: "Doobydobap",
|
|
||||||
avatar: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.ggpht.com/dm5Aq93xvVJz0NoVO88ieBkDXmuShCujGPlZ7qETMEPTrXvPUCFI3-BB6Xs_P-r6Uk3mnBy9zA=s68-c-k-c0x00ffffff-no-rj",
|
|
||||||
width: 68,
|
|
||||||
height: 68,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
verification: verified,
|
|
||||||
subscriber_count: None,
|
|
||||||
)),
|
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
|
||||||
publish_date_txt: Some("1 day ago"),
|
|
||||||
view_count: Some(858993),
|
|
||||||
is_live: false,
|
|
||||||
is_short: true,
|
|
||||||
is_upcoming: false,
|
|
||||||
short_description: Some("shorts #jam https://doobydobap.com/recipe/hongsi_jam Instagram @doobydobap Join my discord!"),
|
|
||||||
)),
|
|
||||||
Video(VideoItem(
|
|
||||||
id: "OzIFALQ_YtA",
|
|
||||||
name: "taste testing gam!",
|
|
||||||
duration: Some(60),
|
|
||||||
thumbnail: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/OzIFALQ_YtA/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLD1E-eWjZrzHcfzh-DBWeZ6ewxNNg",
|
|
||||||
width: 405,
|
|
||||||
height: 720,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
channel: Some(ChannelTag(
|
|
||||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
|
||||||
name: "Doobydobap",
|
|
||||||
avatar: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.ggpht.com/dm5Aq93xvVJz0NoVO88ieBkDXmuShCujGPlZ7qETMEPTrXvPUCFI3-BB6Xs_P-r6Uk3mnBy9zA=s68-c-k-c0x00ffffff-no-rj",
|
|
||||||
width: 68,
|
|
||||||
height: 68,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
verification: verified,
|
|
||||||
subscriber_count: None,
|
|
||||||
)),
|
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
|
||||||
publish_date_txt: Some("3 days ago"),
|
|
||||||
view_count: Some(1000180),
|
|
||||||
is_live: false,
|
|
||||||
is_short: true,
|
|
||||||
is_upcoming: false,
|
|
||||||
short_description: Some("shorts #fruit #mukbang Instagram @doobydobap Join my discord! https://discord.gg/doobyverse www.doobydobap.com for\u{a0}..."),
|
|
||||||
)),
|
|
||||||
Video(VideoItem(
|
|
||||||
id: "dAcJILbc_0Q",
|
|
||||||
name: "How to: Korean rice wine 🍶 (makgeolli)",
|
|
||||||
duration: Some(59),
|
|
||||||
thumbnail: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/dAcJILbc_0Q/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLCi9qIkFstiJzKf9YdwdLEKzsZfZA",
|
|
||||||
width: 405,
|
|
||||||
height: 720,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
channel: Some(ChannelTag(
|
|
||||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
|
||||||
name: "Doobydobap",
|
|
||||||
avatar: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.ggpht.com/dm5Aq93xvVJz0NoVO88ieBkDXmuShCujGPlZ7qETMEPTrXvPUCFI3-BB6Xs_P-r6Uk3mnBy9zA=s68-c-k-c0x00ffffff-no-rj",
|
|
||||||
width: 68,
|
|
||||||
height: 68,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
verification: verified,
|
|
||||||
subscriber_count: None,
|
|
||||||
)),
|
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
|
||||||
publish_date_txt: Some("5 days ago"),
|
|
||||||
view_count: Some(1325816),
|
|
||||||
is_live: false,
|
|
||||||
is_short: true,
|
|
||||||
is_upcoming: false,
|
|
||||||
short_description: Some("shorts Instagram @doobydobap Join my discord! https://discord.gg/doobyverse www.doobydobap.com for recipes & stories."),
|
|
||||||
)),
|
|
||||||
Video(VideoItem(
|
|
||||||
id: "9NuhKCv3crg",
|
|
||||||
name: "the end.",
|
|
||||||
duration: Some(982),
|
|
||||||
thumbnail: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/9NuhKCv3crg/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB3RO6rSdCdoNvVoOIuXHuQLMAhjg",
|
|
||||||
width: 360,
|
|
||||||
height: 202,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/9NuhKCv3crg/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCGnhU_OdOXdc1jI-o8oDVXsyARaQ",
|
|
||||||
width: 720,
|
|
||||||
height: 404,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
channel: Some(ChannelTag(
|
|
||||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
|
||||||
name: "Doobydobap",
|
|
||||||
avatar: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.ggpht.com/dm5Aq93xvVJz0NoVO88ieBkDXmuShCujGPlZ7qETMEPTrXvPUCFI3-BB6Xs_P-r6Uk3mnBy9zA=s68-c-k-c0x00ffffff-no-rj",
|
|
||||||
width: 68,
|
|
||||||
height: 68,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
verification: verified,
|
|
||||||
subscriber_count: None,
|
|
||||||
)),
|
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
|
||||||
publish_date_txt: Some("7 days ago"),
|
|
||||||
view_count: Some(974475),
|
|
||||||
is_live: false,
|
|
||||||
is_short: false,
|
|
||||||
is_upcoming: false,
|
|
||||||
short_description: Some("or the start of something new~~~~~ Thank you for your patience on the vlog, it took some time to adjust to my new normal. Excited\u{a0}..."),
|
|
||||||
)),
|
|
||||||
Video(VideoItem(
|
|
||||||
id: "GvutfmW26JQ",
|
|
||||||
name: "👹stay sour 🍋",
|
|
||||||
duration: Some(52),
|
|
||||||
thumbnail: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/GvutfmW26JQ/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLATzHy4VrMbKmNT14yfqCUBvElmpQ",
|
|
||||||
width: 405,
|
|
||||||
height: 720,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
channel: Some(ChannelTag(
|
|
||||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
|
||||||
name: "Doobydobap",
|
|
||||||
avatar: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.ggpht.com/dm5Aq93xvVJz0NoVO88ieBkDXmuShCujGPlZ7qETMEPTrXvPUCFI3-BB6Xs_P-r6Uk3mnBy9zA=s68-c-k-c0x00ffffff-no-rj",
|
|
||||||
width: 68,
|
|
||||||
height: 68,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
verification: verified,
|
|
||||||
subscriber_count: None,
|
|
||||||
)),
|
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
|
||||||
publish_date_txt: Some("8 days ago"),
|
|
||||||
view_count: Some(1096013),
|
|
||||||
is_live: false,
|
|
||||||
is_short: true,
|
|
||||||
is_upcoming: false,
|
|
||||||
short_description: Some("Ingredients: ** Citrus Filling** 1 cup mandarin juice or any orange-y citrus in season! 6 eggs 1 1/2 cup sugar ⅓ cup flour zest of 1\u{a0}..."),
|
|
||||||
)),
|
|
||||||
Video(VideoItem(
|
|
||||||
id: "MwWdlNamxN0",
|
|
||||||
name: "what I do with leftovers",
|
|
||||||
duration: Some(60),
|
|
||||||
thumbnail: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/MwWdlNamxN0/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLDQFiOrRxYkYaYaJleuwExGzK0A8Q",
|
|
||||||
width: 405,
|
|
||||||
height: 720,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
channel: Some(ChannelTag(
|
|
||||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
|
||||||
name: "Doobydobap",
|
|
||||||
avatar: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.ggpht.com/dm5Aq93xvVJz0NoVO88ieBkDXmuShCujGPlZ7qETMEPTrXvPUCFI3-BB6Xs_P-r6Uk3mnBy9zA=s68-c-k-c0x00ffffff-no-rj",
|
|
||||||
width: 68,
|
|
||||||
height: 68,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
verification: verified,
|
|
||||||
subscriber_count: None,
|
|
||||||
)),
|
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
|
||||||
publish_date_txt: Some("11 days ago"),
|
|
||||||
view_count: Some(2735502),
|
|
||||||
is_live: false,
|
|
||||||
is_short: true,
|
|
||||||
is_upcoming: false,
|
|
||||||
short_description: Some("shorts #friedrice #cooking Instagram @doobydobap Join my discord! https://discord.gg/doobyverse www.doobydobap.com for\u{a0}..."),
|
|
||||||
)),
|
|
||||||
Video(VideoItem(
|
|
||||||
id: "FsYaHsohjBc",
|
|
||||||
name: "osechi ft. slim shady",
|
|
||||||
duration: Some(52),
|
|
||||||
thumbnail: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/FsYaHsohjBc/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLBuuMnmUl-er211GWmxJoIacRMWPQ",
|
|
||||||
width: 405,
|
|
||||||
height: 720,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
channel: Some(ChannelTag(
|
|
||||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
|
||||||
name: "Doobydobap",
|
|
||||||
avatar: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.ggpht.com/dm5Aq93xvVJz0NoVO88ieBkDXmuShCujGPlZ7qETMEPTrXvPUCFI3-BB6Xs_P-r6Uk3mnBy9zA=s68-c-k-c0x00ffffff-no-rj",
|
|
||||||
width: 68,
|
|
||||||
height: 68,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
verification: verified,
|
|
||||||
subscriber_count: None,
|
|
||||||
)),
|
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
|
||||||
publish_date_txt: Some("2 weeks ago"),
|
|
||||||
view_count: Some(1168881),
|
|
||||||
is_live: false,
|
|
||||||
is_short: true,
|
|
||||||
is_upcoming: false,
|
|
||||||
short_description: Some("shorts #cooking Instagram @doobydobap Join my discord! https://discord.gg/doobyverse www.doobydobap.com for recipes\u{a0}..."),
|
|
||||||
)),
|
|
||||||
Video(VideoItem(
|
|
||||||
id: "38Gd6TdmNVs",
|
|
||||||
name: "KOREAN BARBECUE l doob gourmand ep.3",
|
|
||||||
duration: Some(525),
|
|
||||||
thumbnail: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/38Gd6TdmNVs/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDsNWReQCqk65JFrXXAd6rxMUI_Bw",
|
|
||||||
width: 360,
|
|
||||||
height: 202,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/38Gd6TdmNVs/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLA46ZJUIjqXr6u27TG5kiThPUj0EQ",
|
|
||||||
width: 720,
|
|
||||||
height: 404,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
channel: Some(ChannelTag(
|
|
||||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
|
||||||
name: "Doobydobap",
|
|
||||||
avatar: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.ggpht.com/dm5Aq93xvVJz0NoVO88ieBkDXmuShCujGPlZ7qETMEPTrXvPUCFI3-BB6Xs_P-r6Uk3mnBy9zA=s68-c-k-c0x00ffffff-no-rj",
|
|
||||||
width: 68,
|
|
||||||
height: 68,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
verification: verified,
|
|
||||||
subscriber_count: None,
|
|
||||||
)),
|
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
|
||||||
publish_date_txt: Some("2 weeks ago"),
|
|
||||||
view_count: Some(354486),
|
|
||||||
is_live: false,
|
|
||||||
is_short: false,
|
|
||||||
is_upcoming: false,
|
|
||||||
short_description: Some("I haven\'t done a doob gourmand series in so so long! I hope you enjoyed it, let me know what kind of food you\'re interested in\u{a0}..."),
|
|
||||||
)),
|
|
||||||
Video(VideoItem(
|
|
||||||
id: "o04Yo2qxqcc",
|
|
||||||
name: "trailer l doob gourmand ep.3 k bbq",
|
|
||||||
duration: Some(53),
|
|
||||||
thumbnail: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/o04Yo2qxqcc/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLAAqXMMzlzLMIFNEAMwgDbQ1NkuSw",
|
|
||||||
width: 405,
|
|
||||||
height: 720,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
channel: Some(ChannelTag(
|
|
||||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
|
||||||
name: "Doobydobap",
|
|
||||||
avatar: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.ggpht.com/dm5Aq93xvVJz0NoVO88ieBkDXmuShCujGPlZ7qETMEPTrXvPUCFI3-BB6Xs_P-r6Uk3mnBy9zA=s68-c-k-c0x00ffffff-no-rj",
|
|
||||||
width: 68,
|
|
||||||
height: 68,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
verification: verified,
|
|
||||||
subscriber_count: None,
|
|
||||||
)),
|
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
|
||||||
publish_date_txt: Some("2 weeks ago"),
|
|
||||||
view_count: Some(639926),
|
|
||||||
is_live: false,
|
|
||||||
is_short: true,
|
|
||||||
is_upcoming: false,
|
|
||||||
short_description: Some("shorts #bbq #korean ... a snippet from my doob gourmand, coming soon! Instagram @doobydobap Join my discord!"),
|
|
||||||
)),
|
|
||||||
Video(VideoItem(
|
|
||||||
id: "JBUZE0mIlg8",
|
|
||||||
name: "small but sure joy",
|
|
||||||
duration: Some(29),
|
|
||||||
thumbnail: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/JBUZE0mIlg8/hq720_2.jpg?sqp=-oaymwEdCJUDENAFSFXyq4qpAw8IARUAAIhCcAHAAQbQAQE=&rs=AOn4CLCRBlyIUBUm_aypWz4tGkrDNJxIZw",
|
|
||||||
width: 405,
|
|
||||||
height: 720,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
channel: Some(ChannelTag(
|
|
||||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
|
||||||
name: "Doobydobap",
|
|
||||||
avatar: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.ggpht.com/dm5Aq93xvVJz0NoVO88ieBkDXmuShCujGPlZ7qETMEPTrXvPUCFI3-BB6Xs_P-r6Uk3mnBy9zA=s68-c-k-c0x00ffffff-no-rj",
|
|
||||||
width: 68,
|
|
||||||
height: 68,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
verification: verified,
|
|
||||||
subscriber_count: None,
|
|
||||||
)),
|
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
|
||||||
publish_date_txt: Some("2 weeks ago"),
|
|
||||||
view_count: Some(1231893),
|
|
||||||
is_live: false,
|
|
||||||
is_short: true,
|
|
||||||
is_upcoming: false,
|
|
||||||
short_description: Some("shorts #food #korea Instagram @doobydobap Join my discord! https://discord.gg/doobyverse www.doobydobap.com for\u{a0}..."),
|
|
||||||
)),
|
|
||||||
Video(VideoItem(
|
Video(VideoItem(
|
||||||
id: "1VW7iXRIrc8",
|
id: "1VW7iXRIrc8",
|
||||||
name: "Alone, in the City of Love",
|
name: "Alone, in the City of Love",
|
||||||
|
|
@ -395,7 +55,6 @@ SearchResult(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 months ago"),
|
publish_date_txt: Some("6 months ago"),
|
||||||
view_count: Some(531580),
|
view_count: Some(531580),
|
||||||
|
|
@ -433,7 +92,6 @@ SearchResult(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 days ago"),
|
publish_date_txt: Some("7 days ago"),
|
||||||
view_count: Some(974475),
|
view_count: Some(974475),
|
||||||
|
|
@ -471,7 +129,6 @@ SearchResult(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 months ago"),
|
publish_date_txt: Some("4 months ago"),
|
||||||
view_count: Some(1034415),
|
view_count: Some(1034415),
|
||||||
|
|
@ -509,7 +166,6 @@ SearchResult(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 months ago"),
|
publish_date_txt: Some("4 months ago"),
|
||||||
view_count: Some(831908),
|
view_count: Some(831908),
|
||||||
|
|
@ -518,386 +174,6 @@ SearchResult(
|
||||||
is_upcoming: false,
|
is_upcoming: false,
|
||||||
short_description: Some("I could palpably feel how I\'m so much happier than before when I was reviewing my footage All the finalized recipes will be\u{a0}..."),
|
short_description: Some("I could palpably feel how I\'m so much happier than before when I was reviewing my footage All the finalized recipes will be\u{a0}..."),
|
||||||
)),
|
)),
|
||||||
Video(VideoItem(
|
|
||||||
id: "ExHRTtm8QEA",
|
|
||||||
name: "Mother, an Inventor? EP 456 | Atashin\'chi | [ENG sub]",
|
|
||||||
duration: Some(418),
|
|
||||||
thumbnail: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/ExHRTtm8QEA/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAge-bKNb6AanyqxV7ak4Kfn-3nYw",
|
|
||||||
width: 360,
|
|
||||||
height: 202,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/ExHRTtm8QEA/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBFFYvASoliDr52srhWeMpcNf1oJw",
|
|
||||||
width: 720,
|
|
||||||
height: 404,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
channel: Some(ChannelTag(
|
|
||||||
id: "UCkwJXqFl-9VVvK9udYCFjMw",
|
|
||||||
name: "【アニメ】あたしンち公式チャンネル",
|
|
||||||
avatar: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.ggpht.com/ytc/AMLnZu-wrmP4MaWt-SDzrcSiAeN7QTR2VgWBmt9Zr3TD=s68-c-k-c0x00ffffff-no-rj",
|
|
||||||
width: 68,
|
|
||||||
height: 68,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
verification: none,
|
|
||||||
subscriber_count: None,
|
|
||||||
)),
|
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
|
||||||
publish_date_txt: Some("11 months ago"),
|
|
||||||
view_count: Some(386384),
|
|
||||||
is_live: false,
|
|
||||||
is_short: false,
|
|
||||||
is_upcoming: false,
|
|
||||||
short_description: Some("▼Subscribe to the official channel here \nhttps://www.youtube.com/c/atashinchi?sub_confirmation=1\n#Atashinchi ..."),
|
|
||||||
)),
|
|
||||||
Video(VideoItem(
|
|
||||||
id: "8mxdUQadX6Y",
|
|
||||||
name: "wholesome days in korea :\'\')",
|
|
||||||
duration: Some(497),
|
|
||||||
thumbnail: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/8mxdUQadX6Y/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDoP9fZds83zk9TdFK0ZDDoV01c2g",
|
|
||||||
width: 360,
|
|
||||||
height: 202,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/8mxdUQadX6Y/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAbM5vfd7RzivOeKK4OG3ngMpCqwA",
|
|
||||||
width: 720,
|
|
||||||
height: 404,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
channel: Some(ChannelTag(
|
|
||||||
id: "UCTZHeY_cugi1rAAPoH-sMkA",
|
|
||||||
name: "dobochobo",
|
|
||||||
avatar: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.ggpht.com/VvcHqBmCDRXWVRlgWqRM4U69j0cde17bs9vQDn3qEMAK62dTb93MnBtpBlNX-eh2g8NX-BVEoQ=s68-c-k-c0x00ffffff-no-rj",
|
|
||||||
width: 68,
|
|
||||||
height: 68,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
verification: none,
|
|
||||||
subscriber_count: None,
|
|
||||||
)),
|
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
|
||||||
publish_date_txt: Some("17 hours ago"),
|
|
||||||
view_count: Some(19274),
|
|
||||||
is_live: false,
|
|
||||||
is_short: false,
|
|
||||||
is_upcoming: false,
|
|
||||||
short_description: Some("a short n sweet vlog of some of my last days in seoul - visiting my grandma, people watching at hangang, and spending time with\u{a0}..."),
|
|
||||||
)),
|
|
||||||
Video(VideoItem(
|
|
||||||
id: "gXFw55sYoRE",
|
|
||||||
name: "Kbbq for One",
|
|
||||||
duration: Some(874),
|
|
||||||
thumbnail: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/gXFw55sYoRE/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAvmd1zOXlDXmwCni86QaKInsHiRg",
|
|
||||||
width: 360,
|
|
||||||
height: 202,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/gXFw55sYoRE/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDS6cGKpyTFEFvd-Y-kpTOqHhFcrg",
|
|
||||||
width: 720,
|
|
||||||
height: 404,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
channel: Some(ChannelTag(
|
|
||||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
|
||||||
name: "Doobydobap",
|
|
||||||
avatar: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.ggpht.com/dm5Aq93xvVJz0NoVO88ieBkDXmuShCujGPlZ7qETMEPTrXvPUCFI3-BB6Xs_P-r6Uk3mnBy9zA=s68-c-k-c0x00ffffff-no-rj",
|
|
||||||
width: 68,
|
|
||||||
height: 68,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
verification: verified,
|
|
||||||
subscriber_count: None,
|
|
||||||
)),
|
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
|
||||||
publish_date_txt: Some("9 months ago"),
|
|
||||||
view_count: Some(864777),
|
|
||||||
is_live: false,
|
|
||||||
is_short: false,
|
|
||||||
is_upcoming: false,
|
|
||||||
short_description: Some("Watch till the end to hear about my type ;) doobymart.com Go get your 돈역마염 T-shirts before Christmas! Instagram\u{a0}..."),
|
|
||||||
)),
|
|
||||||
Video(VideoItem(
|
|
||||||
id: "Spiq_AjCXs8",
|
|
||||||
name: "Tea and Biscuits... the British Obsession",
|
|
||||||
duration: Some(578),
|
|
||||||
thumbnail: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/Spiq_AjCXs8/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCDDN75ZCzIOVIElVqHWVANBzIVxg",
|
|
||||||
width: 360,
|
|
||||||
height: 202,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/Spiq_AjCXs8/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD2TrmSLHMNt7hDoR5jsmWMTcD7Uw",
|
|
||||||
width: 720,
|
|
||||||
height: 404,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
channel: Some(ChannelTag(
|
|
||||||
id: "UCOgGAfSUy5LvEyVS_LF5kdw",
|
|
||||||
name: "JOLLY",
|
|
||||||
avatar: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.ggpht.com/ytc/AMLnZu-2Z-LMvcKYcD3r83tRBuYsFJuau3d3rJr4AqG5fw=s68-c-k-c0x00ffffff-no-rj",
|
|
||||||
width: 68,
|
|
||||||
height: 68,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
verification: verified,
|
|
||||||
subscriber_count: None,
|
|
||||||
)),
|
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
|
||||||
publish_date_txt: Some("1 year ago"),
|
|
||||||
view_count: Some(956121),
|
|
||||||
is_live: false,
|
|
||||||
is_short: false,
|
|
||||||
is_upcoming: false,
|
|
||||||
short_description: Some("Tea and Biscuits. A British institution. British people consume more than a jolly 8 million biscuits every day... but which one is the\u{a0}..."),
|
|
||||||
)),
|
|
||||||
Video(VideoItem(
|
|
||||||
id: "IxFmWHjcdYM",
|
|
||||||
name: "Golden Fried Rice from Kaguya-Sama: Love Is War | Anime with Alvin",
|
|
||||||
duration: Some(447),
|
|
||||||
thumbnail: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/IxFmWHjcdYM/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCu1oJLIA6yl336DVuRFeMACbrYMg",
|
|
||||||
width: 360,
|
|
||||||
height: 202,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/IxFmWHjcdYM/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC9oNa5mB_qbZFjr9GQCPzdWZWB5Q",
|
|
||||||
width: 720,
|
|
||||||
height: 404,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
channel: Some(ChannelTag(
|
|
||||||
id: "UCJHA_jMfCvEnv-3kRjTCQXw",
|
|
||||||
name: "Babish Culinary Universe",
|
|
||||||
avatar: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.ggpht.com/ytc/AMLnZu8y65Kqbg0e4OUZClxeu5qteQZEQqjenCHW3wYg=s68-c-k-c0x00ffffff-no-rj",
|
|
||||||
width: 68,
|
|
||||||
height: 68,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
verification: verified,
|
|
||||||
subscriber_count: None,
|
|
||||||
)),
|
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
|
||||||
publish_date_txt: Some("20 hours ago"),
|
|
||||||
view_count: Some(262149),
|
|
||||||
is_live: false,
|
|
||||||
is_short: false,
|
|
||||||
is_upcoming: false,
|
|
||||||
short_description: Some("Save up to 40% on your SimpliSafe system. Visit https://SimpliSafe.com/babish to customize yours! Try SimpliSafe risk-free."),
|
|
||||||
)),
|
|
||||||
Video(VideoItem(
|
|
||||||
id: "djgrv_7HbsM",
|
|
||||||
name: "When British People Try French Snacks...",
|
|
||||||
duration: Some(816),
|
|
||||||
thumbnail: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/djgrv_7HbsM/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLALhZG-LeI394jh6ZN2fNs3Spm9jg",
|
|
||||||
width: 360,
|
|
||||||
height: 202,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/djgrv_7HbsM/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAE1Ygy4wMYxkl8GsFvZ6eVAyAiRA",
|
|
||||||
width: 720,
|
|
||||||
height: 404,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
channel: Some(ChannelTag(
|
|
||||||
id: "UCOgGAfSUy5LvEyVS_LF5kdw",
|
|
||||||
name: "JOLLY",
|
|
||||||
avatar: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.ggpht.com/ytc/AMLnZu-2Z-LMvcKYcD3r83tRBuYsFJuau3d3rJr4AqG5fw=s68-c-k-c0x00ffffff-no-rj",
|
|
||||||
width: 68,
|
|
||||||
height: 68,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
verification: verified,
|
|
||||||
subscriber_count: None,
|
|
||||||
)),
|
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
|
||||||
publish_date_txt: Some("2 years ago"),
|
|
||||||
view_count: Some(2347800),
|
|
||||||
is_live: false,
|
|
||||||
is_short: false,
|
|
||||||
is_upcoming: false,
|
|
||||||
short_description: Some("Today we try some Jolly French Snacks, and are reminded that French food is, well, jolly good. Buy Josh\'s autobiography (written\u{a0}..."),
|
|
||||||
)),
|
|
||||||
Video(VideoItem(
|
|
||||||
id: "EqLHh9vJIKA",
|
|
||||||
name: "Best Friends Cooking Battle (ft. Celebrity Chef)",
|
|
||||||
duration: Some(1344),
|
|
||||||
thumbnail: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/EqLHh9vJIKA/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAHKkitgyRgsAM_YaLa-LFZBeFfew",
|
|
||||||
width: 360,
|
|
||||||
height: 202,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/EqLHh9vJIKA/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB3ms2FhtfcwsnkleaIGI0475j4vQ",
|
|
||||||
width: 720,
|
|
||||||
height: 404,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
channel: Some(ChannelTag(
|
|
||||||
id: "UCOgGAfSUy5LvEyVS_LF5kdw",
|
|
||||||
name: "JOLLY",
|
|
||||||
avatar: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.ggpht.com/ytc/AMLnZu-2Z-LMvcKYcD3r83tRBuYsFJuau3d3rJr4AqG5fw=s68-c-k-c0x00ffffff-no-rj",
|
|
||||||
width: 68,
|
|
||||||
height: 68,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
verification: verified,
|
|
||||||
subscriber_count: None,
|
|
||||||
)),
|
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
|
||||||
publish_date_txt: Some("3 months ago"),
|
|
||||||
view_count: Some(773583),
|
|
||||||
is_live: false,
|
|
||||||
is_short: false,
|
|
||||||
is_upcoming: false,
|
|
||||||
short_description: Some("If you want to send us anything to open, our PO Box is open again! The address is: Box 51, 1 Rockley Road, London, W14 0DJ\u{a0}..."),
|
|
||||||
)),
|
|
||||||
Video(VideoItem(
|
|
||||||
id: "1oPq2UUiM7s",
|
|
||||||
name: "The Ultimate Full English Breakfast with Sorted Food!",
|
|
||||||
duration: Some(530),
|
|
||||||
thumbnail: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/1oPq2UUiM7s/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCEmg7zT9mNRDtvV0XI6Wwp03MTAA",
|
|
||||||
width: 360,
|
|
||||||
height: 202,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/1oPq2UUiM7s/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD8HE0GLPGBzMc0V_8ycCrWEiQ0tA",
|
|
||||||
width: 720,
|
|
||||||
height: 404,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
channel: Some(ChannelTag(
|
|
||||||
id: "UCOgGAfSUy5LvEyVS_LF5kdw",
|
|
||||||
name: "JOLLY",
|
|
||||||
avatar: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.ggpht.com/ytc/AMLnZu-2Z-LMvcKYcD3r83tRBuYsFJuau3d3rJr4AqG5fw=s68-c-k-c0x00ffffff-no-rj",
|
|
||||||
width: 68,
|
|
||||||
height: 68,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
verification: verified,
|
|
||||||
subscriber_count: None,
|
|
||||||
)),
|
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
|
||||||
publish_date_txt: Some("6 months ago"),
|
|
||||||
view_count: Some(882756),
|
|
||||||
is_live: false,
|
|
||||||
is_short: false,
|
|
||||||
is_upcoming: false,
|
|
||||||
short_description: Some("Today we\'re joined by Sorted Food to settle the great debate - what is in the ULTIMATE Full English?! Check out their channel\u{a0}..."),
|
|
||||||
)),
|
|
||||||
Video(VideoItem(
|
|
||||||
id: "0uTLaUsK_fM",
|
|
||||||
name: "The Ultimate Snack World-Cup!!",
|
|
||||||
duration: Some(1133),
|
|
||||||
thumbnail: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/0uTLaUsK_fM/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAKHz14GlQnRbdPEVCKzoGZ77OpAg",
|
|
||||||
width: 360,
|
|
||||||
height: 202,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/0uTLaUsK_fM/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCbKuNiDGuNTS-KTVatbAo0O9LQuw",
|
|
||||||
width: 720,
|
|
||||||
height: 404,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
channel: Some(ChannelTag(
|
|
||||||
id: "UCOgGAfSUy5LvEyVS_LF5kdw",
|
|
||||||
name: "JOLLY",
|
|
||||||
avatar: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.ggpht.com/ytc/AMLnZu-2Z-LMvcKYcD3r83tRBuYsFJuau3d3rJr4AqG5fw=s68-c-k-c0x00ffffff-no-rj",
|
|
||||||
width: 68,
|
|
||||||
height: 68,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
verification: verified,
|
|
||||||
subscriber_count: None,
|
|
||||||
)),
|
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
|
||||||
publish_date_txt: Some("3 months ago"),
|
|
||||||
view_count: Some(752836),
|
|
||||||
is_live: false,
|
|
||||||
is_short: false,
|
|
||||||
is_upcoming: false,
|
|
||||||
short_description: Some("If you want to send us anything to open, our PO Box is open again! The address is: Box 51, 1 Rockley Road, London, W14 0DJ\u{a0}..."),
|
|
||||||
)),
|
|
||||||
Video(VideoItem(
|
|
||||||
id: "6c58-749p6Y",
|
|
||||||
name: "Old Friends & New",
|
|
||||||
duration: Some(774),
|
|
||||||
thumbnail: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/6c58-749p6Y/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB2Jhsz_feWcNW07yWtjrumbMgtnw",
|
|
||||||
width: 360,
|
|
||||||
height: 202,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/6c58-749p6Y/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDagCO86W02BzWwG3yYwtlvLUbAuw",
|
|
||||||
width: 720,
|
|
||||||
height: 404,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
channel: Some(ChannelTag(
|
|
||||||
id: "UCh8gHdtzO2tXd593_bjErWg",
|
|
||||||
name: "Doobydobap",
|
|
||||||
avatar: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.ggpht.com/dm5Aq93xvVJz0NoVO88ieBkDXmuShCujGPlZ7qETMEPTrXvPUCFI3-BB6Xs_P-r6Uk3mnBy9zA=s68-c-k-c0x00ffffff-no-rj",
|
|
||||||
width: 68,
|
|
||||||
height: 68,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
verification: verified,
|
|
||||||
subscriber_count: None,
|
|
||||||
)),
|
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
|
||||||
publish_date_txt: Some("6 months ago"),
|
|
||||||
view_count: Some(426393),
|
|
||||||
is_live: false,
|
|
||||||
is_short: false,
|
|
||||||
is_upcoming: false,
|
|
||||||
short_description: Some("Realized I have a typo that says perogis instead of peroni oop But for real, I\'m so thankful for Bobbi bc she was one of the few/\u{a0}..."),
|
|
||||||
)),
|
|
||||||
Video(VideoItem(
|
Video(VideoItem(
|
||||||
id: "38Gd6TdmNVs",
|
id: "38Gd6TdmNVs",
|
||||||
name: "KOREAN BARBECUE l doob gourmand ep.3",
|
name: "KOREAN BARBECUE l doob gourmand ep.3",
|
||||||
|
|
@ -927,7 +203,6 @@ SearchResult(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 weeks ago"),
|
publish_date_txt: Some("2 weeks ago"),
|
||||||
view_count: Some(354486),
|
view_count: Some(354486),
|
||||||
|
|
@ -965,7 +240,6 @@ SearchResult(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("1 month ago"),
|
publish_date_txt: Some("1 month ago"),
|
||||||
view_count: Some(524950),
|
view_count: Some(524950),
|
||||||
|
|
@ -1003,7 +277,6 @@ SearchResult(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 weeks ago"),
|
publish_date_txt: Some("4 weeks ago"),
|
||||||
view_count: Some(528595),
|
view_count: Some(528595),
|
||||||
|
|
@ -1041,7 +314,6 @@ SearchResult(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(717515),
|
view_count: Some(717515),
|
||||||
|
|
@ -1079,7 +351,6 @@ SearchResult(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("2 months ago"),
|
publish_date_txt: Some("2 months ago"),
|
||||||
view_count: Some(624386),
|
view_count: Some(624386),
|
||||||
|
|
@ -1117,7 +388,6 @@ SearchResult(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(696942),
|
view_count: Some(696942),
|
||||||
|
|
@ -1155,7 +425,6 @@ SearchResult(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(923749),
|
view_count: Some(923749),
|
||||||
|
|
@ -1193,7 +462,6 @@ SearchResult(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("6 months ago"),
|
publish_date_txt: Some("6 months ago"),
|
||||||
view_count: Some(1282467),
|
view_count: Some(1282467),
|
||||||
|
|
@ -1231,7 +499,6 @@ SearchResult(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 months ago"),
|
publish_date_txt: Some("8 months ago"),
|
||||||
view_count: Some(1649656),
|
view_count: Some(1649656),
|
||||||
|
|
@ -1269,7 +536,6 @@ SearchResult(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("4 months ago"),
|
publish_date_txt: Some("4 months ago"),
|
||||||
view_count: Some(1085725),
|
view_count: Some(1085725),
|
||||||
|
|
@ -1278,44 +544,6 @@ SearchResult(
|
||||||
is_upcoming: false,
|
is_upcoming: false,
|
||||||
short_description: Some("A busy, but calm week for me here in Seoul living alone. Planning on exploring more parts of Korea, please let me know in the\u{a0}..."),
|
short_description: Some("A busy, but calm week for me here in Seoul living alone. Planning on exploring more parts of Korea, please let me know in the\u{a0}..."),
|
||||||
)),
|
)),
|
||||||
Video(VideoItem(
|
|
||||||
id: "T4NOt727wqI",
|
|
||||||
name: "20 Comfort Foods From Around The World",
|
|
||||||
duration: Some(722),
|
|
||||||
thumbnail: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/T4NOt727wqI/hq720.jpg?sqp=-oaymwEcCOgCEMoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBpte9rWpo0EXWj53uMxatkyAumag",
|
|
||||||
width: 360,
|
|
||||||
height: 202,
|
|
||||||
),
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://i.ytimg.com/vi/T4NOt727wqI/hq720.jpg?sqp=-oaymwEcCNAFEJQDSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB1U3YAMWUe4_RXBpWnVP_-XE3hvA",
|
|
||||||
width: 720,
|
|
||||||
height: 404,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
channel: Some(ChannelTag(
|
|
||||||
id: "UCwiTOchWeKjrJZw7S1H__1g",
|
|
||||||
name: "Food Insider",
|
|
||||||
avatar: [
|
|
||||||
Thumbnail(
|
|
||||||
url: "https://yt3.ggpht.com/ytc/AMLnZu80hN5x1GVlHZ3VevK1qrMF2ocDLTs6t56GoAXoHg=s68-c-k-c0x00ffffff-no-rj",
|
|
||||||
width: 68,
|
|
||||||
height: 68,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
verification: verified,
|
|
||||||
subscriber_count: None,
|
|
||||||
)),
|
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
|
||||||
publish_date_txt: Some("2 years ago"),
|
|
||||||
view_count: Some(5628269),
|
|
||||||
is_live: false,
|
|
||||||
is_short: false,
|
|
||||||
is_upcoming: false,
|
|
||||||
short_description: Some("In a time when much of the world is facing lockdown because of the coronavirus pandemic, unable to see family and friends in\u{a0}..."),
|
|
||||||
)),
|
|
||||||
Video(VideoItem(
|
Video(VideoItem(
|
||||||
id: "dkMtSrjDLO0",
|
id: "dkMtSrjDLO0",
|
||||||
name: "How to make Naruto\'s favorite ramen",
|
name: "How to make Naruto\'s favorite ramen",
|
||||||
|
|
@ -1345,7 +573,6 @@ SearchResult(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("10 months ago"),
|
publish_date_txt: Some("10 months ago"),
|
||||||
view_count: Some(1327833),
|
view_count: Some(1327833),
|
||||||
|
|
@ -1383,7 +610,6 @@ SearchResult(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("3 months ago"),
|
publish_date_txt: Some("3 months ago"),
|
||||||
view_count: Some(1052801),
|
view_count: Some(1052801),
|
||||||
|
|
@ -1421,7 +647,6 @@ SearchResult(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("7 months ago"),
|
publish_date_txt: Some("7 months ago"),
|
||||||
view_count: Some(1137136),
|
view_count: Some(1137136),
|
||||||
|
|
@ -1459,7 +684,6 @@ SearchResult(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 months ago"),
|
publish_date_txt: Some("8 months ago"),
|
||||||
view_count: Some(928967),
|
view_count: Some(928967),
|
||||||
|
|
@ -1497,7 +721,6 @@ SearchResult(
|
||||||
verification: verified,
|
verification: verified,
|
||||||
subscriber_count: None,
|
subscriber_count: None,
|
||||||
)),
|
)),
|
||||||
channels_feat: [],
|
|
||||||
publish_date: "[date]",
|
publish_date: "[date]",
|
||||||
publish_date_txt: Some("8 months ago"),
|
publish_date_txt: Some("8 months ago"),
|
||||||
view_count: Some(1077297),
|
view_count: Some(1077297),
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue