28 lines
954 B
JavaScript
28 lines
954 B
JavaScript
import {parseText} from 'media-captions';
|
|
import Fetch from "@11ty/eleventy-fetch";
|
|
import path from 'path';
|
|
|
|
class SearchIndex {
|
|
data() {
|
|
return {eleventyExcludeFromCollections:["episode"], layout: null}
|
|
}
|
|
|
|
async render (data) {
|
|
const episodesWithTranscript = data.collections.episode.filter(e=>e.data.podcast?.transcriptPage)
|
|
const result = episodesWithTranscript.map((episode)=>{
|
|
const transcriptPage = data.collections.transcript.find(t=>t.data.episode==episode.data.episode && t.data.season == episode.data.season)
|
|
if (!transcriptPage) {return null}
|
|
return {
|
|
transcriptPageUrl: this.url(transcriptPage.url),
|
|
episode: episode.data.episode,
|
|
season: episode.data.season,
|
|
title: episode.data.title,
|
|
url: `${this.url(episode.url)}`,
|
|
segments: transcriptPage.data.segments
|
|
}
|
|
})
|
|
return JSON.stringify(result.filter(r=>r))
|
|
}
|
|
}
|
|
|
|
export default SearchIndex |