fix: parsing lockup playlists with "MIX" instead of view count

This commit is contained in:
ThetaDev 2024-11-10 03:24:26 +01:00
parent 870ff79ee0
commit ac8fbc3e67
No known key found for this signature in database
GPG key ID: E319D3C5148D65B6
6 changed files with 19370 additions and 11 deletions

View file

@ -1,15 +1,15 @@
test: test:
# cargo test --features=rss # cargo test --features=rss
cargo nextest run --workspace --features=rss --no-fail-fast --failure-output final --retries 1 cargo nextest run --workspace --features=rss --no-fail-fast --retries 1
unittest: unittest:
cargo nextest run --features=rss --no-fail-fast --failure-output final --lib cargo nextest run --features=rss --no-fail-fast --lib
testyt: testyt:
cargo nextest run --features=rss --no-fail-fast --failure-output final --retries 1 --test youtube cargo nextest run --features=rss --no-fail-fast --retries 1 --test youtube
testyt-localized: testyt-localized:
YT_LANG=th cargo nextest run --features=rss --no-fail-fast --failure-output final --retries 1 --test youtube YT_LANG=th cargo nextest run --features=rss --no-fail-fast ---retries 1 --test youtube
testintl: testintl:
#!/usr/bin/env bash #!/usr/bin/env bash
@ -28,7 +28,7 @@ testintl:
for YT_LANG in "${LANGUAGES[@]}"; do for YT_LANG in "${LANGUAGES[@]}"; do
echo "---TESTS FOR $YT_LANG ---" echo "---TESTS FOR $YT_LANG ---"
if YT_LANG="$YT_LANG" cargo nextest run --no-fail-fast --failure-output final --retries 1 --test-threads 4 --test youtube -E 'not test(/^resolve/)'; then if YT_LANG="$YT_LANG" cargo nextest run --no-fail-fast ---retries 1 --test-threads 4 --test youtube -E 'not test(/^resolve/)'; then
echo "--- $YT_LANG COMPLETED ---" echo "--- $YT_LANG COMPLETED ---"
else else
echo "--- $YT_LANG FAILED ---" echo "--- $YT_LANG FAILED ---"

View file

@ -726,10 +726,7 @@ impl<T> YouTubeListMapper<T> {
.first() .first()
}) })
.and_then(|badge| { .and_then(|badge| {
util::parse_numeric_or_warn( util::parse_numeric(&badge.thumbnail_badge_view_model.text).ok()
&badge.thumbnail_badge_view_model.text,
&mut self.warnings,
)
}), }),
})) }))
} }

View file

