1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- package dao
- import (
- "bytes"
- "context"
- "encoding/json"
- "fmt"
- "go-common/library/ecode"
- "go-common/library/log"
- "net/http"
- )
- const (
- _uposURL = "api/v1/task/push/audiowaveform"
- _uposBfsFmt = "subtitle/waveform_%d_%d.pcm"
- _uposCallback = "x/internal/v2/dm/subtitle/upos/callback"
- _defaultPixelDensity = 20
- )
- // UposReq .
- type UposReq struct {
- Cid int64 `json:"cid"`
- SaveTo string `json:"saveto"`
- CallbackURL string `json:"callback_url"`
- PixelDensity int32 `json:"pixel_density"`
- }
- // UposResp .
- type UposResp struct {
- Code int32 `json:"code"`
- Message string `json:"message"`
- }
- // Upos .
- func (d *Dao) Upos(c context.Context, oid int64) (saveTo string, err error) {
- var (
- req *http.Request
- bs []byte
- resp []byte
- )
- saveTo = fmt.Sprintf(_uposBfsFmt, oid, 1)
- params := &UposReq{
- Cid: oid,
- SaveTo: fmt.Sprintf("bfs://%s", saveTo),
- CallbackURL: fmt.Sprintf("%s/%s?oid=%d", d.conf.Host.Self, _uposCallback, oid),
- PixelDensity: _defaultPixelDensity,
- }
- if bs, err = json.Marshal(¶ms); err != nil {
- log.Error("params(%+v),error(%v)", params, err)
- return
- }
- if req, err = http.NewRequest(http.MethodPost, fmt.Sprintf("%s/%s", d.conf.Host.Upos, _uposURL), bytes.NewReader(bs)); err != nil {
- log.Error("http.NewReques.error(%v)", err)
- return
- }
- if resp, err = d.httpCli.Raw(c, req); err != nil {
- log.Error("d.httpCli.Raw.error(%v)", err)
- return
- }
- uposResp := &UposResp{}
- if err = json.Unmarshal(resp, &uposResp); err != nil {
- log.Error("params(%s),error(%v)", resp, err)
- return
- }
- if uposResp.Code != 0 {
- err = ecode.SubtitleWaveFormFailed
- log.Error("d.Upos,error(%v),info(%s)", err, uposResp.Message)
- }
- return
- }
|