This commit is contained in:
syeopite 2025-06-21 19:24:22 +00:00 committed by GitHub
commit d6659ef22a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
61 changed files with 113 additions and 70 deletions

View File

@ -20,6 +20,10 @@ Lint/ShadowingOuterLocalVar:
Excluded:
- src/invidious/helpers/tokens.cr
# CI has a separate job to check for typos
Lint/Typos:
Enabled: false
Lint/NotNil:
Enabled: false

View File

@ -165,3 +165,12 @@ jobs:
- name: Run Ameba linter
run: bin/ameba
lint_spell:
name: Spell Check with Typos
runs-on: ubuntu-latest
steps:
- name: Checkout Actions Repository
uses: actions/checkout@v4
- name: Spell Check Repo
uses: crate-ci/typos@v1.33.1

30
.typos.toml Normal file
View File

@ -0,0 +1,30 @@
[default]
extend-ignore-re = [
# Exclude various hard-coded YouTube IDs
"\\b[0-9A-z+/\\-_]{100,}((=|%3D){1,2})?\\b",
"\\b4qm.*(%3D{1,2})?\\b",
"UC[A-z0-9\\-]*\\b",
"EgI[A-z0-9\\-]{7}(%3D{1,2})",
# Ignore gsub regex
"gsub\\(?/.*/,?",
# TEST_IDs constant def
"TEST_IDS *= *\\{.*\\}",
# Ignore two-letter region strings
"(\\b|\")[a-zA-Z]{2}(\\b|\"),"
]
[default.extend-identifiers]
clen = "clen"
[files]
extend-exclude = [
"/assets/js/videojs-youtube-annotations.min.js",
"/assets/videojs/**/*",
"/assets/fonts/ionicons.svg",
"/mocks/**/*.json",
"locales/*.json",
"CHANGELOG_legacy.md",
]

View File

