diff --git a/tasks/fetch_feed.js b/tasks/fetch_feed.js
index d30b1eff892..cfe65cc122c 100644
--- a/tasks/fetch_feed.js
+++ b/tasks/fetch_feed.js
@@ -14,10 +14,16 @@ const slugify = str => str.toLowerCase()
.replace(/\s+/g, '-').replace(/[^\w\-]+/g, '')
.replace(/\-\-+/g, '-').replace(/^-+/, '').replace(/-+$/, '')
+const parseBaseInfoFromMatch = m => {
+ let [, categoryName = 'News', number, titlePlain] = m ? m : [,,,]
+ if (!number) categoryName = 'Verschiedenes'
+ if (categoryName === 'Der-Weg') categoryName = 'Der Weg'
+ return { categoryName, number, titlePlain }
+}
+
const parseInfo = e => {
const titleMatch = e.title.match(/([\w\s]+?)?\s?#(\d+) - (.*)/)
- let [, categoryName = 'News', number, titlePlain] = titleMatch ? titleMatch : [,,,e.title]
- if (!number) categoryName = 'Verschiedenes'
+ const { categoryName, number, titlePlain } = parseBaseInfoFromMatch(titleMatch)
const blockMatch = e.contentSnippet.match(/Blockzeit\s(\d+)/)
const block = blockMatch ? parseInt(blockMatch[1]) : null
const category = slugify(categoryName)
@@ -61,4 +67,15 @@ const parseInfo = e => {
})
writeJSON('episodes', episodes)
+
+ // Original Anchor-Feed
+ const updated = xml
+ .replace(/(https:\/\/anchor\.fm\/einundzwanzig\/episodes\/(.*?))<\/link>/gi, (match, url, anchorSlug) => {
+ const slugMatch = anchorSlug.match(/^(?:(.*)-)?([0-9]+?)---/)
+ const { categoryName, number } = parseBaseInfoFromMatch(slugMatch)
+ const episode = slugMatch ? episodes.find(e => e.categoryName == categoryName && e.number === number) : null
+ const link = episode ? `https://einundzwanzig.space/podcast/${episode.slug}` : url
+ return `${link}`
+ })
+ write('dist/feed.xml', updated)
})()