fix downloaders && mediaservers && notifications

This commit is contained in:
jxxghp
2024-07-02 07:16:33 +08:00
parent b4e1e911fc
commit 9a07d88d41
15 changed files with 142 additions and 190 deletions

View File

@@ -15,14 +15,14 @@ from app.utils.http import RequestUtils
class Emby:
def __init__(self):
self._host = settings.EMBY_HOST
def __init__(self, host: str = None, play_host: str = None, apikey: str = None):
self._host = host
if self._host:
self._host = RequestUtils.standardize_base_url(self._host)
self._playhost = settings.EMBY_PLAY_HOST
self._playhost = play_host
if self._playhost:
self._playhost = RequestUtils.standardize_base_url(self._playhost)
self._apikey = settings.EMBY_API_KEY
self._apikey = apikey
self.user = self.get_user(settings.SUPERUSER)
self.folders = self.get_emby_folders()
self.serverid = self.get_server_id()

View File

@@ -12,14 +12,14 @@ from app.utils.http import RequestUtils
class Jellyfin:
def __init__(self):
self._host = settings.JELLYFIN_HOST
def __init__(self, host: str = None, play_host: str = None, apikey: str = None):
self._host = host
if self._host:
self._host = RequestUtils.standardize_base_url(self._host)
self._playhost = settings.JELLYFIN_PLAY_HOST
self._playhost = play_host
if self._playhost:
self._playhost = RequestUtils.standardize_base_url(self._playhost)
self._apikey = settings.JELLYFIN_API_KEY
self._apikey = apikey
self.user = self.get_user(settings.SUPERUSER)
self.serverid = self.get_server_id()

View File

@@ -19,14 +19,14 @@ class Plex:
_plex = None
_session = None
def __init__(self):
self._host = settings.PLEX_HOST
def __init__(self, host: str = None, play_host: str = None, token: str = None):
self._host = host
if self._host:
self._host = RequestUtils.standardize_base_url(self._host)
self._playhost = settings.PLEX_PLAY_HOST
self._playhost = play_host
if self._playhost:
self._playhost = RequestUtils.standardize_base_url(self._playhost)
self._token = settings.PLEX_TOKEN
self._token = token
if self._host and self._token:
try:
self._plex = PlexServer(self._host, self._token)

View File

@@ -8,7 +8,6 @@ from qbittorrentapi.transfer import TransferInfoDictionary
from app.core.config import settings
from app.log import logger
from app.utils.string import StringUtils
class Qbittorrent:
@@ -23,12 +22,10 @@ class Qbittorrent:
"""
若不设置参数,则创建配置文件设置的下载器
"""
if host and port:
self._host, self._port = host, port
else:
self._host, self._port = StringUtils.get_domain_address(address=settings.QB_HOST, prefix=True)
self._username = username if username else settings.QB_USER
self._password = password if password else settings.QB_PASSWORD
self._host = host
self._port = port
self._username = username
self._password = password
if self._host and self._port:
self.qbc = self.__login_qbittorrent()

View File

@@ -21,22 +21,21 @@ class Slack:
_client: WebClient = None
_service: SocketModeHandler = None
_ds_url = f"http://127.0.0.1:{settings.PORT}/api/v1/message?token={settings.API_TOKEN}"
_channel = ""
def __init__(self):
def __init__(self, oauth_token: str, app_token: str, channel: str = ""):
if not settings.SLACK_OAUTH_TOKEN or not settings.SLACK_APP_TOKEN:
return
try:
slack_app = App(token=settings.SLACK_OAUTH_TOKEN,
slack_app = App(token=oauth_token,
ssl_check_enabled=False,
url_verification_enabled=False)
except Exception as err:
logger.error(f"Slack初始化失败: {str(err)}")
return
self._client = slack_app.client
self._channel = channel
# 注册消息响应
@slack_app.event("message")
@@ -72,7 +71,7 @@ class Slack:
try:
self._service = SocketModeHandler(
slack_app,
settings.SLACK_APP_TOKEN
app_token
)
self._service.connect()
logger.info("Slack消息接收服务启动")
@@ -337,7 +336,7 @@ class Slack:
if conversation_id:
break
for channel in result["channels"]:
if channel.get("name") == (settings.SLACK_CHANNEL or "全体"):
if channel.get("name") == (self._channel or "全体"):
conversation_id = channel.get("id")
break
except Exception as e:

View File

@@ -24,14 +24,14 @@ class Telegram:
_event = Event()
_bot: telebot.TeleBot = None
def __init__(self):
def __init__(self, token: str = None, chat_id: str = None):
"""
初始化参数
"""
# Token
self._telegram_token = settings.TELEGRAM_TOKEN
self._telegram_token = token
# Chat Id
self._telegram_chat_id = settings.TELEGRAM_CHAT_ID
self._telegram_chat_id = chat_id
# 初始化机器人
if self._telegram_token and self._telegram_chat_id:
# bot

View File

@@ -1,12 +1,10 @@
from typing import Optional, Union, Tuple, List, Dict
from typing import Optional, Union, Tuple, List
import transmission_rpc
from transmission_rpc import Client, Torrent, File
from transmission_rpc.session import SessionStats, Session
from app.core.config import settings
from app.log import logger
from app.utils.string import StringUtils
class Transmission:
@@ -28,12 +26,10 @@ class Transmission:
"""
若不设置参数,则创建配置文件设置的下载器
"""
if host and port:
self._host, self._port = host, port
else:
self._host, self._port = StringUtils.get_domain_address(address=settings.TR_HOST, prefix=False)
self._username = username if username else settings.TR_USER
self._password = password if password else settings.TR_PASSWORD
self._host = host
self._port = port
self._username = username
self._password = password
if self._host and self._port:
self.trc = self.__login_transmission()

View File

@@ -2,7 +2,6 @@ import re
import threading
from typing import Optional, List
from app.core.config import settings
from app.core.context import MediaInfo, Context
from app.core.metainfo import MetaInfo
from app.log import logger
@@ -23,18 +22,18 @@ class VoceChat:
# 请求对象
_client = None
def __init__(self):
def __init__(self, host: str = None, apikey: str = None, channel_id: str = None):
"""
初始化
"""
self._host = settings.VOCECHAT_HOST
self._host = host
if self._host:
if not self._host.endswith("/"):
self._host += "/"
if not self._host.startswith("http"):
self._playhost = "http://" + self._host
self._apikey = settings.VOCECHAT_API_KEY
self._channel_id = settings.VOCECHAT_CHANNEL_ID
self._apikey = apikey
self._channel_id = channel_id
if self._apikey and self._host and self._channel_id:
self._client = RequestUtils(headers={
"content-type": "text/markdown",

View File

@@ -4,7 +4,6 @@ import threading
from datetime import datetime
from typing import Optional, List, Dict
from app.core.config import settings
from app.core.context import MediaInfo, Context
from app.core.metainfo import MetaInfo
from app.log import logger
@@ -28,25 +27,34 @@ class WeChat:
_appsecret = None
# 企业微信AppID
_appid = None
# 代理
_proxy = None
# 企业微信发送消息URL
_send_msg_url = f"{settings.WECHAT_PROXY}/cgi-bin/message/send?access_token=%s"
_send_msg_url = "/cgi-bin/message/send?access_token=%s"
# 企业微信获取TokenURL
_token_url = f"{settings.WECHAT_PROXY}/cgi-bin/gettoken?corpid=%s&corpsecret=%s"
_token_url = "/cgi-bin/gettoken?corpid=%s&corpsecret=%s"
# 企业微信创新菜单URL
_create_menu_url = f"{settings.WECHAT_PROXY}/cgi-bin/menu/create?access_token=%s&agentid=%s"
_create_menu_url = "/cgi-bin/menu/create?access_token=%s&agentid=%s"
def __init__(self):
def __init__(self, corpid: str = None, appsecret: str = None, appid: str = None, proxy: str = None):
"""
初始化
"""
self._corpid = settings.WECHAT_CORPID
self._appsecret = settings.WECHAT_APP_SECRET
self._appid = settings.WECHAT_APP_ID
self._corpid = corpid
self._appsecret = appsecret
self._appid = appid
self._proxy = proxy or "https://qyapi.weixin.qq.com"
if self._corpid and self._appsecret and self._appid:
self.__get_access_token()
if self._proxy:
self._proxy = self._proxy.rstrip("/")
self._send_msg_url = f"{self._proxy}/{self._send_msg_url}"
self._token_url = f"{self._proxy}/{self._token_url}"
self._create_menu_url = f"{self._proxy}/{self._create_menu_url}"
def get_state(self):
"""
获取状态