Python利用itchat模块定时给朋友发送微信信息

目录
  • 功能
  • 数据来源
  • 实现效果
  • 代码说明
    • 目录结构
    • 核心代码
  • 项目运行
    • 安装依赖
    • 参数配置

功能

定时给女朋友发送每日天气、提醒、每日一句。

数据来源

每日一句和上面的大佬一样也是来自ONE·一个

天气信息来自SOJSON

实现效果

代码说明

目录结构

city_dict.py :城市对应编码字典

config.yaml :设置定时时间,女友微信名称等参数

GFWeather.py:核心代码

requirements.txt:需要安装的库

run.py:项目运行类

核心代码

GFWeather.py

class gfweather:
 headers = {
 "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36",
 }
 # 女朋友的用户id
 bf_wechat_name_uuid = ''
 def __init__(self):
 self.city_code, self.start_datetime, self.bf_wechat_name, self.alarm_hour, self.alarm_minute = self.get_init_data()
 def get_init_data(self):
 '''
 初始化基础数据
 :return:
 '''
 with open('config.yaml', 'r', encoding='utf-8') as f:
 config = yaml.load(f)
 city_name = config.get('city_name').strip()
 start_date = config.get('start_date').strip()
 wechat_name = config.get('wechat_name').strip()
 alarm_timed = config.get('alarm_timed').strip()
 init_msg = f"每天定时发送时间:{alarm_timed}\n女友所在城市名称:{city_name}\n女朋友的微信昵称:{wechat_name}\n在一起的第一天日期:{start_date}"
 print(u"*" * 50)
 print(init_msg)
 # 根据城市名称获取城市编号,用于查询天气。查看支持的城市为:http://cdn.sojson.com/_city.json
 city_code = city_dict.city_dict.get(city_name)
 if not city_code:
 print('您输出城市无法收取到天气信息')
 start_datetime = datetime.strptime(start_date, "%Y-%m-%d")
 hour, minute = [int(x) for x in alarm_timed.split(':')]
 # print(hour, minute)
 return city_code, start_datetime, wechat_name, hour, minute
 def is_online(self, auto_login=False):
 '''
 判断是否还在线,
 :param auto_login:True,如果掉线了则自动登录。
 :return: True ,还在线,False 不在线了
 '''
 def online():
 '''
 通过获取好友信息,判断用户是否还在线
 :return: True ,还在线,False 不在线了
 '''
 try:
 if itchat.search_friends():
 return True
 except:
 return False
 return True
 if online():
 return True
 # 仅仅判断是否在线
 if not auto_login:
 return online()
 # 登陆,尝试 5 次
 for _ in range(5):
 # 命令行显示登录二维码
 # itchat.auto_login(enableCmdQR=True)
 itchat.auto_login()
 if online():
 print('登录成功')
 return True
 else:
 return False
 def run(self):
 # 自动登录
 if not self.is_online(auto_login=True):
 return
 # 定时任务
 scheduler = BlockingScheduler()
 # 每天9:30左右给女朋友发送每日一句
 scheduler.add_job(self.start_today_info, 'cron', hour=self.alarm_hour, minute=self.alarm_minute)
 scheduler.start()
 def start_today_info(self):
 print("*" * 50)
 print('获取相关信息...')
 dictum_msg = self.get_dictum_info()
 today_msg = self.get_weather_info(dictum_msg)
 print(f'要发送的内容:\n{today_msg}')
 if self.is_online(auto_login=True):
 # 获取好友username
 if not self.bf_wechat_name_uuid:
 friends = itchat.search_friends(name=self.bf_wechat_name)
 if not friends:
 print('昵称错误')
 return
 self.bf_wechat_name_uuid = friends[0].get('UserName')
 itchat.send(today_msg, toUserName=self.bf_wechat_name_uuid)
 print('发送成功..\n')
 def get_dictum_info(self):
 '''
 获取格言信息(从『一个。one』获取信息 http://wufazhuce.com/)
 :return: str 一句格言或者短语
 '''
 print('获取格言信息..')
 user_url = 'http://wufazhuce.com/'
 resp = requests.get(user_url, headers=self.headers)
 soup_texts = BeautifulSoup(resp.text, 'lxml')
 # 『one -个』 中的每日一句
 every_msg = soup_texts.find_all('div', class_='fp-one-cita')[0].find('a').text
 return every_msg
 def get_weather_info(self, dictum_msg=''):
 '''
 获取天气信息。网址:https://www.sojson.com/blog/305.html
 :param dictum_msg: 发送给朋友的信息
 :return:
 '''
 print('获取天气信息..')
 weather_url = f'http://t.weather.sojson.com/api/weather/city/{self.city_code}'
 resp = requests.get(url=weather_url)
 if resp.status_code == 200 and resp.json().get('status') == 200:
 weatherJson = resp.json()
 # 今日天气
 today_weather = weatherJson.get('data').get('forecast')[1]
 locale.setlocale(locale.LC_CTYPE, 'chinese')
 today_time = datetime.now().strftime('"%Y年%m月%d日 %H:%M:%S"')
 # 今日天气注意事项
 notice = today_weather.get('notice')
 # 温度
 high = today_weather.get('high')
 high_c = high[high.find(' ') + 1:]
 low = today_weather.get('low')
 low_c = low[low.find(' ') + 1:]
 temperature = f"温度 : {low_c}/{high_c}"
 # 风
 fx = today_weather.get('fx')
 fl = today_weather.get('fl')
 wind = f"{fx} : {fl}"
 # 空气指数
 aqi = today_weather.get('aqi')
 aqi = f"空气 : {aqi}"
 day_delta = (datetime.now() - self.start_datetime).days
 delta_msg = f'宝贝这是我们在一起的第 {day_delta} 天'
 today_msg = f'{today_time}\n{delta_msg}。\n{notice}\n{temperature}\n{wind}\n{aqi}\n{dictum_msg}\n来自最爱你的我。'
 return today_msg

