diff --git a/dialogue_download_change.py b/dialogue_download_change.py index ea7373f..b643e93 100644 --- a/dialogue_download_change.py +++ b/dialogue_download_change.py @@ -127,23 +127,28 @@ def download_images(): else: messagebox.showwarning("警告", "没有图片被下载") -def upload_image_to_lsky_pro(image_path): - """上传图片到Lsky Pro图床""" - with open(image_path, 'rb') as img_file: - files = {'file': img_file} - headers = { - 'Authorization': f'Bearer {token}', - 'Accept': 'application/json' - } - response = requests.post(f'{lsky_pro_url}{upload_endpoint}', files=files, headers=headers) - if response.status_code == 200: - try: - data = response.json() - if data['status']: - return data['data']['links']['url'] - except: - pass - return None +def upload_image_to_lsky_pro(image_path, retries=3, timeout=30): + """上传图片到Lsky Pro图床,增加重试机制和超时设置""" + for attempt in range(retries): + try: + with open(image_path, 'rb') as img_file: + files = {'file': img_file} + headers = { + 'Authorization': f'Bearer {token}', + 'Accept': 'application/json' + } + response = requests.post(f'{lsky_pro_url}{upload_endpoint}', files=files, headers=headers, timeout=timeout) + if response.status_code == 200: + try: + data = response.json() + if data['status']: + return data['data']['links']['url'] + except: + pass + except requests.exceptions.RequestException as e: + print(f"上传失败,重试 {attempt + 1}/{retries}: {str(e)}") + time.sleep(3) # 重试前等待3秒 + return None @@ -309,24 +314,18 @@ def download_and_upload_images(): except Exception as e: messagebox.showerror("错误", f"处理过程中出错: {str(e)}") +def upload_images_batch_files(file_paths, max_concurrent_uploads=5): + """批量上传图片,限制并发上传数量""" + from concurrent.futures import ThreadPoolExecutor, as_completed - - -def upload_images_batch_files(file_paths): - # """ 你的图片上传逻辑(需自行实现) """ - for file_path in file_paths: - # 这里添加处理每个文件的逻辑 - if not file_path or not os.path.isfile(file_path): - messagebox.showwarning("警告", "请选择有效的Markdown文件。") - return - - print(f"Processing: {file_path}") - process_image_file(file_path) - - # 示例:读取markdown文件内容 - # with open(file_path, 'r') as f: - # content = f.read() - # 添加你的图片上传逻辑... + with ThreadPoolExecutor(max_workers=max_concurrent_uploads) as executor: + futures = {executor.submit(process_image_file, file_path): file_path for file_path in file_paths} + for future in as_completed(futures): + file_path = futures[future] + try: + future.result() + except Exception as e: + print(f"处理文件 {file_path} 时出错: {str(e)}") def select_files(): root = tk.Tk()