fix: unavailable album items
This commit is contained in:
parent
b02cc15b28
commit
9e4787f501
7 changed files with 7607 additions and 6 deletions
|
|
@ -580,6 +580,7 @@ async fn music_album(testfiles: &Path) {
|
||||||
("various_artists", "MPREb_8QkDeEIawvX"),
|
("various_artists", "MPREb_8QkDeEIawvX"),
|
||||||
("single", "MPREb_bHfHGoy7vuv"),
|
("single", "MPREb_bHfHGoy7vuv"),
|
||||||
("description", "MPREb_PiyfuVl6aYd"),
|
("description", "MPREb_PiyfuVl6aYd"),
|
||||||
|
("unavailable", "MPREb_AzuWg8qAVVl"),
|
||||||
] {
|
] {
|
||||||
let mut json_path = testfiles.to_path_buf();
|
let mut json_path = testfiles.to_path_buf();
|
||||||
json_path.push("music_playlist");
|
json_path.push("music_playlist");
|
||||||
|
|
|
||||||
|
|
@ -376,6 +376,7 @@ mod tests {
|
||||||
#[case::various_artists("various_artists", "MPREb_8QkDeEIawvX")]
|
#[case::various_artists("various_artists", "MPREb_8QkDeEIawvX")]
|
||||||
#[case::single("single", "MPREb_bHfHGoy7vuv")]
|
#[case::single("single", "MPREb_bHfHGoy7vuv")]
|
||||||
#[case::description("description", "MPREb_PiyfuVl6aYd")]
|
#[case::description("description", "MPREb_PiyfuVl6aYd")]
|
||||||
|
#[case::unavailable("unavailable", "MPREb_AzuWg8qAVVl")]
|
||||||
fn map_music_album(#[case] name: &str, #[case] id: &str) {
|
fn map_music_album(#[case] name: &str, #[case] id: &str) {
|
||||||
let json_path = path!("testfiles" / "music_playlist" / format!("album_{}.json", name));
|
let json_path = path!("testfiles" / "music_playlist" / format!("album_{}.json", name));
|
||||||
let json_file = File::open(json_path).unwrap();
|
let json_file = File::open(json_path).unwrap();
|
||||||
|
|
|
||||||
|
|
@ -141,6 +141,8 @@ pub(crate) struct ListMusicItem {
|
||||||
pub flex_column_display_style: FlexColumnDisplayStyle,
|
pub flex_column_display_style: FlexColumnDisplayStyle,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub item_height: ItemHeight,
|
pub item_height: ItemHeight,
|
||||||
|
#[serde(default)]
|
||||||
|
pub music_item_renderer_display_policy: DisplayPolicy,
|
||||||
/// Album track number
|
/// Album track number
|
||||||
#[serde_as(as = "Option<Text>")]
|
#[serde_as(as = "Option<Text>")]
|
||||||
pub index: Option<String>,
|
pub index: Option<String>,
|
||||||
|
|
@ -165,6 +167,15 @@ pub(crate) enum ItemHeight {
|
||||||
Default,
|
Default,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Default, Debug, Copy, Clone, PartialEq, Eq, Deserialize)]
|
||||||
|
pub(crate) enum DisplayPolicy {
|
||||||
|
#[serde(rename = "MUSIC_ITEM_RENDERER_DISPLAY_POLICY_GREY_OUT")]
|
||||||
|
GreyOut,
|
||||||
|
#[default]
|
||||||
|
#[serde(other)]
|
||||||
|
Default,
|
||||||
|
}
|
||||||
|
|
||||||
#[serde_as]
|
#[serde_as]
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
|
|
@ -713,7 +724,13 @@ impl MusicListMapper {
|
||||||
MusicPageType::Track { .. } => unreachable!(),
|
MusicPageType::Track { .. } => unreachable!(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
None => Err("could not determine item type".to_owned()),
|
None => {
|
||||||
|
if item.music_item_renderer_display_policy == DisplayPolicy::GreyOut {
|
||||||
|
Ok(None)
|
||||||
|
} else {
|
||||||
|
Err("could not determine item type".to_owned())
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Tile
|
// Tile
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,279 @@
|
||||||
|
---
|
||||||
|
source: src/client/music_playlist.rs
|
||||||
|
expression: map_res.c
|
||||||
|
---
|
||||||
|
MusicAlbum(
|
||||||
|
id: "MPREb_AzuWg8qAVVl",
|
||||||
|
playlist_id: Some("OLAK5uy_mux5ygfN9sbiR1ma3yh1GHTmqNekZNoAI"),
|
||||||
|
name: "13 Reasons Why (Season 3)",
|
||||||
|
cover: [
|
||||||
|
Thumbnail(
|
||||||
|
url: "https://lh3.googleusercontent.com/-MM-2mTapj54GFHiEC4XrrjnE1jKjRpbOi3Qiy4mkpf2FgvQlD775nRoblwbN5c6sJxMrzVKAXKu-fw=w60-h60-l90-rj",
|
||||||
|
width: 60,
|
||||||
|
height: 60,
|
||||||
|
),
|
||||||
|
Thumbnail(
|
||||||
|
url: "https://lh3.googleusercontent.com/-MM-2mTapj54GFHiEC4XrrjnE1jKjRpbOi3Qiy4mkpf2FgvQlD775nRoblwbN5c6sJxMrzVKAXKu-fw=w120-h120-l90-rj",
|
||||||
|
width: 120,
|
||||||
|
height: 120,
|
||||||
|
),
|
||||||
|
Thumbnail(
|
||||||
|
url: "https://lh3.googleusercontent.com/-MM-2mTapj54GFHiEC4XrrjnE1jKjRpbOi3Qiy4mkpf2FgvQlD775nRoblwbN5c6sJxMrzVKAXKu-fw=w226-h226-l90-rj",
|
||||||
|
width: 226,
|
||||||
|
height: 226,
|
||||||
|
),
|
||||||
|
Thumbnail(
|
||||||
|
url: "https://lh3.googleusercontent.com/-MM-2mTapj54GFHiEC4XrrjnE1jKjRpbOi3Qiy4mkpf2FgvQlD775nRoblwbN5c6sJxMrzVKAXKu-fw=w544-h544-l90-rj",
|
||||||
|
width: 544,
|
||||||
|
height: 544,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
artists: [],
|
||||||
|
description: None,
|
||||||
|
album_type: Album,
|
||||||
|
year: Some(2019),
|
||||||
|
by_va: true,
|
||||||
|
tracks: [
|
||||||
|
TrackItem(
|
||||||
|
id: "JWeJHN5P-E8",
|
||||||
|
title: "Teeth",
|
||||||
|
duration: Some(205),
|
||||||
|
cover: [],
|
||||||
|
artists: [
|
||||||
|
ArtistId(
|
||||||
|
id: Some("UCCj0RlDqqahEB5BXVtDcPqg"),
|
||||||
|
name: "5 Seconds of Summer",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
artist_id: Some("UCCj0RlDqqahEB5BXVtDcPqg"),
|
||||||
|
album: Some(AlbumId(
|
||||||
|
id: "MPREb_AzuWg8qAVVl",
|
||||||
|
name: "13 Reasons Why (Season 3)",
|
||||||
|
)),
|
||||||
|
view_count: None,
|
||||||
|
is_video: true,
|
||||||
|
track_nr: Some(1),
|
||||||
|
),
|
||||||
|
TrackItem(
|
||||||
|
id: "5jd-AhBwcCQ",
|
||||||
|
title: "Die A Little",
|
||||||
|
duration: Some(174),
|
||||||
|
cover: [],
|
||||||
|
artists: [
|
||||||
|
ArtistId(
|
||||||
|
id: Some("UCMrCoizKiBxqeg5pTpBXn1A"),
|
||||||
|
name: "YUNGBLUD",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
artist_id: Some("UCMrCoizKiBxqeg5pTpBXn1A"),
|
||||||
|
album: Some(AlbumId(
|
||||||
|
id: "MPREb_AzuWg8qAVVl",
|
||||||
|
name: "13 Reasons Why (Season 3)",
|
||||||
|
)),
|
||||||
|
view_count: None,
|
||||||
|
is_video: true,
|
||||||
|
track_nr: Some(2),
|
||||||
|
),
|
||||||
|
TrackItem(
|
||||||
|
id: "_cmORZMgv6I",
|
||||||
|
title: "fuck, i\'m lonely (feat. Anne-Marie)",
|
||||||
|
duration: Some(199),
|
||||||
|
cover: [],
|
||||||
|
artists: [
|
||||||
|
ArtistId(
|
||||||
|
id: Some("UCWjoDY2SXJ5dvcdunWI6mjQ"),
|
||||||
|
name: "Lauv",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
artist_id: Some("UCWjoDY2SXJ5dvcdunWI6mjQ"),
|
||||||
|
album: Some(AlbumId(
|
||||||
|
id: "MPREb_AzuWg8qAVVl",
|
||||||
|
name: "13 Reasons Why (Season 3)",
|
||||||
|
)),
|
||||||
|
view_count: None,
|
||||||
|
is_video: true,
|
||||||
|
track_nr: Some(3),
|
||||||
|
),
|
||||||
|
TrackItem(
|
||||||
|
id: "M_kVMsFaGYs",
|
||||||
|
title: "Swim Home",
|
||||||
|
duration: Some(187),
|
||||||
|
cover: [],
|
||||||
|
artists: [
|
||||||
|
ArtistId(
|
||||||
|
id: Some("UChzK2t3sjnQkWzGnyKXOSSg"),
|
||||||
|
name: "Cautious Clay",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
artist_id: Some("UChzK2t3sjnQkWzGnyKXOSSg"),
|
||||||
|
album: Some(AlbumId(
|
||||||
|
id: "MPREb_AzuWg8qAVVl",
|
||||||
|
name: "13 Reasons Why (Season 3)",
|
||||||
|
)),
|
||||||
|
view_count: None,
|
||||||
|
is_video: true,
|
||||||
|
track_nr: Some(5),
|
||||||
|
),
|
||||||
|
TrackItem(
|
||||||
|
id: "c8AfY6yhdkM",
|
||||||
|
title: "Another Summer Night Without You",
|
||||||
|
duration: Some(159),
|
||||||
|
cover: [],
|
||||||
|
artists: [
|
||||||
|
ArtistId(
|
||||||
|
id: Some("UCvsgN5NKOzXnAURfaf3TOig"),
|
||||||
|
name: "Alexander 23",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
artist_id: Some("UCvsgN5NKOzXnAURfaf3TOig"),
|
||||||
|
album: Some(AlbumId(
|
||||||
|
id: "MPREb_AzuWg8qAVVl",
|
||||||
|
name: "13 Reasons Why (Season 3)",
|
||||||
|
)),
|
||||||
|
view_count: None,
|
||||||
|
is_video: false,
|
||||||
|
track_nr: Some(6),
|
||||||
|
),
|
||||||
|
TrackItem(
|
||||||
|
id: "DSQEKEegiH0",
|
||||||
|
title: "Miss U",
|
||||||
|
duration: Some(186),
|
||||||
|
cover: [],
|
||||||
|
artists: [
|
||||||
|
ArtistId(
|
||||||
|
id: Some("UCI4YNnmHjXFaaKvfdmpWvJQ"),
|
||||||
|
name: "Charli XCX",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
artist_id: Some("UCI4YNnmHjXFaaKvfdmpWvJQ"),
|
||||||
|
album: Some(AlbumId(
|
||||||
|
id: "MPREb_AzuWg8qAVVl",
|
||||||
|
name: "13 Reasons Why (Season 3)",
|
||||||
|
)),
|
||||||
|
view_count: None,
|
||||||
|
is_video: true,
|
||||||
|
track_nr: Some(7),
|
||||||
|
),
|
||||||
|
TrackItem(
|
||||||
|
id: "2TTOKQSzuQY",
|
||||||
|
title: "Favorite Drug",
|
||||||
|
duration: Some(209),
|
||||||
|
cover: [],
|
||||||
|
artists: [
|
||||||
|
ArtistId(
|
||||||
|
id: Some("UCDaFVUr2n8T7_X1f5yJ1xlw"),
|
||||||
|
name: "daydream Masi",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
artist_id: Some("UCDaFVUr2n8T7_X1f5yJ1xlw"),
|
||||||
|
album: Some(AlbumId(
|
||||||
|
id: "MPREb_AzuWg8qAVVl",
|
||||||
|
name: "13 Reasons Why (Season 3)",
|
||||||
|
)),
|
||||||
|
view_count: None,
|
||||||
|
is_video: true,
|
||||||
|
track_nr: Some(8),
|
||||||
|
),
|
||||||
|
TrackItem(
|
||||||
|
id: "iRaX0BfME70",
|
||||||
|
title: "Keeping It In The Dark",
|
||||||
|
duration: Some(209),
|
||||||
|
cover: [],
|
||||||
|
artists: [
|
||||||
|
ArtistId(
|
||||||
|
id: Some("UCZcc-WkffIMBVGUr6j9e6aQ"),
|
||||||
|
name: "Daya",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
artist_id: Some("UCZcc-WkffIMBVGUr6j9e6aQ"),
|
||||||
|
album: Some(AlbumId(
|
||||||
|
id: "MPREb_AzuWg8qAVVl",
|
||||||
|
name: "13 Reasons Why (Season 3)",
|
||||||
|
)),
|
||||||
|
view_count: None,
|
||||||
|
is_video: true,
|
||||||
|
track_nr: Some(9),
|
||||||
|
),
|
||||||
|
TrackItem(
|
||||||
|
id: "Kn3cruxYj0c",
|
||||||
|
title: "All That (feat. Jeremih)",
|
||||||
|
duration: Some(174),
|
||||||
|
cover: [],
|
||||||
|
artists: [
|
||||||
|
ArtistId(
|
||||||
|
id: Some("UCQPPz_A65SWYi2wXX8z76AQ"),
|
||||||
|
name: "Drama Relax",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
artist_id: Some("UCQPPz_A65SWYi2wXX8z76AQ"),
|
||||||
|
album: Some(AlbumId(
|
||||||
|
id: "MPREb_AzuWg8qAVVl",
|
||||||
|
name: "13 Reasons Why (Season 3)",
|
||||||
|
)),
|
||||||
|
view_count: None,
|
||||||
|
is_video: false,
|
||||||
|
track_nr: Some(11),
|
||||||
|
),
|
||||||
|
TrackItem(
|
||||||
|
id: "-P1FyntN_Uc",
|
||||||
|
title: "This Baby Don’t Cry",
|
||||||
|
duration: Some(185),
|
||||||
|
cover: [],
|
||||||
|
artists: [
|
||||||
|
ArtistId(
|
||||||
|
id: Some("UChTOXkDhGJ0JftnfMWjpCCg"),
|
||||||
|
name: "K.Flay",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
artist_id: Some("UChTOXkDhGJ0JftnfMWjpCCg"),
|
||||||
|
album: Some(AlbumId(
|
||||||
|
id: "MPREb_AzuWg8qAVVl",
|
||||||
|
name: "13 Reasons Why (Season 3)",
|
||||||
|
)),
|
||||||
|
view_count: None,
|
||||||
|
is_video: true,
|
||||||
|
track_nr: Some(12),
|
||||||
|
),
|
||||||
|
TrackItem(
|
||||||
|
id: "njdlNT1RRo4",
|
||||||
|
title: "Walk Forever By My Side",
|
||||||
|
duration: Some(237),
|
||||||
|
cover: [],
|
||||||
|
artists: [
|
||||||
|
ArtistId(
|
||||||
|
id: Some("UCMUB52aO4CqrUXmLwbfRWYA"),
|
||||||
|
name: "Twin Shadow",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
artist_id: Some("UCMUB52aO4CqrUXmLwbfRWYA"),
|
||||||
|
album: Some(AlbumId(
|
||||||
|
id: "MPREb_AzuWg8qAVVl",
|
||||||
|
name: "13 Reasons Why (Season 3)",
|
||||||
|
)),
|
||||||
|
view_count: None,
|
||||||
|
is_video: false,
|
||||||
|
track_nr: Some(13),
|
||||||
|
),
|
||||||
|
TrackItem(
|
||||||
|
id: "Si-CXM8CHqQ",
|
||||||
|
title: "Ordinary World (feat. White Sea)",
|
||||||
|
duration: Some(246),
|
||||||
|
cover: [],
|
||||||
|
artists: [
|
||||||
|
ArtistId(
|
||||||
|
id: Some("UC4YvDAbE1EYwZpj6gQ-lpLw"),
|
||||||
|
name: "Eskmo",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
artist_id: Some("UC4YvDAbE1EYwZpj6gQ-lpLw"),
|
||||||
|
album: Some(AlbumId(
|
||||||
|
id: "MPREb_AzuWg8qAVVl",
|
||||||
|
name: "13 Reasons Why (Season 3)",
|
||||||
|
)),
|
||||||
|
view_count: None,
|
||||||
|
is_video: false,
|
||||||
|
track_nr: Some(18),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
variants: [],
|
||||||
|
)
|
||||||
7042
testfiles/music_playlist/album_unavailable.json
Normal file
7042
testfiles/music_playlist/album_unavailable.json
Normal file
File diff suppressed because it is too large
Load diff
258
tests/snapshots/youtube__music_album_unavailable.snap
Normal file
258
tests/snapshots/youtube__music_album_unavailable.snap
Normal file
|
|
@ -0,0 +1,258 @@
|
||||||
|
---
|
||||||
|
source: tests/youtube.rs
|
||||||
|
expression: album
|
||||||
|
---
|
||||||
|
MusicAlbum(
|
||||||
|
id: "MPREb_AzuWg8qAVVl",
|
||||||
|
playlist_id: Some("OLAK5uy_mux5ygfN9sbiR1ma3yh1GHTmqNekZNoAI"),
|
||||||
|
name: "13 Reasons Why (Season 3)",
|
||||||
|
cover: "[cover]",
|
||||||
|
artists: [],
|
||||||
|
description: None,
|
||||||
|
album_type: Album,
|
||||||
|
year: Some(2019),
|
||||||
|
by_va: true,
|
||||||
|
tracks: [
|
||||||
|
TrackItem(
|
||||||
|
id: "R3VIKRtzAdE",
|
||||||
|
title: "Teeth",
|
||||||
|
duration: Some(205),
|
||||||
|
cover: [],
|
||||||
|
artists: [
|
||||||
|
ArtistId(
|
||||||
|
id: Some("UCCj0RlDqqahEB5BXVtDcPqg"),
|
||||||
|
name: "5 Seconds of Summer",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
artist_id: Some("UCCj0RlDqqahEB5BXVtDcPqg"),
|
||||||
|
album: Some(AlbumId(
|
||||||
|
id: "MPREb_AzuWg8qAVVl",
|
||||||
|
name: "13 Reasons Why (Season 3)",
|
||||||
|
)),
|
||||||
|
view_count: None,
|
||||||
|
is_video: false,
|
||||||
|
track_nr: Some(1),
|
||||||
|
),
|
||||||
|
TrackItem(
|
||||||
|
id: "t0v0UOgOt18",
|
||||||
|
title: "Die A Little",
|
||||||
|
duration: Some(174),
|
||||||
|
cover: [],
|
||||||
|
artists: [
|
||||||
|
ArtistId(
|
||||||
|
id: Some("UCMrCoizKiBxqeg5pTpBXn1A"),
|
||||||
|
name: "YUNGBLUD",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
artist_id: Some("UCMrCoizKiBxqeg5pTpBXn1A"),
|
||||||
|
album: Some(AlbumId(
|
||||||
|
id: "MPREb_AzuWg8qAVVl",
|
||||||
|
name: "13 Reasons Why (Season 3)",
|
||||||
|
)),
|
||||||
|
view_count: None,
|
||||||
|
is_video: false,
|
||||||
|
track_nr: Some(2),
|
||||||
|
),
|
||||||
|
TrackItem(
|
||||||
|
id: "HjJYAkUXrxI",
|
||||||
|
title: "fuck, i\'m lonely (feat. Anne-Marie)",
|
||||||
|
duration: Some(199),
|
||||||
|
cover: [],
|
||||||
|
artists: [
|
||||||
|
ArtistId(
|
||||||
|
id: Some("UCWjoDY2SXJ5dvcdunWI6mjQ"),
|
||||||
|
name: "Lauv",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
artist_id: Some("UCWjoDY2SXJ5dvcdunWI6mjQ"),
|
||||||
|
album: Some(AlbumId(
|
||||||
|
id: "MPREb_AzuWg8qAVVl",
|
||||||
|
name: "13 Reasons Why (Season 3)",
|
||||||
|
)),
|
||||||
|
view_count: None,
|
||||||
|
is_video: false,
|
||||||
|
track_nr: Some(3),
|
||||||
|
),
|
||||||
|
TrackItem(
|
||||||
|
id: "Hg0KUOTL06I",
|
||||||
|
title: "Swim Home",
|
||||||
|
duration: Some(187),
|
||||||
|
cover: [],
|
||||||
|
artists: [
|
||||||
|
ArtistId(
|
||||||
|
id: Some("UChzK2t3sjnQkWzGnyKXOSSg"),
|
||||||
|
name: "Cautious Clay",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
artist_id: Some("UChzK2t3sjnQkWzGnyKXOSSg"),
|
||||||
|
album: Some(AlbumId(
|
||||||
|
id: "MPREb_AzuWg8qAVVl",
|
||||||
|
name: "13 Reasons Why (Season 3)",
|
||||||
|
)),
|
||||||
|
view_count: None,
|
||||||
|
is_video: false,
|
||||||
|
track_nr: Some(5),
|
||||||
|
),
|
||||||
|
TrackItem(
|
||||||
|
id: "c8AfY6yhdkM",
|
||||||
|
title: "Another Summer Night Without You",
|
||||||
|
duration: Some(159),
|
||||||
|
cover: [],
|
||||||
|
artists: [
|
||||||
|
ArtistId(
|
||||||
|
id: Some("UCvsgN5NKOzXnAURfaf3TOig"),
|
||||||
|
name: "Alexander 23",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
artist_id: Some("UCvsgN5NKOzXnAURfaf3TOig"),
|
||||||
|
album: Some(AlbumId(
|
||||||
|
id: "MPREb_AzuWg8qAVVl",
|
||||||
|
name: "13 Reasons Why (Season 3)",
|
||||||
|
)),
|
||||||
|
view_count: None,
|
||||||
|
is_video: false,
|
||||||
|
track_nr: Some(6),
|
||||||
|
),
|
||||||
|
TrackItem(
|
||||||
|
id: "_ZmdHjVvwhc",
|
||||||
|
title: "Miss U",
|
||||||
|
duration: Some(186),
|
||||||
|
cover: [],
|
||||||
|
artists: [
|
||||||
|
ArtistId(
|
||||||
|
id: Some("UCI4YNnmHjXFaaKvfdmpWvJQ"),
|
||||||
|
name: "Charli XCX",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
artist_id: Some("UCI4YNnmHjXFaaKvfdmpWvJQ"),
|
||||||
|
album: Some(AlbumId(
|
||||||
|
id: "MPREb_AzuWg8qAVVl",
|
||||||
|
name: "13 Reasons Why (Season 3)",
|
||||||
|
)),
|
||||||
|
view_count: None,
|
||||||
|
is_video: false,
|
||||||
|
track_nr: Some(7),
|
||||||
|
),
|
||||||
|
TrackItem(
|
||||||
|
id: "wBe1Zi3q1n8",
|
||||||
|
title: "Favorite Drug",
|
||||||
|
duration: Some(209),
|
||||||
|
cover: [],
|
||||||
|
artists: [
|
||||||
|
ArtistId(
|
||||||
|
id: Some("UCDaFVUr2n8T7_X1f5yJ1xlw"),
|
||||||
|
name: "daydream Masi",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
artist_id: Some("UCDaFVUr2n8T7_X1f5yJ1xlw"),
|
||||||
|
album: Some(AlbumId(
|
||||||
|
id: "MPREb_AzuWg8qAVVl",
|
||||||
|
name: "13 Reasons Why (Season 3)",
|
||||||
|
)),
|
||||||
|
view_count: None,
|
||||||
|
is_video: false,
|
||||||
|
track_nr: Some(8),
|
||||||
|
),
|
||||||
|
TrackItem(
|
||||||
|
id: "l8Pj8s9uPGc",
|
||||||
|
title: "Keeping It In The Dark",
|
||||||
|
duration: Some(209),
|
||||||
|
cover: [],
|
||||||
|
artists: [
|
||||||
|
ArtistId(
|
||||||
|
id: Some("UCZcc-WkffIMBVGUr6j9e6aQ"),
|
||||||
|
name: "Daya",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
artist_id: Some("UCZcc-WkffIMBVGUr6j9e6aQ"),
|
||||||
|
album: Some(AlbumId(
|
||||||
|
id: "MPREb_AzuWg8qAVVl",
|
||||||
|
name: "13 Reasons Why (Season 3)",
|
||||||
|
)),
|
||||||
|
view_count: None,
|
||||||
|
is_video: false,
|
||||||
|
track_nr: Some(9),
|
||||||
|
),
|
||||||
|
TrackItem(
|
||||||
|
id: "Kn3cruxYj0c",
|
||||||
|
title: "All That (feat. Jeremih)",
|
||||||
|
duration: Some(174),
|
||||||
|
cover: [],
|
||||||
|
artists: [
|
||||||
|
ArtistId(
|
||||||
|
id: Some("UCQPPz_A65SWYi2wXX8z76AQ"),
|
||||||
|
name: "Drama Relax",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
artist_id: Some("UCQPPz_A65SWYi2wXX8z76AQ"),
|
||||||
|
album: Some(AlbumId(
|
||||||
|
id: "MPREb_AzuWg8qAVVl",
|
||||||
|
name: "13 Reasons Why (Season 3)",
|
||||||
|
)),
|
||||||
|
view_count: None,
|
||||||
|
is_video: false,
|
||||||
|
track_nr: Some(11),
|
||||||
|
),
|
||||||
|
TrackItem(
|
||||||
|
id: "Sy1lIOl1YN0",
|
||||||
|
title: "This Baby Don’t Cry",
|
||||||
|
duration: Some(185),
|
||||||
|
cover: [],
|
||||||
|
artists: [
|
||||||
|
ArtistId(
|
||||||
|
id: Some("UChTOXkDhGJ0JftnfMWjpCCg"),
|
||||||
|
name: "K.Flay",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
artist_id: Some("UChTOXkDhGJ0JftnfMWjpCCg"),
|
||||||
|
album: Some(AlbumId(
|
||||||
|
id: "MPREb_AzuWg8qAVVl",
|
||||||
|
name: "13 Reasons Why (Season 3)",
|
||||||
|
)),
|
||||||
|
view_count: None,
|
||||||
|
is_video: false,
|
||||||
|
track_nr: Some(12),
|
||||||
|
),
|
||||||
|
TrackItem(
|
||||||
|
id: "njdlNT1RRo4",
|
||||||
|
title: "Walk Forever By My Side",
|
||||||
|
duration: Some(237),
|
||||||
|
cover: [],
|
||||||
|
artists: [
|
||||||
|
ArtistId(
|
||||||
|
id: Some("UCMUB52aO4CqrUXmLwbfRWYA"),
|
||||||
|
name: "Twin Shadow",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
artist_id: Some("UCMUB52aO4CqrUXmLwbfRWYA"),
|
||||||
|
album: Some(AlbumId(
|
||||||
|
id: "MPREb_AzuWg8qAVVl",
|
||||||
|
name: "13 Reasons Why (Season 3)",
|
||||||
|
)),
|
||||||
|
view_count: None,
|
||||||
|
is_video: false,
|
||||||
|
track_nr: Some(13),
|
||||||
|
),
|
||||||
|
TrackItem(
|
||||||
|
id: "Si-CXM8CHqQ",
|
||||||
|
title: "Ordinary World (feat. White Sea)",
|
||||||
|
duration: Some(246),
|
||||||
|
cover: [],
|
||||||
|
artists: [
|
||||||
|
ArtistId(
|
||||||
|
id: Some("UC4YvDAbE1EYwZpj6gQ-lpLw"),
|
||||||
|
name: "Eskmo",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
artist_id: Some("UC4YvDAbE1EYwZpj6gQ-lpLw"),
|
||||||
|
album: Some(AlbumId(
|
||||||
|
id: "MPREb_AzuWg8qAVVl",
|
||||||
|
name: "13 Reasons Why (Season 3)",
|
||||||
|
)),
|
||||||
|
view_count: None,
|
||||||
|
is_video: false,
|
||||||
|
track_nr: Some(18),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
variants: [],
|
||||||
|
)
|
||||||
|
|
@ -4,18 +4,20 @@ use std::fmt::Display;
|
||||||
use fancy_regex::Regex;
|
use fancy_regex::Regex;
|
||||||
use once_cell::sync::Lazy;
|
use once_cell::sync::Lazy;
|
||||||
use rstest::rstest;
|
use rstest::rstest;
|
||||||
use rustypipe::param::Country;
|
|
||||||
use time::macros::date;
|
use time::macros::date;
|
||||||
use time::OffsetDateTime;
|
use time::OffsetDateTime;
|
||||||
|
|
||||||
use rustypipe::client::{ClientType, RustyPipe, RustyPipeQuery};
|
use rustypipe::client::{ClientType, RustyPipe, RustyPipeQuery};
|
||||||
use rustypipe::error::{Error, ExtractionError};
|
use rustypipe::error::{Error, ExtractionError};
|
||||||
use rustypipe::model::richtext::ToPlaintext;
|
|
||||||
use rustypipe::model::{
|
use rustypipe::model::{
|
||||||
AlbumType, AudioCodec, AudioFormat, Channel, FromYtItem, MusicEntityType, MusicGenre,
|
richtext::ToPlaintext, AlbumType, AudioCodec, AudioFormat, Channel, FromYtItem,
|
||||||
Paginator, UrlTarget, Verification, VideoCodec, VideoFormat, YouTubeItem, YtStream,
|
MusicEntityType, MusicGenre, Paginator, UrlTarget, Verification, VideoCodec, VideoFormat,
|
||||||
|
YouTubeItem, YtStream,
|
||||||
|
};
|
||||||
|
use rustypipe::param::{
|
||||||
|
search_filter::{self, SearchFilter},
|
||||||
|
Country,
|
||||||
};
|
};
|
||||||
use rustypipe::param::search_filter::{self, SearchFilter};
|
|
||||||
|
|
||||||
//#PLAYER
|
//#PLAYER
|
||||||
|
|
||||||
|
|
@ -1364,6 +1366,7 @@ async fn music_playlist_not_found() {
|
||||||
#[case::ep("ep", "MPREb_u1I69lSAe5v")]
|
#[case::ep("ep", "MPREb_u1I69lSAe5v")]
|
||||||
#[case::audiobook("audiobook", "MPREb_gaoNzsQHedo")]
|
#[case::audiobook("audiobook", "MPREb_gaoNzsQHedo")]
|
||||||
#[case::show("show", "MPREb_cwzk8EUwypZ")]
|
#[case::show("show", "MPREb_cwzk8EUwypZ")]
|
||||||
|
#[case::unavailable("unavailable", "MPREb_AzuWg8qAVVl")]
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
async fn music_album(#[case] name: &str, #[case] id: &str) {
|
async fn music_album(#[case] name: &str, #[case] id: &str) {
|
||||||
let rp = RustyPipe::builder().strict().build();
|
let rp = RustyPipe::builder().strict().build();
|
||||||
|
|
|
||||||
Reference in a new issue