mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-04 23:17:20 +08:00
refactor backend module architecture
This commit is contained in:
+16
-15
@@ -12,20 +12,21 @@ from fastapi.concurrency import run_in_threadpool
|
||||
from qbittorrentapi import TorrentFilesList
|
||||
from transmission_rpc import File
|
||||
|
||||
from app.core.cache import FileCache, AsyncFileCache, fresh, async_fresh
|
||||
from app.core.config import settings
|
||||
from app.core.context import Context, MediaInfo, MusicInfo, SubtitleInfo, TorrentInfo
|
||||
from app.core.event import Event, EventManager
|
||||
from app.core.meta import MetaBase, MetaMusic
|
||||
from app.core.module import ModuleManager
|
||||
from app.core.plugin import PluginManager
|
||||
from app.platform.cache import FileCache, AsyncFileCache, fresh, async_fresh
|
||||
from app.platform.config import settings
|
||||
from app.domain.context import Context, MediaInfo, MusicInfo, SubtitleInfo, TorrentInfo
|
||||
from app.platform.events import Event, EventManager
|
||||
from app.domain.meta.metabase import MetaBase
|
||||
from app.domain.meta.metamusic import MetaMusic
|
||||
from app.extensions.module_manager import ModuleManager
|
||||
from app.extensions.plugin_manager import PluginManager
|
||||
from app.db.message_oper import MessageOper
|
||||
from app.db.systemconfig_oper import SystemConfigOper
|
||||
from app.db.user_oper import UserOper
|
||||
from app.helper.message import MessageHelper, MessageQueueManager, MessageTemplateHelper
|
||||
from app.helper.server import MoviePilotServerHelper
|
||||
from app.helper.service import ServiceConfigHelper
|
||||
from app.log import logger
|
||||
from app.messaging.message import MessageHelper, MessageQueueManager, MessageTemplateHelper
|
||||
from app.integrations.server import MoviePilotServerHelper
|
||||
from app.extensions.service_registry import ServiceConfigHelper
|
||||
from app.platform.log import logger
|
||||
from app.schemas import (
|
||||
RateLimitExceededException,
|
||||
TransferInfo,
|
||||
@@ -40,8 +41,8 @@ from app.schemas import (
|
||||
TransferDirectoryConf,
|
||||
MessageResponse,
|
||||
)
|
||||
from app.utils.identity import normalize_internal_user_id
|
||||
from app.utils.media import resolve_media_identity
|
||||
from app.foundation.identity import normalize_internal_user_id
|
||||
from app.domain.media import resolve_media_identity
|
||||
from app.schemas.message import ChannelCapability, ChannelCapabilityManager
|
||||
from app.schemas.category import CategoryConfig
|
||||
from app.schemas.types import (
|
||||
@@ -55,7 +56,7 @@ from app.schemas.types import (
|
||||
MediaSource,
|
||||
SystemConfigKey,
|
||||
)
|
||||
from app.utils.object import ObjectUtils
|
||||
from app.foundation.object import ObjectUtils
|
||||
|
||||
|
||||
class ChainBase(metaclass=ABCMeta):
|
||||
@@ -2088,7 +2089,7 @@ class ChainBase(metaclass=ABCMeta):
|
||||
"""
|
||||
if channel == MessageChannel.WebAgent:
|
||||
try:
|
||||
from app.helper.agent import edit_web_agent_message
|
||||
from app.messaging.agent import edit_web_agent_message
|
||||
|
||||
return edit_web_agent_message(
|
||||
user_id=str((metadata or {}).get("userid") or ""),
|
||||
|
||||
@@ -2,7 +2,7 @@ from typing import Optional
|
||||
|
||||
from app import schemas
|
||||
from app.chain import ChainBase
|
||||
from app.core.context import MediaInfo
|
||||
from app.domain.context import MediaInfo
|
||||
|
||||
|
||||
class AniListChain(ChainBase):
|
||||
|
||||
@@ -2,7 +2,7 @@ from typing import Optional, List
|
||||
|
||||
from app import schemas
|
||||
from app.chain import ChainBase
|
||||
from app.core.context import MediaInfo
|
||||
from app.domain.context import MediaInfo
|
||||
|
||||
|
||||
class BangumiChain(ChainBase):
|
||||
|
||||
+2
-2
@@ -2,8 +2,8 @@ from typing import Any, List, Optional
|
||||
|
||||
from app import schemas
|
||||
from app.chain import ChainBase
|
||||
from app.core.context import MediaInfo, MusicAlbumInfo, MusicInfo
|
||||
from app.core.meta import MetaMusic
|
||||
from app.domain.context import MediaInfo, MusicAlbumInfo, MusicInfo
|
||||
from app.domain.meta.metamusic import MetaMusic
|
||||
from app.schemas import MediaType
|
||||
from app.schemas.types import MUSIC_ENTITY_ALBUM, MediaSource
|
||||
|
||||
|
||||
+15
-14
@@ -13,33 +13,34 @@ from app import schemas
|
||||
from app.chain import ChainBase
|
||||
from app.chain.media import MediaChain
|
||||
from app.chain.storage import StorageChain
|
||||
from app.core.cache import FileCache
|
||||
from app.core.config import settings, global_vars
|
||||
from app.core.context import (
|
||||
from app.platform.cache import FileCache
|
||||
from app.platform.config import settings, global_vars
|
||||
from app.domain.context import (
|
||||
Context,
|
||||
MediaInfo,
|
||||
MusicInfo,
|
||||
SubtitleInfo,
|
||||
TorrentInfo,
|
||||
)
|
||||
from app.core.event import eventmanager, Event
|
||||
from app.core.meta import MetaBase, MetaMusic
|
||||
from app.core.metainfo import MetaInfo
|
||||
from app.platform.events import eventmanager, Event
|
||||
from app.domain.meta.metabase import MetaBase
|
||||
from app.domain.meta.metamusic import MetaMusic
|
||||
from app.domain.metainfo import MetaInfo
|
||||
from app.db.downloadfailure_oper import DownloadFailureOper
|
||||
from app.db.downloadhistory_oper import DownloadHistoryOper
|
||||
from app.db.mediaserver_oper import MediaServerOper
|
||||
from app.helper.directory import DirectoryHelper, validate_download_save_path
|
||||
from app.helper.thread import ThreadHelper
|
||||
from app.helper.torrent import TorrentHelper
|
||||
from app.log import logger
|
||||
from app.services.directory import DirectoryHelper, validate_download_save_path
|
||||
from app.platform.thread import ThreadHelper
|
||||
from app.services.torrent import TorrentHelper
|
||||
from app.platform.log import logger
|
||||
from app.schemas import ExistMediaInfo, FileURI, NotExistMediaInfo, DownloaderTorrent, Notification, ResourceSelectionEventData, \
|
||||
ResourceDownloadEventData
|
||||
from app.schemas.types import MUSIC_ENTITY_ALBUM, MediaSource, MediaType, TorrentStatus, EventType, MessageChannel, NotificationType, ContentType, \
|
||||
ChainEventType
|
||||
from app.utils.http import RequestUtils
|
||||
from app.utils.media import build_media_key, resolve_media_identity
|
||||
from app.utils.string import StringUtils
|
||||
from app.utils.system import SystemUtils
|
||||
from app.foundation.http import RequestUtils
|
||||
from app.domain.media import build_media_key, resolve_media_identity
|
||||
from app.domain.string import StringUtils
|
||||
from app.infrastructure.system import SystemUtils
|
||||
|
||||
|
||||
DOWNLOAD_FAILURE_RESOURCE_TTL_SECONDS = 24 * 60 * 60
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
from typing import Any
|
||||
|
||||
from app.chain import ChainBase
|
||||
from app.core.context import MusicInfo
|
||||
from app.domain.context import MusicInfo
|
||||
from app.schemas.types import MUSIC_ENTITY_RECORDING, MediaSource
|
||||
|
||||
|
||||
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
from typing import Optional, Union
|
||||
|
||||
from app.chain import ChainBase
|
||||
from app.core.context import MusicInfo, MusicLyrics
|
||||
from app.core.meta import MetaMusic
|
||||
from app.domain.context import MusicInfo, MusicLyrics
|
||||
from app.domain.meta.metamusic import MetaMusic
|
||||
|
||||
|
||||
class LrclibChain(ChainBase):
|
||||
|
||||
+12
-11
@@ -12,20 +12,21 @@ from app.chain.acoustid import AcoustIdChain
|
||||
from app.chain.douban import DoubanChain
|
||||
from app.chain.musicbrainz import MusicBrainzChain, _MusicMetadataSourceChain
|
||||
from app.chain.theaudiodb import TheAudioDbChain
|
||||
from app.core.cache import async_fresh, fresh
|
||||
from app.core.config import settings
|
||||
from app.core.context import (
|
||||
from app.platform.cache import async_fresh, fresh
|
||||
from app.platform.config import settings
|
||||
from app.domain.context import (
|
||||
Context,
|
||||
MediaInfo,
|
||||
MusicAlbumInfo,
|
||||
MusicArtistInfo,
|
||||
MusicInfo,
|
||||
)
|
||||
from app.core.event import eventmanager, Event
|
||||
from app.core.meta import MetaBase, MetaMusic
|
||||
from app.core.metainfo import MetaInfo, MetaInfoPath
|
||||
from app.helper.audio import AudioMetadataHelper
|
||||
from app.log import logger
|
||||
from app.platform.events import eventmanager, Event
|
||||
from app.domain.meta.metabase import MetaBase
|
||||
from app.domain.meta.metamusic import MetaMusic
|
||||
from app.domain.metainfo import MetaInfo, MetaInfoPath
|
||||
from app.services.audio import AudioMetadataHelper
|
||||
from app.platform.log import logger
|
||||
from app.schemas import FileItem
|
||||
from app.schemas.types import (
|
||||
MUSIC_ENTITY_ALBUM,
|
||||
@@ -36,13 +37,13 @@ from app.schemas.types import (
|
||||
MediaSourceSelection,
|
||||
MediaType,
|
||||
)
|
||||
from app.utils.media import (
|
||||
from app.domain.media import (
|
||||
is_music_media_source,
|
||||
normalize_media_source,
|
||||
resolve_media_identity,
|
||||
)
|
||||
from app.utils.singleton import Singleton
|
||||
from app.utils.string import StringUtils
|
||||
from app.foundation.singleton import Singleton
|
||||
from app.domain.string import StringUtils
|
||||
|
||||
recognize_lock = Lock()
|
||||
|
||||
|
||||
@@ -3,13 +3,13 @@ from datetime import datetime
|
||||
from typing import Callable, Dict, List, Union, Optional, Generator, Any
|
||||
|
||||
from app.chain import ChainBase
|
||||
from app.core.config import global_vars
|
||||
from app.platform.config import global_vars
|
||||
from app.db.mediaserver_oper import MediaServerOper
|
||||
from app.helper.service import ServiceConfigHelper
|
||||
from app.log import logger
|
||||
from app.extensions.service_registry import ServiceConfigHelper
|
||||
from app.platform.log import logger
|
||||
from app.schemas import MediaServerLibrary, MediaServerItem, MediaServerSeasonInfo, MediaServerPlayItem
|
||||
from app.schemas.types import MediaType
|
||||
from app.utils.security import SecurityUtils
|
||||
from app.security.url import SecurityUtils
|
||||
|
||||
lock = threading.Lock()
|
||||
|
||||
|
||||
+11
-11
@@ -11,7 +11,7 @@ from pathlib import Path
|
||||
from typing import Any, Optional, Dict, Union, List, Tuple
|
||||
from urllib.parse import unquote, urlparse
|
||||
|
||||
from app.agent import ReplyMode, agent_manager
|
||||
from app.agent.orchestrator import ReplyMode, agent_manager
|
||||
from app.agent.llm import AgentCapabilityManager, LLMHelper
|
||||
from app.agent.prompt.transfer_redo import build_manual_redo_prompt
|
||||
from app.chain import ChainBase
|
||||
@@ -22,28 +22,28 @@ from app.chain.site import SiteChain, site_interaction_manager
|
||||
from app.chain.skills import SkillsChain, skills_interaction_manager
|
||||
from app.chain.subscribe import SubscribeChain, subscribe_interaction_manager
|
||||
from app.chain.transfer import TransferChain
|
||||
from app.core.config import settings, global_vars
|
||||
from app.core.context import MediaInfo, Context
|
||||
from app.core.meta import MetaBase
|
||||
from app.platform.config import settings, global_vars
|
||||
from app.domain.context import MediaInfo, Context
|
||||
from app.domain.meta.metabase import MetaBase
|
||||
from app.db.models import TransferHistory
|
||||
from app.db.transferhistory_oper import TransferHistoryOper
|
||||
from app.db.user_oper import UserOper
|
||||
from app.helper.directory import DirectoryHelper
|
||||
from app.helper.interaction import (
|
||||
from app.services.directory import DirectoryHelper
|
||||
from app.messaging.interaction import (
|
||||
agent_interaction_manager,
|
||||
media_interaction_manager,
|
||||
plugin_input_interaction_manager,
|
||||
PendingMediaInteraction,
|
||||
)
|
||||
from app.helper.torrent import TorrentHelper
|
||||
from app.log import logger
|
||||
from app.services.torrent import TorrentHelper
|
||||
from app.platform.log import logger
|
||||
from app.schemas import CommingMessage, DownloadDirectory, FileURI, NotExistMediaInfo, Notification
|
||||
from app.schemas.message import ChannelCapabilityManager, ChannelCapability
|
||||
from app.schemas.system import TransferDirectoryConf
|
||||
from app.schemas.types import EventType, MessageChannel, MediaType
|
||||
from app.utils.http import RequestUtils
|
||||
from app.utils.media import build_media_key, resolve_media_identity
|
||||
from app.utils.string import StringUtils
|
||||
from app.foundation.http import RequestUtils
|
||||
from app.domain.media import build_media_key, resolve_media_identity
|
||||
from app.domain.string import StringUtils
|
||||
|
||||
|
||||
class MessageChain(ChainBase):
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
from typing import Any, Optional
|
||||
|
||||
from app.chain import ChainBase
|
||||
from app.core.context import MusicAlbumInfo, MusicArtistInfo, MusicInfo
|
||||
from app.core.meta import MetaMusic
|
||||
from app.domain.context import MusicAlbumInfo, MusicArtistInfo, MusicInfo
|
||||
from app.domain.meta.metamusic import MetaMusic
|
||||
from app.schemas.types import MediaSource, MediaType
|
||||
|
||||
|
||||
|
||||
@@ -7,20 +7,20 @@ from app.chain.bangumi import BangumiChain
|
||||
from app.chain.douban import DoubanChain
|
||||
from app.chain.listenbrainz import ListenBrainzChain
|
||||
from app.chain.tmdb import TmdbChain
|
||||
from app.core.cache import cached, fresh
|
||||
from app.core.config import settings, global_vars
|
||||
from app.core.context import MusicInfo
|
||||
from app.helper.image import ImageHelper
|
||||
from app.log import logger
|
||||
from app.platform.cache import cached, fresh
|
||||
from app.platform.config import settings, global_vars
|
||||
from app.domain.context import MusicInfo
|
||||
from app.services.image import ImageHelper
|
||||
from app.platform.log import logger
|
||||
from app.schemas import MediaType
|
||||
from app.schemas.types import (
|
||||
MUSIC_ENTITY_ALBUM,
|
||||
MUSIC_ENTITY_RECORDING,
|
||||
MediaSource,
|
||||
)
|
||||
from app.utils.common import log_execution_time
|
||||
from app.utils.media import normalize_media_source
|
||||
from app.utils.singleton import Singleton
|
||||
from app.platform.execution import log_execution_time
|
||||
from app.domain.media import normalize_media_source
|
||||
from app.foundation.singleton import Singleton
|
||||
|
||||
|
||||
class RecommendChain(ChainBase, metaclass=Singleton):
|
||||
|
||||
+14
-13
@@ -13,21 +13,22 @@ from app import schemas
|
||||
from app.chain import ChainBase
|
||||
from app.chain.lrclib import LrclibChain
|
||||
from app.chain.storage import StorageChain
|
||||
from app.core.cache import async_fresh, cached, fresh
|
||||
from app.core.config import settings
|
||||
from app.core.context import (
|
||||
from app.platform.cache import async_fresh, cached, fresh
|
||||
from app.platform.config import settings
|
||||
from app.domain.context import (
|
||||
Context,
|
||||
MediaInfo,
|
||||
MusicAlbumInfo,
|
||||
MusicInfo,
|
||||
MusicLyrics,
|
||||
)
|
||||
from app.core.event import eventmanager, Event
|
||||
from app.core.meta import MetaBase, MetaMusic
|
||||
from app.core.metainfo import MetaInfo, MetaInfoPath
|
||||
from app.platform.events import eventmanager, Event
|
||||
from app.domain.meta.metabase import MetaBase
|
||||
from app.domain.meta.metamusic import MetaMusic
|
||||
from app.domain.metainfo import MetaInfo, MetaInfoPath
|
||||
from app.db.systemconfig_oper import SystemConfigOper
|
||||
from app.helper.audio import AudioMetadataHelper
|
||||
from app.log import logger
|
||||
from app.services.audio import AudioMetadataHelper
|
||||
from app.platform.log import logger
|
||||
from app.schemas import FileItem
|
||||
from app.schemas.types import (
|
||||
MUSIC_ENTITY_ALBUM,
|
||||
@@ -41,15 +42,15 @@ from app.schemas.types import (
|
||||
ScrapingPolicy,
|
||||
SystemConfigKey,
|
||||
)
|
||||
from app.utils.http import RequestUtils
|
||||
from app.utils.media import (
|
||||
from app.foundation.http import RequestUtils
|
||||
from app.domain.media import (
|
||||
is_music_media_source,
|
||||
normalize_media_source,
|
||||
resolve_media_identity,
|
||||
)
|
||||
from app.utils.mixins import ConfigReloadMixin
|
||||
from app.utils.singleton import Singleton
|
||||
from app.utils.string import StringUtils
|
||||
from app.platform.reload import ConfigReloadMixin
|
||||
from app.foundation.singleton import Singleton
|
||||
from app.domain.string import StringUtils
|
||||
|
||||
|
||||
from app.chain.media import MediaChain
|
||||
|
||||
+15
-15
@@ -14,18 +14,18 @@ from fastapi.concurrency import run_in_threadpool
|
||||
|
||||
from app.chain import ChainBase
|
||||
from app.chain.media import MediaChain
|
||||
from app.core.config import global_vars, settings
|
||||
from app.core.context import Context
|
||||
from app.core.context import MediaInfo, SubtitleInfo, TorrentInfo
|
||||
from app.core.event import eventmanager, Event
|
||||
from app.core.meta import MetaMusic
|
||||
from app.core.metainfo import MetaInfo
|
||||
from app.core.context import MusicInfo
|
||||
from app.platform.config import global_vars, settings
|
||||
from app.domain.context import Context
|
||||
from app.domain.context import MediaInfo, SubtitleInfo, TorrentInfo
|
||||
from app.platform.events import eventmanager, Event
|
||||
from app.domain.meta.metamusic import MetaMusic
|
||||
from app.domain.metainfo import MetaInfo
|
||||
from app.domain.context import MusicInfo
|
||||
from app.db.systemconfig_oper import SystemConfigOper
|
||||
from app.helper.progress import ProgressHelper
|
||||
from app.helper.sites import SitesHelper # noqa
|
||||
from app.helper.torrent import TorrentHelper
|
||||
from app.log import logger
|
||||
from app.platform.progress import ProgressHelper
|
||||
from app.infrastructure.sites import SitesHelper # noqa
|
||||
from app.services.torrent import TorrentHelper
|
||||
from app.platform.log import logger
|
||||
from app.schemas import NotExistMediaInfo
|
||||
from app.schemas.types import (
|
||||
MUSIC_ENTITY_ALBUM,
|
||||
@@ -35,13 +35,13 @@ from app.schemas.types import (
|
||||
ProgressKey,
|
||||
SystemConfigKey,
|
||||
)
|
||||
from app.utils.media import (
|
||||
from app.domain.media import (
|
||||
build_media_key,
|
||||
parse_media_key,
|
||||
resolve_media_identity,
|
||||
)
|
||||
from app.utils.string import StringUtils
|
||||
from app.utils.zhconv import convert as zhconv_convert
|
||||
from app.domain.string import StringUtils
|
||||
from app.foundation.zhconv import convert as zhconv_convert
|
||||
|
||||
|
||||
class SearchChain(ChainBase):
|
||||
@@ -513,7 +513,7 @@ class SearchChain(ChainBase):
|
||||
"""
|
||||
通过统一后台提示词机制执行资源推荐。
|
||||
"""
|
||||
from app.agent import ReplyMode, agent_manager
|
||||
from app.agent.orchestrator import ReplyMode, agent_manager
|
||||
from app.agent.prompt import prompt_manager
|
||||
|
||||
prompt = prompt_manager.render_system_task_message(
|
||||
|
||||
+13
-13
@@ -4,20 +4,20 @@ from datetime import datetime
|
||||
from typing import Callable, List, Optional, Tuple, Union, Dict
|
||||
from urllib.parse import urljoin
|
||||
|
||||
from app.helper.sites import SitesHelper # noqa
|
||||
from app.infrastructure.sites import SitesHelper # noqa
|
||||
from lxml import etree
|
||||
|
||||
from app.chain import ChainBase
|
||||
from app.core.config import global_vars, settings
|
||||
from app.core.event import Event, eventmanager
|
||||
from app.platform.config import global_vars, settings
|
||||
from app.platform.events import Event, eventmanager
|
||||
from app.db.models.site import Site
|
||||
from app.db.site_oper import SiteOper
|
||||
from app.db.systemconfig_oper import SystemConfigOper
|
||||
from app.helper.browser import PlaywrightHelper
|
||||
from app.helper.cloudflare import under_challenge
|
||||
from app.helper.cookie import CookieHelper
|
||||
from app.helper.cookiecloud import CookieCloudHelper
|
||||
from app.helper.interaction import (
|
||||
from app.infrastructure.browser import PlaywrightHelper
|
||||
from app.infrastructure.cloudflare import under_challenge
|
||||
from app.security.cookie import CookieHelper
|
||||
from app.integrations.cookiecloud import CookieCloudHelper
|
||||
from app.messaging.interaction import (
|
||||
SlashInteractionManager,
|
||||
build_navigation_buttons,
|
||||
format_markdown_table,
|
||||
@@ -26,13 +26,13 @@ from app.helper.interaction import (
|
||||
supports_markdown,
|
||||
update_or_post_message,
|
||||
)
|
||||
from app.helper.rss import RssHelper
|
||||
from app.log import logger
|
||||
from app.infrastructure.rss import RssHelper
|
||||
from app.platform.log import logger
|
||||
from app.schemas import MessageChannel, Notification, SiteUserData
|
||||
from app.schemas.types import EventType, NotificationType
|
||||
from app.utils.http import RequestUtils
|
||||
from app.utils.site import SiteUtils
|
||||
from app.utils.string import StringUtils
|
||||
from app.foundation.http import RequestUtils
|
||||
from app.domain.site import SiteUtils
|
||||
from app.domain.string import StringUtils
|
||||
|
||||
site_interaction_manager = SlashInteractionManager()
|
||||
|
||||
|
||||
+2
-2
@@ -2,13 +2,13 @@ import re
|
||||
from typing import List, Optional, Tuple, Union
|
||||
|
||||
from app.chain import ChainBase
|
||||
from app.helper.interaction import (
|
||||
from app.messaging.interaction import (
|
||||
build_navigation_buttons,
|
||||
page_items,
|
||||
supports_interaction_buttons,
|
||||
update_or_post_message, skills_interaction_manager, PendingSkillsInteraction,
|
||||
)
|
||||
from app.helper.skill import SkillHelper, SkillInfo
|
||||
from app.agent.skills.registry import SkillHelper, SkillInfo
|
||||
from app.schemas import Notification
|
||||
from app.schemas.types import MessageChannel
|
||||
|
||||
|
||||
@@ -3,9 +3,9 @@ from typing import Optional, Tuple, List, Dict
|
||||
|
||||
from app import schemas
|
||||
from app.chain import ChainBase
|
||||
from app.core.config import settings
|
||||
from app.helper.directory import DirectoryHelper
|
||||
from app.log import logger
|
||||
from app.platform.config import settings
|
||||
from app.services.directory import DirectoryHelper
|
||||
from app.platform.log import logger
|
||||
|
||||
|
||||
class StorageChain(ChainBase):
|
||||
|
||||
+13
-12
@@ -15,23 +15,24 @@ from app.chain.mediaserver import MediaServerChain
|
||||
from app.chain.search import SearchChain
|
||||
from app.chain.tmdb import TmdbChain
|
||||
from app.chain.torrents import TorrentsChain
|
||||
from app.core.config import settings, global_vars
|
||||
from app.core.context import (
|
||||
from app.platform.config import settings, global_vars
|
||||
from app.domain.context import (
|
||||
Context,
|
||||
MediaInfo,
|
||||
MusicInfo,
|
||||
TorrentInfo,
|
||||
)
|
||||
from app.core.event import eventmanager, Event
|
||||
from app.core.meta import MetaBase, MetaMusic
|
||||
from app.core.meta.words import WordsMatcher
|
||||
from app.core.metainfo import MetaInfo
|
||||
from app.platform.events import eventmanager, Event
|
||||
from app.domain.meta.metabase import MetaBase
|
||||
from app.domain.meta.metamusic import MetaMusic
|
||||
from app.domain.meta.words import WordsMatcher
|
||||
from app.domain.metainfo import MetaInfo
|
||||
from app.db.downloadhistory_oper import DownloadHistoryOper
|
||||
from app.db.models.subscribe import Subscribe
|
||||
from app.db.site_oper import SiteOper
|
||||
from app.db.subscribe_oper import SubscribeOper
|
||||
from app.db.systemconfig_oper import SystemConfigOper
|
||||
from app.helper.interaction import (
|
||||
from app.messaging.interaction import (
|
||||
SlashInteractionManager,
|
||||
build_navigation_buttons,
|
||||
format_markdown_table,
|
||||
@@ -40,15 +41,15 @@ from app.helper.interaction import (
|
||||
supports_markdown,
|
||||
update_or_post_message,
|
||||
)
|
||||
from app.helper.mediaserver import MediaServerHelper
|
||||
from app.helper.server import MoviePilotServerHelper
|
||||
from app.helper.torrent import TorrentHelper
|
||||
from app.log import logger
|
||||
from app.services.mediaserver import MediaServerHelper
|
||||
from app.integrations.server import MoviePilotServerHelper
|
||||
from app.services.torrent import TorrentHelper
|
||||
from app.platform.log import logger
|
||||
from app.schemas import (SubscribeEpisodesRefreshEventData,
|
||||
SubscribeCompletionCheckEventData)
|
||||
from app.schemas.types import MUSIC_ENTITY_ALBUM, MUSIC_ENTITY_RECORDING, MediaSource, MediaType, SystemConfigKey, MessageChannel, NotificationType, EventType, ChainEventType, \
|
||||
ContentType
|
||||
from app.utils.media import (
|
||||
from app.domain.media import (
|
||||
MUSIC_SUBSCRIBABLE_TYPES,
|
||||
build_media_key,
|
||||
normalize_media_source,
|
||||
|
||||
+6
-6
@@ -5,13 +5,13 @@ from pathlib import Path
|
||||
from typing import Union, Optional
|
||||
|
||||
from app.chain import ChainBase
|
||||
from app.core.config import settings
|
||||
from app.core.plugin import PluginManager
|
||||
from app.helper.system import SystemHelper
|
||||
from app.log import logger
|
||||
from app.platform.config import settings
|
||||
from app.extensions.plugin_manager import PluginManager
|
||||
from app.platform.runtime import SystemHelper
|
||||
from app.platform.log import logger
|
||||
from app.schemas import Notification, MessageChannel
|
||||
from app.utils.http import RequestUtils
|
||||
from app.utils.system import SystemUtils
|
||||
from app.foundation.http import RequestUtils
|
||||
from app.infrastructure.system import SystemUtils
|
||||
from version import FRONTEND_VERSION, APP_VERSION
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@ from typing import Optional, List
|
||||
|
||||
from app import schemas
|
||||
from app.chain import ChainBase
|
||||
from app.core.context import MediaInfo
|
||||
from app.domain.context import MediaInfo
|
||||
from app.schemas import MediaType
|
||||
|
||||
|
||||
|
||||
+11
-11
@@ -3,24 +3,24 @@ import re
|
||||
import traceback
|
||||
from typing import Callable, Dict, List, Union, Optional
|
||||
|
||||
from app.helper.sites import SitesHelper # noqa
|
||||
from app.infrastructure.sites import SitesHelper # noqa
|
||||
|
||||
from app.chain import ChainBase
|
||||
from app.chain.media import MediaChain
|
||||
from app.core.config import settings, global_vars
|
||||
from app.core.context import TorrentInfo, Context, MediaInfo
|
||||
from app.core.context import MusicInfo
|
||||
from app.core.meta import MetaMusic
|
||||
from app.core.metainfo import MetaInfo
|
||||
from app.platform.config import settings, global_vars
|
||||
from app.domain.context import TorrentInfo, Context, MediaInfo
|
||||
from app.domain.context import MusicInfo
|
||||
from app.domain.meta.metamusic import MetaMusic
|
||||
from app.domain.metainfo import MetaInfo
|
||||
from app.db.site_oper import SiteOper
|
||||
from app.db.systemconfig_oper import SystemConfigOper
|
||||
from app.helper.rss import RssHelper
|
||||
from app.helper.torrent import TorrentHelper
|
||||
from app.log import logger
|
||||
from app.infrastructure.rss import RssHelper
|
||||
from app.services.torrent import TorrentHelper
|
||||
from app.platform.log import logger
|
||||
from app.schemas import Notification
|
||||
from app.schemas.types import SystemConfigKey, MessageChannel, NotificationType, MediaType
|
||||
from app.utils.media import resolve_media_identity
|
||||
from app.utils.string import StringUtils
|
||||
from app.domain.media import resolve_media_identity
|
||||
from app.domain.string import StringUtils
|
||||
|
||||
|
||||
class TorrentsChain(ChainBase):
|
||||
|
||||
+19
-18
@@ -10,31 +10,32 @@ from time import monotonic
|
||||
from typing import List, Optional, Tuple, Union, Dict, Callable, Any
|
||||
|
||||
from app import schemas
|
||||
from app.agent import ReplyMode, prompt_manager, agent_manager
|
||||
from app.agent.orchestrator import ReplyMode, agent_manager, prompt_manager
|
||||
from app.chain import ChainBase
|
||||
from app.chain.media import MediaChain
|
||||
from app.chain.storage import StorageChain
|
||||
from app.chain.subscribe import SubscribeChain
|
||||
from app.chain.tmdb import TmdbChain
|
||||
from app.core.config import settings, global_vars
|
||||
from app.core.context import MediaInfo, MusicInfo
|
||||
from app.core.event import eventmanager
|
||||
from app.core.meta import MetaBase, MetaMusic
|
||||
from app.core.metainfo import MetaInfoPath
|
||||
from app.platform.config import settings, global_vars
|
||||
from app.domain.context import MediaInfo, MusicInfo
|
||||
from app.platform.events import eventmanager
|
||||
from app.domain.meta.metabase import MetaBase
|
||||
from app.domain.meta.metamusic import MetaMusic
|
||||
from app.domain.metainfo import MetaInfoPath
|
||||
from app.db.downloadhistory_oper import DownloadHistoryOper
|
||||
from app.db.models.downloadhistory import DownloadHistory, DownloadFiles
|
||||
from app.db.models.transferhistory import TransferHistory
|
||||
from app.db.systemconfig_oper import SystemConfigOper
|
||||
from app.db.transferpending_oper import TransferPendingOper
|
||||
from app.db.transferhistory_oper import TransferHistoryOper
|
||||
from app.helper.directory import DirectoryHelper
|
||||
from app.helper.audio import AudioMetadataHelper
|
||||
from app.helper.format import EpisodeFormatRuleHelper, FormatParser
|
||||
from app.helper.progress import ProgressHelper
|
||||
from app.helper.transferhistory import (clear_transfer_failures, describe_history_gate,
|
||||
from app.services.directory import DirectoryHelper
|
||||
from app.services.audio import AudioMetadataHelper
|
||||
from app.services.formatting import EpisodeFormatRuleHelper, FormatParser
|
||||
from app.platform.progress import ProgressHelper
|
||||
from app.services.history import (clear_transfer_failures, describe_history_gate,
|
||||
evaluate_history_gate, is_skip_action,
|
||||
record_transfer_failure, resolve_history)
|
||||
from app.log import logger
|
||||
from app.platform.log import logger
|
||||
from app.schemas import StorageOperSelectionEventData
|
||||
from app.schemas import (
|
||||
TransferInfo,
|
||||
@@ -63,15 +64,15 @@ from app.schemas.types import (
|
||||
MUSIC_ENTITY_RECORDING,
|
||||
MediaSource,
|
||||
)
|
||||
from app.utils.mixins import ConfigReloadMixin
|
||||
from app.utils.media import (
|
||||
from app.platform.reload import ConfigReloadMixin
|
||||
from app.domain.media import (
|
||||
normalize_media_source,
|
||||
normalize_music_type,
|
||||
resolve_media_identity,
|
||||
)
|
||||
from app.utils.singleton import Singleton
|
||||
from app.utils.string import StringUtils
|
||||
from app.utils.system import SystemUtils
|
||||
from app.foundation.singleton import Singleton
|
||||
from app.domain.string import StringUtils
|
||||
from app.infrastructure.system import SystemUtils
|
||||
|
||||
# 下载器锁
|
||||
downloader_lock = threading.Lock()
|
||||
@@ -4001,7 +4002,7 @@ class TransferChain(ChainBase, ConfigReloadMixin, metaclass=Singleton):
|
||||
raise OperationInterrupted()
|
||||
file_path = Path(file_item.path)
|
||||
|
||||
# 自动整理按 app/helper/transferhistory.py 的统一判定去重(失败记录放行重试、
|
||||
# 自动整理按 app/services/history.py 的统一判定去重(失败记录放行重试、
|
||||
# 成功但源文件已变化放行交 overwrite_mode 决断);手动整理可清理失败记录,
|
||||
# 或按用户确认清理成功记录。
|
||||
if (not force or reorganize) and not preview:
|
||||
|
||||
+4
-4
@@ -3,14 +3,14 @@ from dataclasses import dataclass
|
||||
from typing import Literal, Optional, Tuple, Union
|
||||
|
||||
from app.chain import ChainBase
|
||||
from app.core.config import settings
|
||||
from app.core.security import get_password_hash, verify_password
|
||||
from app.platform.config import settings
|
||||
from app.security.access import get_password_hash, verify_password
|
||||
from app.db.models.user import User
|
||||
from app.db.user_oper import UserOper
|
||||
from app.log import logger
|
||||
from app.platform.log import logger
|
||||
from app.schemas import AuthCredentials, AuthInterceptCredentials
|
||||
from app.schemas.types import ChainEventType
|
||||
from app.utils.otp import OtpUtils
|
||||
from app.security.otp import OtpUtils
|
||||
|
||||
PASSWORD_INVALID_CREDENTIALS_MESSAGE = "用户名、密码或验证码错误"
|
||||
|
||||
|
||||
@@ -13,11 +13,11 @@ from typing import Any, Callable, List, Optional, Tuple
|
||||
from pydantic import BaseModel
|
||||
|
||||
from app.chain import ChainBase
|
||||
from app.core.config import global_vars
|
||||
from app.core.event import Event, eventmanager
|
||||
from app.platform.config import global_vars
|
||||
from app.platform.events import Event, eventmanager
|
||||
from app.db.models import Workflow
|
||||
from app.db.workflow_oper import WorkflowOper
|
||||
from app.log import logger
|
||||
from app.platform.log import logger
|
||||
from app.schemas import ActionContext, ActionFlow, Action, ActionExecution, ActionResult
|
||||
from app.schemas.types import EventType
|
||||
from app.workflow import WorkFlowManager
|
||||
|
||||
Reference in New Issue
Block a user