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 uuid
|
||||||
import jmcomic
|
import jmcomic
|
||||||
from datetime import datetime
|
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 src.clover_jm.disguise_pdf import *
|
||||||
from concurrent.futures import ThreadPoolExecutor
|
from concurrent.futures import ThreadPoolExecutor
|
||||||
from src.configs.path_config import jm_path,jm_config_path
|
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_image.delete_file import delete_folder,delete_file
|
||||||
from src.clover_email.send_email import send_email_by_google,send_email_by_qq
|
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)
|
album_detail,downloader = await download_jm(album_id = album_id,file_name = file_name,receiver_email = None)
|
||||||
# 创建变量
|
# 创建变量
|
||||||
folder_path = f"{jm_path}{file_name}"
|
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)
|
zip_status = await folder_zip(folder_path,zip_path)
|
||||||
if not zip_status:
|
if not zip_status:
|
||||||
|
|
@ -53,19 +54,20 @@ async def jm_qr(album_id: str| None):
|
||||||
return "压缩文件失败"
|
return "压缩文件失败"
|
||||||
|
|
||||||
# 发送文件
|
# 发送文件
|
||||||
send_status = await anonfile.upload_file(zip_path)
|
send_status = await Kukufile.upload_file(zip_path,zip_name)
|
||||||
if send_status["success"]:
|
logger.debug(f"send_status: {send_status}")
|
||||||
file_code=send_status["code"]
|
if send_status[0] == "OK":
|
||||||
# 删除文件
|
# 删除文件
|
||||||
await delete_folder(folder_path)
|
await delete_folder(folder_path)
|
||||||
return {
|
return {
|
||||||
"msg":"获取成功~!码上下载!~",
|
"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:
|
else:
|
||||||
|
logger.error(f"上传出错API返回: {send_status}")
|
||||||
await delete_folder(folder_path)
|
await delete_folder(folder_path)
|
||||||
return {
|
return {
|
||||||
"msg":"发送失败,请重试!"
|
"msg":"上传出错API,请重试!"
|
||||||
}
|
}
|
||||||
|
|
||||||
async def download_jm(album_id: str| None,file_name :str | None,receiver_email: str| None):
|
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_url = "https://api.qrserver.com/v1/create-qr-code/"
|
||||||
qrserver_size= "200x200"
|
qrserver_size= "200x200"
|
||||||
|
|
||||||
"""
|
|
||||||
anonfile API 参数
|
|
||||||
"""
|
|
||||||
anonfile_download_url = "https://anonfile.io/api/download/"
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
CodeForces API
|
CodeForces API
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue