summaryrefslogtreecommitdiff
path: root/src/reddit.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/reddit.ts')
-rw-r--r--src/reddit.ts62
1 files changed, 31 insertions, 31 deletions
diff --git a/src/reddit.ts b/src/reddit.ts
index f57cf75..5b4ded7 100644
--- a/src/reddit.ts
+++ b/src/reddit.ts
@@ -1,4 +1,4 @@
-import type { TimePeriod } from './discord/types.ts';
+import type { TimePeriod } from "./discord/types.ts";
export interface RedditPost {
id: string;
@@ -49,7 +49,7 @@ export interface RedditResponse {
};
}
-type SortType = 'hot' | 'top';
+type SortType = "hot" | "top";
const fetchWithRetry = async (
url: string,
@@ -63,15 +63,15 @@ const fetchWithRetry = async (
const response = await fetch(url, {
headers: {
- 'User-Agent':
- 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
+ "User-Agent":
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
Accept:
- 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
- 'Accept-Language': 'en-US,en;q=0.5',
- 'Accept-Encoding': 'gzip, deflate, br',
- DNT: '1',
- Connection: 'keep-alive',
- 'Upgrade-Insecure-Requests': '1',
+ "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
+ "Accept-Language": "en-US,en;q=0.5",
+ "Accept-Encoding": "gzip, deflate, br",
+ DNT: "1",
+ Connection: "keep-alive",
+ "Upgrade-Insecure-Requests": "1",
},
});
@@ -86,14 +86,14 @@ const fetchWithRetry = async (
await new Promise((resolve) => setTimeout(resolve, delay));
}
- throw new Error('Max retries exceeded');
+ throw new Error("Max retries exceeded");
};
export const fetchRedditPosts = async (
- sort: SortType = 'hot',
- time: TimePeriod = 'day',
+ sort: SortType = "hot",
+ time: TimePeriod = "day",
): Promise<RedditPost[]> => {
- const url = `https://www.reddit.com/r/okbuddyumamusume/${sort}.json${sort === 'top' ? `?t=${time}` : ''}`;
+ const url = `https://www.reddit.com/r/okbuddyumamusume/${sort}.json${sort === "top" ? `?t=${time}` : ""}`;
const response = await fetchWithRetry(url);
if (!response.ok) {
@@ -104,17 +104,17 @@ export const fetchRedditPosts = async (
if (
error.includes("You've been blocked by network security") ||
- error.includes('blocked by network security')
+ error.includes("blocked by network security")
)
throw new Error(
- 'Reddit is blocking requests due to network security. This may be due to rate limiting or bot detection. Please try again later.',
+ "Reddit is blocking requests due to network security. This may be due to rate limiting or bot detection. Please try again later.",
);
if (error) errorText = `${errorText} \n\n ${error}`;
} catch (err) {
if (
err instanceof Error &&
- err.message.includes('blocked by network security')
+ err.message.includes("blocked by network security")
)
throw err;
}
@@ -142,14 +142,14 @@ export const filterPostsByFlair = (
if (!hasMedia) return false;
- const postFlair = post.link_flair_text?.toLowerCase() || '';
- const isNSFW = post.over_18 || postFlair.includes('nsfw');
+ 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')
+ includedFlairs.some((flair) => flair.toLowerCase() === "nsfw")
)
- if (includedFlairs.some((flair) => flair.toLowerCase() === 'nsfw'))
+ if (includedFlairs.some((flair) => flair.toLowerCase() === "nsfw"))
return isNSFW;
if (isNSFW) return false;
@@ -170,7 +170,7 @@ export const filterPostsByFlair = (
const getRandomPost = (posts: RedditPost[]): RedditPost => {
if (posts.length === 0)
- throw new Error('No posts found matching the criteria');
+ throw new Error("No posts found matching the criteria");
const randomIndex = Math.floor(Math.random() * posts.length);
@@ -178,31 +178,31 @@ const getRandomPost = (posts: RedditPost[]): RedditPost => {
};
export const getCutePost = async (): Promise<RedditPost> => {
- const posts = await fetchRedditPosts('hot');
- const filteredPosts = filterPostsByFlair(posts, ['roleplay', 'announcement']);
+ const posts = await fetchRedditPosts("hot");
+ const filteredPosts = filterPostsByFlair(posts, ["roleplay", "announcement"]);
return getRandomPost(filteredPosts);
};
export const getRoleplayPost = async (): Promise<RedditPost> => {
- const posts = await fetchRedditPosts('hot');
- const filteredPosts = filterPostsByFlair(posts, [], ['roleplay']);
+ const posts = await fetchRedditPosts("hot");
+ const filteredPosts = filterPostsByFlair(posts, [], ["roleplay"]);
return getRandomPost(filteredPosts);
};
export const getNSFWPost = async (): Promise<RedditPost> => {
- const posts = await fetchRedditPosts('hot');
- const filteredPosts = filterPostsByFlair(posts, [], ['nsfw']);
+ const posts = await fetchRedditPosts("hot");
+ const filteredPosts = filterPostsByFlair(posts, [], ["nsfw"]);
return getRandomPost(filteredPosts);
};
export const getTopPost = async (
- time: TimePeriod = 'day',
+ time: TimePeriod = "day",
): Promise<RedditPost> => {
- const posts = await fetchRedditPosts('top', time);
- const filteredPosts = filterPostsByFlair(posts, ['roleplay', 'announcement']);
+ const posts = await fetchRedditPosts("top", time);
+ const filteredPosts = filterPostsByFlair(posts, ["roleplay", "announcement"]);
return getRandomPost(filteredPosts);
};