coding utf-8 plugs weather py __copyright__ this file is in the public

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# -*- coding: utf-8 -*-
# plugs/weather.py
#
__copyright__ = 'this file is in the public domain'
__revision__ = '$Id: bender.py 517 2007-02-04 11:17:00Z deck $'
from gozerbot.generic import handle_exception
from gozerbot.commands import cmnds
from gozerbot.examples import examples
from gozerbot.plughelp import plughelp
import re
import urllib2
from BeautifulSoup import BeautifulStoneSoup
plughelp.add('weather', '!w <cityid>')
class Weather():
url = "http://informer.gismeteo.ru/rss/%s.xml"
def __init__(self):
pass
def weather(self, city, nick):
try:
res = urllib2.urlopen(self.url % city).read()
rss = BeautifulStoneSoup(res)
pattern_title = re.compile('<title>(.*): (.*),(.*)</title>', re.S)
pattern_descr = re.compile('<description>(.*)</description>', re.S)
items = rss.findAll("item")
city_name = pattern_title.findall(unicode(items[0].title))
string = "%s, лови погоду на город *%s* :\r\n" % (nick, city_name[0][0])
for item in items:
title = pattern_title.findall(unicode(item.title))
descr = pattern_descr.findall(unicode(item.description))
string += "%s, %s: " % (title[0][1], title[0][2])
string += "%s\r\n" % descr[0]
return string
except:
return "/me говорит всем человекам: этот город уже уничтожен. Ха-ха-ха, ха-ха-ха, ха-ха-ха! (дьявольский смех)"
def handle_weather(bot, ievent):
w = Weather()
if ievent.args:
city = ievent.args[0]
else:
# Default city - Spb
city = "26063"
ievent.reply(w.weather(city, ievent.nick))
cmnds.add('w', handle_weather, 'ANY')