mirror of
https://github.com/imputnet/cobalt.git
synced 2025-07-14 01:08:27 +00:00
api/reddit: add support for a bunch of links & update the api endpoint
also fixed "undefined" in a filename when downloading a user post
This commit is contained in:
parent
ec21cc4480
commit
ed8e234e3b
@ -65,8 +65,20 @@ export const services = {
|
|||||||
},
|
},
|
||||||
reddit: {
|
reddit: {
|
||||||
patterns: [
|
patterns: [
|
||||||
|
"comments/:id",
|
||||||
|
|
||||||
|
"r/:sub/comments/:id",
|
||||||
"r/:sub/comments/:id/:title",
|
"r/:sub/comments/:id/:title",
|
||||||
|
"r/:sub/comments/:id/comment/:commentId",
|
||||||
|
|
||||||
|
"user/:user/comments/:id",
|
||||||
"user/:user/comments/:id/:title",
|
"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"
|
"r/:sub/s/:shareId"
|
||||||
],
|
],
|
||||||
subdomains: "*",
|
subdomains: "*",
|
||||||
|
@ -20,9 +20,10 @@ export const testers = {
|
|||||||
pattern.id?.length <= 128 || pattern.shortLink?.length <= 32,
|
pattern.id?.length <= 128 || pattern.shortLink?.length <= 32,
|
||||||
|
|
||||||
"reddit": pattern =>
|
"reddit": pattern =>
|
||||||
(pattern.sub?.length <= 22 && pattern.id?.length <= 10)
|
pattern.id?.length <= 16
|
||||||
|| (pattern.user?.length <= 22 && pattern.id?.length <= 10)
|
|| (pattern.sub?.length <= 22 && pattern.id?.length <= 16)
|
||||||
|| (pattern.sub?.length <= 22 && pattern.shareId?.length <= 12),
|
|| (pattern.user?.length <= 22 && pattern.id?.length <= 16)
|
||||||
|
|| (pattern.sub?.length <= 22 && pattern.shareId?.length <= 16),
|
||||||
|
|
||||||
"rutube": pattern =>
|
"rutube": pattern =>
|
||||||
(pattern.id?.length === 32 && pattern.key?.length <= 32) ||
|
(pattern.id?.length === 32 && pattern.key?.length <= 32) ||
|
||||||
|
@ -61,9 +61,7 @@ export default async function(obj) {
|
|||||||
|
|
||||||
if (!params?.id) return { error: "fetch.short_link" };
|
if (!params?.id) return { error: "fetch.short_link" };
|
||||||
|
|
||||||
const url = new URL(
|
const url = new URL(`https://www.reddit.com/comments/${params.id}.json`);
|
||||||
`https://www.reddit.com/r/${params.sub || params.user}/comments/${params.id}.json`
|
|
||||||
);
|
|
||||||
|
|
||||||
const accessToken = await getAccessToken();
|
const accessToken = await getAccessToken();
|
||||||
if (accessToken) url.hostname = 'oauth.reddit.com';
|
if (accessToken) url.hostname = 'oauth.reddit.com';
|
||||||
@ -84,12 +82,17 @@ export default async function(obj) {
|
|||||||
|
|
||||||
data = data[0]?.data?.children[0]?.data;
|
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 {
|
if (data?.url?.endsWith('.gif')) return {
|
||||||
typeId: "redirect",
|
typeId: "redirect",
|
||||||
urls: data.url,
|
urls: data.url,
|
||||||
filename: `reddit_${id}.gif`,
|
filename: `reddit_${sourceId}.gif`,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!data.secure_media?.reddit_video)
|
if (!data.secure_media?.reddit_video)
|
||||||
@ -133,7 +136,7 @@ export default async function(obj) {
|
|||||||
typeId: "tunnel",
|
typeId: "tunnel",
|
||||||
type: "merge",
|
type: "merge",
|
||||||
urls: [video, audioFileLink],
|
urls: [video, audioFileLink],
|
||||||
audioFilename: `reddit_${id}_audio`,
|
audioFilename: `reddit_${sourceId}_audio`,
|
||||||
filename: `reddit_${id}.mp4`
|
filename: `reddit_${sourceId}.mp4`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user