☰
wx_channels_download v260118:在 NAS 上部署远程下载服务,统一管理零散的本地下载
2026/9/25 12:06:58 网站建设 项目流程
  • 桌面应用
  • 视频
  • 网络
  • MCP 服务

【免费下载链接】wx_channels_download

微信视频号下载器

项目地址:https://gitcode.com/gh_mirrors/wx/wx_channels_download
点击查看免费下载

v260118 是微信视频号下载器 wx_channels_download 的一次重要版本更新,核心亮点是引入了「远程下载服务」能力:把下载器以server模式部署到 NAS 上,本地电脑通过download.remoteServer配置把下载任务提交到 NAS 执行,视频文件直接落在 NAS 中,彻底解决"在不同电脑下载导致文件零散"的问题。本文以该版本发布说明为主体,结合仓库源码与配置模板,完整讲解server命令用法、远程下载配置、任务列表分页、批量下载改进等新能力,以及公众号 RSS 服务的调整预告。

版本更新总览:新功能与问题修复

本次版本的主要变更如下:

新功能

  • 将原先的mp命令改为server命令,用于在 NAS / Linux 服务器上以服务方式运行下载器,提供 API 服务;
  • 增加download.remoteServer配置,开启后下载请求会被转发到该远程服务,由远程服务完成视频下载;
  • 公众号管理页面刷新后仍保留当前筛选项;
  • 图片类视频(图集)也支持在后台下载了;
  • 批量下载过程中支持中断创建下载任务(即批量任务可以中途停止继续创建);
  • 下载任务列表接口支持分页。

问题修复

  • 修复了公众号管理页面状态筛选项不生效的问题;
  • 修复了批量下载时存在图片类视频会中断下载的问题;
  • 修复了批量下载存在同名视频时,实际下载到的视频数和展示的下载任务数不一致的问题。

以下围绕本次更新最重要的能力——NAS 远程下载服务——展开,并逐项说明配套改进。

在 NAS 上部署下载服务

第一步:上传二进制并以 server 模式运行

下载linux版本的wx_channels_download二进制,上传到 NAS 上,然后执行:

./wx_channels_download server -d

其中-d表示以守护进程(daemon)模式运行,服务在后台常驻,终端退出后下载服务仍会继续工作。

server命令用于在 Linux 服务器上运行,提供 API 服务,其完整的子命令体系定义在 cmd/server.go:

命令说明
server以前台方式运行服务(终端退出后服务随之关闭),加-d可守护进程化
server status查看服务状态,输出进程 PID、API 端点与代理端点的监听情况,-q参数仅返回退出码
server stop停止服务(读取 PID 文件并结束进程,等待最多 8 秒)
server restart重启服务

关于server子命令的详细用法(前台运行、查看状态、停止、重启)可参考 服务器模式文档。

从源码看,server命令通过 PID 文件机制管理进程生命周期:write_server_pidfile 会把当前进程 PID 写入<工作目录>/wx_video_download.pid,server stop读取该 PID 后调用system.TerminateProcess结束进程;server status则会实际探测api.hostname/api.port(默认127.0.0.1:2022)和proxy.port(默认2023)端口是否在监听,从而判断服务是否真正就绪(见 status_command)。

建议修改 NAS 上config.yaml中的下载目录为./downloads,便于集中管理下载文件。

第二步:本地配置 remoteServer 指向 NAS

在本地电脑的config.yaml中增加如下配置:

download: remoteServer: enabled: true protocol: "http" hostname: "192.168.1.118" port: 2022

各字段含义如下(与 配置模板 及 下载配置文档 一致):

配置项说明默认值
download.remoteServer.enabled是否启用远程服务下载false
download.remoteServer.protocol远程服务协议http
download.remoteServer.hostnameNAS 服务的内网地址192.168.1.2(示例)
download.remoteServer.port远程服务端口,与 NAS 上api.port对应2022

上例中的192.168.1.118是发布说明作者自己的 NAS 内网地址,请替换为你实际部署环境中的地址。修改后启动本地下载器,点击视频号页面上的下载按钮,任务就会被提交到 NAS 上执行,视频文件直接保存到 NAS 的下载目录中。

远程下载的底层实现原理

远程下载并非"本地下载后上传",而是通过代理插件把视频号相关的网络请求直接转发到远端服务。在 internal/application/start.go 中,当检测到download.remoteServer.enabled为true时,会构造一个proxy.Plugin,将匹配weixin110.qq.com的请求转发到配置的目标服务器:

if cfg.GetBool("download.remoteServer.enabled") { target_protocol := cfg.GetString("download.remoteServer.protocol") target_hostname := cfg.GetString("download.remoteServer.hostname") target_port := cfg.GetInt("download.remoteServer.port") plugin := &proxy.Plugin{ Match: "weixin110.qq.com", Target: &proxy.TargetConfig{ Protocol: target_protocol, Host: target_hostname, Port: target_port, }, } interceptor_srv.Interceptor.AddPostPlugin(plugin) }

也就是说,启用远程模式后,本地拦截器捕获到微信视频号(weixin110.qq.com)的接口请求时,会直接把它转发到 NAS 上的下载服务,由 NAS 完成视频拉取与落盘。

同时,服务端会把远程开关注入到前端运行时。在 internal/adapter/wxchannels/adapter.go 的new_interceptor_config中,前端变量remoteServerEnabled与remoteServerOrigin分别取自download.remoteServer.enabled与protocol://hostname:port拼接结果,下载面板据此切换交互方式。

下载面板按钮的变化:从"打开文件"到"在新窗口打开视频"

远程模式下,本地没有实际文件,因此下载面板上原先的「打开文件」按钮改成了在新窗口打开视频,同样可以验证视频是否下载成功。

前端判断逻辑位于 frontend/inject/download/model.js:

function is_download_open_external() { return ( runtime_flag(window.config.remoteServerEnabled) || runtime_flag(window.config.inDocker) ); }

当处于远程下载或 Docker 环境(本地无文件)时,openTask会改为调用window.open(APIOrigin + "/preview?id=" + taskId)在新窗口打开视频预览(见 model.js);否则才调用文件接口打开本地文件。相应地,view.js 中任务条的操作按钮图标也会从「文件夹」切换为「外部链接」图标,提示用户此时打开的是在线视频而非本地文件。

配套改进详解

mp 命令更名为 server

原先的mp命令(公众号相关服务)更名为server命令,职责也随之聚焦为"在 Linux 服务器上运行下载服务"。此前的server模式下需要手动Ctrl+C结束前台进程,现在则可以通过server stop优雅关闭,server restart一键重启,方便 NAS 这种无人值守场景的运维。

图片类视频支持后台下载

本次更新后,图片类视频(图集)也可以在后台批量下载了。此前批量下载遇到图集时会中断整个下载流程,本次一并修复了"批量下载时存在图片类视频会中断下载"的问题,保证批量任务中图文与视频混排时也能顺利跑完。图片类视频相关的下载与批量能力可参考 视频号批量下载文档。

批量下载支持中断创建任务

批量下载过程中现在支持中断"继续创建下载任务",即用户可以在批量任务尚未全部创建完成时停止后续任务的创建,避免误触发大量下载;配合同名视频去重问题的修复(此前同名视频会导致实际下载数与展示任务数不一致),批量下载的可控性与一致性都得到了提升。

下载任务列表接口分页

下载任务列表接口新增了分页参数,避免任务数量增长后一次拉取过多数据。从 internal/api/handler_download_task.go 看,接口支持以下查询参数:

参数说明默认值
page页码,从 1 开始1
page_size每页条数,范围 1~10020
status状态筛选,逗号分隔多个状态值(如0,1表示等待中)不筛选

接口内部会以Offset((page-1)*pageSize)与Limit(pageSize)分页查询,并在响应中回传page/page_size(见 handler_download_task.go)。前端下载面板默认每页 50 条(见 frontend/src/pages/downloadv2.model.js),且按状态分组统计(等待0,1、运行中2,4、暂停3、完成5、错误6,7)。

公众号管理页面筛选状态保留

公众号管理页面在刷新后仍会保留当前选中的筛选项,同时修复了此前"状态筛选项不生效"的问题。这属于前端状态持久化改进,让大量公众号订阅的管理操作更顺手。

公众号 RSS 服务的后续调整预告

发布说明同时预告:公众号 RSS 服务在实际使用中并不稳定,后续会将其移除,改为「公众号文章下载」功能,预计包含:

  • 下载单篇文章;
  • 下载指定公众号所有文章。

这意味着公众号能力重心将从"订阅推送"转向"内容归档下载",与当前仓库中 公众号文章下载指南 描述的文章下载方向一致(开启mp.enabled后,在公众号文章页底部出现下载按钮,可将文章下载为 HTML)。迁移后,原先依赖 RSS 订阅的用户将转向直接的文章下载方案。

小结

v260118 版本让 wx_channels_download 的部署形态从"单机工具"扩展为"本地 + NAS 双端协作":NAS 端以server命令常驻并提供 API 服务,本地端通过download.remoteServer配置把下载请求转发到 NAS,配合下载面板"在新窗口打开视频"的验证方式,形成了一套完整的远程下载闭环。配套的分页任务列表、批量下载中断、图片类视频后台下载等改进,则让大量任务场景下的使用体验更加稳定可控。动手部署时,只需参照本文的server -d启动与remoteServer配置两步即可完成,注意把示例 IP 替换为你自己的 NAS 内网地址,并将 NAS 端下载目录设置为./downloads以集中管理文件。

  • 桌面应用
  • 视频
  • 网络
  • MCP 服务

【免费下载链接】wx_channels_download

微信视频号下载器

项目地址:https://gitcode.com/gh_mirrors/wx/wx_channels_download
点击查看免费下载
上一篇:终极解决方案:如何永久解决JetBrains IDE试用期限制问题
下一篇:3步解锁Wallpaper Engine壁纸资源:RePKG开源工具完全指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询