Example #1
0
def get_kanji(request):
    try:
        page = int(request.GET.get("page", ""))
        if page < 0:
            raise ValueError
    except ValueError:
        # page 0 if parameter is invalid or missing
        page = 0

    kd = KanjiDic()
    d = []
    # assuming there's an authenticated user
    up = request.user.get_profile()
    for k in kd.keys():
        idx_unicode = kd[k].idx_unicode
        idx_unisort = kd[k].idx_unisort
        # all of the Kanji in kd are Jouyou right no
        known = k in up.known_kanji
        entry = {"literal": k, "known": known}
        d.append(entry)

    # return them ordered by unisort index
    d = sorted(d, key=lambda x: kd[x["literal"]].idx_kolivas)

    kanji_per_page = 96
    start = page * kanji_per_page
    end = start + kanji_per_page
    response = d[start:end]

    return HttpResponse(simplejson.dumps(response), mimetype="application/json")
    parser.add_option("-p", "--page-range", dest = "pagerange")
    (options, args) = parser.parse_args()

    # parse Kanji Range
    krange = (1,101)
    if options.kanjirange != None:
        rng = options.kanjirange.split(":")
        krange = ( int(rng[0]), int(rng[1]) + 1 )

    # parse Page Range
    prange = (1,2)
    if options.pagerange != None:
        rng = options.pagerange.split(":")
        prange = ( int(rng[0]), int(rng[1]) + 1 )

    kd = KanjiDic('.')
    m = kd.get_kolivas_mapping()
    inv_kolivas_map = dict((m[k], k) for k in m.keys())

    # for each kanji in the range
    for k in range(*krange):
        kanji = inv_kolivas_map[k]
        print "Kanji iteration: %d" % k
        sg = SentenceGrabber(kanji, prange)
        while sg.any_sentence_left():
            s = sg.pop_next_sentence()
            if s == None:
                break
            translations = string.join( s['translations'], u"|" ) if s['translations'] else ""
            print u"%s, %s, %s" % (s['sentence'], s['structure'], translations)
            ss = ScrapedSentence.objects.filter(text = s['sentence'])