def name_generator(): accepttw = flask.g.get('accepttw') L = (lambda x: zhconv(x, 'zh-tw')) if accepttw else (lambda x: x) c = zhconv(flask.request.args.get('c', ''), 'zh-cn') sp = rawsp = flask.request.args.get('sp', ', ') if sp == 'br': sp = flask.Markup('<br>') try: num = int(flask.request.args.get('num', 100)) except Exception: num = 100 fjson = flask.request.is_xhr or flask.request.args.get('f') == "json" if c: surnames, names = select_name(c, num) else: namemodel = getattr(flask.g, 'namemodel', None) if namemodel is None: namemodel = flask.g.namemodel = chinesename.NameModel(MODEL_name) surnames, names = namemodel.processinput(c, num) if fjson: return flask.jsonify({ 's': list(map(L, surnames)), 'n': list(map(L, names)) }) else: tmpl = flask.render_template('name.html', c=c, surnames=sp.join(surnames), names=sp.join(names)) if accepttw: tmpl = zhconv(tmpl.replace('zh-cn', 'zh-tw'), 'zh-tw') return tmpl
def name_generator(): accepttw = flask.g.get('accepttw') L = (lambda x: zhconv(x, 'zh-tw')) if accepttw else (lambda x: x) c = zhconv(flask.request.args.get('c', ''), 'zh-cn') sp = rawsp = flask.request.args.get('sp', ', ') if sp == 'br': sp = flask.Markup('<br>') try: num = int(flask.request.args.get('num', 100)) except Exception: num = 100 fjson = flask.request.is_xhr or flask.request.args.get('f') == "json" if c: surnames, names = select_name(c, num) else: namemodel = getattr(flask.g, 'namemodel', None) if namemodel is None: namemodel = flask.g.namemodel = chinesename.NameModel(MODEL_name) surnames, names = namemodel.processinput(c, num) if fjson: return flask.json.dumps({'s': list(map(L, surnames)), 'n': list(map(L, names))}) else: tmpl = flask.render_template('name.html', c=c, surnames=sp.join(surnames), names=sp.join(names)) if accepttw: tmpl = zhconv(tmpl.replace('zh-cn', 'zh-tw'), 'zh-tw') return tmpl
def wenyan(): userlog = get_wy_db() tinput = flask.request.values.get('input', '') formgetlang = flask.request.values.get('lang') displaylang = flask.request.values.get('dl') if formgetlang == 'c2m': lang = 'c2m' elif formgetlang == 'm2c': lang = 'm2c' else: # == auto cscore, mscore = calctxtstat(tinput) if cscore == mscore: lang = None elif checktxttype(cscore, mscore) == 'c': lang = 'c2m' else: lang = 'm2c' ip = flask.request.remote_addr accepttw = flask.g.get('accepttw') L = (lambda x: zhconv(x, 'zh-tw')) if accepttw else (lambda x: x) origcnt = userlog.count(ip) count = 0 valid = wy_validate(ip, origcnt, userlog) talign = flask.Markup('[]') if valid == 1: origcnt = 0 userlog.delete(ip) elif valid == 0: logging.warning('Captcha failed: %s' % ip) if not tinput: toutput = '' elif valid == 0: toutput = flask.Markup(L('<p class="error">回答错误,请重试。</p>')) elif lang is None: toutput = linebreak(tinput) elif len(tinput) > MAX_CHAR * (CHAR_RATIO if lang == 'c2m' else 1): toutput = flask.Markup(L('<p class="error">文本过长,请切分后提交。</p>')) else: tinput, tres, count = mosesproxy.translate(tinput, lang, True, True, True) toutput, talign = translateresult(tres, L) userlog.add(ip, count) userlog.commit() captcha = '' if origcnt + count > userlog.maxcnt: captcha = L(wy_gencaptcha()) return flask.render_template( ('translate_zhtw.html' if accepttw else 'translate.html'), tinput=tinput, toutput=toutput, talign=talign, captcha=flask.Markup(captcha))
def wenyan(): userlog = get_wy_db() tinput = flask.request.values.get('input', '') formgetlang = flask.request.values.get('lang') displaylang = flask.request.values.get('dl') if formgetlang == 'c2m': lang = 'c2m' elif formgetlang == 'm2c': lang = 'm2c' else: # == auto cscore, mscore = calctxtstat(tinput) if cscore == mscore: lang = None elif checktxttype(cscore, mscore) == 'c': lang = 'c2m' else: lang = 'm2c' ip = flask.request.remote_addr accepttw = flask.g.get('accepttw') L = (lambda x: zhconv(x, 'zh-tw')) if accepttw else (lambda x: x) origcnt = userlog.count(ip) count = 0 valid = wy_validate(ip, origcnt, userlog) talign = flask.Markup('[]') if valid == 1: origcnt = 0 userlog.delete(ip) elif valid == 0: logging.warning('Captcha failed: %s' % ip) if not tinput: toutput = '' elif valid == 0: toutput = L('<p class="error">回答错误,请重试。</p>') elif lang is None: toutput = linebreak(tinput) elif len(tinput) > MAX_CHAR * (CHAR_RATIO if lang == 'c2m' else 1): toutput = L('<p class="error">文本过长,请切分后提交。</p>') else: tinput, tres, count = mosesproxy.translate( tinput, lang, True, True, True) toutput, talign = translateresult(tres, L) userlog.add(ip, count) captcha = '' if origcnt + count > userlog.maxcnt: captcha = L(wy_gencaptcha()) return flask.render_template(('translate_zhtw.html' if accepttw else 'translate.html'), tinput=tinput, toutput=toutput, talign=talign, captcha=flask.Markup(captcha))
outfile = os.path.splitext(filename)[0] + '_' + locale + '.html' elif a == '-o': # output outfile = sys.argv[i+1] elif a == '-b': bookmode = True elif a == '-d': dumpversion = sys.argv[i+1] dumpversion = '20151226' bookhtmlheader = zhconv('''<!DOCTYPE html> <html lang="%s" dir="ltr"> <head> <title>维基日历</title> <link href="style.css" rel="stylesheet"/> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> </head> <body> <h1 id="pagetitle">维基日历</h1> <p>____月____日到底发生了什么?</p><p>这里有些奇怪的日期……只是因为维基百科里有。</p> \n''' % locale, locale) htmlheader = zhconv('''<!DOCTYPE html> <html lang="%s" dir="ltr"> <head> <meta charset="UTF-8" /> <title>维基日历</title> <link rel="stylesheet" href="style.css" /> <script> function gotodate(){ var m = document.getElementById("tomonth").value; var d = document.getElementById("today").value;
"|": "|", # factor separator "<": "<", # xml ">": ">", # xml "'": "'", # xml '"': """, # xml "[": "[", # syntax non-terminal "]": "]", # syntax non-terminal } xml_unescape_table = dict((v, k) for k, v in xml_escape_table.items()) mc = None zhconv2s = lambda text: (zhconv(text, 'zh-hans') .replace("「", "“") .replace("」", "”") .replace("『", "‘") .replace("』", "’")) zhconv2t = lambda text: (zhconv(text, 'zh-hant') .replace("“", "「") .replace("”", "」") .replace("‘", "『") .replace("’", "』")) def xml_escape(text): """Produce entities within text.""" return "".join(xml_escape_table.get(c, c) for c in text)
def bukadown(): func = flask.request.form.get('f') or flask.request.args.get('f') accepttw = flask.g.get('accepttw') L = (lambda x: zhconv(x, 'zh-tw')) if accepttw else (lambda x: x) template = 'buka_zhtw.html' if accepttw else 'buka.html' errmsg = flask.render_template( template, msg=flask.Markup( L('<p class="error">参数错误。<a href="javascript:history.back()">按此返回</a></p>' ))) if not func: return flask.render_template(template) elif func == 'i': cname = flask.request.args.get('name') if not cname: return flask.render_template(template, sname=cname) if cname.isdigit(): rv = buka_lookup( "SELECT mid,name,author,lastchap,lastup,available FROM comics WHERE mid = ?", (cname, )) else: rv = None mres = None sortfunc = lambda x: abs(len(cname) - len(x[1])) if rv: cinfo = rv[0] else: rv = buka_lookup( "SELECT mid,name,author,lastchap,lastup,available FROM comics WHERE name LIKE ?", ('%%%s%%' % zhconv(cname, 'zh-hans'), )) if not rv: return flask.render_template( template, msg=flask.Markup(L('<p class="error">未找到符合的漫画。</p>')), sname=cname) rv = sorted(rv, key=sortfunc) cinfo = rv[0] if len(rv) > 1: mres = [('?f=i&name=%s' % r[0], r[1]) for r in rv] rv = buka_lookup( "SELECT cid,idx,title,type FROM chapters WHERE mid = ?", (cinfo[0], )) chapsortid = dict((i[0], buka_sortid(*i)) for i in rv) sortfunc = lambda x: chapsortid[x[0]] chapters = [(i[0], L(buka_renamef(*i))) for i in rv] chapters.sort(key=sortfunc, reverse=True) return flask.render_template(template, sname=cname, multiresult=mres, cinfo=cinfo, chapters=chapters, mid=cinfo[0]) elif func == 'u': comicid = flask.request.form.get('mid', '') if not comicid.isdigit(): return errmsg comicid = int(comicid) rv = buka_lookup( "SELECT cid,idx,title,type FROM chapters WHERE mid = ?", (comicid, )) chapname = dict( (i[0], (buka_sortid(*i), buka_renamef(*i))) for i in rv) chaps = sorted(map(int, filter(str.isdigit, flask.request.form.keys())), key=chapname.__getitem__, reverse=True) links = [] for ch in chaps: rv = getbukaurl(comicid, ch) if rv: links.append((ch, chapname[ch][1], rv)) else: links.append((ch, chapname[ch][1], '')) linklist = '\n'.join(i[2] for i in links) return flask.render_template(template, sname=comicid, links=links, linklist=linklist, coavail=bool(getchaporder(comicid)), mid=comicid) elif func == 'c': comicid = flask.request.args.get('mid', '') if not comicid.isdigit(): return errmsg chaporder = getchaporder(comicid) if chaporder is None: flask.abort(404) return flask.Response(chaporder, mimetype="application/json", headers={ "Content-Disposition": "attachment;filename=chaporder.dat" }) else: return errmsg
def bukadown(): func = flask.request.form.get('f') or flask.request.args.get('f') accepttw = flask.g.get('accepttw') L = (lambda x: zhconv(x, 'zh-tw')) if accepttw else (lambda x: x) template = 'buka_zhtw.html' if accepttw else 'buka.html' errmsg = flask.render_template(template, msg=flask.Markup( L('<p class="error">参数错误。<a href="javascript:history.back()">按此返回</a></p>'))) if not func: return flask.render_template(template) elif func == 'i': cname = flask.request.args.get('name') if not cname: return flask.render_template(template, sname=cname) if cname.isdigit(): rv = buka_lookup( "SELECT mid,name,author,lastchap,lastup,available FROM comics WHERE mid = ?", (cname,)) else: rv = None mres = None sortfunc = lambda x: abs(len(cname) - len(x[1])) if rv: cinfo = rv[0] else: rv = buka_lookup( "SELECT mid,name,author,lastchap,lastup,available FROM comics WHERE name LIKE ?", ('%%%s%%' % zhconv(cname, 'zh-hans'),)) if not rv: return flask.render_template(template, msg=flask.Markup(L('<p class="error">未找到符合的漫画。</p>')), sname=cname) rv = sorted(rv, key=sortfunc) cinfo = rv[0] if len(rv) > 1: mres = [('?f=i&name=%s' % r[0], r[1]) for r in rv] rv = buka_lookup( "SELECT cid,idx,title,type FROM chapters WHERE mid = ?", (cinfo[0],)) chapsortid = dict((i[0], buka_sortid(*i)) for i in rv) sortfunc = lambda x: chapsortid[x[0]] chapters = [(i[0], L(buka_renamef(*i))) for i in rv] chapters.sort(key=sortfunc, reverse=True) return flask.render_template(template, sname=cname, multiresult=mres, cinfo=cinfo, chapters=chapters, mid=cinfo[0]) elif func == 'u': comicid = flask.request.form.get('mid', '') if not comicid.isdigit(): return errmsg comicid = int(comicid) rv = buka_lookup( "SELECT cid,idx,title,type FROM chapters WHERE mid = ?", (comicid,)) chapname = dict((i[0], (buka_sortid(*i), buka_renamef(*i))) for i in rv) chaps = sorted(map(int, filter( str.isdigit, flask.request.form.keys())), key=chapname.__getitem__, reverse=True) links = [] for ch in chaps: rv = getbukaurl(comicid, ch) if rv: links.append((ch, chapname[ch][1], rv)) else: links.append((ch, chapname[ch][1], '')) linklist = '\n'.join(i[2] for i in links) return flask.render_template(template, sname=comicid, links=links, linklist=linklist, coavail=bool(getchaporder(comicid)), mid=comicid) elif func == 'c': comicid = flask.request.args.get('mid', '') if not comicid.isdigit(): return errmsg chaporder = getchaporder(comicid) if chaporder is None: flask.abort(404) return flask.Response(chaporder, mimetype="application/json", headers={"Content-Disposition": "attachment;filename=chaporder.dat"}) else: return errmsg
filename = sys.argv[i+1] outfile = os.path.splitext(filename)[0] + '_' + locale + '.html' elif a == '-o': # output outfile = sys.argv[i+1] elif a == '-b': bookmode = True elif a == '-d': dumpversion = sys.argv[i+1] bookhtmlheader = zhconv('''<!DOCTYPE html> <html lang="%s" dir="ltr"> <head> <title>维基编年史</title> <link href="style.css" rel="stylesheet"/> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> </head> <body> <h1 id="pagetitle">维基编年史</h1> ____年到底发生了什么? \n''' % locale, locale) htmlheader = zhconv('''<!DOCTYPE html> <html lang="%s" dir="ltr"> <head> <meta charset="UTF-8" /> <title>维基编年史</title> <link rel="stylesheet" href="style.css" /> <script> function gotoyear(){ var y = document.getElementById("toyear").value; if (y!="") {