Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/alkorgun/blacksmith-2.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlKorgun@gmail.com <AlKorgun@gmail.com@94c44753-77e5-68b8-8764-2ca2b8acb85e>2011-12-11 04:43:31 +0400
committerAlKorgun@gmail.com <AlKorgun@gmail.com@94c44753-77e5-68b8-8764-2ca2b8acb85e>2011-12-11 04:43:31 +0400
commit086d8bcbf7058bf4238804698b75bfc8a3dcabca (patch)
tree957dee79f5160a189466d1d28bcebe7613b342c1
parentf2c74fe7ea80d973fb2ed86c6822643a07ac2009 (diff)
gismeteo added
-rw-r--r--expansions/allweb/code.py72
-rw-r--r--expansions/allweb/gismeteo.ru10
-rw-r--r--expansions/allweb/insc.py16
3 files changed, 83 insertions, 15 deletions
diff --git a/expansions/allweb/code.py b/expansions/allweb/code.py
index 3a31745..33e80ee 100644
--- a/expansions/allweb/code.py
+++ b/expansions/allweb/code.py
@@ -1,8 +1,8 @@
# coding: utf-8
# BlackSmith mark.2
-exp_name = "allweb" # /code.py v.x9
-# Id: 25~9a
+exp_name = "allweb" # /code.py v.x10
+# Id: 25~10a
# Code © (2011) by WitcherGeralt [WitcherGeralt@rocketmail.com]
expansion_register(exp_name)
@@ -315,9 +315,9 @@ def command_imdb(ltype, source, body, disp):
if Vtds:
Numb = "%s (Votes: %s)" % (Numb, Vtds)
ls.append("Raiting: %s" % Numb)
- Ttls = (("Director", "\s+Director:\s+"), ("Director", "Director:"),
- ("Stars", "\s+Stars:\s+"), ("Stars", "Stars:"),
- ("Writers", "\s+Writers:\s+"), ("Writers", "Writers:"))
+ Ttls = (("Director", "\s*Director:\s*"),
+ ("Stars", "\s*Stars:\s*"),
+ ("Writers", "\s*Writers:\s*"), ("Writer", "\s*Writer:\s*"))
for Title in Ttls:
list = get_text(data, '<h4 class="inline">%s</h4>' % Title[1], "</div>")
if list:
@@ -481,6 +481,63 @@ def command_jquote(ltype, source, body, disp):
answer = AllwebAnsBase[1]
Answer(answer, ltype, source, disp)
+def command_gismeteo(ltype, source, body, disp):
+ if body:
+ ls = body.split()
+ Numb = ls.pop(0)
+ if ls and isNumber(Numb):
+ City = body[(body.find(Numb) + len(Numb) + 1):].strip()
+ Numb = int(Numb)
+ else:
+ Numb, City = (None, body)
+ if -1 < Numb < 13 or not Numb:
+ Req = Web("http://m.gismeteo.ru/citysearch/by_name/?", [("gis_search", City.encode("utf-8"))])
+ try:
+ data = Req.get_page(UserAgent)
+ except:
+ answer = AllwebAnsBase[0]
+ else:
+ data = data.decode("utf-8")
+ data = get_text(data, "<li><a href=\"/weather/", "/\"><span>", "\d+")
+ if data:
+ if Numb != None:
+ data = str.join(chr(47), [data, str(Numb) if Numb != 0 else "weekly"])
+ Req = Web("http://m.gismeteo.ru/weather/%s/" % data)
+ try:
+ data = Req.get_page(UserAgent)
+ except:
+ answer = AllwebAnsBase[0]
+ else:
+ data = data.decode("utf-8")
+ mark = get_text(data, "<th colspan=\"2\">", "</th>")
+ if Numb != 0:
+ comp = compile__('<tr class="tbody">\s+?<th.*?>(.+?)</th>\s+?<td.+?/></td>\s+?</tr>\s+?<tr>\s+?<td.+?>(.+?)</td>\s+?</tr>\s+?<tr class="dl">\s+?<td>&nbsp;</td>\s+?<td class="clpersp"><p>(.+?)</p></td>\s+?</tr>\s+?<tr class="dl"><td class="left">(.+?)</td><td>(.+?)</td></tr>\s+?<tr class="dl"><td class="left">(.+?)</td><td>(.+?)</td></tr>\s+?<tr class="dl bottom"><td class="left">(.+?)</td><td>(.+?)</td></tr>', 16)
+ list = comp.findall(data)
+ if list:
+ ls = [(decodeHTML(mark) if mark else "\->")]
+ for data in list:
+ ls.append("{0}:\n\t{2}, {1}\n\t{3} {4}\n\t{5} {6}\n\t{7} {8}".format(*data))
+ answer = decodeHTML(str.join(chr(10), ls))
+ else:
+ answer = AllwebAnsBase[1]
+ else:
+ comp = compile__('<tr class="tbody">\s+?<td class="date" colspan="3"><a.+?>(.+?)</a></td>\s+?</tr>\s+?<tr>\s+?<td rowspan="2"><a.+?/></a></td>\s+?<td class="clpersp"><p>(.+?)</p></td>\s+?</tr>\s+?<tr>\s+?<td.+?>(.+?)</td>', 16)
+ list = comp.findall(data)
+ if list:
+ ls = [(decodeHTML(mark) if mark else "\->")]
+ for data in list:
+ ls.append("{0}:\n\t{1}, {2}".format(*data))
+ answer = decodeHTML(str.join(chr(10), ls))
+ else:
+ answer = AllwebAnsBase[1]
+ else:
+ answer = AllwebAnsBase[5]
+ else:
+ answer = AnsBase[2]
+ else:
+ answer = AnsBase[1]
+ Answer(answer, ltype, source, disp)
+
expansions[exp_name].funcs_add([sub_ehtmls, e_sb, decodeHTML, command_jc, command_google, command_imdb, command_python])
expansions[exp_name].ls.extend([
htmlentitydefs.__name__,
@@ -502,14 +559,15 @@ command_handler(command_google, {"RU": "гугл", "EN": "google"}, 2, exp_name)
if DefLANG in ("RU", "UA"):
- expansions[exp_name].funcs_add([command_kino, command_currency, command_jquote])
+ expansions[exp_name].funcs_add([command_kino, command_currency, command_jquote, command_gismeteo])
expansions[exp_name].ls.extend(["Currency_desc"])
command_handler(command_kino, {"RU": "кино", "EN": "kino"}, 2, exp_name)
command_handler(command_currency, {"RU": "валюты", "EN": "currency"}, 2, exp_name)
command_handler(command_jquote, {"RU": "цитата", "EN": "jquote"}, 2, exp_name)
+ command_handler(command_gismeteo, {"RU": "погода", "EN": "gismeteo"}, 2, exp_name)
else:
- del command_kino, command_currency, command_jquote
+ del command_kino, command_currency, command_jquote, command_gismeteo
command_handler(command_imdb, {"RU": "imdb", "EN": "imdb"}, 2, exp_name)
command_handler(command_python, {"RU": "питон", "EN": "python"}, 2, exp_name)
diff --git a/expansions/allweb/gismeteo.ru b/expansions/allweb/gismeteo.ru
new file mode 100644
index 0000000..4be45c5
--- /dev/null
+++ b/expansions/allweb/gismeteo.ru
@@ -0,0 +1,10 @@
+информация о погоде с gismeteo.ru
+погода (0-12) [город]
+*/погода Питер
+бот покажет прогноз погоды по Санкт-Петербургу на сегодня
+*/погода 1 Москва
+бот покажет прогноз погоды по Москве на завтра
+*/погода 2 Пермь
+бот покажет прогноз погоды по Перми на послезавтра
+*/погода 0 Казань
+бот покажет краткий прогноз погоды по Казани на неделю \ No newline at end of file
diff --git a/expansions/allweb/insc.py b/expansions/allweb/insc.py
index 60f61d2..e50d8be 100644
--- a/expansions/allweb/insc.py
+++ b/expansions/allweb/insc.py
@@ -19,21 +19,21 @@ if DefLANG in ("RU", "UA"):
Currency_desc = {
"AMD": "Армянский драм",
- "AUD": "Австралийский доллар",
+ "AUD": "Австралийский доллар ($)",
"AZN": "Азербайджанский манат",
"BGN": "Болгарский лев",
"BRL": "Бразильский реал",
"BYR": "Белорусский рубль",
"CAD": "Канадский доллар",
- "CHF": "Швейцарский франк",
+ "CHF": "Швейцарский франк (₣)",
"CNY": "Китайский юань",
"CZK": "Чешская крона",
"DKK": "Датская крона",
- "EUR": "Евро",
- "GBP": "Фунт стерлингов Соединенного королевства",
+ "EUR": "Евро (€)",
+ "GBP": "Фунт стерлингов Соединенного королевства (£)",
"HUF": "Венгерский форинт",
"INR": "Индийская рупия",
- "JPY": "Японская йена",
+ "JPY": "Японская йена (¥)",
"KGS": "Киргизский сом",
"KRW": "Вон Республики Корея",
"KZT": "Казахский тенге",
@@ -48,11 +48,11 @@ if DefLANG in ("RU", "UA"):
"SGD": "Сингапурский доллар",
"TJS": "Таджикская сомони",
"TMT": "Новый туркменский манат",
- "TRY": "Турецкая лира",
+ "TRY": "Турецкая лира (£)",
"UAH": "Украинская гривна",
- "USD": "Доллар США",
+ "USD": "Доллар США ($)",
"UZS": "Узбекский сум",
- "XDR": "СДР (специальные права заимствования)",
+ "XDR": "Специальные права заимствования (¤)",
"ZAR": "Южноафриканский рэнд"
}
else: