Python天气语音播报小助手


Posted in Python onSeptember 25, 2021

导语​

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

Python天气语音播报小助手

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

……

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

Python天气语音播报小助手

Python天气语音播报小助手

正文

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

今天小编带大家写一款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)

效果如下:

Python天气语音播报小助手

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

Python天气语音播报小助手

总结

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

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

Python天气语音播报小助手

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

Python 相关文章推荐
python实现基本进制转换的方法
Jul 11 Python
Python 迭代器工具包【推荐】
May 06 Python
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
Apr 17 Python
Python有序字典简单实现方法示例
Sep 28 Python
Python学习pygal绘制线图代码分享
Dec 09 Python
python批量读取txt文件为DataFrame的方法
Apr 03 Python
Python语言检测模块langid和langdetect的使用实例
Feb 19 Python
pytorch 利用lstm做mnist手写数字识别分类的实例
Jan 10 Python
Python pip安装第三方库实现过程解析
Jul 09 Python
使用python-cv2实现视频的分解与合成的示例代码
Oct 26 Python
python音频处理的示例详解
Dec 23 Python
解决pycharm修改代码后第一次运行不生效的问题
Feb 06 Python
用python基于appium模块开发一个自动收取能量的小助手
Python实现打乒乓小游戏
Python 类,对象,数据分类,函数参数传递详解
Sep 25 #Python
Python实现简单的俄罗斯方块游戏
Python实现滑雪小游戏
利用python实时刷新基金估值(摸鱼小工具)
Sep 15 #Python
Python极值整数的边界探讨分析
Sep 15 #Python
You might like
thinkphp缓存技术详解
2014/12/09 PHP
PHP文件上传操作实例详解
2016/09/27 PHP
PHP实现的文件上传类与用法详解
2017/07/05 PHP
javascript实现unicode和字符的互相转换
2007/07/18 Javascript
jQuery .attr()和.removeAttr()方法操作元素属性示例
2013/07/16 Javascript
node.js中的emitter.emit方法使用说明
2014/12/10 Javascript
解决ueditor jquery javascript 取值问题
2014/12/30 Javascript
原生JS和JQuery动态添加、删除表格行的方法
2015/05/28 Javascript
JavaScript获得指定对象大小的方法
2015/07/01 Javascript
jquery获取复选框checkbox的值的简单实现方法
2016/05/26 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
2016/11/22 Javascript
nodejs入门教程六:express模块用法示例
2017/04/24 NodeJs
vue2.0 路由不显示router-view的解决方法
2018/03/06 Javascript
javascript实现计算指定范围内的质数示例
2018/12/29 Javascript
Vue 递归多级菜单的实例代码
2019/05/05 Javascript
JavaScript实现栈结构Stack过程详解
2020/03/07 Javascript
JS替换字符串中指定位置的字符(多种方法)
2020/05/28 Javascript
Python实现统计单词出现的个数
2015/05/28 Python
Numpy截取指定范围内的数据方法
2018/11/14 Python
python 控制Asterisk AMI接口外呼电话的例子
2019/08/08 Python
python入门之基础语法学习笔记
2020/02/08 Python
查看已安装tensorflow版本的方法示例
2020/04/19 Python
Python如何输出整数
2020/06/07 Python
浅谈Python中的继承
2020/06/19 Python
详细分析Python可变对象和不可变对象
2020/07/09 Python
纯CSS3单页切换导航菜单界面设计的简单实现
2016/08/16 HTML / CSS
input元素的url类型和email类型简介
2012/07/11 HTML / CSS
利用html5的websocket实现websocket聊天室
2013/12/12 HTML / CSS
html5中的一些标签学习(心得)
2016/10/18 HTML / CSS
Foot Locker德国官方网站:美国运动服和鞋类零售商
2018/11/01 全球购物
P/Invoke是什么
2015/07/31 面试题
生态学毕业生自荐信
2013/10/27 职场文书
爱与责任师德演讲稿
2014/08/26 职场文书
党的群众路线教育实践活动整改方案
2014/10/28 职场文书
关于童年的读书笔记
2015/06/26 职场文书
Html5同时支持多端sdk的小技巧
2021/11/17 HTML / CSS