From eb5ac709ab3d98e8dcf37795fdef9ec068e87516 Mon Sep 17 00:00:00 2001 From: Aholicknight Date: Tue, 26 Nov 2024 08:55:42 -0600 Subject: [PATCH] api/reddit: add support for resolving short links in comments --- api/src/processing/services/reddit.js | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/api/src/processing/services/reddit.js b/api/src/processing/services/reddit.js index 701db236..67f39db9 100644 --- a/api/src/processing/services/reddit.js +++ b/api/src/processing/services/reddit.js @@ -47,11 +47,24 @@ async function getAccessToken() { return access_token; } -export default async function(obj) { - let url = new URL(`https://www.reddit.com/r/${obj.sub}/comments/${obj.id}.json`); +async function resolveShortLink(url) { + return fetch(url, { method: 'HEAD', redirect: 'manual' }) + .then(r => r.headers.get('location')) + .catch(() => null); +} - if (obj.user) { - url.pathname = `/user/${obj.user}/comments/${obj.id}.json`; +export default async function(obj) { + let url; + + if (obj.shortLink) { + const resolvedUrl = await resolveShortLink(obj.shortLink); + if (!resolvedUrl) return { error: "fetch.short_link" }; + url = new URL(resolvedUrl); + } else { + url = new URL(`https://www.reddit.com/r/${obj.sub}/comments/${obj.id}.json`); + if (obj.user) { + url.pathname = `/user/${obj.user}/comments/${obj.id}.json`; + } } const accessToken = await getAccessToken(); @@ -124,4 +137,4 @@ export default async function(obj) { audioFilename: `reddit_${id}_audio`, filename: `reddit_${id}.mp4` } -} +} \ No newline at end of file