import src.fw_api from urllib.parse import unquote def get_remote_file_name(url): '''This function return filename by content-disposition header''' r = src.fw_api.s.head(url) content_dispos = r.headers.get('content-disposition') if content_dispos.startswith('attachment; filename*=UTF-8\'\''): return unquote(content_dispos.split('attachment; filename*=UTF-8\'\'')[-1]) def download_track(url, name=None): url = url.split('?')[0] # Stripe all params from url r = src.fw_api.s.get(url) if not name: name = get_remote_file_name(url) if not name: name = url.split(r'/')[-1] with open(name.replace(r'/', '_'), 'wb') as f: f.write(r.content) return name