Blinkist Book Extractor
const getBook = () => {
const bireduce = (f, acc, a1, a2) => {
const length = a1.length || a2.length
for (let i = 0; i < length; i++) {
acc = f(a1[i], a2[i], acc)
}
return acc
}
const transformHeader = (header, i) => `
# Chapter ${i+1}
## ${header.textContent}
`
const headers = [...$('h1')].map(transformHeader)
const contents = [...$('.chapter__content')].map(content => [...content.children].map(para => "\n" + para.textContent).reduce((c, a) => c.concat("\n" + a)))
return bireduce((a, b, acc) => acc.concat(a).concat(b), '', headers, contents).replace("\n\n\n\n", "\n\n\n")
}