commit 92e1677cfe8ff994d0b44b113aed8c8921163a13
parent c7dc5602477172ad79023bf6790e1f4414de49c5
Author: GeaRSiX <gearsix@tuta.io>
Date:   Mon, 31 May 2021 22:02:19 +0100
started fixing some bugs in sya.py
Diffstat:
| M | sya.py | | | 18 | +++++++++++------- | 
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/sya.py b/sya.py
@@ -61,10 +61,10 @@ def check_bin(*binaries):
             'Otherwise you can point to the binary using the relevant optional argument.')
 
 def get_audio(youtubedl, url, outdir, format='mp3', quality='320K', keep=True, ffmpeg='ffmpeg'):
-    log('{} getting {}, {} ({})'.format(youtubedl, format, quality, url))
+    log('{} getting {}, {} ({}) -> {}/{}.{}'.format(youtubedl, format, quality, url, outdir, os.path.basename(outdir), format))
     cmd = [youtubedl, url, '--extract-audio', '--audio-format', format,
         '--audio-quality', quality, '--prefer-ffmpeg', '-o',
-        '{}/{}.%(ext)s'.format(outdir, os.path.basename(outdir))]
+        '{}/{}.{}'.format(outdir, os.path.basename(outdir), format)]
     if keep == True:
         cmd.append('-k')
     if ffmpeg != 'ffmpeg':
@@ -112,10 +112,14 @@ def split_tracks(ffmpeg, audio_fpath, tracks, format='mp3', outpath='out'):
     log('splitting tracks...')
     cmd = ['ffmpeg', '-v', 'quiet', '-stats', '-i', 'audio.mp3',
         '-f', 'null', '-']
-    ret = subprocess.run(cmd, stderr=subprocess.PIPE)
+    ret = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
     length = str(ret.stderr).split('\\r')
     # some nasty string manip. to extract length (printed to stderr)
-    length = length[len(length)-1].split(' ')[1].split('=')[1][:-3]
+    try:
+        length = length[len(length)-1].split(' ')[1].split('=')[1][:-3]
+    except:
+        log('Failed to find track length, {}'.format(length))
+        return
         
     for i, t in enumerate(tracks):
         outfile = '{}/{} - {}.{}'.format(outpath, str(i).zfill(2), t.title, format)
@@ -126,7 +130,7 @@ def split_tracks(ffmpeg, audio_fpath, tracks, format='mp3', outpath='out'):
         cmd = ['ffmpeg', '-nostdin', '-y', '-loglevel', 'error',
             '-i', audio_fpath, '-ss', t.timestamp, '-to', end,
             '-acodec', 'copy', outfile]
-        subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+        p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
         for line in iter(p.stdout.readline, b''):
             log(line.decode('utf-8').rstrip('\n'))
     return
@@ -135,13 +139,13 @@ def sya(args):
     # validate args
     if check_bin(args.youtubedl, args.ffmpeg) == False:
         error_exit('required binaries are missing')
-    if args.tracklist == None:
+    if args.tracklist == None or os.path.exists(args.tracklist) == False:
         error_exit('missing tracklist')
     if args.output == None:
         args.output = os.path.splitext(args.tracklist)[0]
 
     tracklist = load_tracklist(args.tracklist)
-    audio_fpath = get_audio(args.youtubedl, args.output, tracklist[0],
+    audio_fpath = get_audio(args.youtubedl, tracklist[0], args.output,
             args.format, args.quality, args.keep, args.ffmpeg)
     tracks = parse_tracks(tracklist[1:])