fix storage api

This commit is contained in:
jxxghp
2024-09-21 20:18:40 +08:00
parent fada22e892
commit 7444b3e84b
4 changed files with 25 additions and 7 deletions

View File

@@ -361,7 +361,8 @@ class AliPan(StorageBase):
parent_fileid="root",
type="dir",
path="/资源库/",
name="资源库"
name="资源库",
basename="资源库"
),
schemas.FileItem(
storage=self.schema.value,
@@ -370,9 +371,13 @@ class AliPan(StorageBase):
parent_fileid="root",
type="dir",
path="/备份盘/",
name="备份盘"
name="备份盘",
basename="备份盘"
)
]
# 如果本身是文件
if fileitem.type == "file":
return [fileitem]
# 返回数据
ret_items = []
# 分页获取
@@ -413,6 +418,7 @@ class AliPan(StorageBase):
type="dir" if fileinfo.get("type") == "folder" else "file",
path=f"{fileitem.path}{fileinfo.get('name')}" + ("/" if fileinfo.get("type") == "folder" else ""),
name=fileinfo.get("name"),
basename=Path(fileinfo.get("name")).stem,
size=fileinfo.get("size"),
extension=fileinfo.get("file_extension"),
modify_time=StringUtils.str_to_timestamp(fileinfo.get("updated_at")),
@@ -604,7 +610,14 @@ class AliPan(StorageBase):
if not download_url:
logger.warn(f"{fileitem.path} 未获取到下载链接")
return None
res = RequestUtils().get_res(download_url)
res = RequestUtils(headers={
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Referer": "https://www.alipan.com/",
"Sec-Fetch-Dest": "iframe",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-Site": "cross-site",
"User-Agent": settings.USER_AGENT
}).get_res(download_url)
if res:
path = settings.TEMP_PATH / fileitem.name
with path.open("wb") as f:

View File

@@ -96,15 +96,17 @@ class Rclone(StorageBase):
logger.error(f"rclone存储检查失败{err}")
return False
def list(self, fileitm: schemas.FileItem) -> Optional[List[schemas.FileItem]]:
def list(self, fileitem: schemas.FileItem) -> Optional[List[schemas.FileItem]]:
"""
浏览文件
"""
if fileitem.type == "file":
return [fileitem]
try:
ret = subprocess.run(
[
'rclone', 'lsjson',
f'MP:{fileitm.path}'
f'MP:{fileitem.path}'
],
capture_output=True,
startupinfo=self.__get_hidden_shell()

View File

@@ -162,6 +162,8 @@ class U115Pan(StorageBase, metaclass=Singleton):
if not self.__init_cloud():
return []
try:
if fileitem.type == "file":
return [fileitem]
items = self.cloud.storage().list(dir_id=fileitem.fileid)
return [schemas.FileItem(
storage=self.schema.value,

View File

@@ -48,9 +48,10 @@ class WebPushModule(_ModuleBase, _MessageBase):
for conf in self._configs.values():
if not self.checkMessage(message, conf.name):
continue
webpush_users = conf.config.get("WEBPUSH_USERNAME")
webpush_users = conf.config.get("WEBPUSH_USERNAME") or ""
if webpush_users:
if message.username and message.username != message.userid:
# 设定了接收用户时,非该用户的消息不接收
if not message.userid or message.userid not in webpush_users.split(","):
continue
if not message.title and not message.text:
logger.warn("标题和内容不能同时为空")