From 2e772410449f51b8e81a8ddb41e9f32bcf57f5cc Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Wed, 6 Jul 2022 22:06:21 +0800 Subject: [PATCH 1/2] Check and get Revue newsletter url from email --- packages/api/src/utils/parser.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/packages/api/src/utils/parser.ts b/packages/api/src/utils/parser.ts index a7a08475b..638996cbc 100644 --- a/packages/api/src/utils/parser.ts +++ b/packages/api/src/utils/parser.ts @@ -457,6 +457,17 @@ const beehiivNewsletterHref = (dom: Document): string | undefined => { return res } +const revueNewsletterHref = (dom: Document): string | undefined => { + const viewOnline = dom.querySelectorAll('table tr td div a[target="_blank"]') + let res: string | undefined = undefined + viewOnline.forEach((e) => { + if (e.textContent === 'View online') { + res = e.getAttribute('href') || undefined + } + }) + return res +} + const findNewsletterHeaderHref = (dom: Document): string | undefined => { // Substack header links const postLink = dom.querySelector('h1 a ') @@ -470,6 +481,12 @@ const findNewsletterHeaderHref = (dom: Document): string | undefined => { return beehiiv } + // Check if this is a revue newsletter + const revue = revueNewsletterHref(dom) + if (revue) { + return revue + } + return undefined } From 9599edb9fb2fe2df9e5bc8be936370b4cfc63730 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Wed, 6 Jul 2022 22:06:51 +0800 Subject: [PATCH 2/2] Add support for newsletters hosted on getrevue.co --- packages/api/src/utils/parser.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/api/src/utils/parser.ts b/packages/api/src/utils/parser.ts index 638996cbc..cd22e7269 100644 --- a/packages/api/src/utils/parser.ts +++ b/packages/api/src/utils/parser.ts @@ -443,6 +443,14 @@ export const isProbablyNewsletter = async (html: string): Promise => { } } + // Check if this is a newsletter from revue + if (dom.querySelectorAll('img[src*="getrevue.co"]').length > 0) { + const getrevueUrl = revueNewsletterHref(dom) + if (getrevueUrl) { + return true + } + } + return false }