超簡單!只需簡單幾步便可爲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
相關文章
相關標籤/搜索