SYMBOL INDEX (258 symbols across 28 files) FILE: book_maker/cli.py function parse_prompt_arg (line 11) | def parse_prompt_arg(prompt_arg): function main (line 105) | def main(): FILE: book_maker/loader/base_loader.py class BaseBookLoader (line 4) | class BaseBookLoader(ABC): method _is_special_text (line 6) | def _is_special_text(text): method _make_new_book (line 10) | def _make_new_book(self, book): method make_bilingual_book (line 14) | def make_bilingual_book(self): method load_state (line 18) | def load_state(self): method _save_temp_book (line 22) | def _save_temp_book(self): method _save_progress (line 26) | def _save_progress(self): FILE: book_maker/loader/epub_loader.py class EPUBBookLoader (line 25) | class EPUBBookLoader(BaseBookLoader): method __init__ (line 26) | def __init__( method _is_special_text (line 131) | def _is_special_text(text): method _make_new_book (line 139) | def _make_new_book(self, book): method _fix_toc_uids (line 186) | def _fix_toc_uids(self, toc, counter=None): method _extract_paragraph (line 212) | def _extract_paragraph(self, p): method _process_paragraph (line 221) | def _process_paragraph(self, p, new_p, index, p_to_save_len, thread_sa... method _process_combined_paragraph (line 260) | def _process_combined_paragraph( method translate_paragraphs_acc (line 306) | def translate_paragraphs_acc(self, p_list, send_num): method get_item (line 346) | def get_item(self, book, name): method find_items_containing_string (line 351) | def find_items_containing_string(self, book, search_string): method retranslate_book (line 362) | def retranslate_book(self, index, p_to_save_len, pbar, trans_taglist, ... method has_nest_child (line 456) | def has_nest_child(self, element, trans_taglist): method filter_nest_list (line 465) | def filter_nest_list(self, p_list, trans_taglist): method process_item (line 469) | def process_item( method set_parallel_workers (line 572) | def set_parallel_workers(self, workers): method _get_next_translation_index (line 587) | def _get_next_translation_index(self): method _process_chapter_parallel (line 594) | def _process_chapter_parallel(self, chapter_data): method _create_chapter_translator (line 679) | def _create_chapter_translator(self): method _translate_with_chapter_context (line 684) | def _translate_with_chapter_context( method _translate_paragraphs_acc_parallel (line 714) | def _translate_paragraphs_acc_parallel( method batch_init_then_wait (line 841) | def batch_init_then_wait(self): method make_bilingual_book (line 853) | def make_bilingual_book(self): method load_state (line 1004) | def load_state(self): method _save_temp_book (line 1011) | def _save_temp_book(self): method _save_progress (line 1056) | def _save_progress(self): FILE: book_maker/loader/helper.py class EPUBBookLoaderHelper (line 10) | class EPUBBookLoaderHelper: method __init__ (line 11) | def __init__( method insert_trans (line 19) | def insert_trans(self, p, text, translation_style="", single_translate... method translate_with_backoff (line 42) | def translate_with_backoff(self, text, context_flag=False): method deal_new (line 45) | def deal_new(self, p, wait_p_list, single_translate=False): method deal_old (line 54) | def deal_old(self, wait_p_list, single_translate=False, context_flag=F... function is_text_link (line 76) | def is_text_link(text): function is_text_tail_link (line 80) | def is_text_tail_link(text, num=80): function shorter_result_link (line 86) | def shorter_result_link(text, num=20): function is_text_source (line 95) | def is_text_source(text): function is_text_list (line 99) | def is_text_list(text, num=80): function is_text_figure (line 104) | def is_text_figure(text, num=80): function is_text_digit_and_space (line 109) | def is_text_digit_and_space(s): function is_text_isbn (line 116) | def is_text_isbn(s): function not_trans (line 121) | def not_trans(s): FILE: book_maker/loader/md_loader.py class MarkdownBookLoader (line 9) | class MarkdownBookLoader(BaseBookLoader): method __init__ (line 10) | def __init__( method process_markdown_content (line 59) | def process_markdown_content(self): method _is_special_text (line 82) | def _is_special_text(text): method _make_new_book (line 85) | def _make_new_book(self, book): method make_bilingual_book (line 88) | def make_bilingual_book(self): method _save_temp_book (line 138) | def _save_temp_book(self): method _save_progress (line 159) | def _save_progress(self): method load_state (line 166) | def load_state(self): method save_file (line 173) | def save_file(self, book_path, content): FILE: book_maker/loader/pdf_loader.py class PDFBookLoader (line 13) | class PDFBookLoader(BaseBookLoader): method __init__ (line 14) | def __init__( method _make_new_book (line 70) | def _make_new_book(self, book): method _try_create_epub (line 73) | def _try_create_epub(self): method make_bilingual_book (line 157) | def make_bilingual_book(self): method _save_temp_book (line 206) | def _save_temp_book(self): method _save_progress (line 225) | def _save_progress(self): method load_state (line 232) | def load_state(self): method save_file (line 239) | def save_file(self, book_path, content): FILE: book_maker/loader/srt_loader.py class SRTBookLoader (line 14) | class SRTBookLoader(BaseBookLoader): method __init__ (line 15) | def __init__( method _make_new_book (line 60) | def _make_new_book(self, book): method _parse_srt (line 63) | def _parse_srt(self, srt_text): method _get_block_text (line 84) | def _get_block_text(self, block): method _get_block_except_text (line 87) | def _get_block_except_text(self, block): method _concat_blocks (line 90) | def _concat_blocks(self, sliced_text: str, text: str): method _get_block_translate (line 93) | def _get_block_translate(self, block): method _get_block_from (line 96) | def _get_block_from(self, text): method _get_blocks_from (line 107) | def _get_blocks_from(self, translate: str): method _check_blocks (line 118) | def _check_blocks(self, translate_blocks, origin_blocks): method _get_sliced_list (line 141) | def _get_sliced_list(self): method make_bilingual_book (line 161) | def make_bilingual_book(self): method _save_temp_book (line 260) | def _save_temp_book(self): method _save_progress (line 275) | def _save_progress(self): method load_state (line 282) | def load_state(self): method save_file (line 294) | def save_file(self, book_path, content): FILE: book_maker/loader/txt_loader.py class TXTBookLoader (line 9) | class TXTBookLoader(BaseBookLoader): method __init__ (line 10) | def __init__( method _is_special_text (line 59) | def _is_special_text(text): method _make_new_book (line 62) | def _make_new_book(self, book): method make_bilingual_book (line 65) | def make_bilingual_book(self): method _save_temp_book (line 105) | def _save_temp_book(self): method _save_progress (line 126) | def _save_progress(self): method load_state (line 133) | def load_state(self): method save_file (line 140) | def save_file(self, book_path, content): FILE: book_maker/obok.py class ENCRYPTIONError (line 196) | class ENCRYPTIONError(Exception): function _load_crypto_libcrypto (line 200) | def _load_crypto_libcrypto(): function _load_crypto_pycrypto (line 263) | def _load_crypto_pycrypto(): function _load_crypto (line 276) | def _load_crypto(): class SafeUnbuffered (line 292) | class SafeUnbuffered: method __init__ (line 293) | def __init__(self, stream) -> None: method write (line 299) | def write(self, data): method __getattr__ (line 305) | def __getattr__(self, attr): class KoboLibrary (line 309) | class KoboLibrary: method __init__ (line 316) | def __init__(self, serials=None, device_path=None, desktopkobodir="") ... method close (line 469) | def close(self): method userkeys (line 477) | def userkeys(self): method books (line 488) | def books(self): method __bookfile (line 534) | def __bookfile(self, volumeid): method __getmacaddrs (line 538) | def __getmacaddrs(self): method __getuserids (line 594) | def __getuserids(self): method __getuserkeys (line 605) | def __getuserkeys(self, macaddr): class KoboBook (line 618) | class KoboBook: method __init__ (line 630) | def __init__( method encryptedfiles (line 651) | def encryptedfiles(self): method has_drm (line 699) | def has_drm(self): class KoboFile (line 703) | class KoboFile: method __init__ (line 711) | def __init__(self, filename, mimetype, key) -> None: method decrypt (line 716) | def decrypt(self, userkey, contents): method check (line 728) | def check(self, contents): method __removeaespadding (line 774) | def __removeaespadding(self, contents): function decrypt_book (line 793) | def decrypt_book(book, lib): function cli_main (line 827) | def cli_main(devicedir): FILE: book_maker/translator/base_translator.py class Base (line 5) | class Base(ABC): method __init__ (line 6) | def __init__(self, key, language) -> None: method rotate_key (line 11) | def rotate_key(self): method translate (line 15) | def translate(self, text): method set_deployment_id (line 18) | def set_deployment_id(self, deployment_id): FILE: book_maker/translator/caiyun_translator.py class Caiyun (line 11) | class Caiyun(Base): method __init__ (line 16) | def __init__(self, key, language, **kwargs) -> None: method rotate_key (line 30) | def rotate_key(self): method translate (line 33) | def translate(self, text): FILE: book_maker/translator/chatgptapi_translator.py class ChatGPTAPI (line 72) | class ChatGPTAPI(Base): method __init__ (line 75) | def __init__( method rotate_key (line 123) | def rotate_key(self): method rotate_model (line 127) | def rotate_model(self): method create_messages (line 132) | def create_messages(self, text, intermediate_messages=None): method create_context_messages (line 148) | def create_context_messages(self): method create_chat_completion (line 160) | def create_chat_completion(self, text): method get_translation (line 169) | def get_translation(self, text): method save_context (line 187) | def save_context(self, text, t_text): method translate (line 196) | def translate(self, text, needprint=True): method translate_and_split_lines (line 235) | def translate_and_split_lines(self, text): method log_retry (line 241) | def log_retry(self, state, retry_count, elapsed_time, log_path="log/bu... method log_translation_mismatch (line 251) | def log_translation_mismatch( method join_lines (line 278) | def join_lines(self, text): method translate_list (line 309) | def translate_list(self, plist): method extract_paragraphs (line 411) | def extract_paragraphs(self, text, paragraph_count): method set_deployment_id (line 437) | def set_deployment_id(self, deployment_id): method set_gpt35_models (line 446) | def set_gpt35_models(self, ollama_model=""): method set_gpt4_models (line 461) | def set_gpt4_models(self): method set_gpt4omini_models (line 473) | def set_gpt4omini_models(self): method set_gpt4o_models (line 485) | def set_gpt4o_models(self): method set_gpt5mini_models (line 497) | def set_gpt5mini_models(self): method set_o1preview_models (line 509) | def set_o1preview_models(self): method set_o1_models (line 521) | def set_o1_models(self): method set_o1mini_models (line 533) | def set_o1mini_models(self): method set_o3mini_models (line 545) | def set_o3mini_models(self): method set_model_list (line 557) | def set_model_list(self, model_list): method batch_init (line 562) | def batch_init(self, book_name): method add_to_batch_translate_queue (line 565) | def add_to_batch_translate_queue(self, book_index, text): method sanitize_book_name (line 568) | def sanitize_book_name(self, book_name): method batch_metadata_file_path (line 575) | def batch_metadata_file_path(self): method batch_dir (line 578) | def batch_dir(self): method custom_id (line 581) | def custom_id(self, book_index): method is_completed_batch (line 584) | def is_completed_batch(self): method batch_translate (line 601) | def batch_translate(self, book_index): method create_batch_context_messages (line 638) | def create_batch_context_messages(self, index): method make_batch_request (line 669) | def make_batch_request(self, book_index, text): method create_batch_files (line 685) | def create_batch_files(self, dest_file_path): method batch (line 715) | def batch(self): method create_batch_info (line 747) | def create_batch_info(self, file_id, batch, start_index, end_index): method upload_batch_file (line 756) | def upload_batch_file(self, file_path): method batch_execute (line 762) | def batch_execute(self, file_id): method check_batch_status (line 777) | def check_batch_status(self, batch_id): method get_batch_result (line 780) | def get_batch_result(self, output_file_id): FILE: book_maker/translator/claude_translator.py class Claude (line 8) | class Claude(Base): method __init__ (line 9) | def __init__( method rotate_key (line 37) | def rotate_key(self): method set_claude_model (line 40) | def set_claude_model(self, model_name): method create_messages (line 43) | def create_messages(self, text, intermediate_messages=None): method create_context_messages (line 60) | def create_context_messages(self): method save_context (line 77) | def save_context(self, text, t_text): method translate (line 90) | def translate(self, text): FILE: book_maker/translator/custom_api_translator.py class CustomAPI (line 9) | class CustomAPI(Base): method __init__ (line 14) | def __init__(self, custom_api, language, **kwargs) -> None: method rotate_key (line 19) | def rotate_key(self): method translate (line 22) | def translate(self, text): FILE: book_maker/translator/deepl_free_translator.py class DeepLFree (line 12) | class DeepLFree(Base): method __init__ (line 17) | def __init__(self, key, language, **kwargs) -> None: method rotate_key (line 57) | def rotate_key(self): method translate (line 60) | def translate(self, text): FILE: book_maker/translator/deepl_translator.py class DeepL (line 13) | class DeepL(Base): method __init__ (line 18) | def __init__(self, key, language, **kwargs) -> None: method rotate_key (line 63) | def rotate_key(self): method translate (line 66) | def translate(self, text): FILE: book_maker/translator/gemini_translator.py class Gemini (line 51) | class Gemini(Base): method __init__ (line 58) | def __init__( method create_convo (line 84) | def create_convo(self): method rotate_model (line 94) | def rotate_model(self): method rotate_key (line 99) | def rotate_key(self): method translate (line 103) | def translate(self, text): method set_interval (line 178) | def set_interval(self, interval): method set_geminipro_models (line 181) | def set_geminipro_models(self): method set_geminiflash_models (line 184) | def set_geminiflash_models(self): method set_models (line 187) | def set_models(self, allowed_models): method set_model_list (line 199) | def set_model_list(self, model_list): FILE: book_maker/translator/google_translator.py class Google (line 9) | class Google(Base): method __init__ (line 14) | def __init__(self, key, language, **kwargs) -> None: method rotate_key (line 32) | def rotate_key(self): method translate (line 35) | def translate(self, text): method _retry_translate (line 51) | def _retry_translate(self, text, timeout=3): FILE: book_maker/translator/groq_translator.py class GroqClient (line 14) | class GroqClient(ChatGPTAPI): method rotate_model (line 15) | def rotate_model(self): method create_chat_completion (line 22) | def create_chat_completion(self, text): FILE: book_maker/translator/litellm_translator.py class liteLLM (line 13) | class liteLLM(ChatGPTAPI): method create_chat_completion (line 14) | def create_chat_completion(self, text): FILE: book_maker/translator/qwen_translator.py class QwenTranslator (line 9) | class QwenTranslator(Base): method __init__ (line 63) | def __init__( method rotate_key (line 109) | def rotate_key(self): method _map_language (line 116) | def _map_language(self, language): method _create_translation_options (line 132) | def _create_translation_options(self): method save_context (line 154) | def save_context(self, text, t_text): method translate (line 167) | def translate(self, text, needprint=True): method set_terminology (line 229) | def set_terminology(self, terminology): method set_domain_hint (line 239) | def set_domain_hint(self, domain_hint): method set_qwen_model (line 249) | def set_qwen_model(self, model_name): FILE: book_maker/translator/tencent_transmart_translator.py class TencentTranSmart (line 10) | class TencentTranSmart(Base): method __init__ (line 15) | def __init__(self, key, language, **kwargs) -> None: method rotate_key (line 31) | def rotate_key(self): method translate (line 34) | def translate(self, text): method text_analysis (line 59) | def text_analysis(self, text): method get_client_key (line 83) | def get_client_key(self): FILE: book_maker/translator/xai_translator.py class XAIClient (line 9) | class XAIClient(ChatGPTAPI): method __init__ (line 10) | def __init__(self, key, language, api_base=None, **kwargs) -> None: method rotate_model (line 16) | def rotate_model(self): FILE: book_maker/utils.py function prompt_config_to_kwargs (line 126) | def prompt_config_to_kwargs(prompt_config): function num_tokens_from_text (line 135) | def num_tokens_from_text(text, model="gpt-3.5-turbo-0301"): FILE: tests/test_epub_metadata.py function test_epub_loader_handles_custom_metadata (line 7) | def test_epub_loader_handles_custom_metadata(tmp_path): FILE: tests/test_integration.py function test_book_dir (line 11) | def test_book_dir() -> str: function test_google_translate_epub (line 17) | def test_google_translate_epub(test_book_dir, tmpdir): function test_deepl_free_translate_epub (line 43) | def test_deepl_free_translate_epub(test_book_dir, tmpdir): function test_google_translate_epub_cli (line 69) | def test_google_translate_epub_cli(): function test_google_translate_txt (line 73) | def test_google_translate_txt(test_book_dir, tmpdir): function test_google_translate_txt_batch_size (line 98) | def test_google_translate_txt_batch_size(test_book_dir, tmpdir): function test_caiyun_translate_txt (line 130) | def test_caiyun_translate_txt(test_book_dir, tmpdir): function test_deepl_translate_txt (line 161) | def test_deepl_translate_txt(test_book_dir, tmpdir): function test_deepl_translate_srt (line 192) | def test_deepl_translate_srt(test_book_dir, tmpdir): function test_openai_translate_epub_zh_hans (line 226) | def test_openai_translate_epub_zh_hans(test_book_dir, tmpdir): function test_openai_translate_epub_ja_prompt_txt (line 254) | def test_openai_translate_epub_ja_prompt_txt(test_book_dir, tmpdir): function test_openai_translate_epub_ja_prompt_json (line 286) | def test_openai_translate_epub_ja_prompt_json(test_book_dir, tmpdir): function test_openai_translate_srt (line 316) | def test_openai_translate_srt(test_book_dir, tmpdir): FILE: tests/test_pdf_cli.py function test_pdf_cli_creates_txt_and_optional_epub (line 10) | def test_pdf_cli_creates_txt_and_optional_epub(tmp_path): FILE: tests/test_pdf_loader.py class DummyModel (line 11) | class DummyModel: method __init__ (line 12) | def __init__( method translate (line 23) | def translate(self, text): method translate_list (line 26) | def translate_list(self, texts): function test_pdf_loader_extracts_and_translates (line 30) | def test_pdf_loader_extracts_and_translates(tmp_path):