Files
video-factory/main.go
T
2026-07-01 09:50:34 +08:00

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 {}
}