微信文章下载助手(正式版)

2次阅读
没有评论

原帖 1479756/thread-1479756-1-1.html 已无法编辑,故另外开帖

更新(20231018):
本次更新对软件框架进行了重构,1770516新增电子书选项 -b,对下载任务进行统一调度管理,大幅提升下载效率,并开放了源代码,开源地址: https://gitee.com/kbtxwer/webDownloader

(声明:对未开源的下载引擎请不要尝试在成品中使用或进行反编译研究,尊重相关方面的版权,请不要过度使用下载功能,避免接口被封。
作者对使用非开源组件和过度使用开源组件产生的一切后果不承担任何责任)

更新(20230326):
本次更新增强了留言下载功能,支持下载留言中的全部回复内容(一个楼层至多200条),并略微美化了样式,至少不会显得过于简陋
上次更新还是去年8月,软件一直能正常运行,加上现在我关注的这些公众号已经极少被删文章了,就一直没再更新过。

最近这些公众号纷纷开通了留言自由回复的功能,以前的代码只能下载展开回复页之前的内容,并且通常只剩下一两条了,因此做了更新:

另外去年更了不少次,早就可以作为正式版发布了,只是一直没编辑标题,这次一并补上。
正式版下载地址(最后更新日期:2023-03-26 20:50):
https://wwpv.lanzoue.com/iLIOl0r5w1ef
历史版本下载地址(失效版本已删除)
https://wwa.lanzoui.com/b00oqpc8b
密码:cojt

关于历史主页:
历史主页的链接格式。https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz={_biz}&scene=124
其中 {_biz} 要替换为在这个公众号任意文章长链接中的 _biz 的值

