Merge branch 'master' into syeopite-patch-1

This commit is contained in:
syeopite 2021-09-01 11:27:08 +00:00 committed by GitHub
commit a62aeb090c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
45 changed files with 121 additions and 96 deletions

View File

@ -86,6 +86,9 @@ jobs:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Build Docker - name: Build Docker
run: docker-compose build --build-arg release=0
- name: Run Docker
run: docker-compose up -d run: docker-compose up -d
- name: Test Docker - name: Test Docker
@ -112,6 +115,7 @@ jobs:
context: . context: .
file: docker/Dockerfile.arm64 file: docker/Dockerfile.arm64
platforms: linux/arm64/v8 platforms: linux/arm64/v8
build-args: release=0
- name: Test Docker - name: Test Docker
run: while curl -Isf http://localhost:3000; do sleep 1; done run: while curl -Isf http://localhost:3000; do sleep 1; done

View File

@ -49,6 +49,7 @@ jobs:
labels: quay.expires-after=12w labels: quay.expires-after=12w
push: true push: true
tags: quay.io/invidious/invidious:${{ github.sha }},quay.io/invidious/invidious:latest 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 - name: Build and push Docker ARM64 image for Push Event
if: github.ref == 'refs/heads/master' if: github.ref == 'refs/heads/master'
@ -60,3 +61,4 @@ jobs:
labels: quay.expires-after=12w labels: quay.expires-after=12w
push: true push: true
tags: quay.io/invidious/invidious:${{ github.sha }}-arm64,quay.io/invidious/invidious:latest-arm64 tags: quay.io/invidious/invidious:${{ github.sha }}-arm64,quay.io/invidious/invidious:latest-arm64
build-args: release=1

View File

@ -1,6 +1,8 @@
FROM crystallang/crystal:1.1.1-alpine AS builder FROM crystallang/crystal:1.1.1-alpine AS builder
RUN apk add --no-cache sqlite-static yaml-static RUN apk add --no-cache sqlite-static yaml-static
ARG release
WORKDIR /invidious WORKDIR /invidious
COPY ./shard.yml ./shard.yml COPY ./shard.yml ./shard.yml
COPY ./shard.lock ./shard.lock COPY ./shard.lock ./shard.lock
@ -16,10 +18,17 @@ COPY ./.git/ ./.git/
RUN crystal spec --warnings all \ RUN crystal spec --warnings all \
--link-flags "-lxml2 -llzma" --link-flags "-lxml2 -llzma"
RUN crystal build ./src/invidious.cr \ RUN if [ ${release} == 1 ] ; then \
crystal build ./src/invidious.cr \
--release \ --release \
--static --warnings all \ --static --warnings all \
--link-flags "-lxml2 -llzma" --link-flags "-lxml2 -llzma"; \
else \
crystal build ./src/invidious.cr \
--static --warnings all \
--link-flags "-lxml2 -llzma"; \
fi
FROM alpine:latest FROM alpine:latest
RUN apk add --no-cache librsvg ttf-opensans RUN apk add --no-cache librsvg ttf-opensans

View File

@ -1,6 +1,8 @@
FROM alpine:3.14 AS builder 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 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 WORKDIR /invidious
COPY ./shard.yml ./shard.yml COPY ./shard.yml ./shard.yml
COPY ./shard.lock ./shard.lock COPY ./shard.lock ./shard.lock
@ -16,10 +18,16 @@ COPY ./.git/ ./.git/
RUN crystal spec --warnings all \ RUN crystal spec --warnings all \
--link-flags "-lxml2 -llzma" --link-flags "-lxml2 -llzma"
RUN crystal build ./src/invidious.cr \ RUN if [ ${release} == 1 ] ; then \
crystal build ./src/invidious.cr \
--release \ --release \
--static --warnings all \ --static --warnings all \
--link-flags "-lxml2 -llzma" --link-flags "-lxml2 -llzma"; \
else \
crystal build ./src/invidious.cr \
--static --warnings all \
--link-flags "-lxml2 -llzma"; \
fi
FROM alpine:latest FROM alpine:latest
RUN apk add --no-cache librsvg ttf-opensans RUN apk add --no-cache librsvg ttf-opensans

View File

