58 lines
1.5 KiB
Go
58 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"embed"
|
|
"net/http"
|
|
"strings"
|
|
|
|
commonHttp "video-factory/common/http"
|
|
"video-factory/shortdrama/controller"
|
|
"video-factory/shortdrama/service"
|
|
|
|
_ "github.com/gogf/gf/contrib/drivers/sqlite/v2"
|
|
"github.com/gogf/gf/v2/net/ghttp"
|
|
)
|
|
|
|
//go:embed shortdrama/view/*.html
|
|
var viewFS embed.FS
|
|
|
|
func main() {
|
|
// ==================== HTML 页面路由 ====================
|
|
servePage := func(name string) ghttp.HandlerFunc {
|
|
return func(r *ghttp.Request) {
|
|
data, err := viewFS.ReadFile("shortdrama/view/" + name)
|
|
if err != nil {
|
|
r.Response.WriteStatus(http.StatusNotFound)
|
|
return
|
|
}
|
|
r.Response.Write(data)
|
|
}
|
|
}
|
|
|
|
commonHttp.Httpserver.BindHandler("/", servePage("index.html"))
|
|
commonHttp.Httpserver.BindHandler("/views/*", func(r *ghttp.Request) {
|
|
name := strings.TrimPrefix(r.URL.Path, "/views/")
|
|
if name == "" || !strings.HasSuffix(name, ".html") {
|
|
r.Response.WriteStatus(http.StatusNotFound)
|
|
return
|
|
}
|
|
servePage(name)(r)
|
|
})
|
|
|
|
// ==================== API 路由(通过 RouteRegister 自动注册,遵循 ai-agent 规范) ====================
|
|
commonHttp.RouteRegister([]interface{}{
|
|
controller.Drama,
|
|
controller.Config,
|
|
})
|
|
|
|
// ==================== 静态文件服务(workspace 目录) ====================
|
|
commonHttp.Httpserver.AddStaticPath("/workspace", "workspace")
|
|
|
|
// 启动时恢复未完成的视频生成轮询
|
|
service.DramaService.StartVideoPoller(context.Background())
|
|
|
|
// 保持运行
|
|
select {}
|
|
}
|