From c1c8e86d7cfb824e39c2f791ef23b572b569ba50 Mon Sep 17 00:00:00 2001 From: Shiny Nematoda Date: Fri, 7 Apr 2023 15:40:40 +0000 Subject: [PATCH] Added avoid param to next --- README.md | 3 ++- lib/artist.go | 4 ++++ lib/next.go | 10 ++++++---- main.go | 2 +- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 08774e1..956ffb9 100644 --- a/README.md +++ b/README.md @@ -26,9 +26,10 @@ https://codeberg.org/Hyperpipe/Hyperpipe ### `GET` `/charts?params=${id}&code=${code}` -### `GET` `/next/:id` +### `GET` `/next/:id?queue=${queue}` - `:id` -> `song id (same as /watch?v=:id)` +- `$queue` -> `avoid` (optional) ### `GET` `/lyrics/:id` diff --git a/lib/artist.go b/lib/artist.go index 3986817..cd3bc3a 100644 --- a/lib/artist.go +++ b/lib/artist.go @@ -128,6 +128,10 @@ func GetArtist(id string) (Artist, int) { func GetArtistNext(id, params, ct, v string) (ArtistNext, int) { + if id == "" || params == "" || ct == "" || v == "" { + return ArtistNext{}, 404 + } + context := utils.TypeBrowse(id, params, []string{ct, v}) raw, status := utils.FetchBrowse(context) diff --git a/lib/next.go b/lib/next.go index 93b440a..f45a50b 100644 --- a/lib/next.go +++ b/lib/next.go @@ -82,7 +82,7 @@ func parseNext(raw string) Next { } } -func GetNext(id string) (Next, int) { +func GetNext(id, queue string) (Next, int) { pldata, err := json.Marshal(utils.TypeNext(id, "")) if err != nil { @@ -94,6 +94,10 @@ func GetNext(id string) (Next, int) { return Next{Err: err}, plstatus } + if queue == "avoid" { + return parseNext(plraw), plstatus + } + pl := gjson.Parse(plraw).Get( "contents.singleColumnMusicWatchNextResultsRenderer." + "tabbedRenderer.watchNextTabbedResultsRenderer.tabs.0.tabRenderer.content." + @@ -112,7 +116,5 @@ func GetNext(id string) (Next, int) { return Next{Err: err}, 500 } - res := parseNext(raw) - - return res, status + return parseNext(raw), status } diff --git a/main.go b/main.go index bbcaa07..f2e80df 100644 --- a/main.go +++ b/main.go @@ -32,7 +32,7 @@ func HandleExplore(c *fiber.Ctx) error { } func HandleNext(c *fiber.Ctx) error { - res, status := lib.GetNext(c.Params("id")) + res, status := lib.GetNext(c.Params("id"), c.Query("queue")) return c.Status(status).JSON(res) }