Commit 630b5bdf authored by alexandre's avatar alexandre
Browse files

proof of concept of an home made site generator

parent fb544852
venv/
venv*
*.pyc
*.pid
output/*
.sass-cache/
output/
build/
import glob
import jinja2
import markdown
def markdown2html(txt):
md = markdown.Markdown(output_format="html5", extensions=["extra", "meta"])
content = md.convert(txt)
metadata = md.Meta
return content, metadata
def foo():
templateLoader = jinja2.FileSystemLoader(searchpath="theme/templates")
templateEnv = jinja2.Environment(loader=templateLoader)
template = templateEnv.get_template('base.html')
events = []
for i in glob.glob('content/saison-16-17/*.md'):
f = open(i, "r")
content, metadata = markdown2html(f.read())
events.append(metadata)
f.close()
ctx = {
"events": events
}
return template.render(ctx)
if __name__ == '__main__':
import argparse
import sys
parser = argparse.ArgumentParser()
parser.add_argument('outfile', nargs='?', type=argparse.FileType('w'), default=sys.stdout)
args = parser.parse_args()
html = foo()
args.outfile.write(html)
# Copyright (C) 2015 Alexandre Leray
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Converts Markdown files to HTML
#
# Usage:
#
# ./generate.py infile.md outfile.html
import markdown
def md2html(src):
"""docstring for main"""
extensions = [
'extra',
]
md = markdown.Markdown(output_format="html5", extensions=extensions)
return md.convert(src)
if __name__ == '__main__':
import argparse
import sys
parser = argparse.ArgumentParser()
parser.add_argument('infile', nargs='?', type=argparse.FileType('r'), default=sys.stdin)
parser.add_argument('outfile', nargs='?', type=argparse.FileType('w'), default=sys.stdout)
args = parser.parse_args()
content = args.infile.read()
html = md2html(content)
args.outfile.write(html)
#! /usr/bin/env python
# Copyright (C) 2015 Alexandre Leray
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Fixes French typography in HTML files
#
# Usage:
#
# ./microtypo.py infile.md outfile.html
# echo "<p>...</p>" | ./microtypo.py - outfile.html
# echo "<p>...</p>" | ./microtypo.py | someotherprogramm
# ./microtypo.py infile.md outfile.html
import codecs
import html5lib
from html5lib.filters import whitespace
from html5lib_typogrify.french.filters import hyphenate, medor, figures, spaces
def fix_french(html):
# Using etree is important here because it does not suffer from a bug
# where a text featuring entities is split into various
# adjacent text nodes.
# (thanks html5lib folks for the tip).
# See <https://github.com/html5lib/html5lib-python/issues/208>
dom = html5lib.parseFragment(html, treebuilder="etree")
walker = html5lib.getTreeWalker("etree")
stream = walker(dom)
stream = whitespace.Filter(stream)
stream = medor.Filter(stream)
#stream = figures.Filter(stream)
stream = hyphenate.Filter(stream, min_len=9, left=4, right=5)
serializer = html5lib.serializer.HTMLSerializer(quote_attr_values=True,
alphabetical_attributes=True,
omit_optional_tags=False)
return serializer.render(stream)
if __name__ == '__main__':
import argparse
import sys
parser = argparse.ArgumentParser()
parser.add_argument('infile', nargs='?', type=argparse.FileType('r'), default=sys.stdin)
parser.add_argument('outfile', nargs='?', type=argparse.FileType('w'), default=sys.stdout)
args = parser.parse_args()
content = args.infile.read()
try:
unicode_content = content.decode("utf-8")
except UnicodeDecodeError:
unicode_content = content.decode("iso8559-1")
html = fix_french(unicode_content)
args.outfile.write(html.encode("utf-8"))
......@@ -7,6 +7,7 @@ Piece_author: Thi-Mai Nguyen
Event_type: Création danse
Reservation_link: http://balsamine.billetterie.it/index.php?...
???Dans le cadre de Brussels, dance ! Focus on contemporary dance.
Une femme errante et solitaire, tel un spectre hanté par ses débris de vie.{. phrase_intro}
......
......@@ -3,3 +3,6 @@ Date: 2017/xx/xx
???Start_date: 2017/05/01
???End_date: 2017/05/31
contenu à venir
......@@ -6,6 +6,7 @@ Time: 20h00 Entrée libre mais réservation conseillée !
Piece_author: Albert Dupont
Event_type: Théâtre
Reservation_link: http://balsamine.billetterie.it/index.php?...
??? Transquinquennal
......
......@@ -7,6 +7,7 @@ Piece_author:
Event_type: À la rencontre des écritures dramatiques contemporaines
Reservation_link: http://balsamine.billetterie.it/index.php?...
**Les lundis en coulisse** sont un moment de rencontre informel permettant de découvrir à chaque séance des textes dramatiques contemporains qui n'ont jamais été présentés, et qui sont les coups de coeur d'un invité, dit "Le Passeur".
Les rôles des pièces sont distribués au cours de la séance à ceux qui ont envie de s'aventurer dans une "lecture découverte" à voix haute, tandis que d'autres écoutent.
......
......@@ -7,6 +7,7 @@ Piece_author: En partenariat avec Ars musica
Event_type: Musique
Reservation_link: http://balsamine.billetterie.it/index.php?...
Les langages musicaux se métamorphosent et s’anamorphosent depuis 50 ans. Les compositeurs ont esquissé mille chemins en quête d’un langage au service de leur expression. **Les Mardis contemporains** proposent aux oreilles curieuses de découvrir ces facettes de la musique d’aujourd’hui, dans un programme pluriel qui dialogue avec l’histoire, la philosophie, la sociologie, mais aussi le cirque, le cinéma, la science ou l’architecture… Car loin d’être passive, la création musicale sait s’immiscer dans le débat en proposant une approche parfois décalée, parfois questionnante.
Pour deux concerts-rencontres, **Les mardis contemporains** prennent leurs quartiers à la Balsamine pour deux rendez-vous autour du cirque et l’architecture.
......
......@@ -7,6 +7,7 @@ Piece_author: Albert Dupont
Event_type: Création transversale danse / vidéo / musique / texte
Reservation_link: http://balsamine.billetterie.it/index.php?...
**Les oracles** est une création composée de deux parties distinctes et complémentaires **Percées** et **Prototype #1**. Ces deux pièces allient danse, poésie, création sonore et vidéo autour de thématiques à la fois féministes et intemporelles, traversées par les textes et la présence des écrivaines Catrine Godin et Martine Delvaux.
Retriturés, rebrassés, remixés et transposés en d’autres langages, gestes et mots se retrouvent ainsi propulsés sur scène. La question du genre dans nos perceptions et nos imaginaires contemporains est ici poétisée. Une proposition artistique belgo-québécoise.{. production}
......
......@@ -7,6 +7,7 @@ Piece_author: Lara Barsacq
Event_type: Création danse
Reservation_link: http://balsamine.billetterie.it/index.php?...
De l’image iconique à l’incarnation de l’icône, il n’y a qu’un pas chassé.{. phrase_intro}
Retraverser son Histoire, la revivre pour la danser, trouver le mouvement juste qui résume votre passé, qui justifie votre présence. Lost in Ballets russes est un seul en scène sur la transmission, sur l’héritage culturel au sens le plus noble qui soit.
......
Title: Should i stay or should i stay
Date: 2017/xx/xx
Start_date: 2017/11/16
End_date: 2017/11/24
Time: 20h30
Piece_author: Simon Thomas
Event_type: Théâtre
Reservation_link: http://balsamine.billetterie.it/index.php?...
foo: bar
????? Les 16, 20, 22, 23 et 24 Novembre à 20h30
Les quatre fantastiques reviennent et reprennent leur rengaine : Should I…{. phrase_intro}
Ils sont quatre, ils sont enfermés dans une pièce dont les portes ne sont pas verrouillées et pourtant ils ne peuvent pas sortir. Un casse-tête bien surréaliste et qui nous pose des questions très existentialistes.
Qui sont-ils, d’abord ? Comment les appelle-t-on ? Gabor ? Paola ? Héraclès ? Falbala ? Téflon ? Gargan ? Lazlo ? Axel ? Cyrus ? Mia ? Edmée ? Augustine ?
Où sont-ils coincés ? Près d’un lac ? Dans une fissure du temps ? Sur une scène ? Dans une autre dimension ?
Ils parlent de mort, d’exil sur Mars, d'accès à la vie éternelle, du temps qui passe, d'enlisement, de violence gratuite, ... Peu à peu, un système se met en place entraînant les protagonistes dans un trou noir. La suite des évènements, l’alignement des planètes, le hasard, et même la chance sont pour beaucoup dans la résolution de leur impasse. Les carottes sont-elles cuites ou pas ? À revoir, donc, puisqu’il s’agit d’une reprise. Non ? Mais oui, mais oui.
Écriture et mise en scène
: Simon Thomas
Avec
: Jules Churin, Héloïse Jadoul, Manon Joannotéguy, Lucas Meister
Premières élaborations au sein de l'Institut National Supérieur des Arts du Spectacle et des Techniques de Diffusion de la Fédération Wallonie-Bruxelles. Réalisé avec les soutiens du Théâtre la Balsamine, avec l'aide de la Fédération Wallonie-Bruxelles - Service du Théâtre et le soutien du Fonds Marie-Paule Delvaux Godenne, géré par la Fondation Roi Baudouin.{. production}
come content
......@@ -7,6 +7,7 @@ Piece_author: Théâtre de Galafronie
Event_type: Création théâtre
Reservation_link: http://balsamine.billetterie.it/index.php?...
Qu’est devenue l’antiquité sinon une surface de projection ? L’histoire d’un crime qui s’est trouvé une scène.{. phrase_intro}
Nous sommes dans les traces d’un continent englouti : le XXIème siècle. Un monde où le connu est devenu un horizon permanent. Que faire de la question que ce monde pose aux nouveaux fils de Rome ? Qui fonde les empires ? Le croyant ou l’athée ? Si **Trilogie de Rome** n’est pas un mythe fondateur, elle voudrait en être l’IRM. Carambolage d’êtres et de systèmes politiques à la suite de quoi l’Empire est devenu – et pour quelques siècles- un horizon indépassable.
......
......@@ -7,5 +7,4 @@ Event_type: Création transversale danse / vidéo / musique / texte
Reservation_link: http://balsamine.billetterie.it/index.php?...
(à développer)
(à développer)
SHELL := /usr/bin/env bash
MARKDOWN_FILES = $(shell find content -type f -name '*.md' | sort)
HTML_FILES = $(patsubst content/%.md, build/%.html, $(MARKDOWN_FILES))
# LAYOUT_FILES = $(shell find layout -type f -name '*.html')
# LESS_FILES = $(shell find css -type f -name '*.less')
# all: build/html/annak.html css src
all: html
html: $(HTML_FILES)
# css: build/css/main.css
# src: build/js/src.json
build/%.html : content/%.md
mkdir -p $(@D)
# python bin/md2html.py $< | \
# python bin/microtypo.py - $@
python bin/md2html.py $< $@
# build/html/annak.html : $(HTML_FILES)
# cat $^ > $@
.PHONY: clean
clean:
rm -fr build
<!DOCTYPE html>
<html>
<head>
<title>balsamine</title>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="initial-scale=1">
<link href="css/reset.css" rel="stylesheet">
<link href="css/screen.css" rel="stylesheet">
</head>
<body>
<header class="main-header">
<img class="logo" src="img/logo-balsa-16-17-large.svg">
<nav>
<ul>
<li><a href="#">pratique</a></li>
<li><a href="#">à propos</a></li>
<li><a href="#">billeterie</a></li>
</ul>
</nav>
</header>
<main class="main">
{% for event in events %}
<article class="show">
<header>
<h1>{{ event.title }}</h1>
<p class="date"><time datetime="2017-09-14">du 14 au 17 septembre</time></p>
<p class="???">Ouverture Mercredi 14 septembre</p>
</header>
</article>
{% endfor %}
<div class="scrollbar"></div>
</main>
<script src="http://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>
<script src="js/app.js"></script>
</body>
</html>
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment