From 8d5e0b26d578f9bdaf7a09025ac6b5dc9305988f Mon Sep 17 00:00:00 2001 From: jxxghp Date: Wed, 20 Nov 2024 13:14:37 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A115=E6=94=AF=E6=8C=81Cookie?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/modules/filemanager/__init__.py | 2 +- app/modules/filemanager/storages/__init__.py | 4 ++-- app/modules/filemanager/storages/u115.py | 18 +++++++++--------- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/app/modules/filemanager/__init__.py b/app/modules/filemanager/__init__.py index a0349d2f..5534aff3 100644 --- a/app/modules/filemanager/__init__.py +++ b/app/modules/filemanager/__init__.py @@ -143,7 +143,7 @@ class FileManagerModule(_ModuleBase): return storage_oper.set_config(conf) - def generate_qrcode(self, storage: str) -> Optional[Dict[str, str]]: + def generate_qrcode(self, storage: str) -> Optional[Tuple[dict, str]]: """ 生成二维码 """ diff --git a/app/modules/filemanager/storages/__init__.py b/app/modules/filemanager/storages/__init__.py index 7c52b61a..ab037d2d 100644 --- a/app/modules/filemanager/storages/__init__.py +++ b/app/modules/filemanager/storages/__init__.py @@ -1,6 +1,6 @@ from abc import ABCMeta, abstractmethod from pathlib import Path -from typing import Optional, List, Union, Dict +from typing import Optional, List, Union, Dict, Tuple from app import schemas from app.helper.storage import StorageHelper @@ -16,7 +16,7 @@ class StorageBase(metaclass=ABCMeta): def __init__(self): self.storagehelper = StorageHelper() - def generate_qrcode(self, *args, **kwargs) -> Optional[Dict[str, str]]: + def generate_qrcode(self, *args, **kwargs) -> Optional[Tuple[dict, str]]: pass def check_login(self, *args, **kwargs) -> Optional[Dict[str, str]]: diff --git a/app/modules/filemanager/storages/u115.py b/app/modules/filemanager/storages/u115.py index 0b87008f..ac25f048 100644 --- a/app/modules/filemanager/storages/u115.py +++ b/app/modules/filemanager/storages/u115.py @@ -35,11 +35,10 @@ class U115Pan(StorageBase, metaclass=Singleton): """ try: if not self.client or not self.client.cookies or force: - self.client = P115Client(self.__credential, - check_for_relogin=True, app="alipaymini", console_qrcode=False) + self.client = P115Client(self.__credential, app="alipaymini") self.fs = P115FileSystem(self.client) except Exception as err: - logger.error(f"115连接失败,请重新扫码登录:{str(err)}") + logger.error(f"115连接失败,请重新登录:{str(err)}") self.__clear_credential() return False return True @@ -54,8 +53,7 @@ class U115Pan(StorageBase, metaclass=Singleton): return None if not conf.config: return None - # 将dict转换为cookie字符串格式 - return "; ".join([f"{k}={v}" for k, v in conf.config.items()]) + return conf.config.get("cookie") def __save_credential(self, credential: dict): """ @@ -73,15 +71,14 @@ class U115Pan(StorageBase, metaclass=Singleton): """ 生成二维码 """ - if not self.__init_cloud(): - return None + self.__init_cloud() try: resp = self.client.login_qrcode_token() self.session_info = resp["data"] qrcode_content = self.session_info.pop("qrcode") if not qrcode_content: logger.warn("115生成二维码失败:未获取到二维码数据!") - return None + return {}, "" return { "codeContent": qrcode_content }, "" @@ -114,7 +111,10 @@ class U115Pan(StorageBase, metaclass=Singleton): app="alipaymini") if resp: # 保存认证信息 - self.__save_credential(resp["data"]["cookie"]) + cookie_dict = resp["data"]["cookie"] + cookie_str = "; ".join([f"{k}={v}" for k, v in cookie_dict.items()]) + cookie_dict.update({"cookie": cookie_str}) + self.__save_credential(cookie_dict) self.__init_cloud(force=True) result = { "status": 2,