From 416d2f9c9f1c26f37a7fca3ddc8ea6cc2fdfb5df Mon Sep 17 00:00:00 2001 From: PuzzleMoon <32855965+puzzlemoondev@users.noreply.github.com> Date: Fri, 28 Jun 2024 01:52:33 +0800 Subject: [PATCH] Add Materialious --- src/assets/javascripts/services.js | 30 ++++++++++++++++++++++++++++++ src/config.json | 6 ++++++ 2 files changed, 36 insertions(+) diff --git a/src/assets/javascripts/services.js b/src/assets/javascripts/services.js index 6801d54..245cb91 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()) { @@ -638,6 +667,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'], diff --git a/src/config.json b/src/config.json index 21e468d..f0789a7 100644 --- a/src/config.json +++ b/src/config.json @@ -26,6 +26,12 @@ "instanceList": true, "url": "https://invidious.io/" }, + "materialious": { + "name": "Materialious", + "embeddable": true, + "instanceList": true, + "url": "https://materialio.us/" + }, "piped": { "excludeTargets": [ 2,