Skip to main content

Configuration

Episode

episode.json
{
// Configuration Version
"version": 5,

/**
* Show Related Information
*/
"show": {
"title": "Podlovers",
"subtitle": "Der Podlove Entwickler:innen Podcast",
"summary": "Podlove ist eine Initiative zur Verbesserung der Open Source Infrastruktur zum Podcasting. Podlove ist gleichzeitig auch ein Netzwerk an Entwickler:innen zur Diskussion von Features und Standardisierung.",
"poster": "/assets/web-player/show.png",
"link": "https://podlovers.org"
},

/**
* Episode related Information
*/
"title": "Podlove Web Player",
"subtitle": "Podlove Web Player: Motivation, Geschichte, Features, Ausblick",
"summary": "Wir holen uns Simon zur Hilfe um \u00fcber die Anf\u00e4nge des Podlove Web Player zu sprechen: Warum es ihn gibt und wie die ersten Versionen aussahen. In der zweiten H\u00e4lfte geht es tief in den Technik-Kaninchenbau: Alex erl\u00e4utert seine Motivation f\u00fcr den Neubau f\u00fcr Podlove Web Player 4 und 5. Zum Schluss besprechen wir das holprige Release des aktuellen Web Player Plugins.",
// ISO 8601 DateTime format, this is capable of adding a time offset, see https://en.wikipedia.org/wiki/ISO_8601
"publicationDate": "2020-08-16T11:58:58+00:00",
// ISO 8601 Duration format ([hh]:[mm]:[ss].[sss]), capable of add ing milliseconds, see https://en.wikipedia.org/wiki/ISO_8601
"duration": "01:31:18.610",
"poster": "/assets/web-player/episode.png",
"link": "https://podlovers.org/podlove-web-player",

/**
* Chapters:
* - can be a plain list or a reference to a json file
* - if present chapters tab will be available
*/
"chapters": [
{
"start": "00:00:00.000",
"title": "Begr\u00fc\u00dfung",
"href": "",
"image": ""
},
{
"start": "00:00:26.196",
"title": "Simon",
"href": "",
"image": ""
},
{
"start": "00:01:56.397",
"title": "Feedback",
"href": "",
"image": ""
},
{
"start": "00:07:08.279",
"title": "Erfahrungen beim Publishen",
"href": "",
"image": ""
},
{
"start": "00:13:29.226",
"title": "Shownotes",
"href": "",
"image": ""
},
{
"start": "00:20:43.264",
"title": "Audio-Hardware",
"href": "",
"image": ""
},
{
"start": "00:22:51.183",
"title": "Podlove Web Player: Warum eigentlich?",
"href": "",
"image": ""
},
{
"start": "00:25:41.451",
"title": "Podlove Web Player 1",
"href": "",
"image": ""
},
{
"start": "00:28:16.131",
"title": "Podlove Web Player 2",
"href": "",
"image": ""
},
{
"start": "00:33:44.999",
"title": "Podlove Web Player 3",
"href": "",
"image": ""
},
{
"start": "00:44:17.011",
"title": "Podlove Web Player 4",
"href": "",
"image": ""
},
{
"start": "01:02:41.149",
"title": "Podlove UI",
"href": "",
"image": ""
},
{
"start": "01:05:50.035",
"title": "Podlove Web Player 5",
"href": "",
"image": ""
},
{
"start": "01:12:50.121",
"title": "Podlove Web Player WordPress Plugin",
"href": "",
"image": ""
},
{
"start": "01:29:23.552",
"title": "Ausblick",
"href": "",
"image": ""
},
{
"start": "01:30:49.849",
"title": "Und Tsch\u00fcss",
"href": "",
"image": ""
}
],

/**
* Audio Assets
* - media Assets played by the audio player
* - format support depends on the used browser (https://en.wikipedia.org/wiki/HTML5_audio#Supported_audio_coding_formats)
* - also supports HLS streams
*
* Asset
* - url: absolute path to media asset
* - size: file size in byte
* - (title): title to be displayed in download tab
* - mimeType: media asset mimeType
*/
"audio": [
{
"url": "https://files.podlovers.org/LOV003.mp3",
"size": "76976929",
"title": "MP3 Audio (mp3)",
"mimeType": "audio\/mpeg"
}
],

/**
* Files
* - list of files available for download
* - if no files are present, audio assets will be used as downloads
*
* Asset
* - url: absolute path to media asset
* - size: file size in byte
* - title: title to be displayed in download tab
* - (mimeType): media asset mimeType
*/
"files": [
{
"url": "https://files.podlovers.org/LOV003.mp3",
"size": "76976929",
"title": "MP3 Audio",
"mimeType": "audio\/mpeg"
}
],

/**
* Contributors
* - used by info and transcripts tab
*
* Contributor
* - id: used as a reference in transcripts
* - name: name of the contributor
* - (avatar): avatar of the contributor
* - (group): contributors group
*/
"contributors": [
{
"id": "1",
"name": "Alexander Heimbuch",
"avatar": "/assets/web-player/alexander-heimbuch.jpeg",
"role": {
"id": "1",
"slug": "team",
"title": "Team"
},
"group": {
"id": "2",
"slug": "on-air",
"title": "On Air"
}
},
{
"id": "2",
"name": "Michaela Lehr",
"avatar": "/assets/web-player/michaela-lehr.jpeg",
"role": {
"id": "1",
"slug": "team",
"title": "Team"
},
"group": {
"id": "2",
"slug": "on-air",
"title": "On Air"
}
},
{
"id": "3",
"name": "Eric Teubert",
"avatar": "/assets/web-player/eric-teubert.jpeg",
"role": {
"id": "1",
"slug": "team",
"title": "Team"
},
"group": {
"id": "2",
"slug": "on-air",
"title": "On Air"
}
},
{
"id": "4",
"name": "Simon",
"avatar": "/assets/web-player/simon.jpeg",
"role": {
"id": "2",
"slug": "guest",
"title": "Gast"
},
"group": {
"id": "2",
"slug": "on-air",
"title": "On Air"
}
}
],

/**
* Transcripts:
* - can be a plain list or a reference to a json file
* - if present transcripts tab will be available (if the template includes it)
*/
"transcripts": [
{
"start": "00:00:00.005",
"start_ms": 5,
"end": "00:00:09.458",
"end_ms": 9458,
"speaker": "3",
"voice": "Eric",
"text": "Dann sage ich einfach mal: Hallo und willkommen zu Episode drei des Podlovers Podcasts. Heute das erste Mal mit Gast. Hallo Simon."
},
{
"start": "00:00:09.600",
"start_ms": 9600,
"end": "00:00:10.800",
"end_ms": 10800,
"speaker": "4",
"voice": "Simon",
"text": "Hallo."
},
{
"start": "00:00:10.996",
"start_ms": 10996,
"end": "00:00:13.875",
"end_ms": 13875,
"speaker": "3",
"voice": "Eric",
"text": "Au\u00dferdem wieder mit Michi."
},
{
"start": "00:00:14.900",
"start_ms": 14900,
"end": "00:00:15.900",
"end_ms": 15900,
"speaker": "2",
"voice": "Michi",
"text": "Hallo."
},
{
"start": "00:00:16.000",
"start_ms": 16000,
"end": "00:00:16.300",
"end_ms": 16300,
"speaker": "3",
"voice": "Eric",
"text": "Und Alex."
}
]
}

Config

config.json
version: 5,

// player asset base path, falls back to ./
base: "player/",

activeTab: "chapters", // default active tab, can be set to [chapters, files, share, playlist]

theme: {
/**
* Tokens
* - if defined the player defaults are dropped
* - rgba as well as hex values are allowed
* - use this generator to get a direct visual feedback:
*/
tokens: {
brand: "#166255",
brandDark: "#166255",
brandDarkest: "#1A3A4A",
brandLightest: "#E5EAECFF",
shadeDark: "#807E7C",
shadeBase: "#807E7C",
contrast: "#000",
alt: "#fff"
},

/**
* Fonts
* - by default the system font stack is used (https://css-tricks.com/snippets/css/system-font-stack/)
*
* font:
* - name: font name that is used in the font stack
* - family: list of fonts in a fallback order
* - weight: font weight of the defined font
* - src: list of web font sources (allowed: woff, woff2, ttf, eot, svg)
*/
fonts: {
ci: {
name: "RobotoBlack",
family: [
"RobotoBlack",
"Calibri",
"Candara",
"Arial",
"Helvetica",
"sans-serif"
],
weight: 900,
src: ["./assets/Roboto-Black.ttf"]
},
regular: {
name: "FiraSansLight",
family: [
"FiraSansLight",
"Calibri",
"Candara",
"Arial",
"Helvetica",
"sans-serif"
],
weight: 300,
src: ["./assets/FiraSans-Light.ttf"]
},
bold: {
name: "FiraSansBold",
family: [
"FiraSansBold",
"Calibri",
"Candara",
"Arial",
"Helvetica",
"sans-serif"
],
weight: 700,
src: ["./assets/FiraSans-Bold.ttf"]
}
}
},

/**
* Subscribe Button
* - configuration for the subsscribe button overlay
* - if not defined the subscribe button won't be rendered
*/
"subscribe-button": {
feed: "https://feeds.podlovers.org/mp3", // Rss feed

/**
* Clients
* - list of supported podcast clients on android, iOS, Windows, OSX
* - only available clients on the used os/platform are shown
* - order in list determines rendered order
*/
clients: [
{
id: "apple-podcasts",
service: "id1523714548" // https://podcasts.apple.com/podcast/[service]
},
{
id: "antenna-pod"
},
{
id: "beyond-pod"
},
{
id: "castbox",
service: "castbox-id"
},
{
id: "castro"
},
{
id: "clementine"
},
// {
// id: "deezer",
// service: "" https://www.deezer.com/en/show/[service]
// },
{
id: "downcast"
},
{
id: "google-podcasts",
service: "https://feeds.podlovers.org/mp3" // feed
},
{
id: "gpodder"
},
{
id: "itunes"
},
{
id: "i-catcher"
},
{
id: "instacast"
},
{
id: "overcast"
},
{
id: "player-fm"
},
{
id: "pocket-casts"
},
{
id: "pocket-casts",
service: "https://feeds.podlovers.org/mp3" // feed
},
{
id: "pod-grasp"
},
{
id: "podcast-addict"
},
{
id: "podcast-republic"
},
{
id: "podcat"
},
{
id: "podscout"
},
{
id: "rss-radio"
},
// {
// id: "soundcloud",
// service: "", // https://soundcloud.com/[service]
// },
// {
// id: "spotify",
// service: "", // https://open.spotify.com/show/[service]
// },
// {
// id: "stitcher",
// service: "" // https://www.stitcher.com/podcast/[service]
// },
// {
// id: "youtube",
// service: "" // https://www.youtube.com/channel/[service]
// },
{
id: "rss"
}
]
},

/**
* Playlist:
* - can be a plain list or a reference to a json file
* - if present playlist tab will be available
*/
playlist: [
{
"title": "Podlove Web Player",
"config": "https:\/\/backend.podlovers.org\/wp-json\/podlove-web-player\/shortcode\/publisher\/60",
"duration": "01:31:18.610"
},
{
"title": "Podlove Publisher",
"config": "https:\/\/backend.podlovers.org\/wp-json\/podlove-web-player\/shortcode\/publisher\/51",
"duration": "02:03:30.573"
},
{
"title": "Wir. M\u00fcssen Reden",
"config": "https:\/\/backend.podlovers.org\/wp-json\/podlove-web-player\/shortcode\/publisher\/15",
"duration": "00:50:03.900"
}
],

