@@ -127,6 +127,24 @@ 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 ) :
@@ -152,6 +170,11 @@ def upload_image_to_lsky_pro(image_path, retries=3, timeout=30):
def process_image_file ( markdown_file_path ) :
with open ( markdown_file_path , ' r ' , encoding = ' utf-8 ' ) as file :
markdown_content = file . read ( )
@@ -164,6 +187,8 @@ def process_image_file(markdown_file_path):
try :
if not url . startswith ( ( ' http:// ' , ' https:// ' ) ) :
if ' image.lqsjy.cn ' not in url :
print ( f " 处理中: { url } " )
url = url . split ( ' ' ) [ 0 ]
@@ -187,15 +212,17 @@ def process_image_file(markdown_file_path):
# 构造新的文件名
file_name , file_ext = os . path . splitext ( markdown_file_path )
#new_file_path = f"{file_name}_lsky{file_ext}"
new_file_path = f " { file_name } { file_ext } "
# 保存为新文件
with open ( new_file_path , ' w ' , encoding = ' utf-8 ' ) as file :
file . write ( new_content )
messagebox. showinfo( " 完成 " , f " 成功处理 { len ( url_mapping ) } 张图片 " )
# messagebox. showinfo("完成", f"成功处理 {len(url_mapping)} 张图片" )
print ( f " { file_name } :成功处理 { len ( url_mapping ) } 张图片 " )
else :
messagebox. showwarning( " 警告 " , " 没有图片被处理" )
# messagebox. showwarning("警告", " 没有图片被处理" )
print ( " 没有图片被处理 " )
@@ -314,18 +341,24 @@ 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
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 ( future s ) :
file_path = futures [ future ]
try :
future . result ( )
except Exception as e :
pr int ( f " 处理文件 { file_path } 时出错: { str ( e ) } " )
def upload_images_batch_files ( file_path s) :
# """ 你的图片上传逻辑(需自行实现) """
for file_path in file_paths :
# 这里添加处理每个文件的逻辑
if not file_path or not os . path . isfile ( file_path ) :
messagebox . showwarn ing ( " 警告 " , " 请选择有效的Markdown文件。 " )
return
print ( f " Processing: { file_path } " )
process_image_file ( file_path )
# 示例: 读取markdown文件内容
# with open(file_path, 'r') as f:
# content = f.read()
# 添加你的图片上传逻辑...
def select_files ( ) :
root = tk . Tk ( )