test: add integration tests for YTM albums/search
This commit is contained in:
parent
c7ae2f8531
commit
b38bc711c7
16 changed files with 3743 additions and 286 deletions
|
|
@ -128,7 +128,7 @@ impl MapResponse<Paginator<MusicItem>> for response::MusicContinuation {
|
|||
_deobf: Option<&crate::deobfuscate::Deobfuscator>,
|
||||
) -> Result<MapResult<Paginator<MusicItem>>, ExtractionError> {
|
||||
let mut mapper = MusicListMapper::new(lang);
|
||||
let mut shelf = self.continuation_contents.music_playlist_shelf_continuation;
|
||||
let mut shelf = self.continuation_contents.music_shelf_continuation;
|
||||
mapper.map_response(shelf.contents);
|
||||
let map_res = mapper.items();
|
||||
|
||||
|
|
|
|||
|
|
@ -183,7 +183,8 @@ pub(crate) struct MusicContinuation {
|
|||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct ContinuationContents {
|
||||
pub music_playlist_shelf_continuation: MusicShelf,
|
||||
#[serde(alias = "musicPlaylistShelfContinuation")]
|
||||
pub music_shelf_continuation: MusicShelf,
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -36,13 +36,47 @@ pub(crate) struct WatchEndpoint {
|
|||
pub start_time_seconds: u32,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
#[derive(Debug)]
|
||||
pub(crate) struct BrowseEndpoint {
|
||||
pub browse_id: String,
|
||||
pub browse_endpoint_context_supported_configs: Option<BrowseEndpointConfig>,
|
||||
}
|
||||
|
||||
impl<'de> Deserialize<'de> for BrowseEndpoint {
|
||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
||||
where
|
||||
D: serde::Deserializer<'de>,
|
||||
{
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
struct BEp {
|
||||
pub browse_id: String,
|
||||
pub browse_endpoint_context_supported_configs: Option<BrowseEndpointConfig>,
|
||||
}
|
||||
|
||||
let bep = BEp::deserialize(deserializer)?;
|
||||
|
||||
// Remove the VL prefix from the playlist id
|
||||
let browse_id = bep
|
||||
.browse_endpoint_context_supported_configs
|
||||
.as_ref()
|
||||
.and_then(
|
||||
|cfg| match cfg.browse_endpoint_context_music_config.page_type {
|
||||
PageType::Playlist => bep.browse_id.strip_prefix("VL"),
|
||||
_ => None,
|
||||
},
|
||||
)
|
||||
.map(str::to_owned)
|
||||
.unwrap_or(bep.browse_id);
|
||||
|
||||
Ok(Self {
|
||||
browse_id,
|
||||
browse_endpoint_context_supported_configs: bep
|
||||
.browse_endpoint_context_supported_configs,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct UrlEndpoint {
|
||||
|
|
@ -75,9 +109,12 @@ pub(crate) struct WebCommandMetadata {
|
|||
|
||||
#[derive(Debug, Clone, Copy, Deserialize, PartialEq, Eq)]
|
||||
pub(crate) enum PageType {
|
||||
#[serde(rename = "MUSIC_PAGE_TYPE_ARTIST")]
|
||||
#[serde(
|
||||
rename = "MUSIC_PAGE_TYPE_ARTIST",
|
||||
alias = "MUSIC_PAGE_TYPE_AUDIOBOOK_ARTIST"
|
||||
)]
|
||||
Artist,
|
||||
#[serde(rename = "MUSIC_PAGE_TYPE_ALBUM")]
|
||||
#[serde(rename = "MUSIC_PAGE_TYPE_ALBUM", alias = "MUSIC_PAGE_TYPE_AUDIOBOOK")]
|
||||
Album,
|
||||
#[serde(
|
||||
rename = "WEB_PAGE_TYPE_CHANNEL",
|
||||
|
|
|
|||
|
|
@ -356,7 +356,7 @@ MusicSearchResult(
|
|||
],
|
||||
playlists: [
|
||||
MusicPlaylistItem(
|
||||
id: "VLPLk76iSbFqNJsu_Gozn9SkEXxQ7t-bpXid",
|
||||
id: "PLk76iSbFqNJsu_Gozn9SkEXxQ7t-bpXid",
|
||||
name: "IRMA MIRTILLA Black Mamba",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -383,7 +383,7 @@ MusicSearchResult(
|
|||
from_ytm: false,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLPLIL9Q2jz6euDEJZKHd4QaG4iic944_vKY",
|
||||
id: "PLIL9Q2jz6euDEJZKHd4QaG4iic944_vKY",
|
||||
name: "Black Mamba",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -410,7 +410,7 @@ MusicSearchResult(
|
|||
from_ytm: false,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLPLinm7-cvTdN7RqadpfNrncUGqkdyKNpn6",
|
||||
id: "PLinm7-cvTdN7RqadpfNrncUGqkdyKNpn6",
|
||||
name: "Black Mamba",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ MusicSearchFiltered(
|
|||
count: None,
|
||||
items: [
|
||||
MusicPlaylistItem(
|
||||
id: "VLPLDIoUOhQQPlVr3qepMVRsDe4T8vNQsvno",
|
||||
id: "PLDIoUOhQQPlVr3qepMVRsDe4T8vNQsvno",
|
||||
name: "Türkçe Pop Şarkılar 2022 - Yeni Hit Şarkılar 2022",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -34,7 +34,7 @@ MusicSearchFiltered(
|
|||
from_ytm: false,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLPLI_7Mg2Z_-4Lf7IYeiTEOV8HBn-nMqz5N",
|
||||
id: "PLI_7Mg2Z_-4Lf7IYeiTEOV8HBn-nMqz5N",
|
||||
name: "Pop 2022 ♫ Mix Pop En Ingles (English Pop Songs 2022)",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -61,7 +61,7 @@ MusicSearchFiltered(
|
|||
from_ytm: false,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLPLTC7VQ12-9raqhLCx1S1E_ic35t94dj28",
|
||||
id: "PLTC7VQ12-9raqhLCx1S1E_ic35t94dj28",
|
||||
name: "Pop & Pop Rock Hits 🔥 2012 - 2022",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -88,7 +88,7 @@ MusicSearchFiltered(
|
|||
from_ytm: false,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLPLPssMy7y6ygl-Kzi9Mc7TVFFPWwyAXIwW",
|
||||
id: "PLPssMy7y6ygl-Kzi9Mc7TVFFPWwyAXIwW",
|
||||
name: "Bester deutscher Pop/Best of German Pop music",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -115,7 +115,7 @@ MusicSearchFiltered(
|
|||
from_ytm: false,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLPLMC9KNkIncKtPzgY-5rmhvj7fax8fdxoj",
|
||||
id: "PLMC9KNkIncKtPzgY-5rmhvj7fax8fdxoj",
|
||||
name: "Pop Music Playlist - Timeless Pop Songs (Updated Weekly 2022)",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -142,7 +142,7 @@ MusicSearchFiltered(
|
|||
from_ytm: false,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLPLX6L4t7t6ZanfCJ1wBxRdGZ_mk9ygmKqo",
|
||||
id: "PLX6L4t7t6ZanfCJ1wBxRdGZ_mk9ygmKqo",
|
||||
name: "Deutsch Pop Hits NEU 2022",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -169,7 +169,7 @@ MusicSearchFiltered(
|
|||
from_ytm: false,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLPL1jMjCxDqxLvomtUMbqa_4pAjMmzpfgUy",
|
||||
id: "PL1jMjCxDqxLvomtUMbqa_4pAjMmzpfgUy",
|
||||
name: "Top 100 Músicas Internacionais Pop 2022",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -196,7 +196,7 @@ MusicSearchFiltered(
|
|||
from_ytm: false,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLPLgRdph0qPLy53IhYrQLPpATDDA2TpFey5",
|
||||
id: "PLgRdph0qPLy53IhYrQLPpATDDA2TpFey5",
|
||||
name: "Teen-Pop 90-2000",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -223,7 +223,7 @@ MusicSearchFiltered(
|
|||
from_ytm: false,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLPLV9Y77TQ4I9dXpIF-r54ZTLM5T7C4k5jf",
|
||||
id: "PLV9Y77TQ4I9dXpIF-r54ZTLM5T7C4k5jf",
|
||||
name: "Most Popular Soft Pop Songs of 2022 Playlist - Best Soft Pop Music Hits of the Year 2022",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -250,7 +250,7 @@ MusicSearchFiltered(
|
|||
from_ytm: false,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLPLlYKDqBVDxX2TXAf8ruuF3FVZgzF3wCTx",
|
||||
id: "PLlYKDqBVDxX2TXAf8ruuF3FVZgzF3wCTx",
|
||||
name: "Pop 2022 ♫ Best Pop Songs Playlist 2022",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -277,7 +277,7 @@ MusicSearchFiltered(
|
|||
from_ytm: false,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLPLMC9KNkIncKvYin_USF1qoJQnIyMAfRxl",
|
||||
id: "PLMC9KNkIncKvYin_USF1qoJQnIyMAfRxl",
|
||||
name: "Best Pop Songs of All Time: Playlist of Good Songs (Throwback Hits & Pop Music 2022)",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -304,7 +304,7 @@ MusicSearchFiltered(
|
|||
from_ytm: false,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLPLKUA473MWUv2jmkqIxzQR3YL4kuPArj4G",
|
||||
id: "PLKUA473MWUv2jmkqIxzQR3YL4kuPArj4G",
|
||||
name: "Best Pop Music for Office – Good Songs for Work: Pop Hits Collection (Playlist Updated in 2022)",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -331,7 +331,7 @@ MusicSearchFiltered(
|
|||
from_ytm: false,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLPLkqz3S84Tw-RfPS9HHi3MRmrinOBKxIr8",
|
||||
id: "PLkqz3S84Tw-RfPS9HHi3MRmrinOBKxIr8",
|
||||
name: "Top POP Hits 2022 – Biggest Pop Music Videos - Vevo",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -358,7 +358,7 @@ MusicSearchFiltered(
|
|||
from_ytm: false,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLPLEBX04z4REEaHbC7ghEqFwwL4ptIw8qaZ",
|
||||
id: "PLEBX04z4REEaHbC7ghEqFwwL4ptIw8qaZ",
|
||||
name: "Playlist Pop Rock 2022 ♫ Musique Pop Rock 2022 Nouveauté",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -385,7 +385,7 @@ MusicSearchFiltered(
|
|||
from_ytm: false,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLPLMC9KNkIncKtGvr2kFRuXBVmBev6cAJ2u",
|
||||
id: "PLMC9KNkIncKtGvr2kFRuXBVmBev6cAJ2u",
|
||||
name: "Best Pop Music Videos - Top Pop Hits Playlist",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -412,7 +412,7 @@ MusicSearchFiltered(
|
|||
from_ytm: false,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLPL9NY5axt700FjL6HlEhqlMFT1gjMGVBgy",
|
||||
id: "PL9NY5axt700FjL6HlEhqlMFT1gjMGVBgy",
|
||||
name: "Pop Music Songs 2022",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -439,7 +439,7 @@ MusicSearchFiltered(
|
|||
from_ytm: false,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLPLTariUrSxayvzHkCnEiX5-NSeFgLTqzHE",
|
||||
id: "PLTariUrSxayvzHkCnEiX5-NSeFgLTqzHE",
|
||||
name: "Pop Music Playlist 2022",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -466,7 +466,7 @@ MusicSearchFiltered(
|
|||
from_ytm: false,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLPLB8HqqmpyIBcPirb5lDm-ol01trE6dOuM",
|
||||
id: "PLB8HqqmpyIBcPirb5lDm-ol01trE6dOuM",
|
||||
name: "Mix Internacional 2022 ♫ As Mais Tocadas 2022 Internacionais (Playlist Musicas Pop As Melhores)",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -493,7 +493,7 @@ MusicSearchFiltered(
|
|||
from_ytm: false,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLPLkqz3S84Tw-Qlth8bNBpXGO7L4J1PkCW7",
|
||||
id: "PLkqz3S84Tw-Qlth8bNBpXGO7L4J1PkCW7",
|
||||
name: "POP INTERNATIONAL HOTLIST - Pop Hits 2022- Brandneue Pop Videos | Vevo Playlist",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -520,7 +520,7 @@ MusicSearchFiltered(
|
|||
from_ytm: false,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLPLkqz3S84Tw-SvUSUY5Ov8LTP3KWuWxFab",
|
||||
id: "PLkqz3S84Tw-SvUSUY5Ov8LTP3KWuWxFab",
|
||||
name: "Cheesy Sing-Along Pop Hits!",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ MusicSearchFiltered(
|
|||
count: None,
|
||||
items: [
|
||||
MusicPlaylistItem(
|
||||
id: "VLRDCLAK5uy_nmS3YoxSwVVQk9lEQJ0UX4ZCjXsW_psU8",
|
||||
id: "RDCLAK5uy_nmS3YoxSwVVQk9lEQJ0UX4ZCjXsW_psU8",
|
||||
name: "Pop\'s Biggest Hits",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -36,7 +36,7 @@ MusicSearchFiltered(
|
|||
from_ytm: true,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLRDCLAK5uy_nfs_t4FUu00E5ED6lveEBBX1VMYe1mFjk",
|
||||
id: "RDCLAK5uy_nfs_t4FUu00E5ED6lveEBBX1VMYe1mFjk",
|
||||
name: "Dance-Pop Bangers",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -65,7 +65,7 @@ MusicSearchFiltered(
|
|||
from_ytm: true,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLRDCLAK5uy_nH_fdBVCcbNaVwi_tmZajZRq-ekddiuFY",
|
||||
id: "RDCLAK5uy_nH_fdBVCcbNaVwi_tmZajZRq-ekddiuFY",
|
||||
name: "Pop Meets Country",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -94,7 +94,7 @@ MusicSearchFiltered(
|
|||
from_ytm: true,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLRDCLAK5uy_lb6CVU6S4uVugLVNTU9WhqfaomWAgnho4",
|
||||
id: "RDCLAK5uy_lb6CVU6S4uVugLVNTU9WhqfaomWAgnho4",
|
||||
name: "Shout-Out Pop Hits",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -123,7 +123,7 @@ MusicSearchFiltered(
|
|||
from_ytm: true,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLRDCLAK5uy_mfdqvCAl8wodlx2P2_Ai2gNkiRDAufkkI",
|
||||
id: "RDCLAK5uy_mfdqvCAl8wodlx2P2_Ai2gNkiRDAufkkI",
|
||||
name: "Happy Pop Hits",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -152,7 +152,7 @@ MusicSearchFiltered(
|
|||
from_ytm: true,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLRDCLAK5uy_nHSqCJjDrW9HBhCNdF6tWPdnOMngOv0wA",
|
||||
id: "RDCLAK5uy_nHSqCJjDrW9HBhCNdF6tWPdnOMngOv0wA",
|
||||
name: "Pop Gold",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -181,7 +181,7 @@ MusicSearchFiltered(
|
|||
from_ytm: true,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLRDCLAK5uy_kLB769E3eFSzgy4fbpu6-1YPLh90b0JAY",
|
||||
id: "RDCLAK5uy_kLB769E3eFSzgy4fbpu6-1YPLh90b0JAY",
|
||||
name: "Pop Hotlist",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -210,7 +210,7 @@ MusicSearchFiltered(
|
|||
from_ytm: true,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLRDCLAK5uy_m_0U5VQNyyzwwH1lRi7cPAAGXqNQnAOqY",
|
||||
id: "RDCLAK5uy_m_0U5VQNyyzwwH1lRi7cPAAGXqNQnAOqY",
|
||||
name: "Laid-Back Sofa Pop",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -239,7 +239,7 @@ MusicSearchFiltered(
|
|||
from_ytm: true,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLRDCLAK5uy_mHW5bcduhjB-PkTePAe6EoRMj1xNT8gzY",
|
||||
id: "RDCLAK5uy_mHW5bcduhjB-PkTePAe6EoRMj1xNT8gzY",
|
||||
name: "K-Pop Girl Crush",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -268,7 +268,7 @@ MusicSearchFiltered(
|
|||
from_ytm: true,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLRDCLAK5uy_nWFLXjO1mIJnP4wAmxjfDS40Zmu6nF9DU",
|
||||
id: "RDCLAK5uy_nWFLXjO1mIJnP4wAmxjfDS40Zmu6nF9DU",
|
||||
name: "Se Habla Pop",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -297,7 +297,7 @@ MusicSearchFiltered(
|
|||
from_ytm: true,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLRDCLAK5uy_lHu_HYAQ0A-OfCwhuky240HOdM1UduuyA",
|
||||
id: "RDCLAK5uy_lHu_HYAQ0A-OfCwhuky240HOdM1UduuyA",
|
||||
name: "Presenting Pop Smoke",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -326,7 +326,7 @@ MusicSearchFiltered(
|
|||
from_ytm: true,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLRDCLAK5uy_lw21MuKaqFsDBIPZSbRmZcoDrHmV_c6uY",
|
||||
id: "RDCLAK5uy_lw21MuKaqFsDBIPZSbRmZcoDrHmV_c6uY",
|
||||
name: "Happy latin pop",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -355,7 +355,7 @@ MusicSearchFiltered(
|
|||
from_ytm: true,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLRDCLAK5uy_lY6JFrs7W9yIhFjUN_yxQ_ubkjcrqQaVs",
|
||||
id: "RDCLAK5uy_lY6JFrs7W9yIhFjUN_yxQ_ubkjcrqQaVs",
|
||||
name: "Bedroom Pop",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -384,7 +384,7 @@ MusicSearchFiltered(
|
|||
from_ytm: true,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLRDCLAK5uy_nbK9qSkqYZvtMXH1fLCMmC1yn8HEm0W90",
|
||||
id: "RDCLAK5uy_nbK9qSkqYZvtMXH1fLCMmC1yn8HEm0W90",
|
||||
name: "J-Hits!",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -413,7 +413,7 @@ MusicSearchFiltered(
|
|||
from_ytm: true,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLRDCLAK5uy_kIcfhFcnJ9fdkKHw96Gvr6Q0_bAyWiZbM",
|
||||
id: "RDCLAK5uy_kIcfhFcnJ9fdkKHw96Gvr6Q0_bAyWiZbM",
|
||||
name: "Reiwa Era J-Pop",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -442,7 +442,7 @@ MusicSearchFiltered(
|
|||
from_ytm: true,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLRDCLAK5uy_nDL8KeBrUagwyISwNmyEiSfYgz1gVCesg",
|
||||
id: "RDCLAK5uy_nDL8KeBrUagwyISwNmyEiSfYgz1gVCesg",
|
||||
name: "Mellow Pop Classics",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -471,7 +471,7 @@ MusicSearchFiltered(
|
|||
from_ytm: true,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLRDCLAK5uy_l7K78k4EkjcFojhd1617rmUjY-aet6-t0",
|
||||
id: "RDCLAK5uy_l7K78k4EkjcFojhd1617rmUjY-aet6-t0",
|
||||
name: "K-Pop Party Hits",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -500,7 +500,7 @@ MusicSearchFiltered(
|
|||
from_ytm: true,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLRDCLAK5uy_nCVF_zUZizzRcojIUuYmaXxMoPgg2WMDo",
|
||||
id: "RDCLAK5uy_nCVF_zUZizzRcojIUuYmaXxMoPgg2WMDo",
|
||||
name: "Klangfarbe: German Pop Hits",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -529,7 +529,7 @@ MusicSearchFiltered(
|
|||
from_ytm: true,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLRDCLAK5uy_nGKsW16ocmP8l8wL1oMIyR53cu4N5fyKI",
|
||||
id: "RDCLAK5uy_nGKsW16ocmP8l8wL1oMIyR53cu4N5fyKI",
|
||||
name: "GIF Pop BR",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -558,7 +558,7 @@ MusicSearchFiltered(
|
|||
from_ytm: true,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLRDCLAK5uy_mVJ3RRi_YBfUJnZnQxLAedQQcXHujbUcg",
|
||||
id: "RDCLAK5uy_mVJ3RRi_YBfUJnZnQxLAedQQcXHujbUcg",
|
||||
name: "Pump-Up Pop",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
|
|||
|
|
@ -364,7 +364,7 @@ MusicSearchResult(
|
|||
],
|
||||
playlists: [
|
||||
MusicPlaylistItem(
|
||||
id: "VLPL46jG0sBz4EabjYqv0tVEd1RvrZRjfJ8m",
|
||||
id: "PL46jG0sBz4EabjYqv0tVEd1RvrZRjfJ8m",
|
||||
name: "Lieblingsmensch",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -391,7 +391,7 @@ MusicSearchResult(
|
|||
from_ytm: false,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLPL-2Z-8cOvEixQ2EKumbXXW8XivJG6U7-D",
|
||||
id: "PL-2Z-8cOvEixQ2EKumbXXW8XivJG6U7-D",
|
||||
name: "Namika - Lieblingsmensch",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
@ -418,7 +418,7 @@ MusicSearchResult(
|
|||
from_ytm: false,
|
||||
),
|
||||
MusicPlaylistItem(
|
||||
id: "VLPLDnJKuRrOR5sx_jZ8-dsweq1OdayL_kpz",
|
||||
id: "PLDnJKuRrOR5sx_jZ8-dsweq1OdayL_kpz",
|
||||
name: "Lieblingsmensch",
|
||||
thumbnail: [
|
||||
Thumbnail(
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ mod ordering;
|
|||
mod paginator;
|
||||
pub mod richtext;
|
||||
|
||||
pub(crate) use convert::FromYtItem;
|
||||
pub use convert::FromYtItem;
|
||||
pub use paginator::Paginator;
|
||||
use serde_with::serde_as;
|
||||
|
||||
|
|
@ -955,6 +955,7 @@ pub struct MusicPlaylistItem {
|
|||
|
||||
/// YouTube Music album type
|
||||
#[derive(Default, Debug, Copy, Clone, Serialize, Deserialize, PartialEq, Eq)]
|
||||
#[non_exhaustive]
|
||||
pub enum AlbumType {
|
||||
/// Regular album (default)
|
||||
#[default]
|
||||
|
|
@ -1031,9 +1032,13 @@ pub struct MusicAlbum {
|
|||
/// YouTube Music search result
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
|
||||
pub struct MusicSearchResult {
|
||||
/// Found tracks
|
||||
pub tracks: Vec<TrackItem>,
|
||||
/// Found albums
|
||||
pub albums: Vec<AlbumItem>,
|
||||
/// Found artists
|
||||
pub artists: Vec<ArtistItem>,
|
||||
/// Found playlists
|
||||
pub playlists: Vec<MusicPlaylistItem>,
|
||||
/// Corrected search query
|
||||
///
|
||||
|
|
@ -1041,6 +1046,8 @@ pub struct MusicSearchResult {
|
|||
/// for the corrected search term and displays it on top of the
|
||||
/// search results page.
|
||||
pub corrected_query: Option<String>,
|
||||
/// Order of the item sections of the search page, starting with
|
||||
/// the most relevant.
|
||||
pub order: Vec<MusicEntityType>,
|
||||
}
|
||||
|
||||
|
|
|
|||
Reference in a new issue