我使用Skype4Py作为我的Skype Bot我一直在努力。
我想知道如何订购API的响应
例如,如果我想得到天气,我会打字!天气
并会回复:
收集天气信息。请稍候...
天气:{“data”:{“current_condition”:[{“cloudcover”:“0”,“湿度”:“39”,“observation_time”:“11:33 AM”,“precipMM”:“0.0”,“压力“:”1023“,”temp_C“:”11“,”temp_F“:”51“,”visibility“:”16“,”weatherCode“:”113“,”weatherDesc“:[{”value“:”清除“}”,“weatherIconUrl”:[{“value”:“http://cdn.worldweatheronline.net/images/wsymbols01_png_64/wsymbol_0008_clear_sky_night.png”}],“winddir16Point”:“N”,“winddirDegree”:“ 0“,”windspeedKmph“:”0“,”windspeedMiles“:”0“}],”请求“:[{”查询“:”90210“,”类型“:”邮编“}}}}
我希望它更像是:
天气:
当前温度:51 F | 22 C
湿度:39%
风速:0 MPH
或者那样干净利落的东西。
这样看起来在Skype中看起来不那么难看,看起来更专业。
我应该添加代码:
def weather(zip):
try:
return urllib2.urlopen('http://api.worldweatheronline.com/free/v1/weather.ashx?q='+zip+'&format=json&num_of_days=1&fx=no&cc=yes&key=r8nkqkdsrgskdqa9spp8s4hx' ).read()
except:
return False
那是我的functions.py
这是我的commands.py:
elif msg.startswith('!weather '):
debug.action('!weather command executed.')
send(self.nick + 'Gathering weather information. Please wait...')
zip = msg.replace('!weather ', '', 1);
current = functions.weather(zip)
if 4 > 2:
send('Weather: ' + current)
else:
send('Weather: ' + current)
就像我说的那样,我正在使用Skype4Py,是的。
答案 0 :(得分:0)
您的API正在返回json
,您需要解析它:
import requests
url = 'http://api.worldweatheronline.com/free/v1/weather.ashx'
params = {'format': 'json',
'num_of_days': 1, 'fx': 'no', 'cc': 'yes', 'key': 'sekret'}
params['zip'] = 90210
r = requests.get(url, params=params)
if r.status_code == 200:
results = r.json()
print('Weather:
Current Temp: {0[temp_f]} F | {0[temp_c]} C
Humidity: {0[humidity]}%
Wind Speed: {0[windspeedMiles]} MPH'.format(results[0]))
我正在使用优秀的requests
library