diff options
| author | Kévin Le Gouguec <kevin.legouguec@gmail.com> | 2021-02-23 23:24:42 +0100 |
|---|---|---|
| committer | Kévin Le Gouguec <kevin.legouguec@gmail.com> | 2021-02-23 23:24:42 +0100 |
| commit | c9415599cafd67463b6a0a2781ecb47d14fdf976 (patch) | |
| tree | 635682ffe96526e89a1dd02bb42ba92080f92926 | |
| parent | b71cacbe6db38833176ec64c54596e928547a6b8 (diff) | |
| download | quatuorbellefeuille.com-c9415599cafd67463b6a0a2781ecb47d14fdf976.tar.xz | |
Add first program, plus script to generate them
| -rw-r--r-- | Makefile | 1 | ||||
| -rwxr-xr-x | build-programs.py | 69 | ||||
| -rw-r--r-- | programmes.html | 123 | ||||
| -rw-r--r-- | programmes.sh | 9 | ||||
| -rw-r--r-- | programs/beethoven.in | 13 | ||||
| -rw-r--r-- | programs/programs.list | 1 |
6 files changed, 94 insertions, 122 deletions
@@ -44,6 +44,7 @@ $(members_pages): $(OUTDIR)/%.html: %.in template.html | $(OUTDIR) ./build-member.sh $< $@ $(OUTDIR)/quatuor.html: quatuor.md +$(OUTDIR)/programmes.html: $(wildcard programs/*) clean: -rm -r $(OUTDIR) diff --git a/build-programs.py b/build-programs.py new file mode 100755 index 0000000..513abbe --- /dev/null +++ b/build-programs.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python3 + +import html +from pathlib import Path +import re +from subprocess import run + + +def read_programs(plist): + with open(plist) as l: + return tuple(Path('programs', p.strip()) for p in l) + + +PROGRAM_RE = re.compile('\n'.join(( + 'NOM : (?P<name>.+)', + 'COMPOSITEURS : (?P<composers>.+)', + 'DESCRIPTION :', + '(?P<description>.+)', + 'MORCEAUX :', + '(?P<pieces>.+)' +)), flags=re.DOTALL) + +def parse(filename): + with open(filename) as program: + return PROGRAM_RE.match(program.read()).groupdict() + + +BLOCK_TEMPLATE = '''\ +<details class="program"> + <summary> + <div class="name">{name}</div> + <div class="composers">{composers}</div> + <img class="button open" src="images/chevron-down.svg"> + <img class="button close" src="images/chevron-up.svg"> + </summary> +{description} +<ol class="pieces"> +{pieces} +</ol> +</details> +''' + +def piece(p): + if p == 'entracte': + return '<li class="intermission">entracte</li>' + return f'<li>{html.escape(p)}</li>' + +def print_program(filename): + info = parse(filename) + + info['description'] = run( + ('pandoc',), + input=info['description'], capture_output=True, text=True, check=True + ).stdout + + info['pieces'] = '\n'.join( + piece(p) for p in info['pieces'].splitlines() + ) + + print(BLOCK_TEMPLATE.format_map(info)) + + +def main(): + for p in read_programs('programs/programs.list'): + print_program(p) + + +if __name__ == '__main__': + main() diff --git a/programmes.html b/programmes.html index 2670d46..d8ac1f5 100644 --- a/programmes.html +++ b/programmes.html @@ -1,124 +1,3 @@ <main> - <details class="program"> - <summary> - <div class="name">Programme A</div> - <div class="composers">Foo, Bar, Baz</div> - <img class="button open" src="images/chevron-down.svg"> - <img class="button close" src="images/chevron-up.svg"> - </summary> - <p> - Un programme qui est sacrément bien nommé, parce que son - contenu correspond tout à fait à ce qui vient en tête - quand on lit son nom. Composé des œuvres suivantes : - </p> - <ol> - <li> - <p>La première - <span class="duration">6min 11s 101ms</span></p> - <p>Composée par quelqu'un à une époque.</p> - </li> - <li> - <p>La seconde - <span class="duration">6min 22s 202ms</span></p> - <p>Composée par quelqu'un d'autre à une autre époque.</p> - </li> - <li> - <p>La troisième - <span class="duration">6min 33s 303ms</span></p> - <p>Composée par quelqu'un d'autre à une autre époque.</p> - </li> - </ol> - </details> - - <details class="program"> - <summary> - <div class="name">Programme B</div> - <div class="composers">Foo, Bar, Baz</div> - <img class="button open" src="images/chevron-down.svg"> - <img class="button close" src="images/chevron-up.svg"> - </summary> - <p> - Un programme qui comme son nom l'indique, rend hommage - à ce à quoi il fait référence. Composé des œuvres - suivantes : - </p> - <ol> - <li> - <p>La première - <span class="duration">7min 11s 101ms</span></p> - <p>Composée par quelqu'un à une époque.</p> - </li> - <li> - <p>La seconde - <span class="duration">7min 22s 202ms</span></p> - <p>Composée par quelqu'un d'autre à une autre époque.</p> - </li> - <li> - <p>La troisième - <span class="duration">7min 33s 303ms</span></p> - <p>Composée par quelqu'un d'autre à une autre époque.</p> - </li> - </ol> - </details> - - <details class="program"> - <summary> - <div class="name">Programme C</div> - <div class="composers">Foo, Bar, Baz</div> - <img class="button open" src="images/chevron-down.svg"> - <img class="button close" src="images/chevron-up.svg"> - </summary> - <p> - Les morceaux de ce programme font référence à ceux à quoi - on peut s'attendre en lisant son nom. En voici la liste : - </p> - <ol> - <li> - <p>Le premier - <span class="duration">8min 11s 101ms</span></p> - <p>Composé par quelqu'un à une époque.</p> - </li> - <li> - <p>Le second - <span class="duration">8min 22s 202ms</span></p> - <p>Composé par quelqu'un d'autre à une autre époque.</p> - </li> - <li> - <p>Le troisième - <span class="duration">8min 33s 303ms</span></p> - <p>Composée par quelqu'un d'autre à une autre époque.</p> - </li> - </ol> - </details> - - <details class="program"> - <summary> - <div class="name">Programme D</div> - <div class="composers">Foo, Bar, Baz</div> - <img class="button open" src="images/chevron-down.svg"> - <img class="button close" src="images/chevron-up.svg"> - </summary> - <p> - Un programme dont les morceaux ont été choisis pour des - raisons en lien avec sa dénomination. Composé des œuvres - suivantes : - </p> - <ol> - <li> - <p>La première - <span class="duration">9min 11s 101ms</span></p> - <p>Composée par quelqu'un à une époque.</p> - </li> - <li> - <p>La première - <span class="duration">9min 22s 202ms</span></p> - <p>Composée par quelqu'un d'autre à une autre époque.</p> - </li> - <li> - <p>La troisième - <span class="duration">9min 33s 303ms</span></p> - <p>Composée par quelqu'un d'autre à une autre époque.</p> - </li> - </ol> - </details> +{PROGRAMS} </main> diff --git a/programmes.sh b/programmes.sh index 9c8d9e7..f03a636 100644 --- a/programmes.sh +++ b/programmes.sh @@ -1,3 +1,12 @@ +add-programs () +{ + sed -i \ + -e /'{PROGRAMS}'/'r '<(./build-programs.py) \ + -e /'{PROGRAMS}'/'c\' \ + $1 +} + title=Programmes stylesheets=programmes transforms=("$(transform-li-current-a programmes)") +postprocess=add-programs diff --git a/programs/beethoven.in b/programs/beethoven.in new file mode 100644 index 0000000..d2b2538 --- /dev/null +++ b/programs/beethoven.in @@ -0,0 +1,13 @@ +NOM : Beethoven +COMPOSITEURS : Beethoven, Beethoven, Beethoven +DESCRIPTION : +1h50 avec entracte + +> Croyez-vous que je pense à vos misérables cordes quand l'esprit me parle ? + +Voilà ce qu’aurait répondu Beethoven au quatuor Schuppanzigh qui se serait plaint de la difficulté technique de ses quatuors à cordes. Du trio au quatuor, explorez l’univers d’un Beethoven sans concession et sans limite. De l’infiniment petit à l’immensité de l’univers, de l’introspection la plus intime à la transcendance la plus totale, (re-)découvrez son écriture contrastée et éternellement moderne. +MORCEAUX : +Trio op.9 n°3 (1798) +Quatuor op.18 n°4 (1799) +entracte +Quatuor op.59 n°1 (1806) diff --git a/programs/programs.list b/programs/programs.list new file mode 100644 index 0000000..a137a86 --- /dev/null +++ b/programs/programs.list @@ -0,0 +1 @@ +beethoven.in |
