diff --git a/app/__init__.py b/app/__init__.py index 739e48a..b8505ac 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -1,7 +1,7 @@ import os import sys -from .installation_manager import InstallationManager +from .initialization.installation_manager import InstallationManager execute_dir = os.path.split(os.path.realpath(sys.argv[0]))[0] diff --git a/app/app_manager.py b/app/app_manager.py index 21afd86..5dae040 100644 --- a/app/app_manager.py +++ b/app/app_manager.py @@ -3,14 +3,15 @@ import time import flet as ft -from . import InstallationManager, execute_dir -from .core.config_manager import ConfigManager -from .core.language_manager import LanguageManager -from .core.record_manager import RecordingManager -from .core.update_checker import UpdateChecker -from .process_manager import AsyncProcessManager -from .ui.components.recording_card import RecordingCardManager -from .ui.components.show_snackbar import ShowSnackBar +from . import execute_dir +from .core.config.config_manager import ConfigManager +from .core.config.language_manager import LanguageManager +from .core.recording.record_manager import RecordingManager +from .core.runtime.process_manager import AsyncProcessManager +from .core.update.update_checker import UpdateChecker +from .initialization.installation_manager import InstallationManager +from .ui.components.business.recording_card import RecordingCardManager +from .ui.components.common.show_snackbar import ShowSnackBar from .ui.navigation.sidebar import LeftNavigationMenu, NavigationSidebar from .ui.views.about_view import AboutPage from .ui.views.home_view import HomePage diff --git a/app/core/__init__.py b/app/core/__init__.py index 8ad561d..297081a 100644 --- a/app/core/__init__.py +++ b/app/core/__init__.py @@ -1,3 +1,3 @@ -from .platform_handlers import get_platform_handler +from .platforms.platform_handlers import get_platform_handler __all__ = ["get_platform_handler"] diff --git a/app/core/config/__init__.py b/app/core/config/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/core/config_manager.py b/app/core/config/config_manager.py similarity index 99% rename from app/core/config_manager.py rename to app/core/config/config_manager.py index 387352c..cf62360 100644 --- a/app/core/config_manager.py +++ b/app/core/config/config_manager.py @@ -5,7 +5,7 @@ from typing import Any import aiofiles -from ..utils.logger import logger +from ...utils.logger import logger class ConfigManager: diff --git a/app/core/language_manager.py b/app/core/config/language_manager.py similarity index 97% rename from app/core/language_manager.py rename to app/core/config/language_manager.py index c9a636b..9890a32 100644 --- a/app/core/language_manager.py +++ b/app/core/config/language_manager.py @@ -1,6 +1,6 @@ import os -from ..utils.logger import logger +from ...utils.logger import logger from .config_manager import ConfigManager diff --git a/app/core/media/__init__.py b/app/core/media/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/core/direct_downloader.py b/app/core/media/direct_downloader.py similarity index 98% rename from app/core/direct_downloader.py rename to app/core/media/direct_downloader.py index 27488ec..7c96b9a 100644 --- a/app/core/direct_downloader.py +++ b/app/core/media/direct_downloader.py @@ -5,7 +5,7 @@ from typing import Optional import httpx -from ..utils.logger import logger +from ...utils.logger import logger class DirectStreamDownloader: diff --git a/app/core/ffmpeg_builders/__init__.py b/app/core/media/ffmpeg_builders/__init__.py similarity index 100% rename from app/core/ffmpeg_builders/__init__.py rename to app/core/media/ffmpeg_builders/__init__.py diff --git a/app/core/ffmpeg_builders/audio/__init__.py b/app/core/media/ffmpeg_builders/audio/__init__.py similarity index 100% rename from app/core/ffmpeg_builders/audio/__init__.py rename to app/core/media/ffmpeg_builders/audio/__init__.py diff --git a/app/core/ffmpeg_builders/audio/aac.py b/app/core/media/ffmpeg_builders/audio/aac.py similarity index 100% rename from app/core/ffmpeg_builders/audio/aac.py rename to app/core/media/ffmpeg_builders/audio/aac.py diff --git a/app/core/ffmpeg_builders/audio/m4a.py b/app/core/media/ffmpeg_builders/audio/m4a.py similarity index 100% rename from app/core/ffmpeg_builders/audio/m4a.py rename to app/core/media/ffmpeg_builders/audio/m4a.py diff --git a/app/core/ffmpeg_builders/audio/mp3.py b/app/core/media/ffmpeg_builders/audio/mp3.py similarity index 100% rename from app/core/ffmpeg_builders/audio/mp3.py rename to app/core/media/ffmpeg_builders/audio/mp3.py diff --git a/app/core/ffmpeg_builders/audio/wav.py b/app/core/media/ffmpeg_builders/audio/wav.py similarity index 100% rename from app/core/ffmpeg_builders/audio/wav.py rename to app/core/media/ffmpeg_builders/audio/wav.py diff --git a/app/core/ffmpeg_builders/audio/wma.py b/app/core/media/ffmpeg_builders/audio/wma.py similarity index 100% rename from app/core/ffmpeg_builders/audio/wma.py rename to app/core/media/ffmpeg_builders/audio/wma.py diff --git a/app/core/ffmpeg_builders/base.py b/app/core/media/ffmpeg_builders/base.py similarity index 100% rename from app/core/ffmpeg_builders/base.py rename to app/core/media/ffmpeg_builders/base.py diff --git a/app/core/ffmpeg_builders/video/__init__.py b/app/core/media/ffmpeg_builders/video/__init__.py similarity index 100% rename from app/core/ffmpeg_builders/video/__init__.py rename to app/core/media/ffmpeg_builders/video/__init__.py diff --git a/app/core/ffmpeg_builders/video/flv.py b/app/core/media/ffmpeg_builders/video/flv.py similarity index 100% rename from app/core/ffmpeg_builders/video/flv.py rename to app/core/media/ffmpeg_builders/video/flv.py diff --git a/app/core/ffmpeg_builders/video/mkv.py b/app/core/media/ffmpeg_builders/video/mkv.py similarity index 100% rename from app/core/ffmpeg_builders/video/mkv.py rename to app/core/media/ffmpeg_builders/video/mkv.py diff --git a/app/core/ffmpeg_builders/video/mov.py b/app/core/media/ffmpeg_builders/video/mov.py similarity index 100% rename from app/core/ffmpeg_builders/video/mov.py rename to app/core/media/ffmpeg_builders/video/mov.py diff --git a/app/core/ffmpeg_builders/video/mp4.py b/app/core/media/ffmpeg_builders/video/mp4.py similarity index 100% rename from app/core/ffmpeg_builders/video/mp4.py rename to app/core/media/ffmpeg_builders/video/mp4.py diff --git a/app/core/ffmpeg_builders/video/ts.py b/app/core/media/ffmpeg_builders/video/ts.py similarity index 100% rename from app/core/ffmpeg_builders/video/ts.py rename to app/core/media/ffmpeg_builders/video/ts.py diff --git a/app/core/platforms/__init__.py b/app/core/platforms/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/core/platform_handlers/__init__.py b/app/core/platforms/platform_handlers/__init__.py similarity index 99% rename from app/core/platform_handlers/__init__.py rename to app/core/platforms/platform_handlers/__init__.py index 6f1f211..6c0851a 100644 --- a/app/core/platform_handlers/__init__.py +++ b/app/core/platforms/platform_handlers/__init__.py @@ -1,4 +1,4 @@ -from ...utils.logger import logger +from ....utils.logger import logger from .base import PlatformHandler, StreamData from .handlers import ( AcfunHandler, diff --git a/app/core/platform_handlers/base.py b/app/core/platforms/platform_handlers/base.py similarity index 100% rename from app/core/platform_handlers/base.py rename to app/core/platforms/platform_handlers/base.py diff --git a/app/core/platform_handlers/handlers.py b/app/core/platforms/platform_handlers/handlers.py similarity index 99% rename from app/core/platform_handlers/handlers.py rename to app/core/platforms/platform_handlers/handlers.py index e1ce641..f385852 100644 --- a/app/core/platform_handlers/handlers.py +++ b/app/core/platforms/platform_handlers/handlers.py @@ -1,6 +1,6 @@ import streamget -from ...utils.utils import trace_error_decorator +from ....utils.utils import trace_error_decorator from .base import PlatformHandler, StreamData diff --git a/app/core/recording/__init__.py b/app/core/recording/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/core/record_manager.py b/app/core/recording/record_manager.py similarity index 98% rename from app/core/record_manager.py rename to app/core/recording/record_manager.py index 029d7a7..a9c0bd3 100644 --- a/app/core/record_manager.py +++ b/app/core/recording/record_manager.py @@ -3,12 +3,12 @@ import threading from collections import defaultdict from datetime import datetime, timedelta -from ..messages.message_pusher import MessagePusher -from ..models.recording_model import Recording -from ..models.recording_status_model import RecordingStatus -from ..utils import utils -from ..utils.logger import logger -from .platform_handlers import get_platform_info +from ...messages.message_pusher import MessagePusher +from ...models.recording.recording_model import Recording +from ...models.recording.recording_status_model import RecordingStatus +from ...utils import utils +from ...utils.logger import logger +from ..platforms.platform_handlers import get_platform_info from .stream_manager import LiveStreamRecorder diff --git a/app/core/stream_manager.py b/app/core/recording/stream_manager.py similarity index 98% rename from app/core/stream_manager.py rename to app/core/recording/stream_manager.py index 392b34e..7d1e79b 100644 --- a/app/core/stream_manager.py +++ b/app/core/recording/stream_manager.py @@ -6,15 +6,16 @@ import time from datetime import datetime from typing import Any -from ..messages.message_pusher import MessagePusher -from ..models.recording_status_model import RecordingStatus -from ..models.video_quality_model import VideoQuality -from ..process_manager import BackgroundService -from ..utils import utils -from ..utils.logger import logger -from . import ffmpeg_builders, platform_handlers -from .direct_downloader import DirectStreamDownloader -from .platform_handlers import StreamData +from ...messages.message_pusher import MessagePusher +from ...models.media.video_quality_model import VideoQuality +from ...models.recording.recording_status_model import RecordingStatus +from ...utils import utils +from ...utils.logger import logger +from ..media import ffmpeg_builders +from ..media.direct_downloader import DirectStreamDownloader +from ..platforms import platform_handlers +from ..platforms.platform_handlers import StreamData +from ..runtime.process_manager import BackgroundService class LiveStreamRecorder: @@ -523,7 +524,7 @@ class LiveStreamRecorder: split_video_by_time: bool, converts_to_mp4: bool ): - from ..process_manager import BackgroundService + from ..runtime.process_manager import BackgroundService if "python" in script_command: params = [ diff --git a/app/core/runtime/__init__.py b/app/core/runtime/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/process_manager.py b/app/core/runtime/process_manager.py similarity index 98% rename from app/process_manager.py rename to app/core/runtime/process_manager.py index 4b97dc7..118ab11 100644 --- a/app/process_manager.py +++ b/app/core/runtime/process_manager.py @@ -2,7 +2,7 @@ import asyncio import os import threading -from .utils.logger import logger +from ...utils.logger import logger class BackgroundService: diff --git a/app/core/update/__init__.py b/app/core/update/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/core/update_checker.py b/app/core/update/update_checker.py similarity index 99% rename from app/core/update_checker.py rename to app/core/update/update_checker.py index 3cc638a..41c03de 100644 --- a/app/core/update_checker.py +++ b/app/core/update/update_checker.py @@ -6,7 +6,7 @@ from typing import Any import flet as ft import httpx -from ..utils.logger import logger +from ...utils.logger import logger class UpdateChecker: diff --git a/app/initialization/__init__.py b/app/initialization/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/installation_manager.py b/app/initialization/installation_manager.py similarity index 96% rename from app/installation_manager.py rename to app/initialization/installation_manager.py index 5dbcd9e..c6aca46 100644 --- a/app/installation_manager.py +++ b/app/initialization/installation_manager.py @@ -1,8 +1,8 @@ import flet as ft -from .scripts.ffmpeg_install import check_ffmpeg_installed, install_ffmpeg -from .scripts.node_install import check_nodejs_installed, install_nodejs -from .utils.logger import logger +from ..scripts.ffmpeg_install import check_ffmpeg_installed, install_ffmpeg +from ..scripts.node_install import check_nodejs_installed, install_nodejs +from ..utils.logger import logger class InstallationManager: @@ -183,7 +183,7 @@ class InstallationManager: logger.info(f"Missing components: {[i['name'] for i in self.components_to_install]}") self.page.run_task(self.show_install_dialog) else: - from .scripts import ffmpeg_install, node_install + from ..scripts import ffmpeg_install, node_install ffmpeg_install.update_env_path() node_install.update_env_path() \ No newline at end of file diff --git a/app/messages/message_pusher.py b/app/messages/message_pusher.py index 449e63f..2608019 100644 --- a/app/messages/message_pusher.py +++ b/app/messages/message_pusher.py @@ -1,7 +1,7 @@ from asyncio import create_task from typing import Optional -from ..models.recording_model import Recording +from ..models.recording.recording_model import Recording from ..ui.views.settings_view import SettingsPage from ..utils.logger import logger from .notification_service import NotificationService diff --git a/app/models/media/__init__.py b/app/models/media/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/models/audio_format_model.py b/app/models/media/audio_format_model.py similarity index 100% rename from app/models/audio_format_model.py rename to app/models/media/audio_format_model.py diff --git a/app/models/video_format_model.py b/app/models/media/video_format_model.py similarity index 100% rename from app/models/video_format_model.py rename to app/models/media/video_format_model.py diff --git a/app/models/video_quality_model.py b/app/models/media/video_quality_model.py similarity index 100% rename from app/models/video_quality_model.py rename to app/models/media/video_quality_model.py diff --git a/app/models/recording/__init__.py b/app/models/recording/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/models/recording_model.py b/app/models/recording/recording_model.py similarity index 100% rename from app/models/recording_model.py rename to app/models/recording/recording_model.py diff --git a/app/models/recording_status_model.py b/app/models/recording/recording_status_model.py similarity index 100% rename from app/models/recording_status_model.py rename to app/models/recording/recording_status_model.py diff --git a/app/ui/components/business/__init__.py b/app/ui/components/business/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/ui/components/recording_card.py b/app/ui/components/business/recording_card.py similarity index 98% rename from app/ui/components/recording_card.py rename to app/ui/components/business/recording_card.py index 280346c..e0a1b0e 100644 --- a/app/ui/components/recording_card.py +++ b/app/ui/components/business/recording_card.py @@ -3,13 +3,13 @@ import os.path import flet as ft -from ...models.recording_model import Recording -from ...models.recording_status_model import RecordingStatus -from ...utils import utils -from ...utils.logger import logger -from ..views.storage_view import StoragePage -from .card_dialog import CardDialog -from .recording_card_state import RecordingCardState +from ....models.recording.recording_model import Recording +from ....models.recording.recording_status_model import RecordingStatus +from ....utils import utils +from ....utils.logger import logger +from ...views.storage_view import StoragePage +from ..dialogs.card_dialog import CardDialog +from ..state.recording_card_state import RecordingCardState from .recording_dialog import RecordingDialog from .video_player import VideoPlayer diff --git a/app/ui/components/recording_dialog.py b/app/ui/components/business/recording_dialog.py similarity index 98% rename from app/ui/components/recording_dialog.py rename to app/ui/components/business/recording_dialog.py index 120672f..8948388 100644 --- a/app/ui/components/recording_dialog.py +++ b/app/ui/components/business/recording_dialog.py @@ -1,11 +1,11 @@ import flet as ft -from ...core.platform_handlers import get_platform_info -from ...models.audio_format_model import AudioFormat -from ...models.video_format_model import VideoFormat -from ...models.video_quality_model import VideoQuality -from ...utils import utils -from ...utils.logger import logger +from ....core.platforms.platform_handlers import get_platform_info +from ....models.media.audio_format_model import AudioFormat +from ....models.media.video_format_model import VideoFormat +from ....models.media.video_quality_model import VideoQuality +from ....utils import utils +from ....utils.logger import logger class RecordingDialog: diff --git a/app/ui/components/video_player.py b/app/ui/components/business/video_player.py similarity index 98% rename from app/ui/components/video_player.py rename to app/ui/components/business/video_player.py index f9d6248..e068379 100644 --- a/app/ui/components/video_player.py +++ b/app/ui/components/business/video_player.py @@ -4,8 +4,8 @@ from urllib.parse import parse_qs, urlparse import flet as ft -from ...utils import utils -from ...utils.logger import logger +from ....utils import utils +from ....utils.logger import logger class VideoPlayer: @@ -142,4 +142,4 @@ class VideoPlayer: return else: title = self._["view_stream_source_now"] - await self.create_video_dialog(title, source, is_file_path, room_url) + await self.create_video_dialog(title, source, is_file_path, room_url) \ No newline at end of file diff --git a/app/ui/components/common/__init__.py b/app/ui/components/common/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/ui/components/save_progress_overlay.py b/app/ui/components/common/save_progress_overlay.py similarity index 99% rename from app/ui/components/save_progress_overlay.py rename to app/ui/components/common/save_progress_overlay.py index 4491a19..e9a6681 100644 --- a/app/ui/components/save_progress_overlay.py +++ b/app/ui/components/common/save_progress_overlay.py @@ -197,4 +197,4 @@ class SaveProgressOverlay: @property def visible(self): - return self.overlay.visible + return self.overlay.visible \ No newline at end of file diff --git a/app/ui/components/show_snackbar.py b/app/ui/components/common/show_snackbar.py similarity index 98% rename from app/ui/components/show_snackbar.py rename to app/ui/components/common/show_snackbar.py index cbb7019..ff73890 100644 --- a/app/ui/components/show_snackbar.py +++ b/app/ui/components/common/show_snackbar.py @@ -52,4 +52,4 @@ class ShowSnackBar: snack_bar.open = True self.app.snack_bar_area.content = snack_bar - self.app.page.update() + self.app.page.update() \ No newline at end of file diff --git a/app/ui/components/dialogs/__init__.py b/app/ui/components/dialogs/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/ui/components/card_dialog.py b/app/ui/components/dialogs/card_dialog.py similarity index 98% rename from app/ui/components/card_dialog.py rename to app/ui/components/dialogs/card_dialog.py index db1f25e..46a64f9 100644 --- a/app/ui/components/card_dialog.py +++ b/app/ui/components/dialogs/card_dialog.py @@ -1,5 +1,7 @@ import flet as ft +from ....messages.message_pusher import MessagePusher + class CardDialog(ft.AlertDialog): def __init__(self, app, recording): @@ -37,7 +39,6 @@ class CardDialog(ft.AlertDialog): scheduled_time_range = recording.scheduled_time_range or self._["none"] save_path = recording.recording_dir or self._["no_recording_dir_tip"] recording_status_info = self._[recording.status_info] - from ...messages.message_pusher import MessagePusher should_push_message = MessagePusher.should_push_message(self.app.settings, recording) message_push = self._["enabled"] if should_push_message else self._["disabled"] only_notify_no_record = self._["enabled"] if recording.only_notify_no_record else self._["disabled"] diff --git a/app/ui/components/help_dialog.py b/app/ui/components/dialogs/help_dialog.py similarity index 98% rename from app/ui/components/help_dialog.py rename to app/ui/components/dialogs/help_dialog.py index c7efa29..a0ae856 100644 --- a/app/ui/components/help_dialog.py +++ b/app/ui/components/dialogs/help_dialog.py @@ -39,4 +39,4 @@ class HelpDialog(ft.AlertDialog): def close_panel(self, _): self.open = False - self.update() + self.update() \ No newline at end of file diff --git a/app/ui/components/search_dialog.py b/app/ui/components/dialogs/search_dialog.py similarity index 98% rename from app/ui/components/search_dialog.py rename to app/ui/components/dialogs/search_dialog.py index 806e24c..27eaa7e 100644 --- a/app/ui/components/search_dialog.py +++ b/app/ui/components/dialogs/search_dialog.py @@ -78,4 +78,4 @@ class SearchDialog(ft.AlertDialog): async def submit_query(self, e): query = self.query.value.strip() await self.recordings_page.filter_recordings(query) - await self.close_dlg(e) + await self.close_dlg(e) \ No newline at end of file diff --git a/app/ui/components/state/__init__.py b/app/ui/components/state/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/ui/components/recording_card_state.py b/app/ui/components/state/recording_card_state.py similarity index 95% rename from app/ui/components/recording_card_state.py rename to app/ui/components/state/recording_card_state.py index a833d0f..82e84cf 100644 --- a/app/ui/components/recording_card_state.py +++ b/app/ui/components/state/recording_card_state.py @@ -1,7 +1,7 @@ import flet as ft -from ...models.recording_model import Recording -from ...models.recording_status_model import CardStateType, RecordingStatus +from ....models.recording.recording_model import Recording +from ....models.recording.recording_status_model import CardStateType, RecordingStatus class RecordingCardState: @@ -87,4 +87,4 @@ class RecordingCardState: @staticmethod def get_monitor_icon(recording: Recording) -> ft.Icons: - return ft.Icons.VISIBILITY if recording.monitor_status else ft.Icons.VISIBILITY_OFF \ No newline at end of file + return ft.Icons.VISIBILITY if recording.monitor_status else ft.Icons.VISIBILITY_OFF diff --git a/app/ui/filters/recording_filters.py b/app/ui/filters/recording_filters.py index 4493a55..9f7f453 100644 --- a/app/ui/filters/recording_filters.py +++ b/app/ui/filters/recording_filters.py @@ -1,5 +1,5 @@ -from ...models.recording_status_model import RecordingStatus -from ..components.recording_card_state import RecordingCardState +from ...models.recording.recording_status_model import RecordingStatus +from ..components.state.recording_card_state import RecordingCardState class RecordingFilters: diff --git a/app/ui/views/about_view.py b/app/ui/views/about_view.py index 7a9e249..3b7ce91 100644 --- a/app/ui/views/about_view.py +++ b/app/ui/views/about_view.py @@ -1,7 +1,7 @@ import flet as ft from ..base_page import PageBase -from ..components.help_dialog import HelpDialog +from ..components.dialogs.help_dialog import HelpDialog class AboutPage(PageBase): diff --git a/app/ui/views/recordings_view.py b/app/ui/views/recordings_view.py index 8910a76..4527dc2 100644 --- a/app/ui/views/recordings_view.py +++ b/app/ui/views/recordings_view.py @@ -3,13 +3,13 @@ import uuid import flet as ft -from ...core.platform_handlers import get_platform_info -from ...models.recording_model import Recording +from ...core.platforms.platform_handlers import get_platform_info +from ...models.recording.recording_model import Recording from ...utils.logger import logger from ..base_page import PageBase -from ..components.help_dialog import HelpDialog -from ..components.recording_dialog import RecordingDialog -from ..components.search_dialog import SearchDialog +from ..components.business.recording_dialog import RecordingDialog +from ..components.dialogs.help_dialog import HelpDialog +from ..components.dialogs.search_dialog import SearchDialog from ..filters import RecordingFilters diff --git a/app/ui/views/settings_view.py b/app/ui/views/settings_view.py index 3b10f79..1dc67eb 100644 --- a/app/ui/views/settings_view.py +++ b/app/ui/views/settings_view.py @@ -3,13 +3,13 @@ import os import flet as ft -from ...models.audio_format_model import AudioFormat -from ...models.video_format_model import VideoFormat -from ...models.video_quality_model import VideoQuality +from ...models.media.audio_format_model import AudioFormat +from ...models.media.video_format_model import VideoFormat +from ...models.media.video_quality_model import VideoQuality from ...utils.delay import DelayedTaskExecutor from ...utils.logger import logger from ..base_page import PageBase -from ..components.help_dialog import HelpDialog +from ..components.dialogs.help_dialog import HelpDialog class SettingsPage(PageBase): diff --git a/app/ui/views/storage_view.py b/app/ui/views/storage_view.py index 05ff452..b34af27 100644 --- a/app/ui/views/storage_view.py +++ b/app/ui/views/storage_view.py @@ -174,7 +174,7 @@ class StoragePage(BasePage): async def preview_file(self, file_path, room_url=None): import urllib.parse - from ..components.video_player import VideoPlayer + from ..components.business.video_player import VideoPlayer video_player = VideoPlayer(self.app) diff --git a/main.py b/main.py index 7ec4033..c731cc0 100644 --- a/main.py +++ b/main.py @@ -10,7 +10,7 @@ from app.app_manager import App, execute_dir from app.auth.auth_manager import AuthManager from app.lifecycle.app_close_handler import handle_app_close from app.lifecycle.tray_manager import TrayManager -from app.ui.components.save_progress_overlay import SaveProgressOverlay +from app.ui.components.common.save_progress_overlay import SaveProgressOverlay from app.ui.layout.responsive_layout import setup_responsive_layout from app.ui.views.login_view import LoginPage from app.utils.logger import logger