diff --git a/src/services/unbody/dataTypes/PodcastEpisodeDocument.dataType.ts b/src/services/unbody/dataTypes/PodcastEpisodeDocument.dataType.ts index 5c3a174..96e307c 100644 --- a/src/services/unbody/dataTypes/PodcastEpisodeDocument.dataType.ts +++ b/src/services/unbody/dataTypes/PodcastEpisodeDocument.dataType.ts @@ -47,38 +47,49 @@ export const PodcastEpisodeDataType: UnbodyDataTypeConfig< const channels: LPE.Podcast.Content['channels'] = [] const credits: LPE.Podcast.Content['credits'] = [] const transcription: LPE.Podcast.Content['transcription'] = [] + const timestamps: LPE.Podcast.Content['timestamps'] = [] if (context?.parseContent) { + const sections = findSections( + ['Credits', 'Timestamps', 'Transcription'], + data.content, + ) + const textBlocks = data.content.filter( (block) => block.type === 'text', ) as LPE.Post.TextBlock[] - const creditsIndex = textBlocks.findIndex( - (block) => (block.text || '') === '[Credits]', - ) + sections.forEach((section) => { + switch (section.name) { + case 'Credits': { + credits.push( + ...(section.blocks.filter( + (block) => block.type === 'text', + ) as LPE.Post.TextBlock[]), + ) - const transcriptionIndex = textBlocks.findIndex( - (block) => (block.text || '') === '[Transcription]', - ) + break + } - if (creditsIndex > -1) { - textBlocks - .slice( - creditsIndex + 1, - transcriptionIndex > -1 ? transcriptionIndex : textBlocks.length, - ) - .forEach((block) => { - credits.push(block) - }) - } + case 'Timestamps': { + const blocks = section.blocks.filter((block) => { + if (block.type === 'image') return false + if ((block.html || '').match(`