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>2012-11-14 03:25:42 +0400
committerAl Korgun <alkorgun@gmail.com>2012-11-14 03:25:42 +0400
commit343ded2b4c4b1b153e4fe4359e852a437c9c49c9 (patch)
tree8d939814219f849f1d75fd9f9d58179ff3b3ed28
parentc8f5a5fdcc184f2ccca7b2b8c20dfe0cbb97175a (diff)
allweb fixes and modifications
-rw-r--r--BlackSmith.py8
-rw-r--r--expansions/allweb/code.py261
-rw-r--r--expansions/allweb/insc.py12
-rw-r--r--expansions/help/insc.py6
-rw-r--r--librarys.zipbin98986 -> 98997 bytes
5 files changed, 161 insertions, 126 deletions
diff --git a/BlackSmith.py b/BlackSmith.py
index a6f7ac5..168149e 100644
--- a/BlackSmith.py
+++ b/BlackSmith.py
@@ -264,7 +264,7 @@ GenConFile = static % ("config.ini")
ConDispFile = static % ("clients.ini")
ChatsFile = dynamic % ("chats.db")
-(BsMark, BsVer, BsRev) = (2, 33, 0)
+(BsMark, BsVer, BsRev) = (2, 34, 0)
if os.access(SvnCache, os.R_OK):
Cache = open(SvnCache).readlines()
@@ -1109,7 +1109,7 @@ class Web:
dest.add_header(header, desc)
return self.Opener.open(dest)
- def download(self, filename = None, folder = None, feedback = None, header = ()):
+ def download(self, filename = None, folder = None, handler = None, fb = None, header = ()):
fp = self.open(header)
info = fp.info()
size = info.get("Content-Length", -1)
@@ -1137,8 +1137,8 @@ class Web:
read = 0
with open(filename, "wb") as dfp:
while VarCache["alive"]:
- if feedback:
- exec_(feedback, (info, blockNumb, blockSize, size))
+ if handler:
+ execute_handler(handler, (info, blockNumb, blockSize, size, fb))
data = fp.read(blockSize)
if not data:
break
diff --git a/expansions/allweb/code.py b/expansions/allweb/code.py
index 9369f94..91cfb67 100644
--- a/expansions/allweb/code.py
+++ b/expansions/allweb/code.py
@@ -333,32 +333,33 @@ class expansion_temp(expansion):
answer = self.AnsBase[-1]
else:
answer = self.AnsBase[5]
- elif ls:
+ else:
Req = (body if chr(42) != c1st else body[2:].strip())
- Req = Req.encode("cp1251")
- Req = Web("http://m.kinopoisk.ru/search/%s" % Web.One.quote_plus(Req), headers = self.kinoHeaders.copy())
- try:
- data = Req.get_page(self.UserAgent_Moz)
- except Web.Two.HTTPError, exc:
- answer = str(exc)
- except:
- answer = self.AnsBase[0]
- else:
- data = data.decode("cp1251")
- comp = compile__("<a href=\"http://m.kinopoisk.ru/movie/(\d+?)/\">(.+?)</a>")
- list = comp.findall(data)
- if list:
- Number = itypes.Number()
- ls = ["\n[#] [Name, Year] (#id)"]
- for Numb, Name in list:
- ls.append("%d) %s (#%s)" % (Number.plus(), self.sub_ehtmls(Name), Numb))
- answer = str.join(chr(10), ls)
- elif data.count(self.C3oP):
- answer = self.AnsBase[-1]
+ if Req:
+ Req = Req.encode("cp1251")
+ Req = Web("http://m.kinopoisk.ru/search/%s" % Web.One.quote_plus(Req), headers = self.kinoHeaders.copy())
+ try:
+ data = Req.get_page(self.UserAgent_Moz)
+ except Web.Two.HTTPError, exc:
+ answer = str(exc)
+ except:
+ answer = self.AnsBase[0]
else:
- answer = self.AnsBase[5]
- else:
- answer = AnsBase[2]
+ data = data.decode("cp1251")
+ comp = compile__("<a href=\"http://m.kinopoisk.ru/movie/(\d+?)/\">(.+?)</a>")
+ list = comp.findall(data)
+ if list:
+ Number = itypes.Number()
+ ls = ["\n[#] [Name, Year] (#id)"]
+ for Numb, Name in list:
+ ls.append("%d) %s (#%s)" % (Number.plus(), self.sub_ehtmls(Name), Numb))
+ answer = str.join(chr(10), ls)
+ elif data.count(self.C3oP):
+ answer = self.AnsBase[-1]
+ else:
+ answer = self.AnsBase[5]
+ else:
+ answer = AnsBase[2]
else:
answer = AnsBase[1]
if locals().has_key(Types[12]):
@@ -462,31 +463,32 @@ class expansion_temp(expansion):
answer = self.AnsBase[1]
else:
answer = self.AnsBase[1]
- elif ls:
+ else:
Req = (body if chr(42) != c1st else body[2:].strip())
- Req = Req.encode("utf-8")
- Req = Web("http://www.imdb.com/find?", [("s", "tt"), ("q", Req)], self.IMDbHeaders)
- try:
- data = Req.get_page(self.UserAgent_Moz)
- except Web.Two.HTTPError, exc:
- answer = str(exc)
- except:
- answer = self.AnsBase[0]
- else:
- list = get_text(data, "<table>", "</table>")
- if list:
- comp = compile__("/find-title-\d+?/title_.+?/images/b.gif\?link=/title/tt(\d+?)/';\">(.+?)</a> (.+?)<", 16)
- list = comp.findall(list)
- if list:
- Number = itypes.Number()
- ls = ["\n[#] [Name, Year] (#id)"]
- for Numb, Name, Year in list:
- ls.append("%d) %s %s (#%s)" % (Number.plus(), self.sub_ehtmls(Name), Year.strip(), Numb))
- answer = str.join(chr(10), ls)
+ if Req:
+ Req = Req.encode("utf-8")
+ Req = Web("http://www.imdb.com/find?", [("s", "tt"), ("q", Req)], self.IMDbHeaders)
+ try:
+ data = Req.get_page(self.UserAgent_Moz)
+ except Web.Two.HTTPError, exc:
+ answer = str(exc)
+ except:
+ answer = self.AnsBase[0]
else:
- answer = self.AnsBase[5]
- else:
- answer = AnsBase[2]
+ list = get_text(data, "<table>", "</table>")
+ if list:
+ comp = compile__("/find-title-\d+?/title_.+?/images/b.gif\?link=/title/tt(\d+?)/';\">(.+?)</a> (.+?)<", 16)
+ list = comp.findall(list)
+ if list:
+ Number = itypes.Number()
+ ls = ["\n[#] [Name, Year] (#id)"]
+ for Numb, Name, Year in list:
+ ls.append("%d) %s %s (#%s)" % (Number.plus(), self.sub_ehtmls(Name), Year.strip(), Numb))
+ answer = str.join(chr(10), ls)
+ else:
+ answer = self.AnsBase[5]
+ else:
+ answer = AnsBase[2]
else:
answer = AnsBase[1]
if locals().has_key(Types[12]):
@@ -540,59 +542,85 @@ class expansion_temp(expansion):
answer = AnsBase[1]
Answer(answer, ltype, source, disp)
- def download_process(self, info, blockNumb, blockSize, size):
+ downloadLock = iThr.allocate_lock()
+
+ def download_process(self, info, blockNumb, blockSize, size, fb):
if not blockNumb:
Print("\n")
- Print(info, color4)
- else:
- done = (blockNumb * blockSize)
- if done >= size:
+ Print(str(info), color3)
+ elif size >= blockSize:
+ fb[3] += blockSize
+ if not fb[4]:
+ fb[4] = (size / 100)
+ if fb[4] in (0, 1):
+ fb[4] = 2
+ else:
+ residue = fb[4] % blockSize
+ if fb[4] == residue:
+ fb[4] = 2
+ while fb[4] < residue:
+ fb[4] *= 2
+ elif residue:
+ fb[4] -= residue
+ if fb[3] >= size:
Print("Done.", color3)
- else:
- Print("loaded - %.2f%s" % ((done / (float(size) / 100)), chr(37)), color4)
+ elif not fb[3] % fb[4]:
+ Pcts = fb[3] / fb[4]
+ if Pcts == 100:
+ Pcts = 99.95
+ Print("loaded - {0}%".format(Pcts), color4)
+ Time = time.time()
+ if Time - fb[1] >= 30:
+ fb[1] = Time
+ Message(fb[0], self.AnsBase[9].format(Pcts), fb[2])
def command_download(self, ltype, source, body, disp):
if body:
- body = body.split()
- if len(body) == 1:
- link = body.pop()
- folder = None
- filename = None
- elif len(body) == 2:
- link, folder = body
- filename = None
- else:
- link, folder, filename = body[:3]
- if not enough_access(source[1], source[2], 8):
- folder = "Downloads"
- if filename:
- ls = os.path.split(filename)
- if len(ls) > 1:
- filename = ls[-1]
- if folder:
- if AsciiSys:
- folder = folder.encode("utf-8")
- if not os.path.isdir(folder):
- try:
- os.makedirs(folder)
- except:
- link = None
- if AsciiSys:
- folder = folder.decode("utf-8")
- if link:
- Req = Web(link)
- try:
- data = Req.download(filename, folder, self.download_process, self.UserAgent)
- except Web.Two.HTTPError, exc:
- answer = str(exc)
- except SelfExc:
- answer = exc_info()[1]
- except:
- answer = self.AnsBase[0]
- else:
- answer = "Done.\nPath: %s\nSize: %s" % (data[0], Size2Text(data[2]))
+ if not self.downloadLock.locked():
+ with self.downloadLock:
+ body = body.split()
+ if len(body) == 1:
+ link = body.pop()
+ folder = None
+ filename = None
+ elif len(body) == 2:
+ link, folder = body
+ filename = None
+ else:
+ link, folder, filename = body[:3]
+ if not enough_access(source[1], source[2], 8):
+ folder = "Downloads"
+ if filename:
+ ls = os.path.split(filename)
+ if len(ls) > 1:
+ filename = ls[-1]
+ if folder:
+ if AsciiSys:
+ folder = folder.encode("utf-8")
+ if not os.path.isdir(folder):
+ try:
+ os.makedirs(folder)
+ except:
+ link = None
+ if AsciiSys:
+ folder = folder.decode("utf-8")
+ if link:
+ Message(source[0], self.AnsBase[10], disp)
+ Req = Web(link)
+ try:
+ data = Req.download(filename, folder, self.download_process, [source[0], time.time(), disp, 0, 0], self.UserAgent)
+ except Web.Two.HTTPError, exc:
+ answer = str(exc)
+ except SelfExc:
+ answer = exc_info()[1]
+ except:
+ answer = self.AnsBase[0]
+ else:
+ answer = "Done.\nPath: %s\nSize: %s" % (data[0], Size2Text(data[2]))
+ else:
+ answer = AnsBase[2]
else:
- answer = AnsBase[2]
+ answer = self.AnsBase[11]
else:
answer = AnsBase[1]
Answer(answer, ltype, source, disp)
@@ -921,31 +949,32 @@ class expansion_temp(expansion):
answer = AnsBase[30]
else:
answer = AnsBase[2]
- elif ls:
+ else:
Req = (body if chr(42) != c1st else body[2:].strip())
- Req = Req.encode("utf-8")
- Req = Web("http://m.market.yandex.ru/search.xml?", [("nopreciser", "1"), ("text", Req)])
- try:
- data = Req.get_page(self.UserAgent_Moz)
- except Web.Two.HTTPError, exc:
- answer = str(exc)
- except:
- answer = self.AnsBase[0]
- else:
- data = data.decode("utf-8")
- 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:
- Number = itypes.Number()
- ls = ["\n[#] [Model Name] (hid & modelid)"]
- for hid, modelid, name in list:
- if not name.startswith("<img"):
- ls.append("%d) %s (%s %s)" % (Number.plus(), self.sub_ehtmls(name), hid, modelid))
- answer = str.join(chr(10), ls)
+ if Req:
+ Req = Req.encode("utf-8")
+ Req = Web("http://m.market.yandex.ru/search.xml?", [("nopreciser", "1"), ("text", Req)])
+ try:
+ data = Req.get_page(self.UserAgent_Moz)
+ except Web.Two.HTTPError, exc:
+ answer = str(exc)
+ except:
+ answer = self.AnsBase[0]
else:
- answer = self.AnsBase[5]
- else:
- answer = AnsBase[2]
+ data = data.decode("utf-8")
+ 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:
+ Number = itypes.Number()
+ ls = ["\n[#] [Model Name] (hid & modelid)"]
+ for hid, modelid, name in list:
+ if not name.startswith("<img"):
+ ls.append("%d) %s (%s %s)" % (Number.plus(), self.sub_ehtmls(name), hid, modelid))
+ answer = str.join(chr(10), ls)
+ else:
+ answer = self.AnsBase[5]
+ else:
+ answer = AnsBase[2]
else:
answer = AnsBase[1]
if locals().has_key(Types[12]):
diff --git a/expansions/allweb/insc.py b/expansions/allweb/insc.py
index e91ddfa..f5d264c 100644
--- a/expansions/allweb/insc.py
+++ b/expansions/allweb/insc.py
@@ -8,7 +8,7 @@ UserAgents = {
if DefLANG in ("RU", "UA"):
AnsBase_temp = tuple([line.decode("utf-8") for line in (
- "Не могу получить доступ к странице.", # 0
+ "Не могу получить доступ к ресурсу.", # 0
"Проблемы с разметкой...", # 1
"Твоих запросов нет в базе.", # 2
"Не вижу твоего JID'а, поэтому не могу найти твоих запросов в базе.", # 3
@@ -17,6 +17,9 @@ if DefLANG in ("RU", "UA"):
"Этот язык не поддерживается.", # 6
"\n\n** Ещё %d вариантов перевода (командуй «перевод *»).", # 7
"Поддерживаемые языки:\n", # 8
+ "Завершено - {0}%", # 9
+ "Начинается загрузка. Это может занять несколько минут...", # 10
+ "Сейчас я занят другой загрузкой. Попробуй позже.", # 11
"\n* Погода предоставлена Gismeteo.ru", # -2
"Запрос блокирован Кинопоиском." # -1
)])
@@ -81,7 +84,7 @@ if DefLANG in ("RU", "UA"):
}
else:
AnsBase_temp = (
- "No access to the page.", # 0
+ "No access to the resource.", # 0
"Trouble with the marking...", # 1
"There are no your requests in the cache.", # 2
"I can't find your requests in the cache, because I don't know your JID.", # 3
@@ -89,7 +92,10 @@ else:
"No result...", # 5
"This language is not supported.", # 6
'\n\n** There are %d another translations (type "tr *").', # 7
- "Supported languages:\n" # 8
+ "Supported languages:\n", # 8
+ "loaded - {0}%", # 9
+ "Download can take several minutes...", # 10
+ "Now I'm busy with another load. Try again later." # 11
)
LangMap = {
diff --git a/expansions/help/insc.py b/expansions/help/insc.py
index 408ee44..e0fb561 100644
--- a/expansions/help/insc.py
+++ b/expansions/help/insc.py
@@ -3,7 +3,7 @@
if DefLANG in ("RU", "UA"):
AnsBase_temp = tuple([line.decode("utf-8") for line in (
"Команда «%s» находится в плагине -» %s", # 0
- "Доступ к команде «%s» - %d.", # 1
+ "Доступ к команде \"%s\" = %d", # 1
"\n%s\nСинтаксис:\n»»» %s", # 2
"\nПримеры:", # 3
"Файл с описанием этой команды отсутствует...", # 4
@@ -23,8 +23,8 @@ if DefLANG in ("RU", "UA"):
)])
else:
AnsBase_temp = (
- "Command '%s' is located in expansion %s", # 0
- "%s's access - %d.", # 1
+ "Command '%s' is located in expansion -> %s", # 0
+ "%s's access = %d", # 1
"\n%s\nSyntax:\n>>> %s", # 2
"\nExamples:", # 3
"Help-file for this command isn't exist...", # 4
diff --git a/librarys.zip b/librarys.zip
index bfc3fdc..9720864 100644
--- a/librarys.zip
+++ b/librarys.zip
Binary files differ