ui支持自动获取文件名

main
orestonce 2022-10-06 09:52:20 +08:00
parent 50a77efcb1
commit eee8bd49cc
7 changed files with 286 additions and 224 deletions

View File

@ -119,7 +119,7 @@ func (this *downloadEnv) RunDownload(req RunDownload_Req) (resp RunDownload_Resp
} }
} }
if req.RemoteName && req.FileName == "" { if req.RemoteName && req.FileName == "" {
req.FileName = getFileName(req.M3u8Url) req.FileName = GetFileNameFromUrl(req.M3u8Url)
} }
if req.FileName == "" { if req.FileName == "" {
req.FileName = "all" req.FileName = "all"
@ -677,14 +677,15 @@ func (this *downloadEnv) GetIsCancel() bool {
} }
} }
func getFileName(u string) string { func GetFileNameFromUrl(u string) string {
url, err := url.Parse(u) urlObj, err := url.Parse(u)
if err != nil { if err != nil || urlObj.Scheme == "" {
return "" return "all"
} }
name := path.Base(url.Path) name := path.Base(urlObj.Path)
if strings.HasSuffix(name, ".m3u8") { ext := path.Ext(name)
return name[:len(name)-5] if len(name) > len(ext) {
return strings.TrimSuffix(name, ext)
} }
return name return name
} }

View File

@ -106,15 +106,15 @@ func TestGetFileName(t *testing.T) {
u2 := "https://example.com/video.m3u8?query=1" u2 := "https://example.com/video.m3u8?query=1"
u3 := "https://example.com/video-name" u3 := "https://example.com/video-name"
if getFileName(u1) != "video" { if GetFileNameFromUrl(u1) != "video" {
t.Fail() t.Fail()
} }
if getFileName(u2) != "video" { if GetFileNameFromUrl(u2) != "video" {
t.Fail() t.Fail()
} }
if getFileName(u3) != "video-name" { if GetFileNameFromUrl(u3) != "video-name" {
t.Fail() t.Fail()
} }
} }

View File

