mirror of
https://codeberg.org/Hyperpipe/hyperpipe-backend
synced 2024-12-06 19:26:30 +01:00
Added
This commit is contained in:
+104
@@ -0,0 +1,104 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"sync"
|
||||
|
||||
"github.com/tidwall/gjson"
|
||||
)
|
||||
|
||||
func TwoRowItemRenderer(t string, a gjson.Result) []Item {
|
||||
|
||||
r := []Item{}
|
||||
|
||||
var id string
|
||||
|
||||
if t == "album" || t == "singles" {
|
||||
id = "menu.menuRenderer.items.#(menuNavigationItemRenderer.text.runs.0.text == Shuffle play).menuNavigationItemRenderer.navigationEndpoint.watchPlaylistEndpoint.playlistId"
|
||||
} else {
|
||||
id = "navigationEndpoint.browseEndpoint.browseId"
|
||||
}
|
||||
|
||||
wg := sync.WaitGroup{}
|
||||
|
||||
v := a.Get("#.musicTwoRowItemRenderer")
|
||||
|
||||
v.ForEach(
|
||||
func(_, j gjson.Result) bool {
|
||||
|
||||
wg.Add(1)
|
||||
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
|
||||
r = append(r, Item{
|
||||
Id: j.Get(id).String(),
|
||||
Title: RunsText(j.Get("title")),
|
||||
Sub: RunsText(j.Get("subtitle")),
|
||||
Thumbnails: GetThumbnails(j.Get("thumbnailRenderer.musicThumbnailRenderer.thumbnail.thumbnails")),
|
||||
})
|
||||
|
||||
}()
|
||||
|
||||
wg.Wait()
|
||||
|
||||
return true
|
||||
},
|
||||
)
|
||||
|
||||
return r
|
||||
}
|
||||
|
||||
func CarouselShelfRenderer(i gjson.Result) map[string]interface{} {
|
||||
|
||||
shelf := make(map[string]interface{})
|
||||
|
||||
shelf["title"] = RunsText(i.Get("header.musicCarouselShelfBasicHeaderRenderer.title"))
|
||||
|
||||
ct := i.Get("contents")
|
||||
|
||||
if ct.Get("#(musicTwoRowItemRenderer)").Exists() {
|
||||
shelf["contents"] = TwoRowItemRenderer("", ct)
|
||||
} else if ct.Get("#(musicResponsiveListItemRenderer)").Exists() {
|
||||
shelf["contents"] = ResponsiveListItemRenderer(ct)
|
||||
}
|
||||
|
||||
shelf["raw"] = ct.Value()
|
||||
|
||||
return shelf
|
||||
}
|
||||
|
||||
func ResponsiveListItemRenderer(s gjson.Result) []Item {
|
||||
|
||||
r := []Item{}
|
||||
|
||||
wg := sync.WaitGroup{}
|
||||
|
||||
s.ForEach(
|
||||
func(_, v gjson.Result) bool {
|
||||
|
||||
wg.Add(1)
|
||||
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
|
||||
j := v.Get("musicResponsiveListItemRenderer")
|
||||
flex := j.Get("flexColumns.#.musicResponsiveListItemFlexColumnRenderer.text.runs.0")
|
||||
|
||||
r = append(r, Item{
|
||||
Id: j.Get("playlistItemData.videoId").String(),
|
||||
Title: flex.Get("#(navigationEndpoint.watchEndpoint.videoId).text").String(),
|
||||
SubId: flex.Get("#.navigationEndpoint.browseEndpoint").Get("#(browseId).browseId").String(),
|
||||
Sub: flex.Get("#(navigationEndpoint.browseEndpoint.browseId).text").String(),
|
||||
Thumbnails: GetThumbnails(j.Get("thumbnail.musicThumbnailRenderer.thumbnail.thumbnails")),
|
||||
})
|
||||
|
||||
}()
|
||||
|
||||
wg.Wait()
|
||||
|
||||
return true
|
||||
},
|
||||
)
|
||||
|
||||
return r
|
||||
}
|
||||
Reference in New Issue
Block a user