1
1
mirror of https://github.com/neosubhamoy/neodlp.git synced 2026-06-10 04:13:44 +05:30

feat: added option to remove download id from filename #35

This commit is contained in:
2026-05-26 21:08:21 +05:30
Verified
parent 450b36b59a
commit fa050b2f39
4 changed files with 27 additions and 5 deletions
@@ -309,6 +309,7 @@ function AppFilesystemSettings() {
const filenameTemplate = useSettingsPageStatesStore(state => state.settings.filename_template); const filenameTemplate = useSettingsPageStatesStore(state => state.settings.filename_template);
const windowsFilenames = useSettingsPageStatesStore(state => state.settings.windows_filenames); const windowsFilenames = useSettingsPageStatesStore(state => state.settings.windows_filenames);
const restrictFilenames = useSettingsPageStatesStore(state => state.settings.restrict_filenames); const restrictFilenames = useSettingsPageStatesStore(state => state.settings.restrict_filenames);
const uniqueFilenames = useSettingsPageStatesStore(state => state.settings.unique_filenames);
const downloadStates = useDownloadStatesStore(state => state.downloadStates); const downloadStates = useDownloadStatesStore(state => state.downloadStates);
const ongoingDownloads = downloadStates.filter(state => const ongoingDownloads = downloadStates.filter(state =>
@@ -462,6 +463,15 @@ function AppFilesystemSettings() {
</form> </form>
</Form> </Form>
</div> </div>
<div className="unique-filenames">
<h3 className="font-semibold">Unique Filenames</h3>
<p className="text-xs text-muted-foreground mb-3">Make filenames unique by appending download ID, playlist index at the end of the filename (recommended, disabling it may cause issue with some downloads, also it may cause paused downloads to re-start from begining)</p>
<Switch
id="unique-filenames"
checked={uniqueFilenames}
onCheckedChange={(checked) => saveSettingsKey('unique_filenames', checked)}
/>
</div>
<div className="sanitize-filenames"> <div className="sanitize-filenames">
<h3 className="font-semibold">Sanitize Filenames</h3> <h3 className="font-semibold">Sanitize Filenames</h3>
<p className="text-xs text-muted-foreground mb-3">Make filenames windows-compatible, allow only ASCII characters and replace spaces with underscore (recommended, disabling it may cause issue with some downloads, also it may cause paused downloads to re-start from begining)</p> <p className="text-xs text-muted-foreground mb-3">Make filenames windows-compatible, allow only ASCII characters and replace spaces with underscore (recommended, disabling it may cause issue with some downloads, also it may cause paused downloads to re-start from begining)</p>
+12 -3
View File
@@ -74,7 +74,8 @@ export default function useDownloader() {
disable_innertube: DISABLE_INNERTUBE, disable_innertube: DISABLE_INNERTUBE,
pot_server_port: POT_SERVER_PORT, pot_server_port: POT_SERVER_PORT,
windows_filenames: WINDOWS_FILENAMES, windows_filenames: WINDOWS_FILENAMES,
restrict_filenames: RESTRICT_FILENAMES restrict_filenames: RESTRICT_FILENAMES,
unique_filenames: UNIQUE_FILENAMES,
} = useSettingsPageStatesStore(state => state.settings); } = useSettingsPageStatesStore(state => state.settings);
const isRunningPotServer = useSettingsPageStatesStore(state => state.isRunningPotServer); const isRunningPotServer = useSettingsPageStatesStore(state => state.isRunningPotServer);
@@ -349,9 +350,17 @@ export default function useDownloader() {
} }
if (isMultiplePlaylistItems) { if (isMultiplePlaylistItems) {
args.push('--output', `%(playlist_title|Unknown)s[${downloadId}]/[%(playlist_index|0)d]_${FILENAME_TEMPLATE}.%(ext)s`); if (UNIQUE_FILENAMES) {
args.push('--output', `%(playlist_title|Untitled)s[${downloadId}]/[%(playlist_index|0)d]_${FILENAME_TEMPLATE}.%(ext)s`);
} else {
args.push('--output', `%(playlist_title|Untitled)s/${FILENAME_TEMPLATE}.%(ext)s`);
}
} else { } else {
args.push('--output', `${FILENAME_TEMPLATE}[${downloadId}].%(ext)s`); if (UNIQUE_FILENAMES) {
args.push('--output', `${FILENAME_TEMPLATE}[${downloadId}].%(ext)s`);
} else {
args.push('--output', `${FILENAME_TEMPLATE}.%(ext)s`);
}
} }
if (WINDOWS_FILENAMES) { if (WINDOWS_FILENAMES) {
+4 -2
View File
@@ -204,7 +204,7 @@ export const useSettingsPageStatesStore = create<SettingsPageStatesStore>((set)
force_internet_protocol: 'ipv4', force_internet_protocol: 'ipv4',
use_custom_commands: false, use_custom_commands: false,
custom_commands: [], custom_commands: [],
filename_template: '%(title|Unknown)s_%(resolution|unknown)s', filename_template: '%(title|Untitled)s_%(resolution|unknown)s',
debug_mode: false, debug_mode: false,
log_verbose: true, log_verbose: true,
log_progress: false, log_progress: false,
@@ -223,6 +223,7 @@ export const useSettingsPageStatesStore = create<SettingsPageStatesStore>((set)
pot_server_port: 4416, pot_server_port: 4416,
windows_filenames: true, windows_filenames: true,
restrict_filenames: true, restrict_filenames: true,
unique_filenames: true,
quit_on_close: false, quit_on_close: false,
// extension settings // extension settings
websocket_port: 53511 websocket_port: 53511
@@ -292,7 +293,7 @@ export const useSettingsPageStatesStore = create<SettingsPageStatesStore>((set)
force_internet_protocol: 'ipv4', force_internet_protocol: 'ipv4',
use_custom_commands: false, use_custom_commands: false,
custom_commands: [], custom_commands: [],
filename_template: '%(title|Unknown)s_%(resolution|unknown)s', filename_template: '%(title|Untitled)s_%(resolution|unknown)s',
debug_mode: false, debug_mode: false,
log_verbose: true, log_verbose: true,
log_progress: false, log_progress: false,
@@ -311,6 +312,7 @@ export const useSettingsPageStatesStore = create<SettingsPageStatesStore>((set)
pot_server_port: 4416, pot_server_port: 4416,
windows_filenames: true, windows_filenames: true,
restrict_filenames: true, restrict_filenames: true,
unique_filenames: true,
quit_on_close: false, quit_on_close: false,
// extension settings // extension settings
websocket_port: 53511 websocket_port: 53511
+1
View File
@@ -66,6 +66,7 @@ export interface Settings {
pot_server_port: number; pot_server_port: number;
windows_filenames: boolean; windows_filenames: boolean;
restrict_filenames: boolean; restrict_filenames: boolean;
unique_filenames: boolean;
quit_on_close: boolean; quit_on_close: boolean;
// extension settings // extension settings
websocket_port: number; websocket_port: number;