Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- # -*- coding: utf-8 -*-
- import re
- import sys
- import subprocess
- import os
- import math
- import glob
- if len(sys.argv)<2:
- print "pass arguments"
- sys.exit(0)
- my_env = os.environ
- my_env['PYTHONIOENCODING'] = 'utf-8'
- def timeStrInt(time):
- m = re.search('([0-9]{2}):([0-9]{2}):([0-9]{2})',time)
- if m == None:
- return -1
- return int(m.group(1))*3600+int(m.group(2))*60+int(m.group(3))
- def timeIntStr(time):
- h = math.floor(time/3600)
- time = time - h*3600
- m = math.floor(time/60)
- time = time - m*60
- s = time
- return "%02d:%02d:%02d" % (h,m,s)
- def ffmpegDuration(file):
- proc = subprocess.Popen(['ffmpeg','-i',file],
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE,
- )
- stdout_value, stderr_value = proc.communicate('')
- audioinfo = repr(stderr_value)
- m = re.search('Duration: ([0-9:]{8})',audioinfo)
- duration = timeStrInt(m.group(1))
- return duration
- def ffmpegCut(filein,start,duration,artist,title,fileout):
- args = ['ffmpeg','-i',filein,'-ss',timeIntStr(start),'-t',timeIntStr(duration),'-acodec','copy','-metadata','artist="' + artist + '"','-metadata','title="' + title + '"',fileout]
- #print " ".join(args)
- proc = subprocess.call(args,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
- def getTitle(filename):
- filename = os.path.basename(filename).replace(".mp3","")
- filename1 = filename.split(" – ")
- filename2 = filename.split(" - ")
- if len(filename1) == 2:
- return filename1[1]
- if len(filename2) == 2:
- return filename2[1]
- return filename
- def getArtist(filename):
- filename = os.path.basename(filename).replace(".mp3","")
- filename1 = filename.split(" – ")
- filename2 = filename.split(" - ")
- if len(filename1) == 2:
- return filename1[0]
- if len(filename2) == 2:
- return filename2[0]
- return ""
- slice = 10 * 60
- sync = 6
- for i in range(len(sys.argv)-1):
- fileins = glob.glob(sys.argv[i+1]);
- for filein in fileins:
- print filein
- duration = ffmpegDuration(filein)
- m = re.search('(.*)\.mp3',filein)
- fileoutbase = m.group(1)
- for i in range(int(math.ceil(duration/slice))+1):
- fileout = fileoutbase + "-%02d.mp3" % (i+1)
- artist = getArtist(fileout)
- title = getTitle(fileout)
- start = i*slice
- duration = slice
- if i>0:
- start = start - sync / 2
- duration = duration + sync
- elif i==0:
- duration = duration + sync / 2
- #print title
- ffmpegCut(filein,start,duration,artist,title,fileout)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement