feat: add track details, radios

This commit is contained in:
ThetaDev 2022-11-10 23:19:11 +01:00
parent 556575f5ff
commit e4046aef00
22 changed files with 19960 additions and 30 deletions

View 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"),
)

View 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"),
)

View file

@ -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