V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
pianjiao
V2EX  ›  分享创造

超简单!只要三步即可为 TA 定制天气小助理!

  •  
  •   pianjiao · 2019-06-23 16:41:22 +08:00 · 2459 次点击
    这是一个创建于 2014 天前的主题,其中的信息可能已经有所发展或是发生改变。

    微信图片_20190623161158.jpg

    前提

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

    效果如图

    微信图片_20190623160937.jpg

    准备

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

    主要代码

    1. 安装 python 3.7 版本

    小伙伴如果是 window 电脑可以直接在 Python 官网 选择 **download **直接下载

    微信截图_20190623145509.png

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

    微信图片_20190623145702.png

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

    如果大家还有不明白的可以参考 Python 安装教程

    2. 为项目安装相关模块

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

    #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 模块是本项目以及后续项目中很重要的模块,就是因为这个开源项目,我们才能使其与微信产生交互。

    wxpy

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

    项目介绍以及安装方法,大家可以去主页想看wxpy

    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'\
        + '1、'+ life[0]['txt']+'\n\n'\
        + '2、'+ life[1]['txt']+'\n\n'\
        + '3、'+ life[2]['txt']+'\n\n'\
        + '😄😊😉😍😘😚😜😝😳😁'+'\n\n'\
            
        result =  result + '发送时间:' +  nowTime + '\n'
    
        return result
    

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

    git

    本项目的代码以上传我的 github,如有需要大家可以 clone 下载

    wepython

    注意事项

    1. 在 window 下 可以用 powerShell 来运行 python 程序。
    2. 微信号要用 2017 年之前注册的微信号,新注册的微信号不能在 web 网页登录无法使用。
    3. 大家如果没有小号,需要购买的请注意对方诚信度。不要为了这个上当受骗。

    下期预告

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

    关于我

    小夭同学,页面切图仔。

    想体验机器人的小伙伴可以加下面二维码,验证信息 ** [ py ] ** 自动通过拉你入群体验机器人其他功能。

    微信截图_20190623160539.png

    欢迎小伙伴关注我的微信 ** [小夭同学] ** 一起学习前端相关知识。

    微信图片_20190623160555.jpg

    12 条回复    2019-06-25 20:36:05 +08:00
    pianjiao
        1
    pianjiao  
    OP
       2019-06-23 16:43:00 +08:00
    具体代码请 看 git 地址
    npe
        2
    npe  
       2019-06-23 16:48:31 +08:00 via Android
    2015 年之后注册的微信,都无法使用网页版,想知道 api 是哪来的?
    Abbeyok
        3
    Abbeyok  
       2019-06-23 16:54:07 +08:00 via Android   ❤️ 4
    男:这好酷啊,我要为女神定制
    女:什么玩意,拉黑
    pianjiao
        4
    pianjiao  
    OP
       2019-06-23 18:03:38 +08:00 via Android
    @Abbeyok 哈哈,真相
    ShuoHui
        5
    ShuoHui  
       2019-06-23 18:52:40 +08:00 via iPhone
    @Abbeyok 太真实了
    Ekid
        6
    Ekid  
       2019-06-24 09:53:16 +08:00
    去年我就给女神搞过这个。。屁用也没有
    pianjiao
        7
    pianjiao  
    OP
       2019-06-24 11:16:05 +08:00 via Android
    @Ekid 😂😂😂
    shuizhengqi
        8
    shuizhengqi  
       2019-06-24 14:27:32 +08:00
    点进来之前,就知道这种只需几步就能实现机器人的,基本都是 python+wxpy+图灵机器人
    copycoder
        9
    copycoder  
       2019-06-24 16:36:13 +08:00
    楼主,我很喜欢你的头像,可以分享下同类型图片的地址吗,谢谢~
    pianjiao
        10
    pianjiao  
    OP
       2019-06-25 11:52:48 +08:00 via Android
    @copycoder 晚上给你找找,或者直接搜百度 qq 表情大图
    siknet
        11
    siknet  
       2019-06-25 12:10:45 +08:00 via Android
    作为过来人,我要说一句实话:搞这么多名堂,不如送根 DIOR 999 更实用
    pianjiao
        12
    pianjiao  
    OP
       2019-06-25 20:36:05 +08:00 via Android
    @siknet 正解
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   970 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 20:24 · PVG 04:24 · LAX 12:24 · JFK 15:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.