(至于如何在最新版本的微信中拼凑历史主页请看这个教程

以下是原帖内容:

DLC 2:旧版微信(20220110)
(deepin适配版 2.9.5.41)
提取自deepin应用商店,应该不会强制升级。要是新版本微信屏蔽了获取历史主页的按钮,或者屏蔽了复制文字读取链接的功能,可以先登录老版本试试
「WeChat2.9.5.41」https://www.aliyundrive.com/s/LCbcypgQ8gE
(官方安装包 3.0.0.57)
由PyWechatSpy提供的安装包,同样适用于本程序,但是有升级提示,在此表示感谢
「WeChat3.0.0.57」 https://www.aliyundrive.com/s/sTSvw4y5k7L
DLC 1:阅读增强脚本(20211223)
为了解决音频失效和视频无法播放的问题,我这边开发了一个增强脚本,访问这里安装后,将 @match 注解修改为与你的页面地址相匹配,即可在阅读时恢复网页里的音视频
毕竟在下载过程中网页内容对我而言只表现为字符串,我想改非常麻烦,加载到浏览器就是各种对象,操作起来就简单多了

更新(20211011):
本次更新加入了“检测更新”功能,会在程序启动时判定当前运行的是否为最新版本,如果为否,会获取更新日志并提示更新,请放心,这个功能仅会输出字符串,不影响当前版本的使用

重磅更新:
在此国庆佳节之际,我加班加点为大家增添了从剪切板读取文章地址的功能,没错,就是通过某软件粘贴为html的再复制链接过程现在可以由程序自动完成了,当然,由于调用了系统API,这个新功能仅在windows上有效,不过我想问题应该不大

这一新功能的触发有两个时机:
1、不带任何参数启动,软件会直接读取链接并用默认配置下载
2、带参数启动,但参数中不包含http开头的字符串(被认为是下载链接),软件会读取链接并用你所配置的方式下载

此外,由于我的giteePages前阵子被封过一段时间,让我觉得把样式挂上去是不可靠的,此次更新决定将留言板样式放在本地,同时新增一个 -css 参数,可以将留言板样式写出到当前目录,如果发觉下载的文章留言样式混乱,用 wxac -css 命令生成个样式文件放进去就好了,最新版本还请去尝鲜版处下载

更新:给大家报告一下,现在我已经把云主机上的文章下载引擎换成wxac了,java版已彻底成为历史

经过大约一个月断断续续的学习和两天的开发,go语言版的微信文章下载助手已经实现了!
它移植自我的同名Java项目,纯命令行操作,可以利用它快速下载你所喜欢的公众号下的全部文章(含留言)

相比Java版本,go版本不需要安装Java环境,可以直接运行,占用内存低,同时它的并发能力更强,这意味着下载速度会更快

当不传入任何参数时,程序会尝试从剪切板中以cf_html格式读取信息,若找到了历史主页链接或单篇文章链接,会使用默认配置开始下载;
传入参数时,程序会根据你提供的参数覆盖默认配置,其中若这一步没有提供地址,则会尝试从剪切板获取,若获取失败会给出相应提示。
这部分处理逻辑对应的代码。
[Golang] 纯文本查看 复制代码

args := os.Args
conf := entity.MainConf{Url: "", Number: -1, Path: "./", Offset: 0, Original: true, Donate: true, Threads: 10, Css: false, Cookies: make(map[string]string)}
if len(args) <= 1 {
showHelp := true
if runtime.GOOS == "windows" {
text, _ := util.ReadAll()
submatch := srcURLPattern.FindAllStringSubmatch(text, 1)
if len(submatch) == 1 {
srcurl := submatch[0][1]
fmt.Println("从剪切板的内容中成功读取到链接:", srcurl)
conf.Url = srcurl[:len(srcurl)-1]
showHelp = false
}
}
if showHelp {
fmt.Println("帮助:")
fmt.Println("-n 指定下载文章的数量,为整数,0表示不下载(无意义),负值表示全部下载,默认值-1")
fmt.Println("-p 用于指定下载路径,默认为下载到当前工作目录,路径需要用引号包裹")
fmt.Println("-off 表示偏移量,指定偏移量后程序会跳过一定数量的文章,直接从后面开始下载,默认值0")
fmt.Println("-t 表示线程数,在一般情况下等价于允许同时下载的文章数,默认值10")
fmt.Println("-o 表示开启原创校验,只有号主的原创文章会被下载(默认);-O 表示关闭原创校验,下载范围内所有能正常浏览的文章都会被下载")
fmt.Println("-css 表示输出评论区的css样式文件,若没有此文件评论区格式会出错")
fmt.Println("-keep 表示保留未购买的付费文章,不加此参数未购买的付费文章不会被保存到本地,防止覆盖从他人处获取的已购文章")
fmt.Println("-updc 表示更新现有文章的评论,用于抢救已被删除的文章的评论区,注意只有20220423及更新版本下载的文章或者原本没有下载评论的文章才能被更新,因为旧版本中没有引入定位评论区的标记,更新评论要求复制公众号历史主页的文字,以传递更新密钥")
fmt.Println("-blocked-author 表示作者黑名单,在黑名单内的作者的文章不会被下载,能用于过滤广告。")
fmt.Println("\t此选项需要跟上至少两个参数,第一个表示作者数量 n ,随后的 n 个参数是作者名的字符串,建议用英文引号包裹")
fmt.Println("下载链接的获取方式有很多种,我的B站视频([url=https://www.bilibili.com/video/BV1Tf4y157Rf]https://www.bilibili.com/video/BV1Tf4y157Rf[/url])提供了一个参考选项,链接同样需要用引号包裹")
if runtime.GOOS == "windows" {
fmt.Println("\t在windows系统上额外支持从剪切板直接读取链接,在PC端网页中复制公众号内文章/历史主页的【文字(不是点击复制链接)】即可")
fmt.Println("\t请参考 [url=https://www.bilibili.com/video/BV1vQ4y1Q7Wx]https://www.bilibili.com/video/BV1vQ4y1Q7Wx[/url]")
}
fmt.Println("完整示例:")
fmt.Println("wxArticleCatcher -t 10 -n 100 -p \"C:/download\" -off 3 -O \"https://mp.weixin.qq.com......\" -blocked-author 3 \"特约\" \"特约发布\" \"小智精选\"")
fmt.Println("=============================================")
fmt.Println("系统提示:这是一个命令行程序,建议您直接通过命令行设置参数\n当然现在您也可以根据上面的帮助提示手动输入参数," +
"\n但注意由于链接过长,不要直接粘贴在此,请前往您要下载的文章或公众号的历史主页复制几个字(不是复制链接地址),软件会自动读取其网页链接!")
input_args := bufio.NewReader(os.Stdin)
iargs, _ := input_args.ReadString('\n')
fmt.Println(iargs)
args = strings.Split(iargs, " ")
}
}

但是,由于我对go语言尚未完全熟悉,成品中有一些问题未解决:

目前只能通过历史主页下载全部文章,单篇下载暂不支持(已支持,且比java版的适用范围更广)

目前已知指定路径的功能有点小问题,可能导致文章下不下来,因此不建议大家在命令行指定(推荐将程序放在C:\Windows下,这样你可以从想保存文章的地方直接调起程序下载),我会尽快查明原因在后续版本修复(已解决,待更新)

目前go语言版本暂时没有解决文章标题重名的代码,重名文章只能保留一篇
(已解决,注意判定重复的依据是文件名+修改日期,如果仅同名,会在文件名上追加修改日期,因此请尽可能确保修改日期不被破坏)

目前go语言版本下载的文章暂时不能调整修改时间为发文时间,因为go没有像Java一样提供 setLastModified()方法,我会尽快查找相关的解决方案(已解决)

目前go语言版本暂无图形界面,我准备改天抽空用易语言写一个,方便不熟悉命令行的人使用(已解决)

目前已经支持下载已购买的付费文章,并解除复制限制(使用尝鲜版即可体验)

目前尝鲜版已启用交互式命令行,直接双击打开不会“闪退”了,可以按照提示直接粘贴网址进去(抱歉,实际测试发现在cmd和powershell中只能粘贴到大约前256个字符,还请直接用命令行指定参数)

给大家先看看效果(点击此处直达)(这次更新不出意外的话会成为第一个稳定版,因此将加上版权标识等信息以及一定的防御措施,因此大家耐心等待,别催更):

程序的使用方法可以参考自带的帮助或我的B站视频:https://www.bilibili.com/video/BV1Tf4y157Rf

文章的保存效果请自行使用体验!
(我的指导原则是简单,功能和代码都要尽可能精简,并专注于文章下载,因此类似于在软件中加入转PDF/WORD,保存图片,下载音视频等功能的需求我一律不接受)

欢迎有需求的朋友下载体验本程序!

beta版下载地址(最后更新日期:2021-07-22 11:37):
https://wwa.lanzoui.com/iAqaUrpmjdg

[NEW] 尝鲜版下载地址(最后更新日期:请以软件的更新提示为准,此处不再变动)
本次将更新 windows 32位版 和 Linux版!
https://wwa.lanzoui.com/b00oqpc8b
密码:cojt

下一个版本可能会加入更新提示功能(仅输出一行文本提示用户前往116博客破解下载最新版本,无任何强制行为),方便大家及时更新(已加入)

如果软件帮到了你,不妨捐助支持我一下
如果不想捐助,也可以来点免费评分支持一下
BUG:尝鲜版对路径做了容错处理,但是没考虑直接传入空值的情况,
因此如果用图形界面调用尝鲜版请务必明确指定路径(当前目录可以用 ./ 或 . 表示),或者改用beta版(已修复)
(尝鲜版完善了绿色字提及的所有功能,加了upx壳,正式版同样如此,介意的话请继续用beta版)

正文完
 0
116博客
版权声明:本篇文章由 116博客 于2024-11-27发表,共计5172字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码