fix: update channel order tokens
This commit is contained in:
parent
93dbd0d20c
commit
ed7c5fd3bb
3 changed files with 56 additions and 43 deletions
|
|
@ -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]
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Reference in a new issue