Skip to content
This repository has been archived by the owner on Nov 15, 2020. It is now read-only.

Commit

Permalink
重命名CgoGetVipAudioInfo -> CgoGetChargeTrackInfo
Browse files Browse the repository at this point in the history
  • Loading branch information
jing332 committed Oct 8, 2020
1 parent d159673 commit 2069655
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 32 deletions.
58 changes: 28 additions & 30 deletions src/cgoqt/xmly_downloader.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@ import (
//#include "cgo.h"
import "C"

var fileNameRegexp = regexp.MustCompile("[/\\:*?\"<>|]")

func main() {
log.SetFlags(log.Lshortfile | log.Ltime)
}
Expand Down Expand Up @@ -58,9 +56,7 @@ func CgoGetTrackList(albumID, pageID, isAsc C.int) *C.DataError {

ptrArray := C.newPointerArray(C.int(len(tracks.Data.List)))
for i, v := range tracks.Data.List {
v.Title = fileNameRegexp.ReplaceAllLiteralString(v.Title, " ")
v.Title = strings.ReplaceAll(v.Title, "\t", "")
v.Title = strings.TrimSpace(v.Title)
v.Title = formatFileName(v.Title)
C.setPointerArray(ptrArray, C.int(i), C.newTrackInfo(C.int(v.TrackID), C.CString(v.Title), C.int(v.Duration),
C.CString(v.PlayURL32), C.CString(v.PlayURL64), C.CString(v.PlayPathAacv224), C.CString(v.PlayPathAacv164)))
}
Expand All @@ -70,16 +66,13 @@ func CgoGetTrackList(albumID, pageID, isAsc C.int) *C.DataError {
return C.newData(unsafe.Pointer(cPlaylist))
}

//export CgoGetVipAudioInfo
func CgoGetVipAudioInfo(trackID C.int, cookie *C.char) *C.DataError {
//export CgoGetChargeTrackInfo
func CgoGetChargeTrackInfo(trackID C.int, cookie *C.char) *C.DataError {
ai, err := xmly.GetVipAudioInfo(int(trackID), C.GoString(cookie))
if err != nil {
return C.newDataError(nil, C.CString(err.Error()))
}
//将特殊字符替换为空格
ai.Title = fileNameRegexp.ReplaceAllLiteralString(ai.Title, " ")
ai.Title = strings.ReplaceAll(ai.Title, "\t", "")
ai.Title = strings.TrimSpace(ai.Title)
ai.Title = formatFileName(ai.Title)
return C.newData(C.newTrackInfo(C.int(ai.TrackID), C.CString(ai.Title), C.int(ai.Duration), nil, nil, nil,
C.CString(ai.PlayPathAacv164)))
}
Expand Down Expand Up @@ -119,9 +112,25 @@ func CgoDownloadFile(cUrl, cFilePath *C.char, id C.int) *C.char {

t := time.NewTicker(100 * time.Millisecond)
defer t.Stop()
var lastProgress float64
count := 0
for {
select {
case <-t.C:
//超时(2s)
if count == 20 {
err = resp.Cancel()
if err != nil {
return C.CString("无法下载文件: 已超时: " + err.Error())
}
return C.CString("无法下载文件: 已超时")
}
if lastProgress == resp.Progress() {
count++
} else {
lastProgress = resp.Progress()
}

currentLength := C.long(resp.BytesComplete())
C.UpdateFileLength(uflCallback, id, &contentLength, &currentLength)
case <-resp.Done:
Expand Down Expand Up @@ -172,22 +181,11 @@ func CgoCheckQRCode(qrID *C.char) *C.char {
return nil
}

////export CgoGetAllAudioInfo
//func CgoGetAllAudioInfo(albumID C.int) *C.DataError {
// list, err := xmly.GetAllAudioInfo(int(albumID))
// if err != nil {
// return C.newDataError(nil, C.CString(err.Error()))
// }
//
// ptrArray := C.newPointerArray(C.int(len(list)))
// for i, v := range list {
// //将特殊字符替换为空格
// v.Title = fileNameRegexp.ReplaceAllLiteralString(v.Title, " ")
// C.setPointerArray(ptrArray, C.int(i), C.newAudioItem(C.int(v.TrackID), C.CString(v.Title),
// C.CString(v.PlayURL32), C.CString(v.PlayURL64), C.CString(v.PlayPathAacv224), C.CString(v.PlayPathAacv164)))
// }
// cArray := C.newCArray(ptrArray, C.int(len(list)))
//
// p := C.newData(unsafe.Pointer(cArray))
// return p
//}
var fileNameRegexp = regexp.MustCompile("[/\\:*?\"<>|]")

func formatFileName(s string) string {
s = fileNameRegexp.ReplaceAllLiteralString(s, " ")
s = strings.ReplaceAll(s, "\t", "")
s = strings.TrimSpace(s)
return s
}
2 changes: 1 addition & 1 deletion src/runnables/downloadchargetrackrunnable.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ void DownloadChargeTrackRunnable::run() {
}

TrackInfo *DownloadChargeTrackRunnable::GetChargeTrackInfo(int trackID) {
auto dataErr = CgoGetVipAudioInfo(
auto dataErr = CgoGetChargeTrackInfo(
trackID_, const_cast<char *>(cookie_.toStdString().c_str()));

if (dataErr->error) {
Expand Down
2 changes: 1 addition & 1 deletion src/runnables/getchargetrackinforunnable.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ GetChargeTrackInfoRunnable::GetChargeTrackInfoRunnable(int trackID,

void GetChargeTrackInfoRunnable::run() {
emit Start(trackID_);
auto dataErr = CgoGetVipAudioInfo(
auto dataErr = CgoGetChargeTrackInfo(
trackID_, const_cast<char *>(cookie_.toStdString().c_str()));

if (dataErr->error) {
Expand Down

0 comments on commit 2069655

Please sign in to comment.