@ -145,7 +145,7 @@
}, },
"search": "بحث", "search": "بحث",
"Log out": "تسجيل الخروج", "Log out": "تسجيل الخروج",
"Released under the AGPLv3 by Omar Roth.": "تم الإنشاء تحت AGPLv3 بواسطة عمر روث.", "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.": "عرض سياسة الخصوصية.",

View File

@ -145,7 +145,7 @@
}, },
"search": "", "search": "",
"Log out": "", "Log out": "",
"Released under the AGPLv3 by Omar Roth.": "", "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.": "",

View File

@ -145,7 +145,7 @@
}, },
"search": "hledat", "search": "hledat",
"Log out": "Odhlásit se", "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.", "Source available here.": "Zdrojový kód dostupný zde.",
"View JavaScript license information.": "Zobrazit informace o licenci JavaScript .", "View JavaScript license information.": "Zobrazit informace o licenci JavaScript .",
"View privacy policy.": "Zobrazit Zásady ochrany osobních údajů.", "View privacy policy.": "Zobrazit Zásady ochrany osobních údajů.",

View File

@ -145,7 +145,7 @@
}, },
"search": "søg", "search": "søg",
"Log out": "Log ud", "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.", "Source available here.": "Kilde tilgængelig her.",
"View JavaScript license information.": "Vis JavaScriptlicensinformation.", "View JavaScript license information.": "Vis JavaScriptlicensinformation.",
"View privacy policy.": "Vis privatpolitik.", "View privacy policy.": "Vis privatpolitik.",

View File

@ -13,7 +13,7 @@
}, },
"LIVE": "LIVE", "LIVE": "LIVE",
"Shared `x` ago": "Vor `x` geteilt", "Shared `x` ago": "Vor `x` geteilt",
"Unsubscribe": "Abbestellen", "Unsubscribe": "Abo beenden",
"Subscribe": "Abonnieren", "Subscribe": "Abonnieren",
"View channel on YouTube": "Kanal auf YouTube anzeigen", "View channel on YouTube": "Kanal auf YouTube anzeigen",
"View playlist on YouTube": "Wiedergabeliste auf YouTube anzeigen", "View playlist on YouTube": "Wiedergabeliste auf YouTube anzeigen",
@ -145,7 +145,7 @@
}, },
"search": "Suchen", "search": "Suchen",
"Log out": "Abmelden", "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.", "Source available here.": "Quellcode verfügbar hier.",
"View JavaScript license information.": "Javascript Lizenzinformationen anzeigen.", "View JavaScript license information.": "Javascript Lizenzinformationen anzeigen.",
"View privacy policy.": "Datenschutzerklärung einsehen.", "View privacy policy.": "Datenschutzerklärung einsehen.",

View File

@ -145,7 +145,7 @@
}, },
"search": "αναζήτηση", "search": "αναζήτηση",
"Log out": "Αποσύνδεση", "Log out": "Αποσύνδεση",
"Released under the AGPLv3 by Omar Roth.": "Κυκλοφορεί υπό την άδεια AGPLv3 από τον Omar Roth.", "Released under the AGPLv3 on Github.": "",
"Source available here.": "Προβολή πηγαίου κώδικα εδώ.", "Source available here.": "Προβολή πηγαίου κώδικα εδώ.",
"View JavaScript license information.": "Προβολή πληροφοριών άδειας JavaScript.", "View JavaScript license information.": "Προβολή πληροφοριών άδειας JavaScript.",
"View privacy policy.": "Προβολή πολιτικής απορρήτου.", "View privacy policy.": "Προβολή πολιτικής απορρήτου.",

View File

@ -145,7 +145,7 @@
}, },
"search": "search", "search": "search",
"Log out": "Log out", "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.", "Source available here.": "Source available here.",
"View JavaScript license information.": "View JavaScript license information.", "View JavaScript license information.": "View JavaScript license information.",
"View privacy policy.": "View privacy policy.", "View privacy policy.": "View privacy policy.",

View File

@ -145,7 +145,7 @@
}, },
"search": "serĉi", "search": "serĉi",
"Log out": "Elsaluti", "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.", "Source available here.": "Fonto havebla ĉi tie.",
"View JavaScript license information.": "Vidi Ĝavoskriptan licencan informon.", "View JavaScript license information.": "Vidi Ĝavoskriptan licencan informon.",
"View privacy policy.": "Vidi regularon pri privateco.", "View privacy policy.": "Vidi regularon pri privateco.",

