@@ -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
@@ -182,8 +187,8 @@ 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}_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 )
@@ -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_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()
# 添加你的图片上传逻辑...
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 select_files ( ) :
root = tk . Tk ( )