Preparse the newsletter content
This commit is contained in:
@ -73,8 +73,6 @@ export function newsletterServiceRouter() {
|
||||
console.log('create')
|
||||
|
||||
const { message, expired } = readPushSubscription(req)
|
||||
console.log('pubsub message:', message, 'expired:', expired)
|
||||
|
||||
if (!message) {
|
||||
res.status(400).send('Bad Request')
|
||||
return
|
||||
|
||||
@ -466,6 +466,8 @@ export const parseEmailAddress = (from: string): addressparser.EmailAddress => {
|
||||
export const fetchFavicon = async (
|
||||
url: string
|
||||
): Promise<string | undefined> => {
|
||||
// don't fetch favicon for fake urls
|
||||
if (url.startsWith(FAKE_URL_PREFIX)) return undefined
|
||||
try {
|
||||
// get the correct url if it's a redirect
|
||||
const response = await axios.head(url, { timeout: 5000 })
|
||||
|
||||
@ -72,6 +72,7 @@ const contentHandlers: ContentHandler[] = [
|
||||
new BloombergNewsletterHandler(),
|
||||
new SubstackHandler(),
|
||||
new StackOverflowHandler(),
|
||||
new EnergyWorldHandler(),
|
||||
]
|
||||
|
||||
const newsletterHandlers: ContentHandler[] = [
|
||||
|
||||
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user