文章目录

  • 前言
  • 一、QQpusher介绍
    • 1,简介
    • 2,使用步骤
  • 二、详细代码
    • 项目介绍
    • 主要代码部分介绍
    • 源代码
  • 总结

前言

本文主要使用的是
1,QQpusherAPI接口推送服务
2,Python requests 模块

消息推送主要使用QQpusher的接口,非常感谢!


提示:本文仅提供娱乐,学习使用。如有侵权请联系删除。

一、QQpusher介绍

1,简介

QQpusher是什么(引用官网)

QQPusher (QQ推送服务)是一个使用QQ号作为通道的,实时信息推送平台,你可以通过调用API的方式,把信息推送到QQ上,无需安装额外的软件,即可做到息实时通知。 你可以使用QQPusher来做服务器报警通知、抢课通知、抢票通知,信息更新提示等。

简述

  • 通过调用QQpusher的API接口向指定QQ发送信息;

2,使用步骤

  1. 到官网的后台页面扫描二维码登录-----官网地址
  2. 登录进去以后从页面里面获取Token (后面代码里面有用)
  3. 需要你需要发送的QQ号添加QQpusher为好友才能发送消息
  4. 扫描下面的二维码就是QQpusher的QQ,添加好友
  5. 可以进入到官网提供的演示测试地址

二、详细代码

项目介绍

  • 功能一:就是在每天的7,13,17点发送消息到指定的下面五个小时的天气信息到指定的人的QQ
  • 功能二:在晚上十点的时候发送第二天的天气情况到指定的QQ

主要代码部分介绍

QQ消息发送

def SendQQMsg(qq, msg, status=0):"""发送指定消息到指定qq 上:param status: 标记是否为第一次调用 以方便二次回调:param qq: QQ号:param msg: 发送的消息:return: 返回是否发送成功 0 1"""try:response = requests.get(Config.SendUrl.format(Config.Token, qq, msg))result = response.json()if status == 0 and result["code"] != 200:SendQQMsg(qq, msg, status=1)except Exception as e:tolog(str(e))

爬取天气信息

