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 isinstance判断对象类型
Sep 06 Python
pycharm 使用心得(七)一些实用功能介绍
Jun 06 Python
Python读取键盘输入的2种方法
Jun 16 Python
Python 搭建Web站点之Web服务器网关接口
Nov 06 Python
Python实现读取及写入csv文件的方法示例
Jan 12 Python
Python常见字符串操作函数小结【split()、join()、strip()】
Feb 02 Python
PyTorch CNN实战之MNIST手写数字识别示例
May 29 Python
详解python 注释、变量、类型
Aug 10 Python
python2 对excel表格操作完整示例
Feb 23 Python
Python短信轰炸的代码
Mar 25 Python
python中判断数字是否为质数的实例讲解
Dec 06 Python
OpenCV+Python3.5 简易手势识别的实现
Dec 21 Python
用python基于appium模块开发一个自动收取能量的小助手
Python实现打乒乓小游戏
Python 类,对象,数据分类,函数参数传递详解
Sep 25 #Python
Python实现简单的俄罗斯方块游戏
Python实现滑雪小游戏
利用python实时刷新基金估值(摸鱼小工具)
Sep 15 #Python
Python极值整数的边界探讨分析
Sep 15 #Python
You might like
php读取xml实例代码
2010/01/28 PHP
php和js如何通过json互相传递数据相关问题探讨
2013/02/26 PHP
简单谈谈php中的unicode和utf8编码
2015/06/10 PHP
用php定义一个数组最简单的方法
2019/10/04 PHP
跟着JQuery API学Jquery 之三 筛选
2010/04/09 Javascript
读jQuery之四(优雅的迭代)
2011/06/20 Javascript
表格单元格交错着色实现思路及代码
2013/04/01 Javascript
JQuery获取样式中的background-color颜色值的问题
2013/08/20 Javascript
网页运行时提示对象不支持abigimage属性或方法
2014/08/10 Javascript
javascript实现详细时间提醒信息效果的方法
2015/03/11 Javascript
浅析JS中对函数function的理解(基础篇)
2016/10/14 Javascript
微信公众平台开发教程(四) 实例入门:机器人回复(附源码)
2016/12/02 Javascript
react.js CMS 删除功能的实现方法
2017/04/17 Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
2017/07/24 Javascript
JavaScript程序设计高级算法之动态规划实例分析
2017/11/24 Javascript
浅谈super-vuex使用体验
2018/06/25 Javascript
node和vue实现商城用户地址模块
2018/12/05 Javascript
react-router4按需加载(踩坑填坑)
2019/01/06 Javascript
详解微信小程序之scroll-view的flex布局问题
2019/01/16 Javascript
Vue实现搜索结果高亮显示关键字
2019/05/28 Javascript
关于JS模块化的知识点分享
2019/10/16 Javascript
vue.js 实现a标签href里添加参数
2019/11/12 Javascript
js实现简单商品筛选功能
2021/02/02 Javascript
[13:40]TI3青蛙君全程回顾 DOTA2我们为梦想再战
2013/09/13 DOTA
Python正则表达式分组概念与用法详解
2017/06/24 Python
python 把文件中的每一行以数组的元素放入数组中的方法
2018/04/29 Python
win10下python3.5.2和tensorflow安装环境搭建教程
2018/09/19 Python
详解django中Template语言
2020/02/22 Python
this关键字的作用
2016/01/30 面试题
《雾凇》教学反思
2014/02/17 职场文书
法人任命书范本
2014/06/04 职场文书
离婚协议书应该怎么写
2014/10/12 职场文书
先进教育工作者事迹材料
2014/12/23 职场文书
荒岛余生观后感
2015/06/09 职场文书
教师节领导致辞
2015/07/29 职场文书
python实现学员管理系统(面向对象版)
2022/06/05 Python