Skip to content

Commit 6d27051

Browse files
committed
优化
1 parent f92d898 commit 6d27051

File tree

22 files changed

+131
-138
lines changed

22 files changed

+131
-138
lines changed

.DS_Store

0 Bytes
Binary file not shown.

README.md

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,22 @@
1-
## res-downloader V3全新版来袭,更快了!
1+
## res-downloader V3全新版来袭、全新实现,支持更多设置,视频号、直播流、m3u8预览等!
22
### 爱享素材下载器【[加入群聊](https://qm.qq.com/q/HS8FdhpZCK)
33
🎯 基于Go + [wails](https://github.com/wailsapp/wails)
44
📦 操作简单、可获取不同类型资源
5-
65
🖥️ 支持Windows、Mac、Linux
76
🌐 支持视频、音频、图片、m3u8、直播流等常见网络资源
87
💪 支持微信视频号、小程序、抖音、快手、小红书、酷狗音乐、qq音乐等网络资源下载
9-
👼 支持设置代理以获取特殊网络下的资源
8+
👼 支持设置代理以获取特殊网络下的资源
109

11-
## 软件下载
10+
## 软件下载(Win7下载2.3.0版本)
1211
🆕 [github下载](https://github.com/putyy/res-downloader/releases)
13-
🆕 [蓝奏云下载 密码:9vs5](https://wwjv.lanzoum.com/b04wgtfyb)
12+
🆕 [蓝奏云下载 密码:9vs5](https://wwjv.lanzoum.com/b04wgtfyb)
1413

1514
## 使用方法
16-
> 0. 安装时一定要同意安装证书文件、一定要允许网络访问
17-
> 1. 打开本软件 软件首页左上角点击 “启动代理”
18-
> 2. 软件首页选择要获取的资源类型(默认选中的全部)
19-
> 3. 打开要捕获的源, 如:视频号、网页、小程序等等
20-
> 4. 返回软件首页即可看到资源列表
15+
> 0. 安装时一定要同意安装证书文件、一定要允许网络访问
16+
> 1. 打开本软件 软件首页左上角点击 “启动代理”
17+
> 2. 软件首页选择要获取的资源类型(默认选中的全部)
18+
> 3. 打开要捕获的源, 如:视频号、网页、小程序等等
19+
> 4. 返回软件首页即可看到资源列表
2120
2221
## 软件截图
2322
![](preview/show.webp)

build/.DS_Store

0 Bytes
Binary file not shown.

core/app.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ func (a *App) OpenSystemProxy() bool {
166166
a.IsProxy = true
167167
return true
168168
}
169-
DialogErr("设置失败")
169+
DialogErr("设置失败" + err.Error())
170170
return false
171171
}
172172

core/downloader.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"net/url"
1010
"os"
1111
"path/filepath"
12+
"strings"
1213
"sync"
1314
)
1415

@@ -68,7 +69,7 @@ func (fd *FileDownloader) init() error {
6869
fd.Referer = parsedURL.Scheme + "://" + parsedURL.Host + "/"
6970
}
7071

71-
if globalConfig.DownloadProxy && globalConfig.UpstreamProxy != "" {
72+
if globalConfig.DownloadProxy && globalConfig.UpstreamProxy != "" && !strings.Contains(globalConfig.UpstreamProxy, globalConfig.Port) {
7273
proxyURL, err := url.Parse(globalConfig.UpstreamProxy)
7374
if err == nil {
7475
fd.ProxyUrl = proxyURL

core/http.go

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,11 @@ type ResponseData struct {
2020
Data interface{} `json:"data"`
2121
}
2222

23-
type HttpServer struct {
24-
broadcast chan []byte
25-
}
23+
type HttpServer struct{}
2624

2725
func initHttpServer() *HttpServer {
2826
if httpServerOnce == nil {
29-
httpServerOnce = &HttpServer{
30-
broadcast: make(chan []byte),
31-
}
27+
httpServerOnce = &HttpServer{}
3228
}
3329
return httpServerOnce
3430
}
@@ -38,7 +34,6 @@ func (h *HttpServer) run() {
3834
if err != nil {
3935
log.Fatalf("无法启动监听: %v", err)
4036
}
41-
go h.handleMessages()
4237
fmt.Println("服务已启动,监听 http://" + globalConfig.Host + ":" + globalConfig.Port)
4338
if err := http.Serve(listener, proxyOnce.Proxy); err != nil {
4439
fmt.Printf("服务器异常: %v", err)
@@ -90,13 +85,6 @@ func (h *HttpServer) preview(w http.ResponseWriter, r *http.Request) {
9085
return
9186
}
9287

93-
func (h *HttpServer) handleMessages() {
94-
for {
95-
msg := <-h.broadcast
96-
runtime.EventsEmit(appOnce.ctx, "event", string(msg))
97-
}
98-
}
99-
10088
func (h *HttpServer) send(t string, data interface{}) {
10189
jsonData, err := json.Marshal(map[string]interface{}{
10290
"type": t,
@@ -106,7 +94,7 @@ func (h *HttpServer) send(t string, data interface{}) {
10694
fmt.Println("Error converting map to JSON:", err)
10795
return
10896
}
109-
h.broadcast <- jsonData
97+
runtime.EventsEmit(appOnce.ctx, "event", string(jsonData))
11098
}
11199

112100
func (h *HttpServer) writeJson(w http.ResponseWriter, data ResponseData) {
@@ -179,13 +167,13 @@ func (h *HttpServer) openFolder(w http.ResponseWriter, r *http.Request) {
179167
case "linux":
180168
// linux
181169
// 尝试使用不同的文件管理器
182-
cmd = exec.Command("nautilus", filePath) // 尝试Nautilus
170+
cmd = exec.Command("nautilus", filePath)
183171
if err := cmd.Start(); err != nil {
184-
cmd = exec.Command("thunar", filePath) // 尝试Thunar
172+
cmd = exec.Command("thunar", filePath)
185173
if err := cmd.Start(); err != nil {
186-
cmd = exec.Command("dolphin", filePath) // 尝试Dolphin
174+
cmd = exec.Command("dolphin", filePath)
187175
if err := cmd.Start(); err != nil {
188-
cmd = exec.Command("pcmanfm", filePath) // 尝试PCManFM
176+
cmd = exec.Command("pcmanfm", filePath)
189177
if err := cmd.Start(); err != nil {
190178
globalLogger.err(err)
191179
h.writeJson(w, ResponseData{Code: 0, Message: err.Error()})

core/middleware.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@ func Middleware(next http.Handler) http.Handler {
1515
}
1616

1717
func HandleApi(w http.ResponseWriter, r *http.Request) bool {
18-
w.Header().Set("Access-Control-Allow-Origin", "*")
19-
w.Header().Set("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS")
20-
w.Header().Set("Access-Control-Allow-Headers", "Content-Type")
21-
if r.Method == http.MethodOptions {
22-
w.WriteHeader(http.StatusNoContent)
23-
return true
24-
}
2518
if strings.HasPrefix(r.URL.Path, "/api") {
19+
w.Header().Set("Access-Control-Allow-Origin", "*")
20+
w.Header().Set("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS")
21+
w.Header().Set("Access-Control-Allow-Headers", "Content-Type")
22+
if r.Method == http.MethodOptions {
23+
w.WriteHeader(http.StatusNoContent)
24+
return true
25+
}
2626
switch r.URL.Path {
2727
case "/api/preview":
2828
httpServerOnce.preview(w, r)

core/proxy.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ func (p *Proxy) setTransport() {
9595
IdleConnTimeout: 30 * time.Second,
9696
}
9797

98-
if globalConfig.UpstreamProxy != "" && globalConfig.OpenProxy {
98+
if globalConfig.UpstreamProxy != "" && globalConfig.OpenProxy && !strings.Contains(globalConfig.UpstreamProxy, globalConfig.Port) {
9999
proxyURL, err := url.Parse(globalConfig.UpstreamProxy)
100100
if err == nil {
101101
transport.Proxy = http.ProxyURL(proxyURL)

core/system_darwin.go

Lines changed: 51 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -5,94 +5,88 @@ package core
55
import (
66
"bytes"
77
"fmt"
8-
"log"
9-
"net"
108
"os/exec"
119
"strings"
1210
)
1311

14-
func (s *SystemSetup) getActiveInterface() (string, error) {
15-
interfaces, err := net.Interfaces()
12+
func (s *SystemSetup) getNetworkServices() ([]string, error) {
13+
cmd := exec.Command("networksetup", "-listallnetworkservices")
14+
output, err := cmd.Output()
1615
if err != nil {
17-
return "", err
18-
}
19-
20-
for _, inter := range interfaces {
21-
if inter.Flags&net.FlagUp != 0 && inter.Flags&net.FlagLoopback == 0 {
22-
return inter.Name, nil
23-
}
16+
return nil, fmt.Errorf("failed to execute command: %v", err)
2417
}
25-
return "", fmt.Errorf("no active network interface found")
26-
}
2718

28-
func (s *SystemSetup) getNetworkServiceName(interfaceName string) (string, error) {
29-
cmd := exec.Command("networksetup", "-listallhardwareports")
30-
var out bytes.Buffer
31-
cmd.Stdout = &out
32-
if err := cmd.Run(); err != nil {
33-
return "", err
34-
}
19+
services := strings.Split(string(output), "\n")
3520

36-
output := out.String()
37-
lines := strings.Split(output, "\n")
38-
var serviceName string
39-
for _, line := range lines {
40-
if strings.Contains(line, "Hardware Port:") {
41-
serviceName = strings.TrimSpace(strings.Split(line, ":")[1])
42-
}
43-
if strings.Contains(line, "Device: "+interfaceName) {
44-
return serviceName, nil
21+
var validServices []string
22+
for _, service := range services {
23+
service = strings.TrimSpace(service)
24+
if service != "" && !strings.Contains(service, "*") && !strings.Contains(service, "Serial Port") {
25+
validServices = append(validServices, service)
4526
}
4627
}
47-
return "", fmt.Errorf("no matching network service found for interface %s", interfaceName)
28+
29+
return validServices, nil
4830
}
4931

5032
func (s *SystemSetup) setProxy() error {
51-
interfaceName, err := s.getActiveInterface()
52-
if err != nil {
53-
return err
54-
}
55-
56-
serviceName, err := s.getNetworkServiceName(interfaceName)
33+
services, err := s.getNetworkServices()
5734
if err != nil {
5835
return err
5936
}
60-
commands := [][]string{
61-
{"networksetup", "-setwebproxy", serviceName, "127.0.0.1", globalConfig.Port},
62-
{"networksetup", "-setsecurewebproxy", serviceName, "127.0.0.1", globalConfig.Port},
37+
if len(services) == 0 {
38+
return fmt.Errorf("find to Network failed")
6339
}
6440

65-
for _, cmd := range commands {
66-
if err := exec.Command(cmd[0], cmd[1:]...).Run(); err != nil {
67-
return err
41+
is := false
42+
for _, serviceName := range services {
43+
if err := exec.Command("networksetup", "-setwebproxy", serviceName, "127.0.0.1", globalConfig.Port).Run(); err != nil {
44+
fmt.Println(err)
45+
} else {
46+
is = true
47+
}
48+
if err := exec.Command("networksetup", "-setsecurewebproxy", serviceName, "127.0.0.1", globalConfig.Port).Run(); err != nil {
49+
fmt.Println(err)
50+
} else {
51+
is = true
6852
}
6953
}
70-
return nil
71-
}
7254

73-
func (s *SystemSetup) unsetProxy() error {
74-
interfaceName, err := s.getActiveInterface()
75-
if err != nil {
76-
return err
55+
if is {
56+
return nil
7757
}
7858

79-
serviceName, err := s.getNetworkServiceName(interfaceName)
59+
return fmt.Errorf("find to Network failed")
60+
}
61+
62+
func (s *SystemSetup) unsetProxy() error {
63+
services, err := s.getNetworkServices()
8064
if err != nil {
8165
return err
8266
}
83-
commands := [][]string{
84-
{"networksetup", "-setwebproxystate", serviceName, "off"},
85-
{"networksetup", "-setsecurewebproxystate", serviceName, "off"},
67+
if len(services) == 0 {
68+
return fmt.Errorf("find to Network failed")
8669
}
8770

88-
for _, cmd := range commands {
89-
if err := exec.Command(cmd[0], cmd[1:]...).Run(); err != nil {
90-
log.Println("UnsetProxy failed:", err)
91-
return err
71+
is := false
72+
for _, serviceName := range services {
73+
if err := exec.Command("networksetup", "-setwebproxystate", serviceName, "off").Run(); err != nil {
74+
fmt.Println(err)
75+
} else {
76+
is = true
9277
}
78+
if err := exec.Command("networksetup", "-setsecurewebproxystate", serviceName, "off").Run(); err != nil {
79+
fmt.Println(err)
80+
} else {
81+
is = true
82+
}
83+
}
84+
85+
if is {
86+
return nil
9387
}
9488

95-
return nil
89+
return fmt.Errorf("find to Network failed")
9690
}
9791

9892
func (s *SystemSetup) installCert() (string, error) {

frontend/src/App.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
import NaiveProvider from '@/components/NaiveProvider.vue'
1313
import {darkTheme, lightTheme, zhCN} from 'naive-ui'
1414
import {useIndexStore} from "@/stores"
15-
import {computed, onMounted, watch} from "vue"
16-
import type {wsType} from "@/types/ws"
15+
import {computed, onMounted} from "vue"
1716
import {useEventStore} from "@/stores/event"
17+
import {appType} from "@/types/app";
1818
1919
const store = useIndexStore()
2020
const eventStore = useEventStore()
@@ -33,7 +33,7 @@ onMounted(async () => {
3333
eventStore.init()
3434
eventStore.addHandle({
3535
type: "message",
36-
event: (res: wsType.Message)=>{
36+
event: (res: appType.Message)=>{
3737
switch (res?.code) {
3838
case 0:
3939
window?.$message?.error(res.message)

0 commit comments

Comments
 (0)