From da72588ff6e863d7000b66363761999021d1d3a4 Mon Sep 17 00:00:00 2001 From: r00t- Date: Wed, 24 Jan 2018 13:07:45 +0100 Subject: [PATCH] verify downloaded size matches content-length (#249) --- scdl/scdl.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/scdl/scdl.py b/scdl/scdl.py index d53fe2c..52f09b4 100755 --- a/scdl/scdl.py +++ b/scdl/scdl.py @@ -507,6 +507,7 @@ def download_track(track, playlist_name=None, playlist_file=None): logging.info('{0} too large, skipping'.format(title)) return + received=0 with temp as f: for chunk in progress.bar( r.iter_content(chunk_size=1024), @@ -514,9 +515,14 @@ def download_track(track, playlist_name=None, playlist_file=None): hide=True if arguments["--hide-progress"] else False ): if chunk: + received+=len(chunk) f.write(chunk) f.flush() + if received != total_length: + logger.error('connection closed prematurely, download incomplete') + sys.exit() + shutil.move(temp.name, os.path.join(os.getcwd(), filename)) if filename.endswith('.mp3') or filename.endswith('.m4a'): try: