mirror of
https://github.com/LeRoid-hub/Mensa-API.git
synced 2025-01-31 03:34:57 +00:00
functional
This commit is contained in:
parent
d9c073919e
commit
f52bb05750
7
models/Meal.go
Normal file
7
models/Meal.go
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
package models
|
||||||
|
|
||||||
|
type Meal struct {
|
||||||
|
Name string
|
||||||
|
Price string
|
||||||
|
Attributes string
|
||||||
|
}
|
6
models/Menu.go
Normal file
6
models/Menu.go
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
package models
|
||||||
|
|
||||||
|
type Menu struct {
|
||||||
|
Name string
|
||||||
|
Meal []Meal
|
||||||
|
}
|
6
models/day.go
Normal file
6
models/day.go
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
package models
|
||||||
|
|
||||||
|
type Day struct {
|
||||||
|
DayName string
|
||||||
|
Menu []Menu
|
||||||
|
}
|
16
models/mensa.go
Normal file
16
models/mensa.go
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
package models
|
||||||
|
|
||||||
|
type Mensa struct {
|
||||||
|
Name string
|
||||||
|
Location string
|
||||||
|
Days []Day
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Mensa) SetMensa(name string, location string) {
|
||||||
|
m.Name = name
|
||||||
|
m.Location = location
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Mensa) AddDay(day Day) {
|
||||||
|
m.Days = append(m.Days, day)
|
||||||
|
}
|
@ -4,25 +4,69 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/LeRoid-hub/Mensa-API/models"
|
||||||
"github.com/PuerkitoBio/goquery"
|
"github.com/PuerkitoBio/goquery"
|
||||||
)
|
)
|
||||||
|
|
||||||
func ScrapeMensa(h io.ReadCloser) []string {
|
func ScrapeMensa(h io.ReadCloser) models.Mensa {
|
||||||
var mensas []string
|
var mensa models.Mensa
|
||||||
|
|
||||||
doc, err := goquery.NewDocumentFromReader(h)
|
doc, err := goquery.NewDocumentFromReader(h)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return []string{}
|
return models.Mensa{}
|
||||||
}
|
}
|
||||||
|
|
||||||
doc.Find("a.primary").Each(func(i int, s *goquery.Selection) {
|
doc.Find("h1.aw-title-header-title").First().Each(func(i int, s *goquery.Selection) {
|
||||||
href, _ := s.Attr("href")
|
mensa.Name = s.Text()
|
||||||
print(href)
|
|
||||||
|
|
||||||
mensa := strings.Split(href, "/")[1]
|
|
||||||
|
|
||||||
mensas = append(mensas, string(mensa))
|
|
||||||
})
|
})
|
||||||
return mensas
|
|
||||||
|
doc.Find("a.panel-body").Each(func(i int, s *goquery.Selection) {
|
||||||
|
l, err := s.Html()
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
l = strings.Replace(l, "<br/>", " ", -1)
|
||||||
|
l = strings.Replace(l, "<br>", " ", -1)
|
||||||
|
l = strings.Replace(l, "</br>", " ", -1)
|
||||||
|
|
||||||
|
mensa.Location = l
|
||||||
|
})
|
||||||
|
|
||||||
|
//Day
|
||||||
|
var day models.Day
|
||||||
|
|
||||||
|
doc.Find("h2.aw-menu-title").Each(func(i int, s *goquery.Selection) {
|
||||||
|
day.DayName = s.Text()
|
||||||
|
})
|
||||||
|
|
||||||
|
//Menu
|
||||||
|
var menu models.Menu
|
||||||
|
|
||||||
|
doc.Find("div.aw-meal-category").Each(func(i int, s *goquery.Selection) {
|
||||||
|
|
||||||
|
s.Find("h3.aw-meal-category-name").Each(func(i int, t *goquery.Selection) {
|
||||||
|
menu.Name = t.Text()
|
||||||
|
})
|
||||||
|
|
||||||
|
//Meal
|
||||||
|
var meal models.Meal
|
||||||
|
|
||||||
|
s.Find("div.aw-meal").Each(func(i int, t *goquery.Selection) {
|
||||||
|
t.Find("p.aw-meal-description").First().Each(func(i int, u *goquery.Selection) {
|
||||||
|
meal.Name = u.Text()
|
||||||
|
})
|
||||||
|
t.Find("div.aw-meal-price").First().Each(func(i int, u *goquery.Selection) {
|
||||||
|
meal.Price = u.Text()
|
||||||
|
})
|
||||||
|
t.Find("p.aw-meal-attributes").First().Each(func(i int, u *goquery.Selection) {
|
||||||
|
meal.Attributes = u.Text()
|
||||||
|
})
|
||||||
|
menu.Meal = append(menu.Meal, meal)
|
||||||
|
})
|
||||||
|
day.Menu = append(day.Menu, menu)
|
||||||
|
})
|
||||||
|
mensa.AddDay(day)
|
||||||
|
|
||||||
|
return mensa
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ func mensa(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
resp, err := fetch.Fetch(mensa)
|
resp, err := fetch.Fetch(city + "/" + mensa)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(500, gin.H{
|
c.JSON(500, gin.H{
|
||||||
"error": err.Error(),
|
"error": err.Error(),
|
||||||
@ -44,6 +44,9 @@ func mensa(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
scraped := scrape.ScrapeState(resp.Body)
|
scraped := scrape.ScrapeMensa(resp.Body)
|
||||||
|
|
||||||
|
//cache.SetCacheData(city+"/"+mensa, scraped)
|
||||||
|
|
||||||
c.JSON(200, scraped)
|
c.JSON(200, scraped)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user