/*
Share Tab
*/
share: {
/**
* Share Channels:
* - list of available channels in share tab
*/
channels: [
// "facebook",
"twitter",
// "whats-app",
// "linkedin",
// "pinterest",
// "xing",
"mail",
"link"
],
sharePlaytime: true,
/**
* Share Outlet
* - outlet path required in order to provide embed snippet
* - also ensure that the configuration as well as the episode is available via urls to enable embedding
**/
outlet: "/share.html",
}

Chapters

chapters.json
[
{
"start": "00:00:00.000",
"title": "Begr\u00fc\u00dfung",
"href": "",
"image": ""
},
{
"start": "00:00:26.196",
"title": "Simon",
"href": "",
"image": ""
},
{
"start": "00:01:56.397",
"title": "Feedback",
"href": "",
"image": ""
},
{
"start": "00:07:08.279",
"title": "Erfahrungen beim Publishen",
"href": "",
"image": ""
},
{
"start": "00:13:29.226",
"title": "Shownotes",
"href": "",
"image": ""
},
{
"start": "00:20:43.264",
"title": "Audio-Hardware",
"href": "",
"image": ""
},
{
"start": "00:22:51.183",
"title": "Podlove Web Player: Warum eigentlich?",
"href": "",
"image": ""
},
{
"start": "00:25:41.451",
"title": "Podlove Web Player 1",
"href": "",
"image": ""
},
{
"start": "00:28:16.131",
"title": "Podlove Web Player 2",
"href": "",
"image": ""
},
{
"start": "00:33:44.999",
"title": "Podlove Web Player 3",
"href": "",
"image": ""
},
{
"start": "00:44:17.011",
"title": "Podlove Web Player 4",
"href": "",
"image": ""
},
{
"start": "01:02:41.149",
"title": "Podlove UI",
"href": "",
"image": ""
},
{
"start": "01:05:50.035",
"title": "Podlove Web Player 5",
"href": "",
"image": ""
},
{
"start": "01:12:50.121",
"title": "Podlove Web Player WordPress Plugin",
"href": "",
"image": ""
},
{
"start": "01:29:23.552",
"title": "Ausblick",
"href": "",
"image": ""
},
{
"start": "01:30:49.849",
"title": "Und Tsch\u00fcss",
"href": "",
"image": ""
}
]

Transcripts

transcripts.json
[
{
"start": "00:00:00.005",
"start_ms": 5,
"end": "00:00:09.458",
"end_ms": 9458,
"speaker": "3",
"voice": "Eric",
"text": "Dann sage ich einfach mal: Hallo und willkommen zu Episode drei des Podlovers Podcasts. Heute das erste Mal mit Gast. Hallo Simon."
},
{
"start": "00:00:09.600",
"start_ms": 9600,
"end": "00:00:10.800",
"end_ms": 10800,
"speaker": "4",
"voice": "Simon",
"text": "Hallo."
},
{
"start": "00:00:10.996",
"start_ms": 10996,
"end": "00:00:13.875",
"end_ms": 13875,
"speaker": "3",
"voice": "Eric",
"text": "Au\u00dferdem wieder mit Michi."
},
{
"start": "00:00:14.900",
"start_ms": 14900,
"end": "00:00:15.900",
"end_ms": 15900,
"speaker": "2",
"voice": "Michi",
"text": "Hallo."
},
{
"start": "00:00:16.000",
"start_ms": 16000,
"end": "00:00:16.300",
"end_ms": 16300,
"speaker": "3",
"voice": "Eric",
"text": "Und Alex."
}
]

Playlist

playlist.json
[
{
"title": "Podlove Web Player",
"config": "https:\/\/backend.podlovers.org\/wp-json\/podlove-web-player\/shortcode\/publisher\/60",
"duration": "01:31:18.610"
},
{
"title": "Podlove Publisher",
"config": "https:\/\/backend.podlovers.org\/wp-json\/podlove-web-player\/shortcode\/publisher\/51",
"duration": "02:03:30.573"
},
{
"title": "Wir. M\u00fcssen Reden",
"config": "https:\/\/backend.podlovers.org\/wp-json\/podlove-web-player\/shortcode\/publisher\/15",
"duration": "00:50:03.900"
}
]