python写的的语音天气预报

最近犯懒,但这么长时间没点成果实在过意不去。朋友研究树莓派,前几天帮他写个语音天气预报的程序。就让我用来凑个数吧。

#coding=utf-8
import urllib2,json,subprocess,time

‘‘‘使用云聚数据的接口获取天气数据,接口文档:
    实时天气接口:http://www.36wu.com/Service/Details/1
    生活气象指数:http://www.36wu.com/Service/Details/1?cid=5

  需要安装espeak
‘‘‘

def get_weather_data():
    header = {‘User-Agent‘:‘Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6‘}
    req = urllib2.Request(url=‘http://api.36wu.com/Weather/GetWeatherIndex?district=%E5%8C%97%E4%BA%AC&format=json‘,headers=header)
    weather = json.loads(urllib2.urlopen(req).read())
    req = urllib2.Request(url=‘http://api.36wu.com/Weather/GetWeather?district=%E5%8C%97%E4%BA%AC&format=json‘,headers=header)
    weather[‘data‘].update(json.loads(urllib2.urlopen(req).read())[‘data‘])
    return weather

def tts_head():
    fd = subprocess.Popen([‘espeak‘,‘-vzh‘],stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE)#为了不让它输出任何东西:)
    def sayn(str):
        fd.stdin.write(‘\n‘)
        fd.stdin.write(str)
    #犯懒:
    fd.sayn = sayn #sayn方法说出文本后会停顿
    fd.say = fd.stdin.write #说出文本后不会停顿,加空格也不行
    return fd

if __name__ == ‘__main__‘:
    tts = tts_head()
    tts.say(‘天气预报‘)
    weather = get_weather_data()
    if weather[‘status‘] != 200:
        tts.say(‘天气数据获取错误‘)
    for i in [‘district‘,‘dateTime‘,[‘平均温度‘,‘temp‘,‘度‘]]:#在这里定制想要的信息
        if isinstance(i,list):
            tts.sayn(i[0])
            tts.sayn(weather[‘data‘][i[1]].encode(‘utf-8‘))
            tts.say(i[2])
        else:
            tts.sayn(weather[‘data‘][i].encode(‘utf-8‘))

时间: 2024-12-05 04:22:50

python写的的语音天气预报的相关文章

python实现智能语音天气预报

前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 飞奔的帅帅 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef 本系统主要包括四个函数: 1.获取天气数据 输入要查询天气的城市 利用urllib模块向中华万年历天气api接口请求天气数据 利用gzip解压获取

快速掌握用python写并行程序

目录 一.大数据时代的现状 二.面对挑战的方法 2.1 并行计算 2.2 改用GPU处理计算密集型程序 3.3 分布式计算 三.用python写并行程序 3.1 进程与线程 3.2 全局解释器锁GIL: 3.3 multiprocessing 四.multiprocessing实战 总结 小子今天想来谈谈"并行计算",作为一个非科班人员,我为什么去捣鼓这么一个在科班里也比较专业的问题了.这就要说下我前几天做的一个作业了,当时我用python写了个程序,结果运行了一天,这个速度可让我愁了

python 写的http后台弱口令爆破工具

# -*- coding: utf-8 -*- # 利用python 写的多线程爆破后台用户名+密码(自备字典),比较实用,即使是在信息安全这么重视的今天,还是有人不加验证码或者异常访问限制之类的登陆验证方式,这样就很# 容易被弱口令爆破工具拿下,(本代码仅限学习实用,禁止进行web攻击,不承担法律责任) import urllib2 import urllib import httplib import threading headers = {"Content-Type":&quo

作业1+2.四则运算(改进后完整版,用python写的)_064121陶源

概述: 用一个星期加上五一的三天假期自学了python,在Mac系统上重新写出了四则运算的程序,编译器是PyCharm,相当于完成了作业2.d)"选一个你从来没有学过的编程语言,试一试实现基本功能"这个方向. 用python写的这个程序能实现分数的加减程序,实现带加减乘除和括号的计算题,实现随机生成100道简单计算题,比之前用C++写的程序功能更加完善,更加简洁! 关键点: 调用两个模板. 1)类似C++和Java,格式是 对象.方法(),Fraction()方法,能直接表示分数. 2

python 写 txt

python写txt,之前写过jason的,和写txt有点区别,记录下. import os def touch(path): u = '12' u1= '34' with open(path, 'w') as f: f.write(u) f.write('\t') f.write(u1) #os.utime(path, None) path = "creativeFile.txt" touch(path) 1.打开的模式有几种(转自http://blog.csdn.net/adupt

要继续看Python写算法的内容请到那里去

因为在这里发文章的时候,莫名其妙的出现发布出去的问题,客服告知是因为链接或者敏感词. 能不能告诉我哪里出了问题?我可以修改,以便再发. 但是,没有人告诉我,只是告诉我不能发. 另外,能不能公布一下敏感词?以后我在遣词造句的时候,才可以避免. 但是,没有看到敏感词列表. 以后我的文章将发布在https://www.github.com/qiwsir/algorithm里面,有兴趣的可以到那里阅读. 要继续看Python写算法的内容请到那里去,布布扣,bubuko.com

用Python写猜年龄游戏

菜鸟的第一个程序:用python写猜年龄,0基础写起来真他娘的累,一个简单的程序写了几个小时,终于马马虎虎写好了. 许多刚入行的新手们经常问有什么捷径能快速学会写代码?答案是没有的,只有一个字:练! #!/usr/bin/env python # Author:William Huang my_age = 29 # 先设定好正确的答案 count = 0 # 设定好计数器 while True: count += 1 # 计数器自加1 if count <= 3: # 设定次数,小于等于3次 u

如何Python写一个安卓APP

前言:用Python写安卓APP肯定不是最好的选择,但是肯定是一个很偷懒的选择,而且实在不想学习Java,再者,就编程而言已经会的就Python与Golang(注:Python,Golang水平都一般),那么久Google了一下Python写安卓的APP的可能性,还真行. 既然要写个APP,那么总得要有个想法吧. 其实笔者想做两个APP来着,一个是自己写着好玩的,一个是关于运维的. 关于运维的APP,设计应该如下 可能长这样 然后设计应该是这样. 如果觉得可行的话,评论留言一下你觉得应该写进这个

用python写MapReduce函数

尽管Hadoop框架是用java写的,但是Hadoop程序不限于java,可以用python.C++.ruby等.本例子中直接用python写一个MapReduce实例,而不是用Jython把python代码转化成jar文件. 例子的目的是统计输入文件的单词的词频. 输入:文本文件 输出:文本(每行包括单词和单词的词频,两者之间用'\t'隔开) 1. Python MapReduce 代码 使用python写MapReduce的"诀窍"是利用Hadoop流的API,通过STDIN(标准