diff options
author | Al Korgun <alkorgun@gmail.com> | 2013-10-21 07:21:09 +0400 |
---|---|---|
committer | Al Korgun <alkorgun@gmail.com> | 2013-10-21 07:21:09 +0400 |
commit | 9ce43fd2842899065707638d43f84372ed1ee750 (patch) | |
tree | ed65ae6b9ba98bf5bbcc698a352523fe3874d9e0 | |
parent | 9545b467065214e1641ecc52b624f57f4fe9e84b (diff) |
command "port" added; fixed commands: "imdb", "google", "clients", "cron" (for ~infinite cycles); library "xmpppy" refactored
-rw-r--r-- | BlackSmith.py | 4 | ||||
-rw-r--r-- | expansions/allweb/code.py | 75 | ||||
-rw-r--r-- | expansions/config/code.py | 8 | ||||
-rw-r--r-- | expansions/cron/code.py | 16 | ||||
-rw-r--r-- | expansions/dns/code.py | 42 | ||||
-rw-r--r-- | expansions/dns/port.en | 5 | ||||
-rw-r--r-- | expansions/dns/port.name | 4 | ||||
-rw-r--r-- | expansions/dns/port.ru | 5 | ||||
-rw-r--r-- | librarys.zip | bin | 98410 -> 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, [" "]))) + ls.append("%d) %s - %s %s" % (Number, self.sub_ehtmls(Name), Numb, sub_desc(Count, [" "]))) 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+?)&modelid=(\d+?)&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 Binary files differindex b82ca30..a35261d 100644 --- a/librarys.zip +++ b/librarys.zip |