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

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

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

天气信息来自SOJSON

实现效果


代码说明

目录结构

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

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

Python客栈送红包、纸质书

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

bfwechatname_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 -个』 中的每日一句

everymsg = 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’`

更多相关文章

  1. Android(安卓)GPS获取当前经纬度坐标
  2. android获取系统标准时区的时间
  3. Android的Root原理
  4. Android应用开发提高系列(5)――Android动态加载(下)――加载已安装A
  5. Android7.0文件读写(获取拍照结果)笔记
  6. Android利用DownloadManager实现文件下载
  7. Android生命周期中几个重要的函数
  8. Android实现EditView获取焦点但不弹出软键盘
  9. Mac下获取Android(安卓)SHA1·针对才搭建了Mac环境

随机推荐

  1. android设置不显示标题
  2. 圆圈里面是个叉号
  3. mainfest文件中android属性
  4. 111
  5. Android版本下载以及切换
  6. android创建自定义控件
  7. API 23 widget.ProgressBar——属性分析
  8. EditText自定义边框
  9. Android底部菜单栏的实现
  10. Android中获取手机支持的硬件解码器类型