mirror of
https://github.com/Einundzwanzig-Podcast/einundzwanzig.space.git
synced 2025-12-14 00:36:48 +00:00
🛠 Podcast and Team pages
This commit is contained in:
@@ -2,12 +2,46 @@ const { writeFileSync } = require('fs')
|
||||
const { join, resolve } = require('path')
|
||||
const Parser = require('rss-parser')
|
||||
|
||||
const dir = resolve(__dirname, '..')
|
||||
const dst = join(dir, 'feed.json')
|
||||
const dir = resolve(__dirname, '..', 'generated')
|
||||
const write = (name, data) => writeFileSync(join(dir, `${name}.json`), JSON.stringify(data, null, 2))
|
||||
const parseInfo = e => {
|
||||
const titleMatch = e.title.match(/([\w\s]+?)?\s?#(\d+) - (.*)/)
|
||||
const [, categoryName = 'News', number, titlePlain] = titleMatch ? titleMatch : [,,,e.title]
|
||||
|
||||
const blockMatch = e.contentSnippet.match(/Blockzeit\s(\d+)/)
|
||||
const block = blockMatch ? parseInt(blockMatch[1]) : null
|
||||
const category = categoryName.toLowerCase().replace(/\W/, '-')
|
||||
|
||||
return { block, category, categoryName, number, titlePlain }
|
||||
}
|
||||
|
||||
;(async () => {
|
||||
const parser = new Parser()
|
||||
const feed = await parser.parseURL('https://anchor.fm/s/d8d3c38/podcast/rss')
|
||||
|
||||
writeFileSync(dst, JSON.stringify(feed, null, 2))
|
||||
// Original Anchor-Feed
|
||||
write('feed', feed)
|
||||
|
||||
// All episodes
|
||||
const episodes = feed.items.map(e => ({
|
||||
title: e.title.trim(),
|
||||
content: e.content.trim(),
|
||||
anchor: e.link,
|
||||
date: e.isoDate,
|
||||
enclosure: e.enclosure,
|
||||
duration: e.itunes.duration,
|
||||
image: e.itunes.image,
|
||||
season: e.itunes.season,
|
||||
episode: e.itunes.episode,
|
||||
guid: e.guid,
|
||||
...parseInfo(e)
|
||||
}))
|
||||
|
||||
write('episodes', episodes)
|
||||
|
||||
// By category/season
|
||||
write('news', episodes.filter(e => e.category === 'news'))
|
||||
write('der-weg', episodes.filter(e => e.category === 'der-weg'))
|
||||
write('interview', episodes.filter(e => e.category === 'interview'))
|
||||
write('lesestunde', episodes.filter(e => e.category === 'lesestunde'))
|
||||
})()
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
const pug = require('pug')
|
||||
const { mkdirSync, writeFileSync } = require('fs')
|
||||
const { dirname, resolve } = require('path')
|
||||
|
||||
const config = require('../pug.config')
|
||||
const site = require('../site-data')
|
||||
const feed = require('../feed.json')
|
||||
const site = require('../generated/site-data.json')
|
||||
const episodes = require('../generated/episodes.json')
|
||||
const team = require('../content/team.json')
|
||||
|
||||
const renderPage = (name, out, data = {}) => {
|
||||
@@ -19,4 +20,4 @@ const renderPage = (name, out, data = {}) => {
|
||||
|
||||
renderPage('index', 'index', { navCurrent: 'index' })
|
||||
renderPage('team', 'team/index', { navCurrent: 'team', team })
|
||||
renderPage('podcast', 'podcast/index', { navCurrent: 'podcast', feed })
|
||||
renderPage('podcast', 'podcast/index', { navCurrent: 'podcast', episodes })
|
||||
|
||||
@@ -3,7 +3,7 @@ const { join, resolve } = require('path')
|
||||
|
||||
const meta = require('../content/meta.json')
|
||||
|
||||
const dir = resolve(__dirname, '..')
|
||||
const dir = resolve(__dirname, '..', 'generated')
|
||||
const dst = join(dir, 'site-data.json')
|
||||
|
||||
const date = (new Date()).toJSON().split('T')[0]
|
||||
|
||||
Reference in New Issue
Block a user