diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..caf8ba4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +ly +*.pyc +__pycache__ diff --git a/generate_list.py b/generate_list.py new file mode 100755 index 0000000..a3a508d --- /dev/null +++ b/generate_list.py @@ -0,0 +1,112 @@ +#!/usr/bin/env python3 + +# Combine sets and tunes into TeXable setlist +# endproduct should look somewhat like example.tex +from tunes_db.tune import Tune +from tunes_db.sets import sets +from tunes_db.tunes import tunes + +import re + + +heading = """ +\\newcommand{\\tunesep}{ - } +\\newcommand{\\amountofcols}{6} +\\newcommand{\seventeen}[1]{\\textit{#1}} +\\newcommand{\\noscore}{ - } + +\\begin{table}[h!] + \\centering + \\begin{adjustbox}{max width=\\textwidth} +\\begin{tabular}{| r | l + | l %pipes + | l %bass + | l %tenor + | l %side + |} + \\multicolumn{\\amountofcols}{c}{ \\textbf{setlist 2017 seaforth highlanders of holland }} +\\\\ + +\\hline +set & titel +& pipes %Pipes +& bass %Bass +& tenor %Tenor +& snare %Side +\\\\%""" + +end = """\end{tabular} +\end{adjustbox} +\end{table}""" + +def setlist_line_score(scorelist, instrument): + # No Score set + # Using scorelist = "", we can get empty lines + if not scorelist and scorelist != "" : + return '\\noscore{}' + + tex_scorelist = "" + for score in scorelist: + if re.match('std\d\d', score): + number = score.replace('std','') + # This is a standard, we point to the instruments standard + if instrument == "side": + if number == "24" or number == "44": + tex_scorelist += "\\hyperref[standards-24-44-standards.side]{Std. "+ number[0] + '/' + number[1] + "}" + continue + elif number == "34": + tex_scorelist += "\\hyperref[standards-34-standards.side]{Std. "+ number[0] + '/' + number[1] + "}" + continue + elif number == "68": + tex_scorelist += "\\hyperref[standards-68-standards.side]{Std. "+ number[0] + '/' + number[1] + "}" + continue + elif number == "98": + tex_scorelist += "\\hyperref[standards-98-standards.side]{Std. "+ number[0] + '/' + number[1] + "}" + continue + elif instrument == "bass": + tex_scorelist += "\\hyperref[standards-standards.bass]{Std. "+ number[0] + '/' + number[1] + "}" + continue + elif instrument == "tenor": + tex_scorelist += "\\hyperref[standards-standards.tenor]{Std. "+ number[0] + '/' + number[1] + "}" + continue + + tex_scorelist += "\\pageref{" + score.replace('/','-') + "}" + + return tex_scorelist + +def setlist_line(prefix, title, pipes, bass, tenor, side): + pipes = setlist_line_score(pipes, 'pipes') + bass = setlist_line_score(bass, 'bass') + tenor = setlist_line_score(tenor, 'tenor') + side = setlist_line_score(side, 'side') + + return "{prefix}\t& {title}\n\t& {pipes} %Pipes\n\t& {bass} %Bass\n\t& {tenor} %Tenor\n\t& {side} %Side\n\\\\ %".format(prefix = prefix, title = title, pipes = pipes, bass = bass, tenor = tenor, side = side) + + +# 1 & 4/4 \hyperref[4-4-marches-bonnie-galloway-pipes]{Bonnie Galloway}\tunesep\hyperref[4-4-marches-were-no-awa-tae-bide-awa-pipes]{We're No Awa Tae Bide Awa} +# & \pageref{4-4-marches-bonnie-galloway-pipes}\tunesep\pageref{4-4-marches-were-no-awa-tae-bide-awa-pipes}%Pipes +# & \hyperref[standards-standards.bass]{Std. 4/4}%Bass +# & \hyperref[standards-standards.tenor]{Std. 4/4}%Tenor +# & \hyperref[standards-24-44-standards.side]{Std. 4/4}%Side +#\\ % + +print(heading) +print("\\hline") +for count, tuneset in enumerate(sets): + if count % 5 == 0 and count != 0: + print(setlist_line("","","","","","")) + + print(setlist_line(tuneset.setid, tuneset.name, **tuneset.instruments)) + +print("""\\hline + + \\multicolumn{\\amountofcols}{|c|}{Losse Nummers}\\\\% + +\\hline""") + +for count, tune in enumerate(tunes): + if count % 5 == 0 and count != 0: + print(setlist_line("","","","","",'')) + print(setlist_line("", tune.name, **tune.instruments)) + +print(end)