From 8cf7d96fc89fa375173586b6acdbab756c8da777 Mon Sep 17 00:00:00 2001 From: Ritiek Date: Thu, 15 Jun 2017 14:23:02 +0530 Subject: [PATCH] Switching to subprocess.call() from os.system() --- spotdl.py | 91 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 54 insertions(+), 37 deletions(-) diff --git a/spotdl.py b/spotdl.py index 3b81ea4..3952866 100644 --- a/spotdl.py +++ b/spotdl.py @@ -9,17 +9,18 @@ from core.misc import generate_search_URL from core.misc import fix_encoding from core.misc import grace_quit from bs4 import BeautifulSoup -import sys -from slugify import slugify from titlecase import titlecase -from mutagen.id3 import ID3, APIC +from slugify import slugify from mutagen.easyid3 import EasyID3 +from mutagen.id3 import ID3, APIC from mutagen.mp4 import MP4, MP4Cover import spotipy import spotipy.oauth2 as oauth2 import urllib2 import pafy +import sys import os +import subprocess def generate_song_name(raw_song): if is_spotify(raw_song): @@ -137,19 +138,37 @@ def download_song(content): if link is not None: link.download(filepath='Music/' + music_file + args.input_ext) +def convert_song(music_file): + if not args.input_ext == args.output_ext: + print('Converting ' + music_file + args.input_ext + ' to ' + args.output_ext[1:]) + if args.ffmpeg: + convert_with_FFmpeg(music_file) + else: + convert_with_libav(music_file) + def convert_with_libav(music_file): if os.name == 'nt': avconv_path = 'Scripts\\avconv.exe' else: avconv_path = 'avconv' - os.system( - avconv_path + ' -loglevel 0 -i "' + - 'Music/' + - music_file + - args.input_ext + '" -ab 192k "' + - 'Music/' + - music_file + - args.output_ext + '"') + + if args.verbose: + level = 'debug' + else: + level = '0' + + print([avconv_path, + '-loglevel', level, + '-i', 'Music/' + music_file + args.input_ext, + '-ab', '192k', + 'Music/' + music_file + args.output_ext]) + + subprocess.call([avconv_path, + '-loglevel', level, + '-i', 'Music/' + music_file + args.input_ext, + '-ab', '192k', + 'Music/' + music_file + args.output_ext]) + os.remove('Music/' + music_file + args.input_ext) def convert_with_FFmpeg(music_file): @@ -161,41 +180,47 @@ def convert_with_FFmpeg(music_file): # on MacOS brew install ffmpeg --with-fdk-aac will do just that. Other OS? # https://trac.ffmpeg.org/wiki/Encode/AAC # - print(music_file) - if args.verbose: - ffmpeg_pre = 'ffmpeg -y ' + if os.name == "nt": + ffmpeg_pre = 'Scripts//ffmpeg.exe ' else: - ffmpeg_pre = 'ffmpeg -hide_banner -nostats -v panic -y ' + ffmpeg_pre = 'ffmpeg ' + + ffmpeg_pre += '-y ' + if not args.verbose: + ffmpeg_pre += '-hide_banner -nostats -v panic ' if args.input_ext == '.m4a': if args.output_ext == '.mp3': - ffmpeg_params = '-codec:v copy -codec:a libmp3lame -q:a 2 ' + ffmpeg_params = ' -codec:v copy -codec:a libmp3lame -q:a 2 ' elif output_ext == '.webm': - ffmpeg_params = '-c:a libopus -vbr on -b:a 192k -vn ' + ffmpeg_params = ' -c:a libopus -vbr on -b:a 192k -vn ' else: return elif args.input_ext == '.webm': if args.output_ext == '.mp3': - ffmpeg_params = '-ab 192k -ar 44100 -vn ' + ffmpeg_params = ' -ab 192k -ar 44100 -vn ' elif args.output_ext == '.m4a': - ffmpeg_params = '-cutoff 20000 -c:a libfdk_aac -b:a 256k -vn ' + ffmpeg_params = ' -cutoff 20000 -c:a libfdk_aac -b:a 256k -vn ' else: return else: print('Unknown formats. Unable to convert.', args.input_ext, args.output_ext) return - if args.verbose: - print(ffmpeg_pre + - '-i "Music/' + music_file + input_ext + '" ' + - ffmpeg_params + - '"Music/' + music_file + output_ext + '" ') + command = (ffmpeg_pre + + '-i "Music/' + music_file + args.input_ext + '"' + + ffmpeg_params + + '"Music/' + music_file + args.output_ext + '"').split(' ') + + commandos = (ffmpeg_pre + + '-i "Music/' + music_file + args.input_ext + '" ' + + ffmpeg_params + + '"Music/' + music_file + args.output_ext + '" ') + #print(command) + #print(commandos) + os.system(commandos) + #subprocess.call(command) - os.system( - ffmpeg_pre + - '-i "Music/' + music_file + input_ext + '" ' + - ffmpeg_params + - '"Music/' + music_file + output_ext + '" ') os.remove('Music/' + music_file + args.input_ext) def check_exists(music_file, raw_song, islist): @@ -287,14 +312,6 @@ def fix_metadata_m4a(music_file, meta_tags): albumart.close() audiofile.save() -def convert_song(music_file): - if not args.input_ext == args.output_ext: - print('Converting ' + music_file + args.input_ext + ' to ' + args.output_ext[1:]) - if args.ffmpeg: - convert_with_FFmpeg(music_file) - else: - convert_with_libav(music_file) - # Logic behind preparing the song to download to finishing meta-tags def grab_single(raw_song, number=None): if number: