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機器人
- Git回滾程式碼到某個commitGitMIT
- 量化交易機器人開發程式碼丨量化機器人功能系統開發(python多語言)機器人Python
- 開源四足機器人 附設計圖及程式碼機器人
- 簡單幾行程式碼看兩個機器人尬聊行程機器人
- github上傳程式碼Github
- 提交程式碼到githubGithub
- 釘釘機器人告警指令碼機器人指令碼
- 程式的機器級程式碼表示
- 釘釘機器人自動關聯 GitHub 傳送 approval prs機器人GithubAPP
- GitHub 自動合併 pr 的機器人——auto-merge-botGithub機器人
- 乾貨 | 如何用 Python 打造一個聊天機器人?【附程式碼】Python機器人
- pre-commit鉤子,程式碼質量檢查MIT
- 個人碼雲與github賬號Github
- github提交程式碼步驟Github
- 向Github上提交程式碼Github
- 使用 FastGPT 工作流搭建 GitHub Issues 自動總結機器人ASTGPTGithub機器人
- 量化機器人系統開發詳細案例丨量化機器人原始碼模式機器人原始碼模式
- svn + 釘釘機器人制作簡單的程式碼跟蹤系統機器人
- git commit 彈出編輯器後報錯: Aborting commit due to empty commit message.GitMIT
- Richfollow跟單機器人系統開發(Richfollow跟單機器人開發原始碼)機器人原始碼
- 安川機器人示教程式基本操作機器人
- 「RPA機器人」民宿AI管家機器人機器人AI
- 「RPA客服機器人」千手客服機器人機器人
- Heroku 自動部署 GitHub 程式碼Github
- 程式碼管理工具——GitHubGithub
- Github clone程式碼最快的方式Github
- GitHub 提交程式碼必備指南!Github
- curl快速下載GitHub Repo指定commit的tar.gzGithubMIT
- 江湖微信公眾號機器人飛單機器人娛樂系統部分原始碼機器人原始碼
- 量化交易機器人原始碼丨量化自動炒幣機器人系統開發流程機器人原始碼
- 量化交易機器人開發運營版丨量化機器人系統開發(成熟技術)丨量化機器人系統原始碼機器人原始碼
- UI2Code智慧生成Flutter程式碼——機器生成程式碼UIFlutter
- GitHub 啟動程式碼永久儲存計劃,為人類文明留“火種”?Github