diff --git a/src/clover_jm/jm_comic.py b/src/clover_jm/jm_comic.py index 1db01d2..305e11a 100644 --- a/src/clover_jm/jm_comic.py +++ b/src/clover_jm/jm_comic.py @@ -2,11 +2,11 @@ import yaml import uuid import jmcomic from datetime import datetime -from src.configs.api_config import qrserver_url,qrserver_size,anonfile_download_url +from src.configs.api_config import qrserver_url,qrserver_size from src.clover_jm.disguise_pdf import * from concurrent.futures import ThreadPoolExecutor from src.configs.path_config import jm_path,jm_config_path -from src.clover_providers.cloud_file_api import anonfile +from src.clover_providers.cloud_file_api.kukufile import Kukufile from src.clover_image.delete_file import delete_folder,delete_file from src.clover_email.send_email import send_email_by_google,send_email_by_qq @@ -45,7 +45,8 @@ async def jm_qr(album_id: str| None): album_detail,downloader = await download_jm(album_id = album_id,file_name = file_name,receiver_email = None) # 创建变量 folder_path = f"{jm_path}{file_name}" - zip_path = f"{folder_path}{album_detail.title}.zip" + zip_name = f"{album_detail.title}.zip" + zip_path = f"{folder_path}{zip_name}" # 压缩文件 zip_status = await folder_zip(folder_path,zip_path) if not zip_status: @@ -53,19 +54,20 @@ async def jm_qr(album_id: str| None): return "压缩文件失败" # 发送文件 - send_status = await anonfile.upload_file(zip_path) - if send_status["success"]: - file_code=send_status["code"] + send_status = await Kukufile.upload_file(zip_path,zip_name) + logger.debug(f"send_status: {send_status}") + if send_status[0] == "OK": # 删除文件 await delete_folder(folder_path) return { "msg":"获取成功~!码上下载!~", - "qr_code": f"{qrserver_url}?size={qrserver_size}&data={anonfile_download_url}{file_code}" + "qr_code": f"{qrserver_url}?size={qrserver_size}&data={send_status[1]}" } else: + logger.error(f"上传出错API返回: {send_status}") await delete_folder(folder_path) return { - "msg":"发送失败,请重试!" + "msg":"上传出错API,请重试!" } async def download_jm(album_id: str| None,file_name :str | None,receiver_email: str| None): diff --git a/src/clover_providers/cloud_file_api/anonfile.py b/src/clover_providers/cloud_file_api/anonfile.py deleted file mode 100644 index 1f38880..0000000 --- a/src/clover_providers/cloud_file_api/anonfile.py +++ /dev/null @@ -1,48 +0,0 @@ -import requests -from nonebot import logger - -__name__ = 'Anonfile Api' - -async def upload_file(file_path): - """ - ### 上传文件到anonfile并返回 \n - :param file_path: 上传文件路径 - :return: {\n - "success": true,\n - "code": "文件码",\n - "message": "File uploaded successfully",\n - "isProtected": fales\n - } - ### GET获取文件信息: - https://anonfile.io/f/{ 文件码 } - - ### GET下载文件: - https://anonfile.io/api/download/{ 文件码 } - """ - try: - # 创建Data对象并添加文件 - files = {'file': open(file_path, 'rb')} - - upload_settings = { - 'password': '', # 密码 - 'expiryDays': 7, # 过期天数 7、30 - } - - # 如果设置了密码和过期天数,则添加到Data中 - data = {} - if upload_settings['password']: - data['password'] = upload_settings['password'] - data['expiryDays'] = str(upload_settings['expiryDays']) - - # 发送上传请求 - response = requests.post('https://anonfile.io/api/upload', files=files, data=data) - - # 检查响应状态码 - if response.status_code == 200: - return response.json() - else: - logger.error('Upload failed:', response.status_code, response.text) - - except Exception as error: - # 捕获并处理上传过程中的错误 - logger.error('Upload error:', error) \ No newline at end of file diff --git a/src/clover_providers/cloud_file_api/kukufile.py b/src/clover_providers/cloud_file_api/kukufile.py new file mode 100644 index 0000000..4f7501c --- /dev/null +++ b/src/clover_providers/cloud_file_api/kukufile.py @@ -0,0 +1,72 @@ +import requests +from nonebot import logger + +__name__ = 'Kukufile Api' + +class Kukufile: + def __init__(self): + self.upload_queue = [] + self.upload_cancel = False + + async def start_upload(self, queue_pos): + task = self.upload_queue[queue_pos] + + method = task['server']['method'].lower() + file_path = task['filepath'] + file_name = task['filename'] + uuid = task['uuid'] + server_url = task['server']['url'] + + try: + if method == 'post': + with open(file_path, 'rb') as file_data: + files = { + 'file_1': file_data.read() + } + data = { + 'ajax': '1', + 'uuid': uuid, + 'country': 'HK', + 'filecnt': 1, + "file_1_name" : file_name, + } + logger.debug(f"Request Data: {file_data}") + response = requests.post(server_url, files=files, data=data) + + elif method == 'put': + with open(file_path, 'rb') as file_data: + headers = {'Content-Type': 'application/octet-stream'} + response = requests.put(server_url, data=file_data.read(), headers=headers) + + logger.debug(f"Response Status Code: {response.status_code}") + logger.debug(f"Server Response: {response.text}") + if response.status_code == 200: + r_msg = response.text.split("OK:") + r_msg[0] = "OK" + else: + r_msg = response.text.split("NG:") + r_msg[0] = "NG" + return r_msg + except Exception as e: + print(f"Upload Error: {str(e)}") + task['status'] = 'error' + async def upload_file(file_path, file_name: str = None): + """上传文件\n + :param file_path: 上传文件绝对路径\n + :param file_name: 显示文件名\n + """ + # POST方式上传文件 + # Your user key jh4t rr2h 42fc + upload_task = { + 'id': 0, + 'uuid': 'ab896e383ba9831e5ad48189a2407062', + 'filepath': file_path, + 'filename': file_name, + 'server': { + 'method': 'post', + 'url': 'https://file203-d.kuku.lu/upload.php' + } + } + uploader = Kukufile() + uploader.upload_queue.append(upload_task) + return await uploader.start_upload(0) \ No newline at end of file diff --git a/src/configs/api_config_example.py b/src/configs/api_config_example.py index 895b4e3..72f6e60 100644 --- a/src/configs/api_config_example.py +++ b/src/configs/api_config_example.py @@ -60,11 +60,6 @@ proxy_api = "" qrserver_url = "https://api.qrserver.com/v1/create-qr-code/" qrserver_size= "200x200" -""" -anonfile API 参数 -""" -anonfile_download_url = "https://anonfile.io/api/download/" - """ CodeForces API """