This commit is contained in:
@@ -42,7 +42,7 @@ jobs:
|
||||
go env -w GOARCH=amd64
|
||||
go env -w GOOS=windows
|
||||
go mod tidy
|
||||
go build -ldflags="-s -w -H windowsgui" -o 上传工具.exe
|
||||
go build -ldflags="-s -w -H windowsgui -X 'main.version=$(TZ=Asia/Shanghai date +"%m%d%H%M")'" -o 上传工具.exe
|
||||
|
||||
- name: 上传构建文件
|
||||
uses: actions/upload-artifact@v3
|
||||
|
||||
123
main.go
123
main.go
@@ -23,41 +23,55 @@ import (
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
|
||||
var isRun = false
|
||||
var logText = widget.NewMultiLineEntry()
|
||||
var ctx, cancel = context.WithCancel(context.Background())
|
||||
var (
|
||||
version = "dev"
|
||||
isRun = false
|
||||
logText = widget.NewMultiLineEntry()
|
||||
ctx, cancel = context.WithCancel(context.Background())
|
||||
)
|
||||
|
||||
func main() {
|
||||
//初始化配置
|
||||
config.InitConfig()
|
||||
|
||||
myApp := app.New()
|
||||
myWindow := myApp.NewWindow("抖音数据上传工具")
|
||||
myWindow.Resize(fyne.NewSize(930, 600))
|
||||
a := app.New()
|
||||
newWindow := a.NewWindow("抖音数据上传工具 - 版本" + version)
|
||||
newWindow.Resize(fyne.NewSize(930, 600))
|
||||
|
||||
logText.Scroll = container.ScrollVerticalOnly
|
||||
|
||||
// 创建界面组件
|
||||
// URL输入组件
|
||||
urlEntry := widget.NewEntry()
|
||||
urlEntry.SetPlaceHolder("http://127.0.0.1:8080")
|
||||
urlEntry.Text = config.APPConfig.Url
|
||||
urlEntry.OnChanged = func(s string) {
|
||||
config.WriteConfig("url", urlEntry.Text)
|
||||
}
|
||||
|
||||
//Token输入组件
|
||||
tokenEntry := widget.NewEntry()
|
||||
tokenEntry.SetPlaceHolder("请输入Token")
|
||||
tokenEntry.Text = config.APPConfig.Token
|
||||
tokenEntry.OnChanged = func(s string) {
|
||||
config.WriteConfig("token", tokenEntry.Text)
|
||||
}
|
||||
|
||||
//目录选择输入组件
|
||||
selectedDirLabel := widget.NewEntry()
|
||||
selectedDirLabel.SetPlaceHolder("未选择目录(默认为程序运行目录)")
|
||||
selectedDirLabel.Text = config.APPConfig.LookingPath
|
||||
selectedDirLabel.OnChanged = func(s string) {
|
||||
config.WriteConfig("looking-path", selectedDirLabel.Text)
|
||||
}
|
||||
|
||||
//目录选择按钮
|
||||
selectDirBtn := widget.NewButton("选择检测目录", func() {
|
||||
// 调用CGO实现的Windows原生对话框
|
||||
selectedPath := folder.OpenFolderDialog()
|
||||
if selectedPath == "" {
|
||||
return
|
||||
}
|
||||
selectedDirLabel.SetText(selectedPath)
|
||||
config.WriteConfig("looking-path", selectedPath)
|
||||
})
|
||||
//上传线程数输入组件
|
||||
threadCountLabel := widget.NewEntry()
|
||||
threadCountLabel.SetPlaceHolder("10")
|
||||
threadCountLabel.Text = strconv.Itoa(config.APPConfig.ThreadCount)
|
||||
@@ -68,7 +82,7 @@ func main() {
|
||||
}
|
||||
config.WriteConfig("thread-count", i)
|
||||
}
|
||||
|
||||
//同时处理文件数输入组件
|
||||
handleFileCountLabel := widget.NewEntry()
|
||||
handleFileCountLabel.SetPlaceHolder("50")
|
||||
handleFileCountLabel.Text = strconv.Itoa(config.APPConfig.HandleFileCount)
|
||||
@@ -80,24 +94,13 @@ func main() {
|
||||
config.WriteConfig("handle-file-count", i)
|
||||
}
|
||||
|
||||
//是否启动程序时启动上传程序组件
|
||||
isRunOnStartWidget := widget.NewCheck("启动程序时启动上传程序", func(b bool) {
|
||||
config.WriteConfig("is-run-on-start", b)
|
||||
})
|
||||
isRunOnStartWidget.Checked = config.APPConfig.IsRunOnStart
|
||||
|
||||
// 使用Windows原生目录选择按钮
|
||||
selectDirBtn := widget.NewButton("选择检测目录", func() {
|
||||
// 调用CGO实现的Windows原生对话框
|
||||
selectedPath := folder.OpenFolderDialog()
|
||||
if selectedPath == "" {
|
||||
return
|
||||
}
|
||||
selectedDirLabel.SetText(selectedPath)
|
||||
config.WriteConfig("looking-path", selectedPath)
|
||||
})
|
||||
|
||||
// 开始运行按钮
|
||||
startBtn := widget.NewButton("开始运行", func() {
|
||||
//开始运行按钮
|
||||
startRun := func() {
|
||||
s := "==============================="
|
||||
|
||||
AddLog(s)
|
||||
@@ -114,32 +117,14 @@ func main() {
|
||||
|
||||
isRun = true
|
||||
go StartLooking(ctx, config.APPConfig.LookingPath)
|
||||
})
|
||||
|
||||
}
|
||||
startBtn := widget.NewButton("开始运行", startRun)
|
||||
//停止运行按钮
|
||||
stopBtn := widget.NewButton("停止运行", func() {
|
||||
cancel()
|
||||
ctx, cancel = context.WithCancel(context.Background())
|
||||
isRun = false
|
||||
})
|
||||
|
||||
// 按钮状态同步
|
||||
go func() {
|
||||
for {
|
||||
if isRun && (!startBtn.Disabled() || stopBtn.Disabled()) {
|
||||
fyne.Do(func() {
|
||||
startBtn.Disable()
|
||||
stopBtn.Enable()
|
||||
})
|
||||
} else if !isRun && (startBtn.Disabled() || !stopBtn.Disabled()) {
|
||||
fyne.Do(func() {
|
||||
startBtn.Enable()
|
||||
stopBtn.Disable()
|
||||
})
|
||||
}
|
||||
time.Sleep(100 * time.Microsecond)
|
||||
}
|
||||
}()
|
||||
|
||||
// 清除日志按钮
|
||||
clearLogBtn := widget.NewButton("清除日志", func() {
|
||||
logText.SetText("")
|
||||
@@ -188,36 +173,39 @@ func main() {
|
||||
nil, nil, nil,
|
||||
container.NewScroll(logText),
|
||||
)
|
||||
|
||||
// 使用HSplit容器创建可调整大小的左右分割布局
|
||||
splitContainer := container.NewHSplit(leftPanel, rightPanel)
|
||||
splitContainer.SetOffset(0.35) // 左侧占35%宽度
|
||||
|
||||
// 按钮状态同步
|
||||
go func() {
|
||||
for {
|
||||
if isRun && (!startBtn.Disabled() || stopBtn.Disabled()) {
|
||||
fyne.Do(func() {
|
||||
startBtn.Disable()
|
||||
stopBtn.Enable()
|
||||
})
|
||||
} else if !isRun && (startBtn.Disabled() || !stopBtn.Disabled()) {
|
||||
fyne.Do(func() {
|
||||
startBtn.Enable()
|
||||
stopBtn.Disable()
|
||||
})
|
||||
}
|
||||
time.Sleep(100 * time.Microsecond)
|
||||
}
|
||||
}()
|
||||
|
||||
//在程序启动时运行上传程序
|
||||
go func() {
|
||||
if !config.APPConfig.IsRunOnStart {
|
||||
return
|
||||
}
|
||||
time.Sleep(time.Second)
|
||||
s := "==============================="
|
||||
|
||||
AddLog(s)
|
||||
if strings.TrimSpace(tokenEntry.Text) == "" {
|
||||
AddLog("错误:请输入Token")
|
||||
return
|
||||
}
|
||||
AddLog(fmt.Sprintf("服务器地址:%s", config.APPConfig.Url))
|
||||
AddLog(fmt.Sprintf("Token:%s", config.APPConfig.Token))
|
||||
AddLog(fmt.Sprintf("检测目录:%s", config.APPConfig.LookingPath))
|
||||
AddLog(fmt.Sprintf("同时处理文件数:%v", config.APPConfig.HandleFileCount))
|
||||
AddLog(fmt.Sprintf("单文件上传线程:%v", config.APPConfig.ThreadCount))
|
||||
AddLog(s)
|
||||
|
||||
isRun = true
|
||||
go StartLooking(ctx, config.APPConfig.LookingPath)
|
||||
startRun()
|
||||
}()
|
||||
|
||||
myWindow.SetContent(splitContainer)
|
||||
myWindow.ShowAndRun()
|
||||
newWindow.SetContent(splitContainer)
|
||||
newWindow.ShowAndRun()
|
||||
}
|
||||
|
||||
func AddLog(message string) {
|
||||
@@ -228,10 +216,7 @@ func AddLog(message string) {
|
||||
})
|
||||
}
|
||||
|
||||
//
|
||||
// 上传数据代码
|
||||
//
|
||||
|
||||
var httpClient = &http.Client{
|
||||
Transport: &http.Transport{
|
||||
MaxIdleConns: 200,
|
||||
@@ -338,7 +323,7 @@ func StartLooking(ctx context.Context, lookingPath string) {
|
||||
AddLog("所有任务执行完成!")
|
||||
}
|
||||
|
||||
AddLog(fmt.Sprintf("上传完成,耗时:%s", time.Since(start)))
|
||||
AddLog(fmt.Sprintf("上传完成,耗时:%s", time.Since(start).String()))
|
||||
}
|
||||
|
||||
for {
|
||||
|
||||
Reference in New Issue
Block a user