Skip to content

Commit

Permalink
V2.0重磅更新,所见即所得!
Browse files Browse the repository at this point in the history
  • Loading branch information
putyy committed Jul 18, 2024
1 parent ca718de commit 511111f
Show file tree
Hide file tree
Showing 9 changed files with 294 additions and 314 deletions.
69 changes: 29 additions & 40 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,56 +1,45 @@
# res-downloader
#### 爱享素材下载器

💪 支持视频、音频、图片、m3u8等网络资源下载
📦 支持微信视频号、小程序、抖音、快手、小红书、酷狗音乐、qq音乐等网络资源下载
🍊 支持设置代理以获取特殊网络下的资源
# V2.0重磅更新,所见即所得!
## res-downloader(爱享素材下载器)
🖥️ 支持Win10、Win11、Mac
🌐 支持视频、音频、图片、m3u8等网络资源下载
💪 支持微信视频号、小程序、抖音、快手、小红书、酷狗音乐、qq音乐等网络资源下载
👼 支持设置代理以获取特殊网络下的资源

## 软件下载
🆕 [github下载](https://github.com/putyy/res-downloader/releases)
🆕 [蓝奏云下载 密码:9vs5](https://wwjv.lanzoum.com/b04wgtfyb)


## 二次开发
> ps: 打包慢的问题可以参考 https://www.putyy.com/articles/87
```sh
git clone https://github.com/putyy/res-downloader

cd res-downloader

yarn install

yarn run dev

# 打包mac
yarn run build --universal --mac

# 打包win
yarn run build --win
```

## 使用方法
> 0. 安装一定要同意安装证书文件,安装一定要同意安装证书文件,安装一定要同意安装证书文件!
> 1. 打开本软件
> 2. 软件首页选择要获取的资源类型(默认选中的视频)
> 3. 打开要捕获的源, 如:视频号、网页、小程序等等
> 4. 返回软件首页即可看到要下载的资源
## 常见问题
> 1. 无法拦截获取
> > 手动检测系统代理是否设置正确 本软件代理地址: 127.0.0.1:8899
> 2. 关闭软件后无法正常上网
> > 手动关闭系统代理设置
> 3. 视频号抓取流程
> > 将需要下载的视频发给好友或者文件助手 再打开即可拦截,通常会出现解密下载按钮
> >
> > 大视频可以复制链接通过其他工具加速下载,然后再通过对应的视频操作项进行"视频解密"
> 4. 返回软件首页即可看到资源列表
## 软件截图
![](public/show.webp)

## 实现原理
> 通过代理网络抓包拦截响应,筛选出有用的资源,同fiddler、charles等抓包软件、浏览器F12打开控制也能达到目的,只不过这些软件需要手动进行筛选,对于小白用户上手还是有点难度,所以就有了本项目这样的软件。
## 常见问题
下载慢、大视频下载失败
> 推荐使用如下工具加速下载,视频号可以下载完成后再到对应视频操作项选择 “视频解密(视频号)” 按钮
>> [Neat Download Manager](https://www.neatdownloadmanager.com/index.php/en/)[Motrix](https://motrix.app/download)等软件进行下载
Win7无法使用
> 软件不支持,也无计划支持
打开本软件,无法正常拦截获取
> 检查系统代理是否正确设置 代理地址:127.0.0.1 端口:8899
## 参考项目
关闭软件后无法正常上网
> 手动关闭系统代理设置
- [WeChatVideoDownloader](https://github.com/lecepin/WeChatVideoDownloader) 原项目是react写的,本项目参考原项目用vue3重写了一下,核心逻辑没什么变化,主要是增加了一些新的功能,再次感谢!
打开本软件后无法上网
> 手动删除安装标识锁文件,之后再打开软件会进行检查证书是否正确安装
>> MAC: /Users/你的用户名称/.res-downloader@putyy/res-downloader-installed.lock
>> Win: C:\Users\Admin\.res-downloader@putyy/res-downloader-installed.lock
#### 更多问题见: [issues](https://github.com/putyy/res-downloader/issues)[爱享论坛](https://s.gowas.cn/d/4089-quan-ping-tai-zi-yuan-xia-zai-ruan-jian-zui-xin-ban-v106/171)

## 免责声明
本软件用于学习研究使用,若因使用本软件造成的一切法律责任均与本人无关!
```
38 changes: 17 additions & 21 deletions electron/main/ipc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,12 @@ import {downloadFile, decodeWxFile, suffix} from './utils'
// @ts-ignore
import {hexMD5} from '../../src/common/md5'
import fs from "fs"
import CryptoJS from 'crypto-js'
import {floor} from "lodash"

let getMac = require("getmac").default
let win: BrowserWindow
let previewWin: BrowserWindow
let isStartProxy = false

let aesKey = "as5d45as4d6qe6wqfar6gt4749q6y7w6h34v64tv7t37ty5qwtv6t6qv"

export default function initIPC() {

ipcMain.handle('invoke_app_is_init', async (event, arg) => {
Expand Down Expand Up @@ -67,16 +63,15 @@ export default function initIPC() {
return {is_file: res, fileName: `${save_path}/${fileName}.mp4`}
})

ipcMain.handle('invoke_down_file', async (event, {data, save_path, description}) => {
let down_url = data.down_url
ipcMain.handle('invoke_down_file', async (event, {data, save_path}) => {

let down_url = data.url
if (!down_url) {
return false
}

let fileName = description ? description.replace(/[^a-zA-Z\u4e00-\u9fa5]/g, '') : hexMD5(down_url);
let fileName = data?.description ? data.description.replace(/[^a-zA-Z0-9\u4e00-\u9fa5]/g, '') : hexMD5(down_url);
let save_path_file = `${save_path}/${fileName}` + suffix(data.type)
if (process.platform === 'win32'){
if (process.platform === 'win32') {
save_path_file = `${save_path}\\${fileName}` + suffix(data.type)
}

Expand All @@ -92,20 +87,10 @@ export default function initIPC() {
win?.webContents.send('on_down_file_schedule', {schedule: floor(res * 100)})
}
).catch(err => {
// console.log("err:", err)
return false
})
})

ipcMain.handle('invoke_get_mac', async (event) => {
let mac = getMac()
if (mac === "") {
return ""
}
return CryptoJS.AES.encrypt(mac, CryptoJS.enc.Hex.parse(aesKey), {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
}).ciphertext.toString()
})
});

ipcMain.handle('invoke_resources_preview', async (event, {url}) => {
if (!url) {
Expand All @@ -128,6 +113,17 @@ export default function initIPC() {
shell.showItemInFolder(save_path)
})

ipcMain.handle('invoke_file_del', (event, {url_sign}) => {
if (url_sign === "all"){
global.videoList = {}
return
}
if (url_sign) {
delete global.videoList[url_sign]
return
}
})

ipcMain.handle('invoke_window_restart', (event) => {
app.relaunch()
app.exit()
Expand Down
Loading

0 comments on commit 511111f

Please sign in to comment.