你可能每天都会去看女朋友的当天气温如何,并天天都在嘘寒问暖;
可能某一天的你早上起来忘了这件事情,女朋友就会大闹说你不关心她了...
为了杜绝这种事情再次发生,夏柔给大家写了一个Python自动化推送生活早报的脚本~
当你拥有了这款Python每日早报脚本,你的女朋友一定会越来越爱上你!
(此处省略一万个营销文字....)
教程开始
本篇教你实现全自动推送每日早报,对接腾讯云短信
提前准备:
- 云服务器1台
- 腾讯云短信包(1000条)
温馨渣男提示:一天一条,一年360条整计算,你可以同时找3个女朋友左右~
如何对接腾讯云短信?
首先来到腾讯云短信控制台(立即前往)如图:
点击 快速入门 => 开始创建 你的短信模板
第二步如实填写相关信息即可;
注:图中的“ 夏柔的博客 ” 为你备案网站的名称,你备案的时候叫什么名字这里就写什么。
审核通过后,如图所示(你添加的签名):
接下来前往 国内短信 => 正文模板管理 添加短信模板;
短信内容里的变量需要使用{1} 来代替,递增规则,从1开始。
给大家分享几个我的短信模板
- 叮咚~今日份早报指数请查收:当前城市:{1},穿衣指数:{2},化妆指数:{3},心情指数:{4},运动指数:{5}
- 叮咚~,今日份早报请查收:您当前所在的{1} 室外温度:{2},穿衣指数:{3};
- 叮咚~,今日份早报请查收:您当前所在的{1} 室外温度:{2},穿衣指数:{3};最后送你一段文化谚语:{4},{5}。
- 早上好呀主人,{1}的今日穿衣指数:{2},室外温度:{3}。
添加好后一般审核的时间在2个小时以内,不过通常十几分钟就审核完毕了。
接下来进入 应用管理 => 应用列表 => 创建应用 添加SDKAppID,如图:
注意:点击创建后生成的SDKAppID切勿分享给别人!
然后访问Api密钥管理控制台(立即前往),创建你的APPID以及密钥;
下图是夏柔创建好的APPID以及密钥,切记:创建好后一定妥善保管,切勿泄漏!
其他API申请
其中每日早报(包含天气、生活穿衣指数、文化谚语等需要另申请Api);
全国天气预报、生活穿衣指数申请网站:https://www.jisuapi.com/api/weather/
文化谚语申请网站:https://www.tianapi.com/apiview/128
这些接口都是付费的,如果你不想花钱的话,联系夏柔QQ:15001904 免费赠送密钥哦~
部署项目
首先下载源代码:
使用 vscode 或者 Pycharm 打开此实例(啥都没有直接文本打开):
注意:一定要看图操作,别到时候说不会!!!
上面都弄好后,接下来弄腾讯云的相关配置信息:
SecretId、SecretKey 获取入口:https://console.cloud.tencent.com/cam/capi
SDKAppID 获取入口:https://console.cloud.tencent.com/smsv2/app-manage
APPID 获取入口:https://console.cloud.tencent.com/smsv2/csms-sign
短信模板 获取入口:https://console.cloud.tencent.com/smsv2/csms-template
(称得上保姆级教学了...)
一切都配置好后,让我们看看实际效果:
手机接收短信:
其中,文化谚语API代码:
# 文化谚语
url = 'http://api.tianapi.com/proverb/index?key=你的密钥'
response = requests.get(url)
res = json.loads(response.text)
# res_2 = res.decode('utf-8')
yan_shangju = res['newslist'][0]['front']
yan_xiaju = res['newslist'][0]['behind']
生活指数:
# 生活指数
url = 'https://api.jisuapi.com/weather/query?appkey=你的密钥&city=沈阳'
response = requests.get(url)
res = json.loads(response.text)
# 获取当前城市
wpon_city = res['result']['city']
# 获取当前城市的温度
wpon_temp = res['result']['temp']
# 获取当前城市的穿衣指南
wpon_detail = res['result']['index'][6]['detail']
# 获取前12句
wpon_detail2 = wpon_detail[0:12]
部署教程
注:使用Pycharm工具,Python3.8版本
首先在终端打开当前项目路径,并输入:
pip install requests
输入命令后出现上面的报错,则是pip命令版本需要升级,在终端输入:pip install --upgrade pip 即可
接下来输入腾讯云模块包命令:
pip install tencentcloud-sdk-python
若图片中没有红色波浪线则代表所有模块包已经安装完毕;
接下来直接运行实例项目即可。
部署到云服务器教程
云服务器一般默认的Python版本为2.7,如果你不确定的话请输入指令:python -V 查看当前版本,如图:
切换 Python3.8 方法如下
首先执行以下命令
wget https://cdn.wpon.cn/python/Python-3.8.1.tgz && ls
右边的 Python-3.8.1.tgz 复制到剪贴板,然后在命令行输入:
tar -zxvf Python-3.8.1.tgz
接下来输入以下命令:
cd Python-3.8.1 && ./configure
然后输入 make 命令(有可能会慢一点,这个时候可以多看看上面的教程认真读一读):
make
最后输入 make install 即可~
然后直接复制粘贴以下命令到服务器上
mv /usr/bin/python /usr/bin/python22
ln -s /usr/local/bin/python3 /usr/bin/python
现在可以看到我们的Python版本已经切换到了3.8~
现在,上传脚本,输入以下命令:
yum install lrzsz
提示图中报错,请进入 /usr/bin/yum 、/usr/libexec/urlgrabber-ext-down 文件中的第一行为#!/usr/bin/python2.7 即可解决
命令:vi /usr/bin/yum 、vi /usr/libexec/urlgrabber-ext-down
然后输入字母 i 进入编辑模式;
修改好后,按左上角esc键,并输入 :wq (注意有冒号)后回车即可,如图:
现在可以看到,已经可以使用 yum 命令了
接下来输入上面 安装rz命令:
yum install lrzsz
安装好后,输入以下命令创建目录,并上传你的python项目,如图:
mkdir /pythonproject && cd /pythonproject && rz
看一下文件是否已经上传了:
现在让我们尝试运行一下,输入以下命令并回车:
python weather-wpon.py
啊哦,缺少 requests 模块包,输入 pip install requests 即可解决~
别忘记升级一下pip命令:
pip install --upgrade pip
然后再输入:
pip install requests
最后,再把腾讯云模块包安装上:
pip install tencentcloud-sdk-python
扩展小知识
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
上文黄色的警告只是提醒你创建一个虚拟环境去运行pip命令,否则容易搞乱系统环境,如果你是小白的话,这个可以完全忽略。
现在,惊人激动的时刻到了;
输入命令 python weather-wpon.py 回车看看效果:
哦豁,发送成功~
如何实现自动发送短信推送?
输入以下命令:
yum install crontabs
systemctl enable crond
systemctl start crond
依次输入后,查看当前crond状态,如图:
开始设置新任务,输入命令:vi /etc/crontab
并回车;
然后输入字母 i 进入编辑模式;
然后输入命令:
* 6 * * * cd /pythonproject && python weather-wpon.py
修改好后,按左上角esc键,并输入 :wq (注意有冒号)后回车即可,如上图
然后输入以下命令,并重启 cornd :
crontab /etc/crontab
service crond start
查看当前任务命令:
crontab -l
现在,每天凌晨6点推送短信早报已经大功告成~
这是夏柔今天早上6点收到的短信:
如果需要设置其他时间段,请参考以下文档:
.---------------- 分钟 (0 - 59)
| .------------- 小时 (0 - 23)
| | .---------- 每月的第几天 (1 - 31)
| | | .------- 每年的几月 (1 - 12) OR jan,feb,mar,apr ...
| | | | .---- 每周 (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
| | | | |
设置什么时间发送,就设置哪块;
* 6 * * * 命令
最后,如有不懂的地方,记得联系夏柔QQ:15001904
都是原创,大量原创,转载请注明来源~万分感谢!