add storage snapshot

This commit is contained in:
jxxghp
2024-07-03 11:51:26 +08:00
parent 35eda7d116
commit db26f2e108
4 changed files with 38 additions and 2 deletions

View File

@@ -1,5 +1,5 @@
from pathlib import Path from pathlib import Path
from typing import Optional, Tuple, List from typing import Optional, Tuple, List, Dict
from app import schemas from app import schemas
from app.chain import ChainBase from app.chain import ChainBase
@@ -57,3 +57,9 @@ class StorageChain(ChainBase):
重命名文件或目录 重命名文件或目录
""" """
return self.run_module("rename_file", fileitem=fileitem, name=name) return self.run_module("rename_file", fileitem=fileitem, name=name)
def snapshot_storage(self, fileitem: schemas.FileItem) -> Optional[Dict]:
"""
快照存储
"""
return self.run_module("snapshot_storage", fileitem=fileitem)

View File

@@ -173,6 +173,16 @@ class FileManagerModule(_ModuleBase):
return None return None
return storage_oper.upload(fileitem, path) return storage_oper.upload(fileitem, path)
def snapshot_storage(self, fileitem: FileItem) -> Optional[Dict]:
"""
快照存储
"""
storage_oper = self.__get_storage_oper(fileitem.storage)
if not storage_oper:
logger.error(f"不支持 {storage} 的快照处理")
return None
return storage_oper.snapshot(fileitem)
def transfer(self, fileitem: FileItem, meta: MetaBase, mediainfo: MediaInfo, def transfer(self, fileitem: FileItem, meta: MetaBase, mediainfo: MediaInfo,
transfer_type: str, target_storage: str = None, target_path: Path = None, transfer_type: str, target_storage: str = None, target_path: Path = None,
episodes_info: List[TmdbEpisode] = None, episodes_info: List[TmdbEpisode] = None,

View File

@@ -1,6 +1,6 @@
from abc import ABCMeta, abstractmethod from abc import ABCMeta, abstractmethod
from pathlib import Path from pathlib import Path
from typing import Optional, List, Union from typing import Optional, List, Union, Dict
from app import schemas from app import schemas
from app.helper.storage import StorageHelper from app.helper.storage import StorageHelper
@@ -137,4 +137,23 @@ class StorageBase(metaclass=ABCMeta):
软链接文件 软链接文件
""" """
pass pass
def snapshot(self, fileitm: schemas.FileItem) -> Dict[str, float]:
"""
快照文件系统,输出所有层级文件信息
"""
files_info = {}
def __snapshot_file(_fileitm: schemas.FileItem):
"""
递归获取文件信息
"""
files_info[_fileitm.path] = _fileitm.size
if _fileitm.type == "dir":
for sub_file in self.list(_fileitm):
__snapshot_file(sub_file)
__snapshot_file(fileitm)
return files_info

View File

@@ -494,6 +494,7 @@ class AliPan(StorageBase):
""" """
获取文件或目录不存在返回None 获取文件或目录不存在返回None
""" """
def __find_item(_fileitem: schemas.FileItem, _name: str) -> Optional[schemas.FileItem]: def __find_item(_fileitem: schemas.FileItem, _name: str) -> Optional[schemas.FileItem]:
""" """
查找下级目录中匹配名称的目录或文件 查找下级目录中匹配名称的目录或文件