def etranslate_book(bookname, scid, ecid): logger.debug("Enter etranslate book func") book = Tnovel(bookname, loglevel=book_log_level, dbfile=dbfilename) etransmap = book.read_book_etransmap() translator = TNovelETranslator(name=bookname, etransmap=etransmap) bookdata = book.read_book() raw_data_list = [] chapid_list = [] cid_list = [] transcount = 0 count = 0 scid, chapcount = calc_chap_count(scid, ecid, book.get_chapter_count()) logger.debug("traslate book scid %d count %d book:%d", scid, chapcount, len(bookdata)) for index in range(chapcount): cid = scid + index if book.is_chapter_exist(cid): continue else: cid_list.append(cid) if len(cid_list) > 0: logger.debug('Following chapters are not available') logger.debug(cid_list) raise(ValueError) for chapid,chaptitle,chapdata,rawdata in bookdata: if chapid < scid or chapid >= (scid + chapcount): continue logger.debug("chapid id %d is withing the range %d-%d", chapid, scid, scid+chapcount) chapid_list.append(chapid) raw_data_list.append(chapdata) count = count + 1 if count >= 200: logger.debug("in loop going to etranslate chapter count %d", len(raw_data_list)) trans_data_list = translator.translate(raw_data_list) for cid in range(len(chapid_list)): book.update_chapter_data(chapid_list[cid],trans_data_list[cid]) transcount = transcount + 1 chapid_list = [] raw_data_list = [] count = 0 logger.debug("going to etranslate chapter count %d", len(raw_data_list)) if count > 0: trans_data_list = translator.translate(raw_data_list) for cid in range(len(chapid_list)): book.update_chapter_data(chapid_list[cid],trans_data_list[cid]) transcount = transcount + 1 logger.debug('total number of chapters etranslated %d', transcount)
def toolkit_book(bookname, scid, ecid): logger.debug("Enter toolkit book func") btempname = '/tmp/' + bookname + '-temp.txt' sdelimitter = "\nStart of chapter id:" edelimitter = "\nEnd of chapter id:" book = Tnovel(bookname, loglevel=book_log_level, dbfile=dbfilename) transmap = book.read_book_transmap() translator = TNovelTKTranslator(name=bookname, transmap=transmap) bookdata = book.read_book() raw_data_list = [] chapid_list = [] trans_chapid_list = [] trans_chapdata_list = [] cid_list = [] transcount = 0 count = 0 scid, chapcount = calc_chap_count(scid, ecid, book.get_chapter_count()) logger.debug("traslate toolkit book scid %d count %d book:%d", scid, chapcount, len(bookdata)) for index in range(chapcount): cid = scid + index if book.is_chapter_exist(cid): continue else: cid_list.append(cid) if len(cid_list) > 0: logger.debug('Following chapters are not available') logger.debug(cid_list) raise(ValueError) for chapid,chaptitle,chapdata,rawdata in bookdata: if chapid < scid or chapid >= (scid + chapcount): continue logger.debug("chapid id %d is withing the range %d-%d", chapid, scid, scid+chapcount) chapid_list.append(chapid) raw_data_list.append(rawdata) count = count + 1 logger.debug("going to etranslate chapter count %d", len(raw_data_list)) if count > 0: trans_data_list = translator.translate(raw_data_list) with codecs.open(btempname, 'w', 'utf-8') as outfile: for cid in range(len(chapid_list)): outfile.write(sdelimitter+str(chapid_list[cid])+"\n") outfile.write(trans_data_list[cid]) outfile.write(edelimitter+str(chapid_list[cid])+"\n") raw_input("Press any key once the data is translated") with codecs.open(btempname, 'r', 'utf-8') as infile: data_list = infile.readlines() new_chapter = [] end_chapter = False for data in data_list: if sdelimitter.strip() in data: trans_chapid_list.append(int(data.split(':')[1].strip())) end_chapter = False new_chapter = [] continue if edelimitter.strip() in data: end_chapter = True trans_chapdata_list.append(''.join(new_chapter)) new_chapter = [] continue if end_chapter is False: if data.strip() != '': new_chapter.append(data) for cid in range(len(trans_chapid_list)): book.update_chapter_data(trans_chapid_list[cid],trans_chapdata_list[cid]) transcount = transcount + 1 logger.debug('total number of chapters etranslated %d', transcount)