about summary refs log tree commit diff
path: root/src/lib/link-meta
diff options
context:
space:
mode:
authornoriaki watanabe <nabeyang@gmail.com>2024-09-25 20:28:16 +0900
committerGitHub <noreply@github.com>2024-09-25 20:28:16 +0900
commit850cfc1cd567bf36c3c2ba9dfd92fb579e8e52bc (patch)
tree922d14b35dfdecf5ae65fcba275494a67b2cd60d /src/lib/link-meta
parentb38d4697b7a42a5e4c48d86a6528a20ace9c034e (diff)
downloadvoidsky-850cfc1cd567bf36c3c2ba9dfd92fb579e8e52bc.tar.zst
delete extractHtmlMeta (#5478)
Diffstat (limited to 'src/lib/link-meta')
-rw-r--r--src/lib/link-meta/html.ts71
-rw-r--r--src/lib/link-meta/twitter.ts20
-rw-r--r--src/lib/link-meta/youtube.ts31
3 files changed, 0 insertions, 122 deletions
diff --git a/src/lib/link-meta/html.ts b/src/lib/link-meta/html.ts
deleted file mode 100644
index 220f8431d..000000000
--- a/src/lib/link-meta/html.ts
+++ /dev/null
@@ -1,71 +0,0 @@
-import {extractTwitterMeta} from './twitter'
-import {extractYoutubeMeta} from './youtube'
-
-interface ExtractHtmlMetaInput {
-  html: string
-  hostname?: string
-  pathname?: string
-}
-
-export const extractHtmlMeta = ({
-  html,
-  hostname,
-  pathname,
-}: ExtractHtmlMetaInput): Record<string, string> => {
-  const htmlTitleRegex = /<title.*>([^<]+)<\/title>/i
-
-  let res: Record<string, string> = {}
-
-  const match = htmlTitleRegex.exec(html)
-
-  if (match) {
-    res.title = match[1].trim()
-  }
-
-  let metaMatch
-  let propMatch
-  const metaRe = /<meta[\s]([^>]+)>/gis
-  while ((metaMatch = metaRe.exec(html))) {
-    let propName
-    let propValue
-    const propRe = /(name|property|content)="([^"]+)"/gis
-    while ((propMatch = propRe.exec(metaMatch[1]))) {
-      if (propMatch[1] === 'content') {
-        propValue = propMatch[2]
-      } else {
-        propName = propMatch[2]
-      }
-    }
-    if (!propName || !propValue) {
-      continue
-    }
-    switch (propName?.trim()) {
-      case 'title':
-      case 'og:title':
-      case 'twitter:title':
-        res.title = propValue?.trim()
-        break
-      case 'description':
-      case 'og:description':
-      case 'twitter:description':
-        res.description = propValue?.trim()
-        break
-      case 'og:image':
-      case 'twitter:image':
-        res.image = propValue?.trim()
-        break
-    }
-  }
-
-  const isYoutubeUrl =
-    hostname?.includes('youtube.') || hostname?.includes('youtu.be')
-  const isTwitterUrl = hostname?.includes('twitter.')
-  // Workaround for some websites not having a title or description in the meta tags in the initial serve
-  if (isYoutubeUrl) {
-    res = {...res, ...extractYoutubeMeta(html)}
-  } else if (isTwitterUrl && pathname) {
-    res = {...extractTwitterMeta({pathname})}
-  }
-
-  return res
-}
diff --git a/src/lib/link-meta/twitter.ts b/src/lib/link-meta/twitter.ts
deleted file mode 100644
index d785903c0..000000000
--- a/src/lib/link-meta/twitter.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-export const extractTwitterMeta = ({
-  pathname,
-}: {
-  pathname: string
-}): Record<string, string> => {
-  const res = {title: 'Twitter'}
-  const parsedPathname = pathname.split('/')
-  if (parsedPathname.length <= 1 || parsedPathname[1].length <= 1) {
-    // Excluding one letter usernames as they're reserved by twitter for things like cases like twitter.com/i/articles/follows/-1675653703
-    return res
-  }
-  const username = parsedPathname?.[1]
-  const isUserProfile = parsedPathname?.length === 2
-
-  res.title = isUserProfile
-    ? `@${username} on Twitter`
-    : `Tweet by @${username}`
-
-  return res
-}
diff --git a/src/lib/link-meta/youtube.ts b/src/lib/link-meta/youtube.ts
deleted file mode 100644
index 42eed51e8..000000000
--- a/src/lib/link-meta/youtube.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-export const extractYoutubeMeta = (html: string): Record<string, string> => {
-  const res: Record<string, string> = {}
-  const youtubeTitleRegex = /"videoDetails":.*"title":"([^"]*)"/i
-  const youtubeDescriptionRegex =
-    /"videoDetails":.*"shortDescription":"([^"]*)"/i
-  const youtubeThumbnailRegex = /"videoDetails":.*"url":"(.*)(default\.jpg)/i
-  const youtubeAvatarRegex =
-    /"avatar":{"thumbnails":\[{.*?url.*?url.*?url":"([^"]*)"/i
-  const youtubeTitleMatch = youtubeTitleRegex.exec(html)
-  const youtubeDescriptionMatch = youtubeDescriptionRegex.exec(html)
-  const youtubeThumbnailMatch = youtubeThumbnailRegex.exec(html)
-  const youtubeAvatarMatch = youtubeAvatarRegex.exec(html)
-
-  if (youtubeTitleMatch && youtubeTitleMatch.length >= 1) {
-    res.title = decodeURI(youtubeTitleMatch[1])
-  }
-  if (youtubeDescriptionMatch && youtubeDescriptionMatch.length >= 1) {
-    res.description = decodeURI(youtubeDescriptionMatch[1]).replace(
-      /\\n/g,
-      '\n',
-    )
-  }
-  if (youtubeThumbnailMatch && youtubeThumbnailMatch.length >= 2) {
-    res.image = youtubeThumbnailMatch[1] + 'default.jpg'
-  }
-  if (!res.image && youtubeAvatarMatch && youtubeAvatarMatch.length >= 1) {
-    res.image = youtubeAvatarMatch[1]
-  }
-
-  return res
-}