fix: update channel order tokens

This commit is contained in:
ThetaDev 2024-10-23 00:30:18 +02:00
parent b589061a40
commit 79a62816ff
No known key found for this signature in database
GPG key ID: E319D3C5148D65B6
3 changed files with 56 additions and 43 deletions

View file

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

View file

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

View file

@ -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);
}