mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 23:47:41 +08:00
feat:弱引用单例
This commit is contained in:
@@ -15,7 +15,7 @@ from app.core.config import settings
|
||||
from app.log import logger
|
||||
from app.modules.filemanager import StorageBase
|
||||
from app.schemas.types import StorageSchema
|
||||
from app.utils.singleton import Singleton
|
||||
from app.utils.singleton import WeakSingleton
|
||||
from app.utils.string import StringUtils
|
||||
|
||||
lock = threading.Lock()
|
||||
@@ -29,7 +29,7 @@ class SessionInvalidException(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class AliPan(StorageBase, metaclass=Singleton):
|
||||
class AliPan(StorageBase, metaclass=WeakSingleton):
|
||||
"""
|
||||
阿里云盘相关操作
|
||||
"""
|
||||
@@ -43,17 +43,12 @@ class AliPan(StorageBase, metaclass=Singleton):
|
||||
"copy": "复制"
|
||||
}
|
||||
|
||||
# 验证参数
|
||||
_auth_state = {}
|
||||
|
||||
# 上传进度值
|
||||
_last_progress = 0
|
||||
|
||||
# 基础url
|
||||
base_url = "https://openapi.alipan.com"
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self._auth_state = {}
|
||||
self.session = requests.Session()
|
||||
self._init_session()
|
||||
|
||||
@@ -244,6 +239,7 @@ class AliPan(StorageBase, metaclass=Singleton):
|
||||
conf = self.get_conf()
|
||||
conf.update(result)
|
||||
self.set_config(conf)
|
||||
return None
|
||||
|
||||
def _request_api(self, method: str, endpoint: str,
|
||||
result_key: Optional[str] = None, **kwargs) -> Optional[Union[dict, list]]:
|
||||
@@ -369,7 +365,7 @@ class AliPan(StorageBase, metaclass=Singleton):
|
||||
break
|
||||
next_marker = resp.get("next_marker")
|
||||
for item in resp.get("items", []):
|
||||
items.append(self.__get_fileitem(item, parent=fileitem.path))
|
||||
items.append(self.__get_fileitem(item, parent=str(fileitem.path)))
|
||||
if len(resp.get("items")) < 100:
|
||||
break
|
||||
return items
|
||||
|
||||
@@ -12,11 +12,11 @@ from app.log import logger
|
||||
from app.modules.filemanager.storages import StorageBase
|
||||
from app.schemas.types import StorageSchema
|
||||
from app.utils.http import RequestUtils
|
||||
from app.utils.singleton import Singleton
|
||||
from app.utils.singleton import WeakSingleton
|
||||
from app.utils.url import UrlUtils
|
||||
|
||||
|
||||
class Alist(StorageBase, metaclass=Singleton):
|
||||
class Alist(StorageBase, metaclass=WeakSingleton):
|
||||
"""
|
||||
Alist相关操作
|
||||
api文档:https://oplist.org/zh/
|
||||
@@ -38,7 +38,7 @@ class Alist(StorageBase, metaclass=Singleton):
|
||||
"""
|
||||
初始化
|
||||
"""
|
||||
self.__generate_token.clear_cache()
|
||||
self.__generate_token.clear_cache() # noqa
|
||||
|
||||
@property
|
||||
def __get_base_url(self) -> str:
|
||||
|
||||
@@ -12,17 +12,19 @@ from app.core.config import settings
|
||||
from app.log import logger
|
||||
from app.modules.filemanager import StorageBase
|
||||
from app.schemas.types import StorageSchema
|
||||
from app.utils.singleton import Singleton
|
||||
from app.utils.singleton import WeakSingleton
|
||||
|
||||
lock = threading.Lock()
|
||||
|
||||
|
||||
class SMBConnectionError(Exception):
|
||||
"""SMB 连接错误"""
|
||||
"""
|
||||
SMB 连接错误
|
||||
"""
|
||||
pass
|
||||
|
||||
|
||||
class SMB(StorageBase, metaclass=Singleton):
|
||||
class SMB(StorageBase, metaclass=WeakSingleton):
|
||||
"""
|
||||
SMB网络挂载存储相关操作 - 使用 smbclient 高级接口
|
||||
"""
|
||||
|
||||
@@ -18,7 +18,7 @@ from app.core.config import settings
|
||||
from app.log import logger
|
||||
from app.modules.filemanager import StorageBase
|
||||
from app.schemas.types import StorageSchema
|
||||
from app.utils.singleton import Singleton
|
||||
from app.utils.singleton import WeakSingleton
|
||||
from app.utils.string import StringUtils
|
||||
|
||||
lock = threading.Lock()
|
||||
@@ -28,7 +28,7 @@ class NoCheckInException(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class U115Pan(StorageBase, metaclass=Singleton):
|
||||
class U115Pan(StorageBase, metaclass=WeakSingleton):
|
||||
"""
|
||||
115相关操作
|
||||
"""
|
||||
@@ -41,18 +41,12 @@ class U115Pan(StorageBase, metaclass=Singleton):
|
||||
"move": "移动",
|
||||
"copy": "复制"
|
||||
}
|
||||
|
||||
# 验证参数
|
||||
_auth_state = {}
|
||||
|
||||
# 上传进度值
|
||||
_last_progress = 0
|
||||
|
||||
# 基础url
|
||||
base_url = "https://proapi.115.com"
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self._auth_state = {}
|
||||
self.session = requests.Session()
|
||||
self._init_session()
|
||||
|
||||
@@ -492,7 +486,8 @@ class U115Pan(StorageBase, metaclass=Singleton):
|
||||
type="file" if info_resp["file_category"] == "1" else "dir",
|
||||
name=info_resp["file_name"],
|
||||
basename=Path(info_resp["file_name"]).stem,
|
||||
extension=Path(info_resp["file_name"]).suffix[1:] if info_resp["file_category"] == "1" else None,
|
||||
extension=Path(info_resp["file_name"]).suffix[1:] if info_resp[
|
||||
"file_category"] == "1" else None,
|
||||
pickcode=info_resp["pick_code"],
|
||||
size=StringUtils.num_filesize(info_resp['size']) if info_resp["file_category"] == "1" else None,
|
||||
modify_time=info_resp["utime"]
|
||||
|
||||
Reference in New Issue
Block a user