diff --git a/jh18-ulm/__init__.py b/jh18-ulm/__init__.py new file mode 100644 index 0000000..e2d3a4d --- /dev/null +++ b/jh18-ulm/__init__.py @@ -0,0 +1,215 @@ +#!/usr/bin/python3 + + +from renderlib import * +from easing import * +from collections import deque + +# Please EDIT this URL for each local event of Jugend hackt! ### URL to Schedule-XML +scheduleUrl = 'https://jh.kohl.okfn.de/schedule-jh.xml' + +# For (really) too long titles +titlemap = { +} + +def introFrames(parameters): + # 8 Sekunden + + # 2 Sekunden Fadein logo und icongroup + frames = int(2*fps) + for i in range(0, frames): + yield ( + ('background', 'style', 'opacity', 1), + ('logo', 'style', 'opacity', "%.4f" % easeInCubic(i, 0, 1, frames)), + ('icongroup', 'style', 'opacity', "%.4f" % easeInCubic(i, 0, 1, frames)), + ('alpaca', 'style', 'opacity', 0), + ('text-bg', 'style', 'opacity', 0), + ('projectname', 'style', 'opacity', 0), + ('prenames', 'style', 'opacity', 0), + ) + + # 1 Sekunden Fadein alpaca und text-bg + frames = 1*fps + for i in range(0, frames): + yield ( + ('background', 'style', 'opacity', 1), + ('logo', 'style', 'opacity', 1), + ('icongroup', 'style', 'opacity', 1), + ('alpaca', 'style', 'opacity', "%.4f" % easeInCubic(i, 0, 1, frames)), + ('text-bg', 'style', 'opacity', "%.4f" % easeInCubic(i, 0, 1, frames)), + ('projectname', 'style', 'opacity', 0), + ('prenames', 'style', 'opacity', 0), + ) + + # 5 Sekunden Fadein #hack hack hack# projectname + prenames DIREKT einblenden, weil die Schriftart sich nicht faden lässt + frames = 5*fps + for i in range(0, frames): + yield ( + ('background', 'style', 'opacity', 1), + ('logo', 'style', 'opacity', 1), + ('icongroup', 'style', 'opacity', 1), + ('alpaca', 'style', 'opacity', 1), + ('text-bg', 'style', 'opacity', 1), + ('projectname', 'style', 'opacity', 1), + ('prenames', 'style', 'opacity', 1), + ) + +def outroFrames(parameters): + # 5 Sekunden + + # 1 Sekunden Fadein logo + frames = int(1*fps) + for i in range(0, frames): + yield ( + ('background', 'style', 'opacity', 1), + ('logo', 'style', 'opacity', "%.4f" % easeInCubic(i, 0, 1, frames)), + ('licensegroup', 'style', 'opacity', 0), + ('logogroup', 'style', 'opacity', 0), + ) + + # 1 Sekunden Fadein licensegroup + frames = 1*fps + for i in range(0, frames): + yield ( + ('background', 'style', 'opacity', 1), + ('logo', 'style', 'opacity', 1), + ('licensegroup', 'style', 'opacity', "%.4f" % easeInCubic(i, 0, 1, frames)), + ('logogroup', 'style', 'opacity', 0), + ) + + # 1 Sekunden Fadein logogroup + frames = 1*fps + for i in range(0, frames): + yield ( + ('background', 'style', 'opacity', 1), + ('logo', 'style', 'opacity', 1), + ('licensegroup', 'style', 'opacity', 1), + ('logogroup', 'style', 'opacity', "%.4f" % easeInCubic(i, 0, 1, frames)), + ) + + # 2 Sekunden stehen bleiben + frames = 2*fps + for i in range(0, frames): + yield ( + ('background', 'style', 'opacity', 1), + ('logo', 'style', 'opacity', 1), + ('licensegroup', 'style', 'opacity', 1), + ('logogroup', 'style', 'opacity', 1), + ) +def backgroundFrames(parameters): + # 20 Sekunden + + # 10 Sekunden alpaca einblenden + frames = 10*fps + for i in range(0, frames): + yield ( + ('background', 'style', 'opacity', 1), + ('alpaca', 'style', 'opacity', "%.4f" % easeInCubic(i, 0.25, 1, frames)), + ) + + # 10 Sekunden alpaca ausblenden + frames = 10*fps + for i in range(0, frames): + yield ( + ('background', 'style', 'opacity', 1), + ('alpaca', 'style', 'opacity', "%.4f" % easeInCubic(i, 1, -0.75, frames)), + ) + + +def pauseFrames(parameters): + # 6 Sekunden + + # 3 Sekunden alpaca einblenden + frames = 3*fps + for i in range(0, frames): + yield ( + ('pause', 'style', 'opacity', "%.4f" % easeInCubic(i, 1, -0.75, frames)), + ('alpaca', 'style', 'opacity', "%.4f" % easeInCubic(i, 0.25, 0.75, frames)), + ) + + # 3 Sekunden alpaca ausblenden + frames = 3*fps + for i in range(0, frames): + yield ( + ('pause', 'style', 'opacity', "%.4f" % easeInCubic(i, 0.25, 0.75, frames)), + ('alpaca', 'style', 'opacity', "%.4f" % easeInCubic(i, 1, -0.75, frames)), + ) + +def debug(): + s1 = 'Lorem, Ipsum, Ad Dolor... ' + s2 = 'Lorem, Ipsum, Ad Dolor, Sit, Nomen, Est, Omen, Urbi et Orbi... ' + render( + 'intro.svg', + '../intro.ts', + introFrames, + { + '$PROJECTNAME': s1.upper(), + '$prenames': s2, + } + ) + + render( + 'outro.svg', + '../outro.ts', + outroFrames + ) + + render( + 'background.svg', + '../background.ts', + backgroundFrames + ) + + render('pause.svg', + '../pause.ts', + pauseFrames + ) + +def tasks(queue, args, idlist, skiplist): + # iterate over all events extracted from the schedule xml-export + for event in events(scheduleUrl): + if event['room'] not in ('Salon', 'Haus der Gewerkschaften'): + print("skipping room %s (%s [%s])" % (event['room'], event['title'], event['id'])) + continue + if not (idlist==[]): + if 000000 in idlist: + print("skipping id (%s [%s])" % (event['title'], event['id'])) + continue + if int(event['id']) not in idlist: + print("skipping id (%s [%s])" % (event['title'], event['id'])) + continue + + # iterate over all events extracted from the schedule xml-export + for event in events(scheduleUrl): + #just select room Berlin + if event['room'] not in ('Salon', 'Haus der Gewerkschaften'): + print("skipping room %s (%s)" % (event['room'], event['title'])) + continue + + # generate a task description and put them into the queue + projectname = event['title'] + queue.put(Rendertask( + infile = 'intro.svg', + outfile = str(event['id'])+".ts", + sequence = introFrames, + parameters = { +# '$id': event['id'], + '$PROJECTNAME': projectname.upper(), +# '$subtitle': event['subtitle'], + '$prenames': 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 + )) diff --git a/jh18-ulm/artwork/background.png b/jh18-ulm/artwork/background.png new file mode 100644 index 0000000..d3df8e2 Binary files /dev/null and b/jh18-ulm/artwork/background.png differ diff --git a/jh18-ulm/artwork/background.svg b/jh18-ulm/artwork/background.svg new file mode 100644 index 0000000..889d1d2 --- /dev/null +++ b/jh18-ulm/artwork/background.svg @@ -0,0 +1,236 @@ + + + + + background-alpaka + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jh18-ulm/artwork/intro.svg b/jh18-ulm/artwork/intro.svg new file mode 100644 index 0000000..cb9ac24 --- /dev/null +++ b/jh18-ulm/artwork/intro.svg @@ -0,0 +1,682 @@ + + + + + ulm-intro + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $RROJECTNAME + + + + + + + + + + + + + + diff --git a/jh18-ulm/artwork/outro.svg b/jh18-ulm/artwork/outro.svg new file mode 100644 index 0000000..8124431 --- /dev/null +++ b/jh18-ulm/artwork/outro.svg @@ -0,0 +1,514 @@ + + + + + ulm-outro + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Eine Veranstaltung von: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Video by Verschwörhaus / C3VOC + CC BY 4.0 Jugend hackt + + + + + jugendhackt.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jh18-ulm/artwork/pause.svg b/jh18-ulm/artwork/pause.svg new file mode 100644 index 0000000..b682fcd --- /dev/null +++ b/jh18-ulm/artwork/pause.svg @@ -0,0 +1,1469 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +