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'])