fix: update channel order tokens

This commit is contained in:
ThetaDev 2024-10-23 00:30:18 +02:00
parent 93dbd0d20c
commit ed7c5fd3bb
3 changed files with 56 additions and 43 deletions

View file

@ -631,7 +631,33 @@ fn order_ctoken(
) -> String { ) -> String {
let mut pb_tab = ProtoBuilder::new(); let mut pb_tab = ProtoBuilder::new();
pb_tab.string(2, target_id); 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(); let mut pb_3 = ProtoBuilder::new();
pb_3.embedded(tab.order_ctoken_id(), pb_tab); pb_3.embedded(tab.order_ctoken_id(), pb_tab);
@ -802,7 +828,7 @@ mod tests {
ChannelOrder::Popular, ChannelOrder::Popular,
"\n$6461d7c8-0000-2040-87aa-089e0827e420", "\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( let shorts_popular_token = order_ctoken(
channel_id, channel_id,
@ -810,7 +836,7 @@ mod tests {
ChannelOrder::Popular, ChannelOrder::Popular,
"\n$64679ffb-0000-26b3-a1bd-582429d2c794", "\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( let live_popular_token = order_ctoken(
channel_id, channel_id,
@ -818,7 +844,7 @@ mod tests {
ChannelOrder::Popular, ChannelOrder::Popular,
"\n$64693069-0000-2a1e-8c7d-582429bd5ba8", "\n$64693069-0000-2a1e-8c7d-582429bd5ba8",
); );
assert_eq!(live_popular_token, "4qmFsgJkEhhVQ1h1cVNCbEhBRTZYdy15ZUpBMFR1bncaSDhnWXVHaXh5S2hJbUNpUTJORFk1TXpBMk9TMHdNREF3TFRKaE1XVXRPR00zWkMwMU9ESTBNamxpWkRWaVlUZ1lBZyUzRCUzRA%3D%3D"); assert_eq!(live_popular_token, "4qmFsgJkEhhVQ1h1cVNCbEhBRTZYdy15ZUpBMFR1bncaSDhnWXVHaXh5S2hJbUNpUTJORFk1TXpBMk9TMHdNREF3TFRKaE1XVXRPR00zWkMwMU9ESTBNamxpWkRWaVlUZ29EZyUzRCUzRA%3D%3D");
} }
#[test] #[test]

View file

@ -27,11 +27,11 @@ pub enum ChannelVideoTab {
pub enum ChannelOrder { pub enum ChannelOrder {
/// Order videos with the latest upload date first (default) /// Order videos with the latest upload date first (default)
#[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 /// 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 /// Order videos with the earliest upload date first
Oldest = 4, Oldest, // video 3=4,4=5; shorts 4=5; live 5=13
} }
impl ChannelVideoTab { impl ChannelVideoTab {

View file

@ -1968,46 +1968,33 @@ async fn music_search_videos(rp: RustyPipe, unlocalized: bool) {
} }
#[rstest] #[rstest]
#[case::main(false)]
#[case::videos(true)]
#[tokio::test] #[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 query = "Blond - Da muss man dabei gewesen sein: Das Hörspiel - Fall #1";
let track_id = "Zq_-LDy7AgE"; let track_id = "Zq_-LDy7AgE";
let track = if videos { let items = rp
let items = rp .query()
.query() .music_search_main(query)
.music_search_videos(query) .await
.await .unwrap()
.unwrap() .items
.items .items;
.items; let track = items
items.iter().find(|a| a.id == track_id).cloned() .iter()
} else { .find_map(|itm| {
let items = rp if let MusicItem::Track(track) = itm {
.query() if track.id == track_id {
.music_search_main(query) Some(track)
.await
.unwrap()
.items
.items;
items
.iter()
.find_map(|itm| {
if let MusicItem::Track(track) = itm {
if track.id == track_id {
Some(track)
} else {
None
}
} else { } else {
None None
} }
}) } else {
.cloned() None
} }
.expect("could not find episode"); })
.cloned()
.expect("could not find episode");
assert_eq!(track.artists.len(), 1); assert_eq!(track.artists.len(), 1);
let track_artist = &track.artists[0]; let track_artist = &track.artists[0];
@ -2015,9 +2002,9 @@ async fn music_search_episode(rp: RustyPipe, #[case] videos: bool) {
track.name, track.name,
"Blond - Da muss man dabei gewesen sein: Das Hörspiel - Fall #1" "Blond - Da muss man dabei gewesen sein: Das Hörspiel - Fall #1"
); );
assert_eq!(track_artist.name, "BLOND_OFFICIAL"); assert_eq!(track_artist.name, "Da muss man dabei gewesen sein");
assert_eq!(track_artist.id.as_deref(), Some("UC8SmM4bue6bKHT4p-_YFZHQ")); assert_eq!(track_artist.id.as_deref(), None);
assert_eq!(track.artist_id.as_deref(), Some("UC8SmM4bue6bKHT4p-_YFZHQ")); assert_eq!(track.artist_id.as_deref(), None);
assert!(!track.cover.is_empty(), "got no cover"); assert!(!track.cover.is_empty(), "got no cover");
assert!(track.is_video); assert!(track.is_video);
} }