feat: add track details, radios
This commit is contained in:
parent
556575f5ff
commit
e4046aef00
22 changed files with 19960 additions and 30 deletions
|
|
@ -1,6 +1,93 @@
|
|||
use serde::Deserialize;
|
||||
|
||||
use super::{music_item::PlaylistPanelRenderer, ContentRenderer};
|
||||
|
||||
/// Response model for YouTube Music track details
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct MusicDetails {}
|
||||
pub(crate) struct MusicDetails {
|
||||
pub contents: Contents,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Contents {
|
||||
pub single_column_music_watch_next_results_renderer: WatchNextResultsRenderer,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct WatchNextResultsRenderer {
|
||||
pub tabbed_renderer: TabbedRenderer,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct TabbedRenderer {
|
||||
pub watch_next_tabbed_results_renderer: TabbedRendererInner,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct TabbedRendererInner {
|
||||
pub tabs: Vec<Tab>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Tab {
|
||||
pub tab_renderer: TabRenderer,
|
||||
}
|
||||
|
||||
/// Watch next tab
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct TabRenderer {
|
||||
pub content: Option<TabContent>,
|
||||
pub endpoint: Option<TabEndpoint>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct TabEndpoint {
|
||||
pub browse_endpoint: TabBrowseEndpoint,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct TabBrowseEndpoint {
|
||||
pub browse_id: String,
|
||||
pub browse_endpoint_context_supported_configs: TabBrowseEndpointSupportedConfigs,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct TabBrowseEndpointSupportedConfigs {
|
||||
pub browse_endpoint_context_music_config: TabBrowseEndpointMusicConfig,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct TabBrowseEndpointMusicConfig {
|
||||
pub page_type: TabType,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
pub(crate) enum TabType {
|
||||
#[serde(rename = "MUSIC_PAGE_TYPE_TRACK_LYRICS")]
|
||||
Lyrics,
|
||||
#[serde(rename = "MUSIC_PAGE_TYPE_TRACK_RELATED")]
|
||||
Related,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct TabContent {
|
||||
pub music_queue_renderer: ContentRenderer<PlaylistPanel>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct PlaylistPanel {
|
||||
pub playlist_panel_renderer: PlaylistPanelRenderer,
|
||||
}
|
||||
|
|
|
|||
Reference in a new issue