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
View Code

 

5、总结:

结果多次尝试,发现html到了邮箱之后会乱码  找不到不乱码的方式。但是最终已经弄了2个简单的邮件推送定时任务,一个按小时推,一个按照天来推。

https://github.com/timeispreciousFeng/weather-by-wttr/blob/main/weather-hour.sh

 

发天气预报的关键点还是提供天气信息的稳定api

posted @ 2023-05-18 11:05  WhoKnows1  阅读(112)  评论(9编辑  收藏  举报