mirror of
https://github.com/ClovertaTheTrilobita/SanYeCao-Nonebot.git
synced 2026-04-01 22:04:51 +00:00
Merge pull request #10 from Miyokiss/master
refactor(jm_comic): 移除anonfile依赖,改用Kukufile进行文件上传
This commit is contained in:
commit
315246e695
4 changed files with 82 additions and 61 deletions
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
72
src/clover_providers/cloud_file_api/kukufile.py
Normal file
72
src/clover_providers/cloud_file_api/kukufile.py
Normal 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)
|
||||
|
|
@ -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
|
||||
"""
|
||||
|
|
|
|||
Loading…
Reference in a new issue