diff --git a/cc15/__init__.py b/cc15/__init__.py
new file mode 100644
index 0000000..c48bacc
--- /dev/null
+++ b/cc15/__init__.py
@@ -0,0 +1,180 @@
+#!/usr/bin/python3
+
+import subprocess
+from renderlib import *
+
+# URL to Schedule-XML
+scheduleUrl = 'http://www.fossgis.de/konferenz/2014/programm/schedule.de.xml'
+
+# For (really) too long titles
+titlemap = {
+}
+
+
+def outroFrames(parameters):
+ # 5 Sekunden
+
+ # 1 Sekunden Pause
+ frames = 1*fps
+ for i in range(0, frames):
+ yield (
+ )
+
+ # 3 Sekunde Fade-out to sublab
+ frames = 3*fps
+ for i in range(0, frames):
+ yield (
+ ('cc15logo', 'style', 'opacity', "%.4f" % easeOutCubic(i, 1, -1, frames)),
+ ('backdrop', 'style', 'opacity', "%.4f" % easeOutCubic(i, 1, -1, frames)),
+ ('sublab', 'style', 'opacity', "%.4f" % easeOutCubic(i, 0, 1, frames)),
+ )
+
+ # 1 Sekunde Pause
+ frames = 1*fps
+ for i in range(0, frames):
+ yield (
+ )
+
+def introFrames(parameters):
+ # 5 Sekunden
+
+ # 2 Sekunden Fade-in
+ frames = 2*fps
+ for i in range(0, frames):
+ yield (
+ ('box', 'style', 'opacity', "%.4f" % easeOutCubic(i, 0, 0.6627451, frames)),
+ ('personname', 'style', 'opacity', "%.4f" % easeOutCubic(i, 0, 1, frames)),
+ ('title', 'style', 'opacity', "%.4f" % easeOutCubic(i, 0, 1, frames)),
+ )
+
+ # 3 Sekunden stehen bleiben
+ frames = 3*fps
+ for i in range(0, frames):
+ yield (
+ # ('box', 'style', 'opacity', '0.6627451'),
+ # ('personname', 'style', 'opacity', '1'),
+ # ('title', 'style', 'opacity', '1'),
+ )
+
+def pauseFrames(parameters):
+ # 12 Sekunden
+
+ # 2 Sekunden Text1 stehen
+ frames = 2*fps
+ for i in range(0, frames):
+ yield (
+ ('text-de', 'style', 'opacity', 1),
+ ('text-en', 'style', 'opacity', 0)
+ )
+
+ # 2 Sekunden Fadeout text-de
+ frames = 2*fps
+ for i in range(0, frames):
+ yield (
+ ('text-de', 'style', 'opacity', "%.4f" % (1-easeOutCubic(i, 0, 1, frames))),
+ ('text-en', 'style', 'opacity', 0)
+ )
+
+ # 2 Sekunden Fadein text-en
+ frames = 2*fps
+ for i in range(0, frames):
+ yield (
+ ('text-de', 'style', 'opacity', 0),
+ ('text-en', 'style', 'opacity', "%.4f" % easeOutCubic(i, 0, 1, frames))
+ )
+
+ # 2 Sekunden text-en stehen
+ frames = 2*fps
+ for i in range(0, frames):
+ yield (
+ ('text-de', 'style', 'opacity', 0),
+ ('text-en', 'style', 'opacity', 1)
+ )
+
+ # 2 Sekunden Fadeout text-en
+ frames = 2*fps
+ for i in range(0, frames):
+ yield (
+ ('text-de', 'style', 'opacity', 0),
+ ('text-en', 'style', 'opacity', "%.4f" % (1-easeOutCubic(i, 0, 1, frames)))
+ )
+
+ # 2 Sekunden Fadein text-de
+ frames = 2*fps
+ for i in range(0, frames):
+ yield (
+ ('text-de', 'style', 'opacity', "%.4f" % (easeOutCubic(i, 0, 1, frames))),
+ ('text-en', 'style', 'opacity', 0)
+ )
+
+def debug():
+ render(
+ 'intro.svg',
+ '../intro.ts',
+ introFrames,
+ {
+ '$id': 667,
+ '$title': 'Wir kochen Hagebuttenmarmelade und denken uns lange Vortragsnamen aus',
+ '$subtitle': '',
+ '$personnames': 'Prof. Wolfgang Kleinwächter'
+ }
+ )
+
+ render(
+ 'outro.svg',
+ '../outro.ts',
+ outroFrames
+ )
+
+ render('pause.svg',
+ '../pause.ts',
+ pauseFrames
+ )
+
+def tasks(queue):
+ # iterate over all events extracted from the schedule xml-export
+ for event in events(scheduleUrl, titlemap):
+
+ # generate a task description and put them into the queue
+ queue.put(Rendertask(
+ infile = 'intro.svg',
+ outfile = str(event['id'])+".ts",
+ sequence = introFrames,
+ parameters = {
+ '$id': event['id'],
+ '$title': event['title'],
+ '$subtitle': event['subtitle'],
+ '$personnames': event['personnames']
+ }
+ ))
+
+ # place a task for the outro into the queue
+ queue.put(Rendertask(
+ infile = 'outro.svg',
+ outfile = 'outro.ts',
+ sequence = outroFrames
+ ))
+
+ # place the pause-sequence into the queue
+ queue.put(Rendertask(
+ infile = 'pause.svg',
+ outfile = 'pause.ts',
+ sequence = pauseFrames
+ ))
+
+def ticket(ticket):
+ return Rendertask(
+ infile = 'intro.svg',
+ sequence = introFrames,
+ parameters = {
+ '$id': ticket['Fahrplan.ID'],
+ '$title': ticket.get('Fahrplan.Title'),
+ '$subtitle': ticket.get('Fahrplan.Subtitle'),
+ '$personnames': ticket.get('Fahrplan.Person_list')
+ }
+ )
+
+def deploy(ticket, task):
+ for encoder in range(1, 6):
+ print(colored("--> rsync'ing to encoder{n}".format(n=encoder), 'green'))
+ subprocess.check_call('rsync -v --bwlimit=1000 --progress -e="ssh -A voc@gw.ep14.c3voc.de ssh -A voc@encoder{n}.lan.c3voc.de" {file} :{file}'.format(n=encoder, file=task.outfile), shell=True)
diff --git a/cc15/artwork/CryptoCon15_Logo.jpg b/cc15/artwork/CryptoCon15_Logo.jpg
new file mode 100644
index 0000000..b7396ae
Binary files /dev/null and b/cc15/artwork/CryptoCon15_Logo.jpg differ
diff --git a/cc15/artwork/CryptoCon15_Logo_transparent.eps b/cc15/artwork/CryptoCon15_Logo_transparent.eps
new file mode 100644
index 0000000..b5f6045
Binary files /dev/null and b/cc15/artwork/CryptoCon15_Logo_transparent.eps differ
diff --git a/cc15/artwork/backdrop.jpg b/cc15/artwork/backdrop.jpg
new file mode 100644
index 0000000..716f33c
Binary files /dev/null and b/cc15/artwork/backdrop.jpg differ
diff --git a/cc15/artwork/by-sa.svg b/cc15/artwork/by-sa.svg
new file mode 100644
index 0000000..f850297
--- /dev/null
+++ b/cc15/artwork/by-sa.svg
@@ -0,0 +1,199 @@
+
+
+
diff --git a/cc15/artwork/cc15_logo.jpg b/cc15/artwork/cc15_logo.jpg
new file mode 100644
index 0000000..4595280
Binary files /dev/null and b/cc15/artwork/cc15_logo.jpg differ
diff --git a/cc15/artwork/cc15_logo_transparent.png b/cc15/artwork/cc15_logo_transparent.png
new file mode 100644
index 0000000..de8531d
Binary files /dev/null and b/cc15/artwork/cc15_logo_transparent.png differ
diff --git a/cc15/artwork/intro.svg b/cc15/artwork/intro.svg
new file mode 100644
index 0000000..23fe61a
--- /dev/null
+++ b/cc15/artwork/intro.svg
@@ -0,0 +1,109 @@
+
+
+
+
diff --git a/cc15/artwork/logo_cccvoc.svg b/cc15/artwork/logo_cccvoc.svg
new file mode 100644
index 0000000..66c33b4
--- /dev/null
+++ b/cc15/artwork/logo_cccvoc.svg
@@ -0,0 +1,69 @@
+
+
+
+
diff --git a/cc15/artwork/outro.svg b/cc15/artwork/outro.svg
new file mode 100644
index 0000000..dda3f72
--- /dev/null
+++ b/cc15/artwork/outro.svg
@@ -0,0 +1,315 @@
+
+
+
+
diff --git a/cc15/artwork/overlay.png b/cc15/artwork/overlay.png
new file mode 100644
index 0000000..7d69501
Binary files /dev/null and b/cc15/artwork/overlay.png differ
diff --git a/cc15/artwork/overlay.svg b/cc15/artwork/overlay.svg
new file mode 100644
index 0000000..616af6f
--- /dev/null
+++ b/cc15/artwork/overlay.svg
@@ -0,0 +1,71 @@
+
+
+
+
diff --git a/cc15/artwork/pause.svg b/cc15/artwork/pause.svg
new file mode 100644
index 0000000..4646db5
--- /dev/null
+++ b/cc15/artwork/pause.svg
@@ -0,0 +1,218 @@
+
+
+
+
diff --git a/cc15/artwork/sublab.svg b/cc15/artwork/sublab.svg
new file mode 100644
index 0000000..1cbf1ca
--- /dev/null
+++ b/cc15/artwork/sublab.svg
@@ -0,0 +1,63 @@
+
+
+
+