diff options
Diffstat (limited to 'src/reddit.ts')
| -rw-r--r-- | src/reddit.ts | 62 |
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); }; |