feat: add track details, radios
This commit is contained in:
parent
556575f5ff
commit
e4046aef00
22 changed files with 19960 additions and 30 deletions
25
tests/snapshots/youtube__music_details_mv.snap
Normal file
25
tests/snapshots/youtube__music_details_mv.snap
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
---
|
||||
source: tests/youtube.rs
|
||||
expression: track
|
||||
---
|
||||
TrackDetails(
|
||||
track: TrackItem(
|
||||
id: "ZeerrnuLi5E",
|
||||
title: "Black Mamba",
|
||||
duration: Some(230),
|
||||
cover: "[cover]",
|
||||
artists: [
|
||||
ArtistId(
|
||||
id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"),
|
||||
name: "aespa",
|
||||
),
|
||||
],
|
||||
artist_id: Some("UCEdZAdnnKqbaHOlv8nM6OtA"),
|
||||
album: None,
|
||||
view_count: Some(235000000),
|
||||
is_video: true,
|
||||
track_nr: None,
|
||||
),
|
||||
lyrics_id: Some("MPLYt_wrKjTn9hmry"),
|
||||
related_id: Some("MPTRt_wrKjTn9hmry"),
|
||||
)
|
||||
28
tests/snapshots/youtube__music_details_track.snap
Normal file
28
tests/snapshots/youtube__music_details_track.snap
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
---
|
||||
source: tests/youtube.rs
|
||||
expression: track
|
||||
---
|
||||
TrackDetails(
|
||||
track: TrackItem(
|
||||
id: "7nigXQS1Xb0",
|
||||
title: "INVU",
|
||||
duration: Some(205),
|
||||
cover: "[cover]",
|
||||
artists: [
|
||||
ArtistId(
|
||||
id: Some("UCwzCuKxyMY_sT7hr1E8G1XA"),
|
||||
name: "TAEYEON",
|
||||
),
|
||||
],
|
||||
artist_id: Some("UCwzCuKxyMY_sT7hr1E8G1XA"),
|
||||
album: Some(AlbumId(
|
||||
id: "MPREb_4xbv14CiQJm",
|
||||
name: "INVU - The 3rd Album",
|
||||
)),
|
||||
view_count: None,
|
||||
is_video: false,
|
||||
track_nr: None,
|
||||
),
|
||||
lyrics_id: Some("MPLYt_4xbv14CiQJm-1"),
|
||||
related_id: Some("MPTRt_4xbv14CiQJm-1"),
|
||||
)
|
||||
|
|
@ -1509,9 +1509,8 @@ async fn music_search(#[case] typo: bool) {
|
|||
assert_eq!(res.corrected_query, None);
|
||||
}
|
||||
|
||||
let track = &res.tracks[0];
|
||||
dbg!(&track);
|
||||
assert_eq!(track.id, "ZeerrnuLi5E");
|
||||
let track = res.tracks.iter().find(|t| t.id == "ZeerrnuLi5E").unwrap();
|
||||
|
||||
assert_eq!(track.title, "Black Mamba");
|
||||
assert_eq!(track.duration.unwrap(), 230);
|
||||
assert!(!track.cover.is_empty(), "got no cover");
|
||||
|
|
@ -1755,6 +1754,39 @@ async fn music_search_genre_radio() {
|
|||
rp.query().music_search("pop radio").await.unwrap();
|
||||
}
|
||||
|
||||
#[rstest]
|
||||
#[case::mv("mv", "ZeerrnuLi5E")]
|
||||
#[case::track("track", "7nigXQS1Xb0")]
|
||||
#[tokio::test]
|
||||
async fn music_details(#[case] name: &str, #[case] id: &str) {
|
||||
let rp = RustyPipe::builder().strict().build();
|
||||
let track = rp.query().music_details(id).await.unwrap();
|
||||
|
||||
assert!(!track.track.cover.is_empty(), "got no cover");
|
||||
|
||||
insta::assert_ron_snapshot!(format!("music_details_{}", name), track,
|
||||
{".track.cover" => "[cover]"}
|
||||
);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn music_radio_track() {
|
||||
let rp = RustyPipe::builder().strict().build();
|
||||
let tracks = rp.query().music_radio_track("ZeerrnuLi5E").await.unwrap();
|
||||
assert_next(tracks, &rp.query(), 20, 3).await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn music_radio_playlist() {
|
||||
let rp = RustyPipe::builder().strict().build();
|
||||
let tracks = rp
|
||||
.query()
|
||||
.music_radio_playlist("PL5dDx681T4bR7ZF1IuWzOv1omlRbE7PiJ")
|
||||
.await
|
||||
.unwrap();
|
||||
assert_next(tracks, &rp.query(), 20, 1).await;
|
||||
}
|
||||
|
||||
//#TESTUTIL
|
||||
|
||||
/// Assert equality within 10% margin
|
||||
|
|
|
|||
Reference in a new issue