@ -149,7 +149,7 @@ An HTTP proxy can be configured directly in Invidious, if needed. \
* The instance list is downloaded in the background to improve redirection speed
* New `colorize_logs` option makes each log level a different color
#### For developpers
#### For developers
* `/api/v1/channels/{id}/shorts` now supports the `sort-by` parameter with the following values:
`newest`, `oldest` and `popular`
@ -301,7 +301,7 @@ Allow manual trigger of release-container build ([#4877], thanks @syeopite)
[inv_sig_helper]: https://github.com/iv-org/inv_sig_helper
#### For developpers
#### For developers
* The versions of Crystal that we test in CI/CD are now: `1.9.2`, `1.10.1`, `1.11.2`, `1.12.1`.
Please note that due to a bug in the `libxml` bindings (See [#4256]), versions prior to `1.10.0`
@ -328,7 +328,7 @@ Allow manual trigger of release-container build ([#4877], thanks @syeopite)
* Watch page: the items in the "add to playlist" drop down are now sorted alphabetically
* Videos: the "genre" URL is now always pointing to a valid webpage
* Playlists: Fixed `Could not parse N episodes` error on podcast playlists
* All external links should now have the [`rel`] attibute set to `noreferrer noopener` for
* All external links should now have the [`rel`] attribute set to `noreferrer noopener` for
increased privacy.
* Preferences: Fixed the admin-only "modified source code" input being ignored
* Watch/channel pages: use the full image URL in `og:image` and `twitter:image` meta tags
@ -338,7 +338,7 @@ Allow manual trigger of release-container build ([#4877], thanks @syeopite)
#### API
* fixed the `local` parameter not applying to `formatStreams` on `/api/v1/videos/{id}`
* fixed an `Index out of bounds` error hapenning when a playlist had no videos
* fixed an `Index out of bounds` error happening when a playlist had no videos
* fixed duplicated query parameters in proxied video URLs
* Return actual video height/width/fps rather than hard coded values
* Fixed the `/api/v1/popular` endpoint not returning a proper error code/message when the
@ -357,7 +357,7 @@ Allow manual trigger of release-container build ([#4877], thanks @syeopite)
* Channel: Render age restricted channels ([#4295], thanks @ChunkyProgrammer)
* Ameba: Miscellaneous fixes ([#4807], thanks @syeopite)
* API: Proxy formatStreams URLs too ([#4859], thanks @colinleroy)
* UI: Add search button to search bar ([#4706], thanks @thansk)
* UI: Add search button to search bar ([#4706], thanks @thanks)
* Add ability to set po_token and visitordata ID ([#4789], thanks @unixfox)
* Add support for an external signature server ([#4772], by @SamantazFox)
* Ameba: Fix Naming/VariableNames ([#4790], thanks @syeopite)

View File

@ -739,7 +739,7 @@ body.dark-theme {
/*
* Miscellanous
* Miscellaneous
*/

View File

@ -259,7 +259,7 @@ https_only: false
# use_innertube_for_captions: false
##
## Send Google session informations. This is useful when Invidious is blocked
## Send Google session information. This is useful when Invidious is blocked
## by the message "This helps protect our community."
## See https://github.com/iv-org/invidious/issues/4734.
##
@ -319,7 +319,7 @@ https_only: false
#popular_enabled: true
##
## Enable/Disable statstics (available at /api/v1/stats).
## Enable/Disable statistics (available at /api/v1/stats).
## The following data is available:
## - Software name ("invidious") and version+branch (same data as
## displayed in the footer, e.g: "2021.05.13-75e5b49" / "master")
@ -865,7 +865,7 @@ default_user_preferences:
##
## Default dash video quality.
##
## Note: this setting only takes effet if the
## Note: this setting only takes effect if the
## 'quality' parameter is set to "dash".
##
## Accepted values:

View File

@ -354,7 +354,7 @@
"search_filters_duration_option_long": "طويل (> 20 دقيقة)",
"footer_source_code": "الكود المصدر",
"footer_original_source_code": "الكود المصدر الأصلي",
"footer_modfied_source_code": "الكود المصدر المعدل",
"footer_modified_source_code": "الكود المصدر المعدل",
"adminprefs_modified_source_code_url_label": "URL إلى مستودع الكود المصدر المعدل",
"footer_documentation": "التوثيق",
"footer_donate_page": "تبرّع",

View File

@ -331,7 +331,7 @@
"Music in this video": "Музика в това видео",
"Hide replies": "Скрий отговорите",
"Password cannot be longer than 55 characters": "Паролата не може да бъде по-дълга от 55 символа",
"footer_modfied_source_code": "Променен изходен код",
"footer_modified_source_code": "Променен изходен код",
"Bosnian": "Босненски",
"Deleted or invalid channel": "Изтрит или невалиден канал",
"Popular": "Популярно",

View File

@ -128,7 +128,7 @@
"user_saved_playlists": "`x` llistes de reproducció guardades",
"adminprefs_modified_source_code_url_label": "URL al repositori de codi font modificat",
"none": "cap",
"footer_modfied_source_code": "Codi font modificat",
"footer_modified_source_code": "Codi font modificat",
"videoinfo_invidious_embed_link": "Incrusta l'enllaç",
"download_subtitles": "Subtítols - `x` (.vtt)",
"user_created_playlists": "`x`llistes de reproducció creades",

View File

@ -394,7 +394,7 @@
"adminprefs_modified_source_code_url_label": "URL repozitáře s upraveným zdrojovým kódem",
"Video unavailable": "Video není dostupné",
"next_steps_error_message_go_to_youtube": "Jít na YouTube",
"footer_modfied_source_code": "Upravený zdrojový kód",
"footer_modified_source_code": "Upravený zdrojový kód",
"none": "žádné",
"videoinfo_invidious_embed_link": "Odkaz na vložení",
"user_saved_playlists": "`x` uložených playlistů",

View File

@ -236,7 +236,7 @@
"%A %B %-d, %Y": "%A %B %-d, %Y",
"footer_documentation": "Dokumentation",
"Pashto": "Pashto",
"footer_modfied_source_code": "Modificeret Kildekode",
"footer_modified_source_code": "Modificeret Kildekode",
"Released under the AGPLv3 on Github.": "Udgivet under AGPLv3 på GitHub.",
"Tajik": "Tadsjikisk",
"search_filters_date_option_month": "Denne måned",

View File

@ -355,7 +355,7 @@
"footer_donate_page": "Spende",
"search_filters_duration_option_long": "Lang (> 20 Minuten)",
"footer_original_source_code": "Original Quellcode",
"footer_modfied_source_code": "Modifizierter Quellcode",
"footer_modified_source_code": "Modifizierter Quellcode",
"footer_documentation": "Dokumentation",
"footer_source_code": "Quellcode",
"adminprefs_modified_source_code_url_label": "URL zum Repositorie des modifizierten Quellcodes",

View File

@ -398,7 +398,7 @@
"Released under the AGPLv3 on Github.": "Κυκλοφορεί υπό την AGPLv3 στο GitHub.",
"search_filters_sort_label": "Ταξινόμηση κατά",
"search_filters_type_option_movie": "Ταινία",
"footer_modfied_source_code": "Τροποποιημένος πηγαίος κώδικας",
"footer_modified_source_code": "Τροποποιημένος πηγαίος κώδικας",
"search_filters_features_label": "Χαρακτηριστικά",
"search_filters_features_option_four_k": "4K",
"footer_documentation": "Τεκμηρίωση",

View File

@ -466,7 +466,7 @@
"footer_documentation": "Documentation",
"footer_source_code": "Source code",
"footer_original_source_code": "Original source code",
"footer_modfied_source_code": "Modified source code",
"footer_modified_source_code": "Modified source code",
"adminprefs_modified_source_code_url_label": "URL to modified source code repository",
"none": "none",
"videoinfo_started_streaming_x_ago": "Started streaming `x` ago",

View File

@ -355,7 +355,7 @@
"footer_documentation": "Dokumentaro",
"footer_source_code": "Fontkodo",
"adminprefs_modified_source_code_url_label": "URL al modifita deponejo de fontkodo",
"footer_modfied_source_code": "Modifita Fontkodo",
"footer_modified_source_code": "Modifita Fontkodo",
"footer_original_source_code": "Originala fontkodo",
"footer_donate_page": "Donaci",
"preferences_region_label": "Lando de la enhavo: ",

View File

@ -357,7 +357,7 @@
"footer_original_source_code": "Código fuente original",
"adminprefs_modified_source_code_url_label": "Enlace al repositorio de código fuente modificado",
"footer_source_code": "Código fuente",
"footer_modfied_source_code": "Código fuente modificado",
"footer_modified_source_code": "Código fuente modificado",
"footer_donate_page": "Donar",
"preferences_region_label": "País del contenido: ",
"preferences_quality_dash_label": "Calidad de video DASH preferida: ",

View File

@ -402,7 +402,7 @@
"search_filters_features_option_three_sixty": "360°",
"footer_donate_page": "کمک مالی",
"footer_source_code": "کد منبع",
"footer_modfied_source_code": "کد منبع ویرایش شده",
"footer_modified_source_code": "کد منبع ویرایش شده",
"none": "هیچ‌کدام",
"videoinfo_started_streaming_x_ago": "پخش جریانی `x` پیش آغاز شد",
"videoinfo_watch_on_youTube": "تماشا در یوتیوب",

View File

@ -427,7 +427,7 @@
"search_filters_duration_option_long": "Pitkä (> 20 minuuttia)",
"footer_documentation": "Dokumentaatio",
"footer_original_source_code": "Alkuperäinen lähdekoodi",
"footer_modfied_source_code": "Muokattu lähdekoodi",
"footer_modified_source_code": "Muokattu lähdekoodi",
"Japanese (auto-generated)": "japani (automaattisesti luotu)",
"German (auto-generated)": "saksa (automaattisesti luotu)",
"Portuguese (auto-generated)": "portugali (automaattisesti luotu)",

View File

@ -412,7 +412,7 @@
"footer_source_code": "Code source",
"preferences_region_label": "Pays du contenu : ",
"footer_donate_page": "Faire un don",
"footer_modfied_source_code": "Code source modifié",
"footer_modified_source_code": "Code source modifié",
"search_filters_duration_option_short": "Courte (< 4 minutes)",
"search_filters_duration_option_long": "Longue (> 20 minutes)",
"adminprefs_modified_source_code_url_label": "URL du dépôt du code source modifié",

View File

@ -440,7 +440,7 @@
"footer_documentation": "प्रलेख",
"footer_source_code": "स्रोत कोड",
"footer_original_source_code": "मूल स्रोत कोड",
"footer_modfied_source_code": "बदला गया स्रोत कोड",
"footer_modified_source_code": "बदला गया स्रोत कोड",
"Current version: ": "वर्तमान संस्करण: ",
"next_steps_error_message": "इसके बाद आपके ये आज़माने चाहिए: ",
"next_steps_error_message_refresh": "साफ़ करें",

View File

@ -355,7 +355,7 @@
"search_filters_duration_option_short": "Kratko (< 4 minute)",
"search_filters_duration_option_long": "Dugo (> 20 minute)",
"footer_source_code": "Izvorni kod",
"footer_modfied_source_code": "Prilagođen izvorni kod",
"footer_modified_source_code": "Prilagođen izvorni kod",
"footer_documentation": "Dokumentacija",
"footer_original_source_code": "Prvobitan izvorni kod",
"preferences_region_label": "Zemlja sadržaja: ",

View File

@ -385,7 +385,7 @@
"next_steps_error_message_refresh": "Újratöltés",
"footer_donate_page": "Adakozás",
"footer_source_code": "Forráskód",
"footer_modfied_source_code": "Módosított forráskód",
"footer_modified_source_code": "Módosított forráskód",
"adminprefs_modified_source_code_url_label": "A módosított forráskód repositoryjának URL-je:",
"preferences_automatic_instance_redirect_label": "Váltáskor másik Invidious oldal automatikus betöltése (redirect.invidious.io töltődik, ha nem működne): ",
"preferences_region_label": "Ország tartalmainak mutatása: ",

View File

@ -372,7 +372,7 @@
"footer_original_source_code": "Kode sumber yang asli",
"search_filters_duration_option_short": "Pendek (< 4 menit)",
"search_filters_duration_option_long": "Panjang (> 20 menit)",
"footer_modfied_source_code": "Kode sumber yang dimodifikasi",
"footer_modified_source_code": "Kode sumber yang dimodifikasi",
"footer_documentation": "Dokumentasi",
"preferences_region_label": "Konten dari negara: ",
"preferences_quality_dash_label": "Kualitas video DASH yang disukai: ",

View File

@ -451,7 +451,7 @@
"search_filters_sort_label": "Raða eftir",
"search_filters_sort_option_relevance": "Samsvörun",
"footer_donate_page": "Styrkja",
"footer_modfied_source_code": "Breyttur grunnkóði",
"footer_modified_source_code": "Breyttur grunnkóði",
"crash_page_refresh": "reynt að <a href=\"`x`\">endurlesa síðuna</a>",
"crash_page_search_issue": "leitað að <a href=\"`x`\">fyrirliggjandi villum á GitHub</a>",
"none": "ekkert",

View File

@ -405,7 +405,7 @@
"next_steps_error_message_go_to_youtube": "Andare su YouTube",
"footer_documentation": "Documentazione",
"footer_original_source_code": "Codice sorgente originale",
"footer_modfied_source_code": "Codice sorgente modificato",
"footer_modified_source_code": "Codice sorgente modificato",
"none": "nessuno",
"videoinfo_started_streaming_x_ago": "Ha iniziato a trasmettere `x` fa",
"download_subtitles": "Sottotitoli - `x` (.vtt)",

View File

@ -370,7 +370,7 @@
"footer_documentation": "説明書",
"footer_source_code": "ソースコード",
"footer_original_source_code": "元のソースコード",
"footer_modfied_source_code": "改変し使用中",
"footer_modified_source_code": "改変し使用中",
"adminprefs_modified_source_code_url_label": "改変されたソースコードのレポジトリの URL",
"search_filters_duration_option_long": "20分以上",
"preferences_region_label": "地域: ",

View File

@ -371,7 +371,7 @@
"footer_documentation": "문서",
"footer_source_code": "소스 코드",
"footer_original_source_code": "원본 소스 코드",
"footer_modfied_source_code": "수정된 소스 코드",
"footer_modified_source_code": "수정된 소스 코드",
"adminprefs_modified_source_code_url_label": "수정된 소스 코드 저장소의 URL",
"search_filters_title": "필터",
"preferences_quality_dash_option_4320p": "4320p",

View File

@ -356,7 +356,7 @@
"footer_source_code": "Pirminis kodas",
"footer_original_source_code": "Pradinis pirminis kodas",
"adminprefs_modified_source_code_url_label": "URL į pakeisto pirminio kodo repozitoriją",
"footer_modfied_source_code": "Pakeistas pirminis kodas",
"footer_modified_source_code": "Pakeistas pirminis kodas",
"footer_donate_page": "Paaukoti",
"preferences_region_label": "Turinio šalis: ",
"preferences_quality_dash_label": "Pageidaujama DASH vaizdo kokybė: ",

View File

@ -356,7 +356,7 @@
"footer_documentation": "Dokumentasjon",
"footer_source_code": "Kildekode",
"footer_original_source_code": "Opprinnelig kildekode",
"footer_modfied_source_code": "Endret kildekode",
"footer_modified_source_code": "Endret kildekode",
"adminprefs_modified_source_code_url_label": "Nettadresse til kodelager inneholdende endret kildekode",
"preferences_quality_dash_label": "Foretrukket DASH-videokvalitet: ",
"preferences_region_label": "Innholdsland: ",

View File

@ -355,7 +355,7 @@
"footer_donate_page": "Doneren",
"footer_documentation": "Documentatie",
"footer_original_source_code": "Originele bron-code",
"footer_modfied_source_code": "Gewijzigde bron-code",
"footer_modified_source_code": "Gewijzigde bron-code",
"adminprefs_modified_source_code_url_label": "URL naar gewijzigde bron-code-opslagplaats",
"next_steps_error_message": "Waarna u zou kunnen proberen om: ",
"footer_source_code": "Bron-code",

View File

@ -442,7 +442,7 @@
"search_filters_duration_option_long": "Długa (> 20 minut)",
"footer_documentation": "Dokumentacja",
"footer_source_code": "Kod źródłowy",
"footer_modfied_source_code": "Zmodyfikowany kod źródłowy",
"footer_modified_source_code": "Zmodyfikowany kod źródłowy",
"footer_original_source_code": "Oryginalny kod źródłowy",
"adminprefs_modified_source_code_url_label": "Adres URL do repozytorium ze zmodyfikowanym kodem źródłowym",
"English (United Kingdom)": "angielski (Wielka Brytania)",

View File

@ -381,7 +381,7 @@
"footer_documentation": "Documentação",
"footer_source_code": "Código-fonte",
"footer_original_source_code": "Código-fonte original",
"footer_modfied_source_code": "Código-fonte modificado",
"footer_modified_source_code": "Código-fonte modificado",
"preferences_quality_dash_label": "Qualidade de vídeo DASH preferida: ",
"preferences_region_label": "País do conteúdo: ",
"preferences_quality_dash_option_4320p": "4320p",

View File

@ -465,7 +465,7 @@
"footer_documentation": "Documentação",
"footer_source_code": "Código-fonte",
"footer_original_source_code": "Código-fonte original",
"footer_modfied_source_code": "Código-fonte alterado",
"footer_modified_source_code": "Código-fonte alterado",
"Chinese": "Chinês",
"search_filters_date_label": "Data de publicação",
"search_filters_date_option_none": "Qualquer data",

View File

@ -380,7 +380,7 @@
"footer_original_source_code": "Código-fonte original",
"adminprefs_modified_source_code_url_label": "URL do repositório do código-fonte alterado",
"footer_documentation": "Documentação",
"footer_modfied_source_code": "Código-fonte alterado",
"footer_modified_source_code": "Código-fonte alterado",
"footer_donate_page": "Doar",
"preferences_region_label": "País do conteúdo: ",
"preferences_quality_dash_label": "Qualidade de vídeo DASH preferida: ",

View File

@ -346,7 +346,7 @@
"Vietnamese (auto-generated)": "Vietnameză (generată automat)",
"videoinfo_started_streaming_x_ago": "În direct de acum `x`",
"preferences_quality_dash_option_2160p": "2160p",
"footer_modfied_source_code": "Codul sursă modificat",
"footer_modified_source_code": "Codul sursă modificat",
"preferences_quality_dash_label": "Calitatea video DASH preferată: ",
"generic_videos_count_0": "{{count}} videoclip",
"generic_videos_count_1": "{{count}} videoclipuri",

View File

@ -446,7 +446,7 @@
"Portuguese (Brazil)": "Португальский (Бразилия)",
"footer_source_code": "Исходный код",
"footer_original_source_code": "Оригинальный исходный код",
"footer_modfied_source_code": "Изменённый исходный код",
"footer_modified_source_code": "Изменённый исходный код",
"user_saved_playlists": "`x` сохранённых плейлистов",
"crash_page_search_issue": "поискали <a href=\"`x`\">похожую проблему на GitHub</a>",
"comments_points_count_0": "{{count}} плюс",

View File

@ -484,7 +484,7 @@
"next_steps_error_message": "Po tem moraš poskusiti: ",
"next_steps_error_message_go_to_youtube": "Pojdi na YouTube",
"footer_source_code": "Izvorna koda",
"footer_modfied_source_code": "Spremenjena izvorna koda",
"footer_modified_source_code": "Spremenjena izvorna koda",
"user_created_playlists": "`x` ustvarjenih seznamov predvajanja",
"adminprefs_modified_source_code_url_label": "URL do shrambe spremenjene izvorne kode",
"videoinfo_youTube_embed_link": "Vdelaj",

View File

@ -279,7 +279,7 @@
"search_filters_type_option_show": "Shfaqe",
"search_filters_duration_option_short": "E shkurtër (< 4 minuta)",
"search_filters_features_option_purchased": "Të blera",
"footer_modfied_source_code": "Kod burim i ndryshuar",
"footer_modified_source_code": "Kod burim i ndryshuar",
"adminprefs_modified_source_code_url_label": "URL e depos së ndryshuar të kodit burim",
"none": "asnjë",
"videoinfo_started_streaming_x_ago": "Filloi transmetimin `x` më parë",

View File

@ -308,7 +308,7 @@
"Haitian Creole": "Haićanski Kreolski",
"Somali": "Somalijski",
"Top": "Top",
"footer_modfied_source_code": "Izmenjeni izvorni kôd",
"footer_modified_source_code": "Izmenjeni izvorni kôd",
"preferences_category_subscription": "Podešavanja praćenja",
"preferences_annotations_subscribed_label": "Podrazumevano prikazati napomene za kanale koje pratite? ",
"preferences_max_results_label": "Broj video snimaka prikazanih u fidu: ",

View File

@ -186,7 +186,7 @@
"next_steps_error_message": "Након тога би требало да покушате да: ",
"footer_donate_page": "Донирај",
"footer_documentation": "Документација",
"footer_modfied_source_code": "Измењени изворни кôд",
"footer_modified_source_code": "Измењени изворни кôд",
"preferences_region_label": "Држава садржаја: ",
"preferences_category_misc": "Остала подешавања",
"User ID is a required field": "ID корисника је обавезно поље",

View File

@ -450,7 +450,7 @@
"generic_count_weeks_plural": "{{count}}veckor",
"videoinfo_watch_on_youTube": "Titta på YouTube",
"Music in this video": "Musik i denna video",
"footer_modfied_source_code": "Modifierad källkod",
"footer_modified_source_code": "Modifierad källkod",
"generic_button_rss": "RSS",
"preferences_quality_dash_option_4320p": "4320p",
"generic_count_hours": "{{count}}timme",

View File

@ -251,7 +251,7 @@
"next_steps_error_message_refresh": "புதுப்பிப்பு",
"next_steps_error_message_go_to_youtube": "YouTube க்குச் செல்லுங்கள்",
"footer_donate_page": "நன்கொடை",
"footer_modfied_source_code": "மாற்றியமைக்கப்பட்ட மூலக் குறியீடு",
"footer_modified_source_code": "மாற்றியமைக்கப்பட்ட மூலக் குறியீடு",
"adminprefs_modified_source_code_url_label": "மாற்றியமைக்கப்பட்ட மூலக் குறியீடு களஞ்சியத்திற்கு முகவரி",
"videoinfo_started_streaming_x_ago": "`X` முன்பு ச்ட்ரீமிங் செய்யத் தொடங்கியது",
"videoinfo_watch_on_youTube": "YouTube இல் பாருங்கள்",

View File

@ -355,7 +355,7 @@
"footer_documentation": "Belgelendirme",
"footer_source_code": "Kaynak Kodları",
"footer_original_source_code": "Orijinal Kaynak Kodları",
"footer_modfied_source_code": "Değiştirilmiş kaynak kodları",
"footer_modified_source_code": "Değiştirilmiş kaynak kodları",
"adminprefs_modified_source_code_url_label": "Değiştirilmiş Kaynak Kodları Deposunun URL'si",
"footer_donate_page": "Bağış Yap",
"preferences_region_label": "İçerik Ülkesi: ",

View File

@ -382,7 +382,7 @@
"footer_documentation": "Документація",
"footer_source_code": "Джерельний код",
"footer_original_source_code": "Оригінал джерельного коду",
"footer_modfied_source_code": "Змінений джерельний код",
"footer_modified_source_code": "Змінений джерельний код",
"adminprefs_modified_source_code_url_label": "URL-адреса репозиторію зміненого джерельного коду",
"none": "нема",
"videoinfo_started_streaming_x_ago": "Трансляцію розпочато `x` тому",

View File

@ -446,7 +446,7 @@
"crash_page_switch_instance": "Đã thử <a href=\"`x`\">dùng một phiên bản khác</a>",
"generic_count_weeks_0": "{{count}} tuần",
"videoinfo_watch_on_youTube": "Xem trên YouTube",
"footer_modfied_source_code": "Mã nguồn đã chỉnh sửa",
"footer_modified_source_code": "Mã nguồn đã chỉnh sửa",
"generic_button_rss": "RSS",
"generic_count_hours_0": "{{count}} giờ",
"French (auto-generated)": "Tiếng Pháp (được tạo tự động)",

View File

@ -370,7 +370,7 @@
"search_filters_duration_option_long": "长(多于 20 分钟)",
"footer_documentation": "文档",
"footer_source_code": "源代码",
"footer_modfied_source_code": "修改的源代码",
"footer_modified_source_code": "修改的源代码",
"adminprefs_modified_source_code_url_label": "更改的源代码仓库网址",
"footer_original_source_code": "原始源代码",
"footer_donate_page": "捐赠",

View File

@ -371,7 +371,7 @@
"footer_documentation": "文件",
"footer_source_code": "原始碼",
"footer_original_source_code": "原本的原始碼",
"footer_modfied_source_code": "修改後的原始碼",
"footer_modified_source_code": "修改後的原始碼",
"adminprefs_modified_source_code_url_label": "修改後的原始碼倉庫 URL",
"footer_donate_page": "捐款",
"preferences_region_label": "內容國家: ",

View File

@ -18,7 +18,7 @@ sudo systemctl start postgresql.service
sudo systemctl enable postgresql.service
#
# Create databse and user
# Create database and user
#
if [ "$interactive" = "true" ]; then
@ -51,7 +51,7 @@ if [ "$interactive" = "true" ]; then
echo " NOTICE "
echo "-------------"
echo
echo "Make sure that your postgreSQL's pg_hba.conf file contains the follwong"
echo "Make sure that your postgreSQL's pg_hba.conf file contains the following"
echo "lines before previous 'host' configurations:"
echo
echo "host invidious kemal 127.0.0.1/32 md5"

View File

@ -15,7 +15,7 @@ Spectator.describe Invidious::Search::Query do
# Query parsing
# -------------------
it "parses query with URL prameters (q)" do
it "parses query with URL parameters (q)" do
query = described_class.new(
HTTP::Params.parse("q=What+is+Love+10+hour&type=video&duration=long"),
Invidious::Search::Query::Type::Regular, nil
@ -33,7 +33,7 @@ Spectator.describe Invidious::Search::Query do
)
end
it "parses query with URL prameters (search_query)" do
it "parses query with URL parameters (search_query)" do
query = described_class.new(
HTTP::Params.parse("search_query=What+is+Love+10+hour&type=video&duration=long"),
Invidious::Search::Query::Type::Regular, nil

View File

@ -15,14 +15,14 @@ def text_to_parsed_content(text : String) : JSON::Any
line.scan(/https?:\/\/[^ ]*/).each do |url_match|
# Retrieve last node and update node without match
last_node = current_nodes[-1].as_h
splitted_last_node = last_node["text"].as_s.split(url_match[0])
last_node["text"] = JSON.parse(splitted_last_node[0].to_json)
split_last_node = last_node["text"].as_s.split(url_match[0])
last_node["text"] = JSON.parse(split_last_node[0].to_json)
current_nodes[-1] = JSON.parse(last_node.to_json)
# Create new node with match and navigation infos
current_node = {"text" => url_match[0], "navigationEndpoint" => {"urlEndpoint" => {"url" => url_match[0]}}}
current_nodes << (JSON.parse(current_node.to_json))
# If text remain after match create new simple node with text after match
after_node = {"text" => splitted_last_node.size > 1 ? splitted_last_node[1] : ""}
after_node = {"text" => split_last_node.size > 1 ? split_last_node[1] : ""}
current_nodes << (JSON.parse(after_node.to_json))
end

View File

@ -134,7 +134,7 @@ module Invidious::Comments
end
if cvm = node["commentViewModel"]?
# two commentViewModels for inital request
# two commentViewModels for initial request
# one commentViewModel when getting a replies to a comment
cvm = cvm["commentViewModel"] if cvm["commentViewModel"]?

View File

@ -133,7 +133,7 @@ module Invidious::Database::ChannelVideos
return PG_DB.query_all(request, ids, as: ChannelVideo)
end
def select_notfications(ucid : String, since : Time) : Array(ChannelVideo)
def select_notifications(ucid : String, since : Time) : Array(ChannelVideo)
request = <<-SQL
SELECT * FROM channel_videos
WHERE ucid = $1 AND published > $2

View File

@ -35,6 +35,6 @@ class VideoNotAvailableException < Exception
end
# Exception used to indicate that the JSON response from YT is missing
# some important informations, and that the query should be sent again.
# some important information, and that the query should be sent again.
class RetryOnceException < Exception
end

View File

@ -1,7 +1,7 @@
module Invidious::Frontend::SearchFilters
extend self
# Generate the search filters collapsable widget.
# Generate the search filters collapsible widget.
def generate(filters : Search::Filters, query : String, page : Int, locale : String) : String
return String.build(8000) do |str|
str << "<div id='filters'>\n"

View File

@ -49,7 +49,7 @@ class HTTP::Client
end
# Mute the ClientError exception raised when a connection is flushed.
# This happends when the connection is unexpectedly closed by the client.
# This happens when the connection is unexpectedly closed by the client.
#
class HTTP::Server::Response
class Output

View File

@ -101,7 +101,7 @@ def create_notification_stream(env, topics, connection_channel)
topics.try &.each do |topic|
case topic
when .match(/UC[A-Za-z0-9_-]{22}/)
Invidious::Database::ChannelVideos.select_notfications(topic, since_unix).each do |video|
Invidious::Database::ChannelVideos.select_notifications(topic, since_unix).each do |video|
response = JSON.parse(video.to_json(locale))
env.response.puts "id: #{id}"

View File

@ -31,7 +31,7 @@ module Invidious::Jobs
def self.start_all
JOBS.each do |job|
# Don't run the main rountine if the job is disabled by config
# Don't run the main routine if the job is disabled by config
next if job.disabled?
spawn { job.begin }

View File

@ -33,7 +33,7 @@ module Invidious::Routes::API::Manifest
end
# Proxy URLs for video playback on invidious.
# Other API clients can get the original URLs by omiting `local=true`.
# Other API clients can get the original URLs by omitting `local=true`.
manifest = response.body.gsub(/<BaseURL>[^<]+<\/BaseURL>/) do |baseurl|
url = baseurl.lchop("<BaseURL>").rchop("</BaseURL>")
url = HttpServer::Utils.proxy_video_url(url, absolute: true) if local
@ -74,7 +74,7 @@ module Invidious::Routes::API::Manifest
displayname = audio_track["displayName"]?.try &.as_s || "Unknown"
bitrate = fmt["bitrate"]
# Different representations of the same audio should be groupped into one AdaptationSet.
# Different representations of the same audio should be grouped into one AdaptationSet.
# However, most players don't support auto quality switching, so we have to trick them
# into providing a quality selector.
# See https://github.com/iv-org/invidious/issues/3074 for more details.

View File

@ -317,7 +317,7 @@ module Invidious::Search
# Initialize output variable
filters = Filters.new
# Get parameter, and check emptyness
# Get parameter, and check emptiness
search_params = params["sp"]?
if search_params.nil? || search_params.empty?

View File

@ -119,7 +119,7 @@
<i class="icon ion-logo-github"></i>
<% if CONFIG.modified_source_code_url %>
<a href="https://github.com/iv-org/invidious"><%= translate(locale, "footer_original_source_code") %></a>&nbsp;/
<a href="<%= CONFIG.modified_source_code_url %>"><%= translate(locale, "footer_modfied_source_code") %></a>
<a href="<%= CONFIG.modified_source_code_url %>"><%= translate(locale, "footer_modified_source_code") %></a>
<% else %>
<a href="https://github.com/iv-org/invidious"><%= translate(locale, "footer_source_code") %></a>
<% end %>

View File

@ -770,8 +770,8 @@ private module Parsers
#
# continuationItemRenderer contains various metadata ued to load more
# content (i.e when the user scrolls down). The interesting bit is the
# protobuf object known as the "continutation token". Previously, those
# were generated from sratch, but recent (as of 11/2022) Youtube changes
# protobuf object known as the "continuation token". Previously, those
# were generated from scratch, but recent (as of 11/2022) Youtube changes
# are forcing us to extract them from replies.
#
module ContinuationItemRendererParser