Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
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))
Esempio n. 4
0
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))
Esempio n. 5
0
		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;
Esempio n. 6
0
    "|": "&#124;",  # factor separator
    "<": "&lt;",    # xml
    ">": "&gt;",    # xml
    "'": "&apos;",  # xml
    '"': "&quot;",  # xml
    "[": "&#91;",   # syntax non-terminal
    "]": "&#93;",   # 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)

Esempio n. 7
0
    "|": "&#124;",  # factor separator
    "<": "&lt;",    # xml
    ">": "&gt;",    # xml
    "'": "&apos;",  # xml
    '"': "&quot;",  # xml
    "[": "&#91;",   # syntax non-terminal
    "]": "&#93;",   # 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)

Esempio n. 8
0
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
Esempio n. 9
0
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
Esempio n. 10
0
		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!="") {