@@ -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