Add configurable parallel extraction count (1-8, default 2)
- New setting maxParallelExtract in AppSettings - UI input in Entpacken tab: "Parallele Entpackungen" - Replaces hardcoded maxConcurrent=2 in acquirePostProcessSlot Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
31ce1e6618
commit
56a507b45d
@ -64,6 +64,7 @@ export function defaultSettings(): AppSettings {
|
|||||||
reconnectWaitSeconds: 45,
|
reconnectWaitSeconds: 45,
|
||||||
completedCleanupPolicy: "never",
|
completedCleanupPolicy: "never",
|
||||||
maxParallel: 4,
|
maxParallel: 4,
|
||||||
|
maxParallelExtract: 2,
|
||||||
retryLimit: 0,
|
retryLimit: 0,
|
||||||
speedLimitEnabled: false,
|
speedLimitEnabled: false,
|
||||||
speedLimitKbps: 0,
|
speedLimitKbps: 0,
|
||||||
|
|||||||
@ -2997,7 +2997,7 @@ export class DownloadManager extends EventEmitter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async acquirePostProcessSlot(): Promise<void> {
|
private async acquirePostProcessSlot(): Promise<void> {
|
||||||
const maxConcurrent = 2;
|
const maxConcurrent = this.settings.maxParallelExtract || 2;
|
||||||
if (this.packagePostProcessActive < maxConcurrent) {
|
if (this.packagePostProcessActive < maxConcurrent) {
|
||||||
this.packagePostProcessActive += 1;
|
this.packagePostProcessActive += 1;
|
||||||
return;
|
return;
|
||||||
|
|||||||
@ -96,6 +96,7 @@ export function normalizeSettings(settings: AppSettings): AppSettings {
|
|||||||
autoResumeOnStart: Boolean(settings.autoResumeOnStart),
|
autoResumeOnStart: Boolean(settings.autoResumeOnStart),
|
||||||
autoReconnect: Boolean(settings.autoReconnect),
|
autoReconnect: Boolean(settings.autoReconnect),
|
||||||
maxParallel: clampNumber(settings.maxParallel, defaults.maxParallel, 1, 50),
|
maxParallel: clampNumber(settings.maxParallel, defaults.maxParallel, 1, 50),
|
||||||
|
maxParallelExtract: clampNumber(settings.maxParallelExtract, defaults.maxParallelExtract, 1, 8),
|
||||||
retryLimit: clampNumber(settings.retryLimit, defaults.retryLimit, 0, 99),
|
retryLimit: clampNumber(settings.retryLimit, defaults.retryLimit, 0, 99),
|
||||||
reconnectWaitSeconds: clampNumber(settings.reconnectWaitSeconds, defaults.reconnectWaitSeconds, 10, 600),
|
reconnectWaitSeconds: clampNumber(settings.reconnectWaitSeconds, defaults.reconnectWaitSeconds, 10, 600),
|
||||||
completedCleanupPolicy: settings.completedCleanupPolicy,
|
completedCleanupPolicy: settings.completedCleanupPolicy,
|
||||||
|
|||||||
@ -2431,6 +2431,7 @@ export function App(): ReactElement {
|
|||||||
<label className="toggle-line"><input type="checkbox" checked={settingsDraft.autoRename4sf4sj} onChange={(e) => setBool("autoRename4sf4sj", e.target.checked)} /> Auto-Rename (Beta)</label>
|
<label className="toggle-line"><input type="checkbox" checked={settingsDraft.autoRename4sf4sj} onChange={(e) => setBool("autoRename4sf4sj", e.target.checked)} /> Auto-Rename (Beta)</label>
|
||||||
<label className="toggle-line"><input type="checkbox" checked={settingsDraft.createExtractSubfolder} onChange={(e) => setBool("createExtractSubfolder", e.target.checked)} /> Entpackte Dateien in Paket-Unterordner speichern</label>
|
<label className="toggle-line"><input type="checkbox" checked={settingsDraft.createExtractSubfolder} onChange={(e) => setBool("createExtractSubfolder", e.target.checked)} /> Entpackte Dateien in Paket-Unterordner speichern</label>
|
||||||
<label className="toggle-line"><input type="checkbox" checked={settingsDraft.hybridExtract} onChange={(e) => setBool("hybridExtract", e.target.checked)} /> Hybrid-Extract</label>
|
<label className="toggle-line"><input type="checkbox" checked={settingsDraft.hybridExtract} onChange={(e) => setBool("hybridExtract", e.target.checked)} /> Hybrid-Extract</label>
|
||||||
|
<div><label>Parallele Entpackungen</label><input type="number" min={1} max={8} value={settingsDraft.maxParallelExtract} onChange={(e) => setNum("maxParallelExtract", Math.max(1, Math.min(8, Number(e.target.value) || 2)))} /></div>
|
||||||
<label className="toggle-line"><input type="checkbox" checked={settingsDraft.collectMkvToLibrary} onChange={(e) => setBool("collectMkvToLibrary", e.target.checked)} /> MKV nach Paketabschluss in Sammelordner verschieben (flach)</label>
|
<label className="toggle-line"><input type="checkbox" checked={settingsDraft.collectMkvToLibrary} onChange={(e) => setBool("collectMkvToLibrary", e.target.checked)} /> MKV nach Paketabschluss in Sammelordner verschieben (flach)</label>
|
||||||
<label>MKV-Sammelordner</label>
|
<label>MKV-Sammelordner</label>
|
||||||
<div className="input-row">
|
<div className="input-row">
|
||||||
|
|||||||
@ -65,6 +65,7 @@ export interface AppSettings {
|
|||||||
reconnectWaitSeconds: number;
|
reconnectWaitSeconds: number;
|
||||||
completedCleanupPolicy: FinishedCleanupPolicy;
|
completedCleanupPolicy: FinishedCleanupPolicy;
|
||||||
maxParallel: number;
|
maxParallel: number;
|
||||||
|
maxParallelExtract: number;
|
||||||
retryLimit: number;
|
retryLimit: number;
|
||||||
speedLimitEnabled: boolean;
|
speedLimitEnabled: boolean;
|
||||||
speedLimitKbps: number;
|
speedLimitKbps: number;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user