feat: music search suggestions
This commit is contained in:
parent
ef86181627
commit
bd936a8c42
10 changed files with 474 additions and 3 deletions
|
|
@ -21,6 +21,7 @@ pub(crate) use music_details::MusicRelated;
|
|||
pub(crate) use music_item::MusicContinuation;
|
||||
pub(crate) use music_playlist::MusicPlaylist;
|
||||
pub(crate) use music_search::MusicSearch;
|
||||
pub(crate) use music_search::MusicSearchSuggestion;
|
||||
pub(crate) use player::Player;
|
||||
pub(crate) use playlist::Playlist;
|
||||
pub(crate) use playlist::PlaylistCont;
|
||||
|
|
|
|||
|
|
@ -12,6 +12,16 @@ pub(crate) struct MusicSearch {
|
|||
pub contents: Contents,
|
||||
}
|
||||
|
||||
/// Response model for YouTube Music suggestion
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct MusicSearchSuggestion {
|
||||
#[serde(default)]
|
||||
#[serde_as(as = "VecSkipError<_>")]
|
||||
pub contents: Vec<SearchSuggestionsSection>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Contents {
|
||||
|
|
@ -45,3 +55,21 @@ pub(crate) struct ShowingResultsForRenderer {
|
|||
#[serde_as(as = "Text")]
|
||||
pub corrected_query: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct SearchSuggestionsSection {
|
||||
pub search_suggestions_section_renderer: ContentsRenderer<SearchSuggestionItem>,
|
||||
}
|
||||
|
||||
#[serde_as]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) enum SearchSuggestionItem {
|
||||
SearchSuggestionRenderer {
|
||||
#[serde_as(as = "Text")]
|
||||
suggestion: String,
|
||||
},
|
||||
#[serde(other, deserialize_with = "deserialize_ignore_any")]
|
||||
None,
|
||||
}
|
||||
|
|
|
|||
Reference in a new issue