def getWeatherNight2(ToWhos):"""晚上获取明天的天气信息 接口3需要转换成msg的格式:param ToWhos: 发送人"""response = requests.get(Config.WeatherUrl3, headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36 "})results = re.compile("<ul>(.*?)</ul>", re.S).findall(response.text)[0]results = re.compile("<li .*?>(.*?)</li>", re.S).findall(results)weatherInfo = {}for result in results:if "明天天气" in result:weatherInfo["type"] = re.compile("<i>(.{1,3})</i>").findall(result)[0]weatherInfo["high"] = re.compile('<span class="tem-show">(\w{1,2})~(\w{1,2})°</span>').findall(result)[0]weatherInfo["fx"] = re.compile('<span class="wind-name">(.*?)</span>').findall(result)[0]for who in ToWhos:Msg = """---明天天气---天气:{}最高温度:{}最低温度:{}风力:{}{}""".format(weatherInfo["type"],weatherInfo["high"][0],weatherInfo["high"][1],weatherInfo["fx"],"{},记着明天带伞哦!".format(who["name"]) if "雨" in weatherInfo["type"] else "")SendQQMsg(who["qq"], Msg)def getWeatherNight(ToWhos, city=Config.DEFAULT_CITY):"""晚上获取明天的天气信息 接口2需要转换成msg的格式:param ToWhos: 发送人:param city: 接口的城市拼音"""response = requests.get(Config.WeatherUrl2.format(Config.WeatherCityCode[city]))weatherInfo = response.json()["data"]["forecast"][1]for who in ToWhos:Msg = """---明天天气---天气:{}最高温度:{}最低温度:{}风力:{}温馨提示:{}{}""".format(weatherInfo["type"],weatherInfo["high"],weatherInfo["low"],weatherInfo["fx"] + weatherInfo["fl"],weatherInfo["notice"], "{},记着明天带伞哦!".format(who["name"]) if "雨" in weatherInfo["type"] else "")SendQQMsg(who["qq"], Msg)def TheTimeWeather(ToWhos, city=Config.DEFAULT_CITY):"""接口1指定特定的时间发送:param ToWhos: 发送给谁个:param city: 接口的城市拼音:return: 当前时间后面五个小时的天气信息字符串"""try:responsehtml = requests.get(Config.WeatherUrl1[0], headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36 "})indexhtml = responsehtml.textatag = re.compile('<a href="//www.weaoo.com/{}.*?.html" title=".*?天气一周查询">.*?天气</a>'.format(city)).findall(indexhtml)[0]infourl = re.compile('<a href="(.*?)" title=".*?天气一周查询">.*?天气</a>').findall(atag)[0]inforeponse = requests.get("http:" + infourl, headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36 "})inforeponse.encoding = "utf-8"infohtml = inforeponse.texttimeweathers = re.compile('<h2 class="lborder">合肥24小时天气预报</h2>(.*?)</ul>', re.S).findall(infohtml)[0].replace("\n", "")timewts = re.compile('<li><span>(..)点</span><span><i class="wi .*?"></i></span><span>(.{1,3})</span><span>(.*?)</span><span title="(.*?)" class="aqi-bg-1">(.*?)</span></li>').findall(timeweathers)fiveHoursWeatherMsg = []Tips = ""# 获取当前时间 小时nowHour = time.localtime(time.time()).tm_hourfor hour in range(nowHour, nowHour + 5):if hour >= 24:hour = hour - 23for timewt in timewts:if int(timewt[0]) == hour:fiveHoursWeatherMsg.append("{0[0]}点,{0[1]},{0[2]},{0[3]}".format(timewt[:-1]))if Tips == "" and "雨" in timewt[1]:Tips = "{}点有雨,记得带伞".format(timewt[0])for who in ToWhos:Msg = """---接下来五个小时天气---{0[0]}{0[1]}{0[2]}{0[3]}{0[4]}{1},{2}""".format(fiveHoursWeatherMsg, who["name"], Tips)SendQQMsg(who["qq"], Msg)except Exception as e:tolog(str(e))SendQQMsg("358694798", str(e))

创建定时任务

def createTheTimeProcess(date):"""创建一个线程指定时间发生消息(特定时间发送):param date: 指定的时间  小时:return:"""now = time.localtime(time.time())# 获取时间差StepTime = int(time.mktime(time.strptime('{}-{}-{} {}:00:00'.format(now.tm_year, now.tm_mon, now.tm_mday, date),'%Y-%m-%d %H:%M:%S'))) - int(time.time())process = Timer(StepTime, sendTheTime)process.start()tolog("[{}]:设置了一个{}({})秒后的日程。".format(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), StepTime, date))def createNightTimeProcess(date=22):"""创建一个线程指定时间发生消息(晚上发送 默认22点):param date: 指定的时间  小时:return:"""now = time.localtime(time.time())# 获取时间差StepTime = int(time.mktime(time.strptime('{}-{}-{} {}:00:00'.format(now.tm_year, now.tm_mon, now.tm_mday, date),'%Y-%m-%d %H:%M:%S'))) - int(time.time())t4 = Timer(StepTime, sendNight)t4.start()tolog("[{}]:设置了一个{}({})秒后的日程。".format(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), StepTime, date))

主调程序

def mains():# 消息启动通知sendStart()tolog("程序开始......")# 先根据当前程序的启动时间判断 然后启动接下来时间的消息推送now = time.localtime(time.time())nowH = now.tm_hourif 1 < nowH < 22:tolog("即将设置今天接下来的定时任务。")if nowH < 7:createTheTimeProcess(7)createTheTimeProcess(13)createTheTimeProcess(17)createNightTimeProcess()elif nowH < 13:createTheTimeProcess(13)createTheTimeProcess(17)createNightTimeProcess()elif nowH < 17:createTheTimeProcess(17)createNightTimeProcess()else:# createNightTimeProcess(18)createNightTimeProcess()while True:nowH = time.localtime(time.time()).tm_hournowM = time.localtime(time.time()).tm_min# 判断时间是否为新一天的开始 如果是 开启今天的消息推送if nowH == 0 and nowM == 1:tolog("开始今天的定时任务!")createTheTimeProcess(7)createTheTimeProcess(13)createTheTimeProcess(17)createNightTimeProcess()# 每四十秒执行一次以防止每分钟只可以执行一次time.sleep(40)

源代码

Github地址

总结

到此就结束了,可以给你的女盆友操作一下了!
学生作品,不喜勿喷!

定时向QQ推送天气消息相关推荐

  1. 微信小程序云开发定时推送订阅消息

    微信小程序云开发定时推送订阅消息 1.找到自己想要的模板 (1)点击订阅消息 (2)点击公共模板库,然后找到想要选用的模板,点击选用. (3)在我的模板里面,复制模板id. 如果找不到想要用的模板,可 ...

  2. 企业微信推送天气、课表、纪念日、每日一句等(含源码和详细步骤)

    目录 一.引言与源码 二.企业微信的注册与配置 1.注册 2.配置 (1)加入企业 (2)开启微信插件 (3)测试是否能在微信接收消息 3.创建机器人 三.推送天气模块 (1)注册 (2)创建项目 ( ...

  3. Github Actions + 腾讯云函数实现微信推送天气、课表,上课提醒,每日晚安心语

    前言: 最近发现dy很火的一个小项目,刚好想学习一下微信公众号推送相关知识.基于别人的项目(只有天气推送,原作者忘了抱歉!),增加了一些自己的需求:1.每日推送天气的时候顺便推送当天的课程: 2.如果 ...

  4. iOS开发之消息推送 —— 远程消息推送入门

    每次看到iOS的远程消息推送,总是感觉很头大,即便后来项目都做完了,还是觉得摸不着远程推送的脉门,网上介绍的资料虽多,但不是写的太简单了,就是写的太详细了,不能一下抓住要点,今天终于能够抽出点时间,来 ...

  5. 【给你的臭宝推送天气的专属公众号】--理工男的浪漫

    大家好,今天来分享一期网络上比较火的情侣专属公众号推送天气信息.有些人就比较好奇了,这些是如何实现的,接下来,我就一步一步向大家介绍是如何制作的. 目录 申请平台接口 登录平台 新增测试模板 conf ...

  6. php 公众号队列推送,微信消息推送

    微信消息推送 微信公众平台和小程序虽然都是腾讯开发,但是其是俩个独立的平台,包括账号也是独立存在,所以小程序和公众平台不可以使用同一个账号注册使用. 因是俩个平台,所以微信公众平台的用户openId和 ...

  7. 自动推送天气信息(Python+腾讯云函数+qmsg酱+和风天气)

    环境:python3.6 + 腾讯云函数 + qmsg酱 + 和风天气 1.Qmsg酱: 打开官网:https://qmsg.zendee.cn/index.html 登录管理台,拿到key,留着一会 ...

  8. [送给她]最近比较火的给她推送天气,恋爱倒计时等功能教程

    [送给她]最近比较火的给女朋友推送天气,恋爱倒计时等功能教程 蓝桉已遇释槐鸟,不爱万物唯爱你. 释槐来去无归期,梦回已逐浮云散. 一段恋爱的描述 视频教程 链接小程序 文字教程(PC操作) 下载需要的 ...

  9. 公众号推送天气和问候的项目

    Hello,大家好,最近我在Github发布了一个公众号推送天气和问候的项目,这里跟大家讲下如何使用 #1.小白篇 将分为以下几个步骤 相关信息 1.注册一个Github账号 2.下载源码 3.注册微 ...

最新文章

  1. 监控USB设备插入/拔出写法2
  2. mysql排序由低到高_MySQL入门系列(四)—— 排序查询
  3. 影响PoE交换机不稳定的因素
  4. BAT架构师进阶:大型网站架构书籍推荐
  5. shell与export命令
  6. php 匹配div正则表达式,Php正则表达式匹配div
  7. linux环境下如何查看solr版本,Solr环境搭建(linux)
  8. python调用opengl_python的opengl操作
  9. mysql优化--explain分析sql语句执行效率
  10. matlab 中 x 轴的各种设置
  11. 高等数学微积分公式大全
  12. mpush部署实现与测试
  13. Java —— EJB 到底是什么
  14. android平板改成电视盒子,【当贝市场】废旧手机改造成电视盒子详细教程
  15. 华为Mate30系列手机提前发布为哪般?
  16. java中求两个数的最小公倍数,最大公约数的简便方法
  17. 《Cocos Creator游戏实战》滚动数字
  18. 老树新芽,在ES6下使用Express
  19. linux cadaver 命令,备份Linux系统的数据到坚果云
  20. php mysql抽奖转盘_thinkphp 微信抽奖源码PHP前后台+转盘+数据库完整示例

热门文章

  1. 利用opencv获取网络摄像头数据并显示报错 select() timeout
  2. dataTable固定列固定行
  3. 转帐的种类:大额 小额 同城
  4. python函数应用
  5. 《华为到该炸掉研发金字塔的时候了》[转]
  6. ISPRS2018/云检测:Cloud/shadow detection based on spectral indices for multi/hyp基于光谱指数的多/高光谱光学遥感成像仪云/影检测
  7. Unity调用USB摄像头开启与关闭
  8. 庞博 上海交大计算机系,上海交大电子信息与电气工程学院卢策吾团队在人工智能《自然》子刊提出时空概念提取算法...
  9. 物理服务器、VPS、虚拟主机、云服务器分别有什么作用
  10. 生鲜配送系统有哪些功能?搭建生鲜配送系统有什么优势?