SYMBOL INDEX (272 symbols across 30 files) FILE: All_Translation.py function retry_on_error (line 21) | def retry_on_error(max_retries=2, delay=1): function process_translation_queue (line 60) | def process_translation_queue(): function ensure_queue_processor (line 89) | def ensure_queue_processor(): class Online_translation (line 96) | class Online_translation: method __init__ (line 97) | def __init__(self, original_language, target_language, translation_typ... method run_async (line 106) | def run_async(self, coro): method _run_coro_with_semaphore (line 119) | async def _run_coro_with_semaphore(self, coro): method translation (line 124) | def translation(self): method deepl_translation (line 154) | def deepl_translation(self): method youdao_translation (line 163) | def youdao_translation(self): method bing_translation (line 172) | def bing_translation(self): method AI302_translation (line 186) | async def AI302_translation(self): method openai_translation (line 196) | async def openai_translation(self): method deepseek_translation (line 206) | async def deepseek_translation(self): method Doubao_translation (line 216) | async def Doubao_translation(self): method Qwen_translation (line 226) | async def Qwen_translation(self): method Grok_translation (line 236) | async def Grok_translation(self): method ThirdParty_translation (line 251) | async def ThirdParty_translation(self): method GLM_translation (line 266) | async def GLM_translation(self): function cleanup (line 284) | def cleanup(): function split_text_to_fit_token_limit (line 293) | def split_text_to_fit_token_limit(text, encoder, index_text, max_length=... function process_texts (line 312) | def process_texts(texts, encoder): function calculate_split_points (line 319) | def calculate_split_points(processed_texts, max_tokens=425): FILE: Bing_translation.py function translate (line 9) | def translate(texts, original_lang, target_lang): function translate_with_threadpool (line 33) | def translate_with_threadpool(texts, original_lang, target_lang, max_wor... function translate_with_asyncio (line 57) | def translate_with_asyncio(texts, original_lang, target_lang): function split_text_intelligently (line 75) | def split_text_intelligently(text, max_length=1000): class BingTranslator (line 122) | class BingTranslator: method __init__ (line 132) | def __init__(self, lang_in, lang_out, model=None, ignore_cache=False): method find_sid (line 149) | def find_sid(self): method do_translate (line 178) | def do_translate(self, text): class AsyncBingTranslator (line 222) | class AsyncBingTranslator: method __init__ (line 231) | def __init__(self, lang_in, lang_out): method find_sid (line 243) | async def find_sid(self, session): method translate_text (line 272) | async def translate_text(self, session, text): method translate_batch (line 330) | async def translate_batch(self, texts, batch_size=10, max_concurrent=5): FILE: Deepl_Translation.py function translate (line 3) | def translate(texts,original_lang,target_lang): FILE: EbookTranslator/EbookTranslator/All_Translation.py class Online_translation (line 15) | class Online_translation: method __init__ (line 16) | def __init__(self, original_language, target_language, translation_typ... method run_async (line 23) | def run_async(self, coro): method translation (line 27) | def translation(self): method deepl_translation (line 62) | def deepl_translation(self): method youdao_translation (line 69) | def youdao_translation(self): method openai_translation (line 77) | async def openai_translation(self): method deepseek_translation (line 86) | async def deepseek_translation(self): method Doubao_translation (line 94) | async def Doubao_translation(self): method Qwen_translation (line 102) | async def Qwen_translation(self): method Grok_translation (line 110) | async def Grok_translation(self): method ThirdParty_translation (line 124) | async def ThirdParty_translation(self): method GLM_translation (line 138) | async def GLM_translation(self): method bing_translation (line 152) | async def bing_translation(self): function split_text_to_fit_token_limit (line 168) | def split_text_to_fit_token_limit(text, encoder, index_text, max_length=... function process_texts (line 188) | def process_texts(texts, encoder): function calculate_split_points (line 197) | def calculate_split_points(processed_texts, max_tokens=425): function translate (line 216) | def translate(texts,original_language,target_language): function batch_translate (line 236) | def batch_translate(processed_texts, split_points,original_language,targ... FILE: EbookTranslator/EbookTranslator/Deepl_Translation.py function translate (line 3) | def translate(texts,original_lang,target_lang): FILE: EbookTranslator/EbookTranslator/LLMS_translation.py class Openai_translation (line 8) | class Openai_translation: method __init__ (line 9) | def __init__(self): method translate_single (line 19) | async def translate_single(self, session, text, original_lang, target_... method translate (line 52) | async def translate(self, texts, original_lang, target_lang): class Bing_translation (line 62) | class Bing_translation: method __init__ (line 63) | def __init__(self): method find_sid (line 71) | async def find_sid(self): method translate_single (line 84) | async def translate_single(self, session, text, original_lang, target_... method translate (line 126) | async def translate(self, texts, original_lang, target_lang): class Deepseek_translation (line 140) | class Deepseek_translation: method __init__ (line 141) | def __init__(self): method translate_single (line 151) | async def translate_single(self, session, text, original_lang, target_... method translate (line 181) | async def translate(self, texts, original_lang, target_lang): class Doubao_translation (line 189) | class Doubao_translation: method __init__ (line 190) | def __init__(self): method translate_single (line 200) | async def translate_single(self, session, text, original_lang, target_... method translate (line 230) | async def translate(self, texts, original_lang, target_lang): class Qwen_translation (line 238) | class Qwen_translation: method __init__ (line 239) | def __init__(self): method translate_single (line 249) | async def translate_single(self, session, text, original_lang, target_... method translate (line 279) | async def translate(self, texts, original_lang, target_lang): class Grok_translation (line 288) | class Grok_translation: method __init__ (line 289) | def __init__(self): method translate_single (line 301) | async def translate_single(self, session, text, original_lang, target_... method translate (line 331) | async def translate(self, texts, original_lang, target_lang): class ThirdParty_translation (line 340) | class ThirdParty_translation: method __init__ (line 341) | def __init__(self): method translate_single (line 351) | async def translate_single(self, session, text, original_lang, target_... method translate (line 385) | async def translate(self, texts, original_lang, target_lang): class GLM_translation (line 397) | class GLM_translation: method __init__ (line 398) | def __init__(self): method translate_single (line 408) | async def translate_single(self, session, text, original_lang, target_... method translate (line 440) | async def translate(self, texts, original_lang, target_lang): function main (line 453) | async def main(): FILE: EbookTranslator/EbookTranslator/YouDao_translation.py function translate (line 8) | def translate(texts,original_lang, target_lang): FILE: EbookTranslator/EbookTranslator/cli.py function main (line 13) | def main(): FILE: EbookTranslator/EbookTranslator/convert2pdf.py function convert_to_pdf (line 5) | def convert_to_pdf(input_file, output_file=None): FILE: EbookTranslator/EbookTranslator/load_config.py function get_working_dir (line 8) | def get_working_dir() -> Path: function resolve_path (line 22) | def resolve_path(path: str) -> Path: function load_config (line 40) | def load_config(config_path: Optional[str] = None) -> Optional[Dict]: function get_file_path (line 88) | def get_file_path(filename: str) -> Path: FILE: EbookTranslator/EbookTranslator/main_function.py function get_font_by_language (line 21) | def get_font_by_language(target_language): function is_math (line 32) | def is_math(text,pag_num,font_info): function line_non_text (line 143) | def line_non_text(text): function is_non_text (line 164) | def is_non_text(text): class main_function (line 185) | class main_function: method __init__ (line 186) | def __init__(self, pdf_path, method resolve_path (line 224) | def resolve_path(pdf_path: str) -> str: method get_config (line 246) | def get_config(self,config_path=None): method main (line 252) | def main(self): method start (line 349) | def start(self, image, pag_num): method batch_translate_pages_data (line 526) | def batch_translate_pages_data(self, original_language, target_language, method apply_translations_to_pdf (line 577) | def apply_translations_to_pdf(self): FILE: LLMS_translation.py class AI302_translation (line 8) | class AI302_translation: method __init__ (line 9) | def __init__(self): method translate_single (line 22) | async def translate_single(self, session, text, original_lang, target_... method translate (line 55) | async def translate(self, texts, original_lang, target_lang): class Openai_translation (line 67) | class Openai_translation: method __init__ (line 68) | def __init__(self): method translate_single (line 81) | async def translate_single(self, session, text, original_lang, target_... method translate (line 114) | async def translate(self, texts, original_lang, target_lang): class Bing_translation (line 124) | class Bing_translation: method __init__ (line 125) | def __init__(self): method find_sid (line 133) | async def find_sid(self): method translate_single (line 146) | async def translate_single(self, session, text, original_lang, target_... method translate (line 188) | async def translate(self, texts, original_lang, target_lang): class Deepseek_translation (line 202) | class Deepseek_translation: method __init__ (line 203) | def __init__(self): method translate_single (line 216) | async def translate_single(self, session, text, original_lang, target_... method translate (line 246) | async def translate(self, texts, original_lang, target_lang): class Doubao_translation (line 254) | class Doubao_translation: method __init__ (line 255) | def __init__(self): method translate_single (line 268) | async def translate_single(self, session, text, original_lang, target_... method translate (line 298) | async def translate(self, texts, original_lang, target_lang): class Qwen_translation (line 306) | class Qwen_translation: method __init__ (line 307) | def __init__(self): method translate_single (line 320) | async def translate_single(self, session, text, original_lang, target_... method translate (line 350) | async def translate(self, texts, original_lang, target_lang): class Grok_translation (line 359) | class Grok_translation: method __init__ (line 360) | def __init__(self): method translate_single (line 375) | async def translate_single(self, session, text, original_lang, target_... method translate (line 409) | async def translate(self, texts, original_lang, target_lang): class ThirdParty_translation (line 421) | class ThirdParty_translation: method __init__ (line 422) | def __init__(self): method translate_single (line 435) | async def translate_single(self, session, text, original_lang, target_... method translate (line 469) | async def translate(self, texts, original_lang, target_lang): class GLM_translation (line 481) | class GLM_translation: method __init__ (line 482) | def __init__(self): method translate_single (line 495) | async def translate_single(self, session, text, original_lang, target_... method translate (line 532) | async def translate(self, texts, original_lang, target_lang): function main (line 545) | async def main(): FILE: OldMain.py function get_font_by_language (line 29) | def get_font_by_language(target_language): function is_math (line 40) | def is_math(text, page_num,font_info): function line_non_text (line 151) | def line_non_text(text): function is_non_text (line 172) | def is_non_text(text): class main_function (line 193) | class main_function: method __init__ (line 194) | def __init__(self, pdf_path, method main (line 221) | def main(self): method start (line 308) | def start(self, image, pag_num): method batch_translate_pages_data (line 485) | def batch_translate_pages_data(self, original_language, target_language, method apply_translations_to_pdf (line 537) | def apply_translations_to_pdf(self): FILE: Subset_Font.py function download_font_from_github (line 8) | def download_font_from_github(language, font_filename, target_path): function check_glyph_coverage (line 60) | def check_glyph_coverage(font, text): function subset_font (line 75) | def subset_font(in_font_path, out_font_path, text, language): FILE: YouDao_translation.py function translate (line 8) | def translate(texts,original_lang, target_lang): FILE: app.py class ThreadedWSGIServer (line 22) | class ThreadedWSGIServer(ThreadingMixIn, BaseWSGIServer): function get_app_data_dir (line 31) | def get_app_data_dir(): function serve_static (line 82) | def serve_static(filename): function read_index (line 101) | def read_index(): function read_pdfviewer (line 105) | def read_pdfviewer(): function read_pdfviewer2 (line 115) | def read_pdfviewer2(): function upload_file (line 126) | def upload_file(): function translate_files (line 194) | def translate_files(): function delete_article (line 261) | def delete_article(): function delete_batch (line 292) | def delete_batch(): function save_settings (line 337) | def save_settings(): function get_default_services_route (line 360) | def get_default_services_route(): function get_recent (line 390) | def get_recent(): function get_config_json (line 401) | def get_config_json(): function update_config_json (line 414) | def update_config_json(): function save_all (line 447) | def save_all(): function get_config_api (line 465) | def get_config_api(): function update_config_api (line 473) | def update_config_api(): function translate_file (line 507) | def translate_file(): function update_translation_status (line 527) | def update_translation_status(filename, status): function reload_config (line 547) | def reload_config(): class ServerThread (line 576) | class ServerThread(Thread): method __init__ (line 578) | def __init__(self, flask_app, host="127.0.0.1", port=12226): method run (line 585) | def run(self): method shutdown (line 590) | def shutdown(self): function open_browser (line 595) | def open_browser(): function on_exit (line 601) | def on_exit(): FILE: build.py function main (line 129) | def main(): FILE: convert2pdf.py function convert_to_pdf (line 5) | def convert_to_pdf(input_file, output_file=None): FILE: download_model.py function download_file (line 30) | def download_file(url, dest_folder, file_name): function download_model_files (line 41) | def download_model_files(model_name): FILE: get_new_blocks.py function snap_angle_func (line 21) | def snap_angle_func(raw_angle): function horizontal_merge (line 38) | def horizontal_merge( function merge_lines (line 157) | def merge_lines(lines_data, check_font_size=False, check_font_name=True,... function is_math (line 535) | def is_math(font_info_list, text_len, text, font_size): function merge_adjacent_math_lines (line 586) | def merge_adjacent_math_lines(lines): function get_new_blocks (line 720) | def get_new_blocks(page, pdf_path=None, page_num=None): FILE: load_config.py class ConfigError (line 10) | class ConfigError(Exception): function get_app_data_dir (line 16) | def get_app_data_dir(): function get_file_path (line 43) | def get_file_path(filename: str) -> Path: function read_json_file (line 62) | def read_json_file(filename: str) -> Any: function write_json_file (line 83) | def write_json_file(filename: str, data: Any) -> None: function load_config (line 107) | def load_config(force_reload=False) -> Optional[Dict]: function load_recent (line 155) | def load_recent() -> Optional[List]: function add_new_entry (line 182) | def add_new_entry(new_entry: Dict) -> bool: function update_count (line 205) | def update_count() -> bool: function update_file_status (line 226) | def update_file_status(index: int, read: Optional[bool] = None, statue: ... function delete_entry (line 252) | def delete_entry(index: int) -> bool: function decrease_count (line 316) | def decrease_count() -> bool: function update_default_services (line 336) | def update_default_services(translation: Optional[bool] = None, function get_default_services (line 370) | def get_default_services() -> Optional[Dict]: function save_config (line 400) | def save_config(config): FILE: main.py function get_current_config (line 18) | def get_current_config(): function decimal_to_hex_color (line 22) | def decimal_to_hex_color(decimal_color): function is_math (line 35) | def is_math(text, page_num,font_info): function line_non_text (line 38) | def line_non_text(text): function is_non_text (line 42) | def is_non_text(text): class main_function (line 45) | class main_function: method __init__ (line 46) | def __init__(self, pdf_path, method main (line 81) | def main(self): method start (line 219) | def start(self, image, pag_num): method batch_translate_pages_data (line 354) | def batch_translate_pages_data(self, original_language, target_language, method apply_translations_to_pdf (line 405) | def apply_translations_to_pdf(self): method subset_font (line 609) | def subset_font(self, in_font_path, out_font_path,text): FILE: merge_pdf.py function merge_pdfs_horizontally (line 4) | def merge_pdfs_horizontally(pdf1_path, pdf2_path, output_path, spacing=0): FILE: pdf_thumbnail.py function create_pdf_thumbnail (line 5) | def create_pdf_thumbnail(pdf_path, width=400): FILE: static/1.js function showHome (line 6) | function showHome() { function showAllRecent (line 17) | function showAllRecent() { function showSetup (line 29) | function showSetup() { function showUpload (line 48) | function showUpload() { function showSettings (line 59) | function showSettings() { function loadArticles (line 64) | async function loadArticles(isLimited,first_reload) { function showToast (line 197) | function showToast(message) { function showMenu (line 210) | function showMenu(event, article) { function open_bilingual (line 241) | function open_bilingual(articleId,article_name,article_tl,article_ol) { function showToast (line 248) | function showToast(message) { function closeUploadModal (line 265) | function closeUploadModal() { FILE: static/2.js function closeSettings (line 16) | function closeSettings() { function getValue (line 22) | function getValue() { function getValue2 (line 27) | function getValue2() { function getecount (line 34) | function getecount() { FILE: static/3.js function triggerFileInput (line 5) | function triggerFileInput() { function handleFiles (line 37) | async function handleFiles(input) { function createFileItemUI (line 108) | function createFileItemUI(fileId, file) { function removeFile (line 136) | function removeFile(fileId) { function showError (line 192) | function showError(message) { function createFileItemUI (line 198) | function createFileItemUI(fileId, file) { function uploadFile (line 217) | async function uploadFile(fileId) { function formatFileSize (line 250) | function formatFileSize(bytes) { function showError (line 258) | function showError(message) { function handleNextStep (line 262) | async function handleNextStep() { function updatecount (line 349) | function updatecount() { function deleteArticle (line 357) | function deleteArticle(articleId) { FILE: static/4.js function showBatchModal (line 6) | function showBatchModal() { function closeBatchModal (line 12) | function closeBatchModal() { function loadBatchData (line 19) | async function loadBatchData() { function toggleSelectAll (line 84) | function toggleSelectAll() { function handleBatchDelete (line 108) | async function handleBatchDelete() { function handleMindMap (line 145) | function handleMindMap() { function handleSummary (line 157) | function handleSummary() { FILE: static/setup.js function initializeUI (line 10) | function initializeUI(data) { function createServiceSection (line 119) | function createServiceSection(serviceName, config) { function saveall (line 179) | async function saveall() { function collectConfig (line 234) | function collectConfig() { function loadTranslationServices (line 305) | function loadTranslationServices(config) { FILE: update_recent.py function parse_merged_filename (line 10) | def parse_merged_filename(filename: str) -> Dict[str, str]: function get_file_info (line 34) | def get_file_info(file_path: str) -> Dict[str, Any]: function update_config_count (line 55) | def update_config_count(count: int) -> bool: function validate_json_file (line 88) | def validate_json_file(file_path: str) -> bool: function update_recent_json (line 108) | def update_recent_json():