mirror of
https://github.com/CompeyDev/fxtwitter-docker.git
synced 2025-04-07 03:20:55 +01:00
Prettier
This commit is contained in:
parent
d90b39ab11
commit
68266afc6c
5 changed files with 64 additions and 30 deletions
|
@ -71,13 +71,12 @@ const populateTweetProperties = async (
|
|||
tweet.extended_entities?.media || tweet.entities?.media || []
|
||||
);
|
||||
|
||||
console.log('tweet', JSON.stringify(tweet))
|
||||
console.log('tweet', JSON.stringify(tweet));
|
||||
|
||||
/* Populate this Tweet's media */
|
||||
mediaList.forEach(media => {
|
||||
const mediaObject = processMedia(media);
|
||||
if (mediaObject) {
|
||||
|
||||
apiTweet.media = apiTweet.media || {};
|
||||
apiTweet.media.all = apiTweet.media?.all || [];
|
||||
apiTweet.media.all.push(mediaObject);
|
||||
|
|
|
@ -80,7 +80,7 @@ export const handleStatus = async (
|
|||
} else if (all.length > 0) {
|
||||
redirectUrl = all[0].url;
|
||||
}
|
||||
|
||||
|
||||
if (redirectUrl) {
|
||||
return { response: Response.redirect(redirectUrl, 302) };
|
||||
}
|
||||
|
@ -150,7 +150,16 @@ export const handleStatus = async (
|
|||
switch (overrideMedia.type) {
|
||||
case 'photo':
|
||||
/* This Tweet has a photo to render. */
|
||||
instructions = renderPhoto( {tweet: tweet, authorText: authorText, engagementText: engagementText, userAgent: userAgent, isOverrideMedia: true }, overrideMedia as APIPhoto );
|
||||
instructions = renderPhoto(
|
||||
{
|
||||
tweet: tweet,
|
||||
authorText: authorText,
|
||||
engagementText: engagementText,
|
||||
userAgent: userAgent,
|
||||
isOverrideMedia: true
|
||||
},
|
||||
overrideMedia as APIPhoto
|
||||
);
|
||||
headers.push(...instructions.addHeaders);
|
||||
if (instructions.authorText) {
|
||||
authorText = instructions.authorText;
|
||||
|
@ -160,7 +169,10 @@ export const handleStatus = async (
|
|||
}
|
||||
break;
|
||||
case 'video':
|
||||
instructions = renderVideo( {tweet: tweet, userAgent: userAgent, text: newText, isOverrideMedia: true }, overrideMedia as APIVideo );
|
||||
instructions = renderVideo(
|
||||
{ tweet: tweet, userAgent: userAgent, text: newText, isOverrideMedia: true },
|
||||
overrideMedia as APIVideo
|
||||
);
|
||||
headers.push(...instructions.addHeaders);
|
||||
if (instructions.authorText) {
|
||||
authorText = instructions.authorText;
|
||||
|
@ -172,10 +184,21 @@ export const handleStatus = async (
|
|||
break;
|
||||
}
|
||||
} else if (tweet.media?.mosaic) {
|
||||
const instructions = renderPhoto( {tweet: tweet, authorText: authorText, engagementText: engagementText, userAgent: userAgent }, tweet.media?.mosaic );
|
||||
const instructions = renderPhoto(
|
||||
{
|
||||
tweet: tweet,
|
||||
authorText: authorText,
|
||||
engagementText: engagementText,
|
||||
userAgent: userAgent
|
||||
},
|
||||
tweet.media?.mosaic
|
||||
);
|
||||
headers.push(...instructions.addHeaders);
|
||||
} else if (tweet.media?.videos) {
|
||||
const instructions = renderVideo( {tweet: tweet, userAgent: userAgent, text: newText }, tweet.media?.videos[0] );
|
||||
const instructions = renderVideo(
|
||||
{ tweet: tweet, userAgent: userAgent, text: newText },
|
||||
tweet.media?.videos[0]
|
||||
);
|
||||
headers.push(...instructions.addHeaders);
|
||||
if (instructions.authorText) {
|
||||
authorText = instructions.authorText;
|
||||
|
|
|
@ -1,37 +1,45 @@
|
|||
import { Constants } from "../constants";
|
||||
import { Strings } from "../strings";
|
||||
import { Constants } from '../constants';
|
||||
import { Strings } from '../strings';
|
||||
|
||||
export const renderPhoto = (properties: RenderProperties, photo: APIPhoto | APIMosaicPhoto): ResponseInstructions => {
|
||||
const { tweet, engagementText, authorText, isOverrideMedia, userAgent } = properties;
|
||||
export const renderPhoto = (
|
||||
properties: RenderProperties,
|
||||
photo: APIPhoto | APIMosaicPhoto
|
||||
): ResponseInstructions => {
|
||||
const { tweet, engagementText, authorText, isOverrideMedia, userAgent } = properties;
|
||||
const instructions: ResponseInstructions = { addHeaders: [] };
|
||||
|
||||
if (!tweet.media?.mosaic || isOverrideMedia) {
|
||||
|
||||
photo = photo as APIPhoto;
|
||||
|
||||
|
||||
const all = tweet.media?.all as APIMedia[];
|
||||
const baseString = all.length === tweet.media?.photos?.length ? Strings.PHOTO_COUNT : Strings.MEDIA_COUNT;
|
||||
const baseString =
|
||||
all.length === tweet.media?.photos?.length
|
||||
? Strings.PHOTO_COUNT
|
||||
: Strings.MEDIA_COUNT;
|
||||
|
||||
const photoCounter = baseString.format({
|
||||
number: String(all.indexOf(photo) + 1),
|
||||
total: String(all.length)
|
||||
});
|
||||
|
||||
console.log('Telegram', userAgent?.indexOf('Telegram'))
|
||||
if (authorText === Strings.DEFAULT_AUTHOR_TEXT || (userAgent?.indexOf('Telegram') ?? 0) > -1) {
|
||||
const isTelegram = (userAgent?.indexOf('Telegram') ?? 0) > -1;
|
||||
|
||||
if (authorText === Strings.DEFAULT_AUTHOR_TEXT || isTelegram) {
|
||||
instructions.authorText = photoCounter;
|
||||
} else {
|
||||
instructions.authorText = `${authorText}${authorText ? ' ― ' : ''}${photoCounter}`;
|
||||
instructions.authorText = `${authorText}${
|
||||
authorText ? ' ― ' : ''
|
||||
}${photoCounter}`;
|
||||
}
|
||||
|
||||
if (engagementText && (userAgent?.indexOf('Telegram') ?? 0) === -1) {
|
||||
if (engagementText && !isTelegram) {
|
||||
instructions.siteName = `${Constants.BRANDING_NAME} - ${engagementText} - ${photoCounter}`;
|
||||
} else {
|
||||
instructions.siteName = `${Constants.BRANDING_NAME} - ${photoCounter}`;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (photo.type === 'mosaic_photo' && !isOverrideMedia) {
|
||||
console.log('Mosaic object:', tweet.media?.mosaic);
|
||||
instructions.addHeaders = [
|
||||
`<meta property="twitter:image" content="${tweet.media?.mosaic?.formats.jpeg}"/>`,
|
||||
`<meta property="og:image" content="${tweet.media?.mosaic?.formats.jpeg}"/>`
|
||||
|
@ -50,4 +58,4 @@ export const renderPhoto = (properties: RenderProperties, photo: APIPhoto | APIM
|
|||
console.log('Photo render instructions', JSON.stringify(instructions));
|
||||
|
||||
return instructions;
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
import { Constants } from "../constants";
|
||||
import { Strings } from "../strings";
|
||||
import { Constants } from '../constants';
|
||||
import { Strings } from '../strings';
|
||||
|
||||
export const renderVideo = (properties: RenderProperties, video: APIVideo): ResponseInstructions => {
|
||||
export const renderVideo = (
|
||||
properties: RenderProperties,
|
||||
video: APIVideo
|
||||
): ResponseInstructions => {
|
||||
const { tweet, userAgent, text } = properties;
|
||||
const instructions: ResponseInstructions = { addHeaders: [] };
|
||||
|
||||
|
@ -27,7 +30,10 @@ export const renderVideo = (properties: RenderProperties, video: APIVideo): Resp
|
|||
/* Like photos when picking a specific one (not using mosaic),
|
||||
we'll put an indicator if there are more than one video */
|
||||
if (all && all.length > 1 && (userAgent?.indexOf('Telegram') ?? 0) > -1) {
|
||||
const baseString = all.length === tweet.media?.videos?.length ? Strings.VIDEO_COUNT : Strings.MEDIA_COUNT;
|
||||
const baseString =
|
||||
all.length === tweet.media?.videos?.length
|
||||
? Strings.VIDEO_COUNT
|
||||
: Strings.MEDIA_COUNT;
|
||||
const videoCounter = baseString.format({
|
||||
number: String(all.indexOf(video) + 1),
|
||||
total: String(all.length)
|
||||
|
@ -41,9 +47,7 @@ export const renderVideo = (properties: RenderProperties, video: APIVideo): Resp
|
|||
/* Push the raw video-related headers */
|
||||
instructions.addHeaders = [
|
||||
`<meta property="twitter:player:stream:content_type" content="${video.format}"/>`,
|
||||
`<meta property="twitter:player:height" content="${
|
||||
video.height * sizeMultiplier
|
||||
}"/>`,
|
||||
`<meta property="twitter:player:height" content="${video.height * sizeMultiplier}"/>`,
|
||||
`<meta property="twitter:player:width" content="${video.width * sizeMultiplier}"/>`,
|
||||
`<meta property="og:video" content="${video.url}"/>`,
|
||||
`<meta property="og:video:secure_url" content="${video.url}"/>`,
|
||||
|
@ -54,4 +58,4 @@ export const renderVideo = (properties: RenderProperties, video: APIVideo): Resp
|
|||
];
|
||||
|
||||
return instructions;
|
||||
}
|
||||
};
|
||||
|
|
2
src/types/types.d.ts
vendored
2
src/types/types.d.ts
vendored
|
@ -165,7 +165,7 @@ interface APITweet {
|
|||
|
||||
lang: string | null;
|
||||
possibly_sensitive: boolean;
|
||||
|
||||
|
||||
replying_to: string | null;
|
||||
replying_to_status: string | null;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue