语音播报ip所在地址的天气信息 python
到这儿 免费天气接口api 用qq注册登录,然后拿到 APPID 和 APPSecret。
import requests
from requests import utils
import json
def apishop_send_request(method, url, params=None, headers=None):
'''
转发请求到目的主机
@param method str 请求方法
@param url str 请求地址
@param params dict 请求参数
@param headers dict 请求头
'''
method = str.upper(method)
if method == "POST":
return requests.post(url=url, data=params, headers=headers)
elif method == "GET":
return requests.get(url=url, params=params, headers=headers)
else:
return None
method = "get"
url = "https://tianqiapi.com/api"
headers = None
params = {
"version": "v6", #用的时候改成自己的版本号,免费的就是v6,一天300次
"appid" : "94828159", #用的时候改成自己的id
"appsecret" : "nRLfzq8O" #用的时候改成自己的密码
}
result = apishop_send_request(method=method, url=url, params=params, headers=headers)
if result.encoding == 'ISO-8859-1':
encodings = requests.utils.get_encodings_from_content(result.text)
if encodings:
encoding = encodings[0]
else:
encoding = result.apparent_encoding
encode_content = result.content.decode(encoding, 'replace').encode('utf-8', 'replace')
'''-------------------------语音播报设计--------------------------------'''
import pyttsx3
def speak(goalStr):
engine = pyttsx3.init() # 初始化
# engine.setProperty('voice', "com.apple.speech.synthesis.voice.sin-ji") #设置发音人,不过我电脑似乎不起作用
# engine.setProperty('voice', "com.apple.speech.synthesis.voice.mei-jia")
rate = engine.getProperty('rate') # 改变语速 范围为0-200 默认值为200
engine.setProperty('rate', rate-40)
engine.setProperty('volume', 0.7) # 设置音量 范围为0.0-1.0 默认值为1.0
engine.say(goalStr) # 预设要朗读的文本数据
engine.runAndWait() # 读出声音
# if __name__ == '__main__':
# strValue ="昆明的天气情况如下:日期: 08月18日(星期二), 天气: 雨, 温度: 20℃, PM2.5: 20, 相对湿度: 92%"
# speak(strValue)
'''-------------------------语音播报设计--------------------------------'''
if result:
body = result.text
response = json.loads(body)
status_code = result.status_code
if (status_code == 200):
print("请求成功:%s" % (response,))
goalstr='您所在的城市为:'+response['country']+response['city']+',今天是:'+response['week']+'。天气:'+response['wea']+ \
',最高温度:'+response['tem1']+'摄氏度,'+'最低温度:'+response['tem2']+'摄氏度,'+'当前温度:'+response['tem']+'摄氏度,'+\
'空气质量:'+response['air_level']+',pm2.5指数:'+response['air_pm25']+'。'+response['air_tips']
speak(goalstr)
else:
print("请求失败: %s" % (response,))
else:
print("发送请求失败")