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查看FTP是否能连接成功的方法
Jul 30 Python
Python自定义进程池实例分析【生产者、消费者模型问题】
Sep 19 Python
基于Django模板中的数字自增(详解)
Sep 05 Python
Python装饰器原理与简单用法实例分析
Apr 29 Python
TensorFlow实现模型评估
Sep 07 Python
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
Oct 17 Python
django和vue实现数据交互的方法
Aug 21 Python
Pycharm最新激活码2019(推荐)
Dec 31 Python
详解字符串在Python内部是如何省内存的
Feb 03 Python
python解释器pycharm安装及环境变量配置教程图文详解
Feb 26 Python
python实现从ftp上下载文件的实例方法
Jul 19 Python
Python 字典一个键对应多个值的方法
Sep 29 Python
用python基于appium模块开发一个自动收取能量的小助手
Python实现打乒乓小游戏
Python 类,对象,数据分类,函数参数传递详解
Sep 25 #Python
Python实现简单的俄罗斯方块游戏
Python实现滑雪小游戏
利用python实时刷新基金估值(摸鱼小工具)
Sep 15 #Python
Python极值整数的边界探讨分析
Sep 15 #Python
You might like
用PHP实现递归循环每一个目录
2010/08/08 PHP
解析如何在PHP下载文件名中解决乱码的问题
2013/06/20 PHP
PHP分页效率终结版(推荐)
2013/07/01 PHP
PHP删除指定目录中的所有目录及文件的方法
2015/02/26 PHP
php使用wordwrap格式化文本段落的方法
2015/03/17 PHP
thinkphp3.2实现上传图片的控制器方法
2016/04/28 PHP
PHP+MariaDB数据库操作基本技巧备忘总结
2018/05/21 PHP
PHP命名空间(namespace)原理与用法详解
2019/12/11 PHP
JavaScript中的Web worker多线程API研究
2014/12/06 Javascript
jQuery选择id属性带有点符号元素的方法
2015/03/17 Javascript
vue axios同步请求解决方案
2017/09/29 Javascript
vue脚手架及vue-router基本使用
2018/04/09 Javascript
浅谈Node.js 沙箱环境
2018/05/15 Javascript
利用d3.js制作连线动画图与编辑器的方法实例
2019/09/05 Javascript
js刷新页面location.reload()用法详解
2019/12/09 Javascript
JS手写一个自定义Promise操作示例
2020/03/16 Javascript
JavaScript 判断浏览器是否是IE
2021/02/19 Javascript
[02:31]DOTA2帕克 英雄基础教程
2013/11/26 DOTA
使用Python脚本对Linux服务器进行监控的教程
2015/04/02 Python
Python xlrd读取excel日期类型的2种方法
2015/04/28 Python
python梯度下降法的简单示例
2018/08/31 Python
Python打包方法Pyinstaller的使用
2018/10/09 Python
Python实现图片转字符画的代码实例
2019/02/22 Python
对Python函数设计规范详解
2019/07/19 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
2020/03/16 Python
使用python计算三角形的斜边例子
2020/04/15 Python
python爬虫把url链接编码成gbk2312格式过程解析
2020/06/08 Python
数以千计的折扣工业产品:ESE Direct
2018/05/20 全球购物
美国班级戒指、帽子和礼服、毕业产品、年鉴:Balfour
2018/11/01 全球购物
琳达·法罗眼镜英国官网:Linda Farrow英国
2021/01/19 全球购物
本科生学习总结的自我评价
2013/10/02 职场文书
创意活动策划书
2014/01/15 职场文书
信用卡工资证明格式
2014/09/13 职场文书
奉献家乡演讲稿
2014/09/16 职场文书
2015年度保密工作总结
2015/04/24 职场文书
大学学习委员竞选稿
2015/11/20 职场文书