103 lines
3.1 KiB
Go
103 lines
3.1 KiB
Go
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
|
|
}
|