View File

@ -145,7 +145,7 @@
}, },
"search": "buscar", "search": "buscar",
"Log out": "Cerrar la sesión", "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í.", "Source available here.": "Código fuente disponible aquí.",
"View JavaScript license information.": "Ver información de licencia de JavaScript.", "View JavaScript license information.": "Ver información de licencia de JavaScript.",
"View privacy policy.": "Ver la política de privacidad.", "View privacy policy.": "Ver la política de privacidad.",

View File

@ -145,7 +145,7 @@
}, },
"search": "", "search": "",
"Log out": "", "Log out": "",
"Released under the AGPLv3 by Omar Roth.": "", "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.": "",

View File

@ -145,7 +145,7 @@
}, },
"search": "جستجو", "search": "جستجو",
"Log out": "خروج", "Log out": "خروج",
"Released under the AGPLv3 by Omar Roth.": "منتشر شده تحت مجوز AGPLv3 توسط Omar Roth.", "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.": "نمایش سیاست حفظ حریم خصوصی.",

View File

@ -77,8 +77,8 @@
"Fallback captions: ": "Toissijaiset tekstitykset: ", "Fallback captions: ": "Toissijaiset tekstitykset: ",
"Show related videos: ": "Näytä aiheeseen liittyviä videoita: ", "Show related videos: ": "Näytä aiheeseen liittyviä videoita: ",
"Show annotations by default: ": "Näytä huomautukset oletuksena: ", "Show annotations by default: ": "Näytä huomautukset oletuksena: ",
"Automatically extend video description: ": "", "Automatically extend video description: ": "Laajenna automaattisesti videon kuvausta: ",
"Interactive 360 degree videos: ": "", "Interactive 360 degree videos: ": "Interaktiiviset 360-asteiset videot: ",
"Visual preferences": "Visuaaliset asetukset", "Visual preferences": "Visuaaliset asetukset",
"Player style: ": "Soittimen tyyli: ", "Player style: ": "Soittimen tyyli: ",
"Dark mode: ": "Tumma tila: ", "Dark mode: ": "Tumma tila: ",
@ -86,8 +86,8 @@
"dark": "tumma", "dark": "tumma",
"light": "vaalea", "light": "vaalea",
"Thin mode: ": "Kapea tila ", "Thin mode: ": "Kapea tila ",
"Miscellaneous preferences": "", "Miscellaneous preferences": "Sekalaiset asetukset",
"Automaticatic instance redirection (fallback to redirect.invidious.io): ": "", "Automaticatic instance redirection (fallback to redirect.invidious.io): ": "Automaattinen palveluntarjoajan uudelleenohjaus (perääntyminen sivulle redirect.invidious.io) ",
"Subscription preferences": "Tilausten asetukset", "Subscription preferences": "Tilausten asetukset",
"Show annotations by default for subscribed channels: ": "Näytä oletuksena tilattujen kanavien huomautukset: ", "Show annotations by default for subscribed channels: ": "Näytä oletuksena tilattujen kanavien huomautukset: ",
"Redirect homepage to feed: ": "Uudelleenohjaa kotisivu syötteeseen: ", "Redirect homepage to feed: ": "Uudelleenohjaa kotisivu syötteeseen: ",
@ -117,7 +117,7 @@
"Administrator preferences": "Järjestelmänvalvojan asetukset", "Administrator preferences": "Järjestelmänvalvojan asetukset",
"Default homepage: ": "Oletuskotisivu: ", "Default homepage: ": "Oletuskotisivu: ",
"Feed menu: ": "Syötevalikko: ", "Feed menu: ": "Syötevalikko: ",
"Show nickname on top: ": "", "Show nickname on top: ": "Näytä nimimerkki ylimpänä: ",
"Top enabled: ": "Yläosa käytössä: ", "Top enabled: ": "Yläosa käytössä: ",
"CAPTCHA enabled: ": "CAPTCHA käytössä: ", "CAPTCHA enabled: ": "CAPTCHA käytössä: ",
"Login enabled: ": "Kirjautuminen käytössä: ", "Login enabled: ": "Kirjautuminen käytössä: ",
@ -145,7 +145,7 @@
}, },
"search": "haku", "search": "haku",
"Log out": "Kirjaudu ulos", "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ä.", "Source available here.": "Lähdekoodi on saatavilla täällä.",
"View JavaScript license information.": "JavaScript-koodin lisenssit.", "View JavaScript license information.": "JavaScript-koodin lisenssit.",
"View privacy policy.": "Katso tietosuojaseloste.", "View privacy policy.": "Katso tietosuojaseloste.",
@ -161,11 +161,11 @@
"Title": "Nimi", "Title": "Nimi",
"Playlist privacy": "Soittolistan yksityisyys", "Playlist privacy": "Soittolistan yksityisyys",
"Editing playlist `x`": "Muokataan soittolistaa `x`", "Editing playlist `x`": "Muokataan soittolistaa `x`",
"Show more": "", "Show more": "Näytä enemmän",
"Show less": "", "Show less": "Näytä vähemmän",
"Watch on YouTube": "Katso YouTubessa", "Watch on YouTube": "Katso YouTubessa",
"Switch Invidious Instance": "", "Switch Invidious Instance": "Vaihda Invidious-palveluntarjoajaa",
"Broken? Try another Invidious Instance": "", "Broken? Try another Invidious Instance": "Rikki? Kokeile toista Invidious-palveluntarjoajaa",
"Hide annotations": "Piilota merkkaukset", "Hide annotations": "Piilota merkkaukset",
"Show annotations": "Näytä merkkaukset", "Show annotations": "Näytä merkkaukset",
"Genre: ": "Genre: ", "Genre: ": "Genre: ",
@ -173,11 +173,11 @@
"Family friendly? ": "Kaiken ikäisille sopiva? ", "Family friendly? ": "Kaiken ikäisille sopiva? ",
"Wilson score: ": "Wilson-pistemäärä: ", "Wilson score: ": "Wilson-pistemäärä: ",
"Engagement: ": "Huomio: ", "Engagement: ": "Huomio: ",
"Whitelisted regions: ": "valkolistatut alueet: ", "Whitelisted regions: ": "Sallitut alueet: ",
"Blacklisted regions: ": "mustalla listalla olevat alueet: ", "Blacklisted regions: ": "Estetyt alueet: ",
"Shared `x`": "Jaettu `x`", "Shared `x`": "Jaettu `x`",
"`x` views": { "`x` views": {
"([^.,0-9]|^)1([^.,0-9]|$)": "`x` katselukertaa", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` katselukerta",
"": "`x` katselukertaa" "": "`x` katselukertaa"
}, },
"Premieres in `x`": "Ensiesitykseen aikaa `x`", "Premieres in `x`": "Ensiesitykseen aikaa `x`",
@ -227,8 +227,8 @@
"Empty playlist": "Tyhjennä soittolista", "Empty playlist": "Tyhjennä soittolista",
"Not a playlist.": "Ei ole soittolista.", "Not a playlist.": "Ei ole soittolista.",
"Playlist does not exist.": "Soittolistaa ei ole olemassa.", "Playlist does not exist.": "Soittolistaa ei ole olemassa.",
"Could not pull trending pages.": "Nousussa olevien sivujen lataus epäonnitui.", "Could not pull trending pages.": "Nousussa olevien sivujen lataus epäonnistui.",
"Hidden field \"challenge\" is a required field": "Piilotettu kenttä \"challenge\" on vaaditaan", "Hidden field \"challenge\" is a required field": "Piilotettu kenttä \"challenge\" vaaditaan",
"Hidden field \"token\" is a required field": "Piilotettu kenttä \"tunniste\" vaaditaan", "Hidden field \"token\" is a required field": "Piilotettu kenttä \"tunniste\" vaaditaan",
"Erroneous challenge": "Virheellinen haaste", "Erroneous challenge": "Virheellinen haaste",
"Erroneous token": "Virheellinen tunniste", "Erroneous token": "Virheellinen tunniste",
@ -368,9 +368,9 @@
"([^.,0-9]|^)1([^.,0-9]|$)": "`x` sekuntia", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` sekuntia",
"": "`x` sekuntia" "": "`x` sekuntia"
}, },
"Fallback comments: ": "varakommentit: ", "Fallback comments: ": "Varakommentit: ",
"Popular": "Suosittu", "Popular": "Suosittu",
"Search": "", "Search": "Etsi",
"Top": "Ylin", "Top": "Ylin",
"About": "Tietoa", "About": "Tietoa",
"Rating: ": "Arvosana: ", "Rating: ": "Arvosana: ",
@ -393,35 +393,35 @@
"Videos": "Videot", "Videos": "Videot",
"Playlists": "Soittolistat", "Playlists": "Soittolistat",
"Community": "Yhteisö", "Community": "Yhteisö",
"relevance": "", "relevance": "Osuvuus",
"rating": "", "rating": "Arvostelu",
"date": "", "date": "Latauspäivämäärä",
"views": "", "views": "Katselukerrat",
"content_type": "", "content_type": "Tyyppi",
"duration": "", "duration": "Kesto",
"features": "", "features": "Ominaisuudet",
"sort": "", "sort": "Luokittele",
"hour": "", "hour": "Viimeisin tunti",
"today": "", "today": "Tänään",
"week": "", "week": "Tämä viikko",
"month": "", "month": "Tämä kuukausi",
"year": "", "year": "Tämä vuosi",
"video": "", "video": "Video",
"channel": "", "channel": "Kanava",
"playlist": "", "playlist": "Soittolista",
"movie": "", "movie": "Elokuva",
"show": "", "show": "Ohjelma",
"hd": "", "hd": "HD",
"subtitles": "", "subtitles": "Tekstitys/CC",
"creative_commons": "", "creative_commons": "Creative Commons",
"3d": "", "3d": "3D",
"live": "", "live": "Suora lähetys",
"4k": "", "4k": "4K",
"location": "", "location": "Sijainti",
"hdr": "", "hdr": "HDR",
"filter": "", "filter": "Suodatin",
"Current version: ": "Tämänhetkinen versio: ", "Current version: ": "Tämänhetkinen versio: ",
"next_steps_error_message": "", "next_steps_error_message": "Sinun tulisi kokeilla seuraavia: ",
"next_steps_error_message_refresh": "", "next_steps_error_message_refresh": "Päivitä",
"next_steps_error_message_go_to_youtube": "" "next_steps_error_message_go_to_youtube": "Siirry YouTubeen"
} }

View File

@ -145,7 +145,7 @@
}, },
"search": "rechercher", "search": "rechercher",
"Log out": "Se déconnecter", "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.", "Source available here.": "Code source disponible ici.",
"View JavaScript license information.": "Informations des licences JavaScript.", "View JavaScript license information.": "Informations des licences JavaScript.",
"View privacy policy.": "Politique de confidentialité.", "View privacy policy.": "Politique de confidentialité.",

View File

@ -145,7 +145,7 @@
}, },
"search": "חיפוש", "search": "חיפוש",
"Log out": "יציאה", "Log out": "יציאה",
"Released under the AGPLv3 by Omar Roth.": "מופץ תחת רישיון AGPLv3 על ידי עמר רות׳ (Omar Roth).", "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.": "להצגת מדיניות הפרטיות.",

View File

@ -145,7 +145,7 @@
}, },
"search": "traži", "search": "traži",
"Log out": "Odjavi se", "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.", "Source available here.": "Izvor je ovdje dostupan.",
"View JavaScript license information.": "Prikaži informacije o JavaScript licenci.", "View JavaScript license information.": "Prikaži informacije o JavaScript licenci.",
"View privacy policy.": "Prikaži politiku privatnosti.", "View privacy policy.": "Prikaži politiku privatnosti.",

View File

@ -145,7 +145,7 @@
}, },
"search": "keresés", "search": "keresés",
"Log out": "Kijelentkezé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.", "Source available here.": "A forráskód itt érhető el.",
"View JavaScript license information.": "JavaScript licensz inforkációk megtekintése.", "View JavaScript license information.": "JavaScript licensz inforkációk megtekintése.",
"View privacy policy.": "Adatvédelmi irányelvek megtekintése.", "View privacy policy.": "Adatvédelmi irányelvek megtekintése.",

View File

@ -145,7 +145,7 @@
}, },
"search": "cari", "search": "cari",
"Log out": "Keluar", "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.", "Source available here.": "Sumber tersedia di sini.",
"View JavaScript license information.": "Tampilkan informasi lisensi JavaScript.", "View JavaScript license information.": "Tampilkan informasi lisensi JavaScript.",
"View privacy policy.": "Lihat kebijakan privasi.", "View privacy policy.": "Lihat kebijakan privasi.",

View File

@ -145,7 +145,7 @@
}, },
"search": "leita", "search": "leita",
"Log out": "Útskrá", "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.", "Source available here.": "Frumkóði aðgengilegur hér.",
"View JavaScript license information.": "Skoða JavaScript leyfisupplýsingar.", "View JavaScript license information.": "Skoða JavaScript leyfisupplýsingar.",
"View privacy policy.": "Skoða meðferð persónuupplýsinga.", "View privacy policy.": "Skoða meðferð persónuupplýsinga.",

View File

@ -145,7 +145,7 @@
}, },
"search": "Cerca", "search": "Cerca",
"Log out": "Esci", "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.", "Source available here.": "Codice sorgente.",
"View JavaScript license information.": "Guarda le informazioni di licenza del codice JavaScript.", "View JavaScript license information.": "Guarda le informazioni di licenza del codice JavaScript.",
"View privacy policy.": "Vedi la politica sulla privacy.", "View privacy policy.": "Vedi la politica sulla privacy.",

View File

@ -145,7 +145,7 @@
}, },
"search": "検索", "search": "検索",
"Log out": "ログアウト", "Log out": "ログアウト",
"Released under the AGPLv3 by Omar Roth.": "Omar Roth によって AGPLv3 でリリースされています", "Released under the AGPLv3 on Github.": "",
"Source available here.": "ソースはここで閲覧可能です。", "Source available here.": "ソースはここで閲覧可能です。",
"View JavaScript license information.": "JavaScript ライセンス情報", "View JavaScript license information.": "JavaScript ライセンス情報",
"View privacy policy.": "プライバシーポリシー", "View privacy policy.": "プライバシーポリシー",

View File

@ -136,6 +136,7 @@
"Delete playlist": "재생목록 삭제", "Delete playlist": "재생목록 삭제",
"Delete playlist `x`?": "재생목록 `x` 를 삭제 하시겠습니까?", "Delete playlist `x`?": "재생목록 `x` 를 삭제 하시겠습니까?",
"Updated `x` ago": "`x` 전에 업데이트됨", "Updated `x` ago": "`x` 전에 업데이트됨",
"Released under the AGPLv3 on Github.": "",
"View all playlists": "모든 재생목록 보기", "View all playlists": "모든 재생목록 보기",
"Private": "비공개", "Private": "비공개",
"Unlisted": "목록에 없음", "Unlisted": "목록에 없음",
@ -143,7 +144,6 @@
"View privacy policy.": "개인정보 처리방침 보기.", "View privacy policy.": "개인정보 처리방침 보기.",
"View JavaScript license information.": "JavaScript 라이센스 정보 보기.", "View JavaScript license information.": "JavaScript 라이센스 정보 보기.",
"Source available here.": "소스는 여기에서 사용할 수 있습니다.", "Source available here.": "소스는 여기에서 사용할 수 있습니다.",
"Released under the AGPLv3 by Omar Roth.": "Omar Roth에 의해 AGPLv3에 따라 공개되었습니다.",
"Log out": "로그아웃", "Log out": "로그아웃",
"search": "검색", "search": "검색",
"`x` unseen notifications": { "`x` unseen notifications": {

View File

@ -145,7 +145,7 @@
}, },
"search": "ieškoti", "search": "ieškoti",
"Log out": "Atsijungti", "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.", "Source available here.": "Kodas prieinamas čia.",
"View JavaScript license information.": "Žiūrėti JavaScript licencijos informaciją.", "View JavaScript license information.": "Žiūrėti JavaScript licencijos informaciją.",
"View privacy policy.": "Žiūrėti privatumo politiką.", "View privacy policy.": "Žiūrėti privatumo politiką.",

View File

@ -145,7 +145,7 @@
}, },
"search": "søk", "search": "søk",
"Log out": "Logg ut", "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.", "Source available here.": "Kildekode tilgjengelig her.",
"View JavaScript license information.": "Vis JavaScript-lisensinfo.", "View JavaScript license information.": "Vis JavaScript-lisensinfo.",
"View privacy policy.": "Vis personvernspraksis.", "View privacy policy.": "Vis personvernspraksis.",

View File

@ -145,7 +145,7 @@
}, },
"search": "zoeken", "search": "zoeken",
"Log out": "Uitloggen", "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.", "Source available here.": "De broncode is hier beschikbaar.",
"View JavaScript license information.": "JavaScript-licentieinformatie tonen.", "View JavaScript license information.": "JavaScript-licentieinformatie tonen.",
"View privacy policy.": "Privacybeleid tonen.", "View privacy policy.": "Privacybeleid tonen.",

View File

@ -145,7 +145,7 @@
}, },
"search": "szukaj", "search": "szukaj",
"Log out": "Wyloguj", "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.", "Source available here.": "Kod źródłowy dostępny tutaj.",
"View JavaScript license information.": "Wyświetl informację o licencji JavaScript.", "View JavaScript license information.": "Wyświetl informację o licencji JavaScript.",
"View privacy policy.": "Polityka prywatności.", "View privacy policy.": "Polityka prywatności.",

View File

@ -145,7 +145,7 @@
}, },
"search": "Pesquisar", "search": "Pesquisar",
"Log out": "Sair", "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.", "Source available here.": "Código-fonte disponível aqui.",
"View JavaScript license information.": "Ver informações da licença do JavaScript.", "View JavaScript license information.": "Ver informações da licença do JavaScript.",
"View privacy policy.": "Ver a política de privacidade.", "View privacy policy.": "Ver a política de privacidade.",

View File

@ -145,7 +145,7 @@
}, },
"search": "Pesquisar", "search": "Pesquisar",
"Log out": "Terminar sessão", "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.", "Source available here.": "Código-fonte disponível aqui.",
"View JavaScript license information.": "Ver informações da licença do JavaScript.", "View JavaScript license information.": "Ver informações da licença do JavaScript.",
"View privacy policy.": "Ver a política de privacidade.", "View privacy policy.": "Ver a política de privacidade.",

View File

@ -145,7 +145,7 @@
}, },
"search": "căutați", "search": "căutați",
"Log out": "Deconectați-vă", "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.", "Source available here.": "Codul sursă este disponibil aici.",
"View JavaScript license information.": "Informații legate de licența JavaScript.", "View JavaScript license information.": "Informații legate de licența JavaScript.",
"View privacy policy.": "Politica de confidențialitate.", "View privacy policy.": "Politica de confidențialitate.",

View File

@ -145,7 +145,7 @@
}, },
"search": "поиск", "search": "поиск",
"Log out": "Выйти", "Log out": "Выйти",
"Released under the AGPLv3 by Omar Roth.": "Реализовано Омаром Ротом по лицензии AGPLv3.", "Released under the AGPLv3 on Github.": "",
"Source available here.": "Исходный код доступен здесь.", "Source available here.": "Исходный код доступен здесь.",
"View JavaScript license information.": "Посмотреть информацию по лицензии JavaScript.", "View JavaScript license information.": "Посмотреть информацию по лицензии JavaScript.",
"View privacy policy.": "Посмотреть политику конфиденциальности.", "View privacy policy.": "Посмотреть политику конфиденциальности.",

View File

@ -145,7 +145,7 @@
}, },
"search": "", "search": "",
"Log out": "", "Log out": "",
"Released under the AGPLv3 by Omar Roth.": "", "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.": "",

View File

@ -145,7 +145,7 @@
}, },
"search": "", "search": "",
"Log out": "", "Log out": "",
"Released under the AGPLv3 by Omar Roth.": "", "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.": "",

View File

@ -145,7 +145,7 @@
}, },
"search": "", "search": "",
"Log out": "", "Log out": "",
"Released under the AGPLv3 by Omar Roth.": "", "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.": "",

View File

@ -145,7 +145,7 @@
}, },
"search": "претрага", "search": "претрага",
"Log out": "Одјавите се", "Log out": "Одјавите се",
"Released under the AGPLv3 by Omar Roth.": "Издао Омар Рот (Omar Roth) под условима AGPLv3 лиценце.", "Released under the AGPLv3 on Github.": "",
"Source available here.": "Изворни код доступан овде.", "Source available here.": "Изворни код доступан овде.",
"View JavaScript license information.": "Прикажи информације о JavaScript лиценци.", "View JavaScript license information.": "Прикажи информације о JavaScript лиценци.",
"View privacy policy.": "Прикажи извештај о приватности.", "View privacy policy.": "Прикажи извештај о приватности.",

View File

