查看原文
其他

国庆节假期学了2个新东西,分享下我的学习成果

苏生不惑 苏生不惑 2022-12-01

苏生不惑第381篇原创文章,将本公众号设为星标,第一时间看最新文章。

国庆节7天假期在家学习了下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格式,包含阅读数/点赞数/在看数/留言数 ,命令行里的链接可以可以直接打开,不用再复制了。

golang下载公众号话题

之前用python写了个公众号话题批量下载,以这个音频话题为例:https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MjM5NjAxOTU4MA==&action=getalbum&album_id=1777378132866465795&scene=173

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

这次用golang重写了下golang 开发入门教程,顺便写了个公众号批量下载工具,代码如下:

package main

import (
 "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 Dwon() {
 defer func() {
  if err := recover(); err != nil {
   fmt.Print("错误信息:")
   fmt.Println(err)  
  }
 }()
 var url string
 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)
 content := string(bResp)
 var voiceids = regexp.MustCompile(`data-voiceid="(.*)"`).FindAllStringSubmatch(content, -1)
 var titles = regexp.MustCompile(`data-title="(.*)" 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("下载完成")
}

下载效果一样的,并且打包生成的exe还支持Windows7:

视频录制剪辑

然后再说视频,视频录制来源是我之前写的微博批量下载工具一键批量下微博内容/图片/视频,获取博主最受欢迎微博,图片查找微博博主,用的工具https://mathewsachin.github.io/Captura/,抓取李健的微博内容/图片/视频:

剪辑用的是剪映https://lv.ulikecam.com/ ,语音识别字幕很好用,用小姐姐的声音代替了我的声音。视频效果就是这样的 :

第一次剪得很粗糙,有待学习提高,为了这个视频花了我一个下午,点个赞吧,之后我会继续录制更多视频。

最近原创文章:

加入我的知识星球

苏生不惑又开发了知乎微博批量下载工具

解除b站番剧区域限制,这个特殊版本的 b 站 app 功能太强了

2022 年 9 月公众号深圳卫健委历史文章无水印封面表情包,分享到网盘了

一键批量下载微信公众号文章内容/图片/封面/视频/音频,支持导出html和pdf格式,包含阅读数/点赞数/在看数/留言数

视频下载黑科技,VIP 视频也能下载

整理下苏生不惑开发过的那些软件和脚本

如果文章对你有帮助还请 点赞/在看/分享 三连支持下, 感谢各位!

公众号苏生不惑

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存