[common] fix skipping download of file existence in some cases

This commit is contained in:
Jun Zhou 2015-09-13 20:34:34 -07:00
parent d2ebe7690d
commit 20ebd902e0

View File

@ -499,6 +499,24 @@ class DummyProgressBar:
def done(self): def done(self):
pass pass
def get_output_filename(urls, title, ext, output_dir, merge):
merged_ext = ext
if (len(urls) > 1) and merge:
from .processor.ffmpeg import has_ffmpeg_installed
if ext in ['flv', 'f4v']:
if has_ffmpeg_installed():
merged_ext = 'mp4'
else:
merged_ext = 'flv'
elif ext == 'mp4':
merged_ext = 'mp4'
elif ext == 'ts':
if has_ffmpeg_installed():
merged_ext = 'mkv'
else:
merged_ext = 'ts'
return '%s.%s' % (title, merged_ext)
def download_urls(urls, title, ext, total_size, output_dir='.', refer=None, merge=True, faker=False): def download_urls(urls, title, ext, total_size, output_dir='.', refer=None, merge=True, faker=False):
assert urls assert urls
if dry_run: if dry_run:
@ -519,12 +537,12 @@ def download_urls(urls, title, ext, total_size, output_dir='.', refer=None, merg
pass pass
title = tr(get_filename(title)) title = tr(get_filename(title))
output_filename = get_output_filename(urls, title, ext, output_dir, merge)
output_filepath = os.path.join(output_dir, output_filename)
filename = '%s.%s' % (title, ext)
filepath = os.path.join(output_dir, filename)
if total_size: if total_size:
if not force and os.path.exists(filepath) and os.path.getsize(filepath) >= total_size * 0.9: if not force and os.path.exists(output_filepath) and os.path.getsize(output_filepath) >= total_size * 0.9:
print('Skipping %s: file already exists' % filepath) print('Skipping %s: file already exists' % output_filepath)
print() print()
return return
bar = SimpleProgressBar(total_size, len(urls)) bar = SimpleProgressBar(total_size, len(urls))
@ -533,8 +551,8 @@ def download_urls(urls, title, ext, total_size, output_dir='.', refer=None, merg
if len(urls) == 1: if len(urls) == 1:
url = urls[0] url = urls[0]
print('Downloading %s ...' % tr(filename)) print('Downloading %s ...' % tr(output_filename))
url_save(url, filepath, bar, refer = refer, faker = faker) url_save(url, output_filepath, bar, refer = refer, faker = faker)
bar.done() bar.done()
else: else:
parts = [] parts = []
@ -556,10 +574,10 @@ def download_urls(urls, title, ext, total_size, output_dir='.', refer=None, merg
from .processor.ffmpeg import has_ffmpeg_installed from .processor.ffmpeg import has_ffmpeg_installed
if has_ffmpeg_installed(): if has_ffmpeg_installed():
from .processor.ffmpeg import ffmpeg_concat_flv_to_mp4 from .processor.ffmpeg import ffmpeg_concat_flv_to_mp4
ffmpeg_concat_flv_to_mp4(parts, os.path.join(output_dir, title + '.mp4')) ffmpeg_concat_flv_to_mp4(parts, output_filepath)
else: else:
from .processor.join_flv import concat_flv from .processor.join_flv import concat_flv
concat_flv(parts, os.path.join(output_dir, title + '.flv')) concat_flv(parts, output_filepath)
except: except:
raise raise
else: else:
@ -571,10 +589,10 @@ def download_urls(urls, title, ext, total_size, output_dir='.', refer=None, merg
from .processor.ffmpeg import has_ffmpeg_installed from .processor.ffmpeg import has_ffmpeg_installed
if has_ffmpeg_installed(): if has_ffmpeg_installed():
from .processor.ffmpeg import ffmpeg_concat_mp4_to_mp4 from .processor.ffmpeg import ffmpeg_concat_mp4_to_mp4
ffmpeg_concat_mp4_to_mp4(parts, os.path.join(output_dir, title + '.mp4')) ffmpeg_concat_mp4_to_mp4(parts, output_filepath)
else: else:
from .processor.join_mp4 import concat_mp4 from .processor.join_mp4 import concat_mp4
concat_mp4(parts, os.path.join(output_dir, title + '.mp4')) concat_mp4(parts, output_filepath)
except: except:
raise raise
else: else:
@ -586,10 +604,10 @@ def download_urls(urls, title, ext, total_size, output_dir='.', refer=None, merg
from .processor.ffmpeg import has_ffmpeg_installed from .processor.ffmpeg import has_ffmpeg_installed
if has_ffmpeg_installed(): if has_ffmpeg_installed():
from .processor.ffmpeg import ffmpeg_concat_ts_to_mkv from .processor.ffmpeg import ffmpeg_concat_ts_to_mkv
ffmpeg_concat_ts_to_mkv(parts, os.path.join(output_dir, title + '.mkv')) ffmpeg_concat_ts_to_mkv(parts, output_filepath)
else: else:
from .processor.join_ts import concat_ts from .processor.join_ts import concat_ts
concat_ts(parts, os.path.join(output_dir, title + '.ts')) concat_ts(parts, output_filepath)
except: except:
raise raise
else: else: