johnpaulada
9/7/2017 - 1:31 AM

Blinkist Book Extractor

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")
}