diff --git a/src/helpers/media.ts b/src/helpers/media.ts index 960a60e..0d61957 100644 --- a/src/helpers/media.ts +++ b/src/helpers/media.ts @@ -1,5 +1,7 @@ +import { Context } from "hono"; + /* Help populate API response for media */ -export const processMedia = (media: TweetMedia): APIPhoto | APIVideo | null => { +export const processMedia = (c: Context, media: TweetMedia): APIPhoto | APIVideo | null => { if (media.type === 'photo') { return { type: 'photo', @@ -11,7 +13,7 @@ export const processMedia = (media: TweetMedia): APIPhoto | APIVideo | null => { } else if (media.type === 'video' || media.type === 'animated_gif') { /* Find the variant with the highest bitrate */ const bestVariant = media.video_info?.variants?.filter?.((format) => { - return !format.url.includes('hevc') + return c.req.header('user-agent')?.includes('Telegram') || !format.url.includes('hevc') }).reduce?.((a, b) => (a.bitrate ?? 0) > (b.bitrate ?? 0) ? a : b ); diff --git a/src/providers/twitter/processor.ts b/src/providers/twitter/processor.ts index 597601b..6fa3f2d 100644 --- a/src/providers/twitter/processor.ts +++ b/src/providers/twitter/processor.ts @@ -171,7 +171,7 @@ export const buildAPITwitterStatus = async ( /* Populate status media */ mediaList.forEach(media => { - const mediaObject = processMedia(media); + const mediaObject = processMedia(c, media); if (mediaObject) { apiStatus.media.all = apiStatus.media?.all ?? []; apiStatus.media?.all?.push(mediaObject); @@ -234,7 +234,7 @@ export const buildAPITwitterStatus = async ( if (card.media) { if (card.media.videos) { card.media.videos.forEach(video => { - const mediaObject = processMedia(video) as APIVideo; + const mediaObject = processMedia(c, video) as APIVideo; if (mediaObject) { apiStatus.media.all = apiStatus.media?.all ?? []; apiStatus.media?.all?.push(mediaObject); @@ -245,7 +245,7 @@ export const buildAPITwitterStatus = async ( } if (card.media.photos) { card.media.photos.forEach(photo => { - const mediaObject = processMedia(photo) as APIPhoto; + const mediaObject = processMedia(c, photo) as APIPhoto; if (mediaObject) { apiStatus.media.all = apiStatus.media?.all ?? []; apiStatus.media?.all?.push(mediaObject);