def itranslate(self, text): """interigent translator""" map = {} repl = lambda m: self._repl_link(map,m.group(0)) rex = re.compile(r"\[.*?\]", re.S) tmp = rex.sub(repl, text) # print "\n\n", tmp, "\n\n" tmp = gtranslate.translate(tmp) # for key in map: # tmp = tmp.replace(key, map[key]) tmp = re.sub(r"""<a href="(.*?)">(.*?)</a>""", r"[\1 \2]", tmp) return self.entity2unicode(tmp)
def translate(text, from_lang='auto', to_lang='auto'): # gt不支持多行文本, 故须手动拆行 # @text_newline_sep texts = convert_placeholder(text).replace('\\n', '\n').splitlines() results = [] for t in texts: results.append( gt.translate( t, to_language=convert_lang(to_lang), language=convert_lang(from_lang), # proxies=PROXIES, # 代理, 不在代码中写死代理, 通过环境变量中设置$https_proxy替代 verify=True, # 设为False可以关闭证书校验, 方便调试 timeout=5, # 5秒超时 headers={ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36' })) # 当前使用`\n`来分隔行 # @text_newline_sep return invert_placeholder('\\n'.join(results))
def translate(text, from_lang='auto', to_lang='auto'): # gt不支持多行文本, 故须手动拆行 # @text_newline_sep texts = convert_placeholder(text).replace('\\n', '\n').splitlines() results = [] for t in texts: results.append( gt.translate( t, to_language=convert_lang(to_lang), language=convert_lang(from_lang), # proxies=PROXIES, # 代理, 不在代码中写死代理, 通过环境变量中设置$https_proxy替代 verify=True, # 设为False可以关闭证书校验, 方便调试 timeout=5, # 5秒超时 headers={ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36', # 从 https://translate.google.com/m 复制cookie, 保存到环境变量中 'cookie': os.environ.get('app_translate_tools_cookie', None) })) # 当前使用`\n`来分隔行 # @text_newline_sep return invert_placeholder('\\n'.join(results))
def google_translate(): text = flask.request.args.get('text') dest_lang = flask.request.args.get('dest_lang') src_lang = flask.request.args.get('src_lang') return translate(text, dest_lang, src_lang)
def on_channel_message(self, event): tx = event.message.split() rx = tx[0].upper() params = tx[1:] def video_id(value): url_data = urlparse.urlparse(value) query = urlparse.parse_qs(url_data.query) try : video = query["v"][0] except KeyError: video = "null" return video def getcpu(): command = "cat /proc/cpuinfo" all_info = subprocess.check_output(command, shell=True).strip() for line in all_info.split("\n"): if "model name" in line: return re.sub( ".*model name.*:", "", line,1) def runProcess(exe): p = subprocess.Popen(exe, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) while(True): retcode = p.poll() #returns None while subprocess is running line = p.stdout.readline() yield line if(retcode is not None): break def xstr(s): if s is None: return 'auto' return str(s) def paste_code(to): request = urllib2.Request( 'http://dpaste.de/api/', urllib.urlencode([('content', to)]), ) response = urllib2.urlopen(request) return response.read()[1:-1] def ud(term, count): lent = [] jatx = [] dict1 = urbandict.define(term) if count > len(dict1): return("Less results pl0x kk") else: for x in range(0, count, 1): for i in dict1[x].keys(): if not(i.startswith("word")): jatx.append("\x02"+i.upper()+"\x02 : "+dict1[x][i]) return jatx if event.message.startswith("!ping"): self.send_message(event.target, str("PONG")) if event.message.startswith("!untiny") and len(shlex.split(event.message)) > 1: to = untiny(str(params[0])) self.send_message(event.target, "Untinied: "+str(to)) if event.message.startswith("!system"): self.send_message(event.target, str(platform.uname())) #if event.message.find("http") >=0 : # u = re.search("(?P<url>https?://[^\s]+)", event.message).group("url") # if len(str(u))<21 or \ # event.message.find("!tiny") >=0 or \ # event.message.find("!untiny") >=0 or \ # u == None: # pass # else: # to = tinyurl.create_one(u) # self.send_message(event.target, str(to)) # Uncomment this section for automatic Tiny'ing # change the above to your hostmask(s). if event.message.startswith("!cpu"): self.send_message(event.target, str(getcpu())) if event.message.startswith("!time"): self.send_message(event.target, str(time.ctime())) if event.message.startswith("!trans") and len(shlex.split(event.message)) > 1: t = shlex.split(event.message) try: l1 = xstr(t[2]) except IndexError: l1 = "auto" try: l2 = xstr(t[3]) except IndexError: l2 = "auto" langlist = ["af", "ht", "sr", "sq" , "iw", "sk", "ar", "hi", "sl", "be", "hu", "es", "bg", "is", "sw", "ca", "id", "sv", \ "zh-CN", "ga", "th", "zh-TW", "it", "tr", "cs", "ja", "uk", "da", "ko"," vi", "nl", "lv", "cy", "en", "et", \ "tl", "mt", "fi", "no", "fr", "pl", "gl", "pt", "de", "ro", "el", "ru"] if l1 not in langlist: l1 = "auto" if l2 not in langlist: l2 = "auto" u = t[1] lz = gtranslate.translate(u, l1, l2) self.send_message(event.target, lz+" \x02\x0310G\x03\x034o\x037o\x0310g\x039l\x034e\x03\x02 \x02\x0310T\x03\x034r\x03\x037a\x03\x0310n\x03\x039s\x03\x034f\x03\x0310u\x03\x034s\x03\x039i\x03\x037o\x03\x034n\x02".encode('utf8')+" ".encode('utf8')+"\x02))\x02".encode('utf8')) else: pass if event.message.startswith("!tiny") and len(shlex.split(event.message)) > 1: if str(params[0]).startswith("www."): to = tinyurl.create_one("http://"+str(params[0])) self.send_message(event.target, str(to)) elif event.message.startswith("!tiny"): to = tinyurl.create_one("http://"+str(params[0])) self.send_message(event.target, str(to)) else: pass if event.message.startswith("!help"): self.send_message(event.source, "\x034!time\x03"+" : Current date and time") self.send_message(event.source, "\x034!cpuinfo\x03"+" : CPU model") self.send_message(event.source, "\x034!system\x03"+" : uname -r") self.send_message(event.source, "\x034!g asian cheekbone lifting\x03"+" : Google. 3 results only so I don't get throttled by Google.") self.send_message(event.source, "\x034!ud idiot 1\x03"+" : Urban Dictionary. The number at the end is the number of results.") self.send_message(event.source, "\x034!yinfo http://www.youtube.com/watch?v=kkFXuOkp0Bo\x03"+" : Get stats of YouTube video") self.send_message(event.source, "\x034!untiny http://bit.ly/GATQhW\x03"+" : Works on most any URL tiny program that redirects to the target site. So you don't accidentalled shock site.") self.send_message(event.source, "\x034!tiny http://forum.ubuntu.org.cn/viewtopic.php?f=163&t=227944&sid=448c3f58bf4a4116a5d05ff61aec8e23\x03"+" : TinyUrl.") self.send_message(event.source, "\x034!title http://wiki.mibbit.com/index.php/Assign_a_channel_bot\x03"+" : Gets URL Title. So you don't accidental NSFW in public place.") self.send_message(event.source, "\x034!paste \"My face is very ugly, dear Diary.]/[Please help me get better-looking face.]/[I am broke.\"\x03"+" : Pastes to dpaste.de and ]/[ is the newline character") self.send_message(event.source, "\x034!tracert cia.gov\x03"+" : Traceroute, supports hostnames and IPs. no IPv6.") self.send_message(event.source, "\x034!trans '\xd0\xa2\xd1\x8b \xd0\xb4\xd0\xb5\xd0\xb9\xd1\x81\xd1\x82\xd0\xb2\xd0\xb8\xd1\x82\xd0\xb5\xd0\xbb\xd1\x8c\xd0\xbd\xd0\xbe \xd0\xbb\xd1\x8e\xd0\xb1\xd0\xb8\xd1\x88\xd1\x8c \xd0\xbc\xd0\xb5\xd0\xbd\xd1\x8f' en ru\x03"+" \ : Google Translate. Enclose your text in either single or double quotes. List of languages & abbrevation: http://code.google.com/p/python-google-translator/ ; this isn't the library being used tho.") self.send_message(event.source, "\x034!wp http://en.wikipedia.org/wiki/Manga\x03"+" : supports UTF-8 links. \x034!g example site:wikipedia.org\x03 will return wikipedia links.") if event.message.startswith("!g") and len(" ".split(event.message)) > 1: gs = pygoogle(" ".join(params[0:])) gs.pages = 1 self.send_message(event.target, "Found "+"\x02"+str(gs.get_result_count())+"\x02"+" Results"+" - \x02\x0310G\x03\x034o\x03\x037o\x0310g\x03\x039l\x03\x034e\x03\x02") try: searchresults = gs.search() for i in searchresults.keys(): self.send_message(event.target, i.encode("utf-8")+" "+searchresults[i].encode("utf-8")) except TypeError: self.send_message(event.target, "Result could not be fetched.") if event.message.startswith("!title") and len(shlex.split(event.message)) > 1: try: response = urllib2.urlopen(str(params[0])) except ValueError: response = urllib2.urlopen("http://transfusion.bshellz.net/jgarzik.html") except urllib2.URLError: response = urllib2.urlopen("http://transfusion.bshellz.net/mdienak.html") html = response.read() soup = BeautifulSoup(html) try: self.send_message(event.target, soup.html.head.title.contents[0].encode('utf8')) except AttributeError: self.send_message(event.target, "Could not get title/No title") # if event.message.startswith("!noresults"): # u = self.gresults # try: # self.gresults = int(params[0]) # except TypeError: # self.send_message = (event.target, "Not an integer") # if self.gresults > 6: # self.send_message = (event.target, "Please don't be an ...... 7 is the limit.".encode('utf8')) if event.message.startswith("!tracert") and len(shlex.split(event.message)) > 1: tracelist = [] for line in runProcess(['traceroute', str(params[0])]): tracelist.append(line) url = "http://checkip.dyndns.org" request = urllib.urlopen(url).read() theIP = re.findall(r"\d{1,3}\.\d{1,3}\.\d{1,3}.\d{1,3}", request) tracelist.append("Source IP: "+str(theIP[0])) hoplist = "\n".join(tracelist) self.send_message(event.target, paste_code(hoplist)) if event.message.startswith("!ud"): th = shlex.split(event.message) try: int(th[2]) except Exception, e: self.send_message(event.target, "Invalid number") try: for p in ud(th[1], int(th[2])): self.send_message(event.target, p.encode('utf8')) except IndexError: self.send_message(event.target, "No results!")
def google_translate(): text = flask.request.args.get('text') dest_lang = flask.request.args.get('dest_lang') src_lang = flask.request.args.get('src_lang') return translate(text, dest_lang, src_lang)
def test_translate(self): """test translatet func""" japanese = gtranslate.translate(self.english) print japanese