diff options
Diffstat (limited to 'convert.py')
-rwxr-xr-x | convert.py | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/convert.py b/convert.py new file mode 100755 index 0000000..ba1bc08 --- /dev/null +++ b/convert.py @@ -0,0 +1,100 @@ +#!/usr/bin/env python3 + +import sys +import os +import subprocess +import re +#from subprocess import PIPE, CalledProcessError, check_call, Popen +from subprocess import check_output, STDOUT, CalledProcessError, Popen, PIPE +import pexpect +import time +import progressbar +import datetime + + +sourcedir = "/home/neodarz/video_save/ZXAAA Demo ZX Spectrum/Cracktro" +outdir = "/home/neodarz/video_save/ZXAAA Demo ZX Spectrum_mp3/Cracktro" + +def dirSize(path,ext1,ext2): + list_dir = [] + list_dir = os.listdir(path) + count = 0 + for file in list_dir: + if file.endswith(ext1): + count += 1 + if file.endswith(ext2): + count += 1 + return count + +total = dirSize(sourcedir, ".mp4", ".mkv") + +count = 0 +for file in sorted(os.listdir(sourcedir)): + try: + name = file[:file.rfind(".")] + if file.endswith(".mp4"): + print("Converting : "+name) + count += 1 + #cmd = ["ffmpeg", "-n", "-i", sourcedir+"/"+name+".mp4", "-c:a", "libmp3lame", outdir+"/"+name+".mp3"]² + cmd = "ffmpeg -n -i '"+sourcedir+"/"+name+".mp4' -c:a libmp3lame '"+outdir+"/"+name+".mp3'" + + thread = pexpect.spawn(cmd) + cpl = thread.compile_pattern_list([pexpect.EOF,"frame= *\d+",'(.+)']) + + while True: + i = thread.expect_list(cpl, timeout=None) + if i == 0: # EOF + break + elif i == 1: + time_number = thread.match.group(0) + print(time_number) + thread.close + elif i == 2: + unknown_line = thread.match.group(0) + if re.match(r'.*Duration.*', str(unknown_line)): + count = 0 + for element in unknown_line.split(): + count += 1 + if re.match(r"^b'Duration:'$", str(element)): + break + total = str(unknown_line.split()[count]).split("'")[1].split(',')[0] + totalRange = time.strptime(total.split('.')[0],'%H:%M:%S') + totalRangeS = datetime.timedelta(hours=totalRange.tm_hour,minutes=totalRange.tm_min,seconds=totalRange.tm_sec).total_seconds() + if re.match(r'.*time=.*', str(unknown_line)): + #print(str(unknown_line)+total) + #print(str(unknown_line).split("=")[2].split()[0]+"/"+total) + timeRange = time.strptime(str(unknown_line).split("=")[2].split()[0].split('.')[0],'%H:%M:%S') + timeRangeS = datetime.timedelta(hours=timeRange.tm_hour,minutes=timeRange.tm_min,seconds=timeRange.tm_sec).total_seconds() + print(str(round(100*timeRangeS/totalRangeS, 1))+"% / 100%", end='\r') + + #else if print(unknown_line) # for show other type of error + thread.close + #pass + + + + + + + + #p = Popen(cmd, shell=True, stdout=PIPE, stderr=PIPE) + + #for line in p.stdout: + # print(str(line.rstrip())) + #p.stdout.flush() + + #try: + # print(str(count)+"/"+str(total)) + #output = check_output(["ffmpeg", "-n", "-i", sourcedir+"/"+name+".mp4", "-c:a", "libmp3lame", outdir+"/"+name+".mp3"], stderr=STDOUT) + #except CalledProcessError as e: + + #except CalledProcessError as e: + # print(e.message) + # if os.path.getsize(outdir+"/"+name+".mp3") < os.path.getsize(sourcedir+"/"+name+".mp4") and re.search(r'.*[already exists].*', str(e)): + # print("\n\nout: "+str(os.path.getsize(outdir+"/"+name+".mp3"))+" < source:"+str(os.path.getsize(sourcedir+"/"+name+".mp4"))) + # print("BAD") + #sys.exit(1) + except KeyboardInterrupt: + # Read the comment here => https://stackoverflow.com/a/1112357 ! + os.remove(outdir+"/"+name+".mp3") + sys.exit() |