用Python如何实现定时发送天气、提醒等信息
Admin 2022-09-30 群英技术资讯 307 次浏览
定时给女朋友发送每日天气、提醒、每日一句。
每日一句和上面的大佬一样也是来自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'
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
python中的not和is none有何不同?很多新手刚解决python时,对于not和is none的用法区别不是很了解,对此,这篇文章就主要给大家介绍一下python中的not和is none。
做开发的时候,我们经常会使用到进度条,因此这篇文章想给大家分享关于python进度条控件的使用。主要介绍tkinter进度条控件Progressbar的内容,感兴趣的朋友可以参考学习。
Python内置函数-locals() 函数。locals() 函数会以字典类型返回当前位置的全部局部变量。
Python中日期格式化是非常常见的操作,Python 中能用很多方式处理日期和时间,转换日期格式是一个常见的功能。Python 提供了一个 time
这篇文章主要为大家介绍了Python实现原神抽卡的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008