温馨提醒

如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!

本文最后更新于2023年4月10日,已超过 30天没有更新

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

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

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

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, " ")
        }
}

更新(20230326):
本次更新增强了留言下载功能,支持下载留言中的全部回复内容(一个楼层至多200条),并略微美化了样式,至少不会显得过于简陋;最近这些公众号纷纷开通了留言自由回复的功能,以前的代码只能下载展开回复页之前的内容,并且通常只剩下一两条了,因此做了更新。

历史上的今天
04月
8
    抱歉,历史上的今天作者很懒,什么都没写!
版权声明:原创作品,未经允许不得转载,否则将追究法律责任。
本站资源有的自互联网收集整理,如果侵犯了您的合法权益,请联系本站我们会及时删除。
本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。
本文链接:悟空资源网https://www.wkzyw.com/86682.html
许可协议:《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权