点击
0
%
暂不考虑机会
AI 落地实践者前端开发经历
← 返回随笔

朋友想批量保存微信视频号内容,我把开源下载器改成了批量导出工具

朋友想批量保存微信视频号内容,我把开源下载器改成了批量导出工具

偶然听朋友提到一个需求:微信视频号里的内容都能看,但想把某个作者的视频批量保存下来,同时留下每条内容的点赞、收藏、评论和转发数,就比较麻烦了。

一个作者只有几条内容时,怎么处理都行。如果已经发了几百条,靠手工一条条保存,光是复制链接就很折腾。

我先去 GitHub 找现成方案,找到了开源项目 ltaoo/wx_channels_download。

原项目 README 里还提供了一个配套的在线解析网站。

我拿一条视频号分享链接试了一下。把链接粘贴进去,网站能返回视频信息和下载地址,处理一两条很方便。

在线解析工具实测:输入分享链接后返回视频信息和下载地址

但它有一个很实际的限制:需要先拿到每条内容的标准分享链接。几百条内容就要复制几百次,而且有些视频根本没有链接。

所以我又顺着源码继续往下看。我发现,这个项目除了在线解析,还提供了一套本地运行方式,可以直接读取视频号作者主页的分页内容。这就意味着,不用再一条条复制分享链接,批量处理是可以做的。

这个本地工具是怎么工作的

本地工具启动后,会在电脑上运行 API 服务和代理服务。用白话讲,就是在自己电脑里搭一个临时中转站。

API 服务负责接收下载和导出任务,代理服务负责识别电脑版微信里的视频号页面。程序会临时设置系统代理,让微信的相关页面经过这个中转站,再把“批量任务”按钮加到作者主页上。

当我们打开一个作者主页时,微信页面本身就会分页获取这个作者的 Feed 数据。Feed 可以简单理解成“这一页内容的资料包”,里面已经有视频 ID、标题、发布时间、点赞数、收藏数、评论数、转发数、时长和当前可用的播放信息。

工具做的事,是把页面已经拿到的这些分页数据整理起来,交给本地服务下载、去重和导出。

我在原项目上补了什么

这次二次开发有一个很好的起点。原项目已经做好了本地代理、证书安装、微信页面注入、单条视频捕获和下载,也有作者主页的批量下载雏形。

这些基础能力解决了接入微信视频号的问题。在这个基础上,我重新梳理了作者主页的批量流程,把原来更偏“下载视频”的功能,做成了一个可以选数量、跳过重复内容、继续上次进度、累计导出数据的批量任务。

接下来,我把实际使用时容易卡住的几个细节逐个处理了:

  • 选 20 条时,准确处理 20 条新内容。
  • 已经下载的视频可以跳过,也可以重新下载。
  • 第二次运行时,可以接着上一次的进度继续。
  • 多次导出始终维护同一份累计数据。
  • Windows 和 macOS 用户不用自己配开发环境。

数量、导出内容、重复处理和完成行为放在“批量任务”弹窗里,续跑、累计数据和文件整理由本地程序处理。

视频号作者主页里的批量任务设置

现在可以怎么选

数量可以选 20、50、100、全部,也可以自定义。

任务内容有三种:只导出数据、导出视频和数据、只导出视频。已经下载过的内容,可以选择跳过,也可以重新下载。当前选定的数量处理完后,可以自动停止,也可以继续下一批。

这里有一个我反复调整过的细节:选择“跳过”时,已下载视频不会占用本次数量。

例如第一次先处理 5 条,第二次选 20 条,程序会跳过前 5 条,继续处理第 6—25 条。最后累计数据文件里是 25 条,而不是只多出 15 条。

下载失败的任务不会被当成“已下载”。想让第二次继续上一次进度,不要清空下载记录。

下载和启动

因为知识星球长文章没看到附件上传入口,所以我把三个安装包放到了百度网盘:点击下载,提取码 9999。

按电脑的系统和芯片下载对应版本:

  • macOS Apple 芯片:wechat_channels_download_mac_apple.zip
  • macOS Intel 芯片:wechat_channels_download_mac_intel.zip
  • Windows 64 位:wechat_channels_download_win.zip

Windows

Windows 用户解压安装包后,双击 wx_video_download.exe。系统弹出管理员权限确认时,点击允许。

Windows 解压后的程序目录,双击 wx_video_download.exe

看到 API 服务、代理服务启动成功,并提示“使用期间不要关闭终端”,就可以打开电脑版微信了。

Windows 端服务启动成功

macOS

Apple 芯片和 Intel 芯片的操作方式一样:解压对应的安装包,双击 start.command 启动。

macOS 解压后双击 start.command 启动

终端会请求 Mac 登录密码。输入时屏幕上不会显示字符,这是正常现象,输完按回车就行。

macOS 终端输入登录密码,输完后按回车

看到 API 服务、代理服务启动成功,就说明程序可以使用了。

macOS 端 API 服务和代理服务启动成功

使用期间不要关闭终端窗口。然后打开电脑版微信,进入一个视频号作者主页,就能看到“批量任务”按钮。

使用完后,在终端里按 ctrl + C,让程序正常关闭并恢复系统代理。不要直接强制退出。

视频和数据怎么保存

视频和数据会下载到系统的“下载”目录,每个视频号使用一个独立文件夹:

下载/视频号名称/

这个作者的数据文件保存在:

下载/视频号名称/作者名_视频数据.csv

下载目录里的视频和累计数据文件

累计数据文件里的字段和示例数据

几个常见问题

macOS 为什么要输入密码?

程序需要安装或使用本地证书,并临时设置系统代理,所以需要管理员权限。输入的是 Mac 登录密码,终端不显示字符是系统的正常安全设计。

为什么退出后网络会短暂卡顿?

运行期间,HTTP/HTTPS 流量会临时经过电脑上的本地代理。程序退出时会关闭代理,微信和浏览器已有的连接需要重新建立,所以可能会短暂卡一下。

建议启动一次后把当前需要的任务做完,再统一退出,不要每导一批就重启程序。

第二次导出怎么接着上一次?

选择“导出视频+数据”和“跳过”,同时保留下载记录。程序会识别已经处理过的视频,接着往后走。

如果只选“导出数据”,因为没有下载记录作为进度,下次仍然会从前面开始读取。不过累计数据文件会按视频 ID 去重,不会反复增加相同的行。

一次可以直接选“全部”吗?

不建议一上来就对大几百上千条内容选择“全部”。先用小号测试,数量选 20 或 50,确认页面、下载和数据文件都正常,再慢慢增加。

没有人能保证这类操作零风险。不要在短时间内反复刷新、导出和重新下载。如果微信出现验证、异常登录或风险提示,立即停止。尽量使用小号测试,也只处理自己有权使用的内容。

朋友想批量保存微信视频号内容,我把开源下载器改成了批量导出工具 - RuHu.Xu