mirror of
https://gitea.invidious.io/iv-org/invidious-copy-2022-03-16.git
synced 2024-08-15 00:53:18 +00:00
Merge branch 'master' of https://github.com/omarroth/invidious
This commit is contained in:
commit
c0e73e71c5
7 changed files with 601 additions and 335 deletions
274
locales/eu.json
Normal file
274
locales/eu.json
Normal file
|
@ -0,0 +1,274 @@
|
||||||
|
{
|
||||||
|
"`x` subscribers": "",
|
||||||
|
"`x` videos": "",
|
||||||
|
"LIVE": "",
|
||||||
|
"Shared `x` ago": "",
|
||||||
|
"Unsubscribe": "",
|
||||||
|
"Subscribe": "Harpidetu",
|
||||||
|
"Login to subscribe to `x`": "",
|
||||||
|
"View channel on YouTube": "Ikusi kanala YouTuben",
|
||||||
|
"newest": "berrienak",
|
||||||
|
"oldest": "zaharrenak",
|
||||||
|
"popular": "ospetsuenak",
|
||||||
|
"Preview page": "Aurrebista orria",
|
||||||
|
"Next page": "Hurrengo orria",
|
||||||
|
"Clear watch history?": "Garbitu ikusitakoen historia?",
|
||||||
|
"Yes": "Bai",
|
||||||
|
"No": "Ez",
|
||||||
|
"Import and Export Data": "Datuak inportatu eta esportatu",
|
||||||
|
"Import": "Inportatu",
|
||||||
|
"Import Invidious data": "Invidiouseko datuak inportatu",
|
||||||
|
"Import YouTube subscriptions": "YouTubeko harpidetzak inportatu",
|
||||||
|
"Import FreeTube subscriptions (.db)": "FreeTubeko harpidetzak inportatu (.db)",
|
||||||
|
"Import NewPipe subscriptions (.json)": "NewPipeko harpidetzak inportatu (.json)",
|
||||||
|
"Import NewPipe data (.zip)": "NewPipeko datuak inportatu (.zip)",
|
||||||
|
"Export": "Esportatu",
|
||||||
|
"Export subscriptions as OPML": "Esportatu harpidetzak OPML bezala",
|
||||||
|
"Export subscriptions as OPML (for NewPipe & FreeTube)": "",
|
||||||
|
"Export data as JSON": "",
|
||||||
|
"Delete account?": "Kontua ezabatu?",
|
||||||
|
"History": "Historia",
|
||||||
|
"Previous page": "Aurreko orria",
|
||||||
|
"An alternative front-end to YouTube": "",
|
||||||
|
"JavaScript license information": "",
|
||||||
|
"source": "",
|
||||||
|
"Login": "",
|
||||||
|
"Login/Register": "",
|
||||||
|
"Login to Google": "",
|
||||||
|
"User ID:": "",
|
||||||
|
"Password:": "",
|
||||||
|
"Time (h:mm:ss):": "",
|
||||||
|
"Text CAPTCHA": "",
|
||||||
|
"Image CAPTCHA": "",
|
||||||
|
"Sign In": "",
|
||||||
|
"Register": "",
|
||||||
|
"Email:": "",
|
||||||
|
"Google verification code:": "",
|
||||||
|
"Preferences": "",
|
||||||
|
"Player preferences": "",
|
||||||
|
"Always loop: ": "",
|
||||||
|
"Autoplay: ": "",
|
||||||
|
"Autoplay next video: ": "",
|
||||||
|
"Listen by default: ": "",
|
||||||
|
"Default speed: ": "",
|
||||||
|
"Preferred video quality: ": "",
|
||||||
|
"Player volume: ": "",
|
||||||
|
"Default comments: ": "",
|
||||||
|
"Default captions: ": "",
|
||||||
|
"Fallback captions: ": "",
|
||||||
|
"Show related videos? ": "",
|
||||||
|
"Visual preferences": "",
|
||||||
|
"Dark mode: ": "",
|
||||||
|
"Thin mode: ": "",
|
||||||
|
"Subscription preferences": "",
|
||||||
|
"Redirect homepage to feed: ": "",
|
||||||
|
"Number of videos shown in feed: ": "",
|
||||||
|
"Sort videos by: ": "",
|
||||||
|
"published": "",
|
||||||
|
"published - reverse": "",
|
||||||
|
"alphabetically": "",
|
||||||
|
"alphabetically - reverse": "",
|
||||||
|
"channel name": "",
|
||||||
|
"channel name - reverse": "",
|
||||||
|
"Only show latest video from channel: ": "",
|
||||||
|
"Only show latest unwatched video from channel: ": "",
|
||||||
|
"Only show unwatched: ": "",
|
||||||
|
"Only show notifications (if there are any): ": "",
|
||||||
|
"Data preferences": "",
|
||||||
|
"Clear watch history": "",
|
||||||
|
"Import/Export data": "",
|
||||||
|
"Manage subscriptions": "",
|
||||||
|
"Watch history": "",
|
||||||
|
"Delete account": "",
|
||||||
|
"Save preferences": "",
|
||||||
|
"Subscription manager": "",
|
||||||
|
"`x` subscriptions": "",
|
||||||
|
"Import/Export": "",
|
||||||
|
"unsubscribe": "",
|
||||||
|
"Subscriptions": "",
|
||||||
|
"`x` unseen notifications": "",
|
||||||
|
"search": "",
|
||||||
|
"Sign out": "",
|
||||||
|
"Released under the AGPLv3 by Omar Roth.": "",
|
||||||
|
"Source available here.": "",
|
||||||
|
"View JavaScript license information.": "",
|
||||||
|
"Trending": "",
|
||||||
|
"Watch video on Youtube": "",
|
||||||
|
"Genre: ": "",
|
||||||
|
"License: ": "",
|
||||||
|
"Family friendly? ": "",
|
||||||
|
"Wilson score: ": "",
|
||||||
|
"Engagement: ": "",
|
||||||
|
"Whitelisted regions: ": "",
|
||||||
|
"Blacklisted regions: ": "",
|
||||||
|
"Shared `x`": "",
|
||||||
|
"Hi! Looks like you have JavaScript disabled. Click here to view comments, keep in mind it may take a bit longer to load.": "",
|
||||||
|
"View YouTube comments": "",
|
||||||
|
"View more comments on Reddit": "",
|
||||||
|
"View `x` comments": "",
|
||||||
|
"View Reddit comments": "",
|
||||||
|
"Hide replies": "",
|
||||||
|
"Show replies": "",
|
||||||
|
"Incorrect password": "",
|
||||||
|
"Quota exceeded, try again in a few hours": "",
|
||||||
|
"Unable to login, make sure two-factor authentication (Authenticator or SMS) is enabled.": "",
|
||||||
|
"Invalid TFA code": "",
|
||||||
|
"Login failed. This may be because two-factor authentication is not enabled on your account.": "",
|
||||||
|
"Invalid answer": "",
|
||||||
|
"Invalid CAPTCHA": "",
|
||||||
|
"CAPTCHA is a required field": "",
|
||||||
|
"User ID is a required field": "",
|
||||||
|
"Password is a required field": "",
|
||||||
|
"Invalid username or password": "",
|
||||||
|
"Please sign in using 'Sign in with Google'": "",
|
||||||
|
"Password cannot be empty": "",
|
||||||
|
"Password cannot be longer than 55 characters": "",
|
||||||
|
"Please sign in": "",
|
||||||
|
"Invidious Private Feed for `x`": "",
|
||||||
|
"channel:`x`": "",
|
||||||
|
"Deleted or invalid channel": "",
|
||||||
|
"This channel does not exist.": "",
|
||||||
|
"Could not get channel info.": "",
|
||||||
|
"Could not fetch comments": "",
|
||||||
|
"View `x` replies": "",
|
||||||
|
"`x` ago": "",
|
||||||
|
"Load more": "",
|
||||||
|
"`x` points": "",
|
||||||
|
"Could not create mix.": "",
|
||||||
|
"Playlist is empty": "",
|
||||||
|
"Invalid playlist.": "",
|
||||||
|
"Playlist does not exist.": "",
|
||||||
|
"Could not pull trending pages.": "",
|
||||||
|
"Hidden field \"challenge\" is a required field": "",
|
||||||
|
"Hidden field \"token\" is a required field": "",
|
||||||
|
"Invalid challenge": "",
|
||||||
|
"Invalid token": "",
|
||||||
|
"Invalid user": "",
|
||||||
|
"Token is expired, please try again": "",
|
||||||
|
"English": "",
|
||||||
|
"English (auto-generated)": "",
|
||||||
|
"Afrikaans": "",
|
||||||
|
"Albanian": "",
|
||||||
|
"Amharic": "",
|
||||||
|
"Arabic": "",
|
||||||
|
"Armenian": "",
|
||||||
|
"Azerbaijani": "",
|
||||||
|
"Bangla": "",
|
||||||
|
"Basque": "",
|
||||||
|
"Belarusian": "",
|
||||||
|
"Bosnian": "",
|
||||||
|
"Bulgarian": "",
|
||||||
|
"Burmese": "",
|
||||||
|
"Catalan": "",
|
||||||
|
"Cebuano": "",
|
||||||
|
"Chinese (Simplified)": "",
|
||||||
|
"Chinese (Traditional)": "",
|
||||||
|
"Corsican": "",
|
||||||
|
"Croatian": "",
|
||||||
|
"Czech": "",
|
||||||
|
"Danish": "",
|
||||||
|
"Dutch": "",
|
||||||
|
"Esperanto": "",
|
||||||
|
"Estonian": "",
|
||||||
|
"Filipino": "",
|
||||||
|
"Finnish": "",
|
||||||
|
"French": "",
|
||||||
|
"Galician": "",
|
||||||
|
"Georgian": "",
|
||||||
|
"German": "",
|
||||||
|
"Greek": "",
|
||||||
|
"Gujarati": "",
|
||||||
|
"Haitian Creole": "",
|
||||||
|
"Hausa": "",
|
||||||
|
"Hawaiian": "",
|
||||||
|
"Hebrew": "",
|
||||||
|
"Hindi": "",
|
||||||
|
"Hmong": "",
|
||||||
|
"Hungarian": "",
|
||||||
|
"Icelandic": "",
|
||||||
|
"Igbo": "",
|
||||||
|
"Indonesian": "",
|
||||||
|
"Irish": "",
|
||||||
|
"Italian": "",
|
||||||
|
"Japanese": "",
|
||||||
|
"Javanese": "",
|
||||||
|
"Kannada": "",
|
||||||
|
"Kazakh": "",
|
||||||
|
"Khmer": "",
|
||||||
|
"Korean": "",
|
||||||
|
"Kurdish": "",
|
||||||
|
"Kyrgyz": "",
|
||||||
|
"Lao": "",
|
||||||
|
"Latin": "",
|
||||||
|
"Latvian": "",
|
||||||
|
"Lithuanian": "",
|
||||||
|
"Luxembourgish": "",
|
||||||
|
"Macedonian": "",
|
||||||
|
"Malagasy": "",
|
||||||
|
"Malay": "",
|
||||||
|
"Malayalam": "",
|
||||||
|
"Maltese": "",
|
||||||
|
"Maori": "",
|
||||||
|
"Marathi": "",
|
||||||
|
"Mongolian": "",
|
||||||
|
"Nepali": "",
|
||||||
|
"Norwegian": "",
|
||||||
|
"Nyanja": "",
|
||||||
|
"Pashto": "",
|
||||||
|
"Persian": "",
|
||||||
|
"Polish": "",
|
||||||
|
"Portuguese": "",
|
||||||
|
"Punjabi": "",
|
||||||
|
"Romanian": "",
|
||||||
|
"Russian": "",
|
||||||
|
"Samoan": "",
|
||||||
|
"Scottish Gaelic": "",
|
||||||
|
"Serbian": "",
|
||||||
|
"Shona": "",
|
||||||
|
"Sindhi": "",
|
||||||
|
"Sinhala": "",
|
||||||
|
"Slovak": "",
|
||||||
|
"Slovenian": "",
|
||||||
|
"Somali": "",
|
||||||
|
"Southern Sotho": "",
|
||||||
|
"Spanish": "",
|
||||||
|
"Spanish (Latin America)": "",
|
||||||
|
"Sundanese": "",
|
||||||
|
"Swahili": "",
|
||||||
|
"Swedish": "",
|
||||||
|
"Tajik": "",
|
||||||
|
"Tamil": "",
|
||||||
|
"Telugu": "",
|
||||||
|
"Thai": "",
|
||||||
|
"Turkish": "",
|
||||||
|
"Ukrainian": "",
|
||||||
|
"Urdu": "",
|
||||||
|
"Uzbek": "",
|
||||||
|
"Vietnamese": "",
|
||||||
|
"Welsh": "",
|
||||||
|
"Western Frisian": "",
|
||||||
|
"Xhosa": "",
|
||||||
|
"Yiddish": "",
|
||||||
|
"Yoruba": "",
|
||||||
|
"Zulu": "",
|
||||||
|
"`x` years": "",
|
||||||
|
"`x` months": "",
|
||||||
|
"`x` weeks": "",
|
||||||
|
"`x` days": "",
|
||||||
|
"`x` hours": "",
|
||||||
|
"`x` minutes": "",
|
||||||
|
"`x` seconds": "",
|
||||||
|
"Fallback comments: ": "",
|
||||||
|
"Popular": "",
|
||||||
|
"Top": "",
|
||||||
|
"About": "",
|
||||||
|
"Rating: ": "",
|
||||||
|
"Language: ": "",
|
||||||
|
"Default": "",
|
||||||
|
"Music": "",
|
||||||
|
"Gaming": "",
|
||||||
|
"News": "",
|
||||||
|
"Movies": "",
|
||||||
|
"Download": "",
|
||||||
|
"Download as: ": ""
|
||||||
|
}
|
556
locales/ru.json
556
locales/ru.json
|
@ -1,280 +1,280 @@
|
||||||
{
|
{
|
||||||
"`x` subscribers": "`x` подписчиков",
|
"`x` subscribers": "`x` подписчиков",
|
||||||
"`x` videos": "`x` видео",
|
"`x` videos": "`x` видео",
|
||||||
"LIVE": "ПРЯМОЙ ЭФИР",
|
"LIVE": "ПРЯМОЙ ЭФИР",
|
||||||
"Shared `x` ago": "Опубликовано `x` назад",
|
"Shared `x` ago": "Опубликовано `x` назад",
|
||||||
"Unsubscribe": "Отписаться",
|
"Unsubscribe": "Отписаться",
|
||||||
"Subscribe": "Подписаться",
|
"Subscribe": "Подписаться",
|
||||||
"Login to subscribe to `x`": "Войти, чтобы подписаться на `x`",
|
"Login to subscribe to `x`": "Войти, чтобы подписаться на `x`",
|
||||||
"View channel on YouTube": "Канал на YouTube",
|
"View channel on YouTube": "Канал на YouTube",
|
||||||
"newest": "новые",
|
"newest": "новые",
|
||||||
"oldest": "старые",
|
"oldest": "старые",
|
||||||
"popular": "популярные",
|
"popular": "популярные",
|
||||||
"Preview page": "Предварительный просмотр",
|
"Preview page": "Предварительный просмотр",
|
||||||
"Next page": "Следующая страница",
|
"Next page": "Следующая страница",
|
||||||
"Clear watch history?": "Очистить историю просмотров?",
|
"Clear watch history?": "Очистить историю просмотров?",
|
||||||
"Yes": "Да",
|
"Yes": "Да",
|
||||||
"No": "Нет",
|
"No": "Нет",
|
||||||
"Import and Export Data": "Импорт и экспорт данных",
|
"Import and Export Data": "Импорт и экспорт данных",
|
||||||
"Import": "Импорт",
|
"Import": "Импорт",
|
||||||
"Import Invidious data": "Импортировать данные Invidious",
|
"Import Invidious data": "Импортировать данные Invidious",
|
||||||
"Import YouTube subscriptions": "Импортировать YouTube подписки",
|
"Import YouTube subscriptions": "Импортировать YouTube подписки",
|
||||||
"Import FreeTube subscriptions (.db)": "Импортировать FreeTube подписки (.db)",
|
"Import FreeTube subscriptions (.db)": "Импортировать FreeTube подписки (.db)",
|
||||||
"Import NewPipe subscriptions (.json)": "Импортировать NewPipe подписки (.json)",
|
"Import NewPipe subscriptions (.json)": "Импортировать NewPipe подписки (.json)",
|
||||||
"Import NewPipe data (.zip)": "Импортировать данные NewPipe (.zip)",
|
"Import NewPipe data (.zip)": "Импортировать данные NewPipe (.zip)",
|
||||||
"Export": "Экспорт",
|
"Export": "Экспорт",
|
||||||
"Export subscriptions as OPML": "Экспортировать подписки в OPML",
|
"Export subscriptions as OPML": "Экспортировать подписки в OPML",
|
||||||
"Export subscriptions as OPML (for NewPipe & FreeTube)": "Экспортировать подписки в OPML (для NewPipe и FreeTube)",
|
"Export subscriptions as OPML (for NewPipe & FreeTube)": "Экспортировать подписки в OPML (для NewPipe и FreeTube)",
|
||||||
"Export data as JSON": "Экспортировать данные в JSON",
|
"Export data as JSON": "Экспортировать данные в JSON",
|
||||||
"Delete account?": "Удалить аккаунт?",
|
"Delete account?": "Удалить аккаунт?",
|
||||||
"History": "История",
|
"History": "История",
|
||||||
"Previous page": "Предыдущая страница",
|
"Previous page": "Предыдущая страница",
|
||||||
"An alternative front-end to YouTube": "Альтернативный фронтенд для YouTube",
|
"An alternative front-end to YouTube": "Альтернативный фронтенд для YouTube",
|
||||||
"JavaScript license information": "Лицензии JavaScript",
|
"JavaScript license information": "Лицензии JavaScript",
|
||||||
"source": "источник",
|
"source": "источник",
|
||||||
"Login": "Войти",
|
"Login": "Войти",
|
||||||
"Login/Register": "Войти/Регистрация",
|
"Login/Register": "Войти/Регистрация",
|
||||||
"Login to Google": "Войти через Google",
|
"Login to Google": "Войти через Google",
|
||||||
"User ID:": "ID пользователя:",
|
"User ID:": "ID пользователя:",
|
||||||
"Password:": "Пароль:",
|
"Password:": "Пароль:",
|
||||||
"Time (h:mm:ss):": "Время (ч:мм:сс):",
|
"Time (h:mm:ss):": "Время (ч:мм:сс):",
|
||||||
"Text CAPTCHA": "Текст капчи",
|
"Text CAPTCHA": "Текст капчи",
|
||||||
"Image CAPTCHA": "Изображение капчи",
|
"Image CAPTCHA": "Изображение капчи",
|
||||||
"Sign In": "Войти",
|
"Sign In": "Войти",
|
||||||
"Register": "Регистрация",
|
"Register": "Регистрация",
|
||||||
"Email:": "Эл. почта:",
|
"Email:": "Эл. почта:",
|
||||||
"Google verification code:": "Код подтверждения Google:",
|
"Google verification code:": "Код подтверждения Google:",
|
||||||
"Preferences": "Настройки",
|
"Preferences": "Настройки",
|
||||||
"Player preferences": "Настройки проигрывателя",
|
"Player preferences": "Настройки проигрывателя",
|
||||||
"Always loop: ": "Всегда повторять: ",
|
"Always loop: ": "Всегда повторять: ",
|
||||||
"Autoplay: ": "Автовоспроизведение: ",
|
"Autoplay: ": "Автовоспроизведение: ",
|
||||||
"Autoplay next video: ": "Автовоспроизведение следующего видео: ",
|
"Autoplay next video: ": "Автовоспроизведение следующего видео: ",
|
||||||
"Listen by default: ": "Режим \"только аудио\" по-умолчанию: ",
|
"Listen by default: ": "Режим \"только аудио\" по-умолчанию: ",
|
||||||
"Default speed: ": "Скорость по-умолчанию: ",
|
"Default speed: ": "Скорость по-умолчанию: ",
|
||||||
"Preferred video quality: ": "Предпочтительное качество видео: ",
|
"Preferred video quality: ": "Предпочтительное качество видео: ",
|
||||||
"Player volume: ": "Громкость воспроизведения: ",
|
"Player volume: ": "Громкость воспроизведения: ",
|
||||||
"Default comments: ": "Источник комментариев: ",
|
"Default comments: ": "Источник комментариев: ",
|
||||||
"youtube": "YouTube",
|
"youtube": "YouTube",
|
||||||
"reddit": "Reddit",
|
"reddit": "Reddit",
|
||||||
"Default captions: ": "Субтитры по-умолчанию: ",
|
"Default captions: ": "Субтитры по-умолчанию: ",
|
||||||
"Fallback captions: ": "Резервные субтитры: ",
|
"Fallback captions: ": "Резервные субтитры: ",
|
||||||
"Show related videos? ": "Показывать похожие видео? ",
|
"Show related videos? ": "Показывать похожие видео? ",
|
||||||
"Visual preferences": "Визуальные настройки",
|
"Visual preferences": "Визуальные настройки",
|
||||||
"Dark mode: ": "Темная тема: ",
|
"Dark mode: ": "Темная тема: ",
|
||||||
"Thin mode: ": "Облегченный режим: ",
|
"Thin mode: ": "Облегченный режим: ",
|
||||||
"Subscription preferences": "Настройки подписок",
|
"Subscription preferences": "Настройки подписок",
|
||||||
"Redirect homepage to feed: ": "Отображать ленту вместо главной страницы: ",
|
"Redirect homepage to feed: ": "Отображать ленту вместо главной страницы: ",
|
||||||
"Number of videos shown in feed: ": "Число видео в ленте: ",
|
"Number of videos shown in feed: ": "Число видео в ленте: ",
|
||||||
"Sort videos by: ": "Сортировать видео по: ",
|
"Sort videos by: ": "Сортировать видео по: ",
|
||||||
"published": "дате публикации",
|
"published": "дате публикации",
|
||||||
"published - reverse": "дате - обратный порядок",
|
"published - reverse": "дате - обратный порядок",
|
||||||
"alphabetically": "алфавиту",
|
"alphabetically": "алфавиту",
|
||||||
"alphabetically - reverse": "алфавиту - обратный порядок",
|
"alphabetically - reverse": "алфавиту - обратный порядок",
|
||||||
"channel name": "имени канала",
|
"channel name": "имени канала",
|
||||||
"channel name - reverse": "имени канала - обратный порядок",
|
"channel name - reverse": "имени канала - обратный порядок",
|
||||||
"Only show latest video from channel: ": "Отображать только последние видео с каждого канала: ",
|
"Only show latest video from channel: ": "Отображать только последние видео с каждого канала: ",
|
||||||
"Only show latest unwatched video from channel: ": "Отображать только непросмотренные видео с каждого канала: ",
|
"Only show latest unwatched video from channel: ": "Отображать только непросмотренные видео с каждого канала: ",
|
||||||
"Only show unwatched: ": "Отображать только непросмотренные видео: ",
|
"Only show unwatched: ": "Отображать только непросмотренные видео: ",
|
||||||
"Only show notifications (if there are any): ": "Отображать только оповещения (если есть): ",
|
"Only show notifications (if there are any): ": "Отображать только оповещения (если есть): ",
|
||||||
"Data preferences": "Настройки данных",
|
"Data preferences": "Настройки данных",
|
||||||
"Clear watch history": "Очистить историю просмотра",
|
"Clear watch history": "Очистить историю просмотра",
|
||||||
"Import/Export data": "Импорт/Экспорт данных",
|
"Import/Export data": "Импорт/Экспорт данных",
|
||||||
"Manage subscriptions": "Управление подписками",
|
"Manage subscriptions": "Управление подписками",
|
||||||
"Watch history": "История просмотров",
|
"Watch history": "История просмотров",
|
||||||
"Delete account": "Удалить аккаунт",
|
"Delete account": "Удалить аккаунт",
|
||||||
"Save preferences": "Сохранить настройки",
|
"Save preferences": "Сохранить настройки",
|
||||||
"Subscription manager": "Менеджер подписок",
|
"Subscription manager": "Менеджер подписок",
|
||||||
"`x` subscriptions": "`x` подписок",
|
"`x` subscriptions": "`x` подписок",
|
||||||
"Import/Export": "Импорт/Экспорт",
|
"Import/Export": "Импорт/Экспорт",
|
||||||
"unsubscribe": "отписаться",
|
"unsubscribe": "отписаться",
|
||||||
"Subscriptions": "Подписки",
|
"Subscriptions": "Подписки",
|
||||||
"`x` unseen notifications": "`x` новых оповещений",
|
"`x` unseen notifications": "`x` новых оповещений",
|
||||||
"search": "поиск",
|
"search": "поиск",
|
||||||
"Sign out": "Выйти",
|
"Sign out": "Выйти",
|
||||||
"Released under the AGPLv3 by Omar Roth.": "Распространяется Omar Roth по AGPLv3.",
|
"Released under the AGPLv3 by Omar Roth.": "Распространяется Omar Roth по AGPLv3.",
|
||||||
"Source available here.": "Исходный код доступен здесь.",
|
"Source available here.": "Исходный код доступен здесь.",
|
||||||
"Liberapay: ": "Liberapay: ",
|
"Liberapay: ": "Liberapay: ",
|
||||||
"Patreon: ": "Patreon: ",
|
"Patreon: ": "Patreon: ",
|
||||||
"BTC: ": "BTC: ",
|
"BTC: ": "BTC: ",
|
||||||
"BCH: ": "BCH: ",
|
"BCH: ": "BCH: ",
|
||||||
"View JavaScript license information.": "Посмотреть лицензии JavaScript кода.",
|
"View JavaScript license information.": "Посмотреть лицензии JavaScript кода.",
|
||||||
"Trending": "В тренде",
|
"Trending": "В тренде",
|
||||||
"Watch video on Youtube": "Смотреть на YouTube",
|
"Watch video on Youtube": "Смотреть на YouTube",
|
||||||
"Genre: ": "Жанр: ",
|
"Genre: ": "Жанр: ",
|
||||||
"License: ": "Лицензия: ",
|
"License: ": "Лицензия: ",
|
||||||
"Family friendly? ": "Семейный просмотр: ",
|
"Family friendly? ": "Семейный просмотр: ",
|
||||||
"Wilson score: ": "Рейтинг Вильсона: ",
|
"Wilson score: ": "Рейтинг Вильсона: ",
|
||||||
"Engagement: ": "Вовлеченность: ",
|
"Engagement: ": "Вовлеченность: ",
|
||||||
"Whitelisted regions: ": "Доступно для: ",
|
"Whitelisted regions: ": "Доступно для: ",
|
||||||
"Blacklisted regions: ": "Недоступно для: ",
|
"Blacklisted regions: ": "Недоступно для: ",
|
||||||
"Shared `x`": "Опубликовано `x`",
|
"Shared `x`": "Опубликовано `x`",
|
||||||
"Hi! Looks like you have JavaScript disabled. Click here to view comments, keep in mind it may take a bit longer to load.": "Похоже, что у Вас отключен JavaScript. Нажмите сюда, чтобы увидеть комментарии (учтите, что они могут загружаться дольше).",
|
"Hi! Looks like you have JavaScript disabled. Click here to view comments, keep in mind it may take a bit longer to load.": "Похоже, что у Вас отключен JavaScript. Нажмите сюда, чтобы увидеть комментарии (учтите, что они могут загружаться дольше).",
|
||||||
"View YouTube comments": "Смотреть комментарии с YouTube",
|
"View YouTube comments": "Смотреть комментарии с YouTube",
|
||||||
"View more comments on Reddit": "Больше комментариев на Reddit",
|
"View more comments on Reddit": "Больше комментариев на Reddit",
|
||||||
"View `x` comments": "Показать `x` комментариев",
|
"View `x` comments": "Показать `x` комментариев",
|
||||||
"View Reddit comments": "Смотреть комментарии с Reddit",
|
"View Reddit comments": "Смотреть комментарии с Reddit",
|
||||||
"Hide replies": "Скрыть ответы",
|
"Hide replies": "Скрыть ответы",
|
||||||
"Show replies": "Показать ответы",
|
"Show replies": "Показать ответы",
|
||||||
"Incorrect password": "Неправильный пароль",
|
"Incorrect password": "Неправильный пароль",
|
||||||
"Quota exceeded, try again in a few hours": "Превышена квота, попробуйте снова через несколько часов",
|
"Quota exceeded, try again in a few hours": "Превышена квота, попробуйте снова через несколько часов",
|
||||||
"Unable to login, make sure two-factor authentication (Authenticator or SMS) is enabled.": "Вход не выполнен, проверьте, не включена ли двухфакторная аутентификация.",
|
"Unable to login, make sure two-factor authentication (Authenticator or SMS) is enabled.": "Вход не выполнен, проверьте, не включена ли двухфакторная аутентификация.",
|
||||||
"Invalid TFA code": "Неправильный TFA код",
|
"Invalid TFA code": "Неправильный TFA код",
|
||||||
"Login failed. This may be because two-factor authentication is not enabled on your account.": "Не удалось войти. Это может быть из-за того, что в вашем аккаунте не включена двухфакторная аутентификация.",
|
"Login failed. This may be because two-factor authentication is not enabled on your account.": "Не удалось войти. Это может быть из-за того, что в вашем аккаунте не включена двухфакторная аутентификация.",
|
||||||
"Invalid answer": "Неверный ответ",
|
"Invalid answer": "Неверный ответ",
|
||||||
"Invalid CAPTCHA": "Неверная капча",
|
"Invalid CAPTCHA": "Неверная капча",
|
||||||
"CAPTCHA is a required field": "Необходимо ввести капчу",
|
"CAPTCHA is a required field": "Необходимо ввести капчу",
|
||||||
"User ID is a required field": "Необходимо ввести идентификатор пользователя",
|
"User ID is a required field": "Необходимо ввести идентификатор пользователя",
|
||||||
"Password is a required field": "Необходимо ввести пароль",
|
"Password is a required field": "Необходимо ввести пароль",
|
||||||
"Invalid username or password": "Недопустимый пароль или имя пользователя",
|
"Invalid username or password": "Недопустимый пароль или имя пользователя",
|
||||||
"Please sign in using 'Sign in with Google'": "Пожалуйста войдите через Google",
|
"Please sign in using 'Sign in with Google'": "Пожалуйста войдите через Google",
|
||||||
"Password cannot be empty": "Пароль не может быть пустым",
|
"Password cannot be empty": "Пароль не может быть пустым",
|
||||||
"Password cannot be longer than 55 characters": "Пароль не может быть длиннее 55 символов",
|
"Password cannot be longer than 55 characters": "Пароль не может быть длиннее 55 символов",
|
||||||
"Please sign in": "Пожалуйста, войдите",
|
"Please sign in": "Пожалуйста, войдите",
|
||||||
"Invidious Private Feed for `x`": "Приватная лента Invidious для `x`",
|
"Invidious Private Feed for `x`": "Приватная лента Invidious для `x`",
|
||||||
"channel:`x`": "канал: `x`",
|
"channel:`x`": "канал: `x`",
|
||||||
"Deleted or invalid channel": "Канал удален или не найден",
|
"Deleted or invalid channel": "Канал удален или не найден",
|
||||||
"This channel does not exist.": "Такой канал не существует.",
|
"This channel does not exist.": "Такой канал не существует.",
|
||||||
"Could not get channel info.": "Невозможно получить информацию о канале.",
|
"Could not get channel info.": "Невозможно получить информацию о канале.",
|
||||||
"Could not fetch comments": "Невозможно получить комментарии",
|
"Could not fetch comments": "Невозможно получить комментарии",
|
||||||
"View `x` replies": "Показать `x` ответов",
|
"View `x` replies": "Показать `x` ответов",
|
||||||
"`x` ago": "`x` назад",
|
"`x` ago": "`x` назад",
|
||||||
"Load more": "Загрузить больше",
|
"Load more": "Загрузить больше",
|
||||||
"`x` points": "`x` очков",
|
"`x` points": "`x` очков",
|
||||||
"Could not create mix.": "Невозможно создать \"микс\".",
|
"Could not create mix.": "Невозможно создать \"микс\".",
|
||||||
"Playlist is empty": "Плейлист пуст",
|
"Playlist is empty": "Плейлист пуст",
|
||||||
"Invalid playlist.": "Некорректный плейлист.",
|
"Invalid playlist.": "Некорректный плейлист.",
|
||||||
"Playlist does not exist.": "Плейлист не существует.",
|
"Playlist does not exist.": "Плейлист не существует.",
|
||||||
"Could not pull trending pages.": "Невозможно получить страницы \"в тренде\".",
|
"Could not pull trending pages.": "Невозможно получить страницы \"в тренде\".",
|
||||||
"Hidden field \"challenge\" is a required field": "Необходимо заполнить скрытое поле \"challenge\"",
|
"Hidden field \"challenge\" is a required field": "Необходимо заполнить скрытое поле \"challenge\"",
|
||||||
"Hidden field \"token\" is a required field": "Необходимо заполнить скрытое поле \"токен\"",
|
"Hidden field \"token\" is a required field": "Необходимо заполнить скрытое поле \"токен\"",
|
||||||
"Invalid challenge": "Неправильный ответ в \"challenge\"",
|
"Invalid challenge": "Неправильный ответ в \"challenge\"",
|
||||||
"Invalid token": "Неправильный токен",
|
"Invalid token": "Неправильный токен",
|
||||||
"Invalid user": "Недопустимое имя пользователя",
|
"Invalid user": "Недопустимое имя пользователя",
|
||||||
"Token is expired, please try again": "Срок действия токена истек, попробуйте позже",
|
"Token is expired, please try again": "Срок действия токена истек, попробуйте позже",
|
||||||
"English": "Английский",
|
"English": "Английский",
|
||||||
"English (auto-generated)": "Английский (созданы автоматически)",
|
"English (auto-generated)": "Английский (созданы автоматически)",
|
||||||
"Afrikaans": "",
|
"Afrikaans": "Африкаанс",
|
||||||
"Albanian": "",
|
"Albanian": "Албанский",
|
||||||
"Amharic": "",
|
"Amharic": "Амхарский",
|
||||||
"Arabic": "",
|
"Arabic": "Арабский",
|
||||||
"Armenian": "",
|
"Armenian": "Армянский",
|
||||||
"Azerbaijani": "",
|
"Azerbaijani": "Азербайджанский",
|
||||||
"Bangla": "",
|
"Bangla": "",
|
||||||
"Basque": "",
|
"Basque": "",
|
||||||
"Belarusian": "",
|
"Belarusian": "",
|
||||||
"Bosnian": "",
|
"Bosnian": "",
|
||||||
"Bulgarian": "",
|
"Bulgarian": "",
|
||||||
"Burmese": "",
|
"Burmese": "",
|
||||||
"Catalan": "",
|
"Catalan": "",
|
||||||
"Cebuano": "",
|
"Cebuano": "",
|
||||||
"Chinese (Simplified)": "",
|
"Chinese (Simplified)": "",
|
||||||
"Chinese (Traditional)": "",
|
"Chinese (Traditional)": "",
|
||||||
"Corsican": "",
|
"Corsican": "",
|
||||||
"Croatian": "",
|
"Croatian": "",
|
||||||
"Czech": "",
|
"Czech": "",
|
||||||
"Danish": "",
|
"Danish": "",
|
||||||
"Dutch": "",
|
"Dutch": "",
|
||||||
"Esperanto": "",
|
"Esperanto": "",
|
||||||
"Estonian": "",
|
"Estonian": "",
|
||||||
"Filipino": "",
|
"Filipino": "",
|
||||||
"Finnish": "",
|
"Finnish": "",
|
||||||
"French": "",
|
"French": "",
|
||||||
"Galician": "",
|
"Galician": "",
|
||||||
"Georgian": "",
|
"Georgian": "",
|
||||||
"German": "",
|
"German": "",
|
||||||
"Greek": "",
|
"Greek": "",
|
||||||
"Gujarati": "",
|
"Gujarati": "",
|
||||||
"Haitian Creole": "",
|
"Haitian Creole": "",
|
||||||
"Hausa": "",
|
"Hausa": "",
|
||||||
"Hawaiian": "",
|
"Hawaiian": "",
|
||||||
"Hebrew": "",
|
"Hebrew": "",
|
||||||
"Hindi": "",
|
"Hindi": "",
|
||||||
"Hmong": "",
|
"Hmong": "",
|
||||||
"Hungarian": "",
|
"Hungarian": "",
|
||||||
"Icelandic": "",
|
"Icelandic": "",
|
||||||
"Igbo": "",
|
"Igbo": "",
|
||||||
"Indonesian": "",
|
"Indonesian": "",
|
||||||
"Irish": "",
|
"Irish": "",
|
||||||
"Italian": "",
|
"Italian": "",
|
||||||
"Japanese": "",
|
"Japanese": "",
|
||||||
"Javanese": "",
|
"Javanese": "",
|
||||||
"Kannada": "",
|
"Kannada": "",
|
||||||
"Kazakh": "",
|
"Kazakh": "",
|
||||||
"Khmer": "",
|
"Khmer": "",
|
||||||
"Korean": "",
|
"Korean": "",
|
||||||
"Kurdish": "",
|
"Kurdish": "",
|
||||||
"Kyrgyz": "",
|
"Kyrgyz": "",
|
||||||
"Lao": "",
|
"Lao": "",
|
||||||
"Latin": "",
|
"Latin": "",
|
||||||
"Latvian": "",
|
"Latvian": "",
|
||||||
"Lithuanian": "",
|
"Lithuanian": "",
|
||||||
"Luxembourgish": "",
|
"Luxembourgish": "",
|
||||||
"Macedonian": "",
|
"Macedonian": "",
|
||||||
"Malagasy": "",
|
"Malagasy": "",
|
||||||
"Malay": "",
|
"Malay": "",
|
||||||
"Malayalam": "",
|
"Malayalam": "",
|
||||||
"Maltese": "",
|
"Maltese": "",
|
||||||
"Maori": "",
|
"Maori": "",
|
||||||
"Marathi": "",
|
"Marathi": "",
|
||||||
"Mongolian": "",
|
"Mongolian": "",
|
||||||
"Nepali": "",
|
"Nepali": "",
|
||||||
"Norwegian": "",
|
"Norwegian": "",
|
||||||
"Nyanja": "",
|
"Nyanja": "",
|
||||||
"Pashto": "",
|
"Pashto": "",
|
||||||
"Persian": "",
|
"Persian": "",
|
||||||
"Polish": "",
|
"Polish": "",
|
||||||
"Portuguese": "",
|
"Portuguese": "",
|
||||||
"Punjabi": "",
|
"Punjabi": "",
|
||||||
"Romanian": "",
|
"Romanian": "",
|
||||||
"Russian": "",
|
"Russian": "",
|
||||||
"Samoan": "",
|
"Samoan": "",
|
||||||
"Scottish Gaelic": "",
|
"Scottish Gaelic": "",
|
||||||
"Serbian": "",
|
"Serbian": "",
|
||||||
"Shona": "",
|
"Shona": "",
|
||||||
"Sindhi": "",
|
"Sindhi": "",
|
||||||
"Sinhala": "",
|
"Sinhala": "",
|
||||||
"Slovak": "",
|
"Slovak": "",
|
||||||
"Slovenian": "",
|
"Slovenian": "",
|
||||||
"Somali": "",
|
"Somali": "",
|
||||||
"Southern Sotho": "",
|
"Southern Sotho": "",
|
||||||
"Spanish": "",
|
"Spanish": "",
|
||||||
"Spanish (Latin America)": "",
|
"Spanish (Latin America)": "",
|
||||||
"Sundanese": "",
|
"Sundanese": "",
|
||||||
"Swahili": "",
|
"Swahili": "",
|
||||||
"Swedish": "",
|
"Swedish": "",
|
||||||
"Tajik": "",
|
"Tajik": "",
|
||||||
"Tamil": "",
|
"Tamil": "",
|
||||||
"Telugu": "",
|
"Telugu": "",
|
||||||
"Thai": "",
|
"Thai": "",
|
||||||
"Turkish": "",
|
"Turkish": "",
|
||||||
"Ukrainian": "",
|
"Ukrainian": "",
|
||||||
"Urdu": "",
|
"Urdu": "",
|
||||||
"Uzbek": "",
|
"Uzbek": "",
|
||||||
"Vietnamese": "",
|
"Vietnamese": "",
|
||||||
"Welsh": "",
|
"Welsh": "",
|
||||||
"Western Frisian": "",
|
"Western Frisian": "",
|
||||||
"Xhosa": "",
|
"Xhosa": "",
|
||||||
"Yiddish": "",
|
"Yiddish": "",
|
||||||
"Yoruba": "",
|
"Yoruba": "",
|
||||||
"Zulu": "",
|
"Zulu": "Зулусский",
|
||||||
"`x` years": "`x` лет",
|
"`x` years": "`x` лет",
|
||||||
"`x` months": "`x` месяцев",
|
"`x` months": "`x` месяцев",
|
||||||
"`x` weeks": "`x` недель",
|
"`x` weeks": "`x` недель",
|
||||||
"`x` days": "`x` дней",
|
"`x` days": "`x` дней",
|
||||||
"`x` hours": "`x` часов",
|
"`x` hours": "`x` часов",
|
||||||
"`x` minutes": "`x` минут",
|
"`x` minutes": "`x` минут",
|
||||||
"`x` seconds": "`x` секунд",
|
"`x` seconds": "`x` секунд",
|
||||||
"Fallback comments: ": "Резервные комментарии: ",
|
"Fallback comments: ": "Резервные комментарии: ",
|
||||||
"Popular": "Популярное",
|
"Popular": "Популярное",
|
||||||
"Top": "Топ",
|
"Top": "Топ",
|
||||||
"About": "О сайте",
|
"About": "О сайте",
|
||||||
"Rating: ": "Рейтинг: ",
|
"Rating: ": "Рейтинг: ",
|
||||||
"Language: ": "Язык: ",
|
"Language: ": "Язык: ",
|
||||||
"Default": "",
|
"Default": "По-умолчанию",
|
||||||
"Music": "",
|
"Music": "Музыка",
|
||||||
"Gaming": "",
|
"Gaming": "Игры",
|
||||||
"News": "",
|
"News": "Новости",
|
||||||
"Movies": "",
|
"Movies": "Фильмы",
|
||||||
"Download": "",
|
"Download": "Скачать",
|
||||||
"Download as: ": ""
|
"Download as: ": "Скачать как: "
|
||||||
}
|
}
|
||||||
|
|
|
@ -1128,21 +1128,21 @@ post "/preferences" do |env|
|
||||||
listen = listen == "on"
|
listen = listen == "on"
|
||||||
|
|
||||||
speed = env.params.body["speed"]?.try &.as(String).to_f?
|
speed = env.params.body["speed"]?.try &.as(String).to_f?
|
||||||
speed ||= 1.0
|
speed ||= DEFAULT_USER_PREFERENCES.speed
|
||||||
|
|
||||||
quality = env.params.body["quality"]?.try &.as(String)
|
quality = env.params.body["quality"]?.try &.as(String)
|
||||||
quality ||= "hd720"
|
quality ||= DEFAULT_USER_PREFERENCES.quality
|
||||||
|
|
||||||
volume = env.params.body["volume"]?.try &.as(String).to_i?
|
volume = env.params.body["volume"]?.try &.as(String).to_i?
|
||||||
volume ||= 100
|
volume ||= DEFAULT_USER_PREFERENCES.volume
|
||||||
|
|
||||||
comments_0 = env.params.body["comments_0"]?.try &.as(String) || "youtube"
|
comments_0 = env.params.body["comments_0"]?.try &.as(String) || DEFAULT_USER_PREFERENCES.comments[0]
|
||||||
comments_1 = env.params.body["comments_1"]?.try &.as(String) || ""
|
comments_1 = env.params.body["comments_1"]?.try &.as(String) || DEFAULT_USER_PREFERENCES.comments[1]
|
||||||
comments = [comments_0, comments_1]
|
comments = [comments_0, comments_1]
|
||||||
|
|
||||||
captions_0 = env.params.body["captions_0"]?.try &.as(String) || ""
|
captions_0 = env.params.body["captions_0"]?.try &.as(String) || DEFAULT_USER_PREFERENCES.captions[0]
|
||||||
captions_1 = env.params.body["captions_1"]?.try &.as(String) || ""
|
captions_1 = env.params.body["captions_1"]?.try &.as(String) || DEFAULT_USER_PREFERENCES.captions[1]
|
||||||
captions_2 = env.params.body["captions_2"]?.try &.as(String) || ""
|
captions_2 = env.params.body["captions_2"]?.try &.as(String) || DEFAULT_USER_PREFERENCES.captions[2]
|
||||||
captions = [captions_0, captions_1, captions_2]
|
captions = [captions_0, captions_1, captions_2]
|
||||||
|
|
||||||
related_videos = env.params.body["related_videos"]?.try &.as(String)
|
related_videos = env.params.body["related_videos"]?.try &.as(String)
|
||||||
|
@ -1154,7 +1154,7 @@ post "/preferences" do |env|
|
||||||
redirect_feed = redirect_feed == "on"
|
redirect_feed = redirect_feed == "on"
|
||||||
|
|
||||||
locale = env.params.body["locale"]?.try &.as(String)
|
locale = env.params.body["locale"]?.try &.as(String)
|
||||||
locale ||= "en-US"
|
locale ||= DEFAULT_USER_PREFERENCES.locale
|
||||||
|
|
||||||
dark_mode = env.params.body["dark_mode"]?.try &.as(String)
|
dark_mode = env.params.body["dark_mode"]?.try &.as(String)
|
||||||
dark_mode ||= "off"
|
dark_mode ||= "off"
|
||||||
|
@ -1165,10 +1165,10 @@ post "/preferences" do |env|
|
||||||
thin_mode = thin_mode == "on"
|
thin_mode = thin_mode == "on"
|
||||||
|
|
||||||
max_results = env.params.body["max_results"]?.try &.as(String).to_i?
|
max_results = env.params.body["max_results"]?.try &.as(String).to_i?
|
||||||
max_results ||= 40
|
max_results ||= DEFAULT_USER_PREFERENCES.max_results
|
||||||
|
|
||||||
sort = env.params.body["sort"]?.try &.as(String)
|
sort = env.params.body["sort"]?.try &.as(String)
|
||||||
sort ||= "published"
|
sort ||= DEFAULT_USER_PREFERENCES.sort
|
||||||
|
|
||||||
latest_only = env.params.body["latest_only"]?.try &.as(String)
|
latest_only = env.params.body["latest_only"]?.try &.as(String)
|
||||||
latest_only ||= "off"
|
latest_only ||= "off"
|
||||||
|
|
|
@ -79,36 +79,36 @@ class Preferences
|
||||||
autoplay: Bool,
|
autoplay: Bool,
|
||||||
continue: {
|
continue: {
|
||||||
type: Bool,
|
type: Bool,
|
||||||
default: false,
|
default: DEFAULT_USER_PREFERENCES.continue,
|
||||||
},
|
},
|
||||||
listen: {
|
listen: {
|
||||||
type: Bool,
|
type: Bool,
|
||||||
default: false,
|
default: DEFAULT_USER_PREFERENCES.listen,
|
||||||
},
|
},
|
||||||
speed: Float32,
|
speed: Float32,
|
||||||
quality: String,
|
quality: String,
|
||||||
volume: Int32,
|
volume: Int32,
|
||||||
comments: {
|
comments: {
|
||||||
type: Array(String),
|
type: Array(String),
|
||||||
default: ["youtube", ""],
|
default: DEFAULT_USER_PREFERENCES.comments,
|
||||||
converter: StringToArray,
|
converter: StringToArray,
|
||||||
},
|
},
|
||||||
captions: {
|
captions: {
|
||||||
type: Array(String),
|
type: Array(String),
|
||||||
default: ["", "", ""],
|
default: DEFAULT_USER_PREFERENCES.captions,
|
||||||
},
|
},
|
||||||
redirect_feed: {
|
redirect_feed: {
|
||||||
type: Bool,
|
type: Bool,
|
||||||
default: false,
|
default: DEFAULT_USER_PREFERENCES.redirect_feed,
|
||||||
},
|
},
|
||||||
related_videos: {
|
related_videos: {
|
||||||
type: Bool,
|
type: Bool,
|
||||||
default: true,
|
default: DEFAULT_USER_PREFERENCES.related_videos,
|
||||||
},
|
},
|
||||||
dark_mode: Bool,
|
dark_mode: Bool,
|
||||||
thin_mode: {
|
thin_mode: {
|
||||||
type: Bool,
|
type: Bool,
|
||||||
default: false,
|
default: DEFAULT_USER_PREFERENCES.thin_mode,
|
||||||
},
|
},
|
||||||
max_results: Int32,
|
max_results: Int32,
|
||||||
sort: String,
|
sort: String,
|
||||||
|
@ -116,11 +116,11 @@ class Preferences
|
||||||
unseen_only: Bool,
|
unseen_only: Bool,
|
||||||
notifications_only: {
|
notifications_only: {
|
||||||
type: Bool,
|
type: Bool,
|
||||||
default: false,
|
default: DEFAULT_USER_PREFERENCES.notifications_only,
|
||||||
},
|
},
|
||||||
locale: {
|
locale: {
|
||||||
type: String,
|
type: String,
|
||||||
default: "en-US",
|
default: DEFAULT_USER_PREFERENCES.locale,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
|
@ -633,6 +633,10 @@ def fetch_video(id, proxies, region)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if info["errorcode"]?.try &.== "2"
|
||||||
|
raise "Video unavailable."
|
||||||
|
end
|
||||||
|
|
||||||
title = info["title"]
|
title = info["title"]
|
||||||
author = info["author"]
|
author = info["author"]
|
||||||
ucid = info["ucid"]
|
ucid = info["ucid"]
|
||||||
|
@ -741,14 +745,14 @@ def process_video_params(query, preferences)
|
||||||
volume ||= preferences.volume
|
volume ||= preferences.volume
|
||||||
end
|
end
|
||||||
|
|
||||||
autoplay ||= 0
|
autoplay ||= DEFAULT_USER_PREFERENCES.autoplay.to_unsafe
|
||||||
continue ||= 0
|
continue ||= DEFAULT_USER_PREFERENCES.continue.to_unsafe
|
||||||
listen ||= 0
|
listen ||= DEFAULT_USER_PREFERENCES.listen.to_unsafe
|
||||||
preferred_captions ||= [] of String
|
preferred_captions ||= DEFAULT_USER_PREFERENCES.captions
|
||||||
quality ||= "hd720"
|
quality ||= DEFAULT_USER_PREFERENCES.quality
|
||||||
speed ||= 1
|
speed ||= DEFAULT_USER_PREFERENCES.speed
|
||||||
video_loop ||= 0
|
video_loop ||= DEFAULT_USER_PREFERENCES.video_loop.to_unsafe
|
||||||
volume ||= 100
|
volume ||= DEFAULT_USER_PREFERENCES.volume
|
||||||
|
|
||||||
autoplay = autoplay == 1
|
autoplay = autoplay == 1
|
||||||
continue = continue == 1
|
continue = continue == 1
|
||||||
|
|
|
@ -115,37 +115,25 @@ var player = videojs("player", options, function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
player.on('error', function(event) {
|
player.on('error', function(event) {
|
||||||
if (player.error().code === 2) {
|
if (player.error().code === 2 || player.error().code === 4) {
|
||||||
console.log("An error occured in the player, reloading...");
|
setInterval(setTimeout(function (event) {
|
||||||
|
console.log("An error occured in the player, reloading...");
|
||||||
|
|
||||||
var currentTime = player.currentTime();
|
var currentTime = player.currentTime();
|
||||||
var playbackRate = player.playbackRate();
|
var playbackRate = player.playbackRate();
|
||||||
player.load();
|
var paused = player.paused()
|
||||||
if (currentTime > 0.5) {
|
|
||||||
currentTime -= 0.5;
|
|
||||||
}
|
|
||||||
player.currentTime(currentTime);
|
|
||||||
player.playbackRate(playbackRate);
|
|
||||||
player.play()
|
|
||||||
} else if (player.error().code === 4) {
|
|
||||||
console.log("Detected invalid source, removing...");
|
|
||||||
var currentTime = player.currentTime();
|
|
||||||
var sources = player.options().sources;
|
|
||||||
|
|
||||||
for (var i = 0; i < sources.length; i++) {
|
player.load();
|
||||||
if (sources[i].src === player.currentSource().src) {
|
if (currentTime > 0.5) {
|
||||||
sources.splice(i, 1);
|
currentTime -= 0.5;
|
||||||
break
|
|
||||||
}
|
}
|
||||||
};
|
player.currentTime(currentTime);
|
||||||
|
player.playbackRate(playbackRate);
|
||||||
player.load();
|
|
||||||
if (currentTime > 0.5) {
|
if (!paused) {
|
||||||
currentTime -= 0.5;
|
player.play();
|
||||||
}
|
}
|
||||||
player.currentTime(currentTime);
|
}, 5000), 5000);
|
||||||
player.src(sources);
|
|
||||||
player.play();
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -141,7 +141,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% if preferences && preferences.related_videos || plid %>
|
<% if !preferences || preferences && preferences.related_videos || plid %>
|
||||||
<div class="pure-u-1 pure-u-md-1-5">
|
<div class="pure-u-1 pure-u-md-1-5">
|
||||||
<% if plid %>
|
<% if plid %>
|
||||||
<div id="playlist" class="h-box">
|
<div id="playlist" class="h-box">
|
||||||
|
|
Loading…
Reference in a new issue