超简单!只需简单几步便可为TA定制天气小助理!!!

微信图片_20190623161158.jpg

前提

虽然咱们天天都会查看天气,可是若是你可以用限制微信天天早上七点定时为TA推送天气预报,生活指数。直接为TA提供过滤好的天气信息,让TA一目了然。并且操做简单上手,任何人均可以零基础搭建,为你的TA带来一丝小惊喜。html

效果如图

微信图片_20190623160937.jpg

准备

  1. 运行环境 win10 Linux
  2. python 3.7 版本
  3. 一个微信小号
  4. 和风天气api
  5. 一个编辑器,就是文本编辑器也能够

主要代码

1. 安装 python 3.7 版本

小伙伴若是是 window 电脑能够直接在 Python官网 选择 **download **直接下载前端

微信截图_20190623145509.png

直接点击下载好的exe文件进行安装,记得将环境变量配置选项勾选上。以下图:python

微信图片_20190623145702.png

安装完成以后,咱们能够新建文件夹,从git 上将代码clone 下来。咱们直接在文件夹中摁住 shift + 鼠标右键 唤出 powerShell 查看 Python 版本。git

若是你们还有不明白的能够参考 Python安装教程github

2. 为项目安装相关模块

可经过 pip install 直接安装相关模块,如运行时还有因模块报错,也能够直接pip install 模块名直接安装便可。本项目以及后续相关都依赖于如下模块。web

#coding=utf8
import requests
from urllib.request import urlopen
from bs4 import BeautifulSoup
from urllib.parse import urlencode
from threading import Timer
import re
from wxpy import *
import  schedule
import  time
import http
import  json 
import datetime
import random
复制代码

重要: 其中 wxpy 模块是本项目以及后续项目中很重要的模块,就是由于这个开源项目,咱们才能使其与微信产生交互。json

wxpy

控制路由器、智能家居等具备开放接口的玩意儿
运行脚本时自动把日志发送到你的微信
加群主为好友,自动拉进群中
跨号或跨群转发消息
自动陪人聊天
逗人玩
...
复制代码

项目介绍以及安装方法,你们能够去主页想看wxpyapi

3. 初始化机器人

参考 登陆文档浏览器

bot = Bot(cache_path=True,console_qr = 1)
// 初始化机器人,扫码登陆 console_qr 是用于登陆的二维码展现默认为1
bot.enable_puid('wxpy_puid.pkl')
// 机器人启用 puid 属性,并指定 puid 所需的映射数据保存/载入路径
复制代码

4. 设置模拟请求接口相关

def api(url):
    header = {
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
        'Accept-Encoding': 'gzip, deflate',
        'Accept-Language': 'zh-CN,zh;q=0.8',
        'Connection': 'keep-alive',
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.235'
    }
    timeout = random.choice(range(80, 180))
    data = requests.get(url, headers=header, timeout=timeout)

    return data.json()
复制代码

header 中用来设置模拟请求接口的浏览器相关参数防止api 觉得咱们是爬虫抓取。并设定随机请求时间。微信

5. 设置相关请求,以及须要的信息字段拼接

