aboutsummaryrefslogtreecommitdiffstats
path: root/run.py
blob: 4b4f0114b015323290cbd811c8135ba2cd24ab52 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import xml.etree.ElementTree as xml
import sys
import os

def main(file):
    processed_only = os.environ.get("PROCESSED_ONLY", "false").lower() == 'true'
    collection = xml.parse(file)
    root = collection.getroot()

    processed_keys = set()
    for node in root.findall(".//NODE"):
        name = node.get("Name")
        if name is not None and "** Processed" in str(name):
            for track_ref in node.findall("TRACK"):
                key = track_ref.get("Key")
                if key:
                    processed_keys.add(key)
            break

    tracks = []
    for track in root.iter("TRACK"):
        if processed_only and track.get("TrackID") not in processed_keys:
            continue
        tempos = track.findall("TEMPO")
        if len(tempos) > 1:
            bpms = {float(tempo.get("Bpm", "0")) for tempo in tempos}
            if len(bpms) > 1:
                name = track.get("Name")
                tracks.append(name)

    for name in tracks:
        print(name)

if __name__ == "__main__":
    main(str(sys.argv[1]))
git.ajschof.me — hosted by ajschofield — powered by cgit