From d738af4026bd67acf5699f7b158b7a5d527b4684 Mon Sep 17 00:00:00 2001 From: Dennis Reimann Date: Sun, 28 Mar 2021 00:07:18 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=B0=20Replace=20links=20in=20feed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tasks/fetch_feed.js | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) 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) })()