From 5d70d04154dbe4bb145cf18adf6b0411b1a4bbc0 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Mon, 10 Oct 2022 15:12:41 +0800 Subject: [PATCH 1/2] If the saved tweet is a reply, we need to get the referenced tweet --- packages/api/src/utils/golang-handler.ts | 21 ------------------- .../src/websites/twitter-handler.ts | 9 ++++++-- 2 files changed, 7 insertions(+), 23 deletions(-) delete mode 100644 packages/api/src/utils/golang-handler.ts diff --git a/packages/api/src/utils/golang-handler.ts b/packages/api/src/utils/golang-handler.ts deleted file mode 100644 index 6e6e29d02..000000000 --- a/packages/api/src/utils/golang-handler.ts +++ /dev/null @@ -1,21 +0,0 @@ -export class GolangHandler { - name = 'golangweekly' - - // eslint-disable-next-line @typescript-eslint/no-unused-vars - shouldPrehandle = (url: URL, _dom: Document): boolean => { - const host = this.name + '.com' - // check if url ends with golangweekly.com - return url.hostname.endsWith(host) - } - - prehandle = (url: URL, dom: Document): Promise => { - const body = dom.querySelector('body') - - // this removes the "Subscribe" button - body?.querySelector('.el-splitbar')?.remove() - // this removes the title - body?.querySelector('.el-masthead')?.remove() - - return Promise.resolve(dom) - } -} diff --git a/packages/content-handler/src/websites/twitter-handler.ts b/packages/content-handler/src/websites/twitter-handler.ts index 1249461bf..f63417020 100644 --- a/packages/content-handler/src/websites/twitter-handler.ts +++ b/packages/content-handler/src/websites/twitter-handler.ts @@ -149,7 +149,7 @@ export class TwitterHandler extends ContentHandler { if (!tweetId) { throw new Error('could not find tweet id in url') } - const tweet = await getTweetById(tweetId) + let tweet = await getTweetById(tweetId) const tweetData = tweet.data const authorId = tweetData.author_id const author = tweet.includes.users.filter((u) => (u.id = authorId))[0] @@ -157,9 +157,14 @@ export class TwitterHandler extends ContentHandler { const title = _.escape(titleForAuthor(author)) const authorImage = author.profile_image_url.replace('_normal', '_400x400') const description = _.escape(tweetData.text) + const converstationId = tweetData.conversation_id + if (converstationId !== tweetId) { + // this is a reply, so we need to get the referenced tweet + tweet = await getTweetById(converstationId) + } const tweets = [tweet] - // check if tweet is a thread + // we want to get the full thread const thread = await getTweetThread( tweetData.conversation_id, author.username From 08c30f9c24ae849bb7d68591af0b339a7ff94c89 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Mon, 10 Oct 2022 15:33:36 +0800 Subject: [PATCH 2/2] Show the original tweet firstly --- .../src/websites/twitter-handler.ts | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/packages/content-handler/src/websites/twitter-handler.ts b/packages/content-handler/src/websites/twitter-handler.ts index f63417020..16138c1e1 100644 --- a/packages/content-handler/src/websites/twitter-handler.ts +++ b/packages/content-handler/src/websites/twitter-handler.ts @@ -150,6 +150,12 @@ export class TwitterHandler extends ContentHandler { throw new Error('could not find tweet id in url') } let tweet = await getTweetById(tweetId) + const conversationId = tweet.data.conversation_id + if (conversationId !== tweetId) { + // this is a reply, so we need to get the referenced tweet + tweet = await getTweetById(conversationId) + } + const tweetData = tweet.data const authorId = tweetData.author_id const author = tweet.includes.users.filter((u) => (u.id = authorId))[0] @@ -157,18 +163,10 @@ export class TwitterHandler extends ContentHandler { const title = _.escape(titleForAuthor(author)) const authorImage = author.profile_image_url.replace('_normal', '_400x400') const description = _.escape(tweetData.text) - const converstationId = tweetData.conversation_id - if (converstationId !== tweetId) { - // this is a reply, so we need to get the referenced tweet - tweet = await getTweetById(converstationId) - } const tweets = [tweet] // we want to get the full thread - const thread = await getTweetThread( - tweetData.conversation_id, - author.username - ) + const thread = await getTweetThread(conversationId, author.username) if (thread.meta.result_count > 0) { // tweets are in reverse chronological order in the thread for (const t of thread.data.reverse()) {