mirror of
https://github.com/ihmily/StreamCap.git
synced 2026-09-03 06:48:00 +08:00
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:
@@ -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]
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
from .platform_handlers import get_platform_handler
|
||||
from .platforms.platform_handlers import get_platform_handler
|
||||
|
||||
__all__ = ["get_platform_handler"]
|
||||
|
||||
0
app/core/config/__init__.py
Normal file
0
app/core/config/__init__.py
Normal file
@@ -5,7 +5,7 @@ from typing import Any
|
||||
|
||||
import aiofiles
|
||||
|
||||
from ..utils.logger import logger
|
||||
from ...utils.logger import logger
|
||||
|
||||
|
||||
class ConfigManager:
|
||||
@@ -1,6 +1,6 @@
|
||||
import os
|
||||
|
||||
from ..utils.logger import logger
|
||||
from ...utils.logger import logger
|
||||
from .config_manager import ConfigManager
|
||||
|
||||
|
||||
0
app/core/media/__init__.py
Normal file
0
app/core/media/__init__.py
Normal file
@@ -5,7 +5,7 @@ from typing import Optional
|
||||
|
||||
import httpx
|
||||
|
||||
from ..utils.logger import logger
|
||||
from ...utils.logger import logger
|
||||
|
||||
|
||||
class DirectStreamDownloader:
|
||||
0
app/core/platforms/__init__.py
Normal file
0
app/core/platforms/__init__.py
Normal file
@@ -1,4 +1,4 @@
|
||||
from ...utils.logger import logger
|
||||
from ....utils.logger import logger
|
||||
from .base import PlatformHandler, StreamData
|
||||
from .handlers import (
|
||||
AcfunHandler,
|
||||
@@ -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
|
||||
|
||||
|
||||
0
app/core/recording/__init__.py
Normal file
0
app/core/recording/__init__.py
Normal 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
|
||||
|
||||
|
||||
@@ -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 = [
|
||||
0
app/core/runtime/__init__.py
Normal file
0
app/core/runtime/__init__.py
Normal file
@@ -2,7 +2,7 @@ import asyncio
|
||||
import os
|
||||
import threading
|
||||
|
||||
from .utils.logger import logger
|
||||
from ...utils.logger import logger
|
||||
|
||||
|
||||
class BackgroundService:
|
||||
0
app/core/update/__init__.py
Normal file
0
app/core/update/__init__.py
Normal 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:
|
||||
0
app/initialization/__init__.py
Normal file
0
app/initialization/__init__.py
Normal 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()
|
||||
|
||||
@@ -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
|
||||
|
||||
0
app/models/media/__init__.py
Normal file
0
app/models/media/__init__.py
Normal file
0
app/models/recording/__init__.py
Normal file
0
app/models/recording/__init__.py
Normal file
0
app/ui/components/business/__init__.py
Normal file
0
app/ui/components/business/__init__.py
Normal 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
|
||||
|
||||
@@ -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:
|
||||
@@ -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)
|
||||
0
app/ui/components/common/__init__.py
Normal file
0
app/ui/components/common/__init__.py
Normal file
@@ -197,4 +197,4 @@ class SaveProgressOverlay:
|
||||
|
||||
@property
|
||||
def visible(self):
|
||||
return self.overlay.visible
|
||||
return self.overlay.visible
|
||||
@@ -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()
|
||||
0
app/ui/components/dialogs/__init__.py
Normal file
0
app/ui/components/dialogs/__init__.py
Normal 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"]
|
||||
@@ -39,4 +39,4 @@ class HelpDialog(ft.AlertDialog):
|
||||
|
||||
def close_panel(self, _):
|
||||
self.open = False
|
||||
self.update()
|
||||
self.update()
|
||||
@@ -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)
|
||||
0
app/ui/components/state/__init__.py
Normal file
0
app/ui/components/state/__init__.py
Normal 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
|
||||
@@ -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:
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
2
main.py
2
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
|
||||
|
||||
Reference in New Issue
Block a user