Skip to content

Commit 7697c56

Browse files
authored
Merge pull request #758 from xerdream/fix/multiple-video-formats
Fix file name handling error when template includes folder
2 parents 1b6568f + 4949eb3 commit 7697c56

File tree

1 file changed

+24
-7
lines changed

1 file changed

+24
-7
lines changed

app/ytdl.py

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -180,29 +180,46 @@ async def update_status(self):
180180

181181
def _add_format_identifier(self, identifier, template):
182182
# Preventing the post-processing of YT-DLP from deleting the intermediate file which was download before.
183-
return f'{identifier}_{template}'
183+
if template is None:
184+
return
185+
186+
if identifier is None:
187+
identifier = 'None'
188+
dirname = os.path.dirname(template)
189+
basename = os.path.basename(template)
190+
new_basename = f'{identifier}_{basename}'
191+
return os.path.join(dirname, new_basename) if dirname else new_basename
184192

185193
def _delete_format_identifier(self):
186194
# Delete the identifier in the file name after the post-processing is complete.
187195
if self.canceled or self.info.status != 'finished' or not hasattr(self.info,'filename'):
188196
return
197+
198+
dirname = os.path.dirname(self.info.filename)
199+
download_dir = self.download_dir
200+
if dirname:
201+
download_dir = os.path.join(download_dir, dirname)
202+
203+
filename_idt = os.path.basename(self.info.filename)
204+
filename = re.sub(r'^\w+_', '', filename_idt)
205+
if filename_idt == filename:
206+
return
189207

208+
filepath_idt = os.path.join(download_dir, filename_idt)
209+
filepath = os.path.join(download_dir, filename)
190210
try:
191-
filename = re.sub(r'^\w+_', '', self.info.filename)
192-
filepath_idt = os.path.join(self.download_dir, self.info.filename)
193-
filepath = os.path.join(self.download_dir, filename)
194211
if os.path.exists(filepath):
195212
os.remove(filepath)
196213
os.rename(filepath_idt, filepath)
197-
log.info(f"Renamed file '{filepath_idt}' to '{filepath}'")
214+
self.info.filename = os.path.join(dirname, filename) if dirname else filename
198215
except PermissionError as e:
199216
log.warning(f"Error deleting old file '{filepath}': {e} ")
200217
return
201218
except Exception as e:
202219
log.warning(f"Error renaming file '{filepath_idt}': {e} ")
203220
return
204221

205-
self.info.filename = filename
222+
206223

207224
def delete_tmpfile(self):
208225
if not self.tmpfilename or not self.download_dir:
@@ -491,4 +508,4 @@ async def clear(self, ids):
491508
def get(self):
492509
return (list((k, v.info) for k, v in self.queue.items()) +
493510
list((k, v.info) for k, v in self.pending.items()),
494-
list((k, v.info) for k, v in self.done.items()))
511+
list((k, v.info) for k, v in self.done.items()))

0 commit comments

Comments
 (0)