diff --git a/controllers/video.go b/controllers/video.go index bd9f14e..465a7c7 100644 --- a/controllers/video.go +++ b/controllers/video.go @@ -5,6 +5,7 @@ import ( "encoding/json" "fmt" "io" + "time" "github.com/casbin/casbase/object" "github.com/casbin/casbase/util" @@ -65,6 +66,26 @@ func (c *ApiController) DeleteVideo() { c.ServeJSON() } +func startCoverUrlJob(owner string, name string, videoId string) { + go func(owner string, name string, videoId string) { + for i := 0; i < 20; i++ { + coverUrl := video.GetVideoCoverUrl(videoId) + if coverUrl != "" { + video := object.GetVideo(util.GetIdFromOwnerAndName(owner, name)) + if video.CoverUrl != "" { + break + } + + video.CoverUrl = coverUrl + object.UpdateVideo(util.GetIdFromOwnerAndName(owner, name), video) + break + } + + time.Sleep(time.Second * 5) + } + }(owner, name, videoId) +} + func (c *ApiController) UploadVideo() { owner := c.GetSessionUsername() @@ -94,6 +115,8 @@ func (c *ApiController) UploadVideo() { videoId := video.UploadVideo(fileId, filename, fileBuffer) if videoId != "" { + startCoverUrlJob(owner, fileId, videoId) + video := &object.Video{ Owner: owner, Name: fileId, diff --git a/video/vod_api.go b/video/vod_api.go index 0c228af..10eea81 100644 --- a/video/vod_api.go +++ b/video/vod_api.go @@ -77,3 +77,17 @@ func UploadVideo(fileId string, filename string, fileBuffer *bytes.Buffer) strin return videoId } + +func GetVideoCoverUrl(videoId string) string { + r := vod.CreateGetVideoInfoRequest() + r.VideoId = videoId + r.AcceptFormat = "JSON" + + resp, err := vodClient.GetVideoInfo(r) + if err != nil { + fmt.Println(err) + return err.Error() + } + + return resp.Video.CoverURL +} diff --git a/video/vod_api_test.go b/video/vod_api_test.go new file mode 100644 index 0000000..5adaf30 --- /dev/null +++ b/video/vod_api_test.go @@ -0,0 +1,7 @@ +package video + +import "testing" + +func TestGetVideoCoverUrl(t *testing.T) { + println(GetVideoCoverUrl("")) +} diff --git a/web/src/VideoEditPage.js b/web/src/VideoEditPage.js index d7e6fe7..cd960ae 100644 --- a/web/src/VideoEditPage.js +++ b/web/src/VideoEditPage.js @@ -151,7 +151,7 @@ class VideoEditPage extends React.Component { {i18next.t("general:URL")} :