From ed8e234e3b2a7c86c527dadae38c357199056f13 Mon Sep 17 00:00:00 2001 From: wukko Date: Sun, 9 Feb 2025 23:34:30 +0600 Subject: [PATCH] api/reddit: add support for a bunch of links & update the api endpoint also fixed "undefined" in a filename when downloading a user post --- api/src/processing/service-config.js | 12 ++++++++++++ api/src/processing/service-patterns.js | 7 ++++--- api/src/processing/services/reddit.js | 17 ++++++++++------- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/api/src/processing/service-config.js b/api/src/processing/service-config.js index b0ff44ab..3d382c69 100644 --- a/api/src/processing/service-config.js +++ b/api/src/processing/service-config.js @@ -65,8 +65,20 @@ export const services = { }, reddit: { patterns: [ + "comments/:id", + + "r/:sub/comments/:id", "r/:sub/comments/:id/:title", + "r/:sub/comments/:id/comment/:commentId", + + "user/:user/comments/:id", "user/:user/comments/:id/:title", + "user/:user/comments/:id/comment/:commentId", + + "r/u_:user/comments/:id", + "r/u_:user/comments/:id/:title", + "r/u_:user/comments/:id/comment/:commentId", + "r/:sub/s/:shareId" ], subdomains: "*", diff --git a/api/src/processing/service-patterns.js b/api/src/processing/service-patterns.js index 92550e5e..72d70898 100644 --- a/api/src/processing/service-patterns.js +++ b/api/src/processing/service-patterns.js @@ -20,9 +20,10 @@ export const testers = { pattern.id?.length <= 128 || pattern.shortLink?.length <= 32, "reddit": pattern => - (pattern.sub?.length <= 22 && pattern.id?.length <= 10) - || (pattern.user?.length <= 22 && pattern.id?.length <= 10) - || (pattern.sub?.length <= 22 && pattern.shareId?.length <= 12), + pattern.id?.length <= 16 + || (pattern.sub?.length <= 22 && pattern.id?.length <= 16) + || (pattern.user?.length <= 22 && pattern.id?.length <= 16) + || (pattern.sub?.length <= 22 && pattern.shareId?.length <= 16), "rutube": pattern => (pattern.id?.length === 32 && pattern.key?.length <= 32) || diff --git a/api/src/processing/services/reddit.js b/api/src/processing/services/reddit.js index f83083e4..50c78d35 100644 --- a/api/src/processing/services/reddit.js +++ b/api/src/processing/services/reddit.js @@ -61,9 +61,7 @@ export default async function(obj) { if (!params?.id) return { error: "fetch.short_link" }; - const url = new URL( - `https://www.reddit.com/r/${params.sub || params.user}/comments/${params.id}.json` - ); + const url = new URL(`https://www.reddit.com/comments/${params.id}.json`); const accessToken = await getAccessToken(); if (accessToken) url.hostname = 'oauth.reddit.com'; @@ -84,12 +82,17 @@ export default async function(obj) { data = data[0]?.data?.children[0]?.data; - const id = `${String(params.sub).toLowerCase()}_${params.id}`; + let sourceId; + if (params.sub || params.user) { + sourceId = `${String(params.sub || params.user).toLowerCase()}_${params.id}`; + } else { + sourceId = params.id; + } if (data?.url?.endsWith('.gif')) return { typeId: "redirect", urls: data.url, - filename: `reddit_${id}.gif`, + filename: `reddit_${sourceId}.gif`, } if (!data.secure_media?.reddit_video) @@ -133,7 +136,7 @@ export default async function(obj) { typeId: "tunnel", type: "merge", urls: [video, audioFileLink], - audioFilename: `reddit_${id}_audio`, - filename: `reddit_${id}.mp4` + audioFilename: `reddit_${sourceId}_audio`, + filename: `reddit_${sourceId}.mp4` } }