about summary refs log tree commit diff stats
path: root/src/assets/javascripts/services.js
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2024-07-04 09:22:02 +0300
committerGitHub <noreply@github.com>2024-07-04 09:22:02 +0300
commitfc51f301d67dc181f119ddd0e6a7ba2eaa096338 (patch)
treef4d1de927e69f67693a25a4148f761c5563882d5 /src/assets/javascripts/services.js
parentUpdate test.yml (diff)
parentAdd Materialious (diff)
downloadlibredirect-fc51f301d67dc181f119ddd0e6a7ba2eaa096338.zip
Merge pull request #947 from puzzlemoondev/materialious
Add Materialious
Diffstat (limited to 'src/assets/javascripts/services.js')
-rw-r--r--src/assets/javascripts/services.js30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/assets/javascripts/services.js b/src/assets/javascripts/services.js
index e47b6293..1a20dae5 100644
--- a/src/assets/javascripts/services.js
+++ b/src/assets/javascripts/services.js
@@ -403,6 +403,35 @@ function rewrite(url, frontend, randomInstance) {
 			}
 			return `${randomInstance}${url.pathname}${url.search}`
 		}
+		case 'materialious': {
+			url.searchParams.delete('si')
+			if (url.hostname == 'youtu.be' || (url.hostname.endsWith('youtube.com') && url.pathname.startsWith('/live'))) {
+				const watch = url.pathname.substring(url.pathname.lastIndexOf('/') + 1)
+				return `${randomInstance}/watch/${watch}${url.search.replace('?', '&')}`
+			}
+			if (url.hostname.endsWith("youtube.com")) {
+				if (url.pathname.startsWith('/watch')) {
+					if (url.searchParams.has('v')) {
+						const watch = url.searchParams.get('v')
+						url.searchParams.delete('v')
+						return `${randomInstance}/watch/${watch}${url.search.replace('?', '&')}`
+					}
+					return `${randomInstance}/watch/${url.search.replace('?', '&')}`
+				}
+				if (url.pathname.startsWith('/results')) {
+					if (url.searchParams.has('search_query')) {
+						const search = url.searchParams.get('search_query')
+						url.searchParams.delete('search_query')
+						return `${randomInstance}/search/${search}${url.search.replace('?', '&')}`
+					}
+					return `${randomInstance}/search/${url.search.replace('?', '&')}`
+				}
+				if (url.pathname.startsWith('/redirect?')) {
+					return url.href
+				}
+			}
+			return `${randomInstance}${url.pathname}${url.search}`
+		}
 		case "libremdb": {
 			if (url.pathname.startsWith("/Name")) {
 				for (const [key, value] of url.searchParams.entries()) {
@@ -662,6 +691,7 @@ async function reverse(url) {
 
 const defaultInstances = {
 	'invidious': ['https://inv.vern.cc'],
+	'materialious': ['https://app.materialio.us'],
 	'viewtube': ['https://viewtube.io'],
 	'piped': ['https://pipedapi-libre.kavin.rocks'],
 	'pipedMaterial': ['https://piped-material.xn--17b.net'],