def sendweather(city, xx):
    url = 'https://free-api.heweather.com/s6/weather/forecast?location='+city+'&key=和风key'
    PMurl = 'https://free-api.heweather.com/s6/air/now?parameters&location='+city+'&key=和风key'
    lifeurl = 'https://free-api.heweather.com/s6/weather/lifestyle?location='+city+'&key=和风key'
    
    temp = api(url)
    temp = temp['HeWeather6'][0]
    update = temp['update']
    now = temp['daily_forecast'][0]
    nowTime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')

    pm = api(PMurl)
    pm = pm['HeWeather6'][0]
    airnow = pm['air_now_city']

    life = api(lifeurl)
    
    life = life['HeWeather6'][0]
    life = life['lifestyle']
    result =  xx + city +' ---' + '\n'+ '\n'\
    + '          今每天气:'+ now['cond_txt_d'] + ' 转 ' + now['cond_txt_n'] + '\n'\
    + '          今天温度:'+ now['tmp_min'] + '°C ~ ' + now['tmp_max'] + '°C' + '\n'\
    + '          风向:'+ now['wind_dir'] + ' ' + now['wind_sc'] + '级 '+ now['wind_spd'] + '千米/小时'+ '\n'\
    + '          相对湿度:'+ now['hum'] + '%' + '\n'\
    + '          降水量:'+ now['pcpn'] + 'ml' + ',降水几率:'+ now['pop'] + '%' + '\n'\
    + '          能见度:'+ now['vis'] + '千米' + '\n'\
    + '------------------------------------------' + '\n'\
    + '今天空气质量:'+'\n'\
    + '          空气质量指数:'+ airnow['aqi']+'\n'\
    + '          主要污染物:'+ airnow['main']+'\n'\
    + '          空气质量:'+ airnow['qlty']+'\n'\
    + '          二氧化氮指数:'+ airnow['no2']+'\n'\
    + '          二氧化硫指数:'+ airnow['so2']+'\n'\
    + '          一氧化碳指数:'+ airnow['co']+'\n'\
    + '          pm10指数:'+ airnow['pm10']+'\n'\
    + '          pm25指数:'+ airnow['pm25']+'\n'\
    + '          臭氧指数:'+ airnow['o3'] +'\n'\
    + '------------------------------------------' + '\n'\
    + '一、'+ life[0]['txt']+'\n\n'\
    + '二、'+ life[1]['txt']+'\n\n'\
    + '三、'+ life[2]['txt']+'\n\n'\
    + '😄😊😉😍😘😚😜😝😳😁'+'\n\n'\
        
    result =  result + '发送时间:' +  nowTime + '\n'

    return result
复制代码

小伙伴能够在和风官网注册帐户,其中有免费的天气、生活指数api可使用。免费的已经能够知足咱们的需求。

6. 获取发送对象

def auto_send(msg):
    weather = sendweather('苏州', msg) 
    // 用来请求刚刚封装的请求天气
    
    Lie = bot.friends().search(u'Lie')[0]
    // 查找你要发送的对象,必须在你的好友列表里也能够为群
    后面是好友的昵称,记得不是备注名哦!
    
    WxpyChat = bot.groups().search('🍋 (๑• . •๑) ')
    // 获取要发送的群
    
    Lie.send(weather)
    // 发送
    
    WxpyChat.send(weather)
    // 能够设置多个发送对象
复制代码

7. 设置定时发送事件

schedule.every().day.at("13:56").do(auto_send, '早上好,')
schedule.every().day.at("13:57").do(auto_send, '晚上好,')
复制代码

8. 为程序设置持续运行保证项目一直在线

while True:
    schedule.run_pending()
    time.sleep(1)
复制代码

9. 至此,一个简单的天气小助理就完成了,能够按照以上步骤来实验一下。

10. 扩展

咱们还能够为其添加主动询问操做,好比发送城市,直接得到当前城市的天气,只须要在第6步添加以下代码便可。

Lie = bot.friends().search(u'Lie')
@bot.register(Lie)
// 注册对哪一个好友的回复生效
def auto_reply_all(msg):
if '苏州' in msg.text:
    nowWeather = sendweather(msg.text, msg) 
    msg.sender.send(nowWeather)
复制代码

git

本项目的代码以上传个人github,若有须要你们能够clone下载

wepython

注意事项

  1. 在window 下 能够用 powerShell 来运行python 程序。
  2. 微信号要用2017年以前注册的微信号,新注册的微信号不能在web网页登陆没法使用。
  3. 你们若是没有小号,须要购买的请注意对方诚信度。不要为了这个上当受骗。

下期预告

用python + wxpy 为TA定制贴心喝水小助理。

关于我

小夭同窗,页面切图仔。

想体验机器人的小伙伴能够加下面二维码,验证信息 【py】 自动经过拉你入群体验机器人其余功能。

微信截图_20190623160539.png

欢迎小伙伴关注个人微信 【小夭同窗】 一块儿学习前端相关知识。

微信图片_20190623160555.jpg