From 5656ca6b16d050cd0c3f1f404915ed2c55855c7d Mon Sep 17 00:00:00 2001 From: neodarz Date: Mon, 10 Jul 2017 15:41:46 +0200 Subject: Switch extension sh to py --- convert.py | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ convert.sh | 100 ------------------------------------------------------------- 2 files changed, 100 insertions(+), 100 deletions(-) create mode 100755 convert.py delete mode 100755 convert.sh 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() diff --git a/convert.sh b/convert.sh deleted file mode 100755 index ba1bc08..0000000 --- a/convert.sh +++ /dev/null @@ -1,100 +0,0 @@ -#!/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() -- cgit v1.2.1