import extName from 'ext-name'; import { canEmbed } from '../components/Embed'; const getCommentMediaInfo = (comment) => { if (!comment?.thumbnailUrl && !comment?.link) { return; } if (comment?.link) { try { const url = new URL(comment.link); const host = url.hostname; let scrapedThumbnailUrl; if (['youtube.com', 'www.youtube.com', 'youtu.be'].includes(host)) { const videoId = host === 'youtu.be' ? url.pathname.slice(1) : url.searchParams.get('v'); scrapedThumbnailUrl = `https://img.youtube.com/vi/${videoId}/sddefault.jpg`; } else if (host.includes('bitchute.com')) { const videoId = url.pathname.split('/')[2]; scrapedThumbnailUrl = `https://static-3.bitchute.com/live/cover_images/F61vWF4shy8s/${videoId}_640x360.jpg`; } else if (host.includes('streamable.com')) { const videoId = url.pathname.split('/')[1]; scrapedThumbnailUrl = `https://cdn-cf-east.streamable.com/image/${videoId}.jpg`; } if (canEmbed(url)) { return { url: comment.link, type: 'iframe', thumbnail: comment.thumbnailUrl || scrapedThumbnailUrl, }; } const mime = extName(url.pathname.toLowerCase().replace('/', ''))[0]?.mime; if (mime?.startsWith('image')) { return { url: comment.link, type: 'image', }; } if (mime?.startsWith('video')) { return { url: comment.link, type: 'video', thumbnail: comment.thumbnailUrl, }; } if (mime?.startsWith('audio')) { return { url: comment.link, type: 'audio', }; } } catch (error) { return; } } if (comment?.thumbnailUrl && comment?.thumbnailUrl !== comment?.link) { return { url: comment.link, type: 'webpage', thumbnail: comment.thumbnailUrl, }; } if (comment?.link) { return { url: comment.link, type: 'webpage', }; } }; export default getCommentMediaInfo;