diff --git a/src/modules/processing/match.js b/src/modules/processing/match.js index 3e38c4db..118c4e69 100644 --- a/src/modules/processing/match.js +++ b/src/modules/processing/match.js @@ -25,6 +25,7 @@ import twitch from "./services/twitch.js"; import rutube from "./services/rutube.js"; import dailymotion from "./services/dailymotion.js"; import loom from "./services/loom.js"; +import linkedin from "./services/linkedin.js"; let freebind; @@ -193,6 +194,12 @@ export default async function(host, patternMatch, lang, obj) { id: patternMatch.id }); break; + case "linkedin": + r = await linkedin({ + postId: patternMatch.id, + quality: obj.vQuality + }); + break; default: return createResponse("error", { t: loc(lang, 'ErrorUnsupported') diff --git a/src/modules/processing/servicesConfig.json b/src/modules/processing/servicesConfig.json index d727b9a5..de6fd265 100644 --- a/src/modules/processing/servicesConfig.json +++ b/src/modules/processing/servicesConfig.json @@ -33,7 +33,6 @@ "vk": { "alias": "vk video & clips", "patterns": ["video:userId_:videoId", "clip:userId_:videoId", "clips:duplicate?z=clip:userId_:videoId"], - "subdomains": ["m"], "enabled": true }, "ok": { @@ -118,6 +117,11 @@ "alias": "loom videos", "patterns": ["share/:id"], "enabled": true + }, + "linkedin": { + "alias": "linkedin videos", + "patterns": ["feed/update/urn\\:li\\:activity\\:(:id)"], + "enabled": true } } } diff --git a/src/modules/processing/servicesPatternTesters.js b/src/modules/processing/servicesPatternTesters.js index ddeea31f..6cc38675 100644 --- a/src/modules/processing/servicesPatternTesters.js +++ b/src/modules/processing/servicesPatternTesters.js @@ -9,6 +9,9 @@ export const testers = { patternMatch.postId?.length <= 12 || (patternMatch.username?.length <= 30 && patternMatch.storyId?.length <= 24), + "linkedin": (patternMatch) => + patternMatch.id?.length === 19, + "loom": (patternMatch) => patternMatch.id?.length <= 32, diff --git a/src/modules/processing/url.js b/src/modules/processing/url.js index 111f1f6f..c2f861b1 100644 --- a/src/modules/processing/url.js +++ b/src/modules/processing/url.js @@ -70,6 +70,12 @@ function aliasURL(url) { url.hostname = 'instagram.com'; } break; + case "linkedin": + if (parts[1] === "posts") { + const postId = parts.pop().split("-").at(-2) + url = new URL(`https://linkedin.com/feed/update/urn:li:activity:${postId}`) + } + break; } return url