github 程式碼commit機器人
靈感
曾經有一次在GitHub上看到使用golang自動儲存trending的歷史記錄到markdown檔案的專案,感覺這個專案做的很新穎而精緻.進而做一個在GitHub上自動記錄每日hacknews新聞和貓眼電影.
知識儲備
- html css selector 或者xpath的語法,提出hmtl的有用資訊(自己做爬蟲也會使用到)
- redis List/SET/HASH等資料結構
- 熟悉git的基本命令
- 熟悉ssh key和配置GitHub ssh key 登陸
- GO語言: exec,go-redis,goquery,template,http等包
- go stmp包傳送伺服器資訊和每日hacknews到自己的郵箱
思路
- 使用http包下載html文件
- goquery提取html中用的資訊
- 使用第三方翻譯介面翻譯有用資訊
- 儲存提取的資訊到redis中並去重,設定自動失效時間
- 獲取去重之後的資訊使用go template來渲染markdown格式的文件
- go exec 呼叫git命令提交生產之後的markdown檔案到github 同時更新readme.md檔案
- 傳送每日hacknews和伺服器的狀態到自己的郵箱
main.go程式碼註釋解析
package main
import (
"github.com/dejavuzhou/md-genie/util"
"log"
"time"
)
var gitCount = 1
func createCmds() []util.Cmd {
//使用兩個賬號輪流交替提交程式碼到GitHub
//可恥的私心:我要讓這兩個GitHub賬號在contributions in the last year 顯示皮膚都是綠色(代表活躍)
gitCount++
gifConfig1 := []util.Cmd{
{"git", []string{"config", "--global", "user.email", "'dejavuzhou@qq.com'"}},
}
gifConfig2 := []util.Cmd{
{"git", []string{"config", "--global", "user.email", "'1413507308@qq.com'"}},
}
//執行一系列git命令 和 linux伺服器的命令 來定時監控伺服器的健康狀態
cmds := []util.Cmd{
{"git", []string{"config", "--global", "user.name", "'EricZhou'"}},
{"git", []string{"stash"}},
{"git", []string{"pull", "origin", "master"}},
{"git", []string{"stash", "apply"}},
{"git", []string{"add", "."}},
{"git", []string{"status"}},
{"git", []string{"commit", "-am", time.Now().Format(time.RFC3339)}},
{"git", []string{"status"}},
{"git", []string{"push", "origin", "master"}},
{"netstat", []string{"-lntp"}},
{"free", []string{"-m"}},
{"ps", []string{"aux"}},
}
if gitCount%2 == 0 {
cmds = append(gifConfig2, cmds...)
} else {
cmds = append(gifConfig1, cmds...)
}
return cmds
}
func main() {
//比較懶 使用最原始sleep的方法來實現定時任務
for {
//提出hacknews html中的新聞游泳資訊呼叫有道翻譯來 儲存資訊到redis
//如果有條件建議使用google翻譯API
if err := util.SpiderHackNews(); err != nil {
log.Fatal(err)
}
//解析hacknews新聞到markdown檔案,按照時間天格式命名
if err := util.ParseMarkdownHacknews(); err != nil {
log.Fatal(err)
}
//獲取貓眼電影json介面,儲存到redis
if err := util.FetchMaoyanApi(); err != nil {
log.Fatal(err)
}
//解析電影資訊到markdown檔案
if err := util.ParseMaoyanMarkdown(); err != nil {
log.Fatal(err)
}
//讀取archieves 資料夾名稱 生成readme.md檔案
util.ParseReadmeMarkdown()
//執行git linux 命令 儲存日誌 slice
gitlogs, err := util.RunCmds(createCmds())
if err != nil {
log.Fatal(err)
}
//解析日誌和hacknews新聞 生產email的html正文
//傳送郵件
if err, mailBody := util.ParseEmailContent(gitlogs); err == nil {
mailTitle := "md-genie+hacknews日誌:" + time.Now().Format(time.RFC3339)
util.SendMsgToEmail(mailTitle, mailBody)
} else {
log.Fatal(err)
}
//每天執行4次 我的兩個GitHub賬號就可以每天活躍數量為兩次
time.Sleep(6 * time.Hour)
}
}
dejavzuhou/util包解析
api.go
獲取貓眼電影json的apicommand.go
執行os系統命令ding.go
傳送訊息到釘釘群機器人hacknews.go
解析新聞,翻譯新聞,儲存redismail.go
傳送郵件markdown.go
生成markdown檔案redditnews.go
爬去reddit新聞(reddit被牆廢棄)scanfiles.go
掃描archives資料夾裡面的檔案給readme.md做資料來源translate.go
呼叫翻譯api
md-genie原始碼
相關文章
- Github Copilot機器人寫的程式碼引發糾紛Github機器人
- 幽默:Github上兩個機器人吵架了Github機器人
- 量化機器人開發/量化合約策略機器人系統開發及程式設計程式碼示例機器人程式設計
- 基於 Probot 實現 GitHub NPM 釋出機器人?GithubNPM機器人
- 探索 SK 示例 -- GitHub 儲存庫中的機器人Github機器人
- 如何用 TensorFlow 訓練聊天機器人(附github)機器人Github
- 量化交易機器人開發程式碼丨量化機器人功能系統開發(python多語言)機器人Python
- 釘釘機器人告警指令碼機器人指令碼
- 開源四足機器人 附設計圖及程式碼機器人
- 簡單幾行程式碼看兩個機器人尬聊行程機器人
- 釘釘機器人自動關聯 GitHub 傳送 approval prs機器人GithubAPP
- GitHub 自動合併 pr 的機器人——auto-merge-botGithub機器人
- 使用 FastGPT 工作流搭建 GitHub Issues 自動總結機器人ASTGPTGithub機器人
- 量化機器人系統開發詳細案例丨量化機器人原始碼模式機器人原始碼模式
- 零程式碼基礎在 Google 表格上建立一個機器人Go機器人
- 程式碼是寫給人看的,不是寫個機器看的
- 機器人學 —— 飛行機器人(Introduction)機器人
- 程式的機器級程式碼表示
- github上傳程式碼Github
- 提交程式碼到githubGithub
- 江湖微信公眾號機器人飛單機器人娛樂系統部分原始碼機器人原始碼
- Richfollow跟單機器人系統開發(Richfollow跟單機器人開發原始碼)機器人原始碼
- Ganker機器人:手機遙控的機甲機器人機器人
- 「RPA客服機器人」千手客服機器人機器人
- 「RPA機器人」民宿AI管家機器人機器人AI
- 智慧聊天機器人原始碼—仿微信介面機器人原始碼
- svn + 釘釘機器人制作簡單的程式碼跟蹤系統機器人
- 乾貨 | 如何用 Python 打造一個聊天機器人?【附程式碼】Python機器人
- 安川機器人示教程式基本操作機器人
- 量化交易機器人原始碼丨量化自動炒幣機器人系統開發流程機器人原始碼
- 微信機器人機器人
- 37 機器人機器人
- 量化交易機器人開發運營版丨量化機器人系統開發(成熟技術)丨量化機器人系統原始碼機器人原始碼
- Github上fork了別人的專案之後如何同步程式碼Github
- Git回滾程式碼到某個commitGitMIT
- 量化炒幣機器人系統開發技術方案丨量化機器人原始碼設計機器人原始碼
- github提交程式碼步驟Github
- 向Github上提交程式碼Github