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:
authorAl Korgun <alkorgun@gmail.com>2013-10-21 07:21:09 +0400
committerAl Korgun <alkorgun@gmail.com>2013-10-21 07:21:09 +0400
commit9ce43fd2842899065707638d43f84372ed1ee750 (patch)
treeed65ae6b9ba98bf5bbcc698a352523fe3874d9e0
parent9545b467065214e1641ecc52b624f57f4fe9e84b (diff)
command "port" added; fixed commands: "imdb", "google", "clients", "cron" (for ~infinite cycles); library "xmpppy" refactored
-rw-r--r--BlackSmith.py4
-rw-r--r--expansions/allweb/code.py75
-rw-r--r--expansions/config/code.py8
-rw-r--r--expansions/cron/code.py16
-rw-r--r--expansions/dns/code.py42
-rw-r--r--expansions/dns/port.en5
-rw-r--r--expansions/dns/port.name4
-rw-r--r--expansions/dns/port.ru5
-rw-r--r--librarys.zipbin98410 -> 108504 bytes
9 files changed, 109 insertions, 50 deletions
diff --git a/BlackSmith.py b/BlackSmith.py
index 1d7c45a..0abf78f 100644
--- a/BlackSmith.py
+++ b/BlackSmith.py
@@ -969,7 +969,9 @@ def Sender(disp, stanza):
pass
except SelfExc, exc:
Print(exc_str(exc, "\n\n%s: %s!"), color2)
- except:
+ except iThr.ThrKill:
+ pass
+ except Exeption:
collectExc(Sender)
sUnavailable = lambda disp, data: Sender(disp, xmpp.Presence(typ = Types[4], status = data))
diff --git a/expansions/allweb/code.py b/expansions/allweb/code.py
index 4dd0d2e..26b0a24 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.x26
-# Id: 25~26c
+# exp_name = "allweb" # /code.py v.x27
+# Id: 26~26c
# Code © (2011-2013) by WitcherGeralt [alkorgun@gmail.com]
class expansion_temp(expansion):
@@ -16,7 +16,7 @@ class expansion_temp(expansion):
UserAgent = ("User-Agent", "%s/%s" % (ProdName[:10], CapsVer))
- UserAgent_Moz = (UserAgent[0], "Mozilla/5.0 (Windows NT 6.1; WOW64; {0}) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1".format(UserAgents.get(DefLANG, "en-US")))
+ UserAgent_Moz = (UserAgent[0], "Mozilla/5.0 (Linux; Android 4.0.4; {0}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.82 Safari/537.36".format(UserAgents.get(DefLANG, "en-US")))
Web.Opener.addheaders = [UserAgent_Moz]
@@ -121,7 +121,7 @@ class expansion_temp(expansion):
try:
list = data["responseData"]["results"]
desc = list.pop(0)
- except LookupError:
+ except TypeError, LookupError:
answer = self.AnsBase[5]
else:
ls = []
@@ -195,7 +195,7 @@ class expansion_temp(expansion):
else:
try:
body = data["sentences"][0]["trans"]
- except LookupError:
+ except TypeError, LookupError:
answer = self.AnsBase[1]
else:
if lang0 == "auto":
@@ -290,7 +290,7 @@ class expansion_temp(expansion):
if list:
ls = ["\n[#] [Name, Year] [Rating] (Votes)"]
for Number, (Name, Numb, Count) in enumerate(list, 1):
- ls.append("%d) %s - %s (%s)" % (Number, self.sub_ehtmls(Name), Numb, sub_desc(Count, ["&nbsp;"])))
+ ls.append("%d) %s - %s %s" % (Number, self.sub_ehtmls(Name), Numb, sub_desc(Count, ["&nbsp;"])))
if limit and limit <= Number:
break
if not limit or limit > 25:
@@ -385,7 +385,7 @@ class expansion_temp(expansion):
limit = 5
else:
limit = None
- Opener = Web("http://www.imdb.com/chart/top", headers = self.IMDbHeaders)
+ Opener = Web("http://m.imdb.com/chart/top_json", headers = self.IMDbHeaders)
try:
data = Opener.get_page(self.UserAgent_Moz)
except Web.Two.HTTPError, exc:
@@ -393,33 +393,44 @@ class expansion_temp(expansion):
except:
answer = self.AnsBase[0]
else:
- data = data.decode("utf-8")
- data = get_text(data, '<div id="main">', "</div>")
- if data:
- comp = compile__('<td align="center">%s((?:\d\.\d)+|\d+?)</font></td><td>%s<a href="/title/tt\d+?/">' \
- '(.+?)</a>(.+?)</font></td><td align="right">%s(.+?)</font>' \
- '</td>' % (('<font face="Arial, Helvetica, sans-serif" size="-1">',)*3), 16)
- data = comp.findall(data)
- if data:
- ls = ["\n[#] [Name, Year] [Rating] (Votes)"]
- for Number, (Numb, Name, Year, Count) in enumerate(data, 1):
- ls.append("%s) %s %s - %s (%s)" % (Number, self.sub_ehtmls(Name), Year.strip(), Numb, Count))
- if limit and limit <= Number:
- break
- if not limit or limit > 25:
- if stype == Types[1]:
- Answer(AnsBase[11], stype, source, disp)
- Top250 = str.join(chr(10), ls)
- Message(source[0], Top250, disp)
- else:
- answer = str.join(chr(10), ls)
- else:
+ try:
+ data = self.json.loads(data)
+ except:
answer = self.AnsBase[1]
+ else:
+ try:
+ data = data["list"]
+ except TypeError, LookupError:
+ answer = self.AnsBase[1]
+ else:
+ ls = ["\n[#] [Name, Year] [Rating] (Votes)"]
+ comp = compile__("([\d\.,]+).*\s([\d\.,]+)")
+ try:
+
+ assert isinstance(data, list)
+
+ for Number, desc in enumerate(data, 1):
+ Name = desc["title"]
+ Year = desc["extra"]
+ Numb, Count = comp.search(desc["detail"]).groups()
+ ls.append("%s) %s %s - %s (%s)" % (Number, Name, Year, Numb, Count))
+ if limit and limit <= Number:
+ break
+ except (AssertionError, TypeError, LookupError):
+ answer = self.AnsBase[5]
+ else:
+ if not limit or limit > 25:
+ if stype == Types[1]:
+ Answer(AnsBase[11], stype, source, disp)
+ Top250 = str.join(chr(10), ls)
+ Message(source[0], Top250, disp)
+ else:
+ answer = str.join(chr(10), ls)
elif isNumber(body):
IMDbRequest = self.IMDbRequest.copy()
IMDbRequest["id"] = ("tt" + body)
IMDbRequest["plot"] = "full"
- Opener = Web("http://imdbapi.org/?", IMDbRequest.iteritems())
+ Opener = Web("http://imdbapi.org/?", IMDbRequest.items())
try:
data = Opener.get_page(self.UserAgent_Moz)
except Web.Two.HTTPError, exc:
@@ -466,7 +477,7 @@ class expansion_temp(expansion):
IMDbRequest = self.IMDbRequest.copy()
IMDbRequest["q"] = body
IMDbRequest["limit"] = "10"
- Opener = Web("http://imdbapi.org/?", IMDbRequest.iteritems())
+ Opener = Web("http://imdbapi.org/?", IMDbRequest.items())
try:
data = Opener.get_page(self.UserAgent_Moz)
except Web.Two.HTTPError, exc:
@@ -976,7 +987,7 @@ class expansion_temp(expansion):
except:
answer = self.AnsBase[0]
else:
- data = data.decode("utf-8")
+ data = data.decode("utf-8", "replace")
data = get_text(data, "<h2 class=\"b-subtitle\">", "</div>")
if data:
answer = self.decodeHTML(sub_desc(data, (chr(10), ("<li>", chr(10)), ("<h2 class=\"b-subtitle\">", chr(10)*2), ("</h2>", chr(10)))))
@@ -998,7 +1009,7 @@ class expansion_temp(expansion):
except:
answer = self.AnsBase[0]
else:
- data = data.decode("utf-8")
+ data = data.decode("utf-8", "replace")
comp = compile__("<a href=\"http://m\.market\.yandex\.ru/model\.xml\?hid=(\d+?)&amp;modelid=(\d+?)&amp;show-uid=\d+?\">(.+?)</a>", 16)
list = comp.findall(data)
if list:
diff --git a/expansions/config/code.py b/expansions/config/code.py
index 7da6380..5de2fb3 100644
--- a/expansions/config/code.py
+++ b/expansions/config/code.py
@@ -1,8 +1,8 @@
# coding: utf-8
# BlackSmith mark.2
-# exp_name = "config" # /code.py v.x8
-# Id: 19~7c
+# exp_name = "config" # /code.py v.x9
+# Id: 19~8c
# Code © (2011-2013) by WitcherGeralt [alkorgun@gmail.com]
class expansion_temp(expansion):
@@ -119,8 +119,8 @@ class expansion_temp(expansion):
Clients[Name].disconnect()
except IOError:
pass
- if Flood.has_key(Name):
- del Flood[Name]
+ if Guard.has_key(Name):
+ del Guard[Name]
del InstancesDesc[Name]
for x in ConDisp.sections():
if Name == client_config(ConDisp, x)[0]:
diff --git a/expansions/cron/code.py b/expansions/cron/code.py
index b48f018..cbea63a 100644
--- a/expansions/cron/code.py
+++ b/expansions/cron/code.py
@@ -1,9 +1,9 @@
# coding: utf-8
# BlackSmith mark.2
-# exp_name = "cron" # /code.py v.x5
-# Id: 27~4c
-# Code © (2010-2012) by WitcherGeralt [alkorgun@gmail.com]
+# exp_name = "cron" # /code.py v.x6
+# Id: 27~5c
+# Code © (2010-2013) by WitcherGeralt [alkorgun@gmail.com]
class expansion_temp(expansion):
@@ -95,15 +95,13 @@ class expansion_temp(expansion):
answer = self.AnsBase[2]
elif 59 < Te and Te*Tr <= 4147200 or enough_access(source[1], source[2], 7):
t_ls, repeat = [Te], (Te, itypes.Number(Tr))
- for x in xrange(1, Tr):
+ for x in xrange(7):
t_ls.append(t_ls[-1] + Te)
Time = time.mktime(gt)
Te += Time
- ltls = len(t_ls)
- t_ls = enumerated_list([time.ctime(dt + Time) for dt in t_ls[:8]])
- if ltls > 8:
- t_ls += self.AnsBase[3] % (ltls - 8)
- answer = self.AnsBase[4] % (t_ls)
+ answer = self.AnsBase[4] % enumerated_list([time.ctime(dt + Time) for dt in t_ls])
+ if Tr > 8:
+ answer += self.AnsBase[3] % (Tr - 8)
add = self.add_cron
del self
answer = add(**locals())
diff --git a/expansions/dns/code.py b/expansions/dns/code.py
index c9b27cb..378be4b 100644
--- a/expansions/dns/code.py
+++ b/expansions/dns/code.py
@@ -1,9 +1,9 @@
# coding: utf-8
# BlackSmith mark.2
-# exp_name = "dns" # /code.py v.x1
-# Id: 34~1c
-# Code © (2012) by WitcherGeralt [alkorgun@gmail.com]
+# exp_name = "dns" # /code.py v.x2
+# Id: 34~2c
+# Code © (2012-2013) by WitcherGeralt [alkorgun@gmail.com]
class expansion_temp(expansion):
@@ -25,4 +25,38 @@ class expansion_temp(expansion):
answer = AnsBase[1]
Answer(answer, stype, source, disp)
- commands = ((command_dns, "dns", 1,),)
+ def command_port(self, stype, source, adress, disp):
+ if adress:
+ adress = adress.split()
+ if len(adress) != 2:
+ host, port = adress
+ if port.isdigit():
+ server = (host, int(port))
+ if ":" in host:
+ flag = self.socket.AF_INET6
+ server = server.__add__((0, 0))
+ host = host.join(("[", "]"))
+ else:
+ flag = self.socket.AF_INET
+ sock = self.socket.socket(flag, socket.SOCK_STREAM)
+ sock.settimeout(6)
+ try:
+ sock.connect(server)
+ except:
+ result = "{0}:{1} is closed.".format(host, port)
+ else:
+ result = "{0}:{1} is opened.".format(host, port)
+ finally:
+ sock.close()
+ else:
+ answer = AnsBase[30]
+ else:
+ answer = AnsBase[2]
+ else:
+ answer = AnsBase[1]
+ Answer(answer, stype, source, disp)
+
+ commands = (
+ (command_dns, "dns", 1,),
+ (command_port, "port", 1,)
+ )
diff --git a/expansions/dns/port.en b/expansions/dns/port.en
new file mode 100644
index 0000000..df52325
--- /dev/null
+++ b/expansions/dns/port.en
@@ -0,0 +1,5 @@
+checks for the opened port
+{command} [domain/ip_address] [port]
+*/{command} google.com 80
+*/{command} 2a00:1450:4001:c02::64 80
+*/{command} 72.21.210.29 80 \ No newline at end of file
diff --git a/expansions/dns/port.name b/expansions/dns/port.name
new file mode 100644
index 0000000..911e077
--- /dev/null
+++ b/expansions/dns/port.name
@@ -0,0 +1,4 @@
+{
+ "RU": "порт",
+ "UA": "порт"
+} \ No newline at end of file
diff --git a/expansions/dns/port.ru b/expansions/dns/port.ru
new file mode 100644
index 0000000..540ae35
--- /dev/null
+++ b/expansions/dns/port.ru
@@ -0,0 +1,5 @@
+проверяет открыт ли порт на указанном сервере
+{command} [домен/ip_адрес] [порт]
+*/{command} google.com 80
+*/{command} 2a00:1450:4001:c02::64 80
+*/{command} 72.21.210.29 80 \ No newline at end of file
diff --git a/librarys.zip b/librarys.zip
index b82ca30..a35261d 100644
--- a/librarys.zip
+++ b/librarys.zip
Binary files differ