@ -19,7 +19,7 @@ func main() {
if os.Getenv("GITHUB_ACTIONS") == "" { // 本地编译 if os.Getenv("GITHUB_ACTIONS") == "" { // 本地编译
CreateLibForQtUi("amd64-static") // 创建Qt需要使用的.a库文件 CreateLibForQtUi("amd64-static") // 创建Qt需要使用的.a库文件
WriteVersionDotRc("1.5.6") WriteVersionDotRc("1.5.6")
} else { // github actions 编译 } else { // github actions 编译
if runtime.GOOS == "darwin" { // 编译darwin版本的dmg if runtime.GOOS == "darwin" { // 编译darwin版本的dmg
CreateLibForQtUi("amd64-shared") CreateLibForQtUi("amd64-shared")
} else { // 编译windows版本的exe } else { // 编译windows版本的exe
@ -94,6 +94,7 @@ func CreateLibForQtUi(mode string) {
ctx.Generate1(m3u8d.GetWd) ctx.Generate1(m3u8d.GetWd)
ctx.Generate1(m3u8d.ParseCurlStr) ctx.Generate1(m3u8d.ParseCurlStr)
ctx.Generate1(m3u8d.RunDownload_Req_ToCurlStr) ctx.Generate1(m3u8d.RunDownload_Req_ToCurlStr)
ctx.Generate1(m3u8d.GetFileNameFromUrl)
if mode == "amd64-static" { if mode == "amd64-static" {
ctx.MustCreateAmd64LibraryInDir("m3u8d-qt") ctx.MustCreateAmd64LibraryInDir("m3u8d-qt")
} else if mode == "386-static" { } else if mode == "386-static" {

View File

@ -75,6 +75,7 @@ extern __declspec(dllexport) void Go2cppFn_GetProgress(char* in, int inLen, char
extern __declspec(dllexport) void Go2cppFn_GetWd(char* in, int inLen, char** out, int* outLen); extern __declspec(dllexport) void Go2cppFn_GetWd(char* in, int inLen, char** out, int* outLen);
extern __declspec(dllexport) void Go2cppFn_ParseCurlStr(char* in, int inLen, char** out, int* outLen); extern __declspec(dllexport) void Go2cppFn_ParseCurlStr(char* in, int inLen, char** out, int* outLen);
extern __declspec(dllexport) void Go2cppFn_RunDownload_Req_ToCurlStr(char* in, int inLen, char** out, int* outLen); extern __declspec(dllexport) void Go2cppFn_RunDownload_Req_ToCurlStr(char* in, int inLen, char** out, int* outLen);
extern __declspec(dllexport) void Go2cppFn_GetFileNameFromUrl(char* in, int inLen, char** out, int* outLen);
#ifdef __cplusplus #ifdef __cplusplus
} }
@ -85,97 +86,99 @@ RunDownload_Resp RunDownload(RunDownload_Req in0){
std::string in; std::string in;
{ {
{ {
uint32_t tmp34 = in0.M3u8Url.length(); uint32_t tmp36 = in0.M3u8Url.length();
char tmp35[4];
tmp35[0] = (uint32_t(tmp34) >> 24) & 0xFF;
tmp35[1] = (uint32_t(tmp34) >> 16) & 0xFF;
tmp35[2] = (uint32_t(tmp34) >> 8) & 0xFF;
tmp35[3] = (uint32_t(tmp34) >> 0) & 0xFF;
in.append(tmp35, 4);
in.append(in0.M3u8Url);
}
in.append((char*)(&in0.Insecure), 1);
{
uint32_t tmp36 = in0.SaveDir.length();
char tmp37[4]; char tmp37[4];
tmp37[0] = (uint32_t(tmp36) >> 24) & 0xFF; tmp37[0] = (uint32_t(tmp36) >> 24) & 0xFF;
tmp37[1] = (uint32_t(tmp36) >> 16) & 0xFF; tmp37[1] = (uint32_t(tmp36) >> 16) & 0xFF;
tmp37[2] = (uint32_t(tmp36) >> 8) & 0xFF; tmp37[2] = (uint32_t(tmp36) >> 8) & 0xFF;
tmp37[3] = (uint32_t(tmp36) >> 0) & 0xFF; tmp37[3] = (uint32_t(tmp36) >> 0) & 0xFF;
in.append(tmp37, 4); in.append(tmp37, 4);
in.append(in0.SaveDir); in.append(in0.M3u8Url);
} }
in.append((char*)(&in0.Insecure), 1);
{ {
uint32_t tmp38 = in0.FileName.length(); uint32_t tmp38 = in0.SaveDir.length();
char tmp39[4]; char tmp39[4];
tmp39[0] = (uint32_t(tmp38) >> 24) & 0xFF; tmp39[0] = (uint32_t(tmp38) >> 24) & 0xFF;
tmp39[1] = (uint32_t(tmp38) >> 16) & 0xFF; tmp39[1] = (uint32_t(tmp38) >> 16) & 0xFF;
tmp39[2] = (uint32_t(tmp38) >> 8) & 0xFF; tmp39[2] = (uint32_t(tmp38) >> 8) & 0xFF;
tmp39[3] = (uint32_t(tmp38) >> 0) & 0xFF; tmp39[3] = (uint32_t(tmp38) >> 0) & 0xFF;
in.append(tmp39, 4); in.append(tmp39, 4);
in.append(in0.SaveDir);
}
{
uint32_t tmp40 = in0.FileName.length();
char tmp41[4];
tmp41[0] = (uint32_t(tmp40) >> 24) & 0xFF;
tmp41[1] = (uint32_t(tmp40) >> 16) & 0xFF;
tmp41[2] = (uint32_t(tmp40) >> 8) & 0xFF;
tmp41[3] = (uint32_t(tmp40) >> 0) & 0xFF;
in.append(tmp41, 4);
in.append(in0.FileName); in.append(in0.FileName);
} }
in.append((char*)(&in0.RemoteName), 1);
{ {
char tmp40[4];
tmp40[0] = (uint32_t(in0.SkipTsCountFromHead) >> 24) & 0xFF;
tmp40[1] = (uint32_t(in0.SkipTsCountFromHead) >> 16) & 0xFF;
tmp40[2] = (uint32_t(in0.SkipTsCountFromHead) >> 8) & 0xFF;
tmp40[3] = (uint32_t(in0.SkipTsCountFromHead) >> 0) & 0xFF;
in.append(tmp40, 4);
}
{
uint32_t tmp41 = in0.SetProxy.length();
char tmp42[4]; char tmp42[4];
tmp42[0] = (uint32_t(tmp41) >> 24) & 0xFF; tmp42[0] = (uint32_t(in0.SkipTsCountFromHead) >> 24) & 0xFF;
tmp42[1] = (uint32_t(tmp41) >> 16) & 0xFF; tmp42[1] = (uint32_t(in0.SkipTsCountFromHead) >> 16) & 0xFF;
tmp42[2] = (uint32_t(tmp41) >> 8) & 0xFF; tmp42[2] = (uint32_t(in0.SkipTsCountFromHead) >> 8) & 0xFF;
tmp42[3] = (uint32_t(tmp41) >> 0) & 0xFF; tmp42[3] = (uint32_t(in0.SkipTsCountFromHead) >> 0) & 0xFF;
in.append(tmp42, 4); in.append(tmp42, 4);
in.append(in0.SetProxy);
} }
{ {
uint32_t tmp43 = in0.HeaderMap.size(); uint32_t tmp43 = in0.SetProxy.length();
char tmp44[4]; char tmp44[4];
tmp44[0] = (uint32_t(tmp43) >> 24) & 0xFF; tmp44[0] = (uint32_t(tmp43) >> 24) & 0xFF;
tmp44[1] = (uint32_t(tmp43) >> 16) & 0xFF; tmp44[1] = (uint32_t(tmp43) >> 16) & 0xFF;
tmp44[2] = (uint32_t(tmp43) >> 8) & 0xFF; tmp44[2] = (uint32_t(tmp43) >> 8) & 0xFF;
tmp44[3] = (uint32_t(tmp43) >> 0) & 0xFF; tmp44[3] = (uint32_t(tmp43) >> 0) & 0xFF;
in.append(tmp44, 4); in.append(tmp44, 4);
for(std::map<std::string, std::vector<std::string>>::iterator tmp45 = in0.HeaderMap.begin(); tmp45 != in0.HeaderMap.end(); ++tmp45) { in.append(in0.SetProxy);
}
{
uint32_t tmp45 = in0.HeaderMap.size();
char tmp46[4];
tmp46[0] = (uint32_t(tmp45) >> 24) & 0xFF;
tmp46[1] = (uint32_t(tmp45) >> 16) & 0xFF;
tmp46[2] = (uint32_t(tmp45) >> 8) & 0xFF;
tmp46[3] = (uint32_t(tmp45) >> 0) & 0xFF;
in.append(tmp46, 4);
for(std::map<std::string, std::vector<std::string>>::iterator tmp47 = in0.HeaderMap.begin(); tmp47 != in0.HeaderMap.end(); ++tmp47) {
{ {
uint32_t tmp46 = tmp45->first.length(); uint32_t tmp48 = tmp47->first.length();
char tmp47[4];
tmp47[0] = (uint32_t(tmp46) >> 24) & 0xFF;
tmp47[1] = (uint32_t(tmp46) >> 16) & 0xFF;
tmp47[2] = (uint32_t(tmp46) >> 8) & 0xFF;
tmp47[3] = (uint32_t(tmp46) >> 0) & 0xFF;
in.append(tmp47, 4);
in.append(tmp45->first);
}
{
uint32_t tmp48 = tmp45->second.size();
char tmp49[4]; char tmp49[4];
tmp49[0] = (uint32_t(tmp48) >> 24) & 0xFF; tmp49[0] = (uint32_t(tmp48) >> 24) & 0xFF;
tmp49[1] = (uint32_t(tmp48) >> 16) & 0xFF; tmp49[1] = (uint32_t(tmp48) >> 16) & 0xFF;
tmp49[2] = (uint32_t(tmp48) >> 8) & 0xFF; tmp49[2] = (uint32_t(tmp48) >> 8) & 0xFF;
tmp49[3] = (uint32_t(tmp48) >> 0) & 0xFF; tmp49[3] = (uint32_t(tmp48) >> 0) & 0xFF;
in.append(tmp49, 4); in.append(tmp49, 4);
for (uint32_t tmp50=0; tmp50 < tmp48; ++tmp50) { in.append(tmp47->first);
}
{
uint32_t tmp50 = tmp47->second.size();
char tmp51[4];
tmp51[0] = (uint32_t(tmp50) >> 24) & 0xFF;
tmp51[1] = (uint32_t(tmp50) >> 16) & 0xFF;
tmp51[2] = (uint32_t(tmp50) >> 8) & 0xFF;
tmp51[3] = (uint32_t(tmp50) >> 0) & 0xFF;
in.append(tmp51, 4);
for (uint32_t tmp52=0; tmp52 < tmp50; ++tmp52) {
{ {
uint32_t tmp51 = tmp45->second[tmp50].length(); uint32_t tmp53 = tmp47->second[tmp52].length();
char tmp52[4]; char tmp54[4];
tmp52[0] = (uint32_t(tmp51) >> 24) & 0xFF; tmp54[0] = (uint32_t(tmp53) >> 24) & 0xFF;
tmp52[1] = (uint32_t(tmp51) >> 16) & 0xFF; tmp54[1] = (uint32_t(tmp53) >> 16) & 0xFF;
tmp52[2] = (uint32_t(tmp51) >> 8) & 0xFF; tmp54[2] = (uint32_t(tmp53) >> 8) & 0xFF;
tmp52[3] = (uint32_t(tmp51) >> 0) & 0xFF; tmp54[3] = (uint32_t(tmp53) >> 0) & 0xFF;
in.append(tmp52, 4); in.append(tmp54, 4);
in.append(tmp45->second[tmp50]); in.append(tmp47->second[tmp52]);
} }
} }
} }
} }
} }
in.append((char*)(&in0.SkipRemoveTs), 1); in.append((char*)(&in0.SkipRemoveTs), 1);
in.append((char*)(&in0.ProgressBarShow), 1);
} }
char *out = NULL; char *out = NULL;
int outLen = 0; int outLen = 0;
@ -184,30 +187,30 @@ RunDownload_Resp RunDownload(RunDownload_Req in0){
int outIdx = 0; int outIdx = 0;
{ {
{ {
uint32_t tmp53 = 0; uint32_t tmp55 = 0;
uint32_t tmp54 = uint32_t(uint8_t(out[outIdx+0]) << 24); uint32_t tmp56 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp55 = uint32_t(uint8_t(out[outIdx+1]) << 16); uint32_t tmp57 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp56 = uint32_t(uint8_t(out[outIdx+2]) << 8); uint32_t tmp58 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp57 = uint32_t(uint8_t(out[outIdx+3]) << 0); uint32_t tmp59 = uint32_t(uint8_t(out[outIdx+3]) << 0);
tmp53 = tmp54 | tmp55 | tmp56 | tmp57; tmp55 = tmp56 | tmp57 | tmp58 | tmp59;
outIdx+=4; outIdx+=4;
retValue.ErrMsg = std::string(out+outIdx, out+outIdx+tmp53); retValue.ErrMsg = std::string(out+outIdx, out+outIdx+tmp55);
outIdx+=tmp53; outIdx+=tmp55;
} }
retValue.IsSkipped = (bool) out[outIdx]; retValue.IsSkipped = (bool) out[outIdx];
outIdx++; outIdx++;
retValue.IsCancel = (bool) out[outIdx]; retValue.IsCancel = (bool) out[outIdx];
outIdx++; outIdx++;
{ {
uint32_t tmp58 = 0; uint32_t tmp60 = 0;
uint32_t tmp59 = uint32_t(uint8_t(out[outIdx+0]) << 24); uint32_t tmp61 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp60 = uint32_t(uint8_t(out[outIdx+1]) << 16); uint32_t tmp62 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp61 = uint32_t(uint8_t(out[outIdx+2]) << 8); uint32_t tmp63 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp62 = uint32_t(uint8_t(out[outIdx+3]) << 0); uint32_t tmp64 = uint32_t(uint8_t(out[outIdx+3]) << 0);
tmp58 = tmp59 | tmp60 | tmp61 | tmp62; tmp60 = tmp61 | tmp62 | tmp63 | tmp64;
outIdx+=4; outIdx+=4;
retValue.SaveFileTo = std::string(out+outIdx, out+outIdx+tmp58); retValue.SaveFileTo = std::string(out+outIdx, out+outIdx+tmp60);
outIdx+=tmp58; outIdx+=tmp60;
} }
} }
if (out != NULL) { if (out != NULL) {
@ -298,13 +301,13 @@ std::string GetWd(){
ParseCurl_Resp ParseCurlStr(std::string in0){ ParseCurl_Resp ParseCurlStr(std::string in0){
std::string in; std::string in;
{ {
uint32_t tmp19 = in0.length(); uint32_t tmp21 = in0.length();
char tmp20[4]; char tmp22[4];
tmp20[0] = (uint32_t(tmp19) >> 24) & 0xFF; tmp22[0] = (uint32_t(tmp21) >> 24) & 0xFF;
tmp20[1] = (uint32_t(tmp19) >> 16) & 0xFF; tmp22[1] = (uint32_t(tmp21) >> 16) & 0xFF;
tmp20[2] = (uint32_t(tmp19) >> 8) & 0xFF; tmp22[2] = (uint32_t(tmp21) >> 8) & 0xFF;
tmp20[3] = (uint32_t(tmp19) >> 0) & 0xFF; tmp22[3] = (uint32_t(tmp21) >> 0) & 0xFF;
in.append(tmp20, 4); in.append(tmp22, 4);
in.append(in0); in.append(in0);
} }
char *out = NULL; char *out = NULL;
@ -314,122 +317,126 @@ ParseCurl_Resp ParseCurlStr(std::string in0){
int outIdx = 0; int outIdx = 0;
{ {
{ {
uint32_t tmp21 = 0; uint32_t tmp23 = 0;
uint32_t tmp22 = uint32_t(uint8_t(out[outIdx+0]) << 24); uint32_t tmp24 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp23 = uint32_t(uint8_t(out[outIdx+1]) << 16); uint32_t tmp25 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp24 = uint32_t(uint8_t(out[outIdx+2]) << 8); uint32_t tmp26 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp25 = uint32_t(uint8_t(out[outIdx+3]) << 0); uint32_t tmp27 = uint32_t(uint8_t(out[outIdx+3]) << 0);
tmp21 = tmp22 | tmp23 | tmp24 | tmp25; tmp23 = tmp24 | tmp25 | tmp26 | tmp27;
outIdx+=4; outIdx+=4;
retValue.ErrMsg = std::string(out+outIdx, out+outIdx+tmp21); retValue.ErrMsg = std::string(out+outIdx, out+outIdx+tmp23);
outIdx+=tmp21; outIdx+=tmp23;
} }
{ {
{ {
uint32_t tmp26 = 0; uint32_t tmp28 = 0;
uint32_t tmp27 = uint32_t(uint8_t(out[outIdx+0]) << 24); uint32_t tmp29 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp28 = uint32_t(uint8_t(out[outIdx+1]) << 16); uint32_t tmp30 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp29 = uint32_t(uint8_t(out[outIdx+2]) << 8); uint32_t tmp31 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp30 = uint32_t(uint8_t(out[outIdx+3]) << 0); uint32_t tmp32 = uint32_t(uint8_t(out[outIdx+3]) << 0);
tmp26 = tmp27 | tmp28 | tmp29 | tmp30; tmp28 = tmp29 | tmp30 | tmp31 | tmp32;
outIdx+=4; outIdx+=4;
retValue.DownloadReq.M3u8Url = std::string(out+outIdx, out+outIdx+tmp26); retValue.DownloadReq.M3u8Url = std::string(out+outIdx, out+outIdx+tmp28);
outIdx+=tmp26; outIdx+=tmp28;
} }
retValue.DownloadReq.Insecure = (bool) out[outIdx]; retValue.DownloadReq.Insecure = (bool) out[outIdx];
outIdx++; outIdx++;
{ {
uint32_t tmp31 = 0; uint32_t tmp33 = 0;
uint32_t tmp32 = uint32_t(uint8_t(out[outIdx+0]) << 24); uint32_t tmp34 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp33 = uint32_t(uint8_t(out[outIdx+1]) << 16); uint32_t tmp35 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp34 = uint32_t(uint8_t(out[outIdx+2]) << 8); uint32_t tmp36 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp35 = uint32_t(uint8_t(out[outIdx+3]) << 0); uint32_t tmp37 = uint32_t(uint8_t(out[outIdx+3]) << 0);
tmp31 = tmp32 | tmp33 | tmp34 | tmp35; tmp33 = tmp34 | tmp35 | tmp36 | tmp37;
outIdx+=4; outIdx+=4;
retValue.DownloadReq.SaveDir = std::string(out+outIdx, out+outIdx+tmp31); retValue.DownloadReq.SaveDir = std::string(out+outIdx, out+outIdx+tmp33);
outIdx+=tmp31; outIdx+=tmp33;
} }
{ {
uint32_t tmp36 = 0; uint32_t tmp38 = 0;
uint32_t tmp37 = uint32_t(uint8_t(out[outIdx+0]) << 24); uint32_t tmp39 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp38 = uint32_t(uint8_t(out[outIdx+1]) << 16); uint32_t tmp40 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp39 = uint32_t(uint8_t(out[outIdx+2]) << 8); uint32_t tmp41 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp40 = uint32_t(uint8_t(out[outIdx+3]) << 0); uint32_t tmp42 = uint32_t(uint8_t(out[outIdx+3]) << 0);
tmp36 = tmp37 | tmp38 | tmp39 | tmp40; tmp38 = tmp39 | tmp40 | tmp41 | tmp42;
outIdx+=4; outIdx+=4;
retValue.DownloadReq.FileName = std::string(out+outIdx, out+outIdx+tmp36); retValue.DownloadReq.FileName = std::string(out+outIdx, out+outIdx+tmp38);
outIdx+=tmp36; outIdx+=tmp38;
} }
retValue.DownloadReq.RemoteName = (bool) out[outIdx];
outIdx++;
{ {
uint32_t tmp41 = uint32_t(uint8_t(out[outIdx+0]) << 24); uint32_t tmp43 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp42 = uint32_t(uint8_t(out[outIdx+1]) << 16); uint32_t tmp44 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp43 = uint32_t(uint8_t(out[outIdx+2]) << 8); uint32_t tmp45 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp44 = uint32_t(uint8_t(out[outIdx+3]) << 0); uint32_t tmp46 = uint32_t(uint8_t(out[outIdx+3]) << 0);
retValue.DownloadReq.SkipTsCountFromHead = tmp41 | tmp42 | tmp43 | tmp44; retValue.DownloadReq.SkipTsCountFromHead = tmp43 | tmp44 | tmp45 | tmp46;
outIdx+=4; outIdx+=4;
} }
{ {
uint32_t tmp45 = 0; uint32_t tmp47 = 0;
uint32_t tmp46 = uint32_t(uint8_t(out[outIdx+0]) << 24); uint32_t tmp48 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp47 = uint32_t(uint8_t(out[outIdx+1]) << 16); uint32_t tmp49 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp48 = uint32_t(uint8_t(out[outIdx+2]) << 8); uint32_t tmp50 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp49 = uint32_t(uint8_t(out[outIdx+3]) << 0); uint32_t tmp51 = uint32_t(uint8_t(out[outIdx+3]) << 0);
tmp45 = tmp46 | tmp47 | tmp48 | tmp49; tmp47 = tmp48 | tmp49 | tmp50 | tmp51;
outIdx+=4; outIdx+=4;
retValue.DownloadReq.SetProxy = std::string(out+outIdx, out+outIdx+tmp45); retValue.DownloadReq.SetProxy = std::string(out+outIdx, out+outIdx+tmp47);
outIdx+=tmp45; outIdx+=tmp47;
} }
{ {
uint32_t tmp50 = 0; uint32_t tmp52 = 0;
uint32_t tmp51 = uint32_t(uint8_t(out[outIdx+0]) << 24); uint32_t tmp53 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp52 = uint32_t(uint8_t(out[outIdx+1]) << 16); uint32_t tmp54 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp53 = uint32_t(uint8_t(out[outIdx+2]) << 8); uint32_t tmp55 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp54 = uint32_t(uint8_t(out[outIdx+3]) << 0); uint32_t tmp56 = uint32_t(uint8_t(out[outIdx+3]) << 0);
tmp50 = tmp51 | tmp52 | tmp53 | tmp54; tmp52 = tmp53 | tmp54 | tmp55 | tmp56;
outIdx+=4; outIdx+=4;
for (uint32_t tmp55 = 0; tmp55 < tmp50; tmp55++) { for (uint32_t tmp57 = 0; tmp57 < tmp52; tmp57++) {
std::string tmp56; std::string tmp58;
{ {
uint32_t tmp57 = 0; uint32_t tmp59 = 0;
uint32_t tmp58 = uint32_t(uint8_t(out[outIdx+0]) << 24); uint32_t tmp60 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp59 = uint32_t(uint8_t(out[outIdx+1]) << 16); uint32_t tmp61 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp60 = uint32_t(uint8_t(out[outIdx+2]) << 8); uint32_t tmp62 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp61 = uint32_t(uint8_t(out[outIdx+3]) << 0); uint32_t tmp63 = uint32_t(uint8_t(out[outIdx+3]) << 0);
tmp57 = tmp58 | tmp59 | tmp60 | tmp61; tmp59 = tmp60 | tmp61 | tmp62 | tmp63;
outIdx+=4; outIdx+=4;
tmp56 = std::string(out+outIdx, out+outIdx+tmp57); tmp58 = std::string(out+outIdx, out+outIdx+tmp59);
outIdx+=tmp57; outIdx+=tmp59;
} }
std::vector<std::string> tmp62; std::vector<std::string> tmp64;
{ {
uint32_t tmp63 = 0; uint32_t tmp65 = 0;
uint32_t tmp64 = uint32_t(uint8_t(out[outIdx+0]) << 24); uint32_t tmp66 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp65 = uint32_t(uint8_t(out[outIdx+1]) << 16); uint32_t tmp67 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp66 = uint32_t(uint8_t(out[outIdx+2]) << 8); uint32_t tmp68 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp67 = uint32_t(uint8_t(out[outIdx+3]) << 0); uint32_t tmp69 = uint32_t(uint8_t(out[outIdx+3]) << 0);
tmp63 = tmp64 | tmp65 | tmp66 | tmp67; tmp65 = tmp66 | tmp67 | tmp68 | tmp69;
outIdx+=4; outIdx+=4;
for (uint32_t tmp68 = 0; tmp68 < tmp63; tmp68++) { for (uint32_t tmp70 = 0; tmp70 < tmp65; tmp70++) {
std::string tmp69; std::string tmp71;
{ {
uint32_t tmp70 = 0; uint32_t tmp72 = 0;
uint32_t tmp71 = uint32_t(uint8_t(out[outIdx+0]) << 24); uint32_t tmp73 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp72 = uint32_t(uint8_t(out[outIdx+1]) << 16); uint32_t tmp74 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp73 = uint32_t(uint8_t(out[outIdx+2]) << 8); uint32_t tmp75 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp74 = uint32_t(uint8_t(out[outIdx+3]) << 0); uint32_t tmp76 = uint32_t(uint8_t(out[outIdx+3]) << 0);
tmp70 = tmp71 | tmp72 | tmp73 | tmp74; tmp72 = tmp73 | tmp74 | tmp75 | tmp76;
outIdx+=4; outIdx+=4;
tmp69 = std::string(out+outIdx, out+outIdx+tmp70); tmp71 = std::string(out+outIdx, out+outIdx+tmp72);
outIdx+=tmp70; outIdx+=tmp72;
} }
tmp62.push_back(tmp69); tmp64.push_back(tmp71);
} }
} }
retValue.DownloadReq.HeaderMap[tmp56] = tmp62; retValue.DownloadReq.HeaderMap[tmp58] = tmp64;
} }
} }
retValue.DownloadReq.SkipRemoveTs = (bool) out[outIdx]; retValue.DownloadReq.SkipRemoveTs = (bool) out[outIdx];
outIdx++; outIdx++;
retValue.DownloadReq.ProgressBarShow = (bool) out[outIdx];
outIdx++;
} }
} }
if (out != NULL) { if (out != NULL) {
@ -442,97 +449,99 @@ std::string RunDownload_Req_ToCurlStr(RunDownload_Req in0){
std::string in; std::string in;
{ {
{ {
uint32_t tmp31 = in0.M3u8Url.length(); uint32_t tmp33 = in0.M3u8Url.length();
char tmp32[4];
tmp32[0] = (uint32_t(tmp31) >> 24) & 0xFF;
tmp32[1] = (uint32_t(tmp31) >> 16) & 0xFF;
tmp32[2] = (uint32_t(tmp31) >> 8) & 0xFF;
tmp32[3] = (uint32_t(tmp31) >> 0) & 0xFF;
in.append(tmp32, 4);
in.append(in0.M3u8Url);
}
in.append((char*)(&in0.Insecure), 1);
{
uint32_t tmp33 = in0.SaveDir.length();
char tmp34[4]; char tmp34[4];
tmp34[0] = (uint32_t(tmp33) >> 24) & 0xFF; tmp34[0] = (uint32_t(tmp33) >> 24) & 0xFF;
tmp34[1] = (uint32_t(tmp33) >> 16) & 0xFF; tmp34[1] = (uint32_t(tmp33) >> 16) & 0xFF;
tmp34[2] = (uint32_t(tmp33) >> 8) & 0xFF; tmp34[2] = (uint32_t(tmp33) >> 8) & 0xFF;
tmp34[3] = (uint32_t(tmp33) >> 0) & 0xFF; tmp34[3] = (uint32_t(tmp33) >> 0) & 0xFF;
in.append(tmp34, 4); in.append(tmp34, 4);
in.append(in0.SaveDir); in.append(in0.M3u8Url);
} }
in.append((char*)(&in0.Insecure), 1);
{ {
uint32_t tmp35 = in0.FileName.length(); uint32_t tmp35 = in0.SaveDir.length();
char tmp36[4]; char tmp36[4];
tmp36[0] = (uint32_t(tmp35) >> 24) & 0xFF; tmp36[0] = (uint32_t(tmp35) >> 24) & 0xFF;
tmp36[1] = (uint32_t(tmp35) >> 16) & 0xFF; tmp36[1] = (uint32_t(tmp35) >> 16) & 0xFF;
tmp36[2] = (uint32_t(tmp35) >> 8) & 0xFF; tmp36[2] = (uint32_t(tmp35) >> 8) & 0xFF;
tmp36[3] = (uint32_t(tmp35) >> 0) & 0xFF; tmp36[3] = (uint32_t(tmp35) >> 0) & 0xFF;
in.append(tmp36, 4); in.append(tmp36, 4);
in.append(in0.SaveDir);
}
{
uint32_t tmp37 = in0.FileName.length();
char tmp38[4];
tmp38[0] = (uint32_t(tmp37) >> 24) & 0xFF;
tmp38[1] = (uint32_t(tmp37) >> 16) & 0xFF;
tmp38[2] = (uint32_t(tmp37) >> 8) & 0xFF;
tmp38[3] = (uint32_t(tmp37) >> 0) & 0xFF;
in.append(tmp38, 4);
in.append(in0.FileName); in.append(in0.FileName);
} }
in.append((char*)(&in0.RemoteName), 1);
{ {
char tmp37[4];
tmp37[0] = (uint32_t(in0.SkipTsCountFromHead) >> 24) & 0xFF;
tmp37[1] = (uint32_t(in0.SkipTsCountFromHead) >> 16) & 0xFF;
tmp37[2] = (uint32_t(in0.SkipTsCountFromHead) >> 8) & 0xFF;
tmp37[3] = (uint32_t(in0.SkipTsCountFromHead) >> 0) & 0xFF;
in.append(tmp37, 4);
}
{
uint32_t tmp38 = in0.SetProxy.length();
char tmp39[4]; char tmp39[4];
tmp39[0] = (uint32_t(tmp38) >> 24) & 0xFF; tmp39[0] = (uint32_t(in0.SkipTsCountFromHead) >> 24) & 0xFF;
tmp39[1] = (uint32_t(tmp38) >> 16) & 0xFF; tmp39[1] = (uint32_t(in0.SkipTsCountFromHead) >> 16) & 0xFF;
tmp39[2] = (uint32_t(tmp38) >> 8) & 0xFF; tmp39[2] = (uint32_t(in0.SkipTsCountFromHead) >> 8) & 0xFF;
tmp39[3] = (uint32_t(tmp38) >> 0) & 0xFF; tmp39[3] = (uint32_t(in0.SkipTsCountFromHead) >> 0) & 0xFF;
in.append(tmp39, 4); in.append(tmp39, 4);
in.append(in0.SetProxy);
} }
{ {
uint32_t tmp40 = in0.HeaderMap.size(); uint32_t tmp40 = in0.SetProxy.length();
char tmp41[4]; char tmp41[4];
tmp41[0] = (uint32_t(tmp40) >> 24) & 0xFF; tmp41[0] = (uint32_t(tmp40) >> 24) & 0xFF;
tmp41[1] = (uint32_t(tmp40) >> 16) & 0xFF; tmp41[1] = (uint32_t(tmp40) >> 16) & 0xFF;
tmp41[2] = (uint32_t(tmp40) >> 8) & 0xFF; tmp41[2] = (uint32_t(tmp40) >> 8) & 0xFF;
tmp41[3] = (uint32_t(tmp40) >> 0) & 0xFF; tmp41[3] = (uint32_t(tmp40) >> 0) & 0xFF;
in.append(tmp41, 4); in.append(tmp41, 4);
for(std::map<std::string, std::vector<std::string>>::iterator tmp42 = in0.HeaderMap.begin(); tmp42 != in0.HeaderMap.end(); ++tmp42) { in.append(in0.SetProxy);
}
{
uint32_t tmp42 = in0.HeaderMap.size();
char tmp43[4];
tmp43[0] = (uint32_t(tmp42) >> 24) & 0xFF;
tmp43[1] = (uint32_t(tmp42) >> 16) & 0xFF;
tmp43[2] = (uint32_t(tmp42) >> 8) & 0xFF;
tmp43[3] = (uint32_t(tmp42) >> 0) & 0xFF;
in.append(tmp43, 4);
for(std::map<std::string, std::vector<std::string>>::iterator tmp44 = in0.HeaderMap.begin(); tmp44 != in0.HeaderMap.end(); ++tmp44) {
{ {
uint32_t tmp43 = tmp42->first.length(); uint32_t tmp45 = tmp44->first.length();
char tmp44[4];
tmp44[0] = (uint32_t(tmp43) >> 24) & 0xFF;
tmp44[1] = (uint32_t(tmp43) >> 16) & 0xFF;
tmp44[2] = (uint32_t(tmp43) >> 8) & 0xFF;
tmp44[3] = (uint32_t(tmp43) >> 0) & 0xFF;
in.append(tmp44, 4);
in.append(tmp42->first);
}
{
uint32_t tmp45 = tmp42->second.size();
char tmp46[4]; char tmp46[4];
tmp46[0] = (uint32_t(tmp45) >> 24) & 0xFF; tmp46[0] = (uint32_t(tmp45) >> 24) & 0xFF;
tmp46[1] = (uint32_t(tmp45) >> 16) & 0xFF; tmp46[1] = (uint32_t(tmp45) >> 16) & 0xFF;
tmp46[2] = (uint32_t(tmp45) >> 8) & 0xFF; tmp46[2] = (uint32_t(tmp45) >> 8) & 0xFF;
tmp46[3] = (uint32_t(tmp45) >> 0) & 0xFF; tmp46[3] = (uint32_t(tmp45) >> 0) & 0xFF;
in.append(tmp46, 4); in.append(tmp46, 4);
for (uint32_t tmp47=0; tmp47 < tmp45; ++tmp47) { in.append(tmp44->first);
}
{
uint32_t tmp47 = tmp44->second.size();
char tmp48[4];
tmp48[0] = (uint32_t(tmp47) >> 24) & 0xFF;
tmp48[1] = (uint32_t(tmp47) >> 16) & 0xFF;
tmp48[2] = (uint32_t(tmp47) >> 8) & 0xFF;
tmp48[3] = (uint32_t(tmp47) >> 0) & 0xFF;
in.append(tmp48, 4);
for (uint32_t tmp49=0; tmp49 < tmp47; ++tmp49) {
{ {
uint32_t tmp48 = tmp42->second[tmp47].length(); uint32_t tmp50 = tmp44->second[tmp49].length();
char tmp49[4]; char tmp51[4];
tmp49[0] = (uint32_t(tmp48) >> 24) & 0xFF; tmp51[0] = (uint32_t(tmp50) >> 24) & 0xFF;
tmp49[1] = (uint32_t(tmp48) >> 16) & 0xFF; tmp51[1] = (uint32_t(tmp50) >> 16) & 0xFF;
tmp49[2] = (uint32_t(tmp48) >> 8) & 0xFF; tmp51[2] = (uint32_t(tmp50) >> 8) & 0xFF;
tmp49[3] = (uint32_t(tmp48) >> 0) & 0xFF; tmp51[3] = (uint32_t(tmp50) >> 0) & 0xFF;
in.append(tmp49, 4); in.append(tmp51, 4);
in.append(tmp42->second[tmp47]); in.append(tmp44->second[tmp49]);
} }
} }
} }
} }
} }
in.append((char*)(&in0.SkipRemoveTs), 1); in.append((char*)(&in0.SkipRemoveTs), 1);
in.append((char*)(&in0.ProgressBarShow), 1);
} }
char *out = NULL; char *out = NULL;
int outLen = 0; int outLen = 0;
@ -540,15 +549,49 @@ std::string RunDownload_Req_ToCurlStr(RunDownload_Req in0){
std::string retValue; std::string retValue;
int outIdx = 0; int outIdx = 0;
{ {
uint32_t tmp50 = 0; uint32_t tmp52 = 0;
uint32_t tmp51 = uint32_t(uint8_t(out[outIdx+0]) << 24); uint32_t tmp53 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp52 = uint32_t(uint8_t(out[outIdx+1]) << 16); uint32_t tmp54 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp53 = uint32_t(uint8_t(out[outIdx+2]) << 8); uint32_t tmp55 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp54 = uint32_t(uint8_t(out[outIdx+3]) << 0); uint32_t tmp56 = uint32_t(uint8_t(out[outIdx+3]) << 0);
tmp50 = tmp51 | tmp52 | tmp53 | tmp54; tmp52 = tmp53 | tmp54 | tmp55 | tmp56;
outIdx+=4; outIdx+=4;
retValue = std::string(out+outIdx, out+outIdx+tmp50); retValue = std::string(out+outIdx, out+outIdx+tmp52);
outIdx+=tmp50; outIdx+=tmp52;
}
if (out != NULL) {
free(out);
}
return retValue;
}
std::string GetFileNameFromUrl(std::string in0){
std::string in;
{
uint32_t tmp5 = in0.length();
char tmp6[4];
tmp6[0] = (uint32_t(tmp5) >> 24) & 0xFF;
tmp6[1] = (uint32_t(tmp5) >> 16) & 0xFF;
tmp6[2] = (uint32_t(tmp5) >> 8) & 0xFF;
tmp6[3] = (uint32_t(tmp5) >> 0) & 0xFF;
in.append(tmp6, 4);
in.append(in0);
}
char *out = NULL;
int outLen = 0;
Go2cppFn_GetFileNameFromUrl((char *)in.data(), in.length(), &out, &outLen);
std::string retValue;
int outIdx = 0;
{
uint32_t tmp7 = 0;
uint32_t tmp8 = uint32_t(uint8_t(out[outIdx+0]) << 24);
uint32_t tmp9 = uint32_t(uint8_t(out[outIdx+1]) << 16);
uint32_t tmp10 = uint32_t(uint8_t(out[outIdx+2]) << 8);
uint32_t tmp11 = uint32_t(uint8_t(out[outIdx+3]) << 0);
tmp7 = tmp8 | tmp9 | tmp10 | tmp11;
outIdx+=4;
retValue = std::string(out+outIdx, out+outIdx+tmp7);
outIdx+=tmp7;
} }
if (out != NULL) { if (out != NULL) {
free(out); free(out);

View File

@ -13,11 +13,13 @@ struct RunDownload_Req{
bool Insecure; bool Insecure;
std::string SaveDir; std::string SaveDir;
std::string FileName; std::string FileName;
bool RemoteName;
int32_t SkipTsCountFromHead; int32_t SkipTsCountFromHead;
std::string SetProxy; std::string SetProxy;
std::map<std::string, std::vector<std::string>> HeaderMap; std::map<std::string, std::vector<std::string>> HeaderMap;
bool SkipRemoveTs; bool SkipRemoveTs;
RunDownload_Req(): Insecure(false),SkipTsCountFromHead(0),SkipRemoveTs(false){} bool ProgressBarShow;
RunDownload_Req(): Insecure(false),RemoteName(false),SkipTsCountFromHead(0),SkipRemoveTs(false),ProgressBarShow(false){}
}; };
struct RunDownload_Resp{ struct RunDownload_Resp{
std::string ErrMsg; std::string ErrMsg;
@ -42,6 +44,7 @@ struct ParseCurl_Resp{
}; };
ParseCurl_Resp ParseCurlStr(std::string in0); ParseCurl_Resp ParseCurlStr(std::string in0);
std::string RunDownload_Req_ToCurlStr(RunDownload_Req in0); std::string RunDownload_Req_ToCurlStr(RunDownload_Req in0);
std::string GetFileNameFromUrl(std::string in0);
#include <QObject> #include <QObject>
#include <QVector> #include <QVector>

View File

@ -129,3 +129,15 @@ void MainWindow::on_pushButton_curlMode_clicked()
ui->checkBox_Insecure->setChecked(resp.DownloadReq.Insecure); ui->checkBox_Insecure->setChecked(resp.DownloadReq.Insecure);
this->m_HeaderMap = resp.DownloadReq.HeaderMap; this->m_HeaderMap = resp.DownloadReq.HeaderMap;
} }
void MainWindow::on_lineEdit_M3u8Url_textChanged(const QString &arg1)
{
if (ui->lineEdit_FileName->text().isEmpty()==false) {
return;
}
QString fileName = QString::fromStdString(GetFileNameFromUrl(arg1.toStdString()));
if (fileName.isEmpty()) {
return;
}
ui->lineEdit_FileName->setPlaceholderText(fileName);
}

View File

@ -25,6 +25,8 @@ private slots:
void on_pushButton_curlMode_clicked(); void on_pushButton_curlMode_clicked();
void on_lineEdit_M3u8Url_textChanged(const QString &arg1);
private: private:
Ui::MainWindow *ui; Ui::MainWindow *ui;
RunOnUiThread m_syncUi; RunOnUiThread m_syncUi;