Files
go-account-register/services/twitter_account_export_service.go
2025-11-28 13:55:53 +08:00

85 lines
2.1 KiB
Go

package services
import (
"go-account-register/models"
"log"
"github.com/xuri/excelize/v2"
)
// 导出 Twitter 账号数据到 Excel
func ExportTwitterAccounts() ([]string, error) {
accountService := InitTwitterAccountService()
accounts := accountService.GetAll(&models.TwitterAccount{
Type: "get_address",
})
// 分类
countryMap := map[string][]models.TwitterAccount{
"United States": {},
"Singapore": {},
"Japan": {},
"Taiwan": {},
"Other": {},
}
for _, acc := range accounts {
addr := acc.RegisterAddress
if addr == "United States" || addr == "Singapore" || addr == "Japan" || addr == "Taiwan" {
countryMap[addr] = append(countryMap[addr], acc)
} else {
countryMap["Other"] = append(countryMap["Other"], acc)
}
}
var files []string
for k, v := range countryMap {
if len(v) == 0 {
continue
}
file := excelize.NewFile()
titles := []string{"编号", "用户id", "用户名", "邮箱", "密码", "邮箱密码", "生日", "Token", "二步验证码", "Cookies", "类型", "状态", "登录状态", "代理", "浏览器ID", "浏览器地址", "注册时间", "注册地区", "注册IP", "地址", "更新时间", "创建时间"}
for i, t := range titles {
cell, _ := excelize.CoordinatesToCellName(i+1, 1)
file.SetCellValue("Sheet1", cell, t)
}
for row, acc := range v {
vals := []interface{}{
acc.ID,
acc.Uid,
acc.Name,
acc.Email,
acc.Password,
acc.EmailPassword,
acc.Birthday,
acc.Token,
acc.Fa2,
acc.Cookies,
acc.Type,
acc.Status,
acc.LoginStatus,
acc.Proxy,
acc.BrowserId,
acc.BrowserUrl,
acc.RegisterDate,
acc.RegisterAddress,
acc.RegisterIp,
acc.Address,
acc.UpdateTime,
acc.CreateTime,
}
for col, val := range vals {
cell, _ := excelize.CoordinatesToCellName(col+1, row+2)
file.SetCellValue("Sheet1", cell, val)
}
}
filename := "twitter_accounts_" + k + ".xlsx"
if err := file.SaveAs(filename); err != nil {
log.Println("保存文件失败:", filename, err)
} else {
files = append(files, filename)
log.Println("已导出:", filename)
}
}
return files, nil
}