mirror of https://github.com/patacrep/patacrep.git
Browse Source
chords used in songs indexed by chords names and chords positions.remotes/origin/split-songs
Alexandre Dupas
15 years ago
1 changed files with 83 additions and 0 deletions
@ -0,0 +1,83 @@ |
|||||
|
#!/usr/bin/python |
||||
|
# |
||||
|
|
||||
|
import sys |
||||
|
import glob |
||||
|
import re |
||||
|
from optparse import OptionParser |
||||
|
|
||||
|
# Pattern set to ignore latex command in title prefix |
||||
|
gtabPattern = re.compile(r"\\gtab\{(.*)\}\{(.*)\}"); |
||||
|
|
||||
|
def main(): |
||||
|
usage = "usage: %prog [options]" |
||||
|
parser = OptionParser(usage) |
||||
|
parser.add_option("-o", "--output", dest="filename", |
||||
|
help="write result into FILE", metavar="FILE") |
||||
|
(options, args) = parser.parse_args() |
||||
|
|
||||
|
# Options processing |
||||
|
if options.filename: |
||||
|
output = open(options.filename,"w") |
||||
|
else: |
||||
|
output = sys.stdout |
||||
|
|
||||
|
# Actual processing |
||||
|
chords = dict() |
||||
|
positions = dict() |
||||
|
|
||||
|
songfiles = glob.glob('songs/*/*.sg') |
||||
|
|
||||
|
for file in songfiles: |
||||
|
for line in open(file): |
||||
|
result = gtabPattern.match(line) |
||||
|
if result: |
||||
|
(chord,position) = result.groups() |
||||
|
if not chords.has_key(chord): |
||||
|
chords[chord] = set() |
||||
|
chords[chord].add(position) |
||||
|
if not positions.has_key(position): |
||||
|
positions[position] = set() |
||||
|
positions[position].add(chord) |
||||
|
|
||||
|
document = [ |
||||
|
'\\documentclass{article}', |
||||
|
'\\usepackage[chorded]{songs}', |
||||
|
'\\usepackage[utf8]{inputenc}', |
||||
|
'\\title{Accords}', |
||||
|
'\\author{Romain Goffe \\and Alexandre Dupas}', |
||||
|
'\\date{}', |
||||
|
'\\begin{document}', |
||||
|
'\\maketitle', |
||||
|
'\\begin{songs}{}', |
||||
|
] |
||||
|
|
||||
|
document.append('\\section{Chords names}') |
||||
|
|
||||
|
chordskeys = chords.keys() |
||||
|
chordskeys.sort() |
||||
|
|
||||
|
for k in chordskeys: |
||||
|
document.append('\\subsection{'+k.replace('#','\\#').replace('&','\\&')+'}') |
||||
|
for p in chords[k]: |
||||
|
document.append('\\gtab{'+k+'}{'+p+'}') |
||||
|
|
||||
|
document.append('\\section{Chords names}') |
||||
|
|
||||
|
positionskeys = positions.keys() |
||||
|
positionskeys.sort() |
||||
|
|
||||
|
for k in positionskeys: |
||||
|
document.append('\\subsection{'+k+'}') |
||||
|
for p in positions[k]: |
||||
|
document.append('\\gtab{'+p+'}{'+k+'}') |
||||
|
|
||||
|
document.extend([ |
||||
|
'\\end{songs}', |
||||
|
'\\end{document}', |
||||
|
]) |
||||
|
|
||||
|
output.write('\n'.join(document)) |
||||
|
|
||||
|
if __name__ == '__main__': |
||||
|
main() |
Loading…
Reference in new issue