-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.go
More file actions
93 lines (78 loc) · 2.2 KB
/
main.go
File metadata and controls
93 lines (78 loc) · 2.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package main
import (
"./api/bot/line"
"./api/bot/telegram"
"./api/crawler"
"./config"
"./storage"
"./storage/maskStorage"
"encoding/csv"
"flag"
"github.com/jasonlvhit/gocron"
"github.com/poolqa/log"
"io/ioutil"
"os"
"strings"
)
var (
//支持命令行输入格式为-config=name, 默认为config.ini
//配置文件一般获取到都是类型
configFile = flag.String("config", "./config.ini", "General configuration file")
)
func main() {
log.InitByConfigFile("./log.conf")
flag.Parse()
var err error
config.GConfig, err = config.ParseConfig(*configFile) //读取配置文件,并返回其Config
if err != nil {
log.Error("找不到配置文件!信息:" + err.Error())
os.Exit(0)
}
storage.GStorage = storage.NewStorage(config.GConfig)
maskStorage.GMaskStorage = maskStorage.NewMaskStorage(storage.GStorage.GetDB())
err = maskStorage.GMaskStorage.InitData()
if err != nil {
log.Error("nhiMaskDataCrawler init data error:", err)
os.Exit(0)
}
if true {
nhiMaskDataCrawler := crawler.NewNHICrawler("https://data.nhi.gov.tw/resource/mask/maskdata.csv", maskStorage.GMaskStorage)
cron := gocron.NewScheduler()
cron.Every(60).Seconds().Do(nhiMaskDataCrawler.Run)
cron.Start()
cron.RunAll()
} else {
loadFileToDb()
}
if config.GConfig.Telegram.Enable {
tgBot, _ := telegram.NewTelegramBot(config.GConfig.Telegram, maskStorage.GMaskStorage)
go tgBot.Handler()
}
if config.GConfig.Line.Enable {
tgBot, _ := line.NewLineBot(config.GConfig.Line, maskStorage.GMaskStorage)
go tgBot.Handler()
}
select {}
}
func loadFileToDb() {
fileName := "d:/gps.csv"
f, err := ioutil.ReadFile(fileName)
if err != nil {
log.Errorf("err:%v", err)
return
}
br := csv.NewReader(strings.NewReader(string(f)))
csvData, _ := br.ReadAll()
csvLineSize := len(csvData)
se := storage.GStorage.GetDB().Engine.NewSession()
sql := "UPDATE pharmacy SET latitude = ?, longitude = ? WHERE `code` =? AND latitude = 0 AND longitude = 0 "
for idx := 1; idx < csvLineSize; idx++ {
row := csvData[idx]
log.Infof("idx:%v, %+v, %v, %v", idx, row[13], row[12], row[0])
_, err := se.Exec(sql, row[13], row[12], row[0])
if err != nil {
log.Error("update pharmacy data error:", err)
return
}
}
}