Python中怎么用itchat模块定时给朋友发送微信信息
发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,这篇文章主要讲解了"Python中怎么用itchat模块定时给朋友发送微信信息",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Python中怎么用itc
千家信息网最后更新 2024年11月23日Python中怎么用itchat模块定时给朋友发送微信信息
这篇文章主要讲解了"Python中怎么用itchat模块定时给朋友发送微信信息",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"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:30alarm_timed: '9:30'# 女友所在城市名称city_name: '桂林'# 你女朋友的微信名称wechat_name: '古典'# 从那天开始勾搭的start_date: '2017-11-11'
感谢各位的阅读,以上就是"Python中怎么用itchat模块定时给朋友发送微信信息"的内容了,经过本文的学习后,相信大家对Python中怎么用itchat模块定时给朋友发送微信信息这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
信息
天气
城市
在线
朋友
名称
女朋友
模块
登录
代码
内容
女友
时间
格言
学习
成功
参数
好友
所在
数据
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
信息网络安全主题党日
在线考试软件开发价位
荔湾区软件开发地址
数据库管理系统应包括
搭建自己的邮件服务器
网络安全人才的计划
四力教育网络安全
软件开发类学院
宝鸡ccbd网络安全嘛
网络安全宣传手绘高年级
网络安全与国际刑法
锡山区电话软件开发系统
sql语句事先存进数据库
广东综合软件开发批发价格
男生职高学计算机软件开发
服务器管理器绑定域名
嘉定区网络营销网络技术备案
软件开发工作总结汇报ppt
mysql数据库满了
上海乐顾网络技术有限公司
苏州戴尔网络规划服务器
delphi7数据库连接
移动公司后台服务器供应商
软件开发模型动画
云动时代网络技术有限公司
苏州戴尔惠普服务器
1u服务器尺寸
互联网安全服务器
计算机网络技术专业计划
php写一个数据库管理