From 10018266a63f8d9c50464ac6ae65f84f69a7c235 Mon Sep 17 00:00:00 2001 From: vincent Date: Fri, 21 Jul 2023 17:37:24 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- input.txt | 3 +++ main.py | 33 ++++++++++++++++++++------------- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/input.txt b/input.txt index 103227b..dbaece6 100644 --- a/input.txt +++ b/input.txt @@ -1 +1,4 @@ +第61话 - https://bakamh.com/manga/%e6%81%b6%e9%9c%b8%e5%ae%a4%e5%8f%8b%e6%af%8b%e9%80%9a%e6%9d%a5/c-60/ +第60话 - https://bakamh.com/manga/%e6%81%b6%e9%9c%b8%e5%ae%a4%e5%8f%8b%e6%af%8b%e9%80%9a%e6%9d%a5/c-59/ +第59话 - https://bakamh.com/manga/%e6%81%b6%e9%9c%b8%e5%ae%a4%e5%8f%8b%e6%af%8b%e9%80%9a%e6%9d%a5/c-58/ 第58话 - https://bakamh.com/manga/%e6%81%b6%e9%9c%b8%e5%ae%a4%e5%8f%8b%e6%af%8b%e9%80%9a%e6%9d%a5/c-57/ \ No newline at end of file diff --git a/main.py b/main.py index 7f959a4..6082d3a 100644 --- a/main.py +++ b/main.py @@ -69,9 +69,23 @@ def set_img_obj_data(img_obj): img_obj["data"] = data -def concatenate_images_vertically(img_obj_list, output_file): +def batch_download_images_to_img_obj_list(img_obj_list): """ - 垂直拼接图片,并保存到本地目录 + 使用 ThreadPoolExecutor 创建线程池,对 img_obj_list 中的每个图片对象调用 set_img_obj_data 函数。 + + Args: + img_obj_list (list): 图片对象列表,每个对象包含图片的数据等信息。 + + Returns: + None + """ + with ThreadPoolExecutor() as executor: + executor.map(set_img_obj_data, img_obj_list) + + +def concatenate_images_vertically(img_obj_list): + """ + 垂直拼接长图片 """ try: # 计算拼接后的长图宽度和总高度 @@ -94,8 +108,7 @@ def concatenate_images_vertically(img_obj_list, output_file): long_image.paste(img, (x_offset, y_offset)) y_offset += img_height - # 保存拼接后的长图到本地 - long_image.save(output_file) + return long_image except Exception as e: file_name = img_obj_list[0]["file_name"] @@ -112,15 +125,9 @@ def process_batch(lines): html_content = get_html(url, file_name) img_url_list = get_img_urls(html_content) img_obj_list = create_img_obj_list(img_url_list, file_name) - - # 使用 ThreadPoolExecutor 创建线程池 - with ThreadPoolExecutor() as executor: - # 多线程处理图片下载和替换 - executor.map(set_img_obj_data, img_obj_list) - - concatenate_images_vertically( - img_obj_list, output_file=f"imgs/{file_name}.png" - ) + batch_download_images_to_img_obj_list(img_obj_list) + long_image = concatenate_images_vertically(img_obj_list) # 垂直拼接长图片 + long_image.save(f"imgs/{file_name}.png") # 保存拼接后的长图到本地 if __name__ == "__main__":