114 lines
2.3 KiB
Go
114 lines
2.3 KiB
Go
package tools
|
|
|
|
import (
|
|
"database/sql"
|
|
"fmt"
|
|
"io"
|
|
"net/http"
|
|
"regexp"
|
|
"strings"
|
|
"time"
|
|
|
|
_ "github.com/mattn/go-sqlite3"
|
|
"github.com/tidwall/gjson"
|
|
)
|
|
|
|
func SyncNotesList() {
|
|
db, err := sql.Open("sqlite3", "assets/main.db")
|
|
CheckErr(err)
|
|
defer func() {
|
|
db.Close()
|
|
fmt.Println("Sync notes list done!")
|
|
}()
|
|
db.SetMaxOpenConns(1)
|
|
|
|
sql := `SELECT live_setting_id,notes_setting_asset,notes_list FROM live_setting_m ORDER BY live_setting_id ASC`
|
|
rows, err := db.Query(sql)
|
|
CheckErr(err)
|
|
|
|
liveList := make(map[int]string)
|
|
|
|
for rows.Next() {
|
|
var id int
|
|
var asset string
|
|
var notes interface{}
|
|
err = rows.Scan(&id, &asset, ¬es)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
continue
|
|
}
|
|
|
|
if notes != nil {
|
|
continue
|
|
}
|
|
|
|
liveList[id] = asset
|
|
}
|
|
rows.Close()
|
|
|
|
// fmt.Println(liveList)
|
|
|
|
for id, asset := range liveList {
|
|
url := "https://card.niconi.co.ni/live/" + asset
|
|
fmt.Println(url)
|
|
|
|
res, err := http.Get(url)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
continue
|
|
}
|
|
if res.StatusCode == http.StatusNotFound {
|
|
fmt.Println(res.StatusCode)
|
|
continue
|
|
}
|
|
body, err := io.ReadAll(res.Body)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
continue
|
|
}
|
|
_ = res.Body.Close()
|
|
// fmt.Println(string(body))
|
|
|
|
regex := regexp.MustCompile("var lives = (.*?)\n")
|
|
matchs := regex.FindSubmatch(body)
|
|
match := string(matchs[len(matchs)-1])
|
|
|
|
match = strings.ReplaceAll(match, "{\\\"", "{\"")
|
|
match = strings.ReplaceAll(match, "\\\":", "\":")
|
|
match = strings.ReplaceAll(match, ",\\\"", ",\"")
|
|
match = strings.ReplaceAll(match, "notes_list\":\"", "notes_list\":")
|
|
match = strings.ReplaceAll(match, "]\"}]", "]}]")
|
|
|
|
var notesList string
|
|
gjson.Parse(match).ForEach(func(key, value gjson.Result) bool {
|
|
notesList = value.Get("notes_list").String()
|
|
return true
|
|
})
|
|
// fmt.Println(notesList)
|
|
|
|
if notesList == "" {
|
|
fmt.Println("notes_list is null")
|
|
continue
|
|
}
|
|
|
|
stmt, err := db.Prepare("UPDATE live_setting_m SET notes_list = ? WHERE live_setting_id = ?")
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
continue
|
|
}
|
|
ret, err := stmt.Exec(notesList, id)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
continue
|
|
}
|
|
r, err := ret.RowsAffected()
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
continue
|
|
}
|
|
fmt.Println("RowsAffected:", r)
|
|
|
|
time.Sleep(time.Second)
|
|
}
|
|
}
|