文章目录

  • 前言
  • 一、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. 数字图像处理:(4)二阶微分在数字图像处理中的应用
  2. 2014年百度之星程序设计大赛 - 资格赛 1004 Labyrinth(Dp)
  3. Add Binary - LeetCode
  4. 三、入门爬虫,爬取豆瓣电影
  5. 数据库表连接总结:等值连接, 自然连接,左外连接,右外连接,内连接,全外连接;
  6. 三星有网络显示无网络连接到服务器,三星s5296连接了网络为什么不能用 看完这些原因就知道了...
  7. linq结果转换object_你知道Object.entries(),但你还知道有Object.fromEntries()吗?
  8. linux 查找文件_LINUX常用命令全集
  9. c语言类静态数据成员函数,鸡啄米:C++编程入门系列之二十一(C++程序设计必知:类的静态成员)...
  10. 移动机器人建图与导航代码实现——1.Hector SLAM
  11. 时间太少,如何阅读?
  12. 如何检查对象是否为数组?
  13. 15.Linux 高性能服务器编程 --- 进程池和线程池
  14. 获取base64编码格式的图片大小
  15. OpenCV——分离颜色通道,图像对比度,亮度调整,离散傅里叶变换(10)
  16. 22021年江苏高考成绩查询,江苏省教育考试院2021年江苏高考成绩查询时间及系统入口...
  17. tomcat的夏时令问题(时区问题)
  18. 小说里的编程 【连载之二十九】元宇宙里月亮弯弯
  19. flutter-拨打电话功能
  20. linux的nfs配置文件的编写信息(学习day1)

热门文章

  1. JS开发HTML5游戏《神奇的六边形》(七)
  2. Invalid bound statement 无效的绑定 的解决办法!
  3. 2022华为开发者大赛 首届·厦门开发者创新应用赛在厦门举办
  4. 如何成为优秀计算机学者 - 高文老师
  5. 程序员-实用在线小工具
  6. 小米电视刷android系统升级,小米电视2系统版本多久更新一次
  7. 2023,创客永不停歇
  8. 轻量级的Java快速开发平台
  9. ListView的BeginUpdate()和EndUpdate()作用
  10. 2018年高级职称计算机考试,职称计算机考试_2018年职称计算机考试EXCEL巩固题练习...