From 8dd74defb682e50c6d6eacd2ee3ae600a141f449 Mon Sep 17 00:00:00 2001 From: Arya Kiran Date: Tue, 16 May 2023 16:46:20 +0800 Subject: [PATCH] add asset list support --- pages/release.go | 20 +++++++++++++++----- serve/serve.go | 4 ++++ 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/pages/release.go b/pages/release.go index 2ad08a3..71509d0 100644 --- a/pages/release.go +++ b/pages/release.go @@ -25,10 +25,9 @@ type Release struct { Reactions []Reactions } type Assets struct { - Name string - Link string - Size string - ReleasedOn string + Name string + Link string + Size string } type Reactions struct { Name string @@ -93,9 +92,20 @@ func ReleaseView(c *fiber.Ctx) error { Count: el.ChildText("span.js-discussion-reaction-group-count"), }) }) - }) sc.Visit("https://github.com/" + c.Params("user") + "/" + c.Params("repo") + "/releases/" + c.Params("release")) + // Scrape assets from the fragment page + sc2 := colly.NewCollector(colly.AllowedDomains("github.com"), colly.UserAgent(UserAgent)) + sc2.OnHTML("ul", func(e *colly.HTMLElement) { + e.ForEach("li", func(i int, el *colly.HTMLElement) { + Scrape.Assets = append(Scrape.Assets, Assets{ + Name: el.ChildText("div.col-lg-9 a span"), + Link: el.ChildAttr("div.col-lg-9 a", "href"), + Size: el.ChildText("div.pl-1 span.text-sm-left"), + }) + }) + }) + sc2.Visit("https://github.com/" + c.Params("user") + "/" + c.Params("repo") + "/releases/expanded_assets/" + c.Params("release")) // Add scrape-based info to releaseArray releaseArray = append(releaseArray, Scrape) diff --git a/serve/serve.go b/serve/serve.go index e65b64d..dfb8b67 100644 --- a/serve/serve.go +++ b/serve/serve.go @@ -115,6 +115,10 @@ func Serve(port string) { app.Get("/:user/:repo/tree/:branch/+", pages.DirView) app.Get("/:user/:repo/releases/:release", pages.ReleaseView) app.Get("/:user/:repo/releases/tag/:release", pages.ReleaseView) + app.Get("/:user/:repo/releases/download/:release/:item", func(c *fiber.Ctx) error { + utils.ProxyRequest(c, "https://github.com/"+c.Params("user")+"/"+c.Params("repo")+"/releases/download"+c.Params("release")/c.Params("item")) + return nil + }) app.Get("/:user/:repo/tree/:branch", pages.HandleRepo) app.Get("/download/:user/:repo/:branch", func(c *fiber.Ctx) error { utils.ProxyRequest(c, "https://github.com/"+c.Params("user")+"/"+c.Params("repo")+"/archive/"+c.Params("branch")+".zip")