view abcfirstline.py @ 846:6bd946700312

Only the first title should be converted to from sort to display order. Subtitles don't influence display order, so don't need to be touched. OK, I now have a subtitle with a comma ('Ring the Bell, Watchman'). If it was the main title I'd have to do something else, but it isn't, so for now...
author Jim Hague <jim.hague@acm.org>
date Sat, 23 Mar 2019 06:59:37 +0000
parents 1b79867b4f35
children
line wrap: on
line source

#!/usr/bin/env python3
#
# Write out a modified version of a .abc file with just the data
# to print the first line of the music only.
#

import sys

def process(inf):
    continued = False
    print("X:1")
    for line in inf:
        line = line.strip()
        # If it is empty or starts "%", ignore it.
        if len(line) == 0 or line[0] == "%":
            continue

        # Is it a header line? I.e. does it start LETTER (or +) COLON?
        # If so, output only ones we need.
        start = line[:2]
        if len(start) > 1 and start[1] == ":" and (start[0].isalpha() or start[0] == '+'):
            if start[0] in ["M", "K", "L"]:
                print(line)
        # Output line. If it is a continuation, output at most one
        # continuation.
        else:
            print(line)
            if continued or line[-1] != "\\":
                break
            else:
                continued = True

if len(sys.argv) > 1:
    for arg in sys.argv[1:]:
        try:
            inf = open(arg, "r")
            process(inf)
        finally:
            inf.close()
else:
    process(sys.stdin)