mirror of
https://github.com/microtherion/VocalEasel.git
synced 2024-12-22 19:23:59 +00:00
109 lines
2.1 KiB
Plaintext
109 lines
2.1 KiB
Plaintext
|
#!/usr/bin/env python
|
||
|
|
||
|
# Renumber a mma song file. Just take any lines
|
||
|
# which start with a number and do those sequenially.
|
||
|
|
||
|
import sys, os
|
||
|
|
||
|
|
||
|
def error(m):
|
||
|
""" Abort on error with message. """
|
||
|
print m
|
||
|
sys.exit(1)
|
||
|
|
||
|
def usage():
|
||
|
""" Print usage message and exit. """
|
||
|
|
||
|
print "Mma-renum, (c) Bob van der Poel"
|
||
|
print "Re-numbers a mma song file and"
|
||
|
print " cleans up chord tabbing."
|
||
|
print "Overwrites existing file!"
|
||
|
print
|
||
|
sys.exit(1)
|
||
|
|
||
|
|
||
|
|
||
|
##########################
|
||
|
|
||
|
if len(sys.argv[1:]) != 1:
|
||
|
print "mma-rnum: requires 1 filename argument."
|
||
|
usage()
|
||
|
|
||
|
filename = sys.argv[1]
|
||
|
|
||
|
if filename[0] == '-':
|
||
|
usage()
|
||
|
|
||
|
try:
|
||
|
inpath = open(filename, 'r')
|
||
|
except:
|
||
|
error("Can't access the file '%s'" % filename)
|
||
|
|
||
|
tempfile = "%s.%s.tmp" % (filename, os.getpid())
|
||
|
try:
|
||
|
outpath = open( tempfile, 'w')
|
||
|
except:
|
||
|
error("Can't open scratchfile '%s', error '%s'" % (tempfile, sys.exc_info()[0]) )
|
||
|
|
||
|
linenum = 1
|
||
|
|
||
|
for l in inpath:
|
||
|
l=l.rstrip()
|
||
|
|
||
|
try:
|
||
|
x = int(l.split()[0])
|
||
|
except:
|
||
|
x = None
|
||
|
|
||
|
if x != None:
|
||
|
otherstuff = '' # break off non-chord items
|
||
|
cmt = ''
|
||
|
if l.count('//'):
|
||
|
l, cmt=l.split('//', 1)
|
||
|
|
||
|
for i,a in enumerate(l):
|
||
|
if a in('{[*'):
|
||
|
otherstuff=l[i:]
|
||
|
l=l[:i]
|
||
|
l=l.strip()
|
||
|
break
|
||
|
newl=['%-5s' % linenum]
|
||
|
|
||
|
linenum += 1 # the global line number
|
||
|
|
||
|
for a in l.split()[1:]: # do each chord item
|
||
|
newl.append(" %6s" % a)
|
||
|
|
||
|
if otherstuff: # join on non-chord stuff
|
||
|
newl.append(" ")
|
||
|
newl.append(otherstuff)
|
||
|
|
||
|
if cmt:
|
||
|
newl.append(" //")
|
||
|
newl.append(cmt)
|
||
|
|
||
|
newl=''.join(newl)
|
||
|
|
||
|
else:
|
||
|
newl = l
|
||
|
|
||
|
outpath.write(newl + "\n")
|
||
|
|
||
|
inpath.close()
|
||
|
outpath.close()
|
||
|
|
||
|
try:
|
||
|
os.remove(filename)
|
||
|
except:
|
||
|
error("Cannot delete '%s', new file '%s' remains" % (filename, tempfile) )
|
||
|
|
||
|
try:
|
||
|
os.rename(tempfile, filename)
|
||
|
except:
|
||
|
error("Cannot rename '%s' to '%s'." (tempfile, filename) )
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|