Skip to content

Commit d0ac6a8

Browse files
committed
Fixed and created util structs
1 parent 42b8488 commit d0ac6a8

12 files changed

Lines changed: 668 additions & 356 deletions

File tree

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,6 @@
1313
# Project-local glide cache, RE: https://github.com/Masterminds/glide/issues/736
1414
.glide/
1515

16-
ui/node_modules
16+
ui/node_modules
17+
18+
bombo-open-api

.idea/workspace.xml

Lines changed: 234 additions & 263 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

csv_extractor.go

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"bytes"
6+
"os"
7+
"./scraper"
8+
)
9+
10+
func CreateCSVFromStruct(teams map[string]*scraper.Team) {
11+
buffer := bytes.NewBufferString("")
12+
for _, team := range teams {
13+
14+
for _, player := range team.GolKeeper {
15+
s := fmt.Sprintf("%s,%s,%d\n", player.Name, player.Team, player.Cost)
16+
buffer.Write([]byte(s))
17+
}
18+
for _, player := range team.Defender {
19+
s := fmt.Sprintf("%s,%s,%d\n", player.Name, player.Team, player.Cost)
20+
buffer.Write([]byte(s))
21+
}
22+
for _, player := range team.MidFielder {
23+
s := fmt.Sprintf("%s,%s,%d\n", player.Name, player.Team, player.Cost)
24+
buffer.Write([]byte(s))
25+
}
26+
for _, player := range team.Forwarder {
27+
s := fmt.Sprintf("%s,%s,%d\n", player.Name, player.Team, player.Cost)
28+
buffer.Write([]byte(s))
29+
}
30+
}
31+
32+
file, err := os.Create("./data/league_csv.csv")
33+
if err != nil {
34+
panic(err)
35+
}
36+
37+
_, err = file.Write(buffer.Bytes())
38+
if err != nil {
39+
panic(err)
40+
}
41+
}
42+

fetcher.go

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package main
2+
3+
import (
4+
"./scraper"
5+
"os"
6+
"encoding/json"
7+
"strings"
8+
"log"
9+
)
10+
11+
func init() {
12+
if os.IsExist(os.Mkdir("./data", 0755)) {
13+
log.Println("Data directory already exist")
14+
}
15+
}
16+
17+
18+
func normalizeName(name string) string {
19+
return strings.Replace(strings.ToLower(name), " ", "_", -1)
20+
}
21+
22+
func SaveDataForMatchWork(w *Work) error {
23+
matchEvents, err :=scraper.GetEventsFromMatch(w.URL)
24+
if err != nil {
25+
return err
26+
}
27+
28+
file, err := os.Create("./data/match_" + normalizeName(w.Name) + ".json")
29+
if err != nil {
30+
return err
31+
}
32+
defer file.Close()
33+
34+
data, err := json.MarshalIndent(matchEvents, "", " ")
35+
if err != nil {
36+
return err
37+
}
38+
39+
_, err = file.Write(data)
40+
if err != nil {
41+
return err
42+
}
43+
44+
return nil
45+
}
46+
47+
func SaveDataForLeagueWork(w *Work) error {
48+
teams, _, err := scraper.GetFullTeamsInfo(w.URL, true)
49+
if err != nil {
50+
return err
51+
}
52+
53+
54+
file, err := os.Create("./data/league_" + normalizeName(w.Name) + ".json")
55+
if err != nil {
56+
return err
57+
}
58+
defer file.Close()
59+
60+
data, err := json.MarshalIndent(teams, "", " ")
61+
if err != nil {
62+
return err
63+
}
64+
65+
_, err = file.Write(data)
66+
if err != nil {
67+
return err
68+
}
69+
70+
return nil
71+
72+
}

main.go

Lines changed: 45 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,59 @@
11
package main
22

33
import (
4-
"github.com/kataras/iris"
5-
"github.com/Chimpcode/bombo-open-api/worker"
6-
"github.com/Chimpcode/bombo-open-api/server"
7-
"github.com/iris-contrib/middleware/cors"
4+
"./scraper"
85
)
96

107
func main() {
11-
app := iris.Default()
12-
worker.RefreshPremierLeague()
13-
crs := cors.New(cors.Options{
14-
AllowedOrigins: []string{"*"}, // allows everything, use that to change the hosts.
15-
AllowCredentials: true,
16-
})
17-
18-
api := app.Party("/api/v1")
19-
api.Use(crs)
20-
server.LinkApi(api)
21-
22-
app.Run(iris.Addr(":9800"))
8+
//app := iris.Default()
9+
//worker.RefreshPremierLeague()
10+
//crs := cors.New(cors.Options{
11+
// AllowedOrigins: []string{"*"}, // allows everything, use that to change the hosts.
12+
// AllowCredentials: true,
13+
//})
14+
//
15+
//api := app.Party("/api/v1")
16+
//api.Use(crs)
17+
//server.LinkApi(api)
18+
//
19+
//app.Run(iris.Addr(":9800"))
2320

2421
//data, err := scraper.GetEventsFromMatch(scraper.ExampleMatch)
2522
//if err != nil {
2623
// panic(err.Error())
2724
//}
2825
//pp.Println(data)
2926

27+
teams, _, _:= scraper.GetFullTeamsInfo("https://www.scoreboard.com/es/futbol/inglaterra/premier-league/equipos", true)
28+
CreateCSVFromStruct(teams)
29+
30+
31+
//manager := NewWorkManager()
32+
//work := NewWork(
33+
// "https://www.scoreboard.com/es/futbol/inglaterra/premier-league/equipos",
34+
// "premier_league",
35+
// WorkLeagueType,
36+
// 30*time.Second,
37+
//)
38+
//
39+
//workMatch := NewWork(
40+
// "https://www.scoreboard.com/es/partido/eibar-malaga-cf-2017-2018/Amqd6uGr",
41+
// "premier_league",
42+
// WorkMatchType,
43+
// 20*time.Second,
44+
//)
45+
//
46+
//manager.AddWork(work)
47+
//manager.AddWork(workMatch)
48+
//
49+
//
50+
//manager.Run(1*time.Second)
51+
//
52+
//for {
53+
// h, m, s := time.Now().Clock()
54+
// fmt.Printf("%d:%d:%d\n", h, m, s)
55+
// time.Sleep(1 * time.Second)
56+
//}
57+
58+
3059
}

manager.go

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
package main
2+
3+
import (
4+
"time"
5+
"log"
6+
"github.com/k0kubun/pp"
7+
)
8+
9+
type WorkManager struct {
10+
Works []*Work `json:"works"`
11+
WorksUpdating []*Work `json:"works_updating"`
12+
13+
}
14+
15+
func NewWorkManager() *WorkManager {
16+
works := make([]*Work, 0)
17+
worksUpdating := make([]*Work, 0)
18+
19+
return &WorkManager{
20+
Works: works,
21+
WorksUpdating: worksUpdating,
22+
}
23+
}
24+
25+
26+
func (manager *WorkManager) Run(step time.Duration) {
27+
go func() {
28+
for {
29+
time.Sleep(step)
30+
31+
for i, work := range manager.WorksUpdating {
32+
log.Printf("Deleting (%d)", i)
33+
if work.State == WorkWaiting {
34+
manager.WorksUpdating = append(
35+
manager.WorksUpdating[:i],
36+
manager.WorksUpdating[i+1:]...
37+
)
38+
39+
}
40+
}
41+
42+
for _, work := range manager.Works {
43+
44+
timeForUpdate := work.LastUpdate.Add(work.Period)
45+
46+
if timeForUpdate.Before(time.Now()) && work.State != WorkUpdating {
47+
log.Println("Updating ", work.Name)
48+
manager.WorksUpdating = append(manager.WorksUpdating, work)
49+
work.Update()
50+
51+
}
52+
}
53+
pp.Println(manager.WorksUpdating)
54+
55+
}
56+
}()
57+
58+
//go func() {
59+
// for {
60+
// time.Sleep(step)
61+
//
62+
//
63+
//
64+
// }
65+
//
66+
//}()
67+
68+
}
69+
70+
71+
func (manager *WorkManager) AddWork(work *Work) {
72+
manager.Works = append(manager.Works, work)
73+
}
74+
75+
func (manager *WorkManager) DeleteWork(i int) {
76+
manager.Works = append(
77+
manager.Works[:i],
78+
manager.Works[i+1:]...
79+
)
80+
}

0 commit comments

Comments
 (0)