From c9415599cafd67463b6a0a2781ecb47d14fdf976 Mon Sep 17 00:00:00 2001 From: Kévin Le Gouguec Date: Tue, 23 Feb 2021 23:24:42 +0100 Subject: Add first program, plus script to generate them --- Makefile | 1 + build-programs.py | 69 +++++++++++++++++++++++++++ programmes.html | 123 +------------------------------------------------ programmes.sh | 9 ++++ programs/beethoven.in | 13 ++++++ programs/programs.list | 1 + 6 files changed, 94 insertions(+), 122 deletions(-) create mode 100755 build-programs.py create mode 100644 programs/beethoven.in create mode 100644 programs/programs.list diff --git a/Makefile b/Makefile index e296e2c..d6485f1 100644 --- a/Makefile +++ b/Makefile @@ -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.+)', + 'COMPOSITEURS : (?P.+)', + 'DESCRIPTION :', + '(?P.+)', + 'MORCEAUX :', + '(?P.+)' +)), flags=re.DOTALL) + +def parse(filename): + with open(filename) as program: + return PROGRAM_RE.match(program.read()).groupdict() + + +BLOCK_TEMPLATE = '''\ +
+ +
{name}
+
{composers}
+ + +
+{description} +
    +{pieces} +
+
+''' + +def piece(p): + if p == 'entracte': + return '
  • entracte
  • ' + return f'
  • {html.escape(p)}
  • ' + +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 @@
    -
    - -
    Programme A
    -
    Foo, Bar, Baz
    - - -
    -

    - 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 : -

    -
      -
    1. -

      La première - 6min 11s 101ms

      -

      Composée par quelqu'un à une époque.

      -
    2. -
    3. -

      La seconde - 6min 22s 202ms

      -

      Composée par quelqu'un d'autre à une autre époque.

      -
    4. -
    5. -

      La troisième - 6min 33s 303ms

      -

      Composée par quelqu'un d'autre à une autre époque.

      -
    6. -
    -
    - -
    - -
    Programme B
    -
    Foo, Bar, Baz
    - - -
    -

    - Un programme qui comme son nom l'indique, rend hommage - à ce à quoi il fait référence. Composé des œuvres - suivantes : -

    -
      -
    1. -

      La première - 7min 11s 101ms

      -

      Composée par quelqu'un à une époque.

      -
    2. -
    3. -

      La seconde - 7min 22s 202ms

      -

      Composée par quelqu'un d'autre à une autre époque.

      -
    4. -
    5. -

      La troisième - 7min 33s 303ms

      -

      Composée par quelqu'un d'autre à une autre époque.

      -
    6. -
    -
    - -
    - -
    Programme C
    -
    Foo, Bar, Baz
    - - -
    -

    - Les morceaux de ce programme font référence à ceux à quoi - on peut s'attendre en lisant son nom. En voici la liste : -

    -
      -
    1. -

      Le premier - 8min 11s 101ms

      -

      Composé par quelqu'un à une époque.

      -
    2. -
    3. -

      Le second - 8min 22s 202ms

      -

      Composé par quelqu'un d'autre à une autre époque.

      -
    4. -
    5. -

      Le troisième - 8min 33s 303ms

      -

      Composée par quelqu'un d'autre à une autre époque.

      -
    6. -
    -
    - -
    - -
    Programme D
    -
    Foo, Bar, Baz
    - - -
    -

    - Un programme dont les morceaux ont été choisis pour des - raisons en lien avec sa dénomination. Composé des œuvres - suivantes : -

    -
      -
    1. -

      La première - 9min 11s 101ms

      -

      Composée par quelqu'un à une époque.

      -
    2. -
    3. -

      La première - 9min 22s 202ms

      -

      Composée par quelqu'un d'autre à une autre époque.

      -
    4. -
    5. -

      La troisième - 9min 33s 303ms

      -

      Composée par quelqu'un d'autre à une autre époque.

      -
    6. -
    -
    +{PROGRAMS}
    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 -- cgit v1.2.3