@ -145,7 +145,7 @@
}, },
"search": "sök", "search": "sök",
"Log out": "Logga ut", "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.", "Source available here.": "Källkod tillgänglig här.",
"View JavaScript license information.": "Visa JavaScript-licensinformation.", "View JavaScript license information.": "Visa JavaScript-licensinformation.",
"View privacy policy.": "Visa privatlivspolicy.", "View privacy policy.": "Visa privatlivspolicy.",

View File

@ -145,7 +145,7 @@
}, },
"search": "ara", "search": "ara",
"Log out": ıkış yap", "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.", "Source available here.": "Kaynak kodları burada bulunabilir.",
"View JavaScript license information.": "JavaScript lisans bilgilerini görüntüle.", "View JavaScript license information.": "JavaScript lisans bilgilerini görüntüle.",
"View privacy policy.": "Gizlilik politikasını görüntüle.", "View privacy policy.": "Gizlilik politikasını görüntüle.",

View File

@ -145,7 +145,7 @@
}, },
"search": "пошук", "search": "пошук",
"Log out": "Вийти", "Log out": "Вийти",
"Released under the AGPLv3 by Omar Roth.": "Реалізовано Омаром Ротом за ліцензією AGPLv3.", "Released under the AGPLv3 on Github.": "",
"Source available here.": "Програмний код доступний тут.", "Source available here.": "Програмний код доступний тут.",
"View JavaScript license information.": "Переглянути інформацію щодо ліцензії JavaScript.", "View JavaScript license information.": "Переглянути інформацію щодо ліцензії JavaScript.",
"View privacy policy.": "Переглянути політику приватності.", "View privacy policy.": "Переглянути політику приватності.",

View File

@ -145,7 +145,7 @@
}, },
"search": "Tìm kiếm", "search": "Tìm kiếm",
"Log out": "Đăng xuất", "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.", "Source available here.": "Nguồn có sẵn ở đây.",
"View JavaScript license information.": "Xem thông tin giấy phép JavaScript.", "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.", "View privacy policy.": "Xem chính sách bảo mật.",

View File

@ -145,7 +145,7 @@
}, },
"search": "搜索", "search": "搜索",
"Log out": "登出", "Log out": "登出",
"Released under the AGPLv3 by Omar Roth.": "由 Omar Roth 开发,以 AGPLv3 授权。", "Released under the AGPLv3 on Github.": "",
"Source available here.": "源码可在此查看。", "Source available here.": "源码可在此查看。",
"View JavaScript license information.": "查看 JavaScript 协议信息。", "View JavaScript license information.": "查看 JavaScript 协议信息。",
"View privacy policy.": "查看隐私政策。", "View privacy policy.": "查看隐私政策。",

View File

@ -145,7 +145,7 @@
}, },
"search": "搜尋", "search": "搜尋",
"Log out": "登出", "Log out": "登出",
"Released under the AGPLv3 by Omar Roth.": "Omar Roth 以 AGPLv3 釋出。", "Released under the AGPLv3 on Github.": "",
"Source available here.": "原始碼在此提供。", "Source available here.": "原始碼在此提供。",
"View JavaScript license information.": "檢視 JavaScript 授權條款資訊。", "View JavaScript license information.": "檢視 JavaScript 授權條款資訊。",
"View privacy policy.": "檢視隱私權政策。", "View privacy policy.": "檢視隱私權政策。",

View File

@ -552,7 +552,9 @@ def content_to_comment_html(content)
if url = run["navigationEndpoint"]["urlEndpoint"]?.try &.["url"].as_s if url = run["navigationEndpoint"]["urlEndpoint"]?.try &.["url"].as_s
url = URI.parse(url) 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" if url.path == "/redirect"
url = HTTP::Params.parse(url.query.not_nil!)["q"] url = HTTP::Params.parse(url.query.not_nil!)["q"]
else else

View File

@ -118,7 +118,7 @@
<div class="pure-g"> <div class="pure-g">
<div class="pure-u-1 pure-u-md-1-3"> <div class="pure-u-1 pure-u-md-1-3">
<a href="https://github.com/iv-org/invidious"> <a href="https://github.com/iv-org/invidious">
<%= translate(locale, "Released under the AGPLv3 by Omar Roth.") %> <%= translate(locale, "Released under the AGPLv3 on Github.") %>
</a> </a>
</div> </div>
<div class="pure-u-1 pure-u-md-1-3"> <div class="pure-u-1 pure-u-md-1-3">