Skip to content

Commit

Permalink
refactor: split parseHtmlForEvent to its own function
Browse files Browse the repository at this point in the history
  • Loading branch information
j1nxie committed Nov 27, 2024
1 parent 424bc10 commit 698df23
Showing 1 changed file with 25 additions and 44 deletions.
69 changes: 25 additions & 44 deletions routes/event.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,34 +12,10 @@ import (

const BaseUrl string = "https://arknights.wiki.gg/"

func ScrapeWiki() (*models.EventResponse, error) {
res, err := http.Get(BaseUrl)

if err != nil {
log.Print(err)
return nil, err
}

defer res.Body.Close()

if res.StatusCode != 200 {
log.Print("failed to fetch wiki")
return nil, err
}
func parseForEvent(html *goquery.Selection) []models.Event {
var events []models.Event

doc, err := goquery.NewDocumentFromReader(res.Body)

if err != nil {
log.Print(err)
return nil, err
}

var currentEvents []models.Event
var upcomingEvents []models.Event

// FIXME: sus asf code, refactor this cuz these are the same

doc.Find("div.mp-head:contains('Upcoming Events')").Prev().Find("tr").Each(func(i int, tr *goquery.Selection) {
html.Find("tr").Each(func(i int, tr *goquery.Selection) {
server := tr.Find("div b").First().Text()

tr.Find(".imagefit span").Each(func(j int, span *goquery.Selection) {
Expand All @@ -58,32 +34,37 @@ func ScrapeWiki() (*models.EventResponse, error) {
Server: server, Name: eventName, EndDate: t,
}

currentEvents = append(currentEvents, event)
events = append(events, event)
})
})

doc.Find("div.mp-head:contains('Upcoming Events')").Next().Find("tr").Each(func(i int, tr *goquery.Selection) {
server := tr.Find("div b").First().Text()
return events
}

tr.Find(".imagefit span").Each(func(j int, span *goquery.Selection) {
eventName := span.Text()
func ScrapeWiki() (*models.EventResponse, error) {
res, err := http.Get(BaseUrl)

timeStr := tr.Find(".countdowndate").Eq(j).Text()
if err != nil {
log.Print(err)
return nil, err
}

layout := "2 January 2006 15:04 -0700"
defer res.Body.Close()

t, err := time.Parse(layout, timeStr)
if err != nil {
return
}
if res.StatusCode != 200 {
log.Print("failed to fetch wiki")
return nil, err
}

event := models.Event{
Server: server, Name: eventName, EndDate: t,
}
doc, err := goquery.NewDocumentFromReader(res.Body)

upcomingEvents = append(upcomingEvents, event)
})
})
if err != nil {
log.Print(err)
return nil, err
}

currentEvents := parseForEvent(doc.Find("div.mp-head:contains('Upcoming Events')").Prev())
upcomingEvents := parseForEvent(doc.Find("div.mp-head:contains('Upcoming Events')").Next())

eventResp := models.EventResponse{
UpcomingEvents: upcomingEvents, CurrentEvents: currentEvents, FetchedAt: time.Now(),
Expand Down

0 comments on commit 698df23

Please sign in to comment.