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 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + $personnames $title + + 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 @@ + + + + + + + + image/svg+xml + + + + + + + + + + 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + PauseStreams werden später fortgesetzt + breakstreaming will resume later + + 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 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + +