diff --git a/src/modules/processing/match.js b/src/modules/processing/match.js index 3e38c4db..898d8509 100644 --- a/src/modules/processing/match.js +++ b/src/modules/processing/match.js @@ -188,6 +188,11 @@ export default async function(host, patternMatch, lang, obj) { case "dailymotion": r = await dailymotion(patternMatch); break; + case "videoclip": + r = await videoclip({ + id: patternMatch.id + }); + break; case "loom": r = await loom({ id: patternMatch.id diff --git a/src/modules/processing/matchActionDecider.js b/src/modules/processing/matchActionDecider.js index 74f0f8c7..fb469386 100644 --- a/src/modules/processing/matchActionDecider.js +++ b/src/modules/processing/matchActionDecider.js @@ -99,6 +99,13 @@ export default function(r, host, userFormat, isAudioOnly, lang, isAudioMuted, di case "video": switch (host) { + case "videoclip": + if (r.urls.endsWith(".m3u8")) { + params = { type: "render" } + } else { + responseType = "redirect"; + } + break; case "bilibili": params = { type: "render" }; break; diff --git a/src/modules/processing/services/videoclip.js b/src/modules/processing/services/videoclip.js new file mode 100644 index 00000000..61c6f636 --- /dev/null +++ b/src/modules/processing/services/videoclip.js @@ -0,0 +1,31 @@ +import { genericUserAgent } from "../../config.js"; + +export default async function({ id }) { + const modifiedId = id.split("_")[0] + const requestText = await fetch(`https://videoclip.bg/watch/${id}`, { + method: "GET", + headers: { + "user-agent": genericUserAgent + } + }) + .then(req => {return req.text()}) + .catch(() => {}); + + var videoTag = requestText.split('")[1].split('")[2].split(' patternMatch.id?.match(/^[0-9]/), + "bilibili": (patternMatch) => patternMatch.comId?.length <= 12 || patternMatch.comShortLink?.length <= 16 || patternMatch.tvId?.length <= 24,