Пример #1
0
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)
Пример #2
0
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)