From 82523bffc8512ebb35f53cee8c084991028c74cb Mon Sep 17 00:00:00 2001 From: jbmagination <26027089+jbmagination@users.noreply.github.com> Date: Sun, 5 Nov 2023 12:06:16 -0500 Subject: [PATCH] more Twitter link support * fixvx.com (vxtwitter / BetterTwitFix) * fxtwitter.com (FixTweet) * d.fxtwitter.com (FixTweet) * twittpr.com (FixTweet) * d.twittpr.com (FixTweet) * fixupx.com (FixTweet) * d.fixupx.com (FixTweet) --- src/modules/api.js | 2 + src/modules/processing/hostOverrides.js | 69 +++++++++++++++---------- 2 files changed, 44 insertions(+), 27 deletions(-) diff --git a/src/modules/api.js b/src/modules/api.js index 92fa5374..528bfbd3 100644 --- a/src/modules/api.js +++ b/src/modules/api.js @@ -14,7 +14,9 @@ export async function getJSON(originalURL, lang, obj) { hostname = new URL(url).hostname.split('.'), host = hostname[hostname.length - 2]; + if (url.startsWith('http://')) url = url.replace('http://', 'https://'); if (!url.startsWith('https://')) return apiJSON(0, { t: errorUnsupported(lang) }); + if (url.startsWith("https://www.")) url = url.replace("https://www.", "https://"); let overrides = hostOverrides(host, url); host = overrides.host; diff --git a/src/modules/processing/hostOverrides.js b/src/modules/processing/hostOverrides.js index 88553e35..88b76f6c 100644 --- a/src/modules/processing/hostOverrides.js +++ b/src/modules/processing/hostOverrides.js @@ -3,12 +3,49 @@ export default function (inHost, inURL) { let url = String(inURL); switch(host) { - case "youtube": - if (url.startsWith("https://youtube.com/live/") || url.startsWith("https://www.youtube.com/live/")) { - url = url.split("?")[0].replace("www.", ""); - url = `https://youtube.com/watch?v=${url.replace("https://youtube.com/live/", "")}` + case "tumblr": + if (!url.includes("blog/view")) { + if (url.slice(-1) === '/') url = url.slice(0, -1); + url = url.replace(url.split('/')[5], '') } - if (url.includes('youtube.com/shorts/')) { + break; + case "twitch": + if (url.startsWith("https://clips.twitch.tv")) { + url = url.split('?')[0].replace('clips.twitch.tv/', 'twitch.tv/_/clip/'); + } + break; + case "vxtwitter": + case "fixvx": + case "fxtwitter": + case "twittpr": + case "fixupx": + case "x": + if (url.startsWith("https://vxtwitter.com/")) { + host = "twitter"; + url = url.replace("https://vxtwitter.com/", "https://twitter.com/") + } + if (url.startsWith("https://fixvx.com/")) { + host = "twitter"; + url = url.replace("https://fixvx.com/", "https://twitter.com/") + } + if (url.match(/^https:\/\/(d\.|dl\.|)(fxtwitter|twittpr|fixupx).com\//g)) { + host = "twitter"; + url = url.replace(url.match(/^https:\/\/(d\.|dl\.|)(fxtwitter|twittpr|fixupx).com\//g)[0], "https://twitter.com/") + if (url.endsWith(".mp4")) url = url.replace(".mp4", "") + if (url.endsWith('.jpg')) url = url.replace(".jpg", "") + if (url.startsWith("https://twitter.com/dl/")) url = url.replace("https://twitter.com/dl/", "https://twitter.com/") + if (url.startsWith("https://twitter.com/dir/")) url = url.replace("https://twitter.com/dir/", "https://twitter.com/") + } + if (url.startsWith("https://x.com/")) { + host = "twitter"; + url = url.replace("https://x.com/", "https://twitter.com/") + } + break; + case "youtube": + if (url.startsWith("https://youtube.com/live/")) { + url = `https://youtube.com/watch?v=${url.split("?")[0].replace("https://youtube.com/live/", "")}` + } + if (url.startsWith("https://youtube.com/shorts/")) { url = url.split('?')[0].replace('shorts/', 'watch?v='); } break; @@ -18,28 +55,6 @@ export default function (inHost, inURL) { url = `https://youtube.com/watch?v=${url.replace("https://youtu.be/", "")}` } break; - case "vxtwitter": - case "x": - if (url.startsWith("https://x.com/")) { - host = "twitter"; - url = url.replace("https://x.com/", "https://twitter.com/") - } - if (url.startsWith("https://vxtwitter.com/")) { - host = "twitter"; - url = url.replace("https://vxtwitter.com/", "https://twitter.com/") - } - break; - case "tumblr": - if (!url.includes("blog/view")) { - if (url.slice(-1) === '/') url = url.slice(0, -1); - url = url.replace(url.split('/')[5], '') - } - break; - case "twitch": - if (url.includes('clips.twitch.tv')) { - url = url.split('?')[0].replace('clips.twitch.tv/', 'twitch.tv/_/clip/'); - } - break; } return { host: host,