@@ -1,45 +0,0 @@
|
||||
package tools
|
||||
|
||||
import "fmt"
|
||||
|
||||
type AccessoryData struct {
|
||||
AccessoryId int `xorm:"accessory_id"`
|
||||
SmileMax int `xorm:"smile_max"`
|
||||
PureMax int `xorm:"pure_max"`
|
||||
CoolMax int `xorm:"cool_max"`
|
||||
}
|
||||
|
||||
type CommonAccessoryData struct {
|
||||
AccessoryOwningUserId int `xorm:"accessory_owning_user_id pk autoincr"`
|
||||
AccessoryId int `xorm:"accessory_id"`
|
||||
Exp int `xorm:"exp"`
|
||||
}
|
||||
|
||||
func ProcessAccessoryData() {
|
||||
var accessoryData []AccessoryData
|
||||
err := MainEng.Table("accessory_m").Where("max_level = 8 AND rarity = 4").Cols("accessory_id,smile_max,pure_max,cool_max").Find(&accessoryData)
|
||||
CheckErr(err)
|
||||
|
||||
for _, data := range accessoryData {
|
||||
var exp int
|
||||
exists, err := MainEng.Table("accessory_level_m").Where("accessory_id = ?", data.AccessoryId).Select("MAX(next_exp)").Get(&exp)
|
||||
CheckErr(err)
|
||||
if !exists {
|
||||
fmt.Println("LOL")
|
||||
continue
|
||||
}
|
||||
commonData := CommonAccessoryData{
|
||||
AccessoryId: data.AccessoryId,
|
||||
Exp: exp,
|
||||
}
|
||||
// fmt.Println(commonData)
|
||||
// 每种饰品生成9个
|
||||
for i := 0; i < 9; i++ {
|
||||
affected, err := MainEng.Table("common_accessory_m").Insert(&commonData)
|
||||
CheckErr(err)
|
||||
fmt.Printf("Time: %d, Aff: %d\n", i, affected)
|
||||
|
||||
commonData.AccessoryOwningUserId += i + 1
|
||||
}
|
||||
}
|
||||
}
|
||||
-273
@@ -1,273 +0,0 @@
|
||||
package tools
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"honoka-chan/model"
|
||||
"time"
|
||||
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
)
|
||||
|
||||
type UnitData struct {
|
||||
UnitOwningUserID int `xorm:"unit_owning_user_id pk autoincr" json:"unit_owning_user_id"`
|
||||
UserID int `xorm:"user_id" json:"-"`
|
||||
UnitID int `xorm:"unit_id" json:"unit_id"`
|
||||
Exp int `xorm:"exp" json:"exp"`
|
||||
NextExp int `xorm:"next_exp" json:"next_exp"`
|
||||
Level int `xorm:"level" json:"level"`
|
||||
MaxLevel int `xorm:"max_level" json:"max_level"`
|
||||
LevelLimitID int `xorm:"level_limit_id" json:"level_limit_id"`
|
||||
Rank int `xorm:"rank" json:"rank"`
|
||||
MaxRank int `xorm:"max_rank" json:"max_rank"`
|
||||
Love int `xorm:"love" json:"love"`
|
||||
MaxLove int `xorm:"max_love" json:"max_love"`
|
||||
UnitSkillExp int `xorm:"unit_skill_exp" json:"unit_skill_exp"`
|
||||
UnitSkillLevel int `xorm:"unit_skill_level" json:"unit_skill_level"`
|
||||
MaxHp int `xorm:"max_hp" json:"max_hp"`
|
||||
UnitRemovableSkillCapacity int `xorm:"unit_removable_skill_capacity" json:"unit_removable_skill_capacity"`
|
||||
FavoriteFlag bool `xorm:"favorite_flag" json:"favorite_flag"`
|
||||
DisplayRank int `xorm:"display_rank" json:"display_rank"`
|
||||
IsRankMax bool `xorm:"is_rank_max" json:"is_rank_max"`
|
||||
IsLoveMax bool `xorm:"is_love_max" json:"is_love_max"`
|
||||
IsLevelMax bool `xorm:"is_level_max" json:"is_level_max"`
|
||||
IsSigned bool `xorm:"is_signed" json:"is_signed"`
|
||||
IsSkillLevelMax bool `xorm:"is_skill_level_max" json:"is_skill_level_max"`
|
||||
IsRemovableSkillCapacityMax bool `xorm:"is_removable_skill_capacity_max" json:"is_removable_skill_capacity_max"`
|
||||
InsertDate string `xorm:"insert_date" json:"insert_date"`
|
||||
}
|
||||
|
||||
type UserDeckData struct {
|
||||
ID int `xorm:"id pk autoincr"`
|
||||
DeckID int `xorm:"deck_id"`
|
||||
MainFlag int `xorm:"main_flag"`
|
||||
DeckName string `xorm:"deck_name"`
|
||||
UserID int `xorm:"user_id"`
|
||||
InsertDate int64 `xorm:"insert_date"`
|
||||
}
|
||||
|
||||
type UnitDeckData struct {
|
||||
ID int `xorm:"id pk autoincr" json:"-"`
|
||||
UserDeckID int `xorm:"user_deck_id" json:"-"`
|
||||
UnitOwningUserID int `xorm:"unit_owning_user_id" json:"unit_owning_user_id"`
|
||||
UnitID int `xorm:"unit_id" json:"unit_id"`
|
||||
Position int `xorm:"position" json:"position"`
|
||||
Level int `xorm:"level" json:"level"`
|
||||
LevelLimitID int `xorm:"level_limit_id" json:"level_limit_id"`
|
||||
DisplayRank int `xorm:"display_rank" json:"display_rank"`
|
||||
Love int `xorm:"love" json:"love"`
|
||||
UnitSkillLevel int `xorm:"unit_skill_level" json:"unit_skill_level"`
|
||||
IsRankMax bool `xorm:"is_rank_max" json:"is_rank_max"`
|
||||
IsLoveMax bool `xorm:"is_love_max" json:"is_love_max"`
|
||||
IsLevelMax bool `xorm:"is_level_max" json:"is_level_max"`
|
||||
IsSigned bool `xorm:"is_signed" json:"is_signed"`
|
||||
BeforeLove int `xorm:"before_love" json:"before_love"`
|
||||
MaxLove int `xorm:"max_love" json:"max_love"`
|
||||
InsertData int64 `xorm:"insert_date" json:"-"`
|
||||
}
|
||||
|
||||
type AlbumSeries struct {
|
||||
UnitID int `json:"unit_id"`
|
||||
AlbumSeriesID int `json:"album_series_id"`
|
||||
Rarity int `json:"rarity"`
|
||||
RankMin int `json:"rank_min"`
|
||||
RankMax int `json:"rank_max"`
|
||||
HpMax int `json:"hp_max"`
|
||||
DefaultRemovableSkillCapacity int `json:"default_removable_skill_capacity"`
|
||||
}
|
||||
|
||||
func GenCommonUnitData2() {
|
||||
sql := `SELECT unit_id,album_series_id,rarity,rank_min,rank_max,hp_max,default_removable_skill_capacity FROM unit_m WHERE unit_id NOT IN (SELECT unit_id FROM unit_m WHERE unit_type_id IN (SELECT unit_type_id FROM unit_type_m WHERE image_button_asset IS NULL AND (background_color = 'dcdbe3' AND original_attribute_id IS NULL) OR (unit_type_id IN (10,110,127,128,129) OR unit_type_id BETWEEN 131 AND 140))) ORDER BY unit_number ASC`
|
||||
rows, err := MainEng.QueryInterface(sql)
|
||||
CheckErr(err)
|
||||
|
||||
rb, err := json.Marshal(rows)
|
||||
CheckErr(err)
|
||||
// fmt.Println(string(rb))
|
||||
|
||||
// 默认卡组
|
||||
userDeck := UserDeckData{
|
||||
DeckID: 1,
|
||||
MainFlag: 1,
|
||||
DeckName: "Default deck",
|
||||
UserID: 1,
|
||||
InsertDate: time.Now().Unix(),
|
||||
}
|
||||
_, err = UserEng.Table("user_deck_m").Insert(&userDeck)
|
||||
CheckErr(err)
|
||||
userDeckId := userDeck.ID
|
||||
fmt.Println("userDeckId:", userDeckId)
|
||||
|
||||
position := 1
|
||||
|
||||
albums := []AlbumSeries{}
|
||||
if err = json.Unmarshal(rb, &albums); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
startTime := time.Now().Add(-time.Hour * 24 * 30)
|
||||
for _, v := range albums {
|
||||
unitData := UnitData{}
|
||||
startTime = startTime.Add(time.Second * 3)
|
||||
|
||||
unitData.UnitID = v.UnitID
|
||||
unitData.NextExp = 0
|
||||
unitData.Rank = v.RankMin
|
||||
unitData.MaxRank = v.RankMax
|
||||
unitData.MaxHp = v.HpMax
|
||||
unitData.DisplayRank = 2
|
||||
unitData.UnitSkillLevel = 8
|
||||
unitData.FavoriteFlag = true
|
||||
unitData.IsRankMax = true
|
||||
unitData.IsLevelMax = true
|
||||
unitData.IsLoveMax = true
|
||||
unitData.IsSkillLevelMax = true
|
||||
unitData.IsRemovableSkillCapacityMax = true
|
||||
unitData.InsertDate = startTime.Local().Format("2006-01-02 03:04:05")
|
||||
if v.Rarity != 4 {
|
||||
unitData.LevelLimitID = 0
|
||||
unitData.UnitRemovableSkillCapacity = v.DefaultRemovableSkillCapacity
|
||||
unitData.IsSigned = false
|
||||
switch v.Rarity {
|
||||
case 1:
|
||||
// N
|
||||
unitData.Exp = 8000
|
||||
unitData.Level = 40
|
||||
unitData.MaxLevel = 40
|
||||
unitData.Love = 50
|
||||
unitData.MaxLove = 50
|
||||
unitData.UnitSkillExp = 0
|
||||
unitData.UnitSkillLevel = 0
|
||||
unitData.FavoriteFlag = false
|
||||
unitData.IsRankMax = false
|
||||
unitData.IsLevelMax = false
|
||||
unitData.IsLoveMax = false
|
||||
unitData.IsSkillLevelMax = false
|
||||
unitData.IsRemovableSkillCapacityMax = false
|
||||
case 2:
|
||||
// R
|
||||
unitData.Exp = 13500
|
||||
unitData.Level = 60
|
||||
unitData.MaxLevel = 60
|
||||
unitData.Love = 200
|
||||
unitData.MaxLove = 200
|
||||
unitData.UnitSkillExp = 490
|
||||
case 3:
|
||||
// SR
|
||||
unitData.Exp = 36800
|
||||
unitData.Level = 80
|
||||
unitData.MaxLevel = 80
|
||||
unitData.Love = 500
|
||||
unitData.MaxLove = 500
|
||||
unitData.UnitSkillExp = 4900
|
||||
case 5:
|
||||
// SSR
|
||||
unitData.Exp = 56657
|
||||
unitData.Level = 90
|
||||
unitData.MaxLevel = 90
|
||||
unitData.Love = 750
|
||||
unitData.MaxLove = 750
|
||||
unitData.UnitSkillExp = 12700
|
||||
}
|
||||
} else {
|
||||
// UR
|
||||
unitData.Exp = 79700
|
||||
unitData.Level = 100
|
||||
unitData.MaxLevel = 100
|
||||
unitData.LevelLimitID = 1
|
||||
unitData.Love = 1000
|
||||
unitData.MaxLove = 1000
|
||||
unitData.UnitSkillExp = 29900
|
||||
unitData.UnitRemovableSkillCapacity = 8
|
||||
|
||||
stmt, err := MainEng.DB().Prepare("SELECT COUNT(*) AS ct FROM unit_sign_asset_m WHERE unit_id = ?")
|
||||
CheckErr(err)
|
||||
defer stmt.Close()
|
||||
|
||||
var ct int
|
||||
err = stmt.QueryRow(v.UnitID).Scan(&ct)
|
||||
CheckErr(err)
|
||||
|
||||
if ct > 0 {
|
||||
unitData.IsSigned = true
|
||||
} else {
|
||||
unitData.IsSigned = false
|
||||
}
|
||||
}
|
||||
|
||||
_, err = MainEng.Table("common_unit_m").Insert(&unitData)
|
||||
CheckErr(err)
|
||||
// fmt.Println("Inserted ID:", unitData.UnitOwningUserID)
|
||||
|
||||
// 默认卡组
|
||||
if v.AlbumSeriesID == 615 { // 仆光套
|
||||
unitDeckData := UnitDeckData{
|
||||
UserDeckID: userDeckId,
|
||||
UnitOwningUserID: unitData.UnitOwningUserID,
|
||||
UnitID: v.UnitID,
|
||||
Position: position,
|
||||
Level: 100,
|
||||
LevelLimitID: 1,
|
||||
DisplayRank: 2,
|
||||
Love: 1000,
|
||||
UnitSkillLevel: 8,
|
||||
IsRankMax: true,
|
||||
IsLoveMax: true,
|
||||
IsLevelMax: true,
|
||||
IsSigned: unitData.IsSigned,
|
||||
BeforeLove: 1000,
|
||||
MaxLove: 1000,
|
||||
InsertData: time.Now().Unix(),
|
||||
}
|
||||
|
||||
// 入库
|
||||
_, err = UserEng.Table("deck_unit_m").Insert(&unitDeckData)
|
||||
CheckErr(err)
|
||||
deckUnitId := unitDeckData.ID
|
||||
fmt.Println("deckUnitId:", deckUnitId)
|
||||
|
||||
//
|
||||
position++
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func GenCommonUnitData3() {
|
||||
uId := 1681205441 // Hardcode for now
|
||||
userDeck := []UserDeckData{}
|
||||
err := UserEng.Table("user_deck_m").Where("user_id = ?", uId).Asc("deck_id").Find(&userDeck)
|
||||
CheckErr(err)
|
||||
|
||||
unitDeckInfo := []model.UnitDeckInfoRes{}
|
||||
for _, deck := range userDeck {
|
||||
deckUnit := []UnitDeckData{}
|
||||
err = UserEng.Table("deck_unit_m").Where("user_deck_id = ?", deck.ID).Asc("position").Find(&deckUnit)
|
||||
CheckErr(err)
|
||||
|
||||
oUids := []model.UnitOwningUserIds{}
|
||||
for _, unit := range deckUnit {
|
||||
oUids = append(oUids, model.UnitOwningUserIds{
|
||||
Position: unit.Position,
|
||||
UnitOwningUserID: unit.UnitOwningUserID,
|
||||
})
|
||||
}
|
||||
|
||||
mainFlag := false
|
||||
if deck.MainFlag == 1 {
|
||||
mainFlag = true
|
||||
}
|
||||
unitDeckInfo = append(unitDeckInfo, model.UnitDeckInfoRes{
|
||||
UnitDeckID: deck.DeckID,
|
||||
MainFlag: mainFlag,
|
||||
DeckName: deck.DeckName,
|
||||
UnitOwningUserIds: oUids,
|
||||
})
|
||||
}
|
||||
|
||||
b, err := json.Marshal(unitDeckInfo)
|
||||
CheckErr(err)
|
||||
fmt.Println(string(b))
|
||||
}
|
||||
|
||||
func GenCommonUnitData() {
|
||||
}
|
||||
@@ -1,72 +0,0 @@
|
||||
package tools
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
)
|
||||
|
||||
func GenDownloadDb() {
|
||||
// Create table
|
||||
// CREATE TABLE "download_m" (
|
||||
// "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||||
// "pkg_type" integer,
|
||||
// "pkg_id" integer,
|
||||
// "pkg_order" integer,
|
||||
// "pkg_size" integer,
|
||||
// "pkg_os" TEXT
|
||||
// );
|
||||
fileLists, err := os.ReadDir("F:/sif_dl/list_CN_Android")
|
||||
CheckErr(err)
|
||||
for _, v := range fileLists {
|
||||
if v.IsDir() {
|
||||
panic(err)
|
||||
}
|
||||
fileList := "F:/sif_dl/list_CN_Android/" + v.Name()
|
||||
fileStat, err := os.Stat(fileList)
|
||||
CheckErr(err)
|
||||
pkgSize := fileStat.Size()
|
||||
fileInfo := strings.Split(strings.ReplaceAll(v.Name(), ".zip", ""), "_")
|
||||
pkgType, pkgId, pkgOrder := fileInfo[0], fileInfo[1], fileInfo[2]
|
||||
fmt.Printf("Android: %s - %s - %s - %d\n", pkgType, pkgId, pkgOrder, pkgSize)
|
||||
|
||||
stmt, err := MainEng.DB().Prepare("INSERT INTO download_m(pkg_type,pkg_id,pkg_order,pkg_size,pkg_os) VALUES (?,?,?,?,?)")
|
||||
CheckErr(err)
|
||||
defer stmt.Close()
|
||||
|
||||
res, err := stmt.Exec(pkgType, pkgId, pkgOrder, pkgSize, "Android")
|
||||
CheckErr(err)
|
||||
|
||||
id, err := res.LastInsertId()
|
||||
CheckErr(err)
|
||||
fmt.Println("LastInsertId:", id)
|
||||
}
|
||||
|
||||
fileLists, err = os.ReadDir("F:/sif_dl/list_CN_iOS")
|
||||
CheckErr(err)
|
||||
for _, v := range fileLists {
|
||||
if v.IsDir() {
|
||||
panic(err)
|
||||
}
|
||||
fileList := "F:/sif_dl/list_CN_iOS/" + v.Name()
|
||||
fileStat, err := os.Stat(fileList)
|
||||
CheckErr(err)
|
||||
pkgSize := fileStat.Size()
|
||||
fileInfo := strings.Split(strings.ReplaceAll(v.Name(), ".zip", ""), "_")
|
||||
pkgType, pkgId, pkgOrder := fileInfo[0], fileInfo[1], fileInfo[2]
|
||||
fmt.Printf("iOS: %s - %s - %s - %d\n", pkgType, pkgId, pkgOrder, pkgSize)
|
||||
|
||||
stmt, err := MainEng.DB().Prepare("INSERT INTO download_m(pkg_type,pkg_id,pkg_order,pkg_size,pkg_os) VALUES (?,?,?,?,?)")
|
||||
CheckErr(err)
|
||||
defer stmt.Close()
|
||||
|
||||
res, err := stmt.Exec(pkgType, pkgId, pkgOrder, pkgSize, "iOS")
|
||||
CheckErr(err)
|
||||
|
||||
id, err := res.LastInsertId()
|
||||
CheckErr(err)
|
||||
fmt.Println("LastInsertId:", id)
|
||||
}
|
||||
}
|
||||
-1134
File diff suppressed because it is too large
Load Diff
+13
-11
@@ -2,6 +2,8 @@ package tools
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"honoka-chan/config"
|
||||
"honoka-chan/model"
|
||||
"time"
|
||||
)
|
||||
|
||||
@@ -30,14 +32,14 @@ type UserPref struct {
|
||||
func InitUserData(userId int) {
|
||||
userList := []UserData{}
|
||||
if userId != 0 {
|
||||
err := UserEng.Table("users").Where("userid = ?", userId).Find(&userList)
|
||||
err := config.UserEng.Table("users").Where("userid = ?", userId).Find(&userList)
|
||||
CheckErr(err)
|
||||
} else {
|
||||
err := UserEng.Table("users").Asc("id").Find(&userList)
|
||||
err := config.UserEng.Table("users").Asc("id").Find(&userList)
|
||||
CheckErr(err)
|
||||
}
|
||||
|
||||
session := UserEng.NewSession()
|
||||
session := config.UserEng.NewSession()
|
||||
defer session.Close()
|
||||
|
||||
if err := session.Begin(); err != nil {
|
||||
@@ -46,13 +48,13 @@ func InitUserData(userId int) {
|
||||
|
||||
for _, user := range userList {
|
||||
// 检查用户配置
|
||||
exists, err := UserEng.Table("user_preference_m").Where("user_id = ?", user.UserID).Exist()
|
||||
exists, err := config.UserEng.Table("user_preference_m").Where("user_id = ?", user.UserID).Exist()
|
||||
CheckErr(err)
|
||||
|
||||
if !exists {
|
||||
// 默认中心成员()
|
||||
var oId int
|
||||
_, err = MainEng.Table("common_unit_m").Cols("unit_owning_user_id").Where("unit_id = ?", 31).Get(&oId)
|
||||
_, err = config.MainEng.Table("common_unit_m").Cols("unit_owning_user_id").Where("unit_id = ?", 31).Get(&oId)
|
||||
CheckErr(err)
|
||||
fmt.Println("Center UnitOwningUserID:", oId)
|
||||
userPref := UserPref{
|
||||
@@ -71,12 +73,12 @@ func InitUserData(userId int) {
|
||||
}
|
||||
|
||||
// 检查用户卡组配置
|
||||
exists, err = UserEng.Table("user_deck_m").Where("user_id = ?", user.UserID).Asc("deck_id").Exist()
|
||||
exists, err = config.UserEng.Table("user_deck_m").Where("user_id = ?", user.UserID).Asc("deck_id").Exist()
|
||||
CheckErr(err)
|
||||
fmt.Println("UserDeck exists:", exists)
|
||||
|
||||
if !exists {
|
||||
userDeck := UserDeckData{
|
||||
userDeck := model.UserDeckData{
|
||||
DeckID: 1,
|
||||
MainFlag: 1,
|
||||
DeckName: "队伍A",
|
||||
@@ -95,14 +97,14 @@ func InitUserData(userId int) {
|
||||
|
||||
// 默认卡组
|
||||
unitIds := []int{}
|
||||
err = MainEng.Table("unit_m").Cols("unit_id").Where("album_series_id = ?", 615).Find(&unitIds)
|
||||
err = config.MainEng.Table("unit_m").Cols("unit_id").Where("album_series_id = ?", 615).Find(&unitIds)
|
||||
if err != nil {
|
||||
session.Rollback()
|
||||
panic(err)
|
||||
}
|
||||
|
||||
unitData := []UnitData{}
|
||||
err = MainEng.Table("common_unit_m").In("unit_id", unitIds).Find(&unitData)
|
||||
unitData := []model.UnitData{}
|
||||
err = config.MainEng.Table("common_unit_m").In("unit_id", unitIds).Find(&unitData)
|
||||
if err != nil {
|
||||
session.Rollback()
|
||||
panic(err)
|
||||
@@ -111,7 +113,7 @@ func InitUserData(userId int) {
|
||||
|
||||
position := 1
|
||||
for _, unit := range unitData {
|
||||
unitDeckData := UnitDeckData{
|
||||
unitDeckData := model.UnitDeckData{
|
||||
UserDeckID: userDeckId,
|
||||
UnitOwningUserID: unit.UnitOwningUserID,
|
||||
UnitID: unit.UnitID,
|
||||
|
||||
@@ -1,97 +0,0 @@
|
||||
package tools
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"honoka-chan/utils"
|
||||
"io"
|
||||
"net/http"
|
||||
"os"
|
||||
"path"
|
||||
"regexp"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
"github.com/tidwall/gjson"
|
||||
)
|
||||
|
||||
func SyncNotesList() {
|
||||
defer func() {
|
||||
fmt.Println("Sync notes list done!")
|
||||
}()
|
||||
|
||||
sql := `SELECT live_setting_id,notes_setting_asset FROM live_setting_m ORDER BY live_setting_id ASC`
|
||||
rows, err := MainEng.DB().Query(sql)
|
||||
CheckErr(err)
|
||||
defer rows.Close()
|
||||
|
||||
liveList := make(map[int]string)
|
||||
|
||||
for rows.Next() {
|
||||
var id int
|
||||
var asset string
|
||||
err = rows.Scan(&id, &asset)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
continue
|
||||
}
|
||||
liveList[id] = asset
|
||||
}
|
||||
rows.Close()
|
||||
|
||||
// fmt.Println(liveList)
|
||||
|
||||
for _, 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
|
||||
}
|
||||
|
||||
notesDir := "./assets/notes"
|
||||
_, err = os.Stat(notesDir)
|
||||
if err != nil {
|
||||
err = os.MkdirAll(notesDir, 0755)
|
||||
CheckErr(err)
|
||||
}
|
||||
utils.WriteAllText(path.Join(notesDir, asset), notesList)
|
||||
|
||||
time.Sleep(time.Second)
|
||||
}
|
||||
}
|
||||
@@ -1,25 +1,7 @@
|
||||
package tools
|
||||
|
||||
import (
|
||||
"honoka-chan/config"
|
||||
|
||||
"xorm.io/xorm"
|
||||
)
|
||||
|
||||
var (
|
||||
MainEng *xorm.Engine
|
||||
UserEng *xorm.Engine
|
||||
)
|
||||
|
||||
func init() {
|
||||
MainEng = config.MainEng
|
||||
UserEng = config.UserEng
|
||||
|
||||
// go SyncNotesList()
|
||||
// GenDownloadDb()
|
||||
// GenCommonUnitData()
|
||||
InitUserData(0)
|
||||
// ProcessAccessoryData()
|
||||
}
|
||||
|
||||
func CheckErr(err error) {
|
||||
|
||||
Reference in New Issue
Block a user