1
0
mirror of https://github.com/Mrs4s/go-cqhttp.git synced 2025-05-05 03:23:49 +08:00

update MiraiGo & fix user-agent & fix file lock.

This commit is contained in:
Mrs4s 2021-01-09 04:25:18 +08:00
parent a5a842a337
commit fe83ce716e
5 changed files with 25 additions and 8 deletions

View File

@ -135,6 +135,7 @@ func (bot *CQBot) UploadLocalImageAsPrivate(userId int64, img *LocalImageElement
if err != nil { if err != nil {
return nil, err return nil, err
} }
defer f.Close()
return bot.Client.UploadPrivateImage(userId, f) return bot.Client.UploadPrivateImage(userId, f)
} }

View File

@ -810,7 +810,7 @@ func (bot *CQBot) ToElement(t string, d map[string]string, group bool) (m interf
_, err = v.video.Read(header) _, err = v.video.Read(header)
if !bytes.Equal(header, []byte{0x66, 0x74, 0x79, 0x70}) { // ftyp if !bytes.Equal(header, []byte{0x66, 0x74, 0x79, 0x70}) { // ftyp
_, _ = v.video.Seek(0, io.SeekStart) _, _ = v.video.Seek(0, io.SeekStart)
hash, _ := utils.GetMd5AndLength(v.video) hash, _ := utils.ComputeMd5AndLength(v.video)
cacheFile := path.Join(global.CACHE_PATH, hex.EncodeToString(hash[:])+".mp4") cacheFile := path.Join(global.CACHE_PATH, hex.EncodeToString(hash[:])+".mp4")
if global.PathExists(cacheFile) { if global.PathExists(cacheFile) {
goto ok goto ok

View File

@ -23,7 +23,7 @@ import (
var ( var (
client = &http.Client{ client = &http.Client{
Timeout: time.Second * 30, Timeout: time.Second * 120,
Transport: &http.Transport{ Transport: &http.Transport{
Proxy: func(request *http.Request) (u *url.URL, e error) { Proxy: func(request *http.Request) (u *url.URL, e error) {
if Proxy == "" { if Proxy == "" {
@ -47,6 +47,8 @@ var (
Proxy string Proxy string
ErrOverSize = errors.New("oversize") ErrOverSize = errors.New("oversize")
UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edg/87.0.664.66"
) )
func GetBytes(url string) ([]byte, error) { func GetBytes(url string) ([]byte, error) {
@ -54,7 +56,7 @@ func GetBytes(url string) ([]byte, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
req.Header["User-Agent"] = []string{"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36 Edg/83.0.478.61"} req.Header["User-Agent"] = []string{UserAgent}
resp, err := client.Do(req) resp, err := client.Do(req)
if err != nil { if err != nil {
return nil, err return nil, err
@ -74,7 +76,7 @@ func GetBytes(url string) ([]byte, error) {
return body, nil return body, nil
} }
func DownloadFile(url, path string, limit int64) error { func DownloadFile(url, path string, limit int64, headers map[string]string) error {
file, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE, 0666) file, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE, 0666)
if err != nil { if err != nil {
return err return err
@ -84,6 +86,14 @@ func DownloadFile(url, path string, limit int64) error {
if err != nil { if err != nil {
return err return err
} }
if headers != nil {
for k, v := range headers {
req.Header.Set(k, v)
}
}
if _, ok := headers["User-Agent"]; ok {
req.Header["User-Agent"] = []string{UserAgent}
}
resp, err := client.Do(req) resp, err := client.Do(req)
if err != nil { if err != nil {
return err return err
@ -101,7 +111,7 @@ func DownloadFile(url, path string, limit int64) error {
func DownloadFileMultiThreading(url, path string, limit int64, threadCount int, headers map[string]string) error { func DownloadFileMultiThreading(url, path string, limit int64, threadCount int, headers map[string]string) error {
if threadCount < 2 { if threadCount < 2 {
return DownloadFile(url, path, limit) return DownloadFile(url, path, limit, headers)
} }
type BlockMetaData struct { type BlockMetaData struct {
BeginOffset int64 BeginOffset int64
@ -133,6 +143,9 @@ func DownloadFileMultiThreading(url, path string, limit int64, threadCount int,
req.Header.Set(k, v) req.Header.Set(k, v)
} }
} }
if _, ok := headers["User-Agent"]; ok {
req.Header["User-Agent"] = []string{UserAgent}
}
req.Header.Set("range", "bytes=0-") req.Header.Set("range", "bytes=0-")
resp, err := client.Do(req) resp, err := client.Do(req)
if err != nil { if err != nil {
@ -194,6 +207,9 @@ func DownloadFileMultiThreading(url, path string, limit int64, threadCount int,
req.Header.Set(k, v) req.Header.Set(k, v)
} }
} }
if _, ok := headers["User-Agent"]; ok {
req.Header["User-Agent"] = []string{UserAgent}
}
req.Header.Set("range", "bytes="+strconv.FormatInt(block.BeginOffset, 10)+"-"+strconv.FormatInt(block.EndOffset, 10)) req.Header.Set("range", "bytes="+strconv.FormatInt(block.BeginOffset, 10)+"-"+strconv.FormatInt(block.EndOffset, 10))
resp, err := client.Do(req) resp, err := client.Do(req)
if err != nil { if err != nil {

2
go.mod
View File

@ -3,7 +3,7 @@ module github.com/Mrs4s/go-cqhttp
go 1.15 go 1.15
require ( require (
github.com/Mrs4s/MiraiGo v0.0.0-20210108162828-29f670b7201f github.com/Mrs4s/MiraiGo v0.0.0-20210108202403-fb15970f2606
github.com/dustin/go-humanize v1.0.0 github.com/dustin/go-humanize v1.0.0
github.com/gin-contrib/pprof v1.3.0 github.com/gin-contrib/pprof v1.3.0
github.com/gin-gonic/gin v1.6.3 github.com/gin-gonic/gin v1.6.3

4
go.sum
View File

@ -1,7 +1,7 @@
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/Mrs4s/MiraiGo v0.0.0-20210108162828-29f670b7201f h1:I+rP4wxfLXZw6UpYCeNXWTItmeO4FPw1ZUrRjTVbAME= github.com/Mrs4s/MiraiGo v0.0.0-20210108202403-fb15970f2606 h1:SD8GLZcVmgbvYiojJhv698AJNVB1YHqx2QI63Qz4zHo=
github.com/Mrs4s/MiraiGo v0.0.0-20210108162828-29f670b7201f/go.mod h1:HW2e375lCQiRwtuA/LV6ZVTsi7co1TRfBn+L5Ow77Bo= github.com/Mrs4s/MiraiGo v0.0.0-20210108202403-fb15970f2606/go.mod h1:HW2e375lCQiRwtuA/LV6ZVTsi7co1TRfBn+L5Ow77Bo=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=