新闻动态

Python天气语音播报小助手

发布日期:2022-01-01 01:24 | 文章来源:gibhub

导语​

马上就要迎来国庆小长假了~激不激动,兴不兴奋!​

那今年国庆:天气怎么样?能不能出门逛街?能不能出去旅游?

……

来来来,木木子为你整理好啦!​​这个假期,你那里的天气如何?

正文

旅游出门就要挑个好的天气!下雨天哪儿哪儿都不舒服。

今天小编带大家写一款Python天气语音播报小助手!

环境安装:Python3.6、pycharm2021、及自带的模块等。

pip install -i https://pypi.douban.com/simple/ requests 
 
pip install -i https://pypi.douban.com/simple/ opencv-python

​主要分为三大部分:

(1)获取每日天气情况:

def get_weather():
 url = 'http://www.weather.com.cn/weather/101290101.shtml'
 response = requests.get(url)
 response.encoding = 'utf-8'
 response = response.text  # 获取页面
 html = etree.HTML(response)
 day_weather = '天气状况:' + html.xpath('//*[@id="7d"]/ul/li[1]/p[1]/text()')[0] + '\n'  # 获取天气,白天的天气
 high = html.xpath('//*[@id="7d"]/ul/li[1]/p[2]/span/text()')
 low = html.xpath('//*[@id="7d"]/ul/li[1]/p[2]/i/text()')  # 获取对应的两个温度
 # 因为页面在晚上会有小变化,所以使用条件语句,来排除因变化引起的bug
 if high == []:
  day_temperature = '室外温度:' + low[0] + '\n'
 else:
  day_temperature = '室外温度:' + low[0].replace('℃', '') + '~' + high[0] + '℃\n'  # 获取温度
 # 获取两个风向
 wind_1 = html.xpath('//*[@id="7d"]/ul/li[1]/p[3]/em/span[1]/@title')
 wind_2 = html.xpath('//*[@id="7d"]/ul/li[1]/p[3]/em/span[2]/@title')
 # 因为有时候,会出现两个风向是同一个风向的情况,所以使用条件语句排除
 if wind_2 == []:
  wind = wind_1[0] + '\n'
 elif wind_1[0] == wind_2[0]:
  wind = wind_1[0] + '\n'
 else:
  wind = wind_1[0] + '转' + wind_2[0] + '\n'
 # 因为风级有时候会出现“<",语音的时候会认为是爱心符号,所以使用替换,改为文字”低于“
 wind_3 = html.xpath('//*[@id="7d"]/ul/li[1]/p[3]/i/text()')[0].replace('<', '低于').replace('>', '高于')
 day_wind = '风向情况:' + wind + wind_3 + '\n'  # 获取风向及风级
 return day_weather, day_temperature, day_wind

(2)获取播报的高考时间:

def get_time():
 a = datetime.datetime.now()  # 实施时间
 y = str(a.year)
 m = str(a.month)
 d = str(a.day)  # 转换为字符串,便于打印
 time = y + '年' + m + '月' + d + '日' + '\n'
 b = datetime.datetime(2021, 6, 7)  # 自己设置的高考时间
 count_down = (b - a).days  # 高考倒计时
 return time, count_down

(3)设置播报每日鸡汤文字:

def get_content():
 url = 'http://open.iciba.com/dsapi/'  # 网上找的API
 response = requests.get(url=url)
 json_s = json.loads(response.text)
 jitang = json_s.get("content") + '\n'  # 每日鸡汤
 translation = json_s.get("note") + '\n'  # 中文翻译
 image_url = json_s.get("fenxiang_img")  # 图片链接
 return jitang, translation, image_url

(4)语音小助手依次顺序播报:

def main():
 time, count_down = get_time()
 day_weather, day_temperature, day_wind = get_weather()
 jitang, translation, image_url = get_content()
 count_down = '距离高考还有{}天,你准备好了吗?'.format(count_down) + '\n'
 a = '下面为您播报今日天气状况\n'
 b = '每日一句\n'
 time = '今天是' + time
 weather = day_weather + day_temperature + day_wind
 content = jitang + translation
 text = time + count_down + a + weather + b + content  # 语音内容
 voice = pyttsx3.init()  # 初始化
 # rate = voice.getProperty('rate')
 voice.setProperty('rate', 150)  # 语速,范围在0-200之间
 voice.setProperty('volume', 1.0)  # 范围在0.0-1.0之间
 voice.say(text)  # 语音内容
 voice.runAndWait()
 cap = cv2.VideoCapture(image_url)  # 展示图片
 if(cap.isOpened()):
  ret, img = cap.read()
  my_image = cv2.resize(img, dsize=None, fx=0.5, fy=0.5)
  cv2.imshow("You will succeed in the end", my_image)
  cv2.waitKey()
 print(time, weather, content)

效果如下:

​其实是语音播报的,but这只能截图效果将就着看叭~哈哈哈!!!

总结

好啦!这是一款实时播报、高考、天气预报、每日鸡汤的三合一语音智能小助手!想拥有嘛?

记得三连哦~mua 你们的支持是我最大的动力!

到此这篇关于Python天气语音播报小助手的文章就介绍到这了,更多相关Python 语音播报 内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。

相关文章

实时开通

自选配置、实时开通

免备案

全球线路精选!

全天候客户服务

7x24全年不间断在线

专属顾问服务

1对1客户咨询顾问

在线
客服

在线客服:7*24小时在线

客服
热线

400-630-3752
7*24小时客服服务热线

关注
微信

关注官方微信
顶部