Remove new "restack" and "share" buttons from SubStack newsletters

This commit is contained in:
Hongbo Wu
2023-04-18 14:53:27 +08:00
parent fa7eca4509
commit 06733227d6
4 changed files with 3324 additions and 16 deletions

View File

@ -34,6 +34,10 @@ export class SubstackHandler extends ContentHandler {
body?.querySelector('.post-cta')?.remove()
body?.querySelector('.container-border')?.remove()
body?.querySelector('.footer')?.remove()
// this removes the "restack" button
body?.querySelector('.email-ufi-2-bottom')?.remove()
// this removes the "share" button
body?.querySelector('.email-ufi-2-top')?.remove()
dom = this.fixupStaticTweets(dom)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,27 +1,27 @@
import 'mocha'
import * as chai from 'chai'
import { expect } from 'chai'
import chaiAsPromised from 'chai-as-promised'
import chaiString from 'chai-string'
import { SubstackHandler } from '../src/newsletters/substack-handler'
import { AxiosHandler } from '../src/newsletters/axios-handler'
import { BloombergNewsletterHandler } from '../src/newsletters/bloomberg-newsletter-handler'
import { GolangHandler } from '../src/newsletters/golang-handler'
import { MorningBrewHandler } from '../src/newsletters/morning-brew-handler'
import nock from 'nock'
import { generateUniqueUrl } from '../src/content-handler'
import fs from 'fs'
import { BeehiivHandler } from '../src/newsletters/beehiiv-handler'
import { ConvertkitHandler } from '../src/newsletters/convertkit-handler'
import { GhostHandler } from '../src/newsletters/ghost-handler'
import { CooperPressHandler } from '../src/newsletters/cooper-press-handler'
import { getNewsletterHandler } from '../src'
import { parseHTML } from 'linkedom'
import { HeyWorldHandler } from '../src/newsletters/hey-world-handler'
import { GenericHandler } from '../src/newsletters/generic-handler'
import { EveryIoHandler } from '../src/newsletters/every-io-handler'
import 'mocha'
import nock from 'nock'
import { getNewsletterHandler } from '../src'
import { generateUniqueUrl } from '../src/content-handler'
import { AxiosHandler } from '../src/newsletters/axios-handler'
import { BeehiivHandler } from '../src/newsletters/beehiiv-handler'
import { BloombergNewsletterHandler } from '../src/newsletters/bloomberg-newsletter-handler'
import { ConvertkitHandler } from '../src/newsletters/convertkit-handler'
import { CooperPressHandler } from '../src/newsletters/cooper-press-handler'
import { EnergyWorldHandler } from '../src/newsletters/energy-world'
import { EveryIoHandler } from '../src/newsletters/every-io-handler'
import { GenericHandler } from '../src/newsletters/generic-handler'
import { GhostHandler } from '../src/newsletters/ghost-handler'
import { GolangHandler } from '../src/newsletters/golang-handler'
import { HeyWorldHandler } from '../src/newsletters/hey-world-handler'
import { IndiaTimesHandler } from '../src/newsletters/india-times-handler'
import { MorningBrewHandler } from '../src/newsletters/morning-brew-handler'
import { SubstackHandler } from '../src/newsletters/substack-handler'
chai.use(chaiAsPromised)
chai.use(chaiString)
@ -571,4 +571,20 @@ describe('Newsletter email test', () => {
})
})
})
describe('preParse', () => {
context('when email is from Substack', () => {
it('removes the Substack footer and header', async () => {
const url = 'https://blog.omnivore.app/p/omnivore-2021-01-31'
const html = load('./test/data/substack-newsletter-new.html')
const dom = parseHTML(html).document
const preparedDom = await new SubstackHandler().preParse(url, dom)
// compare prepared html to the expected html
const expectedHTML = load(
'./test/data/prepared/substack-newsletter-new.html'
)
expect(preparedDom.documentElement.outerHTML).to.eql(expectedHTML)
})
})
})
})