@ -0,0 +1,732 @@
---
source: src/client/video_details.rs
expression: map_res.c
---
VideoDetails(
id: "XuM2onMGvTI",
name: "Gäa",
description: RichText([
Text(
text: "Provided to YouTube by Universal Music Group\n\nGäa · Oonagh\n\nBest Of\n\n℗ An Airforce1 Records / We Love Music recording; ℗ 2014 Universal Music GmbH\n\nReleased on: 2020-08-07\n\nProducer, Associated Performer, Background Vocalist: Hardy Krech\nProducer: Mark Nissen\nAssociated Performer, Background Vocalist: Andreas Fahnert\nAssociated Performer, Background Vocalist: Velile Mchunu\nAssociated Performer, Background Vocalist: Billy King\nAssociated Performer, Background Vocalist: Alex Prince\nAssociated Performer, Flute: Sandro Friedrich\nProgrammer: Hartmut Krech\nEditor: Severin Zahler\nComposer Lyricist: Hartmut Krech\nComposer Lyricist: Mark Nissen\nAuthor: Lukas Hainer\nAuthor: Michael Boden\n\nAuto-generated by YouTube.",
),
]),
channel: ChannelTag(
id: "UCVGvnqB-5znqPSbMGlhF4Pw",
name: "Sentamusic",
avatar: [
Thumbnail(
url: "https://yt3.ggpht.com/VPr2HRKMco6qVkF1mr4KI_g_autDEE0KKEt3ZBfQdnETGAV0QWROheWVzExnPva4yJAz1unz=s48-c-k-c0x00ffffff-no-rj",
width: 48,
height: 48,
),
Thumbnail(
url: "https://yt3.ggpht.com/VPr2HRKMco6qVkF1mr4KI_g_autDEE0KKEt3ZBfQdnETGAV0QWROheWVzExnPva4yJAz1unz=s88-c-k-c0x00ffffff-no-rj",
width: 88,
height: 88,
),
Thumbnail(
url: "https://yt3.ggpht.com/VPr2HRKMco6qVkF1mr4KI_g_autDEE0KKEt3ZBfQdnETGAV0QWROheWVzExnPva4yJAz1unz=s176-c-k-c0x00ffffff-no-rj",
width: 176,
height: 176,
),
],
verification: artist,
subscriber_count: Some(38100),
),
view_count: 28898,
like_count: Some(213),
publish_date: "[date]",
publish_date_txt: Some("Aug 6, 2020"),
is_live: false,
is_ccommons: false,
chapters: [],
recommended: Paginator(
count: None,
items: [
VideoItem(
id: "E8XaMMeUX7M",
name: "Sie singt für die, die sie nicht hören",
duration: Some(245),
thumbnail: [
Thumbnail(
url: "https://i.ytimg.com/vi/E8XaMMeUX7M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDpslNXCsGByXyek5rqUTlPduA6PQ",
width: 168,
height: 94,
),
Thumbnail(
url: "https://i.ytimg.com/vi/E8XaMMeUX7M/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCiR5P4H39iF_JpaRsWj33p6xILZQ",
width: 336,
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCVGvnqB-5znqPSbMGlhF4Pw",
name: "Sentamusic",
avatar: [
Thumbnail(
url: "https://yt3.ggpht.com/VPr2HRKMco6qVkF1mr4KI_g_autDEE0KKEt3ZBfQdnETGAV0QWROheWVzExnPva4yJAz1unz=s88-c-k-c0x00ffffff-no-rj",
width: 68,
height: 68,
),
],
verification: artist,
subscriber_count: None,
)),
publish_date: "[date]",
publish_date_txt: Some("6 years ago"),
view_count: Some(127967),
is_live: false,
is_short: false,
is_upcoming: false,
short_description: None,
),
VideoItem(
id: "gJapS0meSlc",
name: "Kingdom of Heaven: Burning the Past Extended (20 minutes version)",
duration: Some(1204),
thumbnail: [
Thumbnail(
url: "https://i.ytimg.com/vi/gJapS0meSlc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAfLAy2Om8QBrXljaToKGg4EAmy6w",
width: 168,
height: 94,
),
Thumbnail(
url: "https://i.ytimg.com/vi/gJapS0meSlc/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBI4RQ40zY_KOh8qZG4991VueDo3w",
width: 336,
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC8N3VCj1kY6VB3kiDh38bxw",
name: "Encosen",
avatar: [
Thumbnail(
url: "https://yt3.ggpht.com/ytc/AIdro_knaJfooIGRk_MXCNQLk5Zmx79JCKWsLMOl1LdlTZdnsg=s68-c-k-c0x00ffffff-no-rj",
width: 68,
height: 68,
),
],
verification: none,
subscriber_count: None,
)),
publish_date: "[date]",
publish_date_txt: Some("4 years ago"),
view_count: Some(243357),
is_live: false,
is_short: false,
is_upcoming: false,
short_description: None,
),
VideoItem(
id: "u2XCC1rKxV0",
name: "Faolan",
duration: Some(256),
thumbnail: [
Thumbnail(
url: "https://i.ytimg.com/vi/u2XCC1rKxV0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDd4Q0v9znAMTV6GLYt4Jq40MWX0w",
width: 168,
height: 94,
),
Thumbnail(
url: "https://i.ytimg.com/vi/u2XCC1rKxV0/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBpNh48nrIpf9g319CFxdew6geBNg",
width: 336,
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCVGvnqB-5znqPSbMGlhF4Pw",
name: "Sentamusic",
avatar: [
Thumbnail(
url: "https://yt3.ggpht.com/VPr2HRKMco6qVkF1mr4KI_g_autDEE0KKEt3ZBfQdnETGAV0QWROheWVzExnPva4yJAz1unz=s88-c-k-c0x00ffffff-no-rj",
width: 68,
height: 68,
),
],
verification: artist,
subscriber_count: None,
)),
publish_date: "[date]",
publish_date_txt: Some("4 years ago"),
view_count: Some(25802),
is_live: false,
is_short: false,
is_upcoming: false,
short_description: None,
),
VideoItem(
id: "C_pGRMlCM3U",
name: "Oonagh - Gäa [Offizielles Musikvideo]",
duration: Some(247),
thumbnail: [
Thumbnail(
url: "https://i.ytimg.com/vi/C_pGRMlCM3U/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AH-CYAC0AWKAgwIABABGEMgZSguMA8=&rs=AOn4CLB_vkbQhRUgH75tZQVVJLFPs7K8sg",
width: 168,
height: 94,
),
Thumbnail(
url: "https://i.ytimg.com/vi/C_pGRMlCM3U/hqdefault.jpg?sqp=-oaymwE2CNACELwBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgB_gmAAtAFigIMCAAQARhDIGUoLjAP&rs=AOn4CLBJX6P3v_qpy--7IRxCBdygxb9ZoA",
width: 336,
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCD8hHNW3x7CA4M0Z1pi5NRQ",
name: "AIRFORCE1.TV",
avatar: [
Thumbnail(
url: "https://yt3.ggpht.com/ytc/AIdro_lVsvv0Zc8K2igVxGy6UQYJqmFHouOR3ux9zH74iv30eQ=s68-c-k-c0x00ffffff-no-rj",
width: 68,
height: 68,
),
],
verification: none,
subscriber_count: None,
)),
publish_date: "[date]",
publish_date_txt: Some("10 years ago"),
view_count: Some(14449259),
is_live: false,
is_short: false,
is_upcoming: false,
short_description: None,
),
VideoItem(
id: "UtP9J88Jzg0",
name: "Ruinen im Sand",
duration: Some(195),
thumbnail: [
Thumbnail(
url: "https://i.ytimg.com/vi/UtP9J88Jzg0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCmkebFxTlBZCOUHBFkMHv0DodLFQ",
width: 168,
height: 94,
),
Thumbnail(
url: "https://i.ytimg.com/vi/UtP9J88Jzg0/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAOdwJVkok-U7P1YrZEchZZqY_HlQ",
width: 336,
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCVGvnqB-5znqPSbMGlhF4Pw",
name: "Sentamusic",
avatar: [
Thumbnail(
url: "https://yt3.ggpht.com/VPr2HRKMco6qVkF1mr4KI_g_autDEE0KKEt3ZBfQdnETGAV0QWROheWVzExnPva4yJAz1unz=s88-c-k-c0x00ffffff-no-rj",
width: 68,
height: 68,
),
],
verification: artist,
subscriber_count: None,
)),
publish_date: "[date]",
publish_date_txt: Some("4 years ago"),
view_count: Some(66406),
is_live: false,
is_short: false,
is_upcoming: false,
short_description: None,
),
VideoItem(
id: "Vu-6Er21_bM",
name: "Mutter Erde",
duration: Some(193),
thumbnail: [
Thumbnail(
url: "https://i.ytimg.com/vi/Vu-6Er21_bM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDvKXWNaaAND_YpZMz6MohvZaHcBw",
width: 168,
height: 94,
),
Thumbnail(
url: "https://i.ytimg.com/vi/Vu-6Er21_bM/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDY7VmNj1HMKx4iaRKrgT2s5AJpqw",
width: 336,
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCkYFRZTBmE1IzaKNuF6B3Uw",
name: "Story Of Dakota - Topic",
avatar: [
Thumbnail(
url: "https://yt3.ggpht.com/G1umXDgUfbA4XATwAC9Hb3RvQuFsNgE1k-WbtgSQUjMtSXU3SZdp5Se25A2H2xJcjgKWZxWxPQ=s68-c-k-c0x00ffffff-no-rj",
width: 68,
height: 68,
),
],
verification: none,
subscriber_count: None,
)),
publish_date: "[date]",
publish_date_txt: Some("6 years ago"),
view_count: Some(34662),
is_live: false,
is_short: false,
is_upcoming: false,
short_description: None,
),
VideoItem(
id: "nLmNchGTh20",
name: "Oonagh - Kuliko Jana - Eine neue Zeit",
duration: Some(214),
thumbnail: [
Thumbnail(
url: "https://i.ytimg.com/vi/nLmNchGTh20/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCKWMorJR33a_BMctF8siBEPYPvSQ",
width: 168,
height: 94,
),
Thumbnail(
url: "https://i.ytimg.com/vi/nLmNchGTh20/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBb_bEgnelYdP-J1piDHKQK4D0lBA",
width: 336,
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCUJHYmJ3_1Kwfs3lqYc_Rxg",
name: "ICH FIND SCHLAGER TOLL",
avatar: [
Thumbnail(
url: "https://yt3.ggpht.com/An23BS5d6Fbk1nRfF5PZQaOijfmnVWgI7XCjhFl0pwWAthZ1Ayw-4ZG6_zwkxCaBKfesXBmO=s68-c-k-c0x00ffffff-no-rj",
width: 68,
height: 68,
),
],
verification: verified,
subscriber_count: None,
)),
publish_date: "[date]",
publish_date_txt: Some("5 years ago"),
view_count: Some(1841784),
is_live: false,
is_short: false,
is_upcoming: false,
short_description: None,
),
VideoItem(
id: "Ctpe9kafn78",
name: "So still mein Herz",
duration: Some(259),
thumbnail: [
Thumbnail(
url: "https://i.ytimg.com/vi/Ctpe9kafn78/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDJqIxVeJPDgMFXTavr1aaYBuaY6w",
width: 168,
height: 94,
),
Thumbnail(
url: "https://i.ytimg.com/vi/Ctpe9kafn78/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBxlTlqj7JCTsvoQdWyMkB_JZJ1dA",
width: 336,
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCVGvnqB-5znqPSbMGlhF4Pw",
name: "Sentamusic",
avatar: [
Thumbnail(
url: "https://yt3.ggpht.com/VPr2HRKMco6qVkF1mr4KI_g_autDEE0KKEt3ZBfQdnETGAV0QWROheWVzExnPva4yJAz1unz=s88-c-k-c0x00ffffff-no-rj",
width: 68,
height: 68,
),
],
verification: artist,
subscriber_count: None,
)),
publish_date: "[date]",
publish_date_txt: Some("4 years ago"),
view_count: Some(48241),
is_live: false,
is_short: false,
is_upcoming: false,
short_description: None,
),
VideoItem(
id: "sg6j-zfUF_A",
name: "Eldamar",
duration: Some(223),
thumbnail: [
Thumbnail(
url: "https://i.ytimg.com/vi/sg6j-zfUF_A/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDk_V_5woDmnABodJnokWXNeyUulg",
width: 168,
height: 94,
),
Thumbnail(
url: "https://i.ytimg.com/vi/sg6j-zfUF_A/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCFtDJv4zRfP6XgwasjaN_nvdfG7Q",
width: 336,
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCVGvnqB-5znqPSbMGlhF4Pw",
name: "Sentamusic",
avatar: [
Thumbnail(
url: "https://yt3.ggpht.com/VPr2HRKMco6qVkF1mr4KI_g_autDEE0KKEt3ZBfQdnETGAV0QWROheWVzExnPva4yJAz1unz=s88-c-k-c0x00ffffff-no-rj",
width: 68,
height: 68,
),
],
verification: artist,
subscriber_count: None,
)),
publish_date: "[date]",
publish_date_txt: Some("4 years ago"),
view_count: Some(11079),
is_live: false,
is_short: false,
is_upcoming: false,
short_description: None,
),
VideoItem(
id: "mabaKE-xNUo",
name: "Celtic Woman - Tír na nÓg (feat Oonagh) [Official Music Video]",
duration: Some(196),
thumbnail: [
Thumbnail(
url: "https://i.ytimg.com/vi/mabaKE-xNUo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBZn8xM0oEJ6MDxWRRZ7jqqDvCrAw",
width: 168,
height: 94,
),
Thumbnail(
url: "https://i.ytimg.com/vi/mabaKE-xNUo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDfLAhbREVerzlQTKI3c6b7-xJYmw",
width: 336,
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCUt83CEM-kE3OQx0GqLdZtw",
name: "Universal Music Deutschland",
avatar: [
Thumbnail(
url: "https://yt3.ggpht.com/ytc/AIdro_neU_ZtLnU0iv2J6Qhh-m-SdyrGBH5EY6OA_eLP35vUqA=s68-c-k-c0x00ffffff-no-rj",
width: 68,
height: 68,
),
],
verification: verified,
subscriber_count: None,
)),
publish_date: "[date]",
publish_date_txt: Some("9 years ago"),
view_count: Some(10097065),
is_live: false,
is_short: false,
is_upcoming: false,
short_description: None,
),
VideoItem(
id: "BQIbe3nNrLs",
name: "Senta - Egal wie Weit (Offizielles Video)",
duration: Some(166),
thumbnail: [
Thumbnail(
url: "https://i.ytimg.com/vi/BQIbe3nNrLs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCozZphHkPbL1-MzdpLOTSONm-xPQ",
width: 168,
height: 94,
),
Thumbnail(
url: "https://i.ytimg.com/vi/BQIbe3nNrLs/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC2zkNbvfvCy95_KE9yP0CH2a_Wgw",
width: 336,
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCVGvnqB-5znqPSbMGlhF4Pw",
name: "Sentamusic",
avatar: [
Thumbnail(
url: "https://yt3.ggpht.com/VPr2HRKMco6qVkF1mr4KI_g_autDEE0KKEt3ZBfQdnETGAV0QWROheWVzExnPva4yJAz1unz=s88-c-k-c0x00ffffff-no-rj",
width: 68,
height: 68,
),
],
verification: artist,
subscriber_count: None,
)),
publish_date: "[date]",
publish_date_txt: Some("1 year ago"),
view_count: Some(199272),
is_live: false,
is_short: false,
is_upcoming: false,
short_description: None,
),
VideoItem(
id: "6jkNLisOu6g",
name: "01 Aulë und Yavanna",
duration: Some(218),
thumbnail: [
Thumbnail(
url: "https://i.ytimg.com/vi/6jkNLisOu6g/hqdefault.jpg?sqp=-oaymwE1CKgBEF5IVfKriqkDKAgBFQAAiEIYAXABwAEG8AEB-AHeA4AC4AOKAgwIABABGEkgYChlMA8=&rs=AOn4CLDl2aKLj-BQchX2vOtKn59s5iYt9A",
width: 168,
height: 94,
),
Thumbnail(
url: "https://i.ytimg.com/vi/6jkNLisOu6g/hqdefault.jpg?sqp=-oaymwE2CNACELwBSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgB3gOAAuADigIMCAAQARhJIGAoZTAP&rs=AOn4CLAsr456CW0aDfmJbwNcl31xgr_6sw",
width: 336,
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCawJ5ocVllDHdba04OoiNgw",
name: "T\'Owd Cheshire Tup",
avatar: [
Thumbnail(
url: "https://yt3.ggpht.com/ytc/AIdro_nzZfr0zDdl4lpjqQZYVgr-tTjAwPzHUKsYCp9vRsE=s68-c-k-c0x00ffffff-no-rj",
width: 68,
height: 68,
),
],
verification: none,
subscriber_count: None,
)),
publish_date: "[date]",
publish_date_txt: Some("5 years ago"),
view_count: Some(9826),
is_live: false,
is_short: false,
is_upcoming: false,
short_description: None,
),
VideoItem(
id: "vnjva6Q2NMw",
name: "#Oonagh #OonaghLive | Oonagh | Show completo • Full concert (2017) / 480p",
duration: Some(2407),
thumbnail: [
Thumbnail(
url: "https://i.ytimg.com/vi/vnjva6Q2NMw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCo-TVqOy7D1phoX7z3TnoGSe2wQQ",
width: 168,
height: 94,
),
Thumbnail(
url: "https://i.ytimg.com/vi/vnjva6Q2NMw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLApZ1cuBTMKRWYowCDgEOJ-cEXBdg",
width: 336,
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCXAUp0fwOEZ4Q4ijtco-j-Q",
name: "Oonagh Brazil",
avatar: [
Thumbnail(
url: "https://yt3.ggpht.com/ytc/AIdro_lQEvqMeM7OnUcyoPo9r0sfONO3EgcS31imZyqbm16vKA=s68-c-k-c0x00ffffff-no-rj",
width: 68,
height: 68,
),
],
verification: none,
subscriber_count: None,
)),
publish_date: "[date]",
publish_date_txt: Some("4 years ago"),
view_count: Some(15623),
is_live: false,
is_short: false,
is_upcoming: false,
short_description: None,
),
VideoItem(
id: "kz34YyjG-Oo",
name: "CRAZY UNEXPECTED BATTLE combinations on The Voice",
duration: Some(2187),
thumbnail: [
Thumbnail(
url: "https://i.ytimg.com/vi/kz34YyjG-Oo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAXEkH_BO5UX-d12GbXXEk_pAhFhQ",
width: 168,
height: 94,
),
Thumbnail(
url: "https://i.ytimg.com/vi/kz34YyjG-Oo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAGfSNohj4XUlcEncnhvehyehgXZA",
width: 336,
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCJYtYkiGldqX6Ne938j-k2g",
name: "The Voice Global",
avatar: [
Thumbnail(
url: "https://yt3.ggpht.com/0Q3BwKKmO0pXApaqRiQr7dTKz-ftpS1TxUtBZ0FGgrMEZhlMjUrwWXQypH7pu3Dg7A7FsbtHQg=s68-c-k-c0x00ffffff-no-rj",
width: 68,
height: 68,
),
],
verification: verified,
subscriber_count: None,
)),
publish_date: "[date]",
publish_date_txt: Some("4 months ago"),
view_count: Some(3150637),
is_live: false,
is_short: false,
is_upcoming: false,
short_description: None,
),
VideoItem(
id: "2cKs7BcgIfQ",
name: "Minne Duett",
duration: Some(220),
thumbnail: [
Thumbnail(
url: "https://i.ytimg.com/vi/2cKs7BcgIfQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAAvtdLsnu2ea26UIk2lN9tqOr_VA",
width: 168,
height: 94,
),
Thumbnail(
url: "https://i.ytimg.com/vi/2cKs7BcgIfQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAYhd8ZhicK5DIND-EZFJ5H2qCgww",
width: 336,
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCxWwz-uZkTNwEM_duLUrWkQ",
name: "fauntube",
avatar: [
Thumbnail(
url: "https://yt3.ggpht.com/ytc/AIdro_mP0XxeJzJhZPOtjS8H8UE0v5mt80H91MX6a_kfG2eJgjM=s88-c-k-c0x00ffffff-no-rj",
width: 68,
height: 68,
),
],
verification: artist,
subscriber_count: None,
)),
publish_date: "[date]",
publish_date_txt: Some("6 years ago"),
view_count: Some(294858),
is_live: false,
is_short: false,
is_upcoming: false,
short_description: None,
),
VideoItem(
id: "ow8xLlqkMuU",
name: "Oonagh - Faolan",
duration: Some(321),
thumbnail: [
Thumbnail(
url: "https://i.ytimg.com/vi/ow8xLlqkMuU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCLrrwu8ZDxOLwcLJn8C75tlhyT4A",
width: 168,
height: 94,
),
Thumbnail(
url: "https://i.ytimg.com/vi/ow8xLlqkMuU/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB2IoX8D-ILbTtwSZLHDvL6wfqnVg",
width: 336,
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCopVUcd6jgIxM9YTegO7Hww",
name: "Martchen13",
avatar: [
Thumbnail(
url: "https://yt3.ggpht.com/B6tbK2h24H4EBxB8vFikRBd5vI319leVh6FDsxtmx4HLRGPBbMlnrbyB4-vw9q4xehn3yM4i43w=s68-c-k-c0x00ffffff-no-rj",
width: 68,
height: 68,
),
],
verification: none,
subscriber_count: None,
)),
publish_date: "[date]",
publish_date_txt: Some("9 years ago"),
view_count: Some(1634446),
is_live: false,
is_short: false,
is_upcoming: false,
short_description: None,
),
VideoItem(
id: "IqiTJK_uzUY",
name: "Hans Zimmer | ULTIMATE Soundtrack Compilation Mix",
duration: Some(3493),
thumbnail: [
Thumbnail(
url: "https://i.ytimg.com/vi/IqiTJK_uzUY/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBYDY-oXJIpwhOqMPF35qtcItpXTw",
width: 168,
height: 94,
),
Thumbnail(
url: "https://i.ytimg.com/vi/IqiTJK_uzUY/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDdEWAy_yZzt80AsnDXMbYJ7SEw-Q",
width: 336,
height: 188,
),
],
channel: Some(ChannelTag(
id: "UCEQKgGFD-oJAl3L0CfTb_1g",
name: "Straals",
avatar: [
Thumbnail(
url: "https://yt3.ggpht.com/ytc/AIdro_lPuejfIc_Kf0WuQthwDSelUCruf8WNXWyLXg6yc3qIRA=s68-c-k-c0x00ffffff-no-rj",
width: 68,
height: 68,
),
],
verification: none,
subscriber_count: None,
)),
publish_date: "[date]",
publish_date_txt: Some("5 years ago"),
view_count: Some(19574820),
is_live: false,
is_short: false,
is_upcoming: false,
short_description: None,
),
VideoItem(
id: "44G9JvrauLg",
name: "Tri Martolod",
duration: Some(199),
thumbnail: [
Thumbnail(
url: "https://i.ytimg.com/vi/44G9JvrauLg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAQ3prhoiPh2Be5MN0tkX1gDGWs1w",
width: 168,
height: 94,
),
Thumbnail(
url: "https://i.ytimg.com/vi/44G9JvrauLg/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLB9Ow4teYaOtOQkV_AcUhT2-qJ9hw",
width: 336,
height: 188,
),
],
channel: Some(ChannelTag(
id: "UC9qKvxWJEiRxsQnFN0tenyw",
name: "Santiano",
avatar: [
Thumbnail(
url: "https://yt3.ggpht.com/daePPPIXMLk1HBFMiESnwZtkEijLne7yeTkM92kupm-ruG4acyPoAuY80mGZLKUUPoBTW0MO=s88-c-k-c0x00ffffff-no-rj",
width: 68,
height: 68,
),
],
verification: artist,
subscriber_count: None,
)),
publish_date: "[date]",
publish_date_txt: Some("6 years ago"),
view_count: Some(932727),
is_live: false,
is_short: false,
is_upcoming: false,
short_description: None,
),
],
ctoken: Some("CBQSExILWHVNMm9uTUd2VEnAAQHIAQEYACqeDDJzNkw2d3lQQ1FxTUNRb0Q4ajRBQ2c3Q1Bnc0lsNU83LV9URHJMR3lBUW9Pd2o0TENPX085YWFVc0xtMGtnRUtEY0ktQ2dpNG41dXo3N1c2NG5rS0RjSS1DZ2p2dHVQWWl0T0VtSFFLRGNJLUNnal9fYWpTbC0ySTZBWUtEc0ktQ3dqTXlQeUE1b3l0MjljQkNnM0NQZ29JMWVQVzZKV1J3NEJTQ2czQ1Bnb0lpTjJYbHJHODc4WVFDZzdDUGdzSXlyMkw2NkhLdm9ya0FRb093ajRMQ0steDVKNjF0LWI0bndFS0RjSS1DZ2k2aWNfQWdJN2h6RG9LRHNJLUN3akc1T1RibnZDUzl0NEJDZzdDUGdzSXd2cnZ6LWZMN3NYUUFRb053ajRLQ091S2w5SHozTFBwT2dvT3dqNExDSzZUajduSXhiS0lvd0VLRGNJLUNnajExWkhpcHViYjhSTUtEY0ktQ2dqeDc0bWtnYlNQb1I0S0RjSS1DZ2kwLVlXSXl1aU43endLRHNJLUN3ajhpSmlkM1lhVWdwRUJDZzdDUGdzSTFwdWE4Y0NTaU9iakFRb093ajRMQ1B5SHNwakI5dHFxekFFS0RjSS1DZ2pQZ3NuSzZMZWF5aTBLRGNJLUNnaXI0OGZKcmZPYXpHUUtEc0ktQ3dqaHI5X210YlRsb2JVQkNnN0NQZ3NJdl83dHU3dXUxb3VBQVFvRDhqNEFDZzNDUGdvSXM3X1J2SXpHOXVJVENnUHlQZ0FLRHNJLUN3alhsUG5NdEttcXk0QUJDZ1B5UGdBS0o5SS1KQW9pVUV4aGFGSktXRWczV0ZCSWJWZE9TemMwVm5wM1NVWXljWFZYY1dSR1NWZDJjZ29EOGo0QUNnN0NQZ3NJM1lxcjFyWEI4TEs3QVFvRDhqNEFDZzNDUGdvSTllYUl5c3pJa2YwTENnUHlQZ0FLSDlJLUhBb2FVa1JGVFdRNFVGcEpkamxEVUhOMmRrVkVZbTlmY0ZWRU5IY0tBX0ktQUFvTndqNEtDSTJjcF9qOHBQX3BVZ29EOGo0QUNnM0NQZ29Jc192WDdhdkM3dmRXQ2dQeVBnQUtEc0ktQ3dqdGpzNk1vYTdqM0p3QkNnUHlQZ0FLRGNJLUNnaV92XzYwNU42WDdRb0tBX0ktQUFvT3dqNExDUEN2MEw2el82aUhzZ0VLQV9JLUFBb093ajRMQ01ycXhQMkV4YmJUbVFFS0FfSS1BQW9Od2o0S0NMdlp0czYzNzRhQkJRb0Q4ajRBQ2c3Q1Bnc0lxUGU2Mk9LbHc1enFBUW9EOGo0QUNnN0NQZ3NJek9uWW9icnR1N3ktQVFvRDhqNEFDZzdDUGdzSTZ2R2J4cktNX3A2VEFRb0Q4ajRBQ2c3Q1Bnc0k5TU9BdWNHZHEtSFpBUW9EOGo0QUNnN0NQZ3NJNWVXUTFlV2x6SWVqQVFvRDhqNEFDZzNDUGdvSXhwcTdfOHJrcE5RaUNnUHlQZ0FLRHNJLUN3aTQ4ZXJXNzZUdndPTUJFaFVBR2h3ZUlDSWtKaWdxTEM0d01qUTJPRG84UGtBYUJBZ0FFQUVhQkFnQUVBSWFCQWdBRUFNYUJBZ0FFQVFhQkFnQUVBVWFCQWdBRUFZYUJBZ0FFQWNhQkFnQUVBZ2FCQWdBRUFrYUJBZ0FFQW9hQkFnQUVBc2FCQWdBRUF3YUJBZ0FFQTBhQkFnQUVBNGFCQWdBRUE4YUJBZ0FFQkFhQkFnQUVCRWFCQWdBRUJJYUJBZ0FFQk1hQkFnQUVCUWFCQWdBRUJVYUJBZ0FFQllhQkFnQUVCY2FCQWdBRUJnYUJBZ0FFQmthQkFnYUVCc2FCQWdjRUIwYUJBZ2VFQjhhQkFnZ0VDRWFCQWdpRUNNYUJBZ2tFQ1VhQkFnbUVDY2FCQWdvRUNrYUJBZ3FFQ3NhQkFnc0VDMGFCQWd1RUM4YUJBZ3dFREVhQkFneUVETWFCQWcwRURVYUJBZzJFRGNhQkFnNEVEa2FCQWc2RURzYUJBZzhFRDBhQkFnLUVEOGFCQWhBRUVFcUZRQWFIQjRnSWlRbUtDb3NMakF5TkRZNE9qdy1RQWoPd2F0Y2gtbmV4dC1mZWVk"),
visitor_data: Some("CgthU0ZEaGhJbEgwVyiJp8C5BjIKCgJVUxIEEgAgEQ%3D%3D"),
endpoint: next,
),
top_comments: Paginator(
count: Some(2),
items: [],
ctoken: Some("Eg0SC1h1TTJvbk1HdlRJGAYyJSIRIgtYdU0yb25NR3ZUSTAAeAJCEGNvbW1lbnRzLXNlY3Rpb24%3D"),
visitor_data: Some("CgthU0ZEaGhJbEgwVyiJp8C5BjIKCgJVUxIEEgAgEQ%3D%3D"),
endpoint: next,
),
latest_comments: Paginator(
count: Some(2),
items: [],
ctoken: Some("Eg0SC1h1TTJvbk1HdlRJGAYyOCIRIgtYdU0yb25NR3ZUSTABeAIwAUIhZW5nYWdlbWVudC1wYW5lbC1jb21tZW50cy1zZWN0aW9u"),
visitor_data: Some("CgthU0ZEaGhJbEgwVyiJp8C5BjIKCgJVUxIEEgAgEQ%3D%3D"),
endpoint: next,
),
visitor_data: Some("CgthU0ZEaGhJbEgwVyiJp8C5BjIKCgJVUxIEEgAgEQ%3D%3D"),
)

