refactor: restructure app directory for better organization (#155)

* refactor: restructure app directory for better organization

* update: add missing changes to __init__.py
This commit is contained in:
Hmily
2025-07-19 16:01:02 +08:00
committed by GitHub
parent 2649b6fc1e
commit 142c437dbd
62 changed files with 79 additions and 76 deletions

View File

@@ -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]

View File

@@ -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

View File

@@ -1,3 +1,3 @@
from .platform_handlers import get_platform_handler
from .platforms.platform_handlers import get_platform_handler
__all__ = ["get_platform_handler"]

View File

View File

@@ -5,7 +5,7 @@ from typing import Any
import aiofiles
from ..utils.logger import logger
from ...utils.logger import logger
class ConfigManager:

View File

@@ -1,6 +1,6 @@
import os
from ..utils.logger import logger
from ...utils.logger import logger
from .config_manager import ConfigManager

View File

View File

@@ -5,7 +5,7 @@ from typing import Optional
import httpx
from ..utils.logger import logger
from ...utils.logger import logger
class DirectStreamDownloader:

View File

View File

@@ -1,4 +1,4 @@
from ...utils.logger import logger
from ....utils.logger import logger
from .base import PlatformHandler, StreamData
from .handlers import (
AcfunHandler,

View File

@@ -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

View File

View File

@@ -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

View File

@@ -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 = [

View File

View File

@@ -2,7 +2,7 @@ import asyncio
import os
import threading
from .utils.logger import logger
from ...utils.logger import logger
class BackgroundService:

View File

View File

@@ -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:

View File

View File

@@ -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()

View File

@@ -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

View File

View File

View File

View File

@@ -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

View File

@@ -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:

View File

@@ -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)

View File

View File

@@ -197,4 +197,4 @@ class SaveProgressOverlay:
@property
def visible(self):
return self.overlay.visible
return self.overlay.visible

View File

@@ -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()

View File

View File

@@ -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"]

View File

@@ -39,4 +39,4 @@ class HelpDialog(ft.AlertDialog):
def close_panel(self, _):
self.open = False
self.update()
self.update()

View File

@@ -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)

View File

View File

@@ -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
return ft.Icons.VISIBILITY if recording.monitor_status else ft.Icons.VISIBILITY_OFF

View File

@@ -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:

View File

@@ -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):

View File

@@ -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

View File

@@ -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):

View File

@@ -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)

View File

@@ -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