最近在玩pual_bot,感觉很不错,最近天气插件失效了,就结合百度api重新写了一个,也提交了。

https://github.com/coldnight/pual_bot

 #!/usr/bin/env python
# -*- coding:utf-8 -*-
#
# Author : recall
# E-mail : tk86935367@vip.qq.com
# Date : 14/06/25 15:59:20
# Desc : 天气
#
""" 替换原有的weather.py,并删除weather.pyc
""" import json
import urllib,requests
import sys
from plugins import BasePlugin # 使用百度API获取天气预报
class BaiduWeather():
"""docstring for BaiduWeather"""
def __init__(self):
self.url = "http://api.map.baidu.com/telematics/v3/weather?output=json&ak=8a47b6b4cfee5e398e63df510980697e&location=" def search(self,city,callback):
url = self.url + city.encode('utf-8') #urllib.quote(city.decode(sys.stdin.encoding).encode('utf-8','replace'))
res = requests.get(url)
html = res.text
json_data = json.loads(html)
error = json_data.get('error')
if error != 0:
body = u'不支持该城市'
else:
result = json_data.get('results',u'没有结果')
weather = result[0]
c_city = weather.get('currentCity',None)
weather_data = weather.get('weather_data',None)
#print weather_data[0]
body = u'{0}\n今天:{1},{2},{3}\n明天:{4},{5},{6}'.format(c_city,weather_data[0].get('temperature'),weather_data[0].get('weather'),weather_data[0].get('wind'), \
weather_data[1].get('temperature'),weather_data[1].get('weather'),weather_data[1].get('wind'))
callback(body) class WeatherPlugin(BasePlugin):
bdweather = None
def is_match(self, from_uin, content, type):
if content.startswith("-w"):
self.city = content.split(" ")[1]
self._format = u"\n {0}" if type == "g" else u"{0}"
if self.bdweather is None:
self.bdweather = BaiduWeather()
return True
return False def handle_message(self, callback):
self.bdweather.search(self.city, callback)

就是没怎么弄异常,有时间谁添加吧。

pual_bot 天气插件编写的更多相关文章

  1. jQuery插件编写及链式编程模型小结

    JQuery极大的提高了我们编写JavaScript的效率,让我们可以愉快的编写代码,做出各种特效.大多数情况下,我们都是使用别人开发的JQuery插件,今天我们就来看看如何把我们常用的功能做出JQu ...

  2. Wireshark插件编写

    Wireshark插件编写 在抓包的过程中学习了使用wireshark,同时发现wireshark可以进行加载插件,便在网上学习了一下相应的插件开发技术. 需求编写一个私有协议名为SYC,使用UDP端 ...

  3. typecho插件编写教程1 - 从HelloWorld说起

    typecho插件编写教程1 - 从HelloWorld说起 老高 187 5月25日 发布 推荐 0 推荐 收藏 2 收藏,189 浏览 最近老高正在编写一个关于typecho的插件,由于typec ...

  4. Google日历添加农历、节日和天气插件(步骤)

    Google日历添加农历.节日和天气插件(步骤) Google功能非常多,Google日历只是其中一个,而且支持Exchange账户(iPhone,WP7,诺基亚等)和Google账户登录(andro ...

  5. jQuery插件编写及链式编程模型

    jQuery插件编写及链式编程模型小结 JQuery极大的提高了我们编写JavaScript的效率,让我们可以愉快的编写代码,做出各种特效.大多数情况下,我们都是使用别人开发的JQuery插件,今天我 ...

  6. vue插件编写与实战

    关于 微信公众号:前端呼啦圈(Love-FED) 我的博客:劳卜的博客 知乎专栏:前端呼啦圈 前言 热爱vue开发的同学肯定知道awesome-vue 这个github地址,里面包含了数以千计的vue ...

  7. Hexo next主题下添加天气插件

    最近在优化hexo 新搭建的博客,想给博客添加一个天气插件,奈何找了很久也没发现,好不容易发现一个天气插件 心知天气:https://www.seniverse.com/widget/get 运气不好 ...

  8. chart.js angular组件封装(ng6)、实战配置、插件编写

    前言 项目需要使用chart.js插件,由于项目是使用angular开发,那么我第一步就是先把chart.js改造成angular组件来使用. 本项目代码都可以在github上下载:项目git地址 a ...

  9. Gulp:插件编写入门

    之前挖了个坑,准备写篇gulp插件编写入门的科普文,之后迟迟没有动笔,因为不知道该肿么讲清楚Stream这货,毕竟,gulp插件的实现不像grunt插件的实现那么直观. 好吧,于是决定单刀直入了.文中 ...

随机推荐

  1. atexit函数和exit函数的理解

    按照ISO C的规定,一个进程可以登记多达32个函数,这些函数将由exit自动调用,通常这32个函数被称为终止处理程序,并调用atexit函数来登记这些函数. 我们通常认为C语言的起始函数是main函 ...

  2. VS2010调试多进程

    http://msdn.microsoft.com/zh-cn/library/ms123401.aspx 选择启动项目 在“解决方案资源管理器”中,右击项目名,然后在快捷菜单上单击“设为启动项目”. ...

  3. activiti实战--第一章--认识Activiti

    学习资料:<Activiti实战> 第一章 认识Activiti 内容概览:讲解activiti的特点.接口概览.架构等基本信息. 1.3 Activiti的特点 1.使用mybatis ...

  4. Rplidar学习(二)—— SDK库文件学习

    SDK头文件介绍 1.头文件简介: rplidar.h //一般情况下开发的项目中仅需要引入该头文件即可使用 RPLIDAR SDK 的所有功能. rplidar_driver.h //定义了 SDK ...

  5. shell value too great for base

    今天同步文件的时候发现了这个问题: 原因是: tar_file_month=`date +%m` rsync -auzq --exclude=))"]" 当月是8月,tar_fil ...

  6. mvc 权限验证

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  7. Html5 canvas 绘制彩票走势图

    因须要 要实现一个类似彩票走势图的功能,初次学Html5 ,非常多地方不明白,前段时间也发帖请教过这个问题.也是没给个明白说话,在网上搜了非常多,也没有实现的样例,今天细致研究了下.发现事实上也不是非 ...

  8. SpringBoot多跨域请求的支持(JSONP)

    在我们做项目的过程中,有可能会遇到跨域请求,所以需要我们自己组装支持跨域请求的JSONP数据,而在4.1版本以后的SpringMVC中,为我们提供了一个AbstractJsonpResponseBod ...

  9. 在Java中final类与一般类有什么样的区别

    final修饰的类不能被继承. Sting就是一个被final修饰的类,我们只能用,不用继承final不仅可以修饰类,还可以修饰变量,被final修饰的变量就是一个常量,只能赋值一次注意final和f ...

  10. chrome 插件 导出与导入,以apizza SQ为例

    一.chrome 插件的导出 1.打开 chrome://extensions/ 2.打开开发者模式 3.复制插件的ID 4.搜索 通常是在:C:\Users\Lee\AppData\Local\Go ...