Added Support for Charts

This commit is contained in:
Shiny Nematoda
2022-10-01 10:34:03 +00:00
parent 1bb993b22e
commit 3b26dd2f07
6 changed files with 149 additions and 13 deletions
+36 -2
View File
@@ -42,17 +42,24 @@ func ParseExplore(raw string) (string, error) {
j := gjson.Parse(raw)
c := j.Get("contents.singleColumnBrowseResultsRenderer.tabs.0.tabRenderer.content" +
".sectionListRenderer.contents.#.musicCarouselShelfRenderer")
m := j.Get("contents.singleColumnBrowseResultsRenderer.tabs.0" +
".tabRenderer.content.sectionListRenderer.contents")
c := m.Get("#.musicCarouselShelfRenderer")
a := c.Get("#(header.musicCarouselShelfBasicHeaderRenderer" +
".title.runs.0.text == New albums & singles)")
t := c.Get("#(header.musicCarouselShelfBasicHeaderRenderer" +
".title.runs.0.text == Trending)")
charts := m.Get("#(gridRenderer).gridRenderer.items.#" +
".musicNavigationButtonRenderer").Get("#(buttonText" +
".runs.0.text == Charts)")
val := Explore{
TrendingId: t.Get("header.musicCarouselShelfBasicHeaderRenderer" +
".title.runs.0.navigationEndpoint.browseEndpoint.browseId").String(),
ChartsId: charts.Get("clickCommand.browseEndpoint.params").String(),
Albums: TwoRowItemRenderer("album", a.Get("contents")),
Trending: ResponsiveListItemRenderer(t.Get("contents")),
}
@@ -114,6 +121,33 @@ func ParseGenre(raw string) (string, error) {
return string(res), nil
}
func ParseCharts(raw string) (string, error) {
j := gjson.Parse(raw)
c := j.Get("contents.singleColumnBrowseResultsRenderer.tabs.0.tabRenderer.content.sectionListRenderer.contents")
o := c.Get("0.musicShelfRenderer.subheaders.0.musicSideAlignedItemRenderer.startItems.0.musicSortFilterButtonRenderer")
a := c.Get("#(musicCarouselShelfRenderer.header.musicCarouselShelfBasicHeaderRenderer.title.runs.0.text == Top artists).musicCarouselShelfRenderer.contents")
t := c.Get("#(musicCarouselShelfRenderer.header.musicCarouselShelfBasicHeaderRenderer.title.runs.0.text == Trending).musicCarouselShelfRenderer.contents")
val := Charts{
Options: Options{
Default: RunsText(o.Get("title")),
All: MultiSelectMenuItemRenderer(o.Get("menu.musicMultiSelectMenuRenderer.options.#.musicMultiSelectMenuItemRenderer")),
},
Artists: ResponsiveListItemRendererCH(a),
Trending: ResponsiveListItemRenderer(t),
}
res, err := json.Marshal(val)
if err != nil {
return "", err
}
return string(res), nil
}
func ParseArtist(raw string) (string, error) {
j := gjson.Parse(raw)