Skip to content
Snippets Groups Projects
Commit cb26ccc0 authored by Lukas Ruge's avatar Lukas Ruge
Browse files

Add ability to generate frab.xml from conference and media data

parent 425af860
No related branches found
No related tags found
No related merge requests found
Pipeline #7116 passed
Showing
with 383 additions and 27 deletions
---
layout: [frab]
title: nbsp
---
\ No newline at end of file
---
layout: [frab]
title: nook2022
---
\ No newline at end of file
---
layout: conference
title: Nobreakspace
acronym: nbsp
base_url: https://chaotikum.org/
---
\ No newline at end of file
---
layout: conference
title: Night of open Knowledge 2022
acronym: nook2022
base_url: https://2022.nook-luebeck.de/
---
\ No newline at end of file
......@@ -58,11 +58,11 @@ timezone: Europe/Berlin # Timezone for blog posts and alike
# 5. Collections
collections:
posts:
title: Posts # Needed for Siteleaf
title: Posts
output: true
feature_image: "/assets/f11.jpg"
projects:
title: Projekte # Needed for Siteleaf
title: Projekte
output: true
feature_image: "https://chaotikum.org/assets/3ddrucker.jpg"
permalink: project/:path/
......@@ -79,11 +79,20 @@ collections:
output: false
press:
output: false
conferences:
title: conferences
output: true
permalink: conferences/:path/
conferencefrab:
title: conferencefrab
output: true
permalink: conferences/:title.xml
events:
title: Events
output: true
permalink: event/:path.xml
# 6. Jekyll collections settings
defaults:
-
......
<section class="section typeset">
<ul class="list list--posts">
{% assign sorted = site.conferences | sort: 'title' | reverse %}
{% for conference in sorted %}
<li class="item item--post">
<article class="article article--post">
<h2><a href="{{ site.baseurl }}{{ conference.url }}">{{ conference.title | markdownify | remove: '<p>' | remove: '</p>' }}</a></h2>
</article>
</li>
{% endfor %}
</ul>
</section>
\ No newline at end of file
......@@ -2,10 +2,10 @@
<section class="section typeset">
<ul class="list list--posts">
{% assign sorted = site.media | sort: 'date' | reverse %}
{% assign sorted = site.media | sort: 'release_date' | reverse %}
{% for media in sorted %}
{% capture releasedate %}{{media.date | date: '%s'}}{% endcapture %}
{% if releasedate < nowunix %}
{% capture release_date %}{{media.release_date | date: '%s'}}{% endcapture %}
{% if release_date < nowunix %}
<li class="item item--post">
<article class="article article--post">
<h2><a href="{{ site.baseurl }}{{ media.url }}">{{ media.title | markdownify | remove: '<p>' | remove: '</p>' }}</a></h2>
......
---
layout: default
---
{% include site-header.html %}
{% include twittercard.html %}
<main class="main container">
<div class="content">
<h4> {{ page.title }}</h4>
</div>
</main>
{% include site-footer.html %}
---
layout: default
nofeature: true
---
{% include site-header.html %}
<main class="main container">
<div class="content">
{% include conference-list.html %}
</div>
</main>
{% include site-footer.html %}
\ No newline at end of file
---
layout: nil
---
<?xml version="1.0" encoding="utf-8"?>
{% capture nowunix %}{{'now' | date: '%s'}}{% endcapture -%}
{% comment -%}
Finding the conference.
{% endcomment -%}
{% for c in site.conferences -%}
{% if c.acronym == page.title -%}
{% assign conference = c -%}
{% endif -%}
{% endfor -%}
{% comment -%}
Finding the first and last talk to establish the variables "earliest" and "latest". Then converting this into a duration in days.
{% endcomment -%}
{% capture earliest %}{{'now' | date: '%s'}}{% endcapture -%}
{% capture latest %}0{% endcapture -%}
{% assign conference_media = site.media | where_exp: "video", "video.conferences contains conference.acronym" -%}
{% for video in conference_media -%}
{% if video.event and video.event != '' -%}
{% for e in site.events -%}
{% if e.uid == video.event -%}
{% assign event = e -%}
{% endif -%}
{% endfor -%}
{% endif -%}
{% if video.recording_date and recording_date.event != ''-%}
{% assign recording_date = video.recording_date -%}
{% elsif event -%}
{% assign recording_date = event.eventdate -%}
{% else -%}
{% if conference.date and recording_date.event != ''%}
{% assign recording_date = conference.date -%}
{% else -%}
{% assign recording_date = earliest -%}
{% endif -%}
{% endif -%}
{% capture recordingdate %}{{recording_date | date: '%s'}}{% endcapture -%}
{% if recordingdate < earliest -%}
{% assign earliest = recordingdate -%}
{% endif -%}
{% if recordingdate > latest -%}
{% assign latest = recordingdate -%}
{% endif -%}
{% endfor -%}
{% capture earliestday %} {{earliest | date: '%Y-%m-%d'}}{% endcapture -%}
{% capture earliestdaydate %}{{earliestday | date: '%s'}}{% endcapture -%}
{% capture latestday %} {{latest | date: '%Y-%m-%d'}}{% endcapture -%}
{% capture latestdaydate %}{{latestday | date: '%s'}}{% endcapture -%}
{% assign seconds = latestdaydate | minus: earliestdaydate -%}
{% assign hours = seconds | divided_by: 60 | divided_by: 60 -%}
{% assign days = hours | divided_by: 24 -%}
{% assign days = days | plus: 1 -%}
{% assign eventcounter = 1 -%}
<schedule>
<version>0.1</version>
<conference>
<acronym>{{conference.acronym}}</acronym>
<title>{{conference.title}}</title>
<start>{{earliest | date: '%Y-%m-%d' }}</start>
<end>{{latest | date: '%Y-%m-%d' }}</end>
<days>{{days}}</days>
<timeslot_duration>00:15</timeslot_duration>
<base_url>{{conference.base_url}}</base_url>
</conference>
{% comment -%}
- The Loop over all videos in the conference is first sorted by room, then by date in the hope to reduce repeating rooms. This probebly does nor work and we should use grouoping by rooms inseide of recoeding dates, bit this also does not work and I don't relay have a solution here. It's probably fine for rooms to repeat inside a day i guess.
{% endcomment -%}
{% capture currentday %}{{earliest | date: '%Y-%m-%d' }}{% endcapture -%}
{% assign daynumber = 1 -%}
{% assign sorted_conference_media = conference_media | sort: 'room' -%}
{% assign sorted_conference_media2 = sorted_conference_media | sort: 'release_date' -%}
{% comment -%}
- A day is supposed to have a start and an end. This is probably just helpfull for visualisation in fahrplan apps in not essential... but if we want it, its an extra loop per day I guess...
{% endcomment -%}
<day index="1" date="{{earliest | date: '%Y-%m-%d'}}">
{% for video in sorted_conference_media2 -%}
{% capture release_date %}{{media.release_date | date: '%s'}}{% endcapture -%}
{% if video.file and video.file != '' and nowunix > release_date -%}
{% if eventcounter > 1 -%}
</event>
{% endif -%}
{% comment -%}
some fields may be done via the event.xml and can be left out of the video markdown file. However, if added in the markdown file of the video, they overwrite the information in the event.
{% endcomment -%}
{% if video.event and video.event != '' -%}
{% for e in site.events -%}
{% if e.uid == video.event -%}
{% assign event = e -%}
{% endif -%}
{% endfor -%}
{% endif -%}
{% if video.recording_date and video.recording_date != ''-%}
{% assign recording_date = video.recording_date -%}
{% elsif event -%}
{% assign recording_date = event.eventdate -%}
{% else -%}
{% if conference.date and recording_date.event != ''%}
{% assign recording_date = conference.date -%}
{% else -%}
{% assign recording_date = earliest -%}
{% endif -%}
{% endif -%}
{% if video.duration and video.duration != ''-%}
{% assign duration = video.duration -%}
{% elsif event -%}
{% capture eventstart %}{{event.eventdate | date: '%s'}}{% endcapture -%}
{% capture eventend %}{{event.eventend | date: '%s'}}{% endcapture -%}
{% assign seconds = eventend | minus: eventstart -%}
{% assign minutes = seconds | divided_by: 60 -%}
{% assign hours = minutes | divided_by: 60 -%}
{% assign minutes = minutes | modulo: 60 -%}
{% if minutes == 0 -%}
{% capture min %}00{% endcapture -%}
{% elsif minutes < 10 -%}
{% capture min %}0{{minutes}}{% endcapture -%}
{% else -%}
{% capture min %}{{minutes}}{% endcapture -%}
{% endif -%}
{% if hours == 0 -%}
{% capture duration %}00:{{min}}{% endcapture -%}
{% elsif hours < 10 -%}
{% capture duration %}0{{hours}}:{{min}}{% endcapture -%}
{% else -%}
{% capture duration %}{{hours}}:{{min}}{% endcapture -%}
{% endif -%}
{% else -%}
{% capture duration %}00:00{% endcapture -%}
{% endif -%}
{% capture recordingday %}{{recording_date | date: '%Y-%m-%d' }}{% endcapture -%}
{% if currentday != recordingday -%}
{% capture current_room %}{% endcapture -%}
{% capture currentday %}{{recordingday | date: '%Y-%m-%d' }}{% endcapture -%}
{% capture recordingdate %}{{currentday | date: '%s'}}{% endcapture -%}
{% assign seconds = recordingdate | minus: earliestdaydate -%}
{% assign hours = seconds | divided_by: 60 | divided_by: 60 -%}
{% assign day = hours | divided_by: 24 -%}
{% assign day = day | plus: 1 -%}
</room>
</day>
<day index="{{day}}" date="{{recording_date | date: '%Y-%m-%d'}}">
{% endif -%}
{% if current_room != video.room -%}
{% if current_room and current_room != '' -%}
</room>
<room name="{{video.room}}">
{% else -%}
<room name="{{video.room}}">
{% endif -%}
{% capture current_room %}{{video.room }}{% endcapture -%}
{% endif -%}
{% comment -%}
!!!!!!!!!!!!!! eventcounter als ID ist schlecht! Wie kriegen wir eine eindeutige unveränderliche ID?
{% endcomment -%}
<event id="{{eventcounter}}" guid="{{video.uid}}">
<date>{{video.recording_date | date: '%Y-%m-%dT%H:%M:%S'}}</date>
<start>{{video.recording_date | date: '%Y-%m-%dT%H:%M:%S'}}</start>
<duration>{{duration}}</duration>
<room>{{video.room}}</room>
<slug>{{ video.title | slugify }}</slug>
<url>{{video.url}}</url>
<recording>
{% if video.licence and video.licence != '' -%}
<license>Attribution-NonCommercial-NoDerivatives 4.0 International</license>
{% else -%}
<license>Attribution-NonCommercial-NoDerivatives 4.0 International</license>
{% endif -%}
{% if video.optout and video.optout != '' -%}
<optout>{{video.optout}}</optout>
{% else -%}
<optout>false</optout>
{% endif -%}
</recording>
<title>{{ video.title }}</title>
{% if video.subtitle and video.subtitle != '' -%}
<subtitle>{{ video.subtitle }}</subtitle>
{% endif -%}
<track/>
<type>Talk</type>
{% if video.language and video.language != '' -%}
<language>{{video.language}}</language>
{% else -%}
<language>de</language>
{% endif -%}
<abstract/>
<description> {{video.content | strip_html }} </description>
<logo/>
<persons>
{% for person in video.persons -%}
<person>{{person}}</person>
{% endfor -%}
</persons>
<links/>
<attachments/>
{% if video.file and video.file != '' -%}
<video_download_url>{{video.file}}</video_download_url>
{% endif -%}
{% assign eventcounter = eventcounter | plus: 1 -%}
{% endif %}
{% endfor -%}
</event>
</room>
</day>
</schedule>
\ No newline at end of file
---
layout: [video]
date: 2020-12-11 20:00:00 +0200
layout: video
release_date: 2020-12-11 20:00:00 +0200
recording_date: 2020-12-11 20:00:00 +0200
duration: "02:00"
room: bbb
title: "MuonPi Community-basierte verteilte Messung kosmischer Strahlung [Freitalk N8]"
license:
image: "freitalk-muonpi-community-basierte-verteilte-messung-kosmischer-strahlung.jpg"
......@@ -11,6 +14,8 @@ mccc: "https://media.ccc.de/v/2020-12-11-freitalk-muonpi-community-basierte-vert
archive: "https://archive.org/details/2020-12-11-freitalk-muonpi-community-basierte-verteilte-messung-kosmischer-strahlung"
file: "https://video.chaotikum.net/freitalk/2020-12-11/2020-12-11-freitalk-muonpi-community-basierte-verteilte-messung-kosmischer-strahlung.mp4"
event: b3707d4d-7eda-46f5-bb61-cfd02142a5cd
conferences:
- nbsp
nofeature: true
---
Bei MuonPi geht es um die Entwicklung eines verteilten Sensornetzwerkes für Myonenschauer. Die Myonen werden in einem aktiven Sensormaterial detektiert. Diese Messungen werden dann von einer Sensor-Platine an einem Raspberry Pi ausgewertet und mit sehr genauen Timestamps versehen. Dadurch lassen sich die Daten aus verteilten Messungen zusammen rechnen, um Informationen zu der Schauergeometrie und -energie zu erhalten.
......
---
layout: [video]
date: 2023-01-15 19:00:00 +0200
layout: video
release_date: 2023-01-15 19:00:00 +0200
recording_date: 2022-12-29 21:00:00 +0200
room: Augenprüfraum
title: "Fabi likes P5"
license: CC-BY-NC-ND-40
persons:
- "Fabi"
image: "https://video.chaotikum.net/5min/2022-12-29/2022-12-29-5min-i-like-p5.png"
#https://www.uuidgenerator.net/
uid: 67dbaaf2-a392-40da-985f-3f2750326bde
......@@ -12,6 +15,8 @@ archive: ""
file: "https://video.chaotikum.net/5min/2022-12-29/2022-12-29-5min-i-like-p5.mov"
event: a6d3e790-0918-47b0-9409-2858b9d0bf9a
nofeature: true
conferences:
- nbsp
---
P5 ist eine Javascript-Bibliothek. Fabi stellt sie kurz vor und demonstriert, dass beim Aufeinandertreffen eines MIDI-Controllers und P5 schnell etwas Schönes geschaffen werden kann.
......
---
layout: [video]
date: 2022-05-18 20:00:00 +0200
layout: video
release_date: 2022-05-18 20:00:00 +0200
recording_date: 2022-05-18 15:00:00 +0200
duration: "00:05"
room: Parkplatz
title: "10 Jahre Chaotikum e.V. - Grillparty"
license: "CC-BY-NC"
uid: 5e6b423d-9315-4df5-aa9f-66ae0969952c
yt: "https://www.youtube.com/watch?v=5vmi21ztI8k"
event: 627afb6e-f88f-4b73-8d84-290d8925c0dc
nofeature: true
conferences:
- nbsp
---
Am 14. Mai 2022 feierte der Chaotikum e.V. seinen 10 Geburtstag.
......
---
layout: [video]
date: 2022-12-25 20:00:00 +0200
recording_date: 2022-11-12
layout: video
release_date: 2022-12-25 20:00:00 +0200
recording_date: 2022-11-12 20:00:00 +0200
duration: "45:00"
room: Audimax
title: "How to: Capture the Flag"
peolple:
subtitle: Einführung in die Welt des kompetetiven Findens von Sicherheitslücken.
persons:
- "wupo"
license:
image: "https://video.chaotikum.net/nook22/how-to-capture-the-flag.png"
......@@ -14,6 +17,8 @@ mccc: "https://media.ccc.de/v/how-to-capture-the-flag"
file: "https://video.chaotikum.net/nook22/how-to-capture-the-flag.mov"
event: 46370f56-bfc1-413e-b220-431eec727d47
nofeature: true
conferences:
- nook2022
---
https://2022.nook-luebeck.de/talks/how-to-capture-the-flag/
Einführung in die Welt des kompetetiven Findens von Sicherheitslücken.
......
---
layout: [video]
date: 2023-01-02 20:00:00 +0200
recording_date: 2022-11-12
layout: video
release_date: 2023-01-02 20:00:00 +0200
recording_date: 2022-11-13 15:00:00 +0200
duration: "45:00"
room: Audimax
title: "AlekSIS®, das Schul-Informations-System"
peolple:
subtitle: Freiheit, transparenz und offene Organisation in der Schule
persons:
- "Dominik George"
- "Frank Poetzsch-Heffter StD"
license:
......@@ -15,6 +18,8 @@ mccc: "https://media.ccc.de/v/aleksis-das-schul-informations-system"
file: "https://video.chaotikum.net/nook22/aleksis-das-schul-informations-system.mov"
event: 46370f56-bfc1-413e-b220-431eec727d47
nofeature: true
conferences:
- nook2022
---
https://2022.nook-luebeck.de/talks/how-to-capture-the-flag/
Einführung in die Welt des kompetetiven Findens von Sicherheitslücken.
......
---
layout: [video]
date: 2023-01-07 19:00:00 +0200
layout: video
release_date: 2023-01-07 19:00:00 +0200
recording_date: 2022-12-29 20:00:00 +0100
duration: "00:05"
room: Augenprüfraum
title: "NeoRaider über Linux User-Namespaces und den unshare-Befehl"
persons:
- "NeoRaider"
license: CC-BY-NC-ND-40
image: "https://video.chaotikum.net/5min/2022-12-29/2022-12-29-5min-linux-user-namespaces.png"
#https://www.uuidgenerator.net/
......@@ -12,5 +17,7 @@ archive: ""
file: "https://video.chaotikum.net/5min/2022-12-29/2022-12-29-5min-linux-user-namespaces.mov"
event: a6d3e790-0918-47b0-9409-2858b9d0bf9a
nofeature: true
conferences:
- nbsp
---
Namespaces bieten unter Linux die Möglichkeit im gleichen Kernel effektiv ein eigenes Linux-System zu haben und sind daher die Grundlage für Container wie Docker. Wer so weit nicht gehen will, kann aber mit dem unshare-Befehl leichtgewichtiger arbeiten.
---
layout: [video]
date: 2022-01-08 19:00:00 +0200
layout: video
release_date: 2022-01-08 19:00:00 +0200
recording_date: 2022-12-29 20:00:00 +0100
duration: "00:05"
room: Augenprüfraum
title: "TVLuke über die Zahlen, Daten, Fakten der NooK 2022"
persons:
- "TVLuke"
license: CC-BY-NC-ND-40
image: "https://video.chaotikum.net/5min/2022-12-29/2022-12-29-5min-nook2022.png"
#https://www.uuidgenerator.net/
......
---
layout: [video]
date: 2023-01-14 19:00:00 +0200
layout: video
release_date: 2023-01-14 19:00:00 +0200
room: Parkplatz
title: "Jakob über Simon Tatham's Portable Puzzle Collection und Loopy"
license: CC-BY-NC-ND-40
persons:
- "Jakob"
image: "https://video.chaotikum.net/5min/2022-12-29/2022-12-29-5min-simon-tathams-portable-puzzle-collection-und-loopy.png"
#https://www.uuidgenerator.net/
uid: c7f1466b-3445-4d44-bae4-49cb0706e7be
......@@ -12,6 +14,8 @@ archive: ""
file: "https://video.chaotikum.net/5min/2022-12-29/2022-12-29-5min-simon-tathams-portable-puzzle-collection-und-loopy.mov"
event: a6d3e790-0918-47b0-9409-2858b9d0bf9a
nofeature: true
conferences:
- nbsp
---
Die Portable Puzzle Collection von Simon Tatham hat es Jakob angetan, insbesondere das Spiel "Loopy". Daher stellt er es vor und spielt zusammen mit den Anwesenden eine Runde.
......
---
layout: conferences
collectionpage: conferences
permalink: /conferences/
nofeature: true
aside: false
---
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment