wxdown 公众号离线文章保存(GO语言开发)

简介

本来一开始用 nodejs 写的,考虑大小、易操作、高性能、跨平台以及环境等问题,我就想能不能搞个不需依赖开发语言环境就能运行的。所以我就选择 go并且它本身就具备以上优点。作者本身是java开发,第一次使用 go所以过程也是比较艰难,好在 GPT 在学习一门新的开发语言方面还是相当给力!💪💪💪

这是一个用于保存公众号文章到本地离线查看的软件,支持将 HTML 文章保存至本地,并提供 HTML 转 PDF 的功能。此外,软件还支持图片素材管理,可在 Windows、Mac 和 Linux 系统上运行,使用 Go 语言开发,具备轻量级、小体积、高性能和并发支持的特点。不支持批量直接获取文章列表

功能特点

  • 保存公众号文章至本地
  • 支持将 HTML 文章转换为 PDF 格式(需安装 wkhtmltopdf
  • 图片素材管理
  • 保存原始地址
  • 跨平台支持:Windows、Mac 和 Linux
  • 使用 Go 语言开发,轻量级、高性能、高并发
  • 提供简单易用的 Web 界面管理

下载

操作系统 版本/架构 大小
Windows wxdown-1.0.0-windows-amd64.exe 9.23MB
ARM Linux wxdown-1.0.0-linux-arm64 8.75MB
Linux wxdown-1.0.0-linux-amd64 9.04MB
macOS wxdown-1.0.0-darwin-amd64 9.09MB
macOS(Apple Silicon) wxdown-1.0.0-darwin-arm64 8.75MB

安装和运行

Windows

包含了 wkhtmltopdf

  1. 解压缩包
  2. 打开目录
  3. 双击 wxdown-1.0.0-windows-amd64.exe 启动
  4. 浏览器访问 http://127.0.0.1:81

如下所示启动成功:

bash 复制代码
cwd: E:\code\go\go-wx-download
----------------------------------------
        欢迎使用 wxdown 工具!
----------------------------------------
运行模式 : binary
软件版本 : 1.0.0
操作系统 : windows
系统架构 : amd64
启动时间 : 2024-05-19 00:00:00
----------------------------------------
服务信息
----------------------------------------
服务地址:
        http://192.168.31.209:81        (浏览器访问)
        http://192.168.202.1:81 (浏览器访问)
        http://192.168.11.1:81  (浏览器访问)
        http://172.26.192.1:81  (浏览器访问)
        http://127.0.0.1:81     (浏览器访问)
采集接口:
        http://192.168.31.209:81/gather/        (GET|POST|HEAD)
        http://192.168.202.1:81/gather/ (GET|POST|HEAD)
        http://192.168.11.1:81/gather/  (GET|POST|HEAD)
        http://172.26.192.1:81/gather/  (GET|POST|HEAD)
        http://127.0.0.1:81/gather/     (GET|POST|HEAD)
----------------------------------------
配置信息
----------------------------------------
运行路径 : E:\code\go\go-wx-download
资源路径 : E:\code\go\go-wx-download\data

Linux

添加权限

bash 复制代码
chmod +x wxdown-1.0.0-linux-amd64

启动程序

复制代码
root@mac-max:/home/wx# ./wxdown-1.0.0-linux-amd64 
cwd: /home/wx
----------------------------------------
        欢迎使用 wxdown 工具!
----------------------------------------
运行模式 : binary
软件版本 : 1.0.0
操作系统 : linux
系统架构 : amd64
启动时间 : 2024-05-19 00:00:00
----------------------------------------
服务信息
----------------------------------------
服务地址:
        http://192.168.31.156:81        (浏览器访问)
        http://172.17.0.1:81    (浏览器访问)
        http://172.18.0.1:81    (浏览器访问)
        http://127.0.0.1:81     (浏览器访问)
采集接口:
        http://192.168.31.156:81/gather/        (GET|POST|HEAD)
        http://172.17.0.1:81/gather/    (GET|POST|HEAD)
        http://172.18.0.1:81/gather/    (GET|POST|HEAD)
        http://127.0.0.1:81/gather/     (GET|POST|HEAD)
----------------------------------------
配置信息
----------------------------------------
运行路径 : /home/wx
资源路径 : /home/wx/data

Mac

出现 permission denied 表示没有权限

复制代码
(base) mac@macdeMacBook-Pro-3 ~ % /Users/mac/Desktop/wxdown-1.0.0-darwin-amd64/wxdown-1.0.0-darwin-amd64  
zsh: permission denied: /Users/mac/Desktop/wxdown-1.0.0-darwin-amd64/wxdown-1.0.0-darwin-amd64

添加权限

bash 复制代码
(base) mac@macdeMacBook-Pro-3 ~ % chmod +x /Users/mac/Desktop/wxdown-1.0.0-darwin-amd64/wxdown-1.0.0-darwin-amd64

双击 wxdown-1.0.0-darwin-amd64 启动或命令启动

bash 复制代码
(base) mac@macdeMacBook-Pro-3 ~ %  /Users/mac/Desktop/wxdown-1.0.0-darwin-amd64/wxdown-1.0.0-darwin-amd64

执行结果同上

简单使用会下载和安装就可以了,后面都基本没啥用了😄😄,不用再看了

目录结构

  • web:HTML 页面,很简单也可以自己修改
    • index.html 主页面
    • images.html 图片预览页面
  • config.yaml:系统全局配置文件
  • wxdown-1.0.0 可执行文件,程序入口

config.yaml

yaml 复制代码
# 服务端口
port: 81

# 本地数据文件存储路径
path: ./data

# HTML 转 PDF 配置
# 下载 wkhtmltopdf 路径 https://wkhtmltopdf.org/downloads.html
# window 建议下载后将 wkhtmltopdf目录下载所有内容拷贝到项目根目录下
wkhtmltopdf:
  # true 开启 false 关闭 默认关闭
  enable: false
  # linux 例如:/usr/local/wkhtmltopdf/bin/
  # window 例如:E:\Program Files\wkhtmltopdf\bin
  path:

# 采集线程配置
thread:
  # 同时下载 HTML 线程数量
  html: 5
  # 同时下载图片线程数量
  image: 10

接口

采集接口

地址 请求方式 请求参数 请求体
http://127.0.0.1:81/gather/ GET /gather/https://mp.weixin.qq.com/1
HEAD /gather/https://mp.weixin.qq.com/1
POST /gather/ ["https://mp.weixin.qq.com/1","https://mp.weixin.qq.com/2",...]

书签脚本

注意⚠️:如果启动软件的机器和浏览文章的机器不是一台机器,使用局域网 IP192.168.0.xxx)替换 127.0.0.1

