summaryrefslogtreecommitdiff
path: root/src/reddit.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/reddit.js')
-rw-r--r--src/reddit.js100
1 files changed, 0 insertions, 100 deletions
diff --git a/src/reddit.js b/src/reddit.js
deleted file mode 100644
index 543e6ff..0000000
--- a/src/reddit.js
+++ /dev/null
@@ -1,100 +0,0 @@
-async function fetchRedditPosts(sort = 'hot', time = 'day') {
- const url = `https://www.reddit.com/r/okbuddyumamusume/${sort}.json${sort === 'top' ? `?t=${time}` : ''}`;
- const response = await fetch(url, {
- headers: {
- 'User-Agent': 'UmaBot/0.1.0',
- },
- });
-
- if (!response.ok) {
- let errorText = `Error fetching ${response.url}: ${response.status} ${response.statusText}`;
-
- try {
- const error = await response.text();
-
- if (error) errorText = `${errorText} \n\n ${error}`;
- } catch {
- //
- }
-
- throw new Error(errorText);
- }
-
- const data = await response.json();
-
- return data.data.children.map((post) => post.data);
-}
-
-function filterPostsByFlair(posts, excludedFlairs = [], includedFlairs = []) {
- return posts.filter((post) => {
- if (post.is_gallery) return false;
-
- const hasMedia =
- post.media?.reddit_video?.fallback_url ||
- post.secure_media?.reddit_video?.fallback_url ||
- post.url;
-
- if (!hasMedia) return false;
-
- const postFlair = post.link_flair_text?.toLowerCase() || '';
- const isNSFW = post.over_18 || postFlair.includes('nsfw');
-
- if (
- includedFlairs.length > 0 &&
- includedFlairs.some((flair) => flair.toLowerCase() === 'nsfw')
- )
- if (includedFlairs.some((flair) => flair.toLowerCase() === 'nsfw'))
- return isNSFW;
-
- if (isNSFW) return false;
-
- if (includedFlairs.length > 0)
- return includedFlairs.some((flair) =>
- postFlair.includes(flair.toLowerCase()),
- );
-
- if (excludedFlairs.length > 0)
- return !excludedFlairs.some((flair) =>
- postFlair.includes(flair.toLowerCase()),
- );
-
- return true;
- });
-}
-
-function getRandomPost(posts) {
- if (posts.length === 0)
- throw new Error('No posts found matching the criteria');
-
- const randomIndex = Math.floor(Math.random() * posts.length);
-
- return posts[randomIndex];
-}
-
-export async function getCutePost() {
- const posts = await fetchRedditPosts('hot');
- const filteredPosts = filterPostsByFlair(posts, ['roleplay', 'announcement']);
-
- return getRandomPost(filteredPosts);
-}
-
-export async function getRoleplayPost() {
- const posts = await fetchRedditPosts('hot');
- const filteredPosts = filterPostsByFlair(posts, [], ['roleplay']);
-
- return getRandomPost(filteredPosts);
-}
-
-export async function getNSFWPost() {
- const posts = await fetchRedditPosts('hot');
- const filteredPosts = filterPostsByFlair(posts, [], ['nsfw']);
-
- return getRandomPost(filteredPosts);
-}
-
-export async function getTopPost(time = 'day') {
- const posts = await fetchRedditPosts('top', time);
- const filteredPosts = filterPostsByFlair(posts, ['roleplay', 'announcement']);
-
- return getRandomPost(filteredPosts);
-}