summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/ci.yml2
-rw-r--r--.github/workflows/container-release.yml2
-rw-r--r--README.md23
-rw-r--r--docker/Dockerfile2
-rw-r--r--locales/ar.json3
-rw-r--r--locales/hr.json5
-rw-r--r--locales/id.json54
-rw-r--r--locales/ja.json3
-rw-r--r--locales/tr.json2
-rw-r--r--src/invidious/routes/misc.cr5
-rw-r--r--src/invidious/views/channel.ecr6
-rw-r--r--src/invidious/views/community.ecr6
-rw-r--r--src/invidious/views/components/item.ecr31
-rw-r--r--src/invidious/views/components/video-context-buttons.ecr21
-rw-r--r--src/invidious/views/playlist.ecr13
-rw-r--r--src/invidious/views/playlists.ecr6
-rw-r--r--src/invidious/views/watch.ecr8
-rw-r--r--src/invidious/yt_backend/connection_pool.cr2
18 files changed, 104 insertions, 90 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index adde39c9..db0987cf 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -40,7 +40,7 @@ jobs:
crystal:
- 1.0.0
- 1.1.1
- - 1.2.1
+ - 1.2.2
include:
- crystal: nightly
stable: false
diff --git a/.github/workflows/container-release.yml b/.github/workflows/container-release.yml
index 77b92c6f..36fb566e 100644
--- a/.github/workflows/container-release.yml
+++ b/.github/workflows/container-release.yml
@@ -27,7 +27,7 @@ jobs:
- name: Install Crystal
uses: oprypin/install-crystal@v1.2.4
with:
- crystal: 1.1.1
+ crystal: 1.2.2
- name: Run lint
run: |
diff --git a/README.md b/README.md
index 8beb4380..29b8397a 100644
--- a/README.md
+++ b/README.md
@@ -8,6 +8,9 @@
<a href="https://github.com/iv-org/invidious/actions">
<img alt="Build Status" src="https://github.com/iv-org/invidious/workflows/Invidious%20CI/badge.svg">
</a>
+ <a href="https://github.com/iv-org/invidious/commits/master">
+ <img alt="GitHub commits" src="https://img.shields.io/github/commit-activity/y/iv-org/invidious?color=red&label=commits">
+ </a>
<a href="https://github.com/iv-org/invidious/issues">
<img alt="GitHub issues" src="https://img.shields.io/github/issues/iv-org/invidious?color=important">
</a>
@@ -17,19 +20,22 @@
<a href="https://hosted.weblate.org/engage/invidious/">
<img alt="Translation Status" src="https://hosted.weblate.org/widgets/invidious/-/translations/svg-badge.svg">
</a>
+
<a href="https://github.com/humanetech-community/awesome-humane-tech">
<img alt="Awesome Humane Tech" src="https://raw.githubusercontent.com/humanetech-community/awesome-humane-tech/main/humane-tech-badge.svg?sanitize=true">
</a>
<h3>An open source alternative front-end to YouTube</h3>
+ <a href="https://invidious.io/">Website</a>
+ &nbsp;•&nbsp;
<a href="https://instances.invidious.io/">Instances list</a>
&nbsp;•&nbsp;
- <a href="#documentation">Documentation</a>
+ <a href="https://docs.invidious.io/">Documentation</a>
&nbsp;•&nbsp;
<a href="#contribute">Contribute</a>
&nbsp;•&nbsp;
- <a href="#donate">Donate</a>
+ <a href="https://invidious.io/donate/">Donate</a>
<h5>Chat with us:</h5>
<a href="https://matrix.to/#/#invidious:matrix.org">
@@ -133,18 +139,7 @@ Weblate also allows you to log-in with major SSO providers like Github, Gitlab,
- [CloudTube](https://sr.ht/~cadence/tube/): A JavaScript-rich alternate YouTube player.
- [PeerTubeify](https://gitlab.com/Cha_deL/peertubeify): On YouTube, displays a link to the same video on PeerTube, if it exists.
- [MusicPiped](https://github.com/deep-gaurav/MusicPiped): A material design music player that streams music from YouTube.
-- [HoloPlay](https://github.com/stephane-r/HoloPlay): Funny Android application connecting on Invidious API's with search, playlists and favoris.
-
-
-## Donate
-
-Bitcoin (BTC): [bc1qfhe7rq3lqzuayzjxzyt9waz9ytrs09kla3tsgr](bitcoin:bc1qfhe7rq3lqzuayzjxzyt9waz9ytrs09kla3tsgr)
-
-Monero (XMR): [41nMCtek197boJtiUvGnTFYMatrLEpnpkQDmUECqx5Es2uX3sTKKWVhSL76suXsG3LXqkEJBrCZBgPTwJrDp1FrZJfycGPR](monero:41nMCtek197boJtiUvGnTFYMatrLEpnpkQDmUECqx5Es2uX3sTKKWVhSL76suXsG3LXqkEJBrCZBgPTwJrDp1FrZJfycGPR)
-
-Ethereum (ETH): [0xD1F7E3Bfb19Ee5a52baED396Ad34717aF18d995B](ethereum:0xD1F7E3Bfb19Ee5a52baED396Ad34717aF18d995B)
-
-Litecoin (LTC): [ltc1q8787aq2xrseq5yx52axx8c4fqks88zj5vr0zx9](litecoin:ltc1q8787aq2xrseq5yx52axx8c4fqks88zj5vr0zx9)
+- [HoloPlay](https://github.com/stephane-r/HoloPlay): Funny Android application connecting on Invidious API's with search, playlists and favorites.
## Liability
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 21d4269c..5f1c0a11 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -1,4 +1,4 @@
-FROM crystallang/crystal:1.2.1-alpine AS builder
+FROM crystallang/crystal:1.2.2-alpine AS builder
RUN apk add --no-cache sqlite-static yaml-static
ARG release
diff --git a/locales/ar.json b/locales/ar.json
index 15cf89bf..f2d457b6 100644
--- a/locales/ar.json
+++ b/locales/ar.json
@@ -432,5 +432,6 @@
"adminprefs_modified_source_code_url_label": "URL إلى مستودع التعليمات البرمجية المصدرية المعدلة",
"footer_documentation": "التوثيق",
"footer_donate_page": "تبرّع",
- "preferences_region_label": "بلد المحتوى:. "
+ "preferences_region_label": "بلد المحتوى:. ",
+ "preferences_quality_dash_label": "جودة الفيديو المفضلة dash: "
}
diff --git a/locales/hr.json b/locales/hr.json
index 6b8c718c..9b5f9250 100644
--- a/locales/hr.json
+++ b/locales/hr.json
@@ -68,7 +68,7 @@
"preferences_listen_label": "Standardno slušaj: ",
"preferences_local_label": "Koristi posrednika videa: ",
"preferences_speed_label": "Standardna brzina: ",
- "preferences_quality_label": "Primarna kvaliteta videa: ",
+ "preferences_quality_label": "Preferirana kvaliteta videa: ",
"preferences_volume_label": "Glasnoća playera: ",
"preferences_comments_label": "Standardni komentari: ",
"youtube": "YouTube",
@@ -432,5 +432,6 @@
"footer_modfied_source_code": "Izmijenjeni izvorni kod",
"footer_documentation": "Dokumentacija",
"footer_original_source_code": "Izvoran izvorni kod",
- "preferences_region_label": "Zemlja sadržaja: "
+ "preferences_region_label": "Zemlja sadržaja: ",
+ "preferences_quality_dash_label": "Preferirana kvaliteta dash-videa: "
}
diff --git a/locales/id.json b/locales/id.json
index 07910143..ca4c1e0f 100644
--- a/locales/id.json
+++ b/locales/id.json
@@ -12,9 +12,9 @@
"": "`x` daftar putar"
},
"LIVE": "SIARAN LANGSUNG",
- "Shared `x` ago": "Dibagikan`x` lalu",
+ "Shared `x` ago": "Dibagikan `x` yang lalu",
"Unsubscribe": "Batal Langganan",
- "Subscribe": "Langganan",
+ "Subscribe": "Berangganan",
"View channel on YouTube": "Lihat kanal di YouTube",
"View playlist on YouTube": "Lihat daftar putar di YouTube",
"newest": "terbaru",
@@ -44,11 +44,11 @@
"Export data as JSON": "Ekspor data sebagai JSON",
"Delete account?": "Hapus akun?",
"History": "Riwayat",
- "An alternative front-end to YouTube": "Sebuah alternatif front-end untuk YouTube",
+ "An alternative front-end to YouTube": "Sebuah alternatif layar depan untuk YouTube",
"JavaScript license information": "Informasi lisensi JavaScript",
"source": "sumber",
"Log in": "Masuk",
- "Log in/register": "Daftar",
+ "Log in/register": "Masuk/Daftar",
"Log in with Google": "Masuk dengan Google",
"User ID": "ID Pengguna",
"Password": "Kata Sandi",
@@ -62,21 +62,21 @@
"Preferences": "Preferensi",
"preferences_category_player": "Preferensi pemutar",
"preferences_video_loop_label": "Selalu ulangi: ",
- "preferences_autoplay_label": "Putar-Otomatis: ",
- "preferences_continue_label": "Putar selanjutnya secara default: ",
- "preferences_continue_autoplay_label": "Otomatis-Putar video berikutnya: ",
- "preferences_listen_label": "Dengarkan secara default: ",
- "preferences_local_label": "Video Proksi: ",
- "preferences_speed_label": "Kecepatan default: ",
+ "preferences_autoplay_label": "Putar Otomatis: ",
+ "preferences_continue_label": "Putar selanjutnya secara baku: ",
+ "preferences_continue_autoplay_label": "Putar otomatis video berikutnya: ",
+ "preferences_listen_label": "Dengarkan secara baku: ",
+ "preferences_local_label": "Proksi video: ",
+ "preferences_speed_label": "Kecepatan baku: ",
"preferences_quality_label": "Kualitas video yang disukai: ",
"preferences_volume_label": "Volume pemutar: ",
- "preferences_comments_label": "Komentar default: ",
+ "preferences_comments_label": "Komentar baku: ",
"youtube": "YouTube",
"reddit": "Reddit",
- "preferences_captions_label": "Subtitel default: ",
- "Fallback captions: ": "Subtitel fallback: ",
+ "preferences_captions_label": "Takarir baku: ",
+ "Fallback captions: ": "Takarir cadangan: ",
"preferences_related_videos_label": "Tampilkan video terkait: ",
- "preferences_annotations_label": "Tampilkan anotasi secara default: ",
+ "preferences_annotations_label": "Tampilkan anotasi secara baku: ",
"preferences_extend_desc_label": "Perluas deskripsi video secara otomatis: ",
"preferences_vr_mode_label": "Video interaktif 360°: ",
"preferences_category_visual": "Preferensi visual",
@@ -89,16 +89,16 @@
"preferences_category_misc": "Preferensi lainnya",
"preferences_automatic_instance_redirect_label": "Pengalihan peladen otomatis (balik kembali ke redirect.invidious.io): ",
"preferences_category_subscription": "Preferensi langganan",
- "preferences_annotations_subscribed_label": "Tampilkan anotasi secara default untuk kanal langganan: ",
+ "preferences_annotations_subscribed_label": "Tampilkan anotasi secara baku untuk kanal yang dilanggan? ",
"Redirect homepage to feed: ": "Arahkan kembali laman beranda ke umpan: ",
"preferences_max_results_label": "Jumlah video ditampilkan di umpan: ",
"preferences_sort_label": "Urutkan video berdasarkan: ",
"published": "dipublikasi",
- "published - reverse": "dipublikasi - sebaliknya",
+ "published - reverse": "dipublikasi - terbalik",
"alphabetically": "menurut abjad",
- "alphabetically - reverse": "menurut abjad - sebaliknya",
+ "alphabetically - reverse": "menurut abjad - terbalik",
"channel name": "nama kanal",
- "channel name - reverse": "nama kanal - sebaliknya",
+ "channel name - reverse": "nama kanal - terbalik",
"Only show latest video from channel: ": "Hanya tampilkan video terbaru dari kanal: ",
"Only show latest unwatched video from channel: ": "Hanya tampilkan video belum ditonton terbaru dari kanal: ",
"preferences_unseen_only_label": "Hanya tampilkan belum ditonton: ",
@@ -106,7 +106,7 @@
"Enable web notifications": "Aktifkan pemberitahuan web",
"`x` uploaded a video": "`x` mengunggah video",
"`x` is live": "`x` sedang siaran langsung",
- "preferences_category_data": "Preferensi Data",
+ "preferences_category_data": "Preferensi data",
"Clear watch history": "Bersihkan riwayat tontonan",
"Import/export data": "Impor/Ekspor data",
"Change password": "Ganti kata sandi",
@@ -115,13 +115,13 @@
"Watch history": "Riwayat tontonan",
"Delete account": "Hapus akun",
"preferences_category_admin": "Preferensi administrator",
- "preferences_default_home_label": "Laman beranda default: ",
+ "preferences_default_home_label": "Laman beranda baku: ",
"preferences_feed_menu_label": "Menu umpan: ",
"preferences_show_nick_label": "Tampilkan nama panggilan di atas: ",
"Top enabled: ": "Teratas diaktifkan: ",
"CAPTCHA enabled: ": "CAPTCHA diaktifkan: ",
"Login enabled: ": "Masuk diaktifkan: ",
- "Registration enabled: ": "Registrasi diaktifkan: ",
+ "Registration enabled: ": "Pendaftaran diaktifkan: ",
"Report statistics: ": "Laporan statistik: ",
"Save preferences": "Simpan preferensi",
"Subscription manager": "Pengatur langganan",
@@ -161,7 +161,7 @@
"Title": "Judul",
"Playlist privacy": "Privasi daftar putar",
"Editing playlist `x`": "Menyunting daftar putar `x`",
- "Show more": "Tampilkan lainnya",
+ "Show more": "Tampilkan lebih banyak",
"Show less": "Tampilkan lebih sedikit",
"Watch on YouTube": "Tonton di YouTube",
"Switch Invidious Instance": "Ganti peladen Invidious",
@@ -175,9 +175,9 @@
"Engagement: ": "Keterlibatan: ",
"Whitelisted regions: ": "Wilayah daftar-putih: ",
"Blacklisted regions: ": "Wilayah daftar-hitam: ",
- "Shared `x`": "Berbagi`x`",
+ "Shared `x`": "Berbagi `x`",
"`x` views": {
- "([^.,0-9]|^)1([^.,0-9]|$)": "`x` tampilan.([^.,0-9]|^)1([^.,0-9]|$)",
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` tampilan",
"": "`x` tampilan"
},
"Premieres in `x`": "Tayang dalam `x`",
@@ -186,7 +186,7 @@
"View YouTube comments": "Lihat komentar YouTube",
"View more comments on Reddit": "Lihat lebih banyak komentar di Reddit",
"View `x` comments": {
- "([^.,0-9]|^)1([^.,0-9]|$)": "Lihat`x` komentar.([^.,0-9]|^)1([^.,0-9]|$)",
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Lihat`x` komentar",
"": "Lihat`x` komentar"
},
"View Reddit comments": "Lihat komentar Reddit",
@@ -368,7 +368,7 @@
"([^.,0-9]|^)1([^.,0-9]|$)": "`x` detik",
"": "`x` detik"
},
- "Fallback comments: ": "Komentar mundur: ",
+ "Fallback comments: ": "Komentar alternatif: ",
"Popular": "Populer",
"Search": "Cari",
"Top": "Teratas",
@@ -376,7 +376,7 @@
"Rating: ": "Peringkat: ",
"preferences_locale_label": "Bahasa: ",
"View as playlist": "Tampilkan sebagai daftar putar",
- "Default": "Asali",
+ "Default": "Baku",
"Music": "Musik",
"Gaming": "Permainan",
"News": "Berita",
diff --git a/locales/ja.json b/locales/ja.json
index ea334e98..c7764d33 100644
--- a/locales/ja.json
+++ b/locales/ja.json
@@ -432,5 +432,6 @@
"adminprefs_modified_source_code_url_label": "編集したソースコードのレポジトリーURL",
"long": "20 分以上",
"preferences_region_label": "地域: ",
- "footer_donate_page": "寄付する"
+ "footer_donate_page": "寄付する",
+ "preferences_quality_dash_label": "優先するDash画質 : "
}
diff --git a/locales/tr.json b/locales/tr.json
index 3bb9405d..6e753bfc 100644
--- a/locales/tr.json
+++ b/locales/tr.json
@@ -256,7 +256,7 @@
"Croatian": "Hırvatça",
"Czech": "Çekçe",
"Danish": "Danca",
- "Dutch": "Flemenkçe",
+ "Dutch": "Felemenkçe",
"Esperanto": "Esperanto",
"Estonian": "Estonca",
"Filipino": "Filipince",
diff --git a/src/invidious/routes/misc.cr b/src/invidious/routes/misc.cr
index 0e6356d0..3ea4c272 100644
--- a/src/invidious/routes/misc.cr
+++ b/src/invidious/routes/misc.cr
@@ -40,11 +40,6 @@ module Invidious::Routes::Misc
def self.cross_instance_redirect(env)
referer = get_referer(env)
-
- if !env.get("preferences").as(Preferences).automatic_instance_redirect
- return env.redirect("https://redirect.invidious.io#{referer}")
- end
-
instance_url = fetch_random_instance
env.redirect "https://#{instance_url}#{referer}"
end
diff --git a/src/invidious/views/channel.ecr b/src/invidious/views/channel.ecr
index 7f797e37..40b553a9 100644
--- a/src/invidious/views/channel.ecr
+++ b/src/invidious/views/channel.ecr
@@ -45,7 +45,11 @@
<div class="pure-u-1-3">
<a href="https://www.youtube.com/channel/<%= ucid %>"><%= translate(locale, "View channel on YouTube") %></a>
<div class="pure-u-1 pure-md-1-3">
- <a href="/redirect?referer=<%= env.get?("current_page") %>"><%= translate(locale, "Switch Invidious Instance") %></a>
+ <% if env.get("preferences").as(Preferences).automatic_instance_redirect%>
+ <a href="/redirect?referer=<%= env.get?("current_page") %>"><%= translate(locale, "Switch Invidious Instance") %></a>
+ <% else %>
+ <a href="https://redirect.invidious.io<%= env.request.path %>"><%= translate(locale, "Switch Invidious Instance") %></a>
+ <% end %>
</div>
<% if !channel.auto_generated %>
<div class="pure-u-1 pure-md-1-3">
diff --git a/src/invidious/views/community.ecr b/src/invidious/views/community.ecr
index 15d8ed1e..f0add06b 100644
--- a/src/invidious/views/community.ecr
+++ b/src/invidious/views/community.ecr
@@ -44,7 +44,11 @@
<div class="pure-u-1-3">
<a href="https://www.youtube.com/channel/<%= channel.ucid %>/community"><%= translate(locale, "View channel on YouTube") %></a>
<div class="pure-u-1 pure-md-1-3">
- <a href="/redirect?referer=<%= env.get?("current_page") %>"><%= translate(locale, "Switch Invidious Instance") %></a>
+ <% if env.get("preferences").as(Preferences).automatic_instance_redirect%>
+ <a href="/redirect?referer=<%= env.get?("current_page") %>"><%= translate(locale, "Switch Invidious Instance") %></a>
+ <% else %>
+ <a href="https://redirect.invidious.io<%= env.request.resource %>"><%= translate(locale, "Switch Invidious Instance") %></a>
+ <% end %>
</div>
<% if !channel.auto_generated %>
<div class="pure-u-1 pure-md-1-3">
diff --git a/src/invidious/views/components/item.ecr b/src/invidious/views/components/item.ecr
index 5788bf51..a58571aa 100644
--- a/src/invidious/views/components/item.ecr
+++ b/src/invidious/views/components/item.ecr
@@ -79,19 +79,8 @@
<div class="flex-left"><a href="/channel/<%= item.ucid %>">
<p class="channel-name" dir="auto"><%= HTML.escape(item.author) %></p>
</a></div>
- <div class="flex-right">
- <div class="icon-buttons">
- <a title="<%=translate(locale, "Watch on YouTube")%>" href="https://www.youtube.com/watch?v=<%= item.id %>&list=<%= item.plid %>">
- <i class="icon ion-logo-youtube"></i>
- </a>
- <a title="<%=translate(locale, "Audio mode")%>" href="/watch?v=<%= item.id %>&list=<%= item.plid %>&amp;listen=1">
- <i class="icon ion-md-headset"></i>
- </a>
- <a title="<%=translate(locale, "Switch Invidious Instance")%>" href="/redirect?referer=<%=URI.encode_www_form("watch?v=#{item.id}&list=#{item.plid}")%>">
- <i class="icon ion-md-jet"></i>
- </a>
- </div>
- </div>
+ <% endpoint_params = "?v=#{item.id}&list=#{item.plid}" %>
+ <%= rendered "components/video-context-buttons" %>
</div>
<div class="video-card-row flexible">
@@ -155,19 +144,9 @@
<div class="flex-left"><a href="/channel/<%= item.ucid %>">
<p class="channel-name" dir="auto"><%= HTML.escape(item.author) %></p>
</a></div>
- <div class="flex-right">
- <div class="icon-buttons">
- <a title="<%=translate(locale, "Watch on YouTube")%>" href="https://www.youtube.com/watch?v=<%= item.id %>">
- <i class="icon ion-logo-youtube"></i>
- </a>
- <a title="<%=translate(locale, "Audio mode")%>" href="/watch?v=<%= item.id %>&amp;listen=1">
- <i class="icon ion-md-headset"></i>
- </a>
- <a title="<%=translate(locale, "Switch Invidious Instance")%>" href="/redirect?referer=<%=URI.encode_www_form("watch?v=#{item.id}")%>">
- <i class="icon ion-md-jet"></i>
- </a>
- </div>
- </div>
+
+ <% endpoint_params = "?v=#{item.id}" %>
+ <%= rendered "components/video-context-buttons" %>
</div>
<div class="video-card-row flexible">
diff --git a/src/invidious/views/components/video-context-buttons.ecr b/src/invidious/views/components/video-context-buttons.ecr
new file mode 100644
index 00000000..daa107f0
--- /dev/null
+++ b/src/invidious/views/components/video-context-buttons.ecr
@@ -0,0 +1,21 @@
+<div class="flex-right">
+ <div class="icon-buttons">
+ <a title="<%=translate(locale, "Watch on YouTube")%>" href="https://www.youtube.com/watch<%=endpoint_params%>">
+ <i class="icon ion-logo-youtube"></i>
+ </a>
+ <a title="<%=translate(locale, "Audio mode")%>" href="/watch<%=endpoint_params%>&listen=1">
+ <i class="icon ion-md-headset"></i>
+ </a>
+
+ <% if env.get("preferences").as(Preferences).automatic_instance_redirect%>
+ <a title="<%=translate(locale, "Switch Invidious Instance")%>" href="/redirect?referer=%2Fwatch<%=URI.encode_www_form(endpoint_params)%>">
+ <i class="icon ion-md-jet"></i>
+ </a>
+ <% else %>
+ <a title="<%=translate(locale, "Switch Invidious Instance")%>" href="https://redirect.invidious.io/watch<%=endpoint_params%>">
+ <i class="icon ion-md-jet"></i>
+ </a>
+ <% end %>
+
+ </div>
+</div> \ No newline at end of file
diff --git a/src/invidious/views/playlist.ecr b/src/invidious/views/playlist.ecr
index 12f93a72..d0518de7 100644
--- a/src/invidious/views/playlist.ecr
+++ b/src/invidious/views/playlist.ecr
@@ -41,9 +41,16 @@
<%= translate(locale, "View playlist on YouTube") %>
</a>
<span> | </span>
- <a href="/redirect?referer=<%= env.get?("current_page") %>">
- <%= translate(locale, "Switch Invidious Instance") %>
- </a>
+
+ <% if env.get("preferences").as(Preferences).automatic_instance_redirect%>
+ <a href="/redirect?referer=<%= env.get?("current_page") %>">
+ <%= translate(locale, "Switch Invidious Instance") %>
+ </a>
+ <% else %>
+ <a href="https://redirect.invidious.io<%= env.request.resource %>">
+ <%= translate(locale, "Switch Invidious Instance") %>
+ </a>
+ <% end %>
</div>
<% end %>
</div>
diff --git a/src/invidious/views/playlists.ecr b/src/invidious/views/playlists.ecr
index 1245256f..12dba088 100644
--- a/src/invidious/views/playlists.ecr
+++ b/src/invidious/views/playlists.ecr
@@ -47,7 +47,11 @@
</div>
<div class="pure-u-1 pure-md-1-3">
- <a href="/redirect?referer=<%= env.get?("current_page") %>"><%= translate(locale, "Switch Invidious Instance") %></a>
+ <% if env.get("preferences").as(Preferences).automatic_instance_redirect%>
+ <a href="/redirect?referer=<%= env.get?("current_page") %>"><%= translate(locale, "Switch Invidious Instance") %></a>
+ <% else %>
+ <a href="https://redirect.invidious.io<%= env.request.resource %>"><%= translate(locale, "Switch Invidious Instance") %></a>
+ <% end %>
</div>
<div class="pure-u-1 pure-md-1-3">
diff --git a/src/invidious/views/watch.ecr b/src/invidious/views/watch.ecr
index cad36e73..9cf00393 100644
--- a/src/invidious/views/watch.ecr
+++ b/src/invidious/views/watch.ecr
@@ -11,7 +11,7 @@
<meta property="og:url" content="<%= HOST_URL %>/watch?v=<%= video.id %>">
<meta property="og:title" content="<%= title %>">
<meta property="og:image" content="/vi/<%= video.id %>/maxres.jpg">
-<meta property="og:description" content="<%= video.short_description %>">
+<meta property="og:description" content="<%= HTML.escape(video.short_description) %>">
<meta property="og:type" content="video.other">
<meta property="og:video:url" content="<%= HOST_URL %>/embed/<%= video.id %>">
<meta property="og:video:secure_url" content="<%= HOST_URL %>/embed/<%= video.id %>">
@@ -22,7 +22,7 @@
<meta name="twitter:site" content="@omarroth1">
<meta name="twitter:url" content="<%= HOST_URL %>/watch?v=<%= video.id %>">
<meta name="twitter:title" content="<%= title %>">
-<meta name="twitter:description" content="<%= video.short_description %>">
+<meta name="twitter:description" content="<%= HTML.escape(video.short_description) %>">
<meta name="twitter:image" content="<%= HOST_URL %>/vi/<%= video.id %>/maxres.jpg">
<meta name="twitter:player" content="<%= HOST_URL %>/embed/<%= video.id %>">
<meta name="twitter:player:width" content="1280">
@@ -116,7 +116,11 @@ we're going to need to do it here in order to allow for translations.
(<a href="https://www.youtube.com/embed/<%= video.id %>"><%= translate(locale, "Embed") %></a>)
</span>
<p id="watch-on-another-invidious-instance">
+ <% if env.get("preferences").as(Preferences).automatic_instance_redirect%>
<a href="/redirect?referer=<%= env.get?("current_page") %>"><%= translate(locale, "Switch Invidious Instance") %></a>
+ <% else %>
+ <a href="https://redirect.invidious.io<%= env.request.resource %>"><%= translate(locale, "Switch Invidious Instance") %></a>
+ <% end %>
</p>
<p id="embed-link">
<a href="<%= embed_link %>"><%= translate(locale, "Embed Link") %></a>
diff --git a/src/invidious/yt_backend/connection_pool.cr b/src/invidious/yt_backend/connection_pool.cr
index fe7a572d..3feb9233 100644
--- a/src/invidious/yt_backend/connection_pool.cr
+++ b/src/invidious/yt_backend/connection_pool.cr
@@ -1,5 +1,3 @@
-require "lsquic"
-
{% unless flag?(:disable_quic) %}
require "lsquic"