fix handling of URLs containing utf-8 characters

Merge pull request #253 from dumbmoron/fix-utf8-urls
This commit is contained in:
wukko 2023-11-23 21:40:24 +06:00 committed by GitHub
commit 88b8a69f9c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 5 additions and 7 deletions

View file

@ -10,7 +10,7 @@ import hostOverrides from "./processing/hostOverrides.js";
export async function getJSON(originalURL, lang, obj) {
try {
let patternMatch, url = decodeURIComponent(originalURL),
let patternMatch, url = encodeURI(decodeURIComponent(originalURL)),
hostname = new URL(url).hostname.split('.'),
host = hostname[hostname.length - 2];

View file

@ -67,8 +67,7 @@ export default async function(host, patternMatch, url, lang, obj) {
case "reddit":
r = await reddit({
sub: patternMatch["sub"],
id: patternMatch["id"],
title: patternMatch["title"]
id: patternMatch["id"]
});
break;
case "douyin":

View file

@ -48,7 +48,7 @@ async function getAccessToken() {
}
export default async function(obj) {
const url = new URL(`https://www.reddit.com/r/${obj.sub}/comments/${obj.id}/${obj.title}.json`);
const url = new URL(`https://www.reddit.com/r/${obj.sub}/comments/${obj.id}.json`);
const accessToken = await getAccessToken();
if (accessToken) url.hostname = 'oauth.reddit.com';

View file

@ -8,8 +8,7 @@ export const testers = {
"youtube": (patternMatch) => (patternMatch["id"] && patternMatch["id"].length <= 11),
"reddit": (patternMatch) => (patternMatch["sub"] && patternMatch["id"] && patternMatch["title"]
&& patternMatch["sub"].length <= 22 && patternMatch["id"].length <= 10 && patternMatch["title"].length <= 96),
"reddit": (patternMatch) => (patternMatch.sub?.length <= 22 && patternMatch.id?.length <= 10),
"tiktok": (patternMatch) => ((patternMatch["user"] && patternMatch["postId"] && patternMatch["postId"].length <= 21)
|| (patternMatch["id"] && patternMatch["id"].length <= 13)),

View file

@ -9,7 +9,7 @@ const apiVar = {
},
booleanOnly: ["isAudioOnly", "isNoTTWatermark", "isTTFullAudio", "isAudioMuted", "dubLang", "vimeoDash", "disableMetadata"]
}
const forbiddenChars = ['}', '{', '(', ')', '\\', '%', '>', '<', '^', '*', '!', '~', ';', ':', ',', '`', '[', ']', '#', '$', '"', "'", "@", '=='];
const forbiddenChars = ['}', '{', '(', ')', '\\', '>', '<', '^', '*', '!', '~', ';', ':', ',', '`', '[', ']', '#', '$', '"', "'", "@", '=='];
const forbiddenCharsString = ['}', '{', '%', '>', '<', '^', ';', '`', '$', '"', "@", '='];
export function apiJSON(type, obj) {