Add podcast tags (episode and person)

This commit is contained in:
Dennis Reimann
2022-04-19 14:00:30 +02:00
parent 425a807489
commit aa74e086db
2 changed files with 811 additions and 7 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -2,6 +2,7 @@ const { writeFileSync } = require('fs')
const { join, resolve } = require('path') const { join, resolve } = require('path')
const { replacements, slugify, stripHTML } = require('../helpers') const { replacements, slugify, stripHTML } = require('../helpers')
const { masterFeedUrl, publicFeedUrl } = require('../content/meta.json') const { masterFeedUrl, publicFeedUrl } = require('../content/meta.json')
const team = require('../content/team.json')
const nodes = require('../content/nodes.json') const nodes = require('../content/nodes.json')
const request = require('sync-request') const request = require('sync-request')
const { XMLParser, XMLBuilder, XMLValidator } = require('fast-xml-parser') const { XMLParser, XMLBuilder, XMLValidator } = require('fast-xml-parser')
@@ -91,7 +92,16 @@ const parseEpisode = e => {
'itunes:summary': episode.description // please the validator, Anchor's itunes:summary contains HTML 'itunes:summary': episode.description // please the validator, Anchor's itunes:summary contains HTML
} }
const participants = episode.participants.reduce((result, name) => { if (episode.number) {
updated['podcast:episode'] = {
__attr: {
display: `${episode.categoryName} #${episode.number}`,
},
'#text': episode.number,
}
}
const value = episode.participants.reduce((result, name) => {
const id = name.toLowerCase() const id = name.toLowerCase()
const address = nodes[id] const address = nodes[id]
if (address) { if (address) {
@@ -102,24 +112,46 @@ const parseEpisode = e => {
return result return result
}, []) }, [])
if (participants.length) { if (value.length) {
updated['podcast:value'] = { updated['podcast:value'] = {
__attr: { __attr: {
type: 'lightning', type: 'lightning',
method: 'keysend' method: 'keysend',
}, },
'podcast:valueRecipient': participants.map(p => ({ 'podcast:valueRecipient': value.map(p => ({
__attr: { __attr: {
...p, ...p,
type: 'node', type: 'node',
split: Math.round(100 / participants.length) split: Math.round(100 / value.length),
} },
})) })),
} }
} else if (debug) { } else if (debug) {
_noParticipants.push({ episode: episode.slug }) _noParticipants.push({ episode: episode.slug })
} }
const people = episode.participants.reduce((result, name) => {
const id = name.toLowerCase()
const person = team[id]
if (person) {
result.push(person)
}
return result
}, [])
if (people.length) {
updated['podcast:person'] = []
people.forEach(p => {
updated['podcast:person'].push({
__attr: {
href: `https://twitter.com/${p.twitter}`,
},
'#text': p.name
})
})
}
return updated return updated
}) })