项目运行

安装依赖

使用 pip install -r requirements.txt 安装所有依赖

参数配置

config.yaml

#每天定时发送的时间点,如:8:30
alarm_timed: '9:30'
# 女友所在城市名称
city_name: '桂林'
# 你女朋友的微信名称
wechat_name: '古典'
# 从那天开始勾搭的
start_date: '2017-11-11'

到此这篇关于Python利用itchat模块定时给朋友发送微信信息的文章就介绍到这了,更多相关Python itchat定时发送微信信息内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python3 itchat实现微信定时发送群消息的实例代码

    一.简介 1,使用微信,定时往指定的微信群里发送指定信息. 2,需要发送的内容使用excel进行维护,指定要发送的微信群名.时间.内容. 二.py库 1,itchat:这个是主要的工具,用于连接微信个人账号接口.以下是一些相关的知识点网站. 2,xlrd:这个是用来读Excel文件的工具. 3,apscheduler:这个是用来定时调度时间的工具. 三.实例代码 # coding=utf-8 from datetime import datetime import itchat import x

  • python使用itchat模块给心爱的人每天发天气预报

    本文实例为大家分享了python给心爱的人每天发天气预报的具体代码,供大家参考,具体内容如下 下面的代码实现了用了之前获取天气的代码,然后用itchat模块 给指定的人发送消息 代码比较简单,改一下CITY_NAME和name个发送语句直接就可以用 import requests import json import itchat from threading import Timer global CITY_NAME CITY_NAME = "北京" headers = { 'Use

  • python3+pyqt5+itchat微信定时发送消息的方法

    编这个程序是想过节过年,一些重要的纪念日,给亲戚好友发祝福之类的,但要凌晨0点才显得比较有诚意,可我又比较贪睡,常常忘了,所以就有了编个微信定时发送消息小程序. 运行环境: python 3.x,不支持python2 准备工作 由于我用到了微信的接口,所以引入itchat 界面用了pyqt5 安装命令如下: pip install PyQt5 pip install itchat 代码部分 # -*- coding: utf-8 -*- # @Time : 2018/9/25 11:06 # @

  • Python使用itchat模块实现群聊转发,自动回复功能示例

    本文实例讲述了Python使用itchat模块实现群聊转发,自动回复功能.分享给大家供大家参考,具体如下: 1.itchat自动把好友发来的消息,回复给他 仅能实现自动回复 原文给 好友发来的文本消息.图片表情消息. #!/usr/bin/python #coding=utf-8 import itchat from itchat.content import * @itchat.msg_register([PICTURE,TEXT]) def simple_reply(msg): if msg

  • 基于python的itchat库实现微信聊天机器人(推荐)

    一.开始之前必须安装itchat库 pip install itchat(使用pip必须在电脑的环境变量中添加Python的路径) 或 conda install request 二.开始编程前,我们需要在图灵机器人官网注册自己的图灵机器人,来实现我们程序的智能聊天功能 1.图灵机器人官网(http://www.turingapi.com/) 2.注册登录后点击创建机器人 3.创建成功后,可以获得机器人提供的API接口(apikey) 三.代码实现 import itchat import re

  • Python利用itchat模块定时给朋友发送微信信息

    目录 功能 数据来源 实现效果 代码说明 目录结构 核心代码 项目运行 安装依赖 参数配置 功能 定时给女朋友发送每日天气.提醒.每日一句. 数据来源 每日一句和上面的大佬一样也是来自ONE·一个 天气信息来自SOJSON 实现效果 代码说明 目录结构 city_dict.py :城市对应编码字典 config.yaml :设置定时时间,女友微信名称等参数 GFWeather.py:核心代码 requirements.txt:需要安装的库 run.py:项目运行类 核心代码 GFWeather.

  • Python利用itchat库向好友或者公众号发消息的实例

    首先获得好友或者公众号的UserName 1. 获取好友UserName #coding=utf8 import itchat itchat.auto_login(hotReload=True) #想给谁发信息,先查找到这个朋友,name后填微信备注即可,deepin测试成功 users = itchat.search_friends(name='') #获取好友全部信息,返回一个列表,列表内是一个字典 print(users) #获取`UserName`,用于发送消息 userName = u

  • Python使用itchat模块实现简单的微信控制电脑功能示例

    本文实例讲述了Python使用itchat模块实现简单的微信控制电脑功能.分享给大家供大家参考,具体如下: #!/usr/bin/python #coding=UTF-8 import requests, json import itchat import os,time,datetime from PIL import ImageGrab from itchat.content import * app_dir = r''#打开一个程序,填写exe文件的绝对路径 imgdir = r'E:\t

  • Python利用pangu模块实现文本格式化小工具

    其实使用pangu做文本格式标准化的业务代码在之前就实现了,主要能够将中文文本文档中的文字.标点符号等进行标准化. 但是为了方便起来我们这里使用了Qt5将其做成了一个可以操作的页面应用,这样不熟悉python的朋友就可以不用写代码直接双击运行使用就OK了. 为了使文本格式的美化过程不影响主线程的使用,特地采用QThread子线程来专门的运行文本文档美化的业务过程,接下来还是采用pip的方式将所有需要的非标准模块安装一下. pip install -i https://pypi.tuna.tsin

  • python 利用pywifi模块实现连接网络破解wifi密码实时监控网络

    python 利用pywifi模块实现连接网络破解wifi密码实时监控网络,具体内容如下: import pywifi from pywifi import * import time def CrackWifi(password): wifi = pywifi.PyWiFi() iface = wifi.interfaces()[0] # 取一个无限网卡 # 是否成功的标志 isok = True if(iface.status()!=const.IFACE_CONNECTED): profi

  • Python利用requests模块下载图片实例代码

    本文主要介绍的是关于Python利用requests模块下载图片的相关,下面话不多说了,来一起看看详细的介绍吧 MySQL中事先保存好爬取到的图片链接地址. 然后使用多线程把图片下载到本地. 示例代码: # coding: utf-8 import MySQLdb import requests import os import re from threading import Thread import datetime header = {'User-Agent': 'Mozilla/5.0

  • python 利用turtle模块画出没有角的方格

    意思就是画四条直线,四条直线都不能相交即可. #!/usr/bin/python #coding: UTF-8 import turtle import time t = turtle.Pen() for x in range(4): t.up() t.forward(25) t.down() t.forward(100) t.up() t.forward(25) t.down() t.left(90) time.sleep(3) 执行结果见下图 以上这篇python 利用turtle模块画出没

  • python利用datetime模块计算程序运行时间问题

    **问题描述:**有如下程序输出日志,计算程序运行时间,显示花费623分钟? start time:2019-03-15 19:45:31.237894 end time:2019-03-17 06:09:01.415541 It cost 623 minutes 相关代码: import datetime s = '2019-03-15 19:45:31' s_datetime = datetime.datetime.strptime(s, '%Y-%m-%d %H:%M:%S') e = '

  • python利用os模块编写文件复制功能——copy()函数用法

    我就废话不多说了,大家还是直接看代码吧~ #文件复制 import os src_path=r'E:\Pycharm\python100题\代码' target_path=r'E:\Pycharm\python100题\123' #封装成函数 def copy_function(src,target): if os.path.isdir(src) and os.path.isdir(target): filelist=os.listdir(src) for file in filelist: p

随机推荐