cover-crawler/main.go

77 lines
2.0 KiB
Go

package main
import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/canvas"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/dialog"
"fyne.io/fyne/v2/layout"
"fyne.io/fyne/v2/widget"
"golang.org/x/image/colornames"
)
func main() {
myApp := app.New()
myWindow := myApp.NewWindow("封面获取器")
myWindow.Resize(fyne.NewSize(640, 480))
// 创建显示框
sourceDirLabel := widget.NewLabel("未选择")
targetDirLabel := widget.NewLabel("未选择")
displayBoxInfo := canvas.NewText("", colornames.Blue)
// 创建目录选择框
selectSourceDir := widget.NewButton("选择作品存放目录", func() {
dialog.ShowFolderOpen(func(uri fyne.ListableURI, err error) {
if err != nil {
sourceDirLabel.SetText("选择目录失败: " + err.Error())
return
}
if uri != nil {
sourceDirLabel.SetText(uri.Path())
}
}, myWindow)
})
selectTargetDir := widget.NewButton("选择输出目录", func() {
dialog.ShowFolderOpen(func(uri fyne.ListableURI, err error) {
if err != nil {
targetDirLabel.SetText("选择目录失败: " + err.Error())
return
}
if uri != nil {
targetDirLabel.SetText(uri.Path())
}
}, myWindow)
})
// 创建主布局
content := container.NewVBox(
container.NewHBox(selectSourceDir, sourceDirLabel),
container.NewHBox(selectTargetDir, targetDirLabel),
container.NewCenter(displayBoxInfo),
layout.NewSpacer(),
container.NewCenter(
widget.NewButton("开始处理", func() {
displayBoxInfo.Text = "处理中..."
displayBoxInfo.Color = colornames.Blue
displayBoxInfo.Refresh()
crawler := NewCrawler(sourceDirLabel.Text, targetDirLabel.Text)
if err := crawler.Handle(); err != nil {
displayBoxInfo.Text = "处理失败: " + err.Error()
displayBoxInfo.Color = colornames.Red
} else {
displayBoxInfo.Text = "处理完成"
displayBoxInfo.Color = colornames.Green
}
displayBoxInfo.Refresh()
}),
),
)
myWindow.SetContent(content)
myWindow.ShowAndRun()
}