Orchestration cleanup

This commit is contained in:
Tris Forster 2022-12-10 10:18:45 +11:00
parent 59deeffefe
commit 7e47eec4ae
3 changed files with 24 additions and 21 deletions

View File

@ -42,6 +42,7 @@ crt Cornet
crtt Cornett (Zink)
cv Child's voice
db Double Bass
drum Drumset
dlcn Dulcian
dom Domra
dulc Dulcimer
@ -139,6 +140,18 @@ xyl Xylophone
zith Zither
"""
ORCHESTRATIONS = {
'SATB': ('S', 'A', 'T', 'B'),
'String Quartet': ('Vln1', 'Vln2', 'Vla', 'Vc'),
'String Orchestra': ('Vln1', 'Vln2', 'Vla', 'Vc', 'Cb'),
'Chamber Orchestra': ('Vln1', 'Vln2', 'Vla', 'Vc', 'Cb',
'Fl1', 'Fl2', 'Cl1', 'Cl2', 'Hn1', 'Hn2',
'Tpt1', 'Tpt2', 'Tbn1', 'Tbn2', 'Tuba',
'Timp', 'Drum', 'Perc'),
'Custom': (),
}
INSTRUMENTS = []
for line in ABBREVIATIONS.split('\n'):
parts = line.strip().split(maxsplit=1)
@ -146,8 +159,8 @@ for line in ABBREVIATIONS.split('\n'):
name, _, _ = parts[1].partition('(')
INSTRUMENTS.append((parts[0], name))
INSTRUMENT_LOOKUP = dict(INSTRUMENTS)
TAG_LOOKUP = dict( ( (x[1].lower(), x[0]) for x in INSTRUMENTS ) )
INSTRUMENT_NAMES = dict(INSTRUMENTS)
INSTRUMENT_TAGS = dict( ( (x[1].lower(), x[0]) for x in INSTRUMENTS ) )
class Instrument(namedtuple('Instrument', ('name', 'variant'), defaults=[None])):
@ -162,7 +175,7 @@ class Instrument(namedtuple('Instrument', ('name', 'variant'), defaults=[None]))
Instrument(name='Jaws Harp', variant=None)
"""
abbr, _, variant = tag.partition('-')
name = INSTRUMENT_LOOKUP.get(abbr.lower(), abbr)
name = INSTRUMENT_NAMES.get(abbr.lower(), abbr)
if variant:
return cls(name, variant)
@ -176,7 +189,7 @@ class Instrument(namedtuple('Instrument', ('name', 'variant'), defaults=[None]))
>>> Instrument('Double Bass').abbreviate()
'db'
"""
tag = TAG_LOOKUP.get(self.name.lower())
tag = INSTRUMENT_TAGS.get(self.name.lower())
if self.variant:
tag = f"{tag}-{self.variant}"
return tag

View File

@ -25,18 +25,6 @@ logger = logging.getLogger(__name__)
#logger.info("Library storage: %s", library_storage.__class__.__name__)
'''
ORCHESTRATIONS = {
'SATB': ('S', 'A', 'T', 'B'),
'String Quartet': ('Vln1', 'Vln2', 'Vla', 'Vc'),
'String Orchestra': ('Vln1', 'Vln2', 'Vla', 'Vc', 'Cb'),
'Chamber Orchestra': ('Vln1', 'Vln2', 'Vla', 'Vc', 'Cb',
'Fl1', 'Fl2', 'Cl1', 'Cl2', 'Hn1', 'Hn2',
'Tpt1', 'Tpt2', 'Tbn1', 'Tbn2', 'Tuba',
'Timp', 'Drum', 'Perc'),
'Custom': (),
}
'''
DOCTYPES = [
(1, 'PDF'),

View File

@ -16,7 +16,7 @@ import re
from interface.views import EnsembleMixin, ProjectMixin
from interface.models import Project
from .models import Collection, Work, Document, Section
from .imslp import INSTRUMENTS, TAG_LOOKUP
from .imslp import INSTRUMENT_TAGS, INSTRUMENTS
from . import forms, models
from .pdf_utils import extract_pages, extract_and_concat
@ -277,13 +277,15 @@ class WorkAddDocumentView(EnsembleMixin, CreateView):
# auto tag the document
name, _ = os.path.splitext(os.path.basename(doc.upload.name))
parts = re.split(r'[^A-Za-z]+', name.lower())
parts = re.split(r'[^A-Za-z]+', name)
parts.reverse()
for word in parts:
print(word)
if word in TAG_LOOKUP:
doc.sections.create(tag=TAG_LOOKUP[word])
try:
tag = INSTRUMENT_TAGS[word.lower()]
doc.sections.create(tag=tag)
break
except KeyError:
pass
if self.request.headers['Accept'] == 'application/json':