View file

@ -658,6 +658,7 @@ mod tests {
#[case::ab_new_cont("20221011_new_continuation", "ZeerrnuLi5E")] #[case::ab_new_cont("20221011_new_continuation", "ZeerrnuLi5E")]
#[case::ab_no_recommends("20221011_rec_isr", "nFDBxBUfE74")] #[case::ab_no_recommends("20221011_rec_isr", "nFDBxBUfE74")]
#[case::ab_new_likes("20231103_likes", "ZeerrnuLi5E")] #[case::ab_new_likes("20231103_likes", "ZeerrnuLi5E")]
#[case::mix("20241109_mix", "XuM2onMGvTI")]
fn map_video_details(#[case] name: &str, #[case] id: &str) { fn map_video_details(#[case] name: &str, #[case] id: &str) {
let json_path = path!(*TESTFILES / "video_details" / format!("video_details_{name}.json")); let json_path = path!(*TESTFILES / "video_details" / format!("video_details_{name}.json"));
let json_file = File::open(json_path).unwrap(); let json_file = File::open(json_path).unwrap();

File diff suppressed because it is too large Load diff

View file

@ -999,7 +999,7 @@ async fn channel_search(rp: RustyPipe) {
.unwrap(); .unwrap();
assert_channel_eevblog(&channel); assert_channel_eevblog(&channel);
assert_next(channel.content, rp.query(), 20, 2, true).await; assert_next(channel.content, rp.query(), 18, 2, true).await;
} }
fn assert_channel_eevblog<T>(channel: &Channel<T>) { fn assert_channel_eevblog<T>(channel: &Channel<T>) {
@ -1526,13 +1526,17 @@ async fn music_playlist(
assert_eq!(playlist.description.map(|d| d.to_plaintext()), description); assert_eq!(playlist.description.map(|d| d.to_plaintext()), description);
} }
assert_eq!(
playlist.from_ytm, from_ytm,
"got channel: {:?}",
playlist.channel
);
if let Some(expect) = channel { if let Some(expect) = channel {
let c = playlist.channel.expect("channel"); let c = playlist.channel.expect("channel");
assert_eq!(c.id, expect.0); assert_eq!(c.id, expect.0);
assert_eq!(c.name, expect.1); assert_eq!(c.name, expect.1);
} }
assert!(!playlist.thumbnail.is_empty()); assert!(!playlist.thumbnail.is_empty());
assert_eq!(playlist.from_ytm, from_ytm);
} }
#[rstest] #[rstest]