implement some feautres in transcript search

This commit is contained in:
2024-12-26 13:37:33 -06:00
parent f705cca038
commit 0dcb7634ae
8 changed files with 101 additions and 30 deletions

View File

@@ -23,14 +23,14 @@ override:eleventyComputed: []
let search_index_promise = fetch('../transcript-index')
.then((res)=>res.json())
.then((documents)=>{
docs = documents.map(({title, episode, season, url, cues})=>cues.map(({startTime, text})=>({title, episode, season, url, startTime, text}))).flat()
console.log(documents)
docs = documents.map(({title, episode, season, url, transcriptPageUrl, segments})=>segments.map(({start, text, id})=>({segment_id:id, title, episode, season, transcriptPageUrl, url, start, text}))).flat()
console.log(docs)
idx = lunr(function(){
this.ref('id')
this.ref('index')
this.field('text')
this.metadataWhitelist = ['position']
docs.forEach(function (doc, idx) {
doc.id = idx;
doc.index = idx;
this.add(doc);
}, this)
})
@@ -44,14 +44,15 @@ override:eleventyComputed: []
results.forEach(r => {
r.title = docs[r.ref].title,
r.url = docs[r.ref].url
r.id = docs[r.ref].id
})
console.log('Form submitted!', results)
console.log('Form submitted!', searchQuery, results)
const results_ol = document.getElementById("results").querySelector('ol')
results_ol.innerHTML = ""
results.forEach(r => {
const el = document.createElement('li')
const {url, title, text, season, episode, startTime} = docs[r.ref]
el.innerHTML = `<a href="${url}?startAt=${startTime}">${title} (Season ${season}, episode ${episode})</a><p>${Duration.fromObject({seconds:startTime}).toFormat("hh:mm:ss")}</p><p>${text}</p>`
const {segment_id, url, title, text, season, episode, start, transcriptPageUrl} = docs[r.ref]
el.innerHTML = `<a href="${transcriptPageUrl}#${segment_id}">${title} (Season ${season}, episode ${episode})</a><p>${Duration.fromObject({seconds:start/1000}).toFormat("hh:mm:ss")}</p><p>${text}</p>`
results_ol.appendChild(el)
})
}