mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-07-12 16:02:35 +08:00
fix #3548
This commit is contained in:
@@ -1,4 +1,3 @@
|
|||||||
import copy
|
|
||||||
import json
|
import json
|
||||||
import subprocess
|
import subprocess
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
@@ -57,12 +56,6 @@ class Rclone(StorageBase):
|
|||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def __get_fileitem(self, path: Path):
|
|
||||||
"""
|
|
||||||
获取文件项
|
|
||||||
"""
|
|
||||||
return self.get_item(path)
|
|
||||||
|
|
||||||
def __get_rcloneitem(self, item: dict, parent: str = "/") -> schemas.FileItem:
|
def __get_rcloneitem(self, item: dict, parent: str = "/") -> schemas.FileItem:
|
||||||
"""
|
"""
|
||||||
获取rclone文件项
|
获取rclone文件项
|
||||||
@@ -137,12 +130,12 @@ class Rclone(StorageBase):
|
|||||||
retcode = subprocess.run(
|
retcode = subprocess.run(
|
||||||
[
|
[
|
||||||
'rclone', 'mkdir',
|
'rclone', 'mkdir',
|
||||||
f'MP:{fileitem.path}/{name}'
|
f'MP:{Path(fileitem.path) / name}'
|
||||||
],
|
],
|
||||||
startupinfo=self.__get_hidden_shell()
|
startupinfo=self.__get_hidden_shell()
|
||||||
).returncode
|
).returncode
|
||||||
if retcode == 0:
|
if retcode == 0:
|
||||||
return self.get_item(Path(f"{fileitem.path}/{name}"))
|
return self.get_item(Path(fileitem.path) / name)
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
logger.error(f"rclone创建目录失败:{err}")
|
logger.error(f"rclone创建目录失败:{err}")
|
||||||
return None
|
return None
|
||||||
@@ -188,20 +181,6 @@ class Rclone(StorageBase):
|
|||||||
获取文件或目录,不存在返回None
|
获取文件或目录,不存在返回None
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
ret = subprocess.run(
|
|
||||||
[
|
|
||||||
'rclone', 'lsjson',
|
|
||||||
f'MP:{path}'
|
|
||||||
],
|
|
||||||
capture_output=True,
|
|
||||||
startupinfo=self.__get_hidden_shell()
|
|
||||||
)
|
|
||||||
if ret.returncode == 0:
|
|
||||||
# 判断是否是文件
|
|
||||||
if str(path.name) in str(ret.stdout.decode('utf-8')):
|
|
||||||
items = json.loads(ret.stdout)
|
|
||||||
return self.__get_rcloneitem(items[0], parent=str(path.parent) + "/")
|
|
||||||
|
|
||||||
ret = subprocess.run(
|
ret = subprocess.run(
|
||||||
[
|
[
|
||||||
'rclone', 'lsjson',
|
'rclone', 'lsjson',
|
||||||
@@ -211,15 +190,13 @@ class Rclone(StorageBase):
|
|||||||
startupinfo=self.__get_hidden_shell()
|
startupinfo=self.__get_hidden_shell()
|
||||||
)
|
)
|
||||||
if ret.returncode == 0:
|
if ret.returncode == 0:
|
||||||
# 判断是否是目录
|
items = json.loads(ret.stdout)
|
||||||
if str(path.name) in str(ret.stdout.decode('utf-8')):
|
for item in items:
|
||||||
items = json.loads(ret.stdout)
|
if item.get("Name") == path.name:
|
||||||
for item in items:
|
return self.__get_rcloneitem(item, parent=str(path.parent) + "/")
|
||||||
if item.get("Path") == path.name:
|
|
||||||
return self.__get_rcloneitem(item, parent=str(path.parent) + "/")
|
|
||||||
return None
|
return None
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
logger.error(f"rclone获取文件失败:{err}")
|
logger.debug(f"rclone获取文件项失败:{err}")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def delete(self, fileitem: schemas.FileItem) -> bool:
|
def delete(self, fileitem: schemas.FileItem) -> bool:
|
||||||
@@ -249,7 +226,7 @@ class Rclone(StorageBase):
|
|||||||
[
|
[
|
||||||
'rclone', 'moveto',
|
'rclone', 'moveto',
|
||||||
f'MP:{fileitem.path}',
|
f'MP:{fileitem.path}',
|
||||||
f'MP:{Path(fileitem.path).parent}/{name}'
|
f'MP:{Path(fileitem.path).parent / name}'
|
||||||
],
|
],
|
||||||
startupinfo=self.__get_hidden_shell()
|
startupinfo=self.__get_hidden_shell()
|
||||||
).returncode
|
).returncode
|
||||||
@@ -297,7 +274,7 @@ class Rclone(StorageBase):
|
|||||||
startupinfo=self.__get_hidden_shell()
|
startupinfo=self.__get_hidden_shell()
|
||||||
).returncode
|
).returncode
|
||||||
if retcode == 0:
|
if retcode == 0:
|
||||||
return self.__get_fileitem(new_path)
|
return self.get_item(new_path)
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
logger.error(f"rclone上传文件失败:{err}")
|
logger.error(f"rclone上传文件失败:{err}")
|
||||||
return None
|
return None
|
||||||
|
|||||||
Reference in New Issue
Block a user