aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/_locales/fa/messages.json137
-rw-r--r--src/_locales/ta/messages.json137
-rw-r--r--src/assets/javascripts/services.js68
-rw-r--r--src/config.json8
-rw-r--r--src/pages/options_src/General/SettingsButtons.svelte2
5 files changed, 349 insertions, 3 deletions
diff --git a/src/_locales/fa/messages.json b/src/_locales/fa/messages.json
new file mode 100644
index 00000000..9ededff6
--- /dev/null
+++ b/src/_locales/fa/messages.json
@@ -0,0 +1,137 @@
+{
+ "both": {
+ "message": "هر دو"
+ },
+ "exportSettings": {
+ "message": "خروجی گرفتن از تنظیمات"
+ },
+ "extensionName": {
+ "message": "LibRedirect"
+ },
+ "settings": {
+ "message": "تنظیمات"
+ },
+ "switchInstance": {
+ "message": "جایگزینی نمونه"
+ },
+ "general": {
+ "message": "عمومی"
+ },
+ "theme": {
+ "message": "پوسته"
+ },
+ "auto": {
+ "message": "خودکار"
+ },
+ "excludeFromRedirecting": {
+ "message": "چشم‌پوشی از هدایت کردن"
+ },
+ "importSettings": {
+ "message": "واردکردن تنظیمات"
+ },
+ "resetSettings": {
+ "message": "بازنشانی تنظیمات"
+ },
+ "enable": {
+ "message": "فعال‌کردن"
+ },
+ "frontend": {
+ "message": "پیشگاه"
+ },
+ "redirectType": {
+ "message": "نوع هدایت"
+ },
+ "onlyEmbedded": {
+ "message": "تنها جاسازی شده"
+ },
+ "onlyNotEmbedded": {
+ "message": "تنها جاسازی نشده"
+ },
+ "addYourFavoriteInstances": {
+ "message": "افزودن نمونه‌های مورد پسند شما"
+ },
+ "light": {
+ "message": "روشن"
+ },
+ "dark": {
+ "message": "تیره"
+ },
+ "showInPopup": {
+ "message": "نمایش در بازشونده"
+ },
+ "copyOriginal": {
+ "message": "رونویسی اصلی"
+ },
+ "copied": {
+ "message": "رونویسی شد"
+ },
+ "redirectToOriginal": {
+ "message": "هدایت به اصلی"
+ },
+ "about": {
+ "message": "درباره"
+ },
+ "unsupportedIframesHandling": {
+ "message": "مدیریت جاسازی‌های پشتیبانی نشده"
+ },
+ "disable": {
+ "message": "غیر‌فعال کردن"
+ },
+ "pingInstances": {
+ "message": "پینگ گرفتن از نمونه‌ها"
+ },
+ "exportSettingsToSync": {
+ "message": "خروجی گرفتن از تنظیمات برای همگام‌سازی"
+ },
+ "importSettingsFromSync": {
+ "message": "واردکردن تنظیمات برای همگام‌سازی"
+ },
+ "services": {
+ "message": "سامانه‌ها"
+ },
+ "service": {
+ "message": "سامانه"
+ },
+ "redirectOnlyInIncognito": {
+ "message": "تنها هدایت کردن در حالت خصوصی"
+ },
+ "bypass": {
+ "message": "دور زدن"
+ },
+ "block": {
+ "message": "مسدود کردن"
+ },
+ "redirect": {
+ "message": "هدایت کردن"
+ },
+ "autoPickInstance": {
+ "message": "گزینش خودکار نمونه"
+ },
+ "redirectGoogle": {
+ "message": "هدایت کردن گوگل"
+ },
+ "search_frontend": {
+ "message": "جستجو پیشگاه"
+ },
+ "searchService": {
+ "message": "جستجو سامانه"
+ },
+ "embedFrontend": {
+ "message": "پیشگاه جاسازی‌شده"
+ },
+ "extensionDescription": {
+ "message": "یک افزونه مرورگر که وبگاه های محبوب را به نمونه‌های دوست‌دار حریم خصوصی هدایت میکند"
+ },
+ "bookmarksMenu": {
+ "message": "فهرست نشان شده‌ها"
+ },
+ "redirectLink": {
+ "message": "تلاش برای هدایت"
+ },
+ "fetchPublicInstances": {
+ "message": "دریافت نمونه‌های عمومی"
+ },
+ "searchHint": {
+ "message": "LIBREDIRECT را به عنوان موتور جستجوی پیش‌فرض تنظیم کنید. برای نحوه انجام در مرورگرهای کروم ، روی <a href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>اینجا</a> ضربه بزنید."
+ }
+}
diff --git a/src/_locales/ta/messages.json b/src/_locales/ta/messages.json
new file mode 100644
index 00000000..d566ddaa
--- /dev/null
+++ b/src/_locales/ta/messages.json
@@ -0,0 +1,137 @@
+{
+ "extensionName": {
+ "message": "லிப்ரெடிரிடர்"
+ },
+ "switchInstance": {
+ "message": "சான்று"
+ },
+ "copyOriginal": {
+ "message": "அசல் நகலெடுக்கவும்"
+ },
+ "autoPickInstance": {
+ "message": "ஆட்டோ-பிக் நிகழ்வு"
+ },
+ "extensionDescription": {
+ "message": "பிரபலமான தளங்களை மாற்று தனியுரிமை நட்பு முன்பக்கங்கள் மற்றும் பின்தளத்தில் திருப்பி விடும் ஒரு வலை நீட்டிப்பு"
+ },
+ "settings": {
+ "message": "அமைப்புகள்"
+ },
+ "general": {
+ "message": "பொது"
+ },
+ "theme": {
+ "message": "கருப்பொருள்"
+ },
+ "light": {
+ "message": "ஒளி"
+ },
+ "dark": {
+ "message": "இருண்ட"
+ },
+ "auto": {
+ "message": "தானி"
+ },
+ "excludeFromRedirecting": {
+ "message": "திருப்பிவிடுவதிலிருந்து விலக்கப்பட்டது"
+ },
+ "importSettings": {
+ "message": "அமைப்புகளை இறக்குமதி செய்யுங்கள்"
+ },
+ "exportSettings": {
+ "message": "ஏற்றுமதி அமைப்புகள்"
+ },
+ "resetSettings": {
+ "message": "அமைப்புகளை மீட்டமைக்கவும்"
+ },
+ "enable": {
+ "message": "இயக்கு"
+ },
+ "showInPopup": {
+ "message": "பாப்அப்பில் காட்டு"
+ },
+ "frontend": {
+ "message": "ஃபிரான்ட்"
+ },
+ "redirectType": {
+ "message": "திருப்பி வகை"
+ },
+ "both": {
+ "message": "இரண்டும்"
+ },
+ "onlyEmbedded": {
+ "message": "உட்பொதிக்கப்பட்டது"
+ },
+ "onlyNotEmbedded": {
+ "message": "உட்பொதிக்கப்படவில்லை"
+ },
+ "addYourFavoriteInstances": {
+ "message": "உங்களுக்கு பிடித்த நிகழ்வுகளைச் சேர்க்கவும்"
+ },
+ "copied": {
+ "message": "நகலெடுக்கப்பட்டது"
+ },
+ "redirectToOriginal": {
+ "message": "அசலுக்கு திருப்பி விடுங்கள்"
+ },
+ "redirectLink": {
+ "message": "திருப்பிவிட முயற்சி"
+ },
+ "about": {
+ "message": "பற்றி"
+ },
+ "unsupportedIframesHandling": {
+ "message": "ஆதரிக்கப்படாத உட்பொதிகள் கையாளுதல்"
+ },
+ "fetchPublicInstances": {
+ "message": "பொது நிகழ்வுகளைப் பெறுங்கள்"
+ },
+ "disable": {
+ "message": "முடக்கு"
+ },
+ "pingInstances": {
+ "message": "பிங் நிகழ்வுகள்"
+ },
+ "exportSettingsToSync": {
+ "message": "ஒத்திசைக்க அமைப்புகளை ஏற்றுமதி செய்யுங்கள்"
+ },
+ "importSettingsFromSync": {
+ "message": "ஒத்திசைவிலிருந்து அமைப்புகளை இறக்குமதி செய்யுங்கள்"
+ },
+ "services": {
+ "message": "சேவைகள்"
+ },
+ "service": {
+ "message": "பணி"
+ },
+ "bookmarksMenu": {
+ "message": "புக்மார்க்ச் பட்டியல்"
+ },
+ "redirectOnlyInIncognito": {
+ "message": "மறைமுகத்தில் மட்டுமே திருப்பி விடுங்கள்"
+ },
+ "bypass": {
+ "message": "பைபாச்"
+ },
+ "block": {
+ "message": "தொகுதி"
+ },
+ "searchHint": {
+ "message": "இயல்புநிலை தேடுபொறியாக Lirbredirect ஐ அமைக்கவும். குரோமியம் உலாவிகளில் எவ்வாறு செய்வது என்பதற்கு, <a href = 'https: //libredirect.github.io/docs.html#search_engine_chromium' target = '_ வெற்று' rel = 'noopener norferrer'> இங்கே </a>."
+ },
+ "redirect": {
+ "message": "திருப்பி விடுங்கள்"
+ },
+ "redirectGoogle": {
+ "message": "Google ஐ திருப்பி விடுங்கள்"
+ },
+ "search_frontend": {
+ "message": "முன்பக்கத்தைத் தேடுங்கள்"
+ },
+ "searchService": {
+ "message": "தேடல் பணி"
+ },
+ "embedFrontend": {
+ "message": "ஃபிரான்டெண்ட் உட்பொதிக்கவும்"
+ }
+}
diff --git a/src/assets/javascripts/services.js b/src/assets/javascripts/services.js
index 98c39908..3870d6bd 100644
--- a/src/assets/javascripts/services.js
+++ b/src/assets/javascripts/services.js
@@ -557,7 +557,40 @@ function rewrite(url, originUrl, frontend, randomInstance) {
case "duckDuckGoAiChat":
return "https://duckduckgo.com/?q=DuckDuckGo+AI+Chat&ia=chat&duckai=1"
+
+ case "soundcloak":
+ if (url.pathname.startsWith("/feed") || url.pathname.startsWith("/stream")) { // this feature requires authentication and is unsupported, so just redirect to main page
+ return randomInstance
+ }
+
+ if (url.pathname.startsWith("/search")) {
+ if (!url.search) {
+ return randomInstance
+ }
+
+ let type = ""
+ if (url.pathname.startsWith("/search/sounds")) {
+ type = "tracks"
+ } else if (url.pathname.startsWith("/search/people")) {
+ type = "users"
+ } else if (url.pathname.startsWith("/search/albums") || url.pathname.startsWith("/search/sets")) {
+ type = "playlists"
+ }
+
+ if (type) {
+ type = "&type="+type
+ } else {
+ return randomInstance // fallback for unsupported search types (searching for anything for example)
+ }
+
+ return `${randomInstance}/search${url.search}${type}`
+ }
+
+ if (url.host == "on.soundcloud.com") {
+ return `${randomInstance}/on${url.pathname}`
+ }
+ return `${randomInstance}${url.pathname}${url.search}`
case "piped":
case "pipedMaterial":
case "cloudtube":
@@ -762,6 +795,38 @@ async function reverse(url) {
return `${config.services[service].url}/${url.search.slice(1)}`
case "goodreads":
return `https://goodreads.com${url.pathname}${url.search}`
+ case "soundcloud":
+ if (frontend == "soundcloak") {
+ if (url.pathname.includes("/_/")) { // soundcloak-specific pages
+ return `${config.services[service].url}${url.pathname.split("/_/")[0]}`
+ }
+
+ if (url.pathname == "/search") {
+ let type = url.searchParams.get("type")
+ switch (type) {
+ case "playlists":
+ type = "sets"
+ break
+ case "tracks":
+ type = "sounds"
+ break
+ case "users":
+ type = "people"
+ break
+ default:
+ type = ""
+ }
+
+ url.searchParams.delete("type")
+ if (!type) {
+ return `${config.services[service].url}/search?${url.searchParams.toString()}`
+ } else {
+ return `${config.services[service].url}/search/${type}?${url.searchParams.toString()}`
+ }
+ }
+
+ return `${config.services[service].url}${url.pathname}`
+ }
default:
return
}
@@ -825,9 +890,10 @@ const defaultInstances = {
ratAintTieba: ["https://rat.fis.land"],
shoelace: ["https://shoelace.mint.lgbt"],
skunkyArt: ["https://skunky.bloat.cat"],
- ytify: ["https://ytify.netlify.app"],
+ ytify: ["https://ytify.us.kg"],
nerdsForNerds: ["https://nn.vern.cc"],
koub: ["https://koub.clovius.club"],
+ soundcloak: ["https://soundcloak.fly.dev"]
}
async function getDefaults() {
diff --git a/src/config.json b/src/config.json
index f5f3819d..13f9d761 100644
--- a/src/config.json
+++ b/src/config.json
@@ -122,7 +122,7 @@
},
"viewtube": {
"name": "ViewTube",
- "embeddable": false,
+ "embeddable": true,
"instanceList": true,
"url": "https://github.com/ViewTube/viewtube"
},
@@ -559,6 +559,12 @@
"embeddable": false,
"instanceList": true,
"url": "https://github.com/migalmoreno/tubo"
+ },
+ "soundcloak": {
+ "name": "soundcloak",
+ "embeddable": false,
+ "instanceList": true,
+ "url": "https://git.maid.zone/stuff/soundcloak"
}
},
"targets": [
diff --git a/src/pages/options_src/General/SettingsButtons.svelte b/src/pages/options_src/General/SettingsButtons.svelte
index 4be747fe..1b92ecbc 100644
--- a/src/pages/options_src/General/SettingsButtons.svelte
+++ b/src/pages/options_src/General/SettingsButtons.svelte
@@ -38,7 +38,7 @@
const resultString = JSON.stringify(_options, null, " ")
const anchor = document.createElement("a")
anchor.href = "data:application/json;base64," + btoa(resultString)
- anchor.download = `libredirect-settings-v${_options.version}.json`
+ anchor.download = `libredirect-settings-v${_options.version}-${(new Date().toISOString().replace(':','-').slice(0,-5))}.json`
anchor.click()
}