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 相关文章推荐
对变量赋值的理解--Pyton中让两个值互换的实现方法
Nov 29 Python
django反向解析和正向解析的方式
Jun 05 Python
python对html过滤处理的方法
Oct 21 Python
Python3编码问题 Unicode utf-8 bytes互转方法
Oct 26 Python
VSCode Python开发环境配置的详细步骤
Feb 22 Python
Python 读取串口数据,动态绘图的示例
Jul 02 Python
利用Python检测URL状态
Jul 31 Python
python实现差分隐私Laplace机制详解
Nov 25 Python
python读取ini配置的类封装代码实例
Jan 08 Python
tensorflow指定GPU与动态分配GPU memory设置
Feb 03 Python
Python SMTP发送电子邮件的示例
Sep 23 Python
Python操作word文档插入图片和表格的实例演示
Oct 25 Python
用python基于appium模块开发一个自动收取能量的小助手
Python实现打乒乓小游戏
Python 类,对象,数据分类,函数参数传递详解
Sep 25 #Python
Python实现简单的俄罗斯方块游戏
Python实现滑雪小游戏
利用python实时刷新基金估值(摸鱼小工具)
Sep 15 #Python
Python极值整数的边界探讨分析
Sep 15 #Python
You might like
php中使用__autoload()自动加载未定义类的实现代码
2013/02/06 PHP
Laravel搭建后台登录系统步骤详解
2016/07/26 PHP
PHP实现大数(浮点数)取余的方法
2017/02/18 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
深入理解 PHP7 中全新的 zval 容器和引用计数机制
2018/10/15 PHP
JS定时器实例
2013/04/17 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
2014/10/20 Javascript
VS2008中使用JavaScript调用WebServices
2014/12/18 Javascript
关于JavaScript的变量的数据类型的判断方法
2015/08/14 Javascript
解析javascript瀑布流原理实现图片滚动加载
2016/03/10 Javascript
JavaScript中实现无缝滚动、分享到侧边栏实例代码
2016/04/06 Javascript
JavaScript实现in-place思想的快速排序方法
2016/08/07 Javascript
JavaScript获取ul中li个数的方法
2017/02/13 Javascript
Nodejs实现文件上传的示例代码
2017/09/26 NodeJs
js获取文件里面的所有文件名(实例)
2017/10/17 Javascript
vue.js 获取select中的value实例
2018/03/01 Javascript
解决angular2在双向数据绑定时[(ngModel)]无法使用的问题
2018/09/13 Javascript
详解vue中在循环中使用@mouseenter 和 @mouseleave事件闪烁问题解决方法
2020/04/07 Javascript
python将ip地址转换成整数的方法
2015/03/17 Python
python获取当前日期和时间的方法
2015/04/30 Python
python基础教程之Filter使用方法
2017/01/17 Python
Python学习笔记之自定义函数用法详解
2019/06/08 Python
树莓派使用USB摄像头和motion实现监控
2019/06/22 Python
Django框架之登录后自定义跳转页面的实现方法
2019/07/18 Python
python中property属性的介绍及其应用详解
2019/08/29 Python
python基于K-means聚类算法的图像分割
2019/10/30 Python
python实现将range()函数生成的数字存储在一个列表中
2020/04/02 Python
实现Python3数组旋转的3种算法实例
2020/09/16 Python
基于html和CSS3制作酷炫的导航栏
2015/09/23 HTML / CSS
北京-环亚运商测试题.net程序员初步测试题
2013/05/28 面试题
水果连锁超市创业计划书
2014/01/24 职场文书
2016会计专业自荐信范文
2016/01/28 职场文书
浅谈golang 中time.After释放的问题
2021/05/05 Golang
python 经纬度求两点距离、三点面积操作
2021/06/03 Python
基于Python实现流星雨效果的绘制
2022/03/18 Python
instantclient客户端 连接oracle数据库
2022/04/26 Oracle