Merge podlove simple-chapters
This commit is contained in:
commit
7eedd31d9d
|
@ -16,32 +16,6 @@
|
||||||
<p>
|
<p>
|
||||||
Ich bedanke mich bei allen Engeln die mir Rede und Antwort standen oder Gespräche zu Stande gebracht haben. Da die Interviews teilweise länglich sind, habe ich eine <link href="http://ftp.c3d2.de/pentacast/pentacast-43-28c3.cue">CUE-Datei fertig gemacht</link>, mit der ihr das MP3 in mundgerechte Happen zerteilen könnt. In den Shownotes findet ihr eine Übersicht, wer ungefähr wann redet und in welcher Sprache.
|
Ich bedanke mich bei allen Engeln die mir Rede und Antwort standen oder Gespräche zu Stande gebracht haben. Da die Interviews teilweise länglich sind, habe ich eine <link href="http://ftp.c3d2.de/pentacast/pentacast-43-28c3.cue">CUE-Datei fertig gemacht</link>, mit der ihr das MP3 in mundgerechte Happen zerteilen könnt. In den Shownotes findet ihr eine Übersicht, wer ungefähr wann redet und in welcher Sprache.
|
||||||
</p>
|
</p>
|
||||||
<p>Shownotes:</p>
|
|
||||||
<ul>
|
|
||||||
<li><link href="#">0:00 Intro, koeart, DE</link></li>
|
|
||||||
<li><link href="#">8:03 Engelsystem, msquare, DE</link></li>
|
|
||||||
<li><link href="https://www.engelsystem.de/">Engelsystem</link></li>
|
|
||||||
<li><link href="#">12:17 FEM, ??, DE</link></li>
|
|
||||||
<li><link href="http://www.fem.tu-ilmenau.de/">FEM TU Ilmenau</link></li>
|
|
||||||
<li><link href="https://secure.wikimedia.org/wikipedia/en/wiki/HTTP_Live_Streaming">WP: HTTP Live Streaming</link></li>
|
|
||||||
<li><link href="#">36:24 Masken tiefziehen, Aram Bartholl, DE</link></li>
|
|
||||||
<li><link href="http://datenform.de/indexeng.html">Aram Bartholl</link></li>
|
|
||||||
<li><link href="http://cre.fm/cre181">CRE181: Aram Bartholl</link></li>
|
|
||||||
<li><link href="#">43:07 Strom, friedrich, DE</link></li>
|
|
||||||
<li><link href="#">48:34 CERT, vt, DE</link></li>
|
|
||||||
<li><link href="#">54:56 Herold Angel, Nick Farr, EN</link></li>
|
|
||||||
<li><link href="http://events.ccc.de/congress/2011/wiki/No_nerd_left_behind">28c3: No Nerd Left Behind</link></li>
|
|
||||||
<li><link href="#">64:12 ERFA's, Maha, DE</link></li>
|
|
||||||
<li><link href="http://ccc.de/de/regional">CCC Regional</link></li>
|
|
||||||
<li><link href="#">79:19 Pressearbeit, Constanze Kurz, DE</link></li>
|
|
||||||
<li><link href="#">97:31 Eventphone, sascha, DE</link></li>
|
|
||||||
<li><link href="http://eventphone.de/">Eventphone</link></li>
|
|
||||||
<li><link href="#">108:33 Foodangel, simon, DE</link></li>
|
|
||||||
<li><link href="#">111:00 Chefangel, Frantisek Apfelbeck, EN</link></li>
|
|
||||||
<li><link href="http://www.frantisekapfelbeck.org/wiki/index.php?title=Food_Hacking_Base">Frantisek Apfelbeck, Foodhacking</link></li>
|
|
||||||
<li><link href="#">123:10 Nick Farr Lullaby (Machine Lullaby by Fear of Ghosts Remix)</link></li>
|
|
||||||
<li><link href="http://events.ccc.de/congress/2011/wiki/Documentation">28c3 Recordings</link></li>
|
|
||||||
</ul>
|
|
||||||
</addendum>
|
</addendum>
|
||||||
|
|
||||||
<resource title="pentacast 43: 28c3" size="123801299"
|
<resource title="pentacast 43: 28c3" size="123801299"
|
||||||
|
@ -49,5 +23,28 @@
|
||||||
url="http://ftp.c3d2.de/pentacast/pentacast-43-28c3.ogg">
|
url="http://ftp.c3d2.de/pentacast/pentacast-43-28c3.ogg">
|
||||||
<alternative size="178215243" type="audio/mpeg"
|
<alternative size="178215243" type="audio/mpeg"
|
||||||
url="http://ftp.c3d2.de/pentacast/pentacast-43-28c3.mp3"/>
|
url="http://ftp.c3d2.de/pentacast/pentacast-43-28c3.mp3"/>
|
||||||
|
<chapters xmlns="http://podlove.de/simple-chapters">
|
||||||
|
<chapter start="0:00" title="Intro, koeart" xml:lang="de"/>
|
||||||
|
<chapter start="8:03" title="Engelsystem, msquare" xml:lang="de" href="https://www.engelsystem.de/"/>
|
||||||
|
<chapter start="12:17" title="FEM, TU Ilmenau" xml:lang="de" href="http://www.fem.tu-ilmenau.de/"/>
|
||||||
|
<chapter href="https://secure.wikimedia.org/wikipedia/en/wiki/HTTP_Live_Streaming" title="WP: HTTP Live Streaming"/>
|
||||||
|
<chapter start="36:24" title="Masken tiefziehen, Aram Bartholl" xml:lang="de"/>
|
||||||
|
<chapter href="http://datenform.de/indexeng.html" title="Aram Bartholl"/>
|
||||||
|
<chapter href="http://cre.fm/cre181" title="CRE181: Aram Bartholl"/>
|
||||||
|
<chapter start="43:07" title="Strom, friedrich" xml:lang="de"/>
|
||||||
|
<chapter start="48:34" title="CERT, vt" xml:lang="de"/>
|
||||||
|
<chapter start="54:56" title="Herold Angel, Nick Farr" xml:lang="en"/>
|
||||||
|
<chapter href="http://events.ccc.de/congress/2011/wiki/No_nerd_left_behind" title="28c3: No Nerd Left Behind"/>
|
||||||
|
<chapter start="64:12" title="ERFAs, Maha" xml:lang="de"/>
|
||||||
|
<chapter href="http://ccc.de/de/regional" title="CCC Regional"/>
|
||||||
|
<chapter start="79:19" title="Pressearbeit, Constanze Kurz" xml:lang="de"/>
|
||||||
|
<chapter start="97:31" title="Eventphone, sascha" xml:lang="de"/>
|
||||||
|
<chapter href="http://eventphone.de/" title="Eventphone"/>
|
||||||
|
<chapter start="108:33" title="Foodangel, simon" xml:lang="de"/>
|
||||||
|
<chapter start="111:00" title="Chefangel, Frantisek Apfelbeck" xml:lang="en"/>
|
||||||
|
<chapter href="http://www.frantisekapfelbeck.org/wiki/index.php?title=Food_Hacking_Base" title="Frantisek Apfelbeck, Foodhacking"/>
|
||||||
|
<chapter start="123:10" title="Nick Farr Lullaby (Machine Lullaby by Fear of Ghosts Remix)"/>
|
||||||
|
<chapter href="http://events.ccc.de/congress/2011/wiki/Documentation" title="28c3 Recordings"/>
|
||||||
|
</chapters>
|
||||||
</resource>
|
</resource>
|
||||||
</item>
|
</item>
|
||||||
|
|
|
@ -31,7 +31,7 @@ function arrayForEach(array, iter) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function addButton(container, res) {
|
function addButton(container, res, chapters) {
|
||||||
var button = $('<a class="play" title="Abspielen"><span class="postercaption">▶ Play</span></a>');
|
var button = $('<a class="play" title="Abspielen"><span class="postercaption">▶ Play</span></a>');
|
||||||
if (res.poster) {
|
if (res.poster) {
|
||||||
var img = $('<img class="poster"/>');
|
var img = $('<img class="poster"/>');
|
||||||
|
@ -54,7 +54,7 @@ function addButton(container, res) {
|
||||||
button.click(function() {
|
button.click(function() {
|
||||||
button.remove();
|
button.remove();
|
||||||
|
|
||||||
addPlayer(container, res);
|
addPlayer(container, res, chapters);
|
||||||
|
|
||||||
var section = container.parents().
|
var section = container.parents().
|
||||||
filter(function() {
|
filter(function() {
|
||||||
|
@ -66,7 +66,16 @@ function addButton(container, res) {
|
||||||
container.append(button);
|
container.append(button);
|
||||||
}
|
}
|
||||||
|
|
||||||
function addPlayer(container, res) {
|
function parseTime(time) {
|
||||||
|
var parts = time.split(":"), part;
|
||||||
|
var r = 0;
|
||||||
|
while((part = parts.shift())) {
|
||||||
|
r = r * 60 + parseInt(part);
|
||||||
|
}
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
function addPlayer(container, res, chapters) {
|
||||||
var types = arrayMap(res, function(res) {
|
var types = arrayMap(res, function(res) {
|
||||||
return res.type;
|
return res.type;
|
||||||
});
|
});
|
||||||
|
@ -127,6 +136,30 @@ function addPlayer(container, res) {
|
||||||
if (fallback)
|
if (fallback)
|
||||||
html5player.append(fallback);
|
html5player.append(fallback);
|
||||||
container.append(html5player);
|
container.append(html5player);
|
||||||
|
if (chapters[0]) {
|
||||||
|
var dl = $('<dl class="chapters"></dl>');
|
||||||
|
var prevStart;
|
||||||
|
chapters.find('chapter').each(function() {
|
||||||
|
var title = this.getAttribute('title');
|
||||||
|
var start = this.getAttribute('start');
|
||||||
|
var href = this.getAttribute('href');
|
||||||
|
if (start && start != prevStart) {
|
||||||
|
var dt = $('<dt><a href="#"></a></dt>');
|
||||||
|
var dt_a = dt.find('a');
|
||||||
|
dt_a.text(start);
|
||||||
|
dt_a.click(function(ev) {
|
||||||
|
ev.preventDefault();
|
||||||
|
html5player[0].currentTime = parseTime(start);
|
||||||
|
});
|
||||||
|
dl.append(dt);
|
||||||
|
}
|
||||||
|
prevStart = start;
|
||||||
|
var dd = $('<dd></dd>');
|
||||||
|
dd.text(title);
|
||||||
|
dl.append(dd);
|
||||||
|
});
|
||||||
|
container.append(dl);
|
||||||
|
}
|
||||||
} else if (fallback) {
|
} else if (fallback) {
|
||||||
container.append(fallback);
|
container.append(fallback);
|
||||||
} else {
|
} else {
|
||||||
|
@ -164,7 +197,7 @@ $(document).ready(function() {
|
||||||
}), canPlay)) {
|
}), canPlay)) {
|
||||||
var liEl = $('<li class="play-resource"></li>');
|
var liEl = $('<li class="play-resource"></li>');
|
||||||
$(this).before(liEl);
|
$(this).before(liEl);
|
||||||
var player = addButton(liEl, res);
|
var player = addButton(liEl, res, $(this).find('chapters'));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} catch (x) {
|
} catch (x) {
|
||||||
|
|
|
@ -723,6 +723,26 @@ li audio, li video, li .poster {
|
||||||
color: #333;
|
color: #333;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.chapters {
|
||||||
|
margin: 0.5em auto;
|
||||||
|
}
|
||||||
|
.chapters dt, .chapters dd {
|
||||||
|
line-height: 2em;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
.chapters dt {
|
||||||
|
width: 8em;
|
||||||
|
text-align: right;
|
||||||
|
margin-bottom: -2em;
|
||||||
|
}
|
||||||
|
.chapters dt:after {
|
||||||
|
content: '';
|
||||||
|
}
|
||||||
|
.chapters dd {
|
||||||
|
margin-left: 10em;
|
||||||
|
}
|
||||||
|
|
||||||
p.blockquote {
|
p.blockquote {
|
||||||
padding: .5em .5em .5em 2em;
|
padding: .5em .5em .5em 2em;
|
||||||
border-left: 20px solid #eee;
|
border-left: 20px solid #eee;
|
||||||
|
|
11
xsd/atom.rng
11
xsd/atom.rng
|
@ -2,10 +2,9 @@
|
||||||
<!--
|
<!--
|
||||||
-*- rnc -*-
|
-*- rnc -*-
|
||||||
RELAX NG Compact Syntax Grammar for the
|
RELAX NG Compact Syntax Grammar for the
|
||||||
Atom Format Specification
|
Atom Format Specification Version 11
|
||||||
draft-ietf-atompub-format-10
|
|
||||||
-->
|
-->
|
||||||
<grammar xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:s="http://www.ascc.net/xml/schematron" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
<grammar ns="http://www.w3.org/1999/xhtml" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:s="http://www.ascc.net/xml/schematron" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
||||||
<start>
|
<start>
|
||||||
<choice>
|
<choice>
|
||||||
<ref name="atomFeed"/>
|
<ref name="atomFeed"/>
|
||||||
|
@ -354,9 +353,9 @@
|
||||||
<element name="atom:source">
|
<element name="atom:source">
|
||||||
<ref name="atomCommonAttributes"/>
|
<ref name="atomCommonAttributes"/>
|
||||||
<interleave>
|
<interleave>
|
||||||
<optional>
|
<zeroOrMore>
|
||||||
<ref name="atomAuthor"/>
|
<ref name="atomAuthor"/>
|
||||||
</optional>
|
</zeroOrMore>
|
||||||
<zeroOrMore>
|
<zeroOrMore>
|
||||||
<ref name="atomCategory"/>
|
<ref name="atomCategory"/>
|
||||||
</zeroOrMore>
|
</zeroOrMore>
|
||||||
|
@ -570,7 +569,7 @@
|
||||||
<!-- XHTML -->
|
<!-- XHTML -->
|
||||||
<define name="anyXHTML">
|
<define name="anyXHTML">
|
||||||
<element>
|
<element>
|
||||||
<nsName ns="http://www.w3.org/1999/xhtml"/>
|
<nsName/>
|
||||||
<zeroOrMore>
|
<zeroOrMore>
|
||||||
<choice>
|
<choice>
|
||||||
<attribute>
|
<attribute>
|
||||||
|
|
|
@ -57,6 +57,8 @@
|
||||||
<xs:sequence>
|
<xs:sequence>
|
||||||
<xs:element ref="alternative" minOccurs="0"
|
<xs:element ref="alternative" minOccurs="0"
|
||||||
maxOccurs="unbounded"/>
|
maxOccurs="unbounded"/>
|
||||||
|
<xs:any namespace="http://podlove.de/simple-chapters"
|
||||||
|
processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||||
</xs:sequence>
|
</xs:sequence>
|
||||||
<xs:attribute name="size" type="xs:nonNegativeInteger"
|
<xs:attribute name="size" type="xs:nonNegativeInteger"
|
||||||
use="required"/>
|
use="required"/>
|
||||||
|
|
|
@ -89,6 +89,9 @@
|
||||||
href="{$resource_href}"
|
href="{$resource_href}"
|
||||||
type="{@type}"
|
type="{@type}"
|
||||||
length="{@size}" />
|
length="{@size}" />
|
||||||
|
|
||||||
|
<xsl:copy-of select="sc:chapters"
|
||||||
|
xmlns:sc="http://podlove.de/simple-chapters"/>
|
||||||
</xsl:for-each>
|
</xsl:for-each>
|
||||||
|
|
||||||
<xsl:variable name="flattr_link">
|
<xsl:variable name="flattr_link">
|
||||||
|
|
|
@ -384,6 +384,14 @@
|
||||||
</xsl:call-template>, <xsl:call-template name="format-filesize">
|
</xsl:call-template>, <xsl:call-template name="format-filesize">
|
||||||
<xsl:with-param name="value" select="@size"/>
|
<xsl:with-param name="value" select="@size"/>
|
||||||
</xsl:call-template>)
|
</xsl:call-template>)
|
||||||
|
|
||||||
|
<xsl:if test="$baseurl = '' or $baseurl = '../'">
|
||||||
|
<!-- Include chapters only in XHTML for JS player. ATOM feeds
|
||||||
|
copy chapters outside <content type="xhtml"/>
|
||||||
|
-->
|
||||||
|
<xsl:copy-of select="sc:chapters"
|
||||||
|
xmlns:sc="http://podlove.de/simple-chapters"/>
|
||||||
|
</xsl:if>
|
||||||
</li>
|
</li>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
|
|
|
@ -238,6 +238,8 @@
|
||||||
<xsl:with-param name="resource_url" select="$href"/>
|
<xsl:with-param name="resource_url" select="$href"/>
|
||||||
<xsl:with-param name="resource_size" select="@size"/>
|
<xsl:with-param name="resource_size" select="@size"/>
|
||||||
<xsl:with-param name="resource_type" select="@type"/>
|
<xsl:with-param name="resource_type" select="@type"/>
|
||||||
|
<xsl:with-param name="chapters" select="sc:chapters"
|
||||||
|
xmlns:sc="http://podlove.de/simple-chapters"/>
|
||||||
</xsl:call-template>
|
</xsl:call-template>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
|
@ -249,6 +251,7 @@
|
||||||
<xsl:param name="resource_url"/>
|
<xsl:param name="resource_url"/>
|
||||||
<xsl:param name="resource_size"/>
|
<xsl:param name="resource_size"/>
|
||||||
<xsl:param name="resource_type"/>
|
<xsl:param name="resource_type"/>
|
||||||
|
<xsl:param name="chapters"/>
|
||||||
|
|
||||||
<item>
|
<item>
|
||||||
<xsl:variable name="href">
|
<xsl:variable name="href">
|
||||||
|
@ -302,6 +305,8 @@
|
||||||
<xsl:if test="string-length($flattr_link) > 0">
|
<xsl:if test="string-length($flattr_link) > 0">
|
||||||
<atom:link rel="payment" href="{$flattr_link}" type="text/html"/>
|
<atom:link rel="payment" href="{$flattr_link}" type="text/html"/>
|
||||||
</xsl:if>
|
</xsl:if>
|
||||||
|
|
||||||
|
<xsl:copy-of select="$chapters"/>
|
||||||
</item>
|
</item>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
|
|
|
@ -122,6 +122,10 @@
|
||||||
<xsl:if test="string-length($flattr_link) > 0">
|
<xsl:if test="string-length($flattr_link) > 0">
|
||||||
<atom:link rel="payment" href="{$flattr_link}" type="text/html"/>
|
<atom:link rel="payment" href="{$flattr_link}" type="text/html"/>
|
||||||
</xsl:if>
|
</xsl:if>
|
||||||
|
|
||||||
|
<xsl:copy-of select="resource/sc:chapters"
|
||||||
|
xmlns:sc="http://podlove.de/simple-chapters"/>
|
||||||
|
|
||||||
</item>
|
</item>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user