improved joining of temp dir & filenames, continued refactoring.
This commit is contained in:
parent
6fae9697fd
commit
a0a040389f
45
coub-dl.py
45
coub-dl.py
@ -1,6 +1,6 @@
|
||||
from subprocess import call, Popen, PIPE, check_output, DEVNULL
|
||||
from os import listdir, remove
|
||||
from os.path import splitext, exists
|
||||
from os.path import splitext, exists, join
|
||||
from re import match
|
||||
from enum import Enum
|
||||
from datetime import timedelta
|
||||
@ -73,7 +73,7 @@ def download_video_stream(url, file_dict):
|
||||
def read_extensions(file_dict, directory):
|
||||
for file in listdir(directory):
|
||||
for filename in file_dict:
|
||||
fullname = '{}/{}'.format(directory, file)
|
||||
fullname = join(directory, file)
|
||||
if match('^{}.*'.format(file_dict[filename]), fullname):
|
||||
file_dict[filename] = fullname
|
||||
|
||||
@ -104,6 +104,27 @@ def get_length(file):
|
||||
return timedelta(hours=float(data[0]), minutes=float(data[1]), seconds=float(data[2]))
|
||||
|
||||
|
||||
def determine_output_filename(url, user_supplied, extension, files_dict):
|
||||
if user_supplied is None:
|
||||
files_dict[File.OUTPUT] = check_output(('youtube-dl', '--get-title', url)).decode('utf-8').strip()
|
||||
else:
|
||||
files_dict[File.OUTPUT] = user_supplied
|
||||
files_dict[File.OUTPUT] += extension
|
||||
|
||||
|
||||
def parse_cmd_arguments():
|
||||
parser = ArgumentParser(description='Download player-looped videos with youtube-dl & ffmpeg.')
|
||||
parser.add_argument('-nv', '--nonverbose', action='store_true', help='Turn off non-critical messages to user.')
|
||||
parser.add_argument('-o', '--output', default=None, help='Specify name of the output file (use -e for extension).')
|
||||
parser.add_argument('-e', '--extension', default='mp4', help='Set the container to use for the output.')
|
||||
parser.add_argument('url', type=str, help='The URL of the site containing the video to download.')
|
||||
|
||||
args = parser.parse_args()
|
||||
args.extension = '.' + args.extension
|
||||
|
||||
return args
|
||||
|
||||
|
||||
def yes_no_question(question, default):
|
||||
valid = {"yes": True, "y": True, "ye": True,
|
||||
"no": False, "n": False}
|
||||
@ -160,15 +181,7 @@ def run(url, files_dict, directory):
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# parse arguments
|
||||
parser = ArgumentParser(description='Download player-looped videos with youtube-dl & ffmpeg.')
|
||||
parser.add_argument('-nv', '--nonverbose', action='store_true', help='Turn off non-critical messages to user.')
|
||||
parser.add_argument('-o', '--output', default=None, help='Specify name of the output file (use -e for extension).')
|
||||
parser.add_argument('-e', '--extension', default='mp4', help='Set the container to use for the output.')
|
||||
parser.add_argument('url', type=str, help='The URL of the site containing the video to download.')
|
||||
|
||||
args = parser.parse_args()
|
||||
args.extension = '.' + args.extension
|
||||
args = parse_cmd_arguments()
|
||||
VERBOSE = False if args.nonverbose else True
|
||||
|
||||
FILES = {Stream.AUDIO: 'audio', Stream.VIDEO: 'video',
|
||||
@ -177,12 +190,7 @@ if __name__ == '__main__':
|
||||
OUTPUT_KEYS = [File.OUTPUT]
|
||||
URL = args.url
|
||||
|
||||
# fetch video title if no filename was specified
|
||||
if args.output is None:
|
||||
FILES[File.OUTPUT] = check_output(('youtube-dl', '--get-title', args.url)).decode('utf-8').strip()
|
||||
else:
|
||||
FILES[File.OUTPUT] = args.output
|
||||
FILES[File.OUTPUT] += args.extension
|
||||
determine_output_filename(URL, args.output, args.extension, FILES)
|
||||
|
||||
# ask what to do if output exists
|
||||
if exists(FILES[File.OUTPUT]):
|
||||
@ -195,8 +203,9 @@ if __name__ == '__main__':
|
||||
remove(FILES[File.OUTPUT])
|
||||
|
||||
with TemporaryDirectory() as dir:
|
||||
# update temporary file locations in FILES dict
|
||||
for key in FILES:
|
||||
if key not in OUTPUT_KEYS:
|
||||
FILES[key] = '{}/{}'.format(dir, FILES[key])
|
||||
FILES[key] = join(dir, FILES[key])
|
||||
|
||||
run(URL, FILES, dir)
|
||||
|
Loading…
Reference in New Issue
Block a user