Commit af9e1c25 by Li Feifei

add width hegight

parent 23c588dd
Pipeline #14946 failed with stages
in 42 seconds
...@@ -9,8 +9,8 @@ import ( ...@@ -9,8 +9,8 @@ import (
"github.com/aliyun/aliyun-oss-go-sdk/oss" "github.com/aliyun/aliyun-oss-go-sdk/oss"
"github.com/astaxie/beego/orm" "github.com/astaxie/beego/orm"
"github.com/chai2010/webp" "github.com/chai2010/webp"
"github.com/rocketlaunchr/go-pool"
"github.com/xxjwxc/gowp/workpool" "github.com/xxjwxc/gowp/workpool"
"github.com/rocketlaunchr/go-pool"
"image" "image"
"image/jpeg" "image/jpeg"
"image/png" "image/png"
...@@ -31,18 +31,15 @@ import ( ...@@ -31,18 +31,15 @@ import (
"time" "time"
) )
var ( var (
//WEBURL string = "http://offcn-live-svc" //WEBURL string = "http://offcn-live-svc"
WEBURL string = "https://test-live.offcncloud.com" WEBURL string = "https://test-live.offcncloud.com"
once sync.Once once sync.Once
syncPool pool.Pool syncPool pool.Pool
) )
const docUrl string = "http://doc.offcncloud.com/" const docUrl string = "http://doc.offcncloud.com/"
func init() { func init() {
once.Do(func() { once.Do(func() {
log.SetFlags(log.Lshortfile | log.LstdFlags) log.SetFlags(log.Lshortfile | log.LstdFlags)
...@@ -53,15 +50,13 @@ func init() { ...@@ -53,15 +50,13 @@ func init() {
}) })
} }
func Upload(v *models.XyuSmallTempFiles) { func Upload(v *models.XyuSmallTempFiles) {
go Down(v) go Down(v)
} }
func Down(v *models.XyuSmallTempFiles) { func Down(v *models.XyuSmallTempFiles) {
o := orm.NewOrm() o := orm.NewOrm()
url, _ := Qurl.QueryUnescape(v.Url) url, _ := Qurl.QueryUnescape(v.Url)
...@@ -72,7 +67,7 @@ func Down(v *models.XyuSmallTempFiles) { ...@@ -72,7 +67,7 @@ func Down(v *models.XyuSmallTempFiles) {
objectName := v.Url[strings.Index(v.Url, "com/")+4:] objectName := v.Url[strings.Index(v.Url, "com/")+4:]
// 文件以及存在就不需要下载 // 文件以及存在就不需要下载
if _, err := os.Stat(filePath); err != nil { if _, err := os.Stat(filePath); err != nil {
// Get the data // Get the data
resp, err := http.Get(url) resp, err := http.Get(url)
...@@ -174,9 +169,8 @@ func Down(v *models.XyuSmallTempFiles) { ...@@ -174,9 +169,8 @@ func Down(v *models.XyuSmallTempFiles) {
} }
defer fd.Close() defer fd.Close()
log.Println("objectName == ", objectName) log.Println("objectName == ", objectName)
objectPath := objectName[0:strings.LastIndex(objectName, "/")]+"/" objectPath := objectName[0:strings.LastIndex(objectName, "/")] + "/"
room_file["path"] = objectName room_file["path"] = objectName
err = bucket.PutObject(objectName, fd) err = bucket.PutObject(objectName, fd)
if err != nil { if err != nil {
...@@ -196,29 +190,28 @@ func Down(v *models.XyuSmallTempFiles) { ...@@ -196,29 +190,28 @@ func Down(v *models.XyuSmallTempFiles) {
UpdateFileError("2", v.Uuid, v.RoomNum, objectName) UpdateFileError("2", v.Uuid, v.RoomNum, objectName)
return return
} }
if _, ok := maps["FileSize"]; !ok { if _, ok := maps["FileSize"]; !ok {
log.Println(maps) log.Println(maps)
UpdateFileError("2", v.Uuid, v.RoomNum, objectName)
return
}
if _, ok := maps["FileSize"].(float64); !ok {
log.Println(err)
UpdateFileError("2", v.Uuid, v.RoomNum, objectName) UpdateFileError("2", v.Uuid, v.RoomNum, objectName)
return return
} }
if _, ok := maps["FileSize"].(float64); !ok {
log.Println(err)
UpdateFileError("2", v.Uuid, v.RoomNum, objectName)
return
}
room_file["files_size"] = strconv.Itoa(int(maps["FileSize"].(float64))) room_file["files_size"] = strconv.Itoa(int(maps["FileSize"].(float64)))
link := strings.Replace(v.Url, "xiaoyu-live.oss-cn-beijing-internal.aliyuncs.com", "desktop.offcncloud.com", -1) link := strings.Replace(v.Url, "xiaoyu-live.oss-cn-beijing-internal.aliyuncs.com", "desktop.offcncloud.com", -1)
room_file["link"] = link room_file["link"] = link
wordFloat64 := getWords(maps) wordFloat64 := getWords(maps)
room_file["page_count"] = wordFloat64 room_file["page_count"] = wordFloat64
downUrl := fmt.Sprintf("http://doc.offcncloud.com/?info=1&words=%v&ssl=1&furl=%s", downUrl := fmt.Sprintf("http://doc.offcncloud.com/?info=1&words=%v&ssl=1&furl=%s",
wordFloat64, furl) wordFloat64, furl)
ch := make(chan bool) ch := make(chan bool)
go func() { go func() {
err := downloadFile(downUrl, contentHash ,func(length, downLen int64) { err := downloadFile(downUrl, contentHash, func(length, downLen int64) {
}) })
if err == nil { if err == nil {
...@@ -230,20 +223,22 @@ func Down(v *models.XyuSmallTempFiles) { ...@@ -230,20 +223,22 @@ func Down(v *models.XyuSmallTempFiles) {
}() }()
<-ch <-ch
reader, err := zip.OpenReader("/data/files/" + contentHash + ".zip")
reader, err := zip.OpenReader( "/data/files/" + contentHash + ".zip")
if err != nil { if err != nil {
log.Println("5===",err) log.Println("5===", err)
UpdateFileError("4", v.Uuid, v.RoomNum, objectName) UpdateFileError("4", v.Uuid, v.RoomNum, objectName)
return return
} }
Pool := workpool.New(100) Pool := workpool.New(100)
var imageInfos [][]interface{}
for _, file := range reader.File { for _, file := range reader.File {
Pool.DoWait(func() error { Pool.DoWait(func() error {
log.Printf("file = %s \n", file.Name) log.Printf("file = %s \n", file.Name)
var err error var err error
for i := 0; i < 3; i++ { for i := 0; i < 3; i++ {
if err = pdfThumbnail(objectPath, file, bucket); err == nil { if imageinfo, err := pdfThumbnail(objectPath, file, bucket); err == nil {
imageInfos = append(imageInfos, imageinfo)
break break
} }
} }
...@@ -260,7 +255,6 @@ func Down(v *models.XyuSmallTempFiles) { ...@@ -260,7 +255,6 @@ func Down(v *models.XyuSmallTempFiles) {
defer reader.Close() defer reader.Close()
go func() { go func() {
err := uploadPacked(bucket, filename, contentHash, objectPath, err := uploadPacked(bucket, filename, contentHash, objectPath,
wordFloat64) wordFloat64)
...@@ -284,17 +278,13 @@ func Down(v *models.XyuSmallTempFiles) { ...@@ -284,17 +278,13 @@ func Down(v *models.XyuSmallTempFiles) {
} }
} }
elapsed := time.Since(t) elapsed := time.Since(t)
log.Println("filename == ", filename, " 上传成功, 上传耗时 == ", elapsed) log.Println("filename == ", filename, " 上传成功, 上传耗时 == ", elapsed)
// 删除压缩包和删除文件 // 删除压缩包和删除文件
defer os.Remove(filePath) defer os.Remove(filePath)
defer os.Remove("/data/files/" + contentHash+".zip") defer os.Remove("/data/files/" + contentHash + ".zip")
return return
} }
func webToken() (*http.Client, string, error) { func webToken() (*http.Client, string, error) {
...@@ -309,7 +299,6 @@ func webToken() (*http.Client, string, error) { ...@@ -309,7 +299,6 @@ func webToken() (*http.Client, string, error) {
Jar: jar, Jar: jar,
} }
payload := strings.NewReader("name=offcn&password=123123") payload := strings.NewReader("name=offcn&password=123123")
req, err := http.NewRequest("POST", WEBURL+"/web/login", payload) req, err := http.NewRequest("POST", WEBURL+"/web/login", payload)
...@@ -328,7 +317,7 @@ func webToken() (*http.Client, string, error) { ...@@ -328,7 +317,7 @@ func webToken() (*http.Client, string, error) {
bodys, err := ioutil.ReadAll(res.Body) bodys, err := ioutil.ReadAll(res.Body)
if err != nil { if err != nil {
log.Println("获取数据失败",err) log.Println("获取数据失败", err)
return &http.Client{}, "", err return &http.Client{}, "", err
} }
...@@ -362,11 +351,11 @@ func webToken() (*http.Client, string, error) { ...@@ -362,11 +351,11 @@ func webToken() (*http.Client, string, error) {
} }
} }
func UpdateFileError(code , uuid, room_num, path string) error { func UpdateFileError(code, uuid, room_num, path string) error {
vv := Qurl.Values{} vv := Qurl.Values{}
vv.Add("code", code) vv.Add("code", code)
vv.Add("uuid", uuid) vv.Add("uuid", uuid)
vv.Add("room_num",room_num) vv.Add("room_num", room_num)
vv.Add("path", path) vv.Add("path", path)
client, token, err := webToken() client, token, err := webToken()
if err != nil { if err != nil {
...@@ -376,7 +365,7 @@ func UpdateFileError(code , uuid, room_num, path string) error { ...@@ -376,7 +365,7 @@ func UpdateFileError(code , uuid, room_num, path string) error {
vv.Add("_token", token) vv.Add("_token", token)
body := vv.Encode() body := vv.Encode()
payload := strings.NewReader(body) payload := strings.NewReader(body)
req, err := http.NewRequest("POST",WEBURL + "/web/room_files_error", payload) req, err := http.NewRequest("POST", WEBURL+"/web/room_files_error", payload)
if err != nil { if err != nil {
log.Println(err) log.Println(err)
...@@ -406,7 +395,7 @@ func UpdateFileError(code , uuid, room_num, path string) error { ...@@ -406,7 +395,7 @@ func UpdateFileError(code , uuid, room_num, path string) error {
log.Println("消息下发失败") log.Println("消息下发失败")
return errors.New("消息下发失败") return errors.New("消息下发失败")
} }
return nil return nil
} }
func CreateFileDataBase(room_file map[string]interface{}) error { func CreateFileDataBase(room_file map[string]interface{}) error {
...@@ -425,7 +414,7 @@ func CreateFileDataBase(room_file map[string]interface{}) error { ...@@ -425,7 +414,7 @@ func CreateFileDataBase(room_file map[string]interface{}) error {
vv.Add("_token", token) vv.Add("_token", token)
body := vv.Encode() body := vv.Encode()
payload := strings.NewReader(body) payload := strings.NewReader(body)
req, err := http.NewRequest("POST",WEBURL + "/web/room_files_add", payload) req, err := http.NewRequest("POST", WEBURL+"/web/room_files_add", payload)
if err != nil { if err != nil {
log.Println(err) log.Println(err)
...@@ -459,12 +448,11 @@ func CreateFileDataBase(room_file map[string]interface{}) error { ...@@ -459,12 +448,11 @@ func CreateFileDataBase(room_file map[string]interface{}) error {
return nil return nil
} }
func pdfThumbnail(objectPath string, file *zip.File, bucket *oss.Bucket) ([]interface{}, error) {
func pdfThumbnail(objectPath string, file *zip.File, bucket *oss.Bucket) error {
fc, err := file.Open() fc, err := file.Open()
if err != nil { if err != nil {
return err return nil, err
} }
defer fc.Close() defer fc.Close()
...@@ -474,24 +462,20 @@ func pdfThumbnail(objectPath string, file *zip.File, bucket *oss.Bucket) error { ...@@ -474,24 +462,20 @@ func pdfThumbnail(objectPath string, file *zip.File, bucket *oss.Bucket) error {
buf := item.Item.(*bytes.Buffer) buf := item.Item.(*bytes.Buffer)
//defer debug.FreeOSMemory()
var img image.Image var img image.Image
fileSuffix := path.Ext(file.Name) //获取文件后缀 fileSuffix := path.Ext(file.Name) //获取文件后缀
switch fileSuffix { switch fileSuffix {
case ".png": case ".png":
img, _ = png.Decode(fc) img, _ = png.Decode(fc)
case ".jpeg": case ".jpeg":
img, _ = jpeg.Decode(fc) img, _ = jpeg.Decode(fc)
default: default:
return errors.New("image ext is not found") return nil, errors.New("image ext is not found")
} }
if err = webp.Encode(buf, img, &webp.Options{Lossless: true}); err != nil {
//var buf bytes.Buffer return nil, err
if err = webp.Encode(buf, img, &webp.Options{Lossless:true}); err != nil {
return err
} }
r := bytes.NewReader(buf.Bytes()) r := bytes.NewReader(buf.Bytes())
...@@ -502,28 +486,40 @@ func pdfThumbnail(objectPath string, file *zip.File, bucket *oss.Bucket) error { ...@@ -502,28 +486,40 @@ func pdfThumbnail(objectPath string, file *zip.File, bucket *oss.Bucket) error {
filenameOnly = strings.Replace(filenameOnly, "p", "", -1) filenameOnly = strings.Replace(filenameOnly, "p", "", -1)
fileName := fmt.Sprintf("%05s", filenameOnly) + ".webp" fileName := fmt.Sprintf("%05s", filenameOnly) + ".webp"
return bucket.PutObject(objectPathName+fileName, r) c, _, err := image.DecodeConfig(fc)
if err != nil {
return nil, err
}
var imageInfo []interface{}
imageInfo = append(imageInfo, fileName)
imageInfo = append(imageInfo, c.Width)
imageInfo = append(imageInfo, c.Height)
} return imageInfo, bucket.PutObject(objectPathName+fileName, r)
}
func uploadPacked(bucket *oss.Bucket, filename, contentHash, func uploadPacked(bucket *oss.Bucket, filename, contentHash,
objectPath string, word float64) error { objectPath string, word float64, imageInfos [][]interface{}) error {
type packed struct { type packed struct {
FileName string `json:"fileName"` FileName string `json:"fileName"`
Hash string `json:"hash"` Hash string `json:"hash"`
ImagesName []string `json:"imagesName"` ImagesName []string `json:"imagesName"`
OssImagesPath string `json:"ossImagesPath"` OssImagesPath string `json:"ossImagesPath"`
ImageInfos [][]interface{} `json:"imageInfos"`
} }
p := packed{ p := packed{
FileName: filename, FileName: filename,
Hash: contentHash, Hash: contentHash,
OssImagesPath: objectPath + "images/", OssImagesPath: objectPath + "images/",
ImageInfos: imageInfos,
} }
for i := 1; i <= int(word); i++ { for i := 1; i <= int(word); i++ {
p.ImagesName = append(p.ImagesName, fmt.Sprintf("%05d", i)+".webp") p.ImagesName = append(p.ImagesName, fmt.Sprintf("%05d", i)+".webp")
} }
log.Println("imageInfos == ", imageInfos)
data, err := json.Marshal(p) data, err := json.Marshal(p)
if err != nil { if err != nil {
return err return err
...@@ -537,7 +533,6 @@ func uploadPacked(bucket *oss.Bucket, filename, contentHash, ...@@ -537,7 +533,6 @@ func uploadPacked(bucket *oss.Bucket, filename, contentHash,
return nil return nil
} }
func getWords(maps map[string]interface{}) float64 { func getWords(maps map[string]interface{}) float64 {
if word, ok := maps["SlideCount"]; ok { if word, ok := maps["SlideCount"]; ok {
return word.(float64) return word.(float64)
...@@ -587,7 +582,6 @@ func newOssClient() (*oss.Bucket, error) { ...@@ -587,7 +582,6 @@ func newOssClient() (*oss.Bucket, error) {
return bucket, nil return bucket, nil
} }
func downloadFile(url, contentHash string, fb func(length, downLen int64)) error { func downloadFile(url, contentHash string, fb func(length, downLen int64)) error {
var ( var (
fsize int64 fsize int64
...@@ -611,9 +605,7 @@ func downloadFile(url, contentHash string, fb func(length, downLen int64)) error ...@@ -611,9 +605,7 @@ func downloadFile(url, contentHash string, fb func(length, downLen int64)) error
} }
//创建文件 //创建文件
file, err := os.Create("/data/files/" + contentHash + ".zip")
file, err := os.Create("/data/files/" + contentHash+".zip")
if err != nil { if err != nil {
log.Println(err) log.Println(err)
return err return err
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment