Merge branch 'main' of github.com:bluesky-social/social-app into main
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -69,7 +69,7 @@ describe('extractHtmlMeta', () => {
|
|||||||
expect(output).toEqual(expectedOutput)
|
expect(output).toEqual(expectedOutput)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('extracts title and description from a generic youtube page', () => {
|
it.only('extracts title and description from a generic youtube page', () => {
|
||||||
const input = youtubeHTML
|
const input = youtubeHTML
|
||||||
const expectedOutput = {
|
const expectedOutput = {
|
||||||
title: 'HD Video (1080p) with Relaxing Music of Native American Shamans',
|
title: 'HD Video (1080p) with Relaxing Music of Native American Shamans',
|
||||||
@@ -81,6 +81,18 @@ describe('extractHtmlMeta', () => {
|
|||||||
expect(output).toEqual(expectedOutput)
|
expect(output).toEqual(expectedOutput)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it.only('extracts avatar from a youtube channel', () => {
|
||||||
|
const input = youtubeHTML
|
||||||
|
const expectedOutput = {
|
||||||
|
title: 'penguinz0',
|
||||||
|
description:
|
||||||
|
"Clips channel: https://www.youtube.com/channel/UC4EQHfzIbkL_Skit_iKt1aA\n\nTwitter: https://twitter.com/MoistCr1TiKaL\n\nInstagram: https://www.instagram.com/bigmoistcr1tikal/?hl=en\n\nTwitch: https://www.twitch.tv/moistcr1tikal\n\nSnapchat: Hugecharles\n\nTik Tok: Hugecharles\n\nI don't have any other public accounts.",
|
||||||
|
image: 'https://i.ytimg.com/vi/x6UITRjhijI/sddefault.jpg',
|
||||||
|
}
|
||||||
|
const output = extractHtmlMeta({html: input, hostname: 'youtube.com'})
|
||||||
|
expect(output).toEqual(expectedOutput)
|
||||||
|
})
|
||||||
|
|
||||||
it('extracts username from the url a twitter profile page', () => {
|
it('extracts username from the url a twitter profile page', () => {
|
||||||
const expectedOutput = {
|
const expectedOutput = {
|
||||||
title: '@bluesky on Twitter',
|
title: '@bluesky on Twitter',
|
||||||
|
|||||||
@@ -4,10 +4,12 @@ export const extractYoutubeMeta = (html: string): Record<string, string> => {
|
|||||||
const youtubeDescriptionRegex =
|
const youtubeDescriptionRegex =
|
||||||
/"videoDetails":.*"shortDescription":"([^"]*)"/i
|
/"videoDetails":.*"shortDescription":"([^"]*)"/i
|
||||||
const youtubeThumbnailRegex = /"videoDetails":.*"url":"(.*)(default\.jpg)/i
|
const youtubeThumbnailRegex = /"videoDetails":.*"url":"(.*)(default\.jpg)/i
|
||||||
|
const youtubeAvatarRegex =
|
||||||
|
/"avatar":{"thumbnails":\[{.*?url.*?url.*?url":"([^"]*)"/i
|
||||||
const youtubeTitleMatch = youtubeTitleRegex.exec(html)
|
const youtubeTitleMatch = youtubeTitleRegex.exec(html)
|
||||||
const youtubeDescriptionMatch = youtubeDescriptionRegex.exec(html)
|
const youtubeDescriptionMatch = youtubeDescriptionRegex.exec(html)
|
||||||
const youtubeThumbnailMatch = youtubeThumbnailRegex.exec(html)
|
const youtubeThumbnailMatch = youtubeThumbnailRegex.exec(html)
|
||||||
|
const youtubeAvatarMatch = youtubeAvatarRegex.exec(html)
|
||||||
|
|
||||||
if (youtubeTitleMatch && youtubeTitleMatch.length >= 1) {
|
if (youtubeTitleMatch && youtubeTitleMatch.length >= 1) {
|
||||||
res.title = decodeURI(youtubeTitleMatch[1])
|
res.title = decodeURI(youtubeTitleMatch[1])
|
||||||
@@ -21,6 +23,9 @@ export const extractYoutubeMeta = (html: string): Record<string, string> => {
|
|||||||
if (youtubeThumbnailMatch && youtubeThumbnailMatch.length >= 2) {
|
if (youtubeThumbnailMatch && youtubeThumbnailMatch.length >= 2) {
|
||||||
res.image = youtubeThumbnailMatch[1] + 'default.jpg'
|
res.image = youtubeThumbnailMatch[1] + 'default.jpg'
|
||||||
}
|
}
|
||||||
|
if (!res.image && youtubeAvatarMatch && youtubeAvatarMatch.length >= 1) {
|
||||||
|
res.image = youtubeAvatarMatch[1]
|
||||||
|
}
|
||||||
|
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-6
@@ -23,16 +23,12 @@ export interface Image {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function downloadAndResize(opts: DownloadAndResizeOpts) {
|
export async function downloadAndResize(opts: DownloadAndResizeOpts) {
|
||||||
let appendExt
|
let appendExt = 'jpeg'
|
||||||
try {
|
try {
|
||||||
const urip = new URL(opts.uri)
|
const urip = new URL(opts.uri)
|
||||||
const ext = urip.pathname.split('.').pop()
|
const ext = urip.pathname.split('.').pop()
|
||||||
if (ext === 'jpg' || ext === 'jpeg') {
|
if (ext === 'png') {
|
||||||
appendExt = 'jpeg'
|
|
||||||
} else if (ext === 'png') {
|
|
||||||
appendExt = 'png'
|
appendExt = 'png'
|
||||||
} else {
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
console.error('Invalid URI', opts.uri, e)
|
console.error('Invalid URI', opts.uri, e)
|
||||||
|
|||||||
Reference in New Issue
Block a user