diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fa6f9e33..3bb4c491 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -86,6 +86,9 @@ jobs: - uses: actions/checkout@v2 - name: Build Docker + run: docker-compose build --build-arg release=0 + + - name: Run Docker run: docker-compose up -d - name: Test Docker @@ -112,6 +115,7 @@ jobs: context: . file: docker/Dockerfile.arm64 platforms: linux/arm64/v8 + build-args: release=0 - name: Test Docker run: while curl -Isf http://localhost:3000; do sleep 1; done diff --git a/.github/workflows/container-release.yml b/.github/workflows/container-release.yml index f602c43c..c60d08fe 100644 --- a/.github/workflows/container-release.yml +++ b/.github/workflows/container-release.yml @@ -49,6 +49,7 @@ jobs: labels: quay.expires-after=12w push: true tags: quay.io/invidious/invidious:${{ github.sha }},quay.io/invidious/invidious:latest + build-args: release=1 - name: Build and push Docker ARM64 image for Push Event if: github.ref == 'refs/heads/master' @@ -60,3 +61,4 @@ jobs: labels: quay.expires-after=12w push: true tags: quay.io/invidious/invidious:${{ github.sha }}-arm64,quay.io/invidious/invidious:latest-arm64 + build-args: release=1 \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile index 2caa9abe..08feb554 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,6 +1,8 @@ FROM crystallang/crystal:1.1.1-alpine AS builder RUN apk add --no-cache sqlite-static yaml-static +ARG release + WORKDIR /invidious COPY ./shard.yml ./shard.yml COPY ./shard.lock ./shard.lock @@ -16,10 +18,17 @@ COPY ./.git/ ./.git/ RUN crystal spec --warnings all \ --link-flags "-lxml2 -llzma" -RUN crystal build ./src/invidious.cr \ - --release \ - --static --warnings all \ - --link-flags "-lxml2 -llzma" +RUN if [ ${release} == 1 ] ; then \ + crystal build ./src/invidious.cr \ + --release \ + --static --warnings all \ + --link-flags "-lxml2 -llzma"; \ + else \ + crystal build ./src/invidious.cr \ + --static --warnings all \ + --link-flags "-lxml2 -llzma"; \ + fi + FROM alpine:latest RUN apk add --no-cache librsvg ttf-opensans diff --git a/docker/Dockerfile.arm64 b/docker/Dockerfile.arm64 index fc82c6df..4d212d8b 100644 --- a/docker/Dockerfile.arm64 +++ b/docker/Dockerfile.arm64 @@ -1,6 +1,8 @@ FROM alpine:3.14 AS builder RUN apk add --no-cache 'crystal<2' shards sqlite-static yaml-static yaml-dev libxml2-dev zlib-static openssl-libs-static openssl-dev musl-dev +ARG release + WORKDIR /invidious COPY ./shard.yml ./shard.yml COPY ./shard.lock ./shard.lock @@ -16,10 +18,16 @@ COPY ./.git/ ./.git/ RUN crystal spec --warnings all \ --link-flags "-lxml2 -llzma" -RUN crystal build ./src/invidious.cr \ - --release \ - --static --warnings all \ - --link-flags "-lxml2 -llzma" +RUN if [ ${release} == 1 ] ; then \ + crystal build ./src/invidious.cr \ + --release \ + --static --warnings all \ + --link-flags "-lxml2 -llzma"; \ + else \ + crystal build ./src/invidious.cr \ + --static --warnings all \ + --link-flags "-lxml2 -llzma"; \ + fi FROM alpine:latest RUN apk add --no-cache librsvg ttf-opensans diff --git a/locales/ar.json b/locales/ar.json index b5e77517..4393fb7c 100644 --- a/locales/ar.json +++ b/locales/ar.json @@ -145,7 +145,7 @@ }, "search": "بحث", "Log out": "تسجيل الخروج", - "Released under the AGPLv3 by Omar Roth.": "تم الإنشاء تحت AGPLv3 بواسطة عمر روث.", + "Released under the AGPLv3 on Github.": "", "Source available here.": "الأكواد متوفرة هنا.", "View JavaScript license information.": "مشاهدة معلومات حول تراخيص الجافاسكريبت.", "View privacy policy.": "عرض سياسة الخصوصية.", diff --git a/locales/bn_BD.json b/locales/bn_BD.json index 5f91c67e..c9e1150b 100644 --- a/locales/bn_BD.json +++ b/locales/bn_BD.json @@ -145,7 +145,7 @@ }, "search": "", "Log out": "", - "Released under the AGPLv3 by Omar Roth.": "", + "Released under the AGPLv3 on Github.": "", "Source available here.": "", "View JavaScript license information.": "", "View privacy policy.": "", diff --git a/locales/cs.json b/locales/cs.json index abb2d503..094ad09c 100644 --- a/locales/cs.json +++ b/locales/cs.json @@ -145,7 +145,7 @@ }, "search": "hledat", "Log out": "Odhlásit se", - "Released under the AGPLv3 by Omar Roth.": "Vydáno Omarem Roth pod AGPLv3.", + "Released under the AGPLv3 on Github.": "", "Source available here.": "Zdrojový kód dostupný zde.", "View JavaScript license information.": "Zobrazit informace o licenci JavaScript .", "View privacy policy.": "Zobrazit Zásady ochrany osobních údajů.", diff --git a/locales/da.json b/locales/da.json index 2d0dad84..5919283d 100644 --- a/locales/da.json +++ b/locales/da.json @@ -145,7 +145,7 @@ }, "search": "søg", "Log out": "Log ud", - "Released under the AGPLv3 by Omar Roth.": "Offentliggjort under AGPLv3 af Omar Roth.", + "Released under the AGPLv3 on Github.": "", "Source available here.": "Kilde tilgængelig her.", "View JavaScript license information.": "Vis JavaScriptlicensinformation.", "View privacy policy.": "Vis privatpolitik.", diff --git a/locales/de.json b/locales/de.json index d97dfad5..44725cbc 100644 --- a/locales/de.json +++ b/locales/de.json @@ -13,7 +13,7 @@ }, "LIVE": "LIVE", "Shared `x` ago": "Vor `x` geteilt", - "Unsubscribe": "Abbestellen", + "Unsubscribe": "Abo beenden", "Subscribe": "Abonnieren", "View channel on YouTube": "Kanal auf YouTube anzeigen", "View playlist on YouTube": "Wiedergabeliste auf YouTube anzeigen", @@ -145,7 +145,7 @@ }, "search": "Suchen", "Log out": "Abmelden", - "Released under the AGPLv3 by Omar Roth.": "Veröffentlicht unter AGPLv3 von Omar Roth.", + "Released under the AGPLv3 on Github.": "", "Source available here.": "Quellcode verfügbar hier.", "View JavaScript license information.": "Javascript Lizenzinformationen anzeigen.", "View privacy policy.": "Datenschutzerklärung einsehen.", diff --git a/locales/el.json b/locales/el.json index 830fb0fe..6ad0c47f 100644 --- a/locales/el.json +++ b/locales/el.json @@ -145,7 +145,7 @@ }, "search": "αναζήτηση", "Log out": "Αποσύνδεση", - "Released under the AGPLv3 by Omar Roth.": "Κυκλοφορεί υπό την άδεια AGPLv3 από τον Omar Roth.", + "Released under the AGPLv3 on Github.": "", "Source available here.": "Προβολή πηγαίου κώδικα εδώ.", "View JavaScript license information.": "Προβολή πληροφοριών άδειας JavaScript.", "View privacy policy.": "Προβολή πολιτικής απορρήτου.", diff --git a/locales/en-US.json b/locales/en-US.json index 0836409e..a1e39777 100644 --- a/locales/en-US.json +++ b/locales/en-US.json @@ -145,7 +145,7 @@ }, "search": "search", "Log out": "Log out", - "Released under the AGPLv3 by Omar Roth.": "Released under the AGPLv3 by Omar Roth.", + "Released under the AGPLv3 on Github.": "Released under the AGPLv3 on Github.", "Source available here.": "Source available here.", "View JavaScript license information.": "View JavaScript license information.", "View privacy policy.": "View privacy policy.", diff --git a/locales/eo.json b/locales/eo.json index 05359382..56a2681c 100644 --- a/locales/eo.json +++ b/locales/eo.json @@ -145,7 +145,7 @@ }, "search": "serĉi", "Log out": "Elsaluti", - "Released under the AGPLv3 by Omar Roth.": "Eldonita sub la AGPLv3 de Omar Roth.", + "Released under the AGPLv3 on Github.": "", "Source available here.": "Fonto havebla ĉi tie.", "View JavaScript license information.": "Vidi Ĝavoskriptan licencan informon.", "View privacy policy.": "Vidi regularon pri privateco.", diff --git a/locales/es.json b/locales/es.json index dfeb69b8..9d455413 100644 --- a/locales/es.json +++ b/locales/es.json @@ -145,7 +145,7 @@ }, "search": "buscar", "Log out": "Cerrar la sesión", - "Released under the AGPLv3 by Omar Roth.": "Publicado bajo licencia AGPLv3 por Omar Roth.", + "Released under the AGPLv3 on Github.": "", "Source available here.": "Código fuente disponible aquí.", "View JavaScript license information.": "Ver información de licencia de JavaScript.", "View privacy policy.": "Ver la política de privacidad.", diff --git a/locales/eu.json b/locales/eu.json index 2fdb278b..df3f4329 100644 --- a/locales/eu.json +++ b/locales/eu.json @@ -145,7 +145,7 @@ }, "search": "", "Log out": "", - "Released under the AGPLv3 by Omar Roth.": "", + "Released under the AGPLv3 on Github.": "", "Source available here.": "", "View JavaScript license information.": "", "View privacy policy.": "", diff --git a/locales/fa.json b/locales/fa.json index d449948a..68a016c4 100644 --- a/locales/fa.json +++ b/locales/fa.json @@ -145,7 +145,7 @@ }, "search": "جستجو", "Log out": "خروج", - "Released under the AGPLv3 by Omar Roth.": "منتشر شده تحت مجوز AGPLv3 توسط Omar Roth.", + "Released under the AGPLv3 on Github.": "", "Source available here.": "منبع اینجا دردسترس است.", "View JavaScript license information.": "نمایش اطلاعات مجوز جاوا اسکریپت.", "View privacy policy.": "نمایش سیاست حفظ حریم خصوصی.", diff --git a/locales/fi.json b/locales/fi.json index 60c2aed6..6a830177 100644 --- a/locales/fi.json +++ b/locales/fi.json @@ -77,8 +77,8 @@ "Fallback captions: ": "Toissijaiset tekstitykset: ", "Show related videos: ": "Näytä aiheeseen liittyviä videoita: ", "Show annotations by default: ": "Näytä huomautukset oletuksena: ", - "Automatically extend video description: ": "", - "Interactive 360 degree videos: ": "", + "Automatically extend video description: ": "Laajenna automaattisesti videon kuvausta: ", + "Interactive 360 degree videos: ": "Interaktiiviset 360-asteiset videot: ", "Visual preferences": "Visuaaliset asetukset", "Player style: ": "Soittimen tyyli: ", "Dark mode: ": "Tumma tila: ", @@ -86,8 +86,8 @@ "dark": "tumma", "light": "vaalea", "Thin mode: ": "Kapea tila ", - "Miscellaneous preferences": "", - "Automaticatic instance redirection (fallback to redirect.invidious.io): ": "", + "Miscellaneous preferences": "Sekalaiset asetukset", + "Automaticatic instance redirection (fallback to redirect.invidious.io): ": "Automaattinen palveluntarjoajan uudelleenohjaus (perääntyminen sivulle redirect.invidious.io) ", "Subscription preferences": "Tilausten asetukset", "Show annotations by default for subscribed channels: ": "Näytä oletuksena tilattujen kanavien huomautukset: ", "Redirect homepage to feed: ": "Uudelleenohjaa kotisivu syötteeseen: ", @@ -117,7 +117,7 @@ "Administrator preferences": "Järjestelmänvalvojan asetukset", "Default homepage: ": "Oletuskotisivu: ", "Feed menu: ": "Syötevalikko: ", - "Show nickname on top: ": "", + "Show nickname on top: ": "Näytä nimimerkki ylimpänä: ", "Top enabled: ": "Yläosa käytössä: ", "CAPTCHA enabled: ": "CAPTCHA käytössä: ", "Login enabled: ": "Kirjautuminen käytössä: ", @@ -145,7 +145,7 @@ }, "search": "haku", "Log out": "Kirjaudu ulos", - "Released under the AGPLv3 by Omar Roth.": "Julkaissut AGPLv3-lisenssillä: Omar Roth.", + "Released under the AGPLv3 on Github.": "", "Source available here.": "Lähdekoodi on saatavilla täällä.", "View JavaScript license information.": "JavaScript-koodin lisenssit.", "View privacy policy.": "Katso tietosuojaseloste.", @@ -161,11 +161,11 @@ "Title": "Nimi", "Playlist privacy": "Soittolistan yksityisyys", "Editing playlist `x`": "Muokataan soittolistaa `x`", - "Show more": "", - "Show less": "", + "Show more": "Näytä enemmän", + "Show less": "Näytä vähemmän", "Watch on YouTube": "Katso YouTubessa", - "Switch Invidious Instance": "", - "Broken? Try another Invidious Instance": "", + "Switch Invidious Instance": "Vaihda Invidious-palveluntarjoajaa", + "Broken? Try another Invidious Instance": "Rikki? Kokeile toista Invidious-palveluntarjoajaa", "Hide annotations": "Piilota merkkaukset", "Show annotations": "Näytä merkkaukset", "Genre: ": "Genre: ", @@ -173,11 +173,11 @@ "Family friendly? ": "Kaiken ikäisille sopiva? ", "Wilson score: ": "Wilson-pistemäärä: ", "Engagement: ": "Huomio: ", - "Whitelisted regions: ": "valkolistatut alueet: ", - "Blacklisted regions: ": "mustalla listalla olevat alueet: ", + "Whitelisted regions: ": "Sallitut alueet: ", + "Blacklisted regions: ": "Estetyt alueet: ", "Shared `x`": "Jaettu `x`", "`x` views": { - "([^.,0-9]|^)1([^.,0-9]|$)": "`x` katselukertaa", + "([^.,0-9]|^)1([^.,0-9]|$)": "`x` katselukerta", "": "`x` katselukertaa" }, "Premieres in `x`": "Ensiesitykseen aikaa `x`", @@ -227,8 +227,8 @@ "Empty playlist": "Tyhjennä soittolista", "Not a playlist.": "Ei ole soittolista.", "Playlist does not exist.": "Soittolistaa ei ole olemassa.", - "Could not pull trending pages.": "Nousussa olevien sivujen lataus epäonnitui.", - "Hidden field \"challenge\" is a required field": "Piilotettu kenttä \"challenge\" on vaaditaan", + "Could not pull trending pages.": "Nousussa olevien sivujen lataus epäonnistui.", + "Hidden field \"challenge\" is a required field": "Piilotettu kenttä \"challenge\" vaaditaan", "Hidden field \"token\" is a required field": "Piilotettu kenttä \"tunniste\" vaaditaan", "Erroneous challenge": "Virheellinen haaste", "Erroneous token": "Virheellinen tunniste", @@ -368,9 +368,9 @@ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` sekuntia", "": "`x` sekuntia" }, - "Fallback comments: ": "varakommentit: ", + "Fallback comments: ": "Varakommentit: ", "Popular": "Suosittu", - "Search": "", + "Search": "Etsi", "Top": "Ylin", "About": "Tietoa", "Rating: ": "Arvosana: ", @@ -393,35 +393,35 @@ "Videos": "Videot", "Playlists": "Soittolistat", "Community": "Yhteisö", - "relevance": "", - "rating": "", - "date": "", - "views": "", - "content_type": "", - "duration": "", - "features": "", - "sort": "", - "hour": "", - "today": "", - "week": "", - "month": "", - "year": "", - "video": "", - "channel": "", - "playlist": "", - "movie": "", - "show": "", - "hd": "", - "subtitles": "", - "creative_commons": "", - "3d": "", - "live": "", - "4k": "", - "location": "", - "hdr": "", - "filter": "", + "relevance": "Osuvuus", + "rating": "Arvostelu", + "date": "Latauspäivämäärä", + "views": "Katselukerrat", + "content_type": "Tyyppi", + "duration": "Kesto", + "features": "Ominaisuudet", + "sort": "Luokittele", + "hour": "Viimeisin tunti", + "today": "Tänään", + "week": "Tämä viikko", + "month": "Tämä kuukausi", + "year": "Tämä vuosi", + "video": "Video", + "channel": "Kanava", + "playlist": "Soittolista", + "movie": "Elokuva", + "show": "Ohjelma", + "hd": "HD", + "subtitles": "Tekstitys/CC", + "creative_commons": "Creative Commons", + "3d": "3D", + "live": "Suora lähetys", + "4k": "4K", + "location": "Sijainti", + "hdr": "HDR", + "filter": "Suodatin", "Current version: ": "Tämänhetkinen versio: ", - "next_steps_error_message": "", - "next_steps_error_message_refresh": "", - "next_steps_error_message_go_to_youtube": "" + "next_steps_error_message": "Sinun tulisi kokeilla seuraavia: ", + "next_steps_error_message_refresh": "Päivitä", + "next_steps_error_message_go_to_youtube": "Siirry YouTubeen" } diff --git a/locales/fr.json b/locales/fr.json index 80760fce..a7fe004d 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -145,7 +145,7 @@ }, "search": "rechercher", "Log out": "Se déconnecter", - "Released under the AGPLv3 by Omar Roth.": "Publié sous licence AGPLv3 par Omar Roth.", + "Released under the AGPLv3 on Github.": "Publié sous licence AGPLv3 sur Github.", "Source available here.": "Code source disponible ici.", "View JavaScript license information.": "Informations des licences JavaScript.", "View privacy policy.": "Politique de confidentialité.", diff --git a/locales/he.json b/locales/he.json index 5d7f85c6..6778e4dd 100644 --- a/locales/he.json +++ b/locales/he.json @@ -145,7 +145,7 @@ }, "search": "חיפוש", "Log out": "יציאה", - "Released under the AGPLv3 by Omar Roth.": "מופץ תחת רישיון AGPLv3 על ידי עמר רות׳ (Omar Roth).", + "Released under the AGPLv3 on Github.": "", "Source available here.": "קוד המקור זמין כאן.", "View JavaScript license information.": "", "View privacy policy.": "להצגת מדיניות הפרטיות.", diff --git a/locales/hr.json b/locales/hr.json index d4a31323..dd6d14a9 100644 --- a/locales/hr.json +++ b/locales/hr.json @@ -145,7 +145,7 @@ }, "search": "traži", "Log out": "Odjavi se", - "Released under the AGPLv3 by Omar Roth.": "Izdano pod licencom AGPLv3, Omar Roth.", + "Released under the AGPLv3 on Github.": "", "Source available here.": "Izvor je ovdje dostupan.", "View JavaScript license information.": "Prikaži informacije o JavaScript licenci.", "View privacy policy.": "Prikaži politiku privatnosti.", diff --git a/locales/hu-HU.json b/locales/hu-HU.json index d69a0792..d5570a18 100644 --- a/locales/hu-HU.json +++ b/locales/hu-HU.json @@ -145,7 +145,7 @@ }, "search": "keresés", "Log out": "Kijelentkezés", - "Released under the AGPLv3 by Omar Roth.": "Omar Roth által kiadva AGPLv3 licensz alatt.", + "Released under the AGPLv3 on Github.": "", "Source available here.": "A forráskód itt érhető el.", "View JavaScript license information.": "JavaScript licensz inforkációk megtekintése.", "View privacy policy.": "Adatvédelmi irányelvek megtekintése.", diff --git a/locales/id.json b/locales/id.json index 9ca7ba0f..e15c6aaf 100644 --- a/locales/id.json +++ b/locales/id.json @@ -145,7 +145,7 @@ }, "search": "cari", "Log out": "Keluar", - "Released under the AGPLv3 by Omar Roth.": "Dirilis dibawah AGPLv3 oleh Omar Roth.", + "Released under the AGPLv3 on Github.": "", "Source available here.": "Sumber tersedia di sini.", "View JavaScript license information.": "Tampilkan informasi lisensi JavaScript.", "View privacy policy.": "Lihat kebijakan privasi.", diff --git a/locales/is.json b/locales/is.json index 827abaeb..478f363a 100644 --- a/locales/is.json +++ b/locales/is.json @@ -145,7 +145,7 @@ }, "search": "leita", "Log out": "Útskrá", - "Released under the AGPLv3 by Omar Roth.": "Útgefið undir AGPLv3 eftir Omar Roth.", + "Released under the AGPLv3 on Github.": "", "Source available here.": "Frumkóði aðgengilegur hér.", "View JavaScript license information.": "Skoða JavaScript leyfisupplýsingar.", "View privacy policy.": "Skoða meðferð persónuupplýsinga.", diff --git a/locales/it.json b/locales/it.json index 676bd650..df3642db 100644 --- a/locales/it.json +++ b/locales/it.json @@ -145,7 +145,7 @@ }, "search": "Cerca", "Log out": "Esci", - "Released under the AGPLv3 by Omar Roth.": "Pubblicato con licenza AGPLv3 da Omar Roth.", + "Released under the AGPLv3 on Github.": "", "Source available here.": "Codice sorgente.", "View JavaScript license information.": "Guarda le informazioni di licenza del codice JavaScript.", "View privacy policy.": "Vedi la politica sulla privacy.", diff --git a/locales/ja.json b/locales/ja.json index 831671c6..1e418094 100644 --- a/locales/ja.json +++ b/locales/ja.json @@ -145,7 +145,7 @@ }, "search": "検索", "Log out": "ログアウト", - "Released under the AGPLv3 by Omar Roth.": "Omar Roth によって AGPLv3 でリリースされています", + "Released under the AGPLv3 on Github.": "", "Source available here.": "ソースはここで閲覧可能です。", "View JavaScript license information.": "JavaScript ライセンス情報", "View privacy policy.": "プライバシーポリシー", diff --git a/locales/ko.json b/locales/ko.json index ba03d093..94f781d4 100644 --- a/locales/ko.json +++ b/locales/ko.json @@ -136,6 +136,7 @@ "Delete playlist": "재생목록 삭제", "Delete playlist `x`?": "재생목록 `x` 를 삭제 하시겠습니까?", "Updated `x` ago": "`x` 전에 업데이트됨", + "Released under the AGPLv3 on Github.": "", "View all playlists": "모든 재생목록 보기", "Private": "비공개", "Unlisted": "목록에 없음", @@ -143,7 +144,6 @@ "View privacy policy.": "개인정보 처리방침 보기.", "View JavaScript license information.": "JavaScript 라이센스 정보 보기.", "Source available here.": "소스는 여기에서 사용할 수 있습니다.", - "Released under the AGPLv3 by Omar Roth.": "Omar Roth에 의해 AGPLv3에 따라 공개되었습니다.", "Log out": "로그아웃", "search": "검색", "`x` unseen notifications": { diff --git a/locales/lt.json b/locales/lt.json index 94b4556a..ae0ee0a3 100644 --- a/locales/lt.json +++ b/locales/lt.json @@ -145,7 +145,7 @@ }, "search": "ieškoti", "Log out": "Atsijungti", - "Released under the AGPLv3 by Omar Roth.": "Išleista pagal AGPLv3 - Omar Roth.", + "Released under the AGPLv3 on Github.": "", "Source available here.": "Kodas prieinamas čia.", "View JavaScript license information.": "Žiūrėti JavaScript licencijos informaciją.", "View privacy policy.": "Žiūrėti privatumo politiką.", diff --git a/locales/nb-NO.json b/locales/nb-NO.json index 5088baff..9e39a6c7 100644 --- a/locales/nb-NO.json +++ b/locales/nb-NO.json @@ -145,7 +145,7 @@ }, "search": "søk", "Log out": "Logg ut", - "Released under the AGPLv3 by Omar Roth.": "Utgitt med AGPLv3+lisens av Omar Roth.", + "Released under the AGPLv3 on Github.": "", "Source available here.": "Kildekode tilgjengelig her.", "View JavaScript license information.": "Vis JavaScript-lisensinfo.", "View privacy policy.": "Vis personvernspraksis.", diff --git a/locales/nl.json b/locales/nl.json index c4948fd1..9fe604ad 100644 --- a/locales/nl.json +++ b/locales/nl.json @@ -145,7 +145,7 @@ }, "search": "zoeken", "Log out": "Uitloggen", - "Released under the AGPLv3 by Omar Roth.": "Uitgebracht onder de AGPLv3-licentie, door Omar Roth.", + "Released under the AGPLv3 on Github.": "", "Source available here.": "De broncode is hier beschikbaar.", "View JavaScript license information.": "JavaScript-licentieinformatie tonen.", "View privacy policy.": "Privacybeleid tonen.", diff --git a/locales/pl.json b/locales/pl.json index 0f86154e..a33bbd45 100644 --- a/locales/pl.json +++ b/locales/pl.json @@ -145,7 +145,7 @@ }, "search": "szukaj", "Log out": "Wyloguj", - "Released under the AGPLv3 by Omar Roth.": "Wydano na licencji AGPLv3 przez Omar Roth.", + "Released under the AGPLv3 on Github.": "", "Source available here.": "Kod źródłowy dostępny tutaj.", "View JavaScript license information.": "Wyświetl informację o licencji JavaScript.", "View privacy policy.": "Polityka prywatności.", diff --git a/locales/pt-BR.json b/locales/pt-BR.json index 12763efc..16725774 100644 --- a/locales/pt-BR.json +++ b/locales/pt-BR.json @@ -145,7 +145,7 @@ }, "search": "Pesquisar", "Log out": "Sair", - "Released under the AGPLv3 by Omar Roth.": "Publicado sob a licença AGPLv3, por Omar Roth.", + "Released under the AGPLv3 on Github.": "", "Source available here.": "Código-fonte disponível aqui.", "View JavaScript license information.": "Ver informações da licença do JavaScript.", "View privacy policy.": "Ver a política de privacidade.", diff --git a/locales/pt-PT.json b/locales/pt-PT.json index 704a105f..a5e4bca8 100644 --- a/locales/pt-PT.json +++ b/locales/pt-PT.json @@ -145,7 +145,7 @@ }, "search": "Pesquisar", "Log out": "Terminar sessão", - "Released under the AGPLv3 by Omar Roth.": "Publicado sob a licença AGPLv3, por Omar Roth.", + "Released under the AGPLv3 on Github.": "", "Source available here.": "Código-fonte disponível aqui.", "View JavaScript license information.": "Ver informações da licença do JavaScript.", "View privacy policy.": "Ver a política de privacidade.", diff --git a/locales/ro.json b/locales/ro.json index ce961c39..a8877853 100644 --- a/locales/ro.json +++ b/locales/ro.json @@ -145,7 +145,7 @@ }, "search": "căutați", "Log out": "Deconectați-vă", - "Released under the AGPLv3 by Omar Roth.": "Publicat sub licența AGPLv3 de Omar Roth.", + "Released under the AGPLv3 on Github.": "", "Source available here.": "Codul sursă este disponibil aici.", "View JavaScript license information.": "Informații legate de licența JavaScript.", "View privacy policy.": "Politica de confidențialitate.", diff --git a/locales/ru.json b/locales/ru.json index 4896b3d0..d26cd058 100644 --- a/locales/ru.json +++ b/locales/ru.json @@ -145,7 +145,7 @@ }, "search": "поиск", "Log out": "Выйти", - "Released under the AGPLv3 by Omar Roth.": "Реализовано Омаром Ротом по лицензии AGPLv3.", + "Released under the AGPLv3 on Github.": "", "Source available here.": "Исходный код доступен здесь.", "View JavaScript license information.": "Посмотреть информацию по лицензии JavaScript.", "View privacy policy.": "Посмотреть политику конфиденциальности.", diff --git a/locales/si.json b/locales/si.json index f59629d0..f38c56b7 100644 --- a/locales/si.json +++ b/locales/si.json @@ -145,7 +145,7 @@ }, "search": "", "Log out": "", - "Released under the AGPLv3 by Omar Roth.": "", + "Released under the AGPLv3 on Github.": "", "Source available here.": "", "View JavaScript license information.": "", "View privacy policy.": "", diff --git a/locales/sk.json b/locales/sk.json index 32df0569..cdeca6c0 100644 --- a/locales/sk.json +++ b/locales/sk.json @@ -145,7 +145,7 @@ }, "search": "", "Log out": "", - "Released under the AGPLv3 by Omar Roth.": "", + "Released under the AGPLv3 on Github.": "", "Source available here.": "", "View JavaScript license information.": "", "View privacy policy.": "", diff --git a/locales/sr.json b/locales/sr.json index 83cc12c1..314f0367 100644 --- a/locales/sr.json +++ b/locales/sr.json @@ -145,7 +145,7 @@ }, "search": "", "Log out": "", - "Released under the AGPLv3 by Omar Roth.": "", + "Released under the AGPLv3 on Github.": "", "Source available here.": "", "View JavaScript license information.": "", "View privacy policy.": "", diff --git a/locales/sr_Cyrl.json b/locales/sr_Cyrl.json index 92cfd103..056b79cb 100644 --- a/locales/sr_Cyrl.json +++ b/locales/sr_Cyrl.json @@ -145,7 +145,7 @@ }, "search": "претрага", "Log out": "Одјавите се", - "Released under the AGPLv3 by Omar Roth.": "Издао Омар Рот (Omar Roth) под условима AGPLv3 лиценце.", + "Released under the AGPLv3 on Github.": "", "Source available here.": "Изворни код доступан овде.", "View JavaScript license information.": "Прикажи информације о JavaScript лиценци.", "View privacy policy.": "Прикажи извештај о приватности.", diff --git a/locales/sv-SE.json b/locales/sv-SE.json index 42699093..ae8e6fc4 100644 --- a/locales/sv-SE.json +++ b/locales/sv-SE.json @@ -145,7 +145,7 @@ }, "search": "sök", "Log out": "Logga ut", - "Released under the AGPLv3 by Omar Roth.": "Utgiven under AGPLv3-licens av Omar Roth.", + "Released under the AGPLv3 on Github.": "", "Source available here.": "Källkod tillgänglig här.", "View JavaScript license information.": "Visa JavaScript-licensinformation.", "View privacy policy.": "Visa privatlivspolicy.", diff --git a/locales/tr.json b/locales/tr.json index 01bb2ead..4d165909 100644 --- a/locales/tr.json +++ b/locales/tr.json @@ -145,7 +145,7 @@ }, "search": "ara", "Log out": "Çıkış yap", - "Released under the AGPLv3 by Omar Roth.": "Omar Roth tarafından AGPLv3 altında yayımlandı.", + "Released under the AGPLv3 on Github.": "", "Source available here.": "Kaynak kodları burada bulunabilir.", "View JavaScript license information.": "JavaScript lisans bilgilerini görüntüle.", "View privacy policy.": "Gizlilik politikasını görüntüle.", diff --git a/locales/uk.json b/locales/uk.json index e51aa5ba..5100206c 100644 --- a/locales/uk.json +++ b/locales/uk.json @@ -145,7 +145,7 @@ }, "search": "пошук", "Log out": "Вийти", - "Released under the AGPLv3 by Omar Roth.": "Реалізовано Омаром Ротом за ліцензією AGPLv3.", + "Released under the AGPLv3 on Github.": "", "Source available here.": "Програмний код доступний тут.", "View JavaScript license information.": "Переглянути інформацію щодо ліцензії JavaScript.", "View privacy policy.": "Переглянути політику приватності.", diff --git a/locales/vi.json b/locales/vi.json index d2e38ff6..5a2812f7 100644 --- a/locales/vi.json +++ b/locales/vi.json @@ -145,7 +145,7 @@ }, "search": "Tìm kiếm", "Log out": "Đăng xuất", - "Released under the AGPLv3 by Omar Roth.": "Được phát hành theo AGPLv3 bởi Omar Roth.", + "Released under the AGPLv3 on Github.": "", "Source available here.": "Nguồn có sẵn ở đây.", "View JavaScript license information.": "Xem thông tin giấy phép JavaScript.", "View privacy policy.": "Xem chính sách bảo mật.", diff --git a/locales/zh-CN.json b/locales/zh-CN.json index 4c1f9eae..77101362 100644 --- a/locales/zh-CN.json +++ b/locales/zh-CN.json @@ -145,7 +145,7 @@ }, "search": "搜索", "Log out": "登出", - "Released under the AGPLv3 by Omar Roth.": "由 Omar Roth 开发,以 AGPLv3 授权。", + "Released under the AGPLv3 on Github.": "", "Source available here.": "源码可在此查看。", "View JavaScript license information.": "查看 JavaScript 协议信息。", "View privacy policy.": "查看隐私政策。", diff --git a/locales/zh-TW.json b/locales/zh-TW.json index e554b23a..e39e9470 100644 --- a/locales/zh-TW.json +++ b/locales/zh-TW.json @@ -145,7 +145,7 @@ }, "search": "搜尋", "Log out": "登出", - "Released under the AGPLv3 by Omar Roth.": "Omar Roth 以 AGPLv3 釋出。", + "Released under the AGPLv3 on Github.": "", "Source available here.": "原始碼在此提供。", "View JavaScript license information.": "檢視 JavaScript 授權條款資訊。", "View privacy policy.": "檢視隱私權政策。", diff --git a/src/invidious/comments.cr b/src/invidious/comments.cr index 141a526d..3a4328a5 100644 --- a/src/invidious/comments.cr +++ b/src/invidious/comments.cr @@ -552,7 +552,9 @@ def content_to_comment_html(content) if url = run["navigationEndpoint"]["urlEndpoint"]?.try &.["url"].as_s url = URI.parse(url) - if !url.host || {"m.youtube.com", "www.youtube.com", "youtu.be"}.includes? url.host + if url.host == "youtu.be" + url = "/watch?v=#{url.request_target.lstrip('/')}" + elsif !url.host || {"m.youtube.com", "www.youtube.com"}.includes? url if url.path == "/redirect" url = HTTP::Params.parse(url.query.not_nil!)["q"] else diff --git a/src/invidious/views/template.ecr b/src/invidious/views/template.ecr index d0bdd742..7be95959 100644 --- a/src/invidious/views/template.ecr +++ b/src/invidious/views/template.ecr @@ -118,7 +118,7 @@
- <%= translate(locale, "Released under the AGPLv3 by Omar Roth.") %> + <%= translate(locale, "Released under the AGPLv3 on Github.") %>