From 9a20298fee14cd0f7c2e07fa6bd0dd98b7297385 Mon Sep 17 00:00:00 2001 From: The Code Room <30334240+sqrtpapi2001@users.noreply.github.com> Date: Tue, 14 Apr 2020 20:50:02 -0400 Subject: [PATCH 1/3] Core functionality patch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * You can now download to your specified directory like you should have been able to. * You can now download mp3 audio correctly like you should have been able to -- this requires ffmpeg on Windows as per youtube-dl requirements. TODO: 🐸 cross-platform testing 🐸 additional features 🐸 deleting removed songs from playlists 🐸 a GUI would *definitely* make this software a lot more user friendly and worth its salt to the general viewing/listening public. --- yps.py | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/yps.py b/yps.py index 6145487..00ece79 100755 --- a/yps.py +++ b/yps.py @@ -5,7 +5,8 @@ import os import json import subprocess - +import shutil +import time YOUTUBE_DL_PATH = 'youtube-dl' CONFIG_FILENAME = 'yps.json' @@ -18,12 +19,12 @@ def run_in_subprocess(args): print_info(' '.join(args)) subprocess.call(args) -def save_config(directory, playlist_url): +def save_config(directory, playlist_url, fileformat=None): config_loc = os.path.expanduser(os.path.join(directory, CONFIG_FILENAME)) if os.path.exists(config_loc): exit('Configuration at ' + config_loc + ' already exists. Not saving new config.') - config_data = {'youtube_playlist': playlist_url} + config_data = {'directory': directory,'youtube_playlist': playlist_url, 'format': fileformat} save_config_data(config_loc, config_data) print_info('Saved config to ' + config_loc) @@ -43,15 +44,20 @@ def sync_playlist(config_path): print_info('Config path does not exist') return False - config_data =get_config(config_path) + config_data = get_config(config_path) current_dir = os.getcwd() # save dir to change back to it later os.chdir(os.path.dirname(config_path)) # change dir to the one you want to save the videos to - if 'format' in config_data: - run_in_subprocess([YOUTUBE_DL_PATH, '-f', config_data['format'], config_data['youtube_playlist']]) + if config_data['format'] != None: + if shutil.which('ffmpeg') == None: + print_info('ffmpeg must be installed for mp3 downloads. Read this guide for help installing ffmpeg for Windows: https://bit.ly/3eoW2MD.') + time.sleep(5000) + exit() + else: + run_in_subprocess([YOUTUBE_DL_PATH, '--extract-audio', '--audio-format', config_data['format'], '-o', config_data['directory'] + r'\%(title)s.%(ext)s', config_data['youtube_playlist']]) else: - run_in_subprocess([YOUTUBE_DL_PATH, config_data['youtube_playlist']]) + run_in_subprocess([YOUTUBE_DL_PATH, config_data['youtube_playlist'], '-o', config_data['directory'] + r'\%(title)s.%(ext)s']) os.chdir(current_dir) # change back to original dir @@ -84,8 +90,9 @@ def sync_playlist(config_path): elif args.init: new_youtube_playlist = args.init save_dir = args.dir + save_format = args.format - save_config(save_dir, new_youtube_playlist) + save_config(save_dir, new_youtube_playlist, save_format) elif args.format: yps_config_loc = os.path.join(args.dir, CONFIG_FILENAME) @@ -97,4 +104,4 @@ def sync_playlist(config_path): else: - parser.print_help() \ No newline at end of file + parser.print_help() From 886842ba6c63e515da80aabacee6a0237e47df4b Mon Sep 17 00:00:00 2001 From: Raul Rohjans Date: Tue, 11 Jan 2022 21:23:04 +0000 Subject: [PATCH 2/3] Update yps.py --- yps.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/yps.py b/yps.py index 6145487..82f0a17 100755 --- a/yps.py +++ b/yps.py @@ -48,10 +48,22 @@ def sync_playlist(config_path): current_dir = os.getcwd() # save dir to change back to it later os.chdir(os.path.dirname(config_path)) # change dir to the one you want to save the videos to +<<<<<<< Updated upstream if 'format' in config_data: run_in_subprocess([YOUTUBE_DL_PATH, '-f', config_data['format'], config_data['youtube_playlist']]) else: run_in_subprocess([YOUTUBE_DL_PATH, config_data['youtube_playlist']]) +======= + if config_data['format'] != None: + if shutil.which('ffmpeg') == None: + print_info('ffmpeg must be installed for mp3 downloads. Read this guide for help installing ffmpeg for Windows: https://bit.ly/3eoW2MD.') + time.sleep(5000) + exit() + else: + run_in_subprocess([YOUTUBE_DL_PATH, '--extract-audio', '--audio-format', config_data['format'], '-o', r'%(title)s.%(ext)s', config_data['youtube_playlist']]) + else: + run_in_subprocess([YOUTUBE_DL_PATH, config_data['youtube_playlist'], '-o', r'%(title)s.%(ext)s']) +>>>>>>> Stashed changes os.chdir(current_dir) # change back to original dir From d75350a1288292f8d908aca05e23d14076594157 Mon Sep 17 00:00:00 2001 From: Raul Rohjans Date: Tue, 11 Jan 2022 21:34:46 +0000 Subject: [PATCH 3/3] . --- yps.py | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/yps.py b/yps.py index 82f0a17..8b45316 100755 --- a/yps.py +++ b/yps.py @@ -5,7 +5,8 @@ import os import json import subprocess - +import shutil +import time YOUTUBE_DL_PATH = 'youtube-dl' CONFIG_FILENAME = 'yps.json' @@ -18,12 +19,12 @@ def run_in_subprocess(args): print_info(' '.join(args)) subprocess.call(args) -def save_config(directory, playlist_url): +def save_config(directory, playlist_url, fileformat=None): config_loc = os.path.expanduser(os.path.join(directory, CONFIG_FILENAME)) if os.path.exists(config_loc): exit('Configuration at ' + config_loc + ' already exists. Not saving new config.') - config_data = {'youtube_playlist': playlist_url} + config_data = {'directory': directory,'youtube_playlist': playlist_url, 'format': fileformat} save_config_data(config_loc, config_data) print_info('Saved config to ' + config_loc) @@ -43,17 +44,11 @@ def sync_playlist(config_path): print_info('Config path does not exist') return False - config_data =get_config(config_path) + config_data = get_config(config_path) current_dir = os.getcwd() # save dir to change back to it later os.chdir(os.path.dirname(config_path)) # change dir to the one you want to save the videos to -<<<<<<< Updated upstream - if 'format' in config_data: - run_in_subprocess([YOUTUBE_DL_PATH, '-f', config_data['format'], config_data['youtube_playlist']]) - else: - run_in_subprocess([YOUTUBE_DL_PATH, config_data['youtube_playlist']]) -======= if config_data['format'] != None: if shutil.which('ffmpeg') == None: print_info('ffmpeg must be installed for mp3 downloads. Read this guide for help installing ffmpeg for Windows: https://bit.ly/3eoW2MD.') @@ -63,7 +58,6 @@ def sync_playlist(config_path): run_in_subprocess([YOUTUBE_DL_PATH, '--extract-audio', '--audio-format', config_data['format'], '-o', r'%(title)s.%(ext)s', config_data['youtube_playlist']]) else: run_in_subprocess([YOUTUBE_DL_PATH, config_data['youtube_playlist'], '-o', r'%(title)s.%(ext)s']) ->>>>>>> Stashed changes os.chdir(current_dir) # change back to original dir @@ -96,8 +90,9 @@ def sync_playlist(config_path): elif args.init: new_youtube_playlist = args.init save_dir = args.dir + save_format = args.format - save_config(save_dir, new_youtube_playlist) + save_config(save_dir, new_youtube_playlist, save_format) elif args.format: yps_config_loc = os.path.join(args.dir, CONFIG_FILENAME) @@ -109,4 +104,4 @@ def sync_playlist(config_path): else: - parser.print_help() \ No newline at end of file + parser.print_help()