js 复制代码
javascript:fetch("http://127.0.0.1:81/gather/" + window.location.href,{mode:"no-cors"});

使用方法:

  1. 浏览器书签栏➡️右键➡️添加网页...➡️名称:随便你能记住就行➡️网址:输入下面js脚本
  2. 打开浏览器公众号文章
  3. 点击上面添加的书签脚本软件会自动采集

资源接口

地址 请求方式 请求参数 请求体
http://127.0.0.1:81/articles GET

打开文件夹接口

地址 请求方式 请求参数 请求体
http://127.0.0.1:81/open/ GET /open/公众号名称

使用示例

主页面

文章列表

图片库

开发和贡献

本软件使用 Go 语言开发,欢迎开发者贡献代码或提出改进建议。请在 GitHub 上提交 issue 或 pull request。

注意事项

  • 请勿传播未经授权的文章或图片。
  • 在保存、转换文章或管理图片时,请注意版权和法律规定。
相关推荐
研究司马懿3 小时前
【云原生】Gateway API高级功能
云原生·go·gateway·k8s·gateway api
梦想很大很大17 小时前
使用 Go + Gin + Fx 构建工程化后端服务模板(gin-app 实践)
前端·后端·go
lekami_兰1 天前
MySQL 长事务:藏在业务里的性能 “隐形杀手”
数据库·mysql·go·长事务
却尘1 天前
一篇小白也能看懂的 Go 字符串拼接 & Builder & cap 全家桶
后端·go
ん贤1 天前
一次批量删除引发的死锁,最终我选择不加锁
数据库·安全·go·死锁
mtngt112 天前
AI DDD重构实践
go
Grassto3 天前
12 go.sum 是如何保证依赖安全的?校验机制源码解析
安全·golang·go·哈希算法·go module
Grassto5 天前
11 Go Module 缓存机制详解
开发语言·缓存·golang·go·go module
程序设计实验室6 天前
2025年的最后一天,分享我使用go语言开发的电子书转换工具网站
go
我的golang之路果然有问题6 天前
使用 Hugo + GitHub Pages + PaperMod 主题 + Obsidian 搭建开发博客
golang·go·github·博客·个人开发·个人博客·hugo