Compare commits

...
Sign in to create a new pull request.

2 commits

Author SHA1 Message Date
Daniel Meißner
47309fc242 final bub2022/__init__.py config 2022-10-21 19:45:29 +02:00
Daniel Meißner
fe5ae00f3a feat: added inital bub2022 intro/outro 2022-10-01 13:26:02 +02:00
3 changed files with 2607 additions and 0 deletions

132
bub2022/__init__.py Normal file
View file

@ -0,0 +1,132 @@
#!/usr/bin/python3
from renderlib import *
from easing import *
import math
import logging
# URL to Schedule-XML
scheduleUrl = 'https://fahrplan22.bits-und-baeume.org/bitsundbaeume/schedule/export/schedule.xml'
# For (really) too long titles
titlemap = {
#708: "Neue WEB-Anwendungen des LGRB Baden-Württemberg im Überblick"
}
def outroFrames(p):
frames = 2*fps
for i in range(0, frames):
yield (
('logo', 'style', 'opacity', "%.4f" % easeInCubic(i, 0, 1, frames)),
('plate', 'style', 'opacity', 0),
)
frames = 1*fps
for i in range(0, frames):
yield (
('logo', 'style', 'opacity', 1),
('plate', 'style', 'opacity', "%.4f" % easeInCubic(i, 0, 1, frames)),
)
frames = 2*fps
for i in range(0, frames):
yield (
('logo', 'style', 'opacity', 1),
('plate', 'style', 'opacity', 1),
)
def introFrames(p):
frames = math.floor(1.5*fps)
for i in range(0, frames):
yield (
('header', 'attr', 'y', 1318),
('text', 'style', 'opacity', 0),
)
frames = 1*fps
for i in range(0, frames):
yield (
('text', 'style', 'opacity', "%.4f" % easeInCubic(i, 0, 1, frames)),
)
frames = math.ceil(3.5*fps)
for i in range(0, frames):
yield (
('text', 'style', 'opacity', 1),
)
def pauseFrames(p):
pass
def srtip_event_title(event_title):
if len(event_title) > 80:
count = 0
title = []
for word in event_title.split(" "):
word_len = len(word)
if count + word_len < 80:
count += word_len
title.append(word)
logging.info(count)
else:
title.append("...")
break
return " ".join(title)
else:
return event_title
def debug():
render(
'intro.svg',
'../intro.ts',
introFrames,
{
'$id': 19990,
'$title': 'Ein creative commons Repository für medizinische Metadatenmodelle zur Harmonisierung der Gesundheitsversorgung (DE)',
'$personnames': 'Max Blumenstock, Christian Niklas'
}
)
# render(
# 'outro.svg',
# '../outro.ts',
# outroFrames
# )
def tasks(queue, params, idlist, skiplist):
# iterate over all events extracted from the schedule xml-export
for event in events(scheduleUrl):
event_title = srtip_event_title(event['title'])
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 them into the queue
if int(event['id']) not in skiplist:
queue.put(Rendertask(
infile = 'intro.svg',
outfile = str(event['id'])+".ts",
sequence = introFrames,
parameters = {
'$id': event['id'],
'$title': event_title,
'$personnames': 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
))

256
bub2022/artwork/intro.svg Normal file
View file

@ -0,0 +1,256 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="1920"
height="1080"
id="svg2"
version="1.1"
inkscape:version="1.2.1 (9c6d41e410, 2022-07-14, custom)"
sodipodi:docname="intro.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.35355339"
inkscape:cx="438.4062"
inkscape:cy="151.32085"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1080"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:snap-text-baseline="true"
showguides="true"
inkscape:measure-start="84,1088"
inkscape:measure-end="84,-10"
inkscape:guide-bbox="true"
inkscape:pagecheckerboard="0"
inkscape:showpageshadow="2"
inkscape:deskcolor="#d1d1d1">
<sodipodi:guide
position="-106,1242"
orientation="0,1"
id="guide863"
inkscape:locked="false" />
<sodipodi:guide
position="82,1168"
orientation="1,0"
id="guide865"
inkscape:locked="false" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="back"
transform="translate(0,504)"
style="display:inline">
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#bfbfbf;stroke-opacity:1"
id="rect1469"
width="1930"
height="1082"
x="0"
y="-506" />
</g>
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="back 1"
style="display:inline"
transform="translate(0,504)" />
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,27.63782)">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.62409019px;line-height:0%;font-family:'Open Sans';-inkscape-font-specification:'Open Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.21867418"
x="392.92853"
y="659.59393"
id="text3007"><tspan
sodipodi:role="line"
id="tspan3009"
x="392.92853"
y="659.59393"
style="font-size:88.74697113px;line-height:1.25;stroke-width:2.21867418"> </tspan></text>
<flowRoot
xml:space="preserve"
id="text"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0.01%;font-family:'Open Sans';-inkscape-font-specification:'Open Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none"
transform="matrix(2.0988224,0,0,2.0988224,-172.67305,57.28449)"><flowRegion
id="flowRegion3013"
style="fill:#000000"><rect
id="rect3015"
width="571.2663"
height="104.97028"
x="123.3259"
y="284.41422"
style="text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1" /></flowRegion><flowPara
style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:31.71312904px;line-height:125%;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro, Light';text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000"
id="flowPara2998" /><flowPara
style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:31.71312904px;line-height:125%;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro, Light';text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000"
id="flowPara4502" /><flowPara
id="flowPara3019"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:25.41107559px;line-height:125%;font-family:Aller;-inkscape-font-specification:'Aller, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1">$personnames</flowPara><flowPara
style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:26.42760849px;line-height:125%;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro, Light';text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1"
id="flowPara4498" /></flowRoot>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:Umpush;-inkscape-font-specification:Umpush;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="57.488281"
y="799.76831"
id="text4265"><tspan
sodipodi:role="line"
id="tspan4267"
x="57.488281"
y="803.36597"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:51.01742554px;line-height:125%;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro';text-align:start;writing-mode:lr-tb;text-anchor:start" /><tspan
sodipodi:role="line"
x="57.488281"
y="803.36597"
id="tspan4499"
style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:29.33333397px;line-height:125%;font-family:'Source Sans Pro';-inkscape-font-specification:'Source Sans Pro, Light';text-align:start;writing-mode:lr-tb;text-anchor:start" /></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20.1491px;line-height:0%;font-family:Umpush;-inkscape-font-specification:Umpush;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.67909px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="1552.9772"
y="949.57324"
id="text4275"><tspan
sodipodi:role="line"
x="1552.9772"
y="949.57324"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:59.164px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:end;writing-mode:lr-tb;text-anchor:end;fill:#333333;stroke-width:1.67909px"
id="tspan4497">30. Sept. - 2. Okt. 2022</tspan><tspan
sodipodi:role="line"
x="1552.9772"
y="1023.5283"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:59.164px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:end;writing-mode:lr-tb;text-anchor:end;fill:#333333;stroke-width:1.67909px"
id="tspan4503">Technische Uni Berlin</tspan></text>
<flowRoot
xml:space="preserve"
id="flowRoot4515"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"><flowRegion
id="flowRegion4517"><rect
id="rect4519"
width="109"
height="98"
x="915"
y="135" /></flowRegion><flowPara
id="flowPara4521" /></flowRoot>
<flowRoot
xml:space="preserve"
id="flowRoot4551"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"><flowRegion
id="flowRegion4553"><rect
id="rect4555"
width="78"
height="128"
x="959"
y="222" /></flowRegion><flowPara
id="flowPara4557" /></flowRoot>
<flowRoot
xml:space="preserve"
id="flowRoot4559"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
transform="matrix(2.2186742,0,0,2.2186742,-1048.996,-318.71767)"><flowRegion
id="flowRegion4561"
style="font-size:40px;text-align:center;text-anchor:middle"><rect
id="rect4563"
width="864.50464"
height="202.34314"
x="376"
y="166"
style="font-size:40px;text-align:center;text-anchor:middle" /></flowRegion><flowPara
id="flowPara4565"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48.0768px;font-family:Aller;-inkscape-font-specification:'Aller, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1">Bits &amp; Bäume 2022</flowPara></flowRoot>
<g
id="Ebene_2"
data-name="Ebene 2"
transform="translate(1284.08,-27.63782)">
<g
id="Ebene_1-2"
data-name="Ebene 1">
<path
inkscape:connector-curvature="0"
d="M 266.8,922.82 C 114.51,913.47 0,776 0,599.83 0,381.11 135.15,226.63 266.8,92.28 Z"
style="fill:#bdd888"
id="path1554" />
<rect
x="266.79999"
y="922.82001"
width="9.6300001"
height="158.56"
style="fill:#a1c854"
id="rect1556" />
<path
inkscape:connector-curvature="0"
d="m 266.8,92.28 h 92.28 V 0 H 266.8 Z m 276.84,0 h 92.28 V 0 h -92.28 z m 0,0 h -92.28 v 92.28 h 92.28 z M 451.36,646 h -92.28 v -92.31 h 92.28 z m 184.56,0 v -92.31 h -92.28 v -92.28 h -92.28 v -92.28 h -92.28 v -92.29 h 92.28 v 92.28 h 92.28 V 276.84 H 451.36 V 184.56 H 266.8 v 738.26 h 92.28 v -92.28 h 92.28 v -92.29 h 92.28 V 646 Z"
style="fill:#a1c854"
id="path1558" />
</g>
</g>
<flowRoot
xml:space="preserve"
id="flowRoot847"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
transform="translate(-86,-23.63782)"><flowRegion
id="flowRegion849"><rect
id="rect851"
width="1208"
height="222"
x="164"
y="274" /></flowRegion><flowPara
id="flowPara853"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:80px;line-height:111.00000143%;font-family:Aller;-inkscape-font-specification:'Aller, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000">$title</flowPara></flowRoot>
<flowRoot
xml:space="preserve"
id="flowRoot863"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
transform="translate(2,126.36218)"><flowRegion
id="flowRegion865"><rect
id="rect867"
width="1162"
height="143.29166"
x="80"
y="378.70834" /></flowRegion><flowPara
id="flowPara869"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:53.33333206px;font-family:Aller;-inkscape-font-specification:'Aller, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000">$subtitle </flowPara></flowRoot>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none"
x="1346.1593"
y="1127.9233"
id="text75720"><tspan
sodipodi:role="line"
id="tspan75718" /></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

2219
bub2022/artwork/outro.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 157 KiB