Preparse the newsletter content

This commit is contained in:
Hongbo Wu
2023-02-17 09:49:19 +08:00
parent 9acce06744
commit 7f761049d7
4 changed files with 28 additions and 2 deletions

View File

@ -72,6 +72,7 @@ const contentHandlers: ContentHandler[] = [
new BloombergNewsletterHandler(),
new SubstackHandler(),
new StackOverflowHandler(),
new EnergyWorldHandler(),
]
const newsletterHandlers: ContentHandler[] = [

View File

@ -16,4 +16,29 @@ export class EnergyWorldHandler extends ContentHandler {
input.from === 'ETEnergyworld Latest News<newsletter@etenergyworld.com>'
)
}
shouldPreParse(url: string, dom: Document): boolean {
return dom.querySelectorAll('img[src*="etenergyworld.png"]').length > 0
}
async preParse(url: string, dom: Document): Promise<Document> {
// get the main content
const main = dom.querySelector('table[class="nletter-wrap"]')
if (!main) {
return Promise.resolve(dom)
}
// create a new dom
const newDom = dom.createDocumentFragment()
// add the content to the new dom
main.querySelectorAll('table[class="multi-cols"] tr').forEach((tr) => {
const p = dom.createElement('p')
p.innerHTML = tr.innerHTML
newDom.appendChild(p)
})
dom.body.replaceChildren(newDom)
return Promise.resolve(dom)
}
}