@@ -276,6 +276,10 @@ def parse_to_shortdate(date_str, fmt=None):
276276 # pip install python-dateutil
277277 from dateutil import parser
278278
279+ if fmt is None : fmt = '%y%m%d'
280+ if isinstance (date_str , datetime ):
281+ return date_str .strftime (fmt )
282+
279283 date_str = re .sub (r'[\s ]+' , ' ' , date_str ).strip ()
280284 patterns = [r'(\d+)年 *(\d+)月 *(\d+)日' , r'(\d{4})[/-](\d{1,2})[/-](\d{1,2})' ]
281285 for pattern in patterns :
@@ -287,7 +291,7 @@ def parse_to_shortdate(date_str, fmt=None):
287291 if m2 := re .search (pattern , date_str .replace (' ' , '' )):
288292 date_str = m2 [1 ] + m2 [2 ].zfill (2 ) + m2 [3 ].zfill (2 )
289293 break
290- if fmt is None : fmt = '%y%m%d'
294+
291295 try :
292296 return parser .parse (date_str , yearfirst = True ).strftime (fmt )
293297 except :
@@ -786,7 +790,13 @@ def check_dupe(f, dupe=dupe, size=0):
786790 web_name = f'{ prefix } ' + web_name
787791 f = p / safeify (web_name )
788792 if "Content-Disposition" in r .headers : # Get filename from the header
789- _ , params = parse_header (r .headers ["Content-Disposition" ])
793+ # TODO: write a parser myself since cgi.parse_header is deprecated.
794+
795+ content_disposition = r .headers ["Content-Disposition" ]
796+ # HACK: parse_header doesn't work if there is no value like "attachment; filename=xxx", so we add a dummy value.
797+ if content_disposition .startswith ('filename' ):
798+ content_disposition = 'attachment; ' + r .headers ["Content-Disposition" ]
799+ _ , params = parse_header (content_disposition )
790800 header_name = ''
791801 if 'filename*' in params :
792802 header_name = unquote (params ['filename*' ].lstrip ("UTF-8''" ))
0 commit comments