package service import ( "91porn-server/common" "91porn-server/common/httputil" "91porn-server/common/log" "91porn-server/common/stderr" "91porn-server/models/v/vidmod" "91porn-server/skd/skdg" "strconv" "strings" "go.mongodb.org/mongo-driver/bson/primitive" ) // SyncFileFromFs 从文件服务器同步文件信息 func SyncFileFromFs(vID string) (code stderr.Code) { v, _ := vidmod.GetVideoInfo(vID) resp, err := PullFileInfo(v.SourceID) if err != nil { return stderr.ErrConnectToFs } if resp.Code == stderr.UpLoadFileComplete { oid, _ := primitive.ObjectIDFromHex(resp.Data.ID) sourceID := resp.Data.ID playTime := resp.Data.PlayTime freeTime := vidmod.GetFreeTime(resp.Data.PlayTime) if v.FreeTime != 0 && freeTime != v.FreeTime { freeTime = v.FreeTime } seriesCover := v.SeriesCover resolution := strconv.FormatInt(int64(resp.Data.Width), 10) + "*" + strconv.FormatInt(int64(resp.Data.Height), 10) width := resp.Data.Width height := resp.Data.Height identifi := common.IdentifiVideoInfo(int64(resp.Data.Width), int64(resp.Data.Height)) direction := string(identifi.Direction) quality := string(identifi.Quality) md5 := resp.Data.CheckSum actor := strings.Join(resp.Data.Actors, ",") size := resp.Data.Size filename := resp.Data.Filename via := resp.Data.Via ratio := resp.Data.Ratio update := vidmod.WebVideoUpdateDoc{ ID: oid, SourceID: &sourceID, PlayTime: &playTime, FreeTime: &freeTime, SeriesCover: &seriesCover, Resolution: &resolution, Width: &width, Height: &height, MD5: &md5, Actor: &actor, Size: &size, Filename: &filename, Via: &via, Ratio: &ratio, Direction: &direction, Quality: &quality, } if v.Cover == "" { cover := resp.Data.FieldNameFs + "-1.jpg" update.Cover = &cover } if v.CoverThumb == "" { coverThumb := resp.Data.FieldNameFs + "-2.jpg" update.CoverThumb = &coverThumb } _, _ = vidmod.UpdateVideoResolutionPlayTime(v.ID, update) } return resp.Code } // PullFileInfo 获取文件转码情况及详情 func PullFileInfo(id string) (respBody vidmod.PuFinfoResp, err error) { client := httputil.Client() code, err := client.POSTWithJResp(&respBody, common.BindUrl(skdg.Conf.Url.PullFileInfo, id), nil, nil) log.Info("http method PullFileInfo response code ==>", log.Any("statusCode", code), log.Any("respCode", respBody.Code)) if err != nil { log.Error("Pull FileInfo From Aws ", log.Any("Error", err)) respBody.Code = stderr.ErrConnectToFs return } switch respBody.Data.Status { case vidmod.Merging, vidmod.MergeCompleted: respBody.Code = stderr.FileMerging case vidmod.MergeError: respBody.Code = stderr.ErrMergeFile case vidmod.Converting: respBody.Code = stderr.FileConverting case vidmod.ConvertError: respBody.Code = stderr.ErrConvertFile case vidmod.UploadLoadingToFs: respBody.Code = stderr.UploadLoadingToFs case vidmod.FileUploadError: respBody.Code = stderr.ErrUploadError case vidmod.ConvertCompleted, vidmod.Completed: respBody.Code = stderr.UpLoadFileComplete } return }