Merge pull request #10 from Miyokiss/master

refactor(jm_comic): 移除anonfile依赖,改用Kukufile进行文件上传
This commit is contained in:
slyAimer 2025-04-16 18:18:12 +08:00 committed by GitHub
commit 315246e695
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 82 additions and 61 deletions

View file

@ -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):

View file

@ -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)

View file

@ -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)

View file

@ -60,11 +60,6 @@ proxy_api = "<KEY>"
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
"""