fix: update channel order tokens
This commit is contained in:
parent
b589061a40
commit
79a62816ff
3 changed files with 56 additions and 43 deletions
|
|
@ -631,7 +631,33 @@ fn order_ctoken(
|
|||
) -> String {
|
||||
let mut pb_tab = ProtoBuilder::new();
|
||||
pb_tab.string(2, target_id);
|
||||
pb_tab.varint(3, order as u64);
|
||||
|
||||
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();
|
||||
pb_3.embedded(tab.order_ctoken_id(), pb_tab);
|
||||
|
|
@ -802,7 +828,7 @@ mod tests {
|
|||
ChannelOrder::Popular,
|
||||
"\n$6461d7c8-0000-2040-87aa-089e0827e420",
|
||||
);
|
||||
assert_eq!(videos_popular_token, "4qmFsgJkEhhVQ1h1cVNCbEhBRTZYdy15ZUpBMFR1bncaSDhnWXVHaXg2S2hJbUNpUTJORFl4WkRkak9DMHdNREF3TFRJd05EQXRPRGRoWVMwd09EbGxNRGd5TjJVME1qQVlBZyUzRCUzRA%3D%3D");
|
||||
assert_eq!(videos_popular_token, "4qmFsgJgEhhVQ1h1cVNCbEhBRTZYdy15ZUpBMFR1bncaRDhnWXdHaTU2TEJJbUNpUTJORFl4WkRkak9DMHdNREF3TFRJd05EQXRPRGRoWVMwd09EbGxNRGd5TjJVME1qQVlBaUFD");
|
||||
|
||||
let shorts_popular_token = order_ctoken(
|
||||
channel_id,
|
||||
|
|
@ -810,7 +836,7 @@ mod tests {
|
|||
ChannelOrder::Popular,
|
||||
"\n$64679ffb-0000-26b3-a1bd-582429d2c794",
|
||||
);
|
||||
assert_eq!(shorts_popular_token, "4qmFsgJkEhhVQ1h1cVNCbEhBRTZYdy15ZUpBMFR1bncaSDhnWXVHaXhTS2hJbUNpUTJORFkzT1dabVlpMHdNREF3TFRJMllqTXRZVEZpWkMwMU9ESTBNamxrTW1NM09UUVlBZyUzRCUzRA%3D%3D");
|
||||
assert_eq!(shorts_popular_token, "4qmFsgJkEhhVQ1h1cVNCbEhBRTZYdy15ZUpBMFR1bncaSDhnWXVHaXhTS2hJbUNpUTJORFkzT1dabVlpMHdNREF3TFRJMllqTXRZVEZpWkMwMU9ESTBNamxrTW1NM09UUWdBZyUzRCUzRA%3D%3D");
|
||||
|
||||
let live_popular_token = order_ctoken(
|
||||
channel_id,
|
||||
|
|
@ -818,7 +844,7 @@ mod tests {
|
|||
ChannelOrder::Popular,
|
||||
"\n$64693069-0000-2a1e-8c7d-582429bd5ba8",
|
||||
);
|
||||
assert_eq!(live_popular_token, "4qmFsgJkEhhVQ1h1cVNCbEhBRTZYdy15ZUpBMFR1bncaSDhnWXVHaXh5S2hJbUNpUTJORFk1TXpBMk9TMHdNREF3TFRKaE1XVXRPR00zWkMwMU9ESTBNamxpWkRWaVlUZ1lBZyUzRCUzRA%3D%3D");
|
||||
assert_eq!(live_popular_token, "4qmFsgJkEhhVQ1h1cVNCbEhBRTZYdy15ZUpBMFR1bncaSDhnWXVHaXh5S2hJbUNpUTJORFk1TXpBMk9TMHdNREF3TFRKaE1XVXRPR00zWkMwMU9ESTBNamxpWkRWaVlUZ29EZyUzRCUzRA%3D%3D");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
|
|||
|
|
@ -27,11 +27,11 @@ pub enum ChannelVideoTab {
|
|||
pub enum ChannelOrder {
|
||||
/// Order videos with the latest upload date first (default)
|
||||
#[default]
|
||||
Latest = 1,
|
||||
Latest, // video 3=1,4=4; shorts 4=4; live 5=12
|
||||
/// Order videos with the highest number of views first
|
||||
Popular = 2,
|
||||
Popular, // video 3=2,4=2; shorts 4=2; live 5=14
|
||||
/// Order videos with the earliest upload date first
|
||||
Oldest = 4,
|
||||
Oldest, // video 3=4,4=5; shorts 4=5; live 5=13
|
||||
}
|
||||
|
||||
impl ChannelVideoTab {
|
||||
|
|
|
|||
|
|
@ -1968,46 +1968,33 @@ async fn music_search_videos(rp: RustyPipe, unlocalized: bool) {
|
|||
}
|
||||
|
||||
#[rstest]
|
||||
#[case::main(false)]
|
||||
#[case::videos(true)]
|
||||
#[tokio::test]
|
||||
async fn music_search_episode(rp: RustyPipe, #[case] videos: bool) {
|
||||
async fn music_search_episode(rp: RustyPipe) {
|
||||
let query = "Blond - Da muss man dabei gewesen sein: Das Hörspiel - Fall #1";
|
||||
let track_id = "Zq_-LDy7AgE";
|
||||
|
||||
let track = if videos {
|
||||
let items = rp
|
||||
.query()
|
||||
.music_search_videos(query)
|
||||
.await
|
||||
.unwrap()
|
||||
.items
|
||||
.items;
|
||||
items.iter().find(|a| a.id == track_id).cloned()
|
||||
} else {
|
||||
let items = rp
|
||||
.query()
|
||||
.music_search_main(query)
|
||||
.await
|
||||
.unwrap()
|
||||
.items
|
||||
.items;
|
||||
items
|
||||
.iter()
|
||||
.find_map(|itm| {
|
||||
if let MusicItem::Track(track) = itm {
|
||||
if track.id == track_id {
|
||||
Some(track)
|
||||
} else {
|
||||
None
|
||||
}
|
||||
let items = rp
|
||||
.query()
|
||||
.music_search_main(query)
|
||||
.await
|
||||
.unwrap()
|
||||
.items
|
||||
.items;
|
||||
let track = items
|
||||
.iter()
|
||||
.find_map(|itm| {
|
||||
if let MusicItem::Track(track) = itm {
|
||||
if track.id == track_id {
|
||||
Some(track)
|
||||
} else {
|
||||
None
|
||||
}
|
||||
})
|
||||
.cloned()
|
||||
}
|
||||
.expect("could not find episode");
|
||||
} else {
|
||||
None
|
||||
}
|
||||
})
|
||||
.cloned()
|
||||
.expect("could not find episode");
|
||||
|
||||
assert_eq!(track.artists.len(), 1);
|
||||
let track_artist = &track.artists[0];
|
||||
|
|
@ -2015,9 +2002,9 @@ async fn music_search_episode(rp: RustyPipe, #[case] videos: bool) {
|
|||
track.name,
|
||||
"Blond - Da muss man dabei gewesen sein: Das Hörspiel - Fall #1"
|
||||
);
|
||||
assert_eq!(track_artist.name, "BLOND_OFFICIAL");
|
||||
assert_eq!(track_artist.id.as_deref(), Some("UC8SmM4bue6bKHT4p-_YFZHQ"));
|
||||
assert_eq!(track.artist_id.as_deref(), Some("UC8SmM4bue6bKHT4p-_YFZHQ"));
|
||||
assert_eq!(track_artist.name, "Da muss man dabei gewesen sein");
|
||||
assert_eq!(track_artist.id.as_deref(), None);
|
||||
assert_eq!(track.artist_id.as_deref(), None);
|
||||
assert!(!track.cover.is_empty(), "got no cover");
|
||||
assert!(track.is_video);
|
||||
}
|
||||
|
|
|
|||
Reference in a new issue