You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.0 KiB
76 lines
2.0 KiB
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"os"
|
|
)
|
|
|
|
// 读取账号配置
|
|
// Python: eval(f.read()) -> Go: JSON解析
|
|
func LoadAccountConfig(filename string) (*AccountConfig, error) {
|
|
// 检查文件是否存在
|
|
if _, err := os.Stat(filename); os.IsNotExist(err) {
|
|
// 文件不存在,创建模板文件
|
|
defaultConfig := AccountConfig{
|
|
Username: "your_username",
|
|
Password: "your_password",
|
|
}
|
|
|
|
file, _ := json.MarshalIndent(defaultConfig, "", " ")
|
|
os.WriteFile(filename, file, 0644)
|
|
|
|
return nil, fmt.Errorf("账号文件不存在,已创建模板 %s,请填写后重试", filename)
|
|
}
|
|
|
|
// 读取文件
|
|
data, err := os.ReadFile(filename)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("读取账号文件失败: %v", err)
|
|
}
|
|
|
|
// 解析JSON
|
|
var config AccountConfig
|
|
err = json.Unmarshal(data, &config)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("解析账号文件失败,请确保是JSON格式: %v", err)
|
|
}
|
|
|
|
return &config, nil
|
|
}
|
|
|
|
// 读取Alpha表达式列表
|
|
// Python: json.load(f) -> Go: 也是json解析,但要定义结构
|
|
func LoadAlphaList(filename string) ([]map[string]interface{}, error) {
|
|
// 检查文件是否存在
|
|
if _, err := os.Stat(filename); os.IsNotExist(err) {
|
|
// 创建示例文件
|
|
example := []map[string]interface{}{
|
|
{
|
|
"regular": "示例表达式",
|
|
"settings": map[string]interface{}{},
|
|
"type": "REGULAR",
|
|
},
|
|
}
|
|
|
|
file, _ := json.MarshalIndent(example, "", " ")
|
|
os.WriteFile(filename, file, 0644)
|
|
|
|
return nil, fmt.Errorf("Alpha文件不存在,已创建示例 %s,请添加表达式后重试", filename)
|
|
}
|
|
|
|
data, err := os.ReadFile(filename)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("读取Alpha文件失败: %v", err)
|
|
}
|
|
|
|
// 解析为通用格式
|
|
// Go中,如果JSON结构不确定,可以用[]map[string]interface{}
|
|
var alphaList []map[string]interface{}
|
|
err = json.Unmarshal(data, &alphaList)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("解析Alpha文件失败: %v", err)
|
|
}
|
|
|
|
return alphaList, nil
|
|
}
|
|
|