1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
import type { DiscordEmbed } from './interfaces.ts';
import type { RedditPost } from '../reddit.ts';
function decodeHtmlEntities(str: string): string {
return str
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, "'")
.replace(///g, '/')
.replace(/`/g, '`')
.replace(/=/g, '=');
}
export function createPostEmbed(post: RedditPost): DiscordEmbed {
const mediaUrl =
post.media?.reddit_video?.fallback_url ||
post.secure_media?.reddit_video?.fallback_url ||
post.url;
let description = post.selftext || '';
if (description.length > 1000)
description = description.substring(0, 997).trim() + ' ...';
const embed: DiscordEmbed = {
title: post.title,
description: description,
url: `https://reddit.com${post.permalink}`,
color: 0xff4500,
author: {
name: `u/${post.author}`,
url: `https://reddit.com/u/${post.author}`,
},
fields: [
{
name: 'Score',
value: `${post.score} ⬆️`,
inline: true,
},
{
name: 'Comments',
value: `${post.num_comments} 💬`,
inline: true,
},
],
timestamp: new Date(post.created_utc * 1000).toISOString(),
footer: {
text: 'r/okbuddyumamusume',
},
};
if (mediaUrl)
if (post.media?.reddit_video || post.secure_media?.reddit_video) {
if (!description) description = '';
description +=
'\n\n📹 **This post contains a video** - [Click here to view](' +
mediaUrl +
')';
embed.description = description;
if (post.preview?.images?.[0]?.source?.url) {
const decodedURL = decodeHtmlEntities(
post.preview.images[0].source.url,
);
console.log('Using preview image:', decodedURL);
embed.image = { url: decodedURL };
} else if (
post.thumbnail &&
post.thumbnail !== 'self' &&
post.thumbnail !== 'default'
) {
const decodedThumbnail = decodeHtmlEntities(post.thumbnail);
console.log('Using thumbnail:', decodedThumbnail);
embed.image = { url: decodedThumbnail };
} else {
console.log('No suitable thumbnail found for video post');
}
} else {
embed.image = { url: mediaUrl };
}
return embed;
}
|