diff --git a/src-tauri/src/config.rs b/src-tauri/src/config.rs index 2374bb9..c40b8ff 100644 --- a/src-tauri/src/config.rs +++ b/src-tauri/src/config.rs @@ -43,6 +43,7 @@ pub struct Config { pub chunk_download_interval_sec: u64, pub danmaku_config: CanvasConfig, pub file_exist_action: FileExistAction, + pub auto_start_download_task: bool, } impl Config { @@ -153,6 +154,7 @@ impl Config { chunk_download_interval_sec: 0, danmaku_config: CanvasConfig::default(), file_exist_action: FileExistAction::Overwrite, + auto_start_download_task: true, } } } diff --git a/src-tauri/src/downloader/download_task.rs b/src-tauri/src/downloader/download_task.rs index a2737a8..794babf 100644 --- a/src-tauri/src/downloader/download_task.rs +++ b/src-tauri/src/downloader/download_task.rs @@ -98,7 +98,14 @@ impl DownloadTask { tracing::error!(err_title, message = string_chain); } - let (state_sender, _) = watch::channel(DownloadTaskState::Pending); + let auto_start = app.get_config().read().auto_start_download_task; + let init_state = if auto_start { + DownloadTaskState::Pending + } else { + DownloadTaskState::Paused + }; + + let (state_sender, _) = watch::channel(init_state); let (restart_sender, _) = watch::channel(()); let (cancel_sender, _) = watch::channel(()); let (delete_sender, _) = watch::channel(()); diff --git a/src/bindings.ts b/src/bindings.ts index 7de6b4e..31398c4 100644 --- a/src/bindings.ts +++ b/src/bindings.ts @@ -267,7 +267,7 @@ export type CntInfo = { collect: number; play: number; thumb_up: number; share: export type CntInfoInMedia = { collect: number; play: number; danmaku: number; vt: number; play_switch: number; reply: number; view_text_1: string } export type CodecType = "Unknown" | "Audio" | "AVC" | "HEVC" | "AV1" export type CommandError = { err_title: string; err_message: string } -export type Config = { download_dir: string; enable_file_logger: boolean; sessdata: string; video_quality_priority: VideoQuality[]; codec_type_priority: CodecType[]; audio_quality_priority: AudioQuality[]; download_video: boolean; download_audio: boolean; auto_merge: boolean; embed_chapter: boolean; embed_skip: boolean; download_xml_danmaku: boolean; download_ass_danmaku: boolean; download_json_danmaku: boolean; download_subtitle: boolean; download_cover: boolean; download_nfo: boolean; download_json: boolean; dir_fmt: string; dir_fmt_for_part: string; time_fmt: string; proxy_mode: ProxyMode; proxy_host: string; proxy_port: number; task_concurrency: number; task_download_interval_sec: number; chunk_concurrency: number; chunk_download_interval_sec: number; danmaku_config: CanvasConfig; file_exist_action: FileExistAction } +export type Config = { download_dir: string; enable_file_logger: boolean; sessdata: string; video_quality_priority: VideoQuality[]; codec_type_priority: CodecType[]; audio_quality_priority: AudioQuality[]; download_video: boolean; download_audio: boolean; auto_merge: boolean; embed_chapter: boolean; embed_skip: boolean; download_xml_danmaku: boolean; download_ass_danmaku: boolean; download_json_danmaku: boolean; download_subtitle: boolean; download_cover: boolean; download_nfo: boolean; download_json: boolean; dir_fmt: string; dir_fmt_for_part: string; time_fmt: string; proxy_mode: ProxyMode; proxy_host: string; proxy_port: number; task_concurrency: number; task_download_interval_sec: number; chunk_concurrency: number; chunk_download_interval_sec: number; danmaku_config: CanvasConfig; file_exist_action: FileExistAction; auto_start_download_task: boolean } export type Consulting = { consulting_flag: boolean; consulting_url: string } export type ContentAttr = { text: string; bg_color: string; bg_color_night: string; img: string; multi_img: MultiImg } export type ContentList = { bold: boolean; content: string; number: string } diff --git a/src/dialogs/SettingsDialog/SettingsDialog.vue b/src/dialogs/SettingsDialog/SettingsDialog.vue index 9ff5ae9..4203b4d 100644 --- a/src/dialogs/SettingsDialog/SettingsDialog.vue +++ b/src/dialogs/SettingsDialog/SettingsDialog.vue @@ -52,7 +52,7 @@ async function showConfigInFileManager() {