add emby/jellyfin userlogin

This commit is contained in:
jxxghp
2023-06-20 08:50:48 +08:00
parent 35f5f46873
commit 12c9f146b7
5 changed files with 87 additions and 1 deletions

View File

@ -10,7 +10,6 @@ from app.schemas.types import MediaType
class EmbyModule(_ModuleBase):
emby: Emby = None
def init_module(self) -> None:
@ -22,6 +21,15 @@ class EmbyModule(_ModuleBase):
def init_setting(self) -> Tuple[str, Union[str, bool]]:
return "MEDIASERVER", "emby"
def user_authenticate(self, name, password) -> Optional[bool]:
"""
使用Emby用户辅助完成用户认证
:param name: 用户名
:param password: 密码
:return: bool
"""
return self.emby.authenticate(name, password)
def webhook_parser(self, body: Any, form: Any, args: Any) -> Optional[dict]:
"""
解析Webhook报文体

View File

@ -87,6 +87,33 @@ class Emby(metaclass=Singleton):
logger.error(f"连接Users出错" + str(e))
return None
def authenticate(self, username: str, password: str) -> Optional[bool]:
"""
用户认证
"""
if not self._host or not self._apikey:
return None
req_url = "%semby/Users/AuthenticateByName" % self._host
try:
res = RequestUtils(content_type="application/json").post_res(
url=req_url,
data=json.dumps({
"Username": username,
"Pw": password,
"KeepMeLoggedIn": False
})
)
if res:
auth_token = res.json().get("AccessToken")
if auth_token:
logger.info(f"用户 {username} Emby认证成功")
return True
else:
logger.error(f"Users/AuthenticateByName 未获取到返回数据")
except Exception as e:
logger.error(f"连接Users/AuthenticateByName出错" + str(e))
return None
def get_server_id(self) -> Optional[str]:
"""
获得服务器信息