Skip to content

Commit e7688a7

Browse files
committed
util: update
parse_to_shortdate: allow dt obj input download: fix Content-Disposition parsing
1 parent 3554fca commit e7688a7

1 file changed

Lines changed: 12 additions & 2 deletions

File tree

‎util.py‎

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)