diff options
author | Wojtek Kosior <koszko@koszko.org> | 2021-12-29 18:05:08 +0100 |
---|---|---|
committer | Wojtek Kosior <koszko@koszko.org> | 2021-12-29 18:05:08 +0100 |
commit | ba1e6824e98c52e867d92cfdcb2a6d2a614fd67f (patch) | |
tree | 4b43f836336e8e5ea56023c161eb9bb0bd72c212 /content/syoutube/youtube.js | |
parent | 7ccadc53efcc8919346a5be4a495fc95ad9db7b3 (diff) | |
download | hydrilla-fixes-bundle-ba1e6824e98c52e867d92cfdcb2a6d2a614fd67f.tar.gz hydrilla-fixes-bundle-ba1e6824e98c52e867d92cfdcb2a6d2a614fd67f.zip |
refactor yewtu.be URL generation into a js library
Diffstat (limited to 'content/syoutube/youtube.js')
-rw-r--r-- | content/syoutube/youtube.js | 61 |
1 files changed, 0 insertions, 61 deletions
diff --git a/content/syoutube/youtube.js b/content/syoutube/youtube.js deleted file mode 100644 index 2486bd4..0000000 --- a/content/syoutube/youtube.js +++ /dev/null @@ -1,61 +0,0 @@ -/** - * Copyright (C) 2021, Wojtek Kosior - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the CC0 1.0 Universal License as published by - * the Creative Commons Corporation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * CC0 1.0 Universal License for more details. - * Available under the terms of Creative Commons Zero. - */ - -/* Use with https://www.youtube.com/*** */ - -/* Redirect youtube.com to yewtu.be */ - -function decode_query_options(url) -{ - const query_options = {}; - const match = /^[^?]*\?(.*)/.exec(url); - if (!match) - return query_options; - - for (const opt of match[1].split("&")) { - const [key, val] = - /^([^=]*)=?(.*)/.exec(opt).splice(1, 2).map(decodeURIComponent); - query_options[key] = val; - } - - return query_options; -} - -function encode_query_options(query_options) -{ - return Object.entries(query_options) - .map(ar => ar.map(encodeURIComponent).join("=")).join("&"); -} - -function remake_url(youtube_url) -{ - const query_options = decode_query_options(youtube_url); - - let endpoint = ""; - - const match = /^(?:(?:https?)?\/\/)?[^/]*\/([^?]*)/.exec(youtube_url); - if (match) - endpoint = match[1]; - - if (/^embed\//.test(query_options.v)) - endpoint = query_options.v; - - if (/^embed\/.+/.test(endpoint)) - delete query_options.v - - const encoded_options = encode_query_options(query_options); - return `https://yewtu.be/${endpoint}?${encoded_options}`; -} - -window.location.href = remake_url(document.URL); |