Fix file name handling error when template includes folder
This commit is contained in:
parent
1b6568fc40
commit
8d365c0962
1 changed files with 22 additions and 7 deletions
29
app/ytdl.py
29
app/ytdl.py
|
|
@ -180,21 +180,36 @@ class Download:
|
||||||
|
|
||||||
def _add_format_identifier(self, identifier, template):
|
def _add_format_identifier(self, identifier, template):
|
||||||
# Preventing the post-processing of YT-DLP from deleting the intermediate file which was download before.
|
# Preventing the post-processing of YT-DLP from deleting the intermediate file which was download before.
|
||||||
return f'{identifier}_{template}'
|
if template is None:
|
||||||
|
return
|
||||||
|
|
||||||
|
if identifier is None:
|
||||||
|
identifier = 'None'
|
||||||
|
dirname = os.path.dirname(template)
|
||||||
|
basename = os.path.basename(template)
|
||||||
|
new_basename = f'{identifier}_{basename}'
|
||||||
|
return os.path.join(dirname, new_basename) if dirname else new_basename
|
||||||
|
|
||||||
def _delete_format_identifier(self):
|
def _delete_format_identifier(self):
|
||||||
# Delete the identifier in the file name after the post-processing is complete.
|
# Delete the identifier in the file name after the post-processing is complete.
|
||||||
if self.canceled or self.info.status != 'finished' or not hasattr(self.info,'filename'):
|
if self.canceled or self.info.status != 'finished' or not hasattr(self.info,'filename'):
|
||||||
return
|
return
|
||||||
|
|
||||||
|
dirname = os.path.dirname(self.info.filename)
|
||||||
|
download_dir = self.download_dir
|
||||||
|
if dirname:
|
||||||
|
download_dir = os.path.join(download_dir, dirname)
|
||||||
|
|
||||||
|
filename_idt = os.path.basename(self.info.filename)
|
||||||
|
filename = re.sub(r'^\w+_', '', filename_idt)
|
||||||
|
|
||||||
|
filepath_idt = os.path.join(download_dir, filename_idt)
|
||||||
|
filepath = os.path.join(download_dir, filename)
|
||||||
try:
|
try:
|
||||||
filename = re.sub(r'^\w+_', '', self.info.filename)
|
|
||||||
filepath_idt = os.path.join(self.download_dir, self.info.filename)
|
|
||||||
filepath = os.path.join(self.download_dir, filename)
|
|
||||||
if os.path.exists(filepath):
|
if os.path.exists(filepath):
|
||||||
os.remove(filepath)
|
os.remove(filepath)
|
||||||
os.rename(filepath_idt, filepath)
|
os.rename(filepath_idt, filepath)
|
||||||
log.info(f"Renamed file '{filepath_idt}' to '{filepath}'")
|
self.info.filename = os.path.join(dirname, filename) if dirname else filename
|
||||||
except PermissionError as e:
|
except PermissionError as e:
|
||||||
log.warning(f"Error deleting old file '{filepath}': {e} ")
|
log.warning(f"Error deleting old file '{filepath}': {e} ")
|
||||||
return
|
return
|
||||||
|
|
@ -202,7 +217,7 @@ class Download:
|
||||||
log.warning(f"Error renaming file '{filepath_idt}': {e} ")
|
log.warning(f"Error renaming file '{filepath_idt}': {e} ")
|
||||||
return
|
return
|
||||||
|
|
||||||
self.info.filename = filename
|
|
||||||
|
|
||||||
def delete_tmpfile(self):
|
def delete_tmpfile(self):
|
||||||
if not self.tmpfilename or not self.download_dir:
|
if not self.tmpfilename or not self.download_dir:
|
||||||
|
|
@ -491,4 +506,4 @@ class DownloadQueue:
|
||||||
def get(self):
|
def get(self):
|
||||||
return (list((k, v.info) for k, v in self.queue.items()) +
|
return (list((k, v.info) for k, v in self.queue.items()) +
|
||||||
list((k, v.info) for k, v in self.pending.items()),
|
list((k, v.info) for k, v in self.pending.items()),
|
||||||
list((k, v.info) for k, v in self.done.items()))
|
list((k, v.info) for k, v in self.done.items()))
|
||||||
Loading…
Reference in a new issue