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
- 解压缩包
- 打开目录
- 双击
wxdown-1.0.0-windows-amd64.exe启动 - 浏览器访问 http://127.0.0.1:81
如下所示启动成功:
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
添加权限
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
添加权限
(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 启动或命令启动
(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
# 服务端口
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
接口
采集接口
GET仅支持单次下载,POST支持批量提交,请求头类型JSON格式- http://127.0.0.1:81/gather/+需采集地址。就可以直接把地址发给采集软件
| 地址 | 请求方式 | 请求参数 | 请求体 |
|---|---|---|---|
| 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",...] |
书签脚本
注意️:如果启动软件的机器和浏览文章的机器不是一台机器,使用局域网 IP(192.168.0.xxx)替换 127.0.0.1
javascript:fetch("http://127.0.0.1:81/gather/" + window.location.href,{mode:"no-cors"});
使用方法:
- 浏览器书签栏️右键️添加网页...️名称:随便你能记住就行️网址:输入下面
js脚本 - 打开浏览器公众号文章
- 点击上面添加的书签脚本软件会自动采集
资源接口
| 地址 | 请求方式 | 请求参数 | 请求体 |
|---|---|---|---|
| http://127.0.0.1:81/articles | GET | 无 | 无 |
打开文件夹接口
| 地址 | 请求方式 | 请求参数 | 请求体 |
|---|---|---|---|
| http://127.0.0.1:81/open/ | GET | /open/公众号名称 | 无 |
使用示例
主页面

文章列表

图片库

开发和贡献
本软件使用 Go 语言开发,欢迎开发者贡献代码或提出改进建议。请在 GitHub 上提交 issue 或 pull request。
注意事项
- 请勿传播未经授权的文章或图片。
- 在保存、转换文章或管理图片时,请注意版权和法律规定。
wxdown 公众号离线文章保存(GO语言开发)的更多相关文章
- 50行Python代码,教你获取公众号全部文章
> 本文首发自公众号:python3xxx 爬取公众号的方式常见的有两种 - 通过搜狗搜索去获取,缺点是只能获取最新的十条推送文章 - 通过微信公众号的素材管理,获取公众号文章.缺点是需要申请自 ...
- python爬搜狗微信获取指定微信公众号的文章
前言: 之前收藏了一个叫微信公众号的文章爬取,里面用到的模块不错.然而 偏偏报错= =.果断自己写了一个 正文: 第一步爬取搜狗微信搜到的公众号: http://weixin.sogou.com/we ...
- 用iframe嵌入了一个微信公众号平台文章的URL
JS: $.ajaxPrefilter( function (options) { if (options.crossDomain && jQuery.support.cors) { ...
- 我创建了一个网站,专门分享公众号的文章 https://asyons.com
网址:https://asyons.com/,为做个网站,自娱自乐的自明星,但投资也挺大的了,注册了一家公司,公财私章,做账报税,阿里云服务器,全职开发.算上时间价值,按小时,投资过5万了.
- 巧-微信公众号-操作返回键问题-angularjs开发 SPA
在解决这个问题之前,一直处在很苦逼的状态,因为 现在绝大多数 前端模块都是 SPA 模式:所以由此而来出了许多的问题,当然我现在提的这个只是其中一个: 说一下解决方案: 1.技术栈 angularjs ...
- 使用Python爬取微信公众号文章并保存为PDF文件(解决图片不显示的问题)
前言 第一次写博客,主要内容是爬取微信公众号的文章,将文章以PDF格式保存在本地. 爬取微信公众号文章(使用wechatsogou) 1.安装 pip install wechatsogou --up ...
- Md2All:好用的markdown文件转换工具,文章迁移微信公众号的利器
目录 简介 使用体验 极速上手 更多功能 总结 简介 markdown以简单的语法和强大的功能,征服了无数技术创作者,几乎主流的技术博客网站都开始支持markdown语言撰写博客.但是微信公众号的文章 ...
- 【技巧】如何使用客户端发布BLOG+如何快速发布微信公众号文章
[技巧]如何使用客户端发布BLOG+如何快速发布微信公众号文章 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也 ...
- 拒绝低效!Python教你爬虫公众号文章和链接
本文首发于公众号「Python知识圈」,如需转载,请在公众号联系作者授权. 前言 上一篇文章整理了的公众号所有文章的导航链接,其实如果手动整理起来的话,是一件很费力的事情,因为公众号里添加文章的时候只 ...
- 发现了合自己胃口的公众号,但文章太多翻来翻去真麻烦,还好我学了 Python
现在我们大多数人都会或多或少的关注几个公众号,如果发现一个比较合自己胃口的号 对公众号中的文章一定是每篇必读的. 有时候我们关注到宝藏型公众号时发现其历史文章已经好几百甚至上千篇了,而作者又只对其中自 ...
随机推荐
- OpenHarmony AI框架开发指导
一.概述 1.功能简介 AI 业务子系统是 OpenHarmony 提供原生的分布式 AI 能力的子系统.AI 业务子系统提供了统一的 AI 引擎框架,实现算法能力快速插件化集成. AI 引擎框架主要 ...
- docker 应用篇————docker 自定义网络[十八]
前言 看下如何自定义网络. 正文 在了解自定义网络之前呢? 需要明白一件事. 就是其实我们在启动docker的时候是有默认参数的. docker run -d -p --name tomcat01 - ...
- 重新点亮linux 命令树————selinux[二十六]
简介 简单整理selinux. 正文 selinux 是安全增强软件. 以前是系统安全是用户权限配置(用户自主控制),但是害怕用户自己设置问题,故而增加了一个selinux,也就是强制访问控制. 一般 ...
- ef 查询生成语句的几种方式
前言 整理一下ef 如何查看生成sql 语句的,现在有ef core 了,统一整理一下. 正文 方式如下: 数据库监听 这是一种推荐方式,因为调试和代码分开,不会有影响. 然后连接: 然后可以进行一些 ...
- Oracle with的重复使用(递归)
Oracle with的重复使用(递归) 写力扣的时候学到了新的方法 Recursive WITH Clauses 通常来说如果直接使用with XXX as ()这种,是没发直接使用自身的数据的 例 ...
- 【笔记】Oracle列转行unpivot&行转列 PIVOT
unpivot 说明:将表中多个列缩减为一个聚合列(多列转多行) 语法:unpivot(新列名 for 聚合列名 in (对应的列名1-列名n )) 写到了一个力扣的题,发现这个unpivot函数还没 ...
- 力扣584(MySQL)-寻找用户推荐人(简单)
题目: 给定表 customer ,里面保存了所有客户信息和他们的推荐人. 写一个查询语句,返回一个客户列表,列表中客户的推荐人的编号都 不是 2. 对于上面的示例数据,结果为: 解题思路: 本题最 ...
- 力扣453(java)-最小操作次数使数组元素相等(简单)
题目: 给你一个长度为 n 的整数数组,每次操作将会使 n - 1 个元素增加 1 .返回让数组所有元素相等的最小操作次数. 示例 1: 输入:nums = [1,2,3]输出:3解释:只需要3次操作 ...
- 用了那么久的Lombok,你知道它的原理么?
简介: 在写Java代码的时候,最烦写setter/getter方法,自从有了Lombok插件不用再写那些方法之后,感觉再也回不去了,那你们是否好奇过Lombok是怎么把setter/getter方法 ...
- 阿里云AHAS Chaos:应用及业务高可用提升工具平台之故障演练
简介: 阿里云AHAS Chaos:应用及业务高可用提升工具平台之故障演练 应用高可用服务AHAS及故障演练AHAS Chaos 应用高可用服务(Application High Availabili ...