原文:
分享下我学习golang 的过程。
搭建golang环境
下载对应系统的安装包https://go.dev/dl/ ,如果下载慢可以用镜像 https://golang.google.cn/dl/ ,http://mirrors.ustc.edu.cn/golang/ ,https://studygolang.com/dl ,比如Windows系统下载这个https://studygolang.com/dl/golang/go1.19.1.windows-amd64.msi ,如果电脑里已经有go,安装之前会提示卸载旧版本,确定后直接覆盖安装在原来的Go目录。

安装成功后打开命令行输入go version就可以看到go版本了,这里用的命令行工具是微软的https://github.com/microsoft/terminal很多人问命令行是什么?有什么用, 比如用python下载公众号文章 一键批量下载微信公众号文章内容/图片/封面/视频/音频,支持导出html和pdf格式,包含阅读数/点赞数/在看数/留言数 ,命令行里的链接可以可以直接打开,不用再复制了。

写代码少不了编辑器,推荐goland和vscode,我就用vs了,将gostudy 目录添加到工作区,ctrl+shift+p
输入 go install update tools
全选安装go相关的插件,还有vscode Code Runner
这个插件方便右键执行代码, rest client 插件方便http测试,先写个hello word:
vi test.go相关影片资源迅雷下载推荐
每个游戏开发者都必须知道的15个术语
DAU (Daily Active Users)(日活跃用户)这个不用多说,日活跃用户,通常指一日内,登录游戏的用户数量。2. Sessions (打开频率)可以理解为点击率,但凡有一个用户打开了你的游戏,Sessions+1常用的公式为: \frac{ ...
游戏开发,每个游戏开发者都必须知道的15个术语
package main
func main(){
println("hello word")
}
go run test.go
临时测试代码可以用在线网站https://go.dev/play , https://jsplay.goplus.org/ ,还方便生成分享链接,新建个测试文件 test.http 点send request即可请求。
//GET http://localhost:8090/welcome HTTP/1.1GET http://httpbin.org/ip
### post
POST http://localhost:8090/companies HTTP/1.1

然后用golang 写个公众号批量下载工具,之前用python写了个公众号话题批量下载我又开发了个公众号音频视频和话题批量下载工具 ,以这个音频话题为例:https://mp.weixin.qq.com/mp/APPmsgalbum?__biz=MjM5NjAxOTU4MA==&action=getalbum&album_id=1777378132866465795&scene=173#wechat_redirect

输入话题地址的下载效果如图,990个音频很快就下载完了。

这次用golang重写了下,代码如下:
package mainimport (
"fmt"
"io"
"io/ioutil"
"net/http"
"os"
"regexp"
)
func Exists(path string) bool {
_, err := os.Stat(path)
if err != nil {
if os.IsExist(err) {
return true
}
return false
}
return true
}
func InArray(items []string, item string) bool {
for _, eachItem := range items {
if eachItem == item {
return true
}
}
return false
}
func main() {
defer func() {
if err := recover(); err != nil {
fmt.Print("错误信息:")
fmt.Println(err)
}
}()
var url string
// https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MjM5NjAxOTU4MA==&action=getalbum&album_id=1777378132866465795&scene=173
fmt.Print("公众号苏生不惑提示你请输入话题地址:")
fmt.Scanln(&url)
if len(url) == 0 {
panic("话题地址为空")
}
client := &http.Client{}
reqest, err := http.NewRequest("GET", url, nil)
reqest.Header.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36 QBCore/4.0.1301.400 QQBrowser/9.0.2524.400 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2875.116 Safari/537.36 NetType/WIFI MicroMessenger/7.0.5 WindowsWechat")
if err != nil {
panic(err)
}
response, _ := client.Do(reqest)
defer response.Body.Close()
bResp, _ := io.ReadAll(response.Body)
// json, _ := simplejson.NewJson(bResp)
content := string(bResp)
var voiceids = regexp.MustCompile(`data-voiceid="(.*)"`).FindAllStringSubmatch(content, -1)
var titles = regexp.MustCompile(`data- data-voiceid`).FindAllStringSubmatch(content, -1)
fileName := "wechat_topic_audio_list.txt"
// fmt.Print(voiceids, titles)
fileContent, _ := ioutil.ReadFile(fileName)
var voice_urls = regexp.MustCompile(`\n`).Split(string(fileContent), -1)
// fmt.Print(voice_urls)
var f2 *os.File
for k, v := range voiceids {
if InArray(voice_urls, "https://res.wx.qq.com/voice/getvoice?mediaid="+v[1]) {
fmt.Println("已经下载过音频:" + titles[k][1])
continue
}
res, _ := http.Get("https://res.wx.qq.com/voice/getvoice?mediaid=" + v[1])
f, _ := os.Create(titles[k][1] + ".mp3")
io.Copy(f, res.Body)
if Exists(fileName) {
f2, _ = os.OpenFile(fileName, os.O_APPEND, 0666)
} else {
f2, _ = os.Create(fileName)
}
defer f2.Close()
fmt.Println("正在下载音频:" + titles[k][1])
// _, _ = io.WriteString(f2, "https://res.wx.qq.com/voice/getvoice?mediaid="+v[1]+"\n")
// _, _ =f2.Write([]byte("https://res.wx.qq.com/voice/getvoice?mediaid="+v[1]+"\n"))
_, _ = f2.WriteString("https://res.wx.qq.com/voice/getvoice?mediaid=" + v[1] + "\n")
// _, _ = ioutil.WriteFile(fileName, []byte("https://res.wx.qq.com/voice/getvoice?mediaid="+v[1]+"\n"), 0666)
}
fmt.Print("下载完成")
}
下载效果:

更多我开发的工具:
企业网站建设与开发最低只要299元起,包含域名服务器,需要的联系QQ345424724,电话15516990022,18530226930相关影片资源迅雷下载推荐
安卓 APP 开发的流程是如何设计的?
安卓 APP 开发的流程是如何设计的?
APP开发,安卓 APP 开发的流程是如何设计的?
标签: 公众号开发 2022年golang入门学习 顺便开发个公众号批量下载工具