diff --git a/hackerhotel2024/__init__.py b/hackerhotel2024/__init__.py
new file mode 100644
index 0000000..ca82d00
--- /dev/null
+++ b/hackerhotel2024/__init__.py
@@ -0,0 +1,140 @@
+#!/usr/bin/python3
+
+from renderlib import *
+from schedulelib import *
+from easing import *
+
+# URL to Schedule-XML
+scheduleUrl = 'https://pretalx.hackerhotel.nl/hackerhotel-2024/schedule.xml'
+
+def bounce(i, min, max, frames):
+ if i == frames - 1:
+ return 0
+
+ if i <= frames/2:
+ return easeInOutQuad(i, min, max, frames/2)
+ else:
+ return max - easeInOutQuad(i - frames/2, min, max, frames/2)
+
+def introFrames(parameters):
+ # 3 Sekunde Text Fadein
+ frames = 1*fps
+ for i in range(0, frames):
+ yield (
+ ('textblock', 'style', 'opacity', "%.4f" % easeLinear(i, 0, 1, frames)),
+ )
+
+ # 4 Sekunden stehen lassen
+ frames = 4*fps
+ for i in range(0, frames):
+ yield ()
+
+ # 1 Sekunde Fade to black layer
+ frames = 1*fps
+ for i in range(0, frames):
+ yield (
+ ('all', 'style', 'opacity', "%.4f" % easeLinear(i, 1, -1, frames)),
+ ('textblock', 'style', 'opacity', "%.4f" % easeLinear(i, 1, -1, frames)),
+ )
+
+def pauseFrames(parameters):
+ #5 Seconds Fade-In Hacker Fade-Out Hotel
+ frames = 5*fps
+ for i in range(0, frames):
+ yield (
+ ('logohacker', 'style', 'opacity', "%.4f" % easeLinear(i, 0, 1, frames)),
+ ('logohotel', 'style', 'opacity', "%.4f" % easeLinear(i, 1, -1, frames)),
+ )
+ #5 Seconds Fade-In Hotel Fade-Out Hacker
+ frames = 5*fps
+ for i in range(0, frames):
+ yield (
+ ('logohacker', 'style', 'opacity', "%.4f" % easeLinear(i, 1, -1, frames)),
+ ('logohotel', 'style', 'opacity', "%.4f" % easeLinear(i, 0, 1, frames)),
+ )
+
+def outroFrames(p):
+ # 4 Sekunden stehen bleiben
+ frames = 4*fps
+ for i in range(0, frames):
+ yield []
+ # 1 Sekunde Fade to black layer
+ frames = 1*fps
+ for i in range(0, frames):
+ yield (
+ ('all', 'style', 'opacity', "%.4f" % easeLinear(i, 1, -1, frames)),
+ )
+
+def debug():
+ render(
+ 'intro.svg',
+ '../intro.ts',
+ introFrames,
+ {
+ '$ID': 4711,
+ '$TITLE': "Long Long Long title is LONG",
+ '$SUBTITLE': 'Long Long Long Long subtitle is LONGER',
+ '$SPEAKER': 'Long Name of Dr. Dr. Prof. Dr. Long Long'
+ }
+ )
+
+ render(
+ 'pause.svg',
+ '../pause.ts',
+ pauseFrames
+ )
+
+# render(
+# 'infobeamer.svg',
+# '../infobeamer.ts',
+# pauseFrames
+# )
+
+ render(
+ 'outro.svg',
+ '../outro.ts',
+ outroFrames
+ )
+
+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 ('Leonardo Da Vinci', 'Rembrandt', 'Willem van Oranje'):
+ 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
+
+ # generate a task description and put it 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'],
+ '$SPEAKER': event['personnames']
+ }
+ ))
+
+ # place a task for the outro into the queue
+ if not "out" in skiplist:
+ queue.put(Rendertask(
+ infile = 'outro.svg',
+ outfile = 'outro.ts',
+ sequence = outroFrames
+ ))
+
+ # place the pause-sequence into the queue
+ if not "pause" in skiplist:
+ queue.put(Rendertask(
+ infile = 'pause.svg',
+ outfile = 'pause.ts',
+ sequence = pauseFrames
+ ))
diff --git a/hackerhotel2024/artwork/intro.svg b/hackerhotel2024/artwork/intro.svg
new file mode 100644
index 0000000..24d9a1e
--- /dev/null
+++ b/hackerhotel2024/artwork/intro.svg
@@ -0,0 +1,745 @@
+
+
+
+
diff --git a/hackerhotel2024/artwork/logos/HackerHotel.pdf b/hackerhotel2024/artwork/logos/HackerHotel.pdf
new file mode 100644
index 0000000..5e0ccb7
--- /dev/null
+++ b/hackerhotel2024/artwork/logos/HackerHotel.pdf
@@ -0,0 +1,1605 @@
+%PDF-1.3
%âãÏÓ
+1 0 obj
<>]/Pages 3 0 R/Type/Catalog>>
endobj
2 0 obj
<>stream
+
+
+
+
+ Adobe Illustrator CS6 (Windows)
+ 2015-03-26T21:09:06+02:00
+ 2015-03-26T21:09:06+01:00
+ 2015-03-26T21:09:06+01:00
+
+
+
+ 256
+ 96
+ JPEG
+ /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAYAEAAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A8tYGx2KuxV2KuxV2KuxV
2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVWtLO6vLlLa1
iaaeQ0SNRUmgqT7AAVJ7DIznGAuRoKAjpNL0qFzFJqsbSJs5hikkj5dwr/Dyp4jY9tsoGbIRYh8y
GVDvQ+qaZPp116MjLLGwD29zESYpo2+zJGxAqD7ioNQQCCMsw5hkjY27x1B7j+PMbIIpvRLbTLrV
7O31S7Nhp0syJd3qoZTFGTRn4DdqDBqJzjjJgOKQGw5Woq90bcaJpD3NxDpmsw3IjdhbG5R7T1kD
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
6Yrb/9k=
+
+
+
+
+
+ 1
+ False
+ False
+
+ 111.000115
+ 41.000081
+ Millimeters
+
+
+
+ Cyan
+ Magenta
+ Yellow
+ Black
+
+
+
+
+
+ Default Swatch Group
+ 0
+
+
+
+
+
+ application/pdf
+
+
+ HackerHotel
+
+
+
+
+ proof:pdf
+ xmp.did:D69572F2F3D3E411AD5D85A92A9E06F7
+ uuid:1602b5fe-fc7a-4f8c-91b9-1c182423a182
+ xmp.did:D69572F2F3D3E411AD5D85A92A9E06F7
+ 1
+
+ proof:pdf
+
+
+
+
+ saved
+ xmp.iid:D69572F2F3D3E411AD5D85A92A9E06F7
+ 2015-03-26T21:09:02+01:00
+ Adobe Illustrator CS6 (Windows)
+ /
+
+
+
+
+
+ Adobe PDF library 10.01
+ False
+
+
+ PDF/X-1:2001
+
+
+ PDF/X-1:2001
+ PDF/X-1a:2001
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+endstream
endobj
3 0 obj
<>
endobj
6 0 obj
<>/Properties<>>>/TrimBox[0.0 0.0 314.646 116.221]/Type/Page>>
endobj
7 0 obj
<>stream
+H‰ÌWÉ’¹
½÷Wä$Eà‚«e‡ösðÙ¡ÐX£q„åƒÃï23É\ººª[mëRI°¸<Û‡?ÿí?Ÿ¿M~úè§ßýþãôä]¡ ?ÌøÍQð«)O¿>}øãÏ~úû¿žüä'&qIÒD”\4}ûüôvúŒÿ°7Û÷×§Nd2~#¹\BžRv™D¦O¿Õc~{š££h«¿®CòމMÞ¥ÎuqˆvânĉŽO$î:ÈÛ߇_𲿌OINY'
.øûK*®€–á¼±\ž€©@¶ëÏâ gû¾BRŸ‘'vvª–ñ*;Ïœ§’¾tÀ¾ßw„³Éê˜ÓªŸ‹‰¦¶mÃAôê#NΕ©x€NÔñgðf
+.§`‡8.qgh +4áDªÍðQ¾˜è[(»ùb†@H¦aÓi;|i×RÑMl¨¶Õ
ô&ž^Å)ù4åKáÞQûM…]ÛG¹Õþaâ`®ƒhÜh„é£ÃñÊ^Á'¨]èü‚
+"ÖM~Ä–…0N@;†ó›#ÆÝxXY‡.fÖ§ùa4ž±èãÂlË¤Ö 5Që¯Ó?†Ç2¬+`°Fç85XQM- âiäQý]ÇŸ@‹èi‘‡sÛ°± æ:ÛÏý„°
+ŸžÚ‹è—
¾q4ŒÙ£L™,>—±Ò›±®{æõ +ÝÄʰO dX…‘$®°î5ºª£c
oÇJ÷`Å?p†„ ¯Ê7ôú®XïÒk*.)@¶Óžáë£W^Ÿ:=?rÈûû¾õ^ëŠæÛXéý}ë.½¢
+qÅ+@Ë)Åüp °%J™r¹ d{kxkx+V’hOŽ–cy4¼ìkKiÞ•È¡Â:*ö‚²ï”ºèžÔe`5#(¶¤ür,x‰²ôžœ%d‚TT*ˆVÚ¼ž´2 •
|WÖFv1–Tcˉ
+'°÷U®G‚EšQ"p|,Ô~7"ÜiÉ£ö”P‹ùÈJ?t¤Õ„ÂØº ÄÖ—IûÿL·VÓç Ö¢ý_”Ýb°