mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-04-27 20:22:47 +08:00
fix downloaders && mediaservers && notifications
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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):
|
||||
"""
|
||||
获取状态
|
||||
|
||||
Reference in New Issue
Block a user