From 4969391d4c7c23ea87666a9c1c2540b5dd62e437 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Wed, 12 Apr 2023 12:15:53 +0800 Subject: [PATCH] Replace picture with image --- packages/api/src/elastic/types.ts | 3 ++ packages/api/src/generated/graphql.ts | 2 +- packages/api/src/generated/schema.graphql | 2 +- packages/api/src/schema.ts | 2 +- packages/api/src/utils/parser.ts | 36 +++++++++++-------- .../src/websites/image-handler.ts | 1 + .../src/websites/piped-video-handler.ts | 1 + .../src/websites/twitter-handler.ts | 1 + .../src/websites/youtube-handler.ts | 1 + 9 files changed, 32 insertions(+), 17 deletions(-) diff --git a/packages/api/src/elastic/types.ts b/packages/api/src/elastic/types.ts index 6ea001506..8237f84cf 100644 --- a/packages/api/src/elastic/types.ts +++ b/packages/api/src/elastic/types.ts @@ -62,6 +62,9 @@ export enum PageType { Unknown = 'UNKNOWN', Website = 'WEBSITE', Highlights = 'HIGHLIGHTS', + TWEET = 'TWEET', + VIDEO = 'VIDEO', + IMAGE = 'IMAGE', } export enum ArticleSavingRequestStatus { diff --git a/packages/api/src/generated/graphql.ts b/packages/api/src/generated/graphql.ts index 0b5663e7f..22d51b8b4 100644 --- a/packages/api/src/generated/graphql.ts +++ b/packages/api/src/generated/graphql.ts @@ -1683,7 +1683,7 @@ export enum PageType { Book = 'BOOK', File = 'FILE', Highlights = 'HIGHLIGHTS', - Picture = 'PICTURE', + Image = 'IMAGE', Profile = 'PROFILE', Tweet = 'TWEET', Unknown = 'UNKNOWN', diff --git a/packages/api/src/generated/schema.graphql b/packages/api/src/generated/schema.graphql index 51e1e5d5b..247ff2eda 100644 --- a/packages/api/src/generated/schema.graphql +++ b/packages/api/src/generated/schema.graphql @@ -1219,7 +1219,7 @@ enum PageType { BOOK FILE HIGHLIGHTS - PICTURE + IMAGE PROFILE TWEET UNKNOWN diff --git a/packages/api/src/schema.ts b/packages/api/src/schema.ts index 5f8c98288..3beeaff93 100755 --- a/packages/api/src/schema.ts +++ b/packages/api/src/schema.ts @@ -311,7 +311,7 @@ const schema = gql` UNKNOWN TWEET VIDEO - PICTURE + IMAGE } type Page { diff --git a/packages/api/src/utils/parser.ts b/packages/api/src/utils/parser.ts index e940e98d3..8316a4619 100644 --- a/packages/api/src/utils/parser.ts +++ b/packages/api/src/utils/parser.ts @@ -1,29 +1,29 @@ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unused-vars */ +import { preParseContent } from '@omnivore/content-handler' import { Readability } from '@omnivore/readability' -import createDOMPurify, { SanitizeElementHookEvent } from 'dompurify' -import { PageType, PreparedDocumentInput } from '../generated/graphql' -import { buildLogger, LogRecord } from './logger' -import { createImageProxyUrl } from './imageproxy' +import addressparser from 'addressparser' import axios from 'axios' +import createDOMPurify, { SanitizeElementHookEvent } from 'dompurify' import * as hljs from 'highlightjs' import { decode } from 'html-entities' +import * as jwt from 'jsonwebtoken' import { parseHTML } from 'linkedom' -import { getRepository } from '../entity/utils' -import { User } from '../entity/user' +import { NodeHtmlMarkdown } from 'node-html-markdown' import { ILike } from 'typeorm' +import { promisify } from 'util' import { v4 as uuid } from 'uuid' -import addressparser from 'addressparser' -import { preParseContent } from '@omnivore/content-handler' +import { User } from '../entity/user' +import { getRepository } from '../entity/utils' +import { env } from '../env' +import { PageType, PreparedDocumentInput } from '../generated/graphql' import { EmbeddedHighlightData, findEmbeddedHighlight, } from './highlightGenerator' -import { NodeHtmlMarkdown } from 'node-html-markdown' -import { promisify } from 'util' -import * as jwt from 'jsonwebtoken' -import { env } from '../env' +import { createImageProxyUrl } from './imageproxy' +import { buildLogger, LogRecord } from './logger' const logger = buildLogger('utils.parse') const signToken = promisify(jwt.sign) @@ -118,12 +118,20 @@ const parseOriginalContent = (document: Document): PageType => { return PageType.Profile case 'website': return PageType.Website + case 'tweet': + return PageType.Tweet + case 'image': + return PageType.Image + default: + if (content.toLowerCase().startsWith('video')) { + return PageType.Video + } + return PageType.Unknown } } catch (error) { logger.error('Error extracting og:type from content', error) + return PageType.Unknown } - - return PageType.Unknown } const getPurifiedContent = (html: string): Document => { diff --git a/packages/content-handler/src/websites/image-handler.ts b/packages/content-handler/src/websites/image-handler.ts index 2ccfcd610..9872f4c21 100644 --- a/packages/content-handler/src/websites/image-handler.ts +++ b/packages/content-handler/src/websites/image-handler.ts @@ -19,6 +19,7 @@ export class ImageHandler extends ContentHandler { ${title} +
diff --git a/packages/content-handler/src/websites/piped-video-handler.ts b/packages/content-handler/src/websites/piped-video-handler.ts index ffa8c050b..bae7fa3b1 100644 --- a/packages/content-handler/src/websites/piped-video-handler.ts +++ b/packages/content-handler/src/websites/piped-video-handler.ts @@ -69,6 +69,7 @@ export class PipedVideoHandler extends ContentHandler { + diff --git a/packages/content-handler/src/websites/twitter-handler.ts b/packages/content-handler/src/websites/twitter-handler.ts index 1116d5b7f..c196ec987 100644 --- a/packages/content-handler/src/websites/twitter-handler.ts +++ b/packages/content-handler/src/websites/twitter-handler.ts @@ -376,6 +376,7 @@ export class TwitterHandler extends ContentHandler { +
diff --git a/packages/content-handler/src/websites/youtube-handler.ts b/packages/content-handler/src/websites/youtube-handler.ts index 58bc12dd4..e86eda113 100644 --- a/packages/content-handler/src/websites/youtube-handler.ts +++ b/packages/content-handler/src/websites/youtube-handler.ts @@ -83,6 +83,7 @@ export class YoutubeHandler extends ContentHandler { +