GitHub创建Github Action流水线来定时发送天气预报给email
1、天气预报API基本原理
curl wttr.in curl wttr.in/Shanghai curl wttr.in/wuhan
2、GitHub Actions参考文章
基于GITHUB ACTION的定时任务,真香!
https://blog.csdn.net/qq_40748336/article/details/110749375
上文参考的文章
GitHub Actions 入门教程_阮一峰
http://www.ruanyifeng.com/blog/2019/09/getting-started-with-github-actions.html
GitHub Actions 教程:定时发送天气邮件
http://www.ruanyifeng.com/blog/2019/12/github_actions.html
GITHUB ACTION 官方文档
https://docs.github.com/en/actions
阮一峰的天气预报推送邮箱github地址
https://github.com/ruanyf/weather-action/actions/runs/1482726321
3、参照阮一峰文档,实际遇到的问题
0邮件发送失败 定时发送天气预报能发了,原因是qq邮箱要开通smtp协议,qq邮箱还取消了额外密码保护,另外最重要的是action.yaml里面的secrets.MAIL_PASSWORD不是邮箱密码,是授权码。 额外密码保护能否加上不确定,稍后试一下——TODO 定时发送天气预报能发了! 但是还有其它问题 1 qq邮箱没有渲染HTML标签 2 那个命令wttr失效了 3 页面结果也是外国人的风格 1解决方案 -- content_type这个参数应该是取消了,同时要用html_body代替body 具体见下面截图 Warning: Unexpected input(s) 'content_type', valid inputs are ['connection_url', 'server_address', 'server_port', 'secure', 'username', 'password', 'subject', 'to', 'from', 'body', 'html_body', 'cc', 'bcc', 'reply_to', 'in_reply_to', 'ignore_cert', 'convert_markdown', 'attachments', 'priority']
2
不是命令失效了,是以前的一个入参ua的内容值可能过期了,curl去掉这个入参就可以了。
3
外国人风格的问题,只能通过换接口解决
不过找到的一个有道接口过期了,所以后面考虑还要换其它接口
但是接口过期很快,不要在这个上面纠结
不是参数失效,是因为UA入参的问题。
这个参数的效果是简化展示。
4、wttr常用的一些api
参考wttr官网
chcp 65001 curl -H "Accept-Language: zh-CN" -o result.html wttr.in/Shanghai curl -H "Accept-Language: zh-CN" -o result.html 'wttr.in/wuhan?m2&lang=nl' curl -H "Accept-Language: zh-CN" -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36" -o result.html 'wttr.in/wuhan' curl -H "Accept-Language: zh-CN" -H "user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36" 'wttr.in/wuhan' curl -H "Accept-Language: zh-CN" 'wttr.in/wuhan' curl -H "Accept-Language: zh-CN" -o result.html wttr.in/wuhan curl 'wttr.in/wuhan?format=v2' curl -o result.html 'wttr.in/wuhan?format=v2' curl v3.wttr.in/wuhan.sxl curl 'wttr.in/wuhan' curl 'wttr.in/wuhan?format=4&m' curl -H "accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" 'wttr.in/wuhan' curl -H "Accept-Language: zh-CN" -H "accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" -o result.html 'wttr.in/wuhan' curl 'https://wttr.in/wuhan' curl -o result.html 'https://wttr.in/wuhan' #!/bin/sh set -eux CITY=Shanghai LANGUAGE="zh-CN" UNIT=m UA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36" curl \ -H "Accept-Language: $LANGUAGE" \ -H "User-Agent: $UA" \ -o result.html \ wttr.in/wuhan set -eux CITY=Shanghai LANGUAGE="zh-CN" UNIT=m UA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36" curl \ -H "Accept-Language: $LANGUAGE ;User-Agent: $UA" \ -o result.html \ wttr.in/wuhan curl -d 'user=万猫学社&pwd=onemore' http://csdn.net/login curl -k --insecure 'https://wttr.in/wuhan' curl -i -k --insecure http://www.csdn.net curl -i -k --insecure 'https://wttr.in/wuhan' curl -i -k --insecure -H "Content-Type: text/html; charset=UTF-8" 'https://wttr.in/wuhan' curl -i -k --insecure -H -v "Content-Type: text/html; charset=UTF-8" 'https://wttr.in/wuhan' curl -i -k --insecure -v -H "Content-Type: text/html; charset=UTF-8" 'https://wttr.in/wuhan' curl 'wttr.in/wuhan?m2' curl -o 123.txt 'wttr.in/wuhan' set -eux CITY=Shanghai LANGUAGE="zh-CN" UNIT=m UA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36" curl \ -H "Accept-Language: $LANGUAGE" \ -A "$UA" \ -o result.html \ wttr.in/wuhan curl -H "Content-Type: text/html; charset=utf-8" wttr.in/wuhan
5、总结:
结果多次尝试,发现html到了邮箱之后会乱码 找不到不乱码的方式。但是最终已经弄了2个简单的邮件推送定时任务,一个按小时推,一个按照天来推。
https://github.com/timeispreciousFeng/weather-by-wttr/blob/main/weather-hour.sh
发天气预报的关键点还是提供天气信息的稳定api