view abcfirstline.py @ 608:b4eb1753c80f

Up the resolution of the web graphics. This will result in increased image size, on the order of 18k->32k, but I'm fed up with the blurriness of the current images. Ideally I'd move to SVG for the web images, but Mick reckons that SVG support on mobile browsers is still limited. Suspect he's probably right.
author Jim Hague <jim.hague@acm.org>
date Fri, 04 Nov 2016 23:31:40 +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)