From 572065009ceafa02d8ba1d49b9678814a50cb752 Mon Sep 17 00:00:00 2001 From: Jamie Date: Tue, 2 Jul 2019 17:17:25 +0100 Subject: [PATCH 01/32] New translations en.json (Polish) --- src/Ombi/wwwroot/translations/pl.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ombi/wwwroot/translations/pl.json b/src/Ombi/wwwroot/translations/pl.json index f309e6a86..1e495087d 100644 --- a/src/Ombi/wwwroot/translations/pl.json +++ b/src/Ombi/wwwroot/translations/pl.json @@ -62,7 +62,7 @@ }, "Search": { "Title": "Szukaj", - "Paragraph": "Chcesz obejrzeć coś, co nie jest obecnie dostępne? Żaden problem, po prostu wyszukaj poniżej i dodaj zgłoszenie!", + "Paragraph": "Chcesz obejrzeć coś, co nie jest obecnie dostępne? Żaden problem! Po prostu wyszukaj poniżej i dodaj zgłoszenie!", "MoviesTab": "Filmy", "TvTab": "Seriale", "MusicTab": "Muzyka", From 25186ba14957f67bf8abe91291b77eada66ed696 Mon Sep 17 00:00:00 2001 From: tidusjar Date: Fri, 19 Jul 2019 21:29:13 +0100 Subject: [PATCH 02/32] Put "Ombi" back as the product name for Plex oAuth --- src/Ombi.Api.Plex/PlexApi.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Ombi.Api.Plex/PlexApi.cs b/src/Ombi.Api.Plex/PlexApi.cs index 60dec7065..eaafcd75f 100644 --- a/src/Ombi.Api.Plex/PlexApi.cs +++ b/src/Ombi.Api.Plex/PlexApi.cs @@ -223,11 +223,11 @@ namespace Ombi.Api.Plex await AddHeaders(request); request.AddQueryString("code", code); - request.AddQueryString("context[device][product]", "Plex Web"); // Note this is to work around Plex's shit https://forums.plex.tv/t/plex-oauth-not-working-with-tautulli-ombi-etc/433945 + request.AddQueryString("context[device][product]", ApplicationName); request.AddQueryString("context[device][environment]", "bundled"); request.AddQueryString("context[device][layout]", "desktop"); request.AddQueryString("context[device][platform]", "Web"); - request.AddQueryString("context[device][device]", "Plex"); + request.AddQueryString("context[device][device]", "Ombi"); var s = await GetSettings(); await CheckInstallId(s); @@ -293,9 +293,9 @@ namespace Ombi.Api.Plex var s = await GetSettings(); await CheckInstallId(s); request.AddHeader("X-Plex-Client-Identifier", s.InstallId.ToString("N")); - request.AddHeader("X-Plex-Product", "Plex Web"); + request.AddHeader("X-Plex-Product", ApplicationName); request.AddHeader("X-Plex-Version", "3"); - request.AddHeader("X-Plex-Device", "Plex"); + request.AddHeader("X-Plex-Device", "Ombi"); request.AddHeader("X-Plex-Platform", "Web"); request.AddContentHeader("Content-Type", request.ContentType == ContentType.Json ? "application/json" : "application/xml"); request.AddHeader("Accept", "application/json"); From 769343a128252d14175446e13f3d45e3d6026778 Mon Sep 17 00:00:00 2001 From: tidusjar Date: Thu, 8 Aug 2019 15:42:04 +0100 Subject: [PATCH 03/32] Fixed issue where using the API to request a movie/tv show would throw an exception when only using the API Key #3091 --- src/Ombi.Core/Rule/Rules/Request/AutoApproveRule.cs | 7 ++++--- src/Ombi.Core/Rule/Rules/Request/CanRequestRule.cs | 5 +++-- .../Rule/Rules/Specific/SendNotificationRule.cs | 2 +- src/Ombi.Store/Context/OmbiContext.cs | 1 - src/Ombi/Controllers/IdentityController.cs | 10 ++++++---- src/Ombi/Controllers/IssuesController.cs | 4 ++-- src/Ombi/Controllers/MobileController.cs | 2 +- 7 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/Ombi.Core/Rule/Rules/Request/AutoApproveRule.cs b/src/Ombi.Core/Rule/Rules/Request/AutoApproveRule.cs index 685f02b54..6b528e806 100644 --- a/src/Ombi.Core/Rule/Rules/Request/AutoApproveRule.cs +++ b/src/Ombi.Core/Rule/Rules/Request/AutoApproveRule.cs @@ -1,4 +1,5 @@ -using System.Security.Principal; +using System; +using System.Security.Principal; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using Ombi.Core.Authentication; @@ -23,8 +24,8 @@ namespace Ombi.Core.Rule.Rules.Request public async Task Execute(BaseRequest obj) { - var user = await _manager.Users.FirstOrDefaultAsync(x => x.UserName == User.Identity.Name); - if (await _manager.IsInRoleAsync(user, OmbiRoles.Admin)) + var user = await _manager.Users.FirstOrDefaultAsync(x => x.UserName.Equals(User.Identity.Name, StringComparison.InvariantCultureIgnoreCase)); + if (await _manager.IsInRoleAsync(user, OmbiRoles.Admin) || user.IsSystemUser) { obj.Approved = true; return Success(); diff --git a/src/Ombi.Core/Rule/Rules/Request/CanRequestRule.cs b/src/Ombi.Core/Rule/Rules/Request/CanRequestRule.cs index 2b316cfc5..b54c8b4fb 100644 --- a/src/Ombi.Core/Rule/Rules/Request/CanRequestRule.cs +++ b/src/Ombi.Core/Rule/Rules/Request/CanRequestRule.cs @@ -1,3 +1,4 @@ +using System; using Ombi.Store.Entities; using System.IO; using System.Security.Claims; @@ -25,8 +26,8 @@ namespace Ombi.Core.Rule.Rules.Request public async Task Execute(BaseRequest obj) { - var user = await _manager.Users.FirstOrDefaultAsync(x => x.UserName == User.Identity.Name); - if (await _manager.IsInRoleAsync(user, OmbiRoles.Admin)) + var user = await _manager.Users.FirstOrDefaultAsync(x => x.UserName.Equals(User.Identity.Name, StringComparison.InvariantCultureIgnoreCase)); + if (await _manager.IsInRoleAsync(user, OmbiRoles.Admin) || user.IsSystemUser) return Success(); if (obj.RequestType == RequestType.Movie) diff --git a/src/Ombi.Core/Rule/Rules/Specific/SendNotificationRule.cs b/src/Ombi.Core/Rule/Rules/Specific/SendNotificationRule.cs index 3f9e2f159..30ec9b14a 100644 --- a/src/Ombi.Core/Rule/Rules/Specific/SendNotificationRule.cs +++ b/src/Ombi.Core/Rule/Rules/Specific/SendNotificationRule.cs @@ -50,7 +50,7 @@ namespace Ombi.Core.Rule.Rules.Specific } } - if (await UserManager.IsInRoleAsync(requestedUser, OmbiRoles.Admin)) + if (await UserManager.IsInRoleAsync(requestedUser, OmbiRoles.Admin) || requestedUser.IsSystemUser) { sendNotification = false; // Don't bother sending a notification if the user is an admin } diff --git a/src/Ombi.Store/Context/OmbiContext.cs b/src/Ombi.Store/Context/OmbiContext.cs index ea61b253f..28b27107e 100644 --- a/src/Ombi.Store/Context/OmbiContext.cs +++ b/src/Ombi.Store/Context/OmbiContext.cs @@ -101,7 +101,6 @@ namespace Ombi.Store.Context UserName = "Api", UserType = UserType.SystemUser, NormalizedUserName = "API", - }); SaveChanges(); tran.Commit(); diff --git a/src/Ombi/Controllers/IdentityController.cs b/src/Ombi/Controllers/IdentityController.cs index 4838eabf1..e531ee6bc 100644 --- a/src/Ombi/Controllers/IdentityController.cs +++ b/src/Ombi/Controllers/IdentityController.cs @@ -233,6 +233,8 @@ namespace Ombi.Controllers await CreateRole(OmbiRoles.AutoApproveMovie); await CreateRole(OmbiRoles.Admin); await CreateRole(OmbiRoles.AutoApproveTv); + await CreateRole(OmbiRoles.AutoApproveMusic); + await CreateRole(OmbiRoles.RequestMusic); await CreateRole(OmbiRoles.PowerUser); await CreateRole(OmbiRoles.RequestMovie); await CreateRole(OmbiRoles.RequestTv); @@ -279,7 +281,7 @@ namespace Ombi.Controllers [Authorize] public async Task GetCurrentUser() { - var user = await UserManager.Users.FirstOrDefaultAsync(x => x.UserName == User.Identity.Name); + var user = await UserManager.Users.FirstOrDefaultAsync(x => x.UserName.Equals(User.Identity.Name, StringComparison.InvariantCultureIgnoreCase)); return await GetUserWithRoles(user); } @@ -873,7 +875,7 @@ namespace Ombi.Controllers [ApiExplorerSettings(IgnoreApi = true)] public async Task GetUserAccessToken() { - var user = await UserManager.Users.FirstOrDefaultAsync(x => x.UserName == User.Identity.Name); + var user = await UserManager.Users.FirstOrDefaultAsync(x => x.UserName.Equals(User.Identity.Name, StringComparison.InvariantCultureIgnoreCase)); if (user == null) { return Guid.Empty.ToString("N"); @@ -895,7 +897,7 @@ namespace Ombi.Controllers [HttpGet("notificationpreferences")] public async Task> GetUserPreferences() { - var user = await UserManager.Users.FirstOrDefaultAsync(x => x.UserName == User.Identity.Name); + var user = await UserManager.Users.FirstOrDefaultAsync(x => x.UserName.Equals(User.Identity.Name, StringComparison.InvariantCultureIgnoreCase)); return await GetPreferences(user); } @@ -948,7 +950,7 @@ namespace Ombi.Controllers return NotFound(); } // Check if we are editing a different user than ourself, if we are then we need to power user role - var me = await UserManager.Users.FirstOrDefaultAsync(x => x.UserName == User.Identity.Name); + var me = await UserManager.Users.FirstOrDefaultAsync(x => x.UserName.Equals(User.Identity.Name, StringComparison.InvariantCultureIgnoreCase)); if (!me.Id.Equals(user.Id, StringComparison.InvariantCultureIgnoreCase)) { var isPowerUser = await UserManager.IsInRoleAsync(me, OmbiRoles.PowerUser); diff --git a/src/Ombi/Controllers/IssuesController.cs b/src/Ombi/Controllers/IssuesController.cs index 194ac971b..9e28ccdc3 100644 --- a/src/Ombi/Controllers/IssuesController.cs +++ b/src/Ombi/Controllers/IssuesController.cs @@ -187,7 +187,7 @@ namespace Ombi.Controllers Comment = c.Comment, Date = c.Date, Username = c.User.UserAlias, - AdminComment = roles.Contains(OmbiRoles.PowerUser) || roles.Contains(OmbiRoles.Admin) + AdminComment = roles.Contains(OmbiRoles.PowerUser) || roles.Contains(OmbiRoles.Admin) || c.User.IsSystemUser }); } return vm; @@ -223,7 +223,7 @@ namespace Ombi.Controllers UserId = user.Id }; - var isAdmin = await _userManager.IsInRoleAsync(user, OmbiRoles.Admin); + var isAdmin = await _userManager.IsInRoleAsync(user, OmbiRoles.Admin) || user.IsSystemUser; AddIssueNotificationSubstitutes(notificationModel, issue, issue.UserReported.UserAlias); notificationModel.Substitutes.Add("NewIssueComment", comment.Comment); notificationModel.Substitutes.Add("AdminComment", isAdmin.ToString()); diff --git a/src/Ombi/Controllers/MobileController.cs b/src/Ombi/Controllers/MobileController.cs index dc7d88a80..17dab21b4 100644 --- a/src/Ombi/Controllers/MobileController.cs +++ b/src/Ombi/Controllers/MobileController.cs @@ -40,7 +40,7 @@ namespace Ombi.Controllers { if (body?.PlayerId.HasValue() ?? false) { - var user = await _userManager.Users.FirstOrDefaultAsync(x => x.UserName == User.Identity.Name); + var user = await _userManager.Users.FirstOrDefaultAsync(x => x.UserName.Equals(User.Identity.Name, StringComparison.InvariantCultureIgnoreCase)); // Check if we already have this notification id var alreadyExists = await _notification.GetAll().AnyAsync(x => x.PlayerId == body.PlayerId && x.UserId == user.Id); From e2cf020c1125ab6b86a80db7f518c55914dba6ec Mon Sep 17 00:00:00 2001 From: Jamie Date: Fri, 9 Aug 2019 20:21:15 +0100 Subject: [PATCH 04/32] New translations en.json (Russian) --- src/Ombi/wwwroot/translations/ru.json | 40 +++++++++++++-------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/src/Ombi/wwwroot/translations/ru.json b/src/Ombi/wwwroot/translations/ru.json index 7cf9f1702..f10d661f7 100644 --- a/src/Ombi/wwwroot/translations/ru.json +++ b/src/Ombi/wwwroot/translations/ru.json @@ -16,13 +16,13 @@ "Monitored": "Мониторинг", "NotAvailable": "Недоступно", "ProcessingRequest": "Обработка запроса", - "PendingApproval": "Ожидание утверждения", + "PendingApproval": "В ожидании одобрения", "RequestDenied": "Запрос отклонен", "NotRequested": "Не запрошено", "Requested": "Запрос отправлен", - "Request": "Запрос", - "Denied": "Запрещено", - "Approve": "Утвердить", + "Request": "Запросить", + "Denied": "Отказано", + "Approve": "Одобрить", "PartlyAvailable": "Partly Available", "Errors": { "Validation": "Please check your entered values" @@ -160,27 +160,27 @@ "MarkResolved": "Mark Resolved", "SendMessageButton": "Send", "Subject": "Subject", - "Comments": "Comments", - "WriteMessagePlaceholder": "Write your message here...", - "ReportedBy": "Reported By" + "Comments": "Комментарии", + "WriteMessagePlaceholder": "Введите текст сообщения здесь...", + "ReportedBy": "Жалоба поступила от" }, "Filter": { - "ClearFilter": "Clear Filter", - "FilterHeaderAvailability": "Availability", - "FilterHeaderRequestStatus": "Status", - "Approved": "Approved", - "PendingApproval": "Pending Approval" + "ClearFilter": "Сбросить фильтр", + "FilterHeaderAvailability": "Доступность", + "FilterHeaderRequestStatus": "Статус", + "Approved": "Одобрено", + "PendingApproval": "В ожидании одобрения" }, "UserManagment": { - "TvRemaining": "TV: {{remaining}}/{{total}} remaining", - "MovieRemaining": "Movies: {{remaining}}/{{total}} remaining", - "MusicRemaining": "Music: {{remaining}}/{{total}} remaining", - "TvDue": "TV: {{date}}", - "MovieDue": "Movie: {{date}}", - "MusicDue": "Music: {{date}}" + "TvRemaining": "Сериалы: {{remaining}}/{{total}} осталось", + "MovieRemaining": "Фильмы: {{remaining}}/{{total}} осталось", + "MusicRemaining": "Музыка: {{remaining}}/{{total}} осталось", + "TvDue": "Сериалы: {{date}}", + "MovieDue": "Фильм: {{date}}", + "MusicDue": "Музыка: {{date}}" }, "Votes": { - "CompletedVotesTab": "Voted", - "VotesTab": "Votes Needed" + "CompletedVotesTab": "Проголосовано", + "VotesTab": "Необходимы голоса" } } From 3f54441ac64cb9e93928a34171e216a8f52292ad Mon Sep 17 00:00:00 2001 From: Jamie Date: Fri, 9 Aug 2019 20:31:07 +0100 Subject: [PATCH 05/32] New translations en.json (Russian) --- src/Ombi/wwwroot/translations/ru.json | 60 +++++++++++++-------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/src/Ombi/wwwroot/translations/ru.json b/src/Ombi/wwwroot/translations/ru.json index f10d661f7..a46bd6e16 100644 --- a/src/Ombi/wwwroot/translations/ru.json +++ b/src/Ombi/wwwroot/translations/ru.json @@ -23,24 +23,24 @@ "Request": "Запросить", "Denied": "Отказано", "Approve": "Одобрить", - "PartlyAvailable": "Partly Available", + "PartlyAvailable": "Частично доступно", "Errors": { - "Validation": "Please check your entered values" + "Validation": "Пожалуйста, проверьте введенные значения" } }, "PasswordReset": { - "EmailAddressPlaceholder": "Email Address", - "ResetPasswordButton": "Reset Password" + "EmailAddressPlaceholder": "Адрес эл. почты", + "ResetPasswordButton": "Сбросить пароль" }, "LandingPage": { - "OnlineHeading": "Currently Online", - "OnlineParagraph": "The media server is currently online", - "PartiallyOnlineHeading": "Partially Online", - "PartiallyOnlineParagraph": "The media server is partially online.", - "MultipleServersUnavailable": "There are {{serversUnavailable}} servers offline out of {{totalServers}}.", - "SingleServerUnavailable": "There is {{serversUnavailable}} server offline out of {{totalServers}}.", - "OfflineHeading": "Currently Offline", - "OfflineParagraph": "The media server is currently offline.", + "OnlineHeading": "Сейчас в сети", + "OnlineParagraph": "Медиа-сервер в настоящее время в сети", + "PartiallyOnlineHeading": "Частично в сети", + "PartiallyOnlineParagraph": "Медиа-сервер частично в сети.", + "MultipleServersUnavailable": "В сети нет {{serversUnavailable}} серверов из {{totalServers}}.", + "SingleServerUnavailable": "В сети нет {{serversUnavailable}} серверов из {{totalServers}}.", + "OfflineHeading": "В настоящее время в offline", + "OfflineParagraph": "Медиа-сервер в настоящее время не в сети.", "CheckPageForUpdates": "Check this page for continuous site updates." }, "NavigationBar": { @@ -139,27 +139,27 @@ "SortStatusDesc": "Status ▼", "Remaining": { "Quota": "{{remaining}}/{{total}} requests remaining", - "NextDays": "Another request will be added in {{time}} days", - "NextHours": "Another request will be added in {{time}} hours", - "NextMinutes": "Another request will be added in {{time}} minutes", - "NextMinute": "Another request will be added in {{time}} minute" + "NextDays": "Следующий запрос будет добавлен через {{time}} дней", + "NextHours": "Следующий запрос будет добавлен через {{time}} часов", + "NextMinutes": "Следующий запрос будет добавлен через {{time}} минут", + "NextMinute": "Следующий запрос будет добавлен через {{time}} минуту" } }, "Issues": { - "Title": "Issues", - "PendingTitle": "Pending Issues", - "InProgressTitle": "In Progress Issues", - "ResolvedTitle": "Resolved Issues", - "ColumnTitle": "Title", - "Category": "Category", - "Status": "Status", - "Details": "Details", - "Description": "Description", - "NoComments": "No Comments!", - "MarkInProgress": "Mark In Progress", - "MarkResolved": "Mark Resolved", - "SendMessageButton": "Send", - "Subject": "Subject", + "Title": "Проблемы", + "PendingTitle": "Проблемы в ожидании", + "InProgressTitle": "Проблемы в процессе", + "ResolvedTitle": "Решенные проблемы", + "ColumnTitle": "Название", + "Category": "Категория", + "Status": "Статус", + "Details": "Подробная информация", + "Description": "Описание", + "NoComments": "Нет комментариев!", + "MarkInProgress": "Отметить в процессе", + "MarkResolved": "Отметить как решенное", + "SendMessageButton": "Отправить", + "Subject": "Тема", "Comments": "Комментарии", "WriteMessagePlaceholder": "Введите текст сообщения здесь...", "ReportedBy": "Жалоба поступила от" From 85b380c268215dee5efac54a97cbad48b3add3b4 Mon Sep 17 00:00:00 2001 From: Jamie Date: Fri, 9 Aug 2019 20:47:18 +0100 Subject: [PATCH 06/32] New translations en.json (Russian) --- src/Ombi/wwwroot/translations/ru.json | 94 +++++++++++++-------------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/src/Ombi/wwwroot/translations/ru.json b/src/Ombi/wwwroot/translations/ru.json index a46bd6e16..aeb594ef0 100644 --- a/src/Ombi/wwwroot/translations/ru.json +++ b/src/Ombi/wwwroot/translations/ru.json @@ -41,60 +41,60 @@ "SingleServerUnavailable": "В сети нет {{serversUnavailable}} серверов из {{totalServers}}.", "OfflineHeading": "В настоящее время в offline", "OfflineParagraph": "Медиа-сервер в настоящее время не в сети.", - "CheckPageForUpdates": "Check this page for continuous site updates." + "CheckPageForUpdates": "Проверьте эту страницу для получения последних новостей сайта." }, "NavigationBar": { - "Search": "Search", - "Requests": "Requests", - "UserManagement": "User Management", - "Issues": "Issues", - "Vote": "Vote", - "Donate": "Donate!", - "DonateLibraryMaintainer": "Donate to Library Maintainer", - "DonateTooltip": "This is how I convince my wife to let me spend my spare time developing Ombi ;)", - "UpdateAvailableTooltip": "Update Available!", - "Settings": "Settings", - "Welcome": "Welcome {{username}}", - "UpdateDetails": "Update Details", - "Logout": "Logout", - "OpenMobileApp": "Open Mobile App", - "RecentlyAdded": "Recently Added" + "Search": "Поиск", + "Requests": "Запросы", + "UserManagement": "Управление пользователями", + "Issues": "Проблемы", + "Vote": "Голосование", + "Donate": "Поддержать!", + "DonateLibraryMaintainer": "Поддержать библиотекаря", + "DonateTooltip": "Так я убедил свою жену позволить мне тратить своё свободное время на разработку Ombi ;)", + "UpdateAvailableTooltip": "Доступно обновление!", + "Settings": "Настройки", + "Welcome": "Добро пожаловать, {{username}}", + "UpdateDetails": "Обновить детали", + "Logout": "Выйти", + "OpenMobileApp": "Открыть моб. приложение", + "RecentlyAdded": "Недавно добавленные" }, "Search": { - "Title": "Search", - "Paragraph": "Want to watch something that is not currently available? No problem, just search for it below and request it!", - "MoviesTab": "Movies", - "TvTab": "TV Shows", - "MusicTab": "Music", - "Suggestions": "Suggestions", - "NoResults": "Sorry, we didn't find any results!", - "DigitalDate": "Digital Release: {{date}}", - "TheatricalRelease": "Theatrical Release: {{date}}", - "ViewOnPlex": "View On Plex", - "ViewOnEmby": "View On Emby", - "RequestAdded": "Request for {{title}} has been added successfully", - "Similar": "Similar", - "Refine": "Refine", - "SearchBarPlaceholder": "Type Here to Search", + "Title": "Поиск", + "Paragraph": "Хотите посмотреть что-то, чего нет в доступе? Нет проблем, просто найдите это в поиске и запросите!", + "MoviesTab": "Фильмы", + "TvTab": "Сериалы", + "MusicTab": "Музыка", + "Suggestions": "Рекомендации", + "NoResults": "Извините, мы ничего не нашли!", + "DigitalDate": "Дигитальный релиз: {{date}}", + "TheatricalRelease": "Релиз в кинотеатрах: {{date}}", + "ViewOnPlex": "Смотреть в Plex", + "ViewOnEmby": "Смотреть в Emby", + "RequestAdded": "Запрос на {{title}} успешно добавлен", + "Similar": "Похожие", + "Refine": "Уточнить", + "SearchBarPlaceholder": "Поиск...", "Movies": { - "PopularMovies": "Popular Movies", - "UpcomingMovies": "Upcoming Movies", - "TopRatedMovies": "Top Rated Movies", - "NowPlayingMovies": "Now Playing Movies", - "HomePage": "Home Page", - "Trailer": "Trailer" + "PopularMovies": "Популярные фильмы", + "UpcomingMovies": "В скором времени", + "TopRatedMovies": "Фильмы с высоким рейтингом", + "NowPlayingMovies": "Сейчас в кинотеатрах", + "HomePage": "Главная страница", + "Trailer": "Трейлер" }, "TvShows": { - "Popular": "Popular", - "Trending": "Trending", - "MostWatched": "Most Watched", - "MostAnticipated": "Most Anticipated", - "Results": "Results", - "AirDate": "Air Date:", - "AllSeasons": "All Seasons", - "FirstSeason": "First Season", - "LatestSeason": "Latest Season", - "Select": "Select ...", + "Popular": "Популярное", + "Trending": "В трэнде", + "MostWatched": "Самые просматриваемые", + "MostAnticipated": "Самые ожидаемые", + "Results": "Результаты", + "AirDate": "Дата выхода:", + "AllSeasons": "Все сезоны", + "FirstSeason": "Первый сезон", + "LatestSeason": "Последний сезон", + "Select": "Выбрать...", "SubmitRequest": "Submit Request", "Season": "Season: {{seasonNumber}}", "SelectAllInSeason": "Select All in Season {{seasonNumber}}" From c684c6124b9cafa1cfbd40f8a68a73c8beb0bb42 Mon Sep 17 00:00:00 2001 From: Jamie Date: Fri, 9 Aug 2019 20:51:14 +0100 Subject: [PATCH 07/32] New translations en.json (Russian) --- src/Ombi/wwwroot/translations/ru.json | 52 +++++++++++++-------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/src/Ombi/wwwroot/translations/ru.json b/src/Ombi/wwwroot/translations/ru.json index aeb594ef0..0bb2d8c5f 100644 --- a/src/Ombi/wwwroot/translations/ru.json +++ b/src/Ombi/wwwroot/translations/ru.json @@ -95,35 +95,35 @@ "FirstSeason": "Первый сезон", "LatestSeason": "Последний сезон", "Select": "Выбрать...", - "SubmitRequest": "Submit Request", - "Season": "Season: {{seasonNumber}}", - "SelectAllInSeason": "Select All in Season {{seasonNumber}}" + "SubmitRequest": "Подать запрос", + "Season": "Сезон: {{seasonNumber}}", + "SelectAllInSeason": "Выбрать все в сезоне {{seasonNumber}}" } }, "Requests": { - "Title": "Requests", - "Paragraph": "Below you can see yours and all other requests, as well as their download and approval status.", - "MoviesTab": "Movies", - "TvTab": "TV Shows", - "MusicTab": "Music", - "RequestedBy": "Requested By:", - "Status": "Status:", - "RequestStatus": "Request status:", - "Denied": " Denied:", - "TheatricalRelease": "Theatrical Release: {{date}}", - "ReleaseDate": "Released: {{date}}", - "TheatricalReleaseSort": "Theatrical Release", - "DigitalRelease": "Digital Release: {{date}}", - "RequestDate": "Request Date:", - "QualityOverride": "Quality Override:", - "RootFolderOverride": "Root Folder Override:", - "ChangeRootFolder": "Root Folder", - "ChangeQualityProfile": "Quality Profile", - "MarkUnavailable": "Mark Unavailable", - "MarkAvailable": "Mark Available", - "Remove": "Remove", - "Deny": "Deny", - "Season": "Season:", + "Title": "Запросы", + "Paragraph": "Ниже вы можете увидеть ваши и все другие запросы, а также их статус загрузки и одобрения.", + "MoviesTab": "Фильмы", + "TvTab": "Сериалы", + "MusicTab": "Музыка", + "RequestedBy": "Автор запроса:", + "Status": "Статус:", + "RequestStatus": "Статус запроса:", + "Denied": " Отказано:", + "TheatricalRelease": "Релиз в кинотеатрах: {{date}}", + "ReleaseDate": "Дата выхода: {{date}}", + "TheatricalReleaseSort": "Релиз в кинотеатрах", + "DigitalRelease": "Дигитальный релиз: {{date}}", + "RequestDate": "Дата запроса:", + "QualityOverride": "Переопределение качества:", + "RootFolderOverride": "Переопределение корневой папки:", + "ChangeRootFolder": "Корневая папка", + "ChangeQualityProfile": "Профиль качества", + "MarkUnavailable": "Отметить недоступным", + "MarkAvailable": "Отметить доступно", + "Remove": "Удалить", + "Deny": "Отклонить", + "Season": "Сезон:", "GridTitle": "Title", "AirDate": "AirDate", "GridStatus": "Status", From c090d4437a8a92ee7dd41f318663cc3fb8aef082 Mon Sep 17 00:00:00 2001 From: Jamie Date: Fri, 9 Aug 2019 21:07:49 +0100 Subject: [PATCH 08/32] New translations en.json (Russian) --- src/Ombi/wwwroot/translations/ru.json | 28 +++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/Ombi/wwwroot/translations/ru.json b/src/Ombi/wwwroot/translations/ru.json index 0bb2d8c5f..260c1c435 100644 --- a/src/Ombi/wwwroot/translations/ru.json +++ b/src/Ombi/wwwroot/translations/ru.json @@ -124,21 +124,21 @@ "Remove": "Удалить", "Deny": "Отклонить", "Season": "Сезон:", - "GridTitle": "Title", - "AirDate": "AirDate", - "GridStatus": "Status", - "ReportIssue": "Report Issue", - "Filter": "Filter", - "Sort": "Sort", - "SeasonNumberHeading": "Season: {seasonNumber}", - "SortTitleAsc": "Title ▲", - "SortTitleDesc": "Title ▼", - "SortRequestDateAsc": "Request Date ▲", - "SortRequestDateDesc": "Request Date ▼", - "SortStatusAsc": "Status ▲", - "SortStatusDesc": "Status ▼", + "GridTitle": "Название", + "AirDate": "Дата", + "GridStatus": "Статус", + "ReportIssue": "Сообщите о проблеме", + "Filter": "Фильтр", + "Sort": "Сортировать", + "SeasonNumberHeading": "Сезон: {seasonNumber}", + "SortTitleAsc": "Название ▲", + "SortTitleDesc": "Название ▼", + "SortRequestDateAsc": "Дата запроса ▲", + "SortRequestDateDesc": "Дата запроса ▼", + "SortStatusAsc": "Статус ▲", + "SortStatusDesc": "Статус ▼", "Remaining": { - "Quota": "{{remaining}}/{{total}} requests remaining", + "Quota": "Осталось запросов: {{remaining}}/{{total}}", "NextDays": "Следующий запрос будет добавлен через {{time}} дней", "NextHours": "Следующий запрос будет добавлен через {{time}} часов", "NextMinutes": "Следующий запрос будет добавлен через {{time}} минут", From e2c92fb23016f18996ea26092e7f6c81eaafce71 Mon Sep 17 00:00:00 2001 From: tidusjar Date: Fri, 9 Aug 2019 23:01:42 +0100 Subject: [PATCH 09/32] Fixed an error when finishing the content sync --- src/Ombi.Schedule/Jobs/Plex/PlexContentSync.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ombi.Schedule/Jobs/Plex/PlexContentSync.cs b/src/Ombi.Schedule/Jobs/Plex/PlexContentSync.cs index 7f5d095ef..44d9f02c7 100644 --- a/src/Ombi.Schedule/Jobs/Plex/PlexContentSync.cs +++ b/src/Ombi.Schedule/Jobs/Plex/PlexContentSync.cs @@ -119,7 +119,7 @@ namespace Ombi.Schedule.Jobs.Plex await OmbiQuartz.TriggerJob(nameof(IPlexAvailabilityChecker), "Plex"); } - Logger.LogInformation("Finished Plex Content Cacher, with processed content: {0}, episodes: {0}", processedContent.Content.Count(), processedContent.Episodes.Count()); + Logger.LogInformation("Finished Plex Content Cacher, with processed content: {0}, episodes: {0}", processedContent?.Content?.Count() ?? 0, processedContent?.Episodes?.Count() ?? 0); } private async Task StartTheCache(PlexSettings plexSettings, bool recentlyAddedSearch) From ad6e1fb4a121d6e1d2671e96c93d70baa11ed1cc Mon Sep 17 00:00:00 2001 From: tidusjar Date: Fri, 9 Aug 2019 23:16:00 +0100 Subject: [PATCH 10/32] Fixed an issue where shows that have no aired, episodes are not marked as monitored in Sonarr --- src/Ombi.Core/Senders/TvSender.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Ombi.Core/Senders/TvSender.cs b/src/Ombi.Core/Senders/TvSender.cs index 9a25ca9c0..3a3e34745 100644 --- a/src/Ombi.Core/Senders/TvSender.cs +++ b/src/Ombi.Core/Senders/TvSender.cs @@ -346,6 +346,11 @@ namespace Ombi.Core.Senders existingSeason.monitored = true; seriesChanges = true; } + // Now update the episodes that need updating + foreach (var epToUpdate in episodesToUpdate.Where(x => x.seasonNumber == season.SeasonNumber)) + { + await SonarrApi.UpdateEpisode(epToUpdate, s.ApiKey, s.FullUri); + } } else { From 7a24ecb04b44301a8300e7034c655bfb081ddd04 Mon Sep 17 00:00:00 2001 From: sorano Date: Thu, 15 Aug 2019 20:21:50 +0200 Subject: [PATCH 11/32] Update EmbyHelper.cs --- src/Ombi.Helpers/EmbyHelper.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Ombi.Helpers/EmbyHelper.cs b/src/Ombi.Helpers/EmbyHelper.cs index a9967f21f..7ab792ef7 100644 --- a/src/Ombi.Helpers/EmbyHelper.cs +++ b/src/Ombi.Helpers/EmbyHelper.cs @@ -11,11 +11,11 @@ namespace Ombi.Helpers { if (customerServerUrl.HasValue()) { - return $"{customerServerUrl}#!/itemdetails.html?id={mediaId}"; + return $"{customerServerUrl}#!/item/item.html?id={mediaId}"; } else { - return $"https://app.emby.media/#!/itemdetails.html?id={mediaId}"; + return $"https://app.emby.media/#!/item/item.html?id={mediaId}"; } } } From ad85f160565ed8fc761ace55fdee9a2aa0c8a6d1 Mon Sep 17 00:00:00 2001 From: sorano Date: Thu, 15 Aug 2019 20:23:48 +0200 Subject: [PATCH 12/32] Update emby.component.html --- src/Ombi/ClientApp/app/settings/emby/emby.component.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Ombi/ClientApp/app/settings/emby/emby.component.html b/src/Ombi/ClientApp/app/settings/emby/emby.component.html index 66cac8c8b..32759fc16 100644 --- a/src/Ombi/ClientApp/app/settings/emby/emby.component.html +++ b/src/Ombi/ClientApp/app/settings/emby/emby.component.html @@ -71,8 +71,8 @@
- Current URL: "{{server.serverHostname}}/#!/itemdetails.html?id=1" - Current URL: "https://app.emby.media/#!/itemdetails.html?id=1 + Current URL: "{{server.serverHostname}}/#!/item/item.html?id=1" + Current URL: "https://app.emby.media/#!/item/item.html?id=1
@@ -100,4 +100,4 @@
- \ No newline at end of file + From 56c7cf973d5b0df57b9ebd5bfd2be9dfbe1a43ac Mon Sep 17 00:00:00 2001 From: tidusjar Date: Tue, 20 Aug 2019 09:10:45 +0100 Subject: [PATCH 13/32] Try and clear up the issue #2998 --- src/Ombi.Schedule/Jobs/Ombi/RefreshMetadata.cs | 14 -------------- src/Ombi.Schedule/Jobs/Plex/PlexContentSync.cs | 6 ------ 2 files changed, 20 deletions(-) diff --git a/src/Ombi.Schedule/Jobs/Ombi/RefreshMetadata.cs b/src/Ombi.Schedule/Jobs/Ombi/RefreshMetadata.cs index e4f175855..424ef7713 100644 --- a/src/Ombi.Schedule/Jobs/Ombi/RefreshMetadata.cs +++ b/src/Ombi.Schedule/Jobs/Ombi/RefreshMetadata.cs @@ -72,7 +72,6 @@ namespace Ombi.Schedule.Jobs.Ombi { _log.LogInformation("Starting the Metadata refresh from RecentlyAddedSync"); var plexSettings = await _plexSettings.GetSettingsAsync(); - var embySettings = await _embySettings.GetSettingsAsync(); try { if (plexSettings.Enable) @@ -85,19 +84,6 @@ namespace Ombi.Schedule.Jobs.Ombi _log.LogError(e, "Exception when refreshing the Plex Metadata"); throw; } - finally - { - if (plexSettings.Enable) - { - await OmbiQuartz.TriggerJob(nameof(IPlexAvailabilityChecker), "Plex"); - } - - if (embySettings.Enable) - { - await OmbiQuartz.TriggerJob(nameof(IEmbyAvaliabilityChecker), "Emby"); - - } - } } private async Task StartPlexWithKnownContent(IEnumerable contentids) diff --git a/src/Ombi.Schedule/Jobs/Plex/PlexContentSync.cs b/src/Ombi.Schedule/Jobs/Plex/PlexContentSync.cs index 44d9f02c7..a6bea2ce2 100644 --- a/src/Ombi.Schedule/Jobs/Plex/PlexContentSync.cs +++ b/src/Ombi.Schedule/Jobs/Plex/PlexContentSync.cs @@ -113,12 +113,6 @@ namespace Ombi.Schedule.Jobs.Plex await OmbiQuartz.TriggerJob(nameof(IRefreshMetadata), "System"); } - if ((processedContent?.HasProcessedContent ?? false) && recentlyAddedSearch) - { - - await OmbiQuartz.TriggerJob(nameof(IPlexAvailabilityChecker), "Plex"); - } - Logger.LogInformation("Finished Plex Content Cacher, with processed content: {0}, episodes: {0}", processedContent?.Content?.Count() ?? 0, processedContent?.Episodes?.Count() ?? 0); } From f772a60bc34932341ea061a07951c3d09423c58f Mon Sep 17 00:00:00 2001 From: Jamie Date: Tue, 27 Aug 2019 21:49:26 +0100 Subject: [PATCH 14/32] Fixed the issue when we are logging errors in the logs incorrectly --- src/Ombi.Schedule/Jobs/Radarr/RadarrSync.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Ombi.Schedule/Jobs/Radarr/RadarrSync.cs b/src/Ombi.Schedule/Jobs/Radarr/RadarrSync.cs index 6fa4c1bc8..56499aea6 100644 --- a/src/Ombi.Schedule/Jobs/Radarr/RadarrSync.cs +++ b/src/Ombi.Schedule/Jobs/Radarr/RadarrSync.cs @@ -56,7 +56,9 @@ namespace Ombi.Schedule.Jobs.Radarr var movieIds = new List(); foreach (var m in movies) { - if (m.tmdbId > 0 && m.monitored) + if(m.monitored) + { + if (m.tmdbId > 0) { movieIds.Add(new RadarrCache { @@ -69,6 +71,7 @@ namespace Ombi.Schedule.Jobs.Radarr Logger.LogError("TMDBId is not > 0 for movie {0}", m.title); } } + } using (var tran = await _ctx.Database.BeginTransactionAsync()) { From dd8ea482be44b89fad420da20b2f151e88919f32 Mon Sep 17 00:00:00 2001 From: Jamie Date: Wed, 28 Aug 2019 13:57:38 +0100 Subject: [PATCH 15/32] New translations en.json (French) --- src/Ombi/wwwroot/translations/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ombi/wwwroot/translations/fr.json b/src/Ombi/wwwroot/translations/fr.json index 2f98728e5..48b4bdc6f 100644 --- a/src/Ombi/wwwroot/translations/fr.json +++ b/src/Ombi/wwwroot/translations/fr.json @@ -45,7 +45,7 @@ }, "NavigationBar": { "Search": "Rechercher", - "Requests": "Demandes", + "Requests": "En attente", "UserManagement": "Gestion des utilisateurs", "Issues": "Problèmes", "Vote": "Vote", From 2bcadadb1910730ca70cbb4f77062b4727315fd9 Mon Sep 17 00:00:00 2001 From: Jamie Date: Wed, 28 Aug 2019 14:39:32 +0100 Subject: [PATCH 16/32] New translations en.json (Russian) --- src/Ombi/wwwroot/translations/ru.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Ombi/wwwroot/translations/ru.json b/src/Ombi/wwwroot/translations/ru.json index 260c1c435..5e1008a4b 100644 --- a/src/Ombi/wwwroot/translations/ru.json +++ b/src/Ombi/wwwroot/translations/ru.json @@ -86,7 +86,7 @@ }, "TvShows": { "Popular": "Популярное", - "Trending": "В трэнде", + "Trending": "Сейчас смотрят", "MostWatched": "Самые просматриваемые", "MostAnticipated": "Самые ожидаемые", "Results": "Результаты", @@ -120,14 +120,14 @@ "ChangeRootFolder": "Корневая папка", "ChangeQualityProfile": "Профиль качества", "MarkUnavailable": "Отметить недоступным", - "MarkAvailable": "Отметить доступно", + "MarkAvailable": "Отметить доступным", "Remove": "Удалить", "Deny": "Отклонить", "Season": "Сезон:", "GridTitle": "Название", "AirDate": "Дата", "GridStatus": "Статус", - "ReportIssue": "Сообщите о проблеме", + "ReportIssue": "Сообщить о проблеме", "Filter": "Фильтр", "Sort": "Сортировать", "SeasonNumberHeading": "Сезон: {seasonNumber}", From cac225f512cb03087489da77bd9266f63d7a6d2d Mon Sep 17 00:00:00 2001 From: Jamie Date: Wed, 28 Aug 2019 14:54:04 +0100 Subject: [PATCH 17/32] New translations en.json (Russian) --- src/Ombi/wwwroot/translations/ru.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ombi/wwwroot/translations/ru.json b/src/Ombi/wwwroot/translations/ru.json index 5e1008a4b..0115d1f6c 100644 --- a/src/Ombi/wwwroot/translations/ru.json +++ b/src/Ombi/wwwroot/translations/ru.json @@ -19,7 +19,7 @@ "PendingApproval": "В ожидании одобрения", "RequestDenied": "Запрос отклонен", "NotRequested": "Не запрошено", - "Requested": "Запрос отправлен", + "Requested": "Запрошено", "Request": "Запросить", "Denied": "Отказано", "Approve": "Одобрить", From 490f842f387c18810130882db00bb93f32c357b3 Mon Sep 17 00:00:00 2001 From: Jamie Date: Wed, 28 Aug 2019 15:02:46 +0100 Subject: [PATCH 18/32] New translations en.json (Russian) --- src/Ombi/wwwroot/translations/ru.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ombi/wwwroot/translations/ru.json b/src/Ombi/wwwroot/translations/ru.json index 0115d1f6c..092689584 100644 --- a/src/Ombi/wwwroot/translations/ru.json +++ b/src/Ombi/wwwroot/translations/ru.json @@ -62,7 +62,7 @@ }, "Search": { "Title": "Поиск", - "Paragraph": "Хотите посмотреть что-то, чего нет в доступе? Нет проблем, просто найдите это в поиске и запросите!", + "Paragraph": "Хотите посмотреть что-то, чего нет в доступе? Нет проблем, просто вбейте название и запросите!", "MoviesTab": "Фильмы", "TvTab": "Сериалы", "MusicTab": "Музыка", From a2f9d9f0bb164f4dfaff225be561fd21d0e0dcf5 Mon Sep 17 00:00:00 2001 From: Jamie Date: Mon, 2 Sep 2019 10:52:18 +0100 Subject: [PATCH 19/32] New translations en.json (French) --- src/Ombi/wwwroot/translations/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ombi/wwwroot/translations/fr.json b/src/Ombi/wwwroot/translations/fr.json index 48b4bdc6f..a24ba4e1f 100644 --- a/src/Ombi/wwwroot/translations/fr.json +++ b/src/Ombi/wwwroot/translations/fr.json @@ -64,7 +64,7 @@ "Title": "Rechercher", "Paragraph": "Vous voulez regarder quelque chose qui n'est pas disponible actuellement ? Pas de problème, recherchez-le ci-dessous et demandez-le !", "MoviesTab": "Films", - "TvTab": "TV", + "TvTab": "Séries", "MusicTab": "Musique", "Suggestions": "Suggestions", "NoResults": "Désolé, nous n'avons trouvé aucun résultat !", From 999c7cf8540cc1d03843d0eed73ebfa400696282 Mon Sep 17 00:00:00 2001 From: Jamie Date: Mon, 2 Sep 2019 12:51:00 +0100 Subject: [PATCH 20/32] New translations en.json (French) --- src/Ombi/wwwroot/translations/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ombi/wwwroot/translations/fr.json b/src/Ombi/wwwroot/translations/fr.json index a24ba4e1f..e2530f95a 100644 --- a/src/Ombi/wwwroot/translations/fr.json +++ b/src/Ombi/wwwroot/translations/fr.json @@ -104,7 +104,7 @@ "Title": "Demandes", "Paragraph": "Vous pouvez voir ci-dessous vos demandes et celles des autres, ainsi que leur statut de téléchargement et d'approbation.", "MoviesTab": "Films", - "TvTab": "Émissions", + "TvTab": "Séries", "MusicTab": "Musique", "RequestedBy": "Demandé par :", "Status": "Statut :", From 16ff5083c32cdd35d22565a29e9443e835b9ab7c Mon Sep 17 00:00:00 2001 From: Jamie Rees Date: Tue, 3 Sep 2019 12:17:50 +0100 Subject: [PATCH 21/32] Fixed #3143 --- .../ClientApp/app/login/login.component.ts | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/Ombi/ClientApp/app/login/login.component.ts b/src/Ombi/ClientApp/app/login/login.component.ts index 34edcd687..67105f225 100644 --- a/src/Ombi/ClientApp/app/login/login.component.ts +++ b/src/Ombi/ClientApp/app/login/login.component.ts @@ -22,6 +22,14 @@ import { fadeInOutAnimation } from "../animations/fadeinout"; }) export class LoginComponent implements OnDestroy, OnInit { + public get appName(): string { + if (this.customizationSettings.applicationName) { + return this.customizationSettings.applicationName; + } else { + return "Ombi"; + } + } + public form: FormGroup; public customizationSettings: ICustomizationSettings; public authenticationSettings: IAuthenticationSettings; @@ -32,20 +40,14 @@ export class LoginComponent implements OnDestroy, OnInit { public loginWithOmbi: boolean; public pinTimer: any; - public get appName(): string { - if (this.customizationSettings.applicationName) { - return this.customizationSettings.applicationName; - } else { - return "Ombi"; - } - } - private timer: any; private clientId: string; private errorBody: string; private errorValidation: string; + private oAuthWindow: Window|null; + constructor(private authService: AuthService, private router: Router, private notify: NotificationService, private status: StatusService, private fb: FormBuilder, private settingsService: SettingsService, private images: ImageService, private sanitizer: DomSanitizer, private route: ActivatedRoute, private location: PlatformLocation, private translate: TranslateService, private plexTv: PlexTvService) { @@ -127,7 +129,7 @@ export class LoginComponent implements OnDestroy, OnInit { } public oauth() { - const oAuthWindow = window.open(window.location.toString(), "_blank", `toolbar=0, + this.oAuthWindow = window.open(window.location.toString(), "_blank", `toolbar=0, location=0, status=0, menubar=0, @@ -138,7 +140,7 @@ export class LoginComponent implements OnDestroy, OnInit { this.plexTv.GetPin(this.clientId, this.appName).subscribe((pin: any) => { this.authService.login({ usePlexOAuth: true, password: "", rememberMe: true, username: "", plexTvPin: pin }).subscribe(x => { - oAuthWindow!.location.replace(x.url); + this.oAuthWindow!.location.replace(x.url); this.pinTimer = setInterval(() => { this.notify.info("Authenticating", "Loading... Please Wait"); @@ -155,6 +157,7 @@ export class LoginComponent implements OnDestroy, OnInit { if (this.authService.loggedIn()) { this.ngOnDestroy(); + this.oAuthWindow.close(); this.router.navigate(["search"]); return; } From f04a203faca07899e022dae0c56b6353c26aa9ae Mon Sep 17 00:00:00 2001 From: tidusjar Date: Wed, 25 Sep 2019 13:08:22 +0100 Subject: [PATCH 22/32] Removed the lanuage profile from the Lidarr integration --- src/Ombi.Api.Lidarr/ILidarrApi.cs | 1 - src/Ombi.Api.Lidarr/LidarrApi.cs | 7 ------- src/Ombi.Api.Lidarr/Models/ArtistAdd.cs | 1 - .../Models/LanguageProfiles.cs | 8 -------- src/Ombi.Core/Senders/MusicSender.cs | 1 - .../Models/External/LidarrSettings.cs | 1 - .../services/applications/lidarr.service.ts | 3 --- .../app/settings/lidarr/lidarr.component.html | 16 --------------- .../app/settings/lidarr/lidarr.component.ts | 20 ------------------- .../Controllers/External/LidarrController.cs | 10 ---------- 10 files changed, 68 deletions(-) delete mode 100644 src/Ombi.Api.Lidarr/Models/LanguageProfiles.cs diff --git a/src/Ombi.Api.Lidarr/ILidarrApi.cs b/src/Ombi.Api.Lidarr/ILidarrApi.cs index 826cfdec3..b542ff0a0 100644 --- a/src/Ombi.Api.Lidarr/ILidarrApi.cs +++ b/src/Ombi.Api.Lidarr/ILidarrApi.cs @@ -20,7 +20,6 @@ namespace Ombi.Api.Lidarr Task MontiorAlbum(int albumId, string apiKey, string baseUrl); Task> GetAllAlbumsByArtistId(int artistId, string apiKey, string baseUrl); Task> GetMetadataProfile(string apiKey, string baseUrl); - Task> GetLanguageProfile(string apiKey, string baseUrl); Task Status(string apiKey, string baseUrl); Task AlbumSearch(int[] albumIds, string apiKey, string baseUrl); Task AlbumInformation(string albumId, string apiKey, string baseUrl); diff --git a/src/Ombi.Api.Lidarr/LidarrApi.cs b/src/Ombi.Api.Lidarr/LidarrApi.cs index 0f03aa1b0..dd589c64d 100644 --- a/src/Ombi.Api.Lidarr/LidarrApi.cs +++ b/src/Ombi.Api.Lidarr/LidarrApi.cs @@ -158,13 +158,6 @@ namespace Ombi.Api.Lidarr return Api.Request>(request); } - public Task> GetLanguageProfile(string apiKey, string baseUrl) - { - var request = new Request($"{ApiVersion}/languageprofile", baseUrl, HttpMethod.Get); - AddHeaders(request, apiKey); - return Api.Request>(request); - } - public Task> GetMetadataProfile(string apiKey, string baseUrl) { var request = new Request($"{ApiVersion}/metadataprofile", baseUrl, HttpMethod.Get); diff --git a/src/Ombi.Api.Lidarr/Models/ArtistAdd.cs b/src/Ombi.Api.Lidarr/Models/ArtistAdd.cs index 65aec3ac8..e292e8905 100644 --- a/src/Ombi.Api.Lidarr/Models/ArtistAdd.cs +++ b/src/Ombi.Api.Lidarr/Models/ArtistAdd.cs @@ -17,7 +17,6 @@ namespace Ombi.Api.Lidarr.Models public Image[] images { get; set; } public string remotePoster { get; set; } public int qualityProfileId { get; set; } - public int languageProfileId { get; set; } public int metadataProfileId { get; set; } public bool albumFolder { get; set; } public bool monitored { get; set; } diff --git a/src/Ombi.Api.Lidarr/Models/LanguageProfiles.cs b/src/Ombi.Api.Lidarr/Models/LanguageProfiles.cs deleted file mode 100644 index f503fe33f..000000000 --- a/src/Ombi.Api.Lidarr/Models/LanguageProfiles.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Ombi.Api.Lidarr.Models -{ - public class LanguageProfiles - { - public string name { get; set; } - public int id { get; set; } - } -} \ No newline at end of file diff --git a/src/Ombi.Core/Senders/MusicSender.cs b/src/Ombi.Core/Senders/MusicSender.cs index 0e9db9192..04544c6be 100644 --- a/src/Ombi.Core/Senders/MusicSender.cs +++ b/src/Ombi.Core/Senders/MusicSender.cs @@ -110,7 +110,6 @@ namespace Ombi.Core.Senders artistName = model.ArtistName, cleanName = model.ArtistName.ToLowerInvariant().RemoveSpaces(), images = new Image[] { }, - languageProfileId = settings.LanguageProfileId, links = new Link[] {}, metadataProfileId = settings.MetadataProfileId, qualityProfileId = qualityToUse, diff --git a/src/Ombi.Settings/Settings/Models/External/LidarrSettings.cs b/src/Ombi.Settings/Settings/Models/External/LidarrSettings.cs index 3a37b7d43..5f2c5722d 100644 --- a/src/Ombi.Settings/Settings/Models/External/LidarrSettings.cs +++ b/src/Ombi.Settings/Settings/Models/External/LidarrSettings.cs @@ -9,7 +9,6 @@ namespace Ombi.Settings.Settings.Models.External public string DefaultQualityProfile { get; set; } public string DefaultRootPath { get; set; } public bool AlbumFolder { get; set; } - public int LanguageProfileId { get; set; } public int MetadataProfileId { get; set; } public bool AddOnly { get; set; } } diff --git a/src/Ombi/ClientApp/app/services/applications/lidarr.service.ts b/src/Ombi/ClientApp/app/services/applications/lidarr.service.ts index 9ef36357a..b0cdf5a86 100644 --- a/src/Ombi/ClientApp/app/services/applications/lidarr.service.ts +++ b/src/Ombi/ClientApp/app/services/applications/lidarr.service.ts @@ -29,8 +29,5 @@ export class LidarrService extends ServiceHelpers { public getMetadataProfiles(settings: ILidarrSettings): Observable { return this.http.post(`${this.url}/Metadata/`, JSON.stringify(settings), {headers: this.headers}); - } - public getLanguages(settings: ILidarrSettings): Observable { - return this.http.post(`${this.url}/Langauges/`,JSON.stringify(settings), {headers: this.headers}); } } diff --git a/src/Ombi/ClientApp/app/settings/lidarr/lidarr.component.html b/src/Ombi/ClientApp/app/settings/lidarr/lidarr.component.html index 5e898e719..2a1643dc6 100644 --- a/src/Ombi/ClientApp/app/settings/lidarr/lidarr.component.html +++ b/src/Ombi/ClientApp/app/settings/lidarr/lidarr.component.html @@ -84,22 +84,6 @@ - -
- -
- - - -
-
- -
@@ -88,7 +93,7 @@
- +
diff --git a/src/Ombi/ClientApp/app/settings/emby/emby.component.ts b/src/Ombi/ClientApp/app/settings/emby/emby.component.ts index c2752a973..bc1d2bbb2 100644 --- a/src/Ombi/ClientApp/app/settings/emby/emby.component.ts +++ b/src/Ombi/ClientApp/app/settings/emby/emby.component.ts @@ -1,7 +1,7 @@ import { Component, OnInit } from "@angular/core"; import { IEmbyServer, IEmbySettings } from "../../interfaces"; -import { JobService, NotificationService, SettingsService, TesterService } from "../../services"; +import { EmbyService, JobService, NotificationService, SettingsService, TesterService } from "../../services"; @Component({ templateUrl: "./emby.component.html", @@ -9,16 +9,25 @@ import { JobService, NotificationService, SettingsService, TesterService } from export class EmbyComponent implements OnInit { public settings: IEmbySettings; + public hasDiscovered: boolean; constructor(private settingsService: SettingsService, private notificationService: NotificationService, private testerService: TesterService, - private jobService: JobService) { } + private jobService: JobService, + private embyService: EmbyService) { } public ngOnInit() { this.settingsService.getEmby().subscribe(x => this.settings = x); } + public async discoverServerInfo(server: IEmbyServer) { + const result = await this.embyService.getPublicInfo(server).toPromise(); + this.settings.isJellyfin = result.isJellyfin; + server.name = result.serverName; + this.hasDiscovered = true; + } + public addTab() { if (this.settings.servers == null) { this.settings.servers = []; diff --git a/src/Ombi/ClientApp/app/settings/settingsmenu.component.html b/src/Ombi/ClientApp/app/settings/settingsmenu.component.html index 81f901ecc..d58c96e2e 100644 --- a/src/Ombi/ClientApp/app/settings/settingsmenu.component.html +++ b/src/Ombi/ClientApp/app/settings/settingsmenu.component.html @@ -22,7 +22,7 @@ diff --git a/src/Ombi/ClientApp/app/wizard/emby/emby.component.html b/src/Ombi/ClientApp/app/wizard/emby/emby.component.html index c43aa7c6f..18e820e2c 100644 --- a/src/Ombi/ClientApp/app/wizard/emby/emby.component.html +++ b/src/Ombi/ClientApp/app/wizard/emby/emby.component.html @@ -3,7 +3,7 @@
-

Emby Authentication

+

Emby/Jellyfin Authentication

@@ -26,6 +26,11 @@
+
+
+ +
+
diff --git a/src/Ombi/ClientApp/app/wizard/emby/emby.component.ts b/src/Ombi/ClientApp/app/wizard/emby/emby.component.ts index f22fa915b..5a8c46b7b 100644 --- a/src/Ombi/ClientApp/app/wizard/emby/emby.component.ts +++ b/src/Ombi/ClientApp/app/wizard/emby/emby.component.ts @@ -28,6 +28,7 @@ export class EmbyComponent implements OnInit { } this.embySettings = { servers: [], + isJellyfin: false, id: 0, enable: true, }; diff --git a/src/Ombi/Controllers/External/EmbyController.cs b/src/Ombi/Controllers/External/EmbyController.cs index df865be61..98c15fc56 100644 --- a/src/Ombi/Controllers/External/EmbyController.cs +++ b/src/Ombi/Controllers/External/EmbyController.cs @@ -4,6 +4,7 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Ombi.Api.Emby; +using Ombi.Api.Emby.Models; using Ombi.Api.Plex; using Ombi.Attributes; using Ombi.Core.Settings; @@ -60,6 +61,13 @@ namespace Ombi.Controllers.External return null; } + [HttpPost("info")] + public async Task GetServerInfo([FromBody] EmbyServers server) + { + var result = await EmbyApi.GetPublicInformation(server.FullUri); + return result; + } + /// /// Gets the emby users. /// From 7a72496c780cb2c666ef7808bf22ff099a8cdceb Mon Sep 17 00:00:00 2001 From: tidusjar Date: Sat, 12 Oct 2019 21:32:58 +0100 Subject: [PATCH 32/32] gitchangelog --- CHANGELOG.md | 143 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 132 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d4fea0965..ae8417bae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,34 +1,131 @@ # Changelog +## (unreleased) + +### **New Features** + +- Added better support for Jellyfin, we will now auto detect if it's a jellyfin server after pressing the discover button. [tidusjar] + +- Update aspnetcore.yml. [Jamie] + +- Update aspnetcore.yml. [Jamie] + +- Update aspnetcore.yml. [Jamie] + +- Update aspnetcore.yml. [Jamie] + +- Update aspnetcore.yml. [Jamie] + +- Update and rename .github/workflows to .github/.github/workflows/test.workflow. [Jamie] + +- Update aspnetcore.yml. [Jamie] + +- Update aspnetcore.yml. [Jamie] + +- Update aspnetcore.yml. [Jamie] + +- Added a bit more logging into the recently added scan. [tidusjar] + +- Update emby.component.html. [sorano] + +- Update EmbyHelper.cs. [sorano] + +- Update CHANGELOG.md. [Jamie] + +### **Fixes** + +- Fixed #3078. [tidusjar] + +- Fixes issue #3195 The new string extension method ToHttpsUrl ensures that URLs starting with "https" are no longer turned into "httpss" The commit also replaces all occurances of the error prone .Replace("http", "https") in the whole solution. [msdeibel] + +- Create test.workflow. [Jamie] + +- Delete test.workflow. [Jamie] + +- New translations en.json (Norwegian) [Jamie] + +- New translations en.json (Norwegian) [Jamie] + +- Fix for #3183. [tidusjar] + +- Fixed an issue where running the recently added sync via the UI was running the full sync. [tidusjar] + +- Fixed #3143. [Jamie Rees] + +- New translations en.json (French) [Jamie] + +- New translations en.json (French) [Jamie] + +- New translations en.json (Russian) [Jamie] + +- New translations en.json (Russian) [Jamie] + +- New translations en.json (Russian) [Jamie] + +- New translations en.json (French) [Jamie] + +- New translations en.json (Russian) [Jamie] + +- New translations en.json (Russian) [Jamie] + +- New translations en.json (Russian) [Jamie] + +- New translations en.json (Russian) [Jamie] + +- New translations en.json (Russian) [Jamie] + +- New translations en.json (Polish) [Jamie] + +- Fixed the issue when we are logging errors in the logs incorrectly. [Jamie] + +- Removed the lanuage profile from the Lidarr integration. [tidusjar] + +- Try and clear up the issue #2998. [tidusjar] + +- Fixed an issue where shows that have no aired, episodes are not marked as monitored in Sonarr. [tidusjar] + +- Fixed an error when finishing the content sync. [tidusjar] + +- Fixed issue where using the API to request a movie/tv show would throw an exception when only using the API Key #3091. [tidusjar] + +- Put "Ombi" back as the product name for Plex oAuth. [tidusjar] + + ## v3.0.4680 (2019-07-17) +### **New Features** + +- Update CHANGELOG.md. [Jamie] ### **Fixes** -- Fixed the database lock issues - [TidusJar] -- Fixed the issue with [Plex OAuth](https://forums.plex.tv/t/plex-oauth-not-working-with-tautulli-ombi-etc/433945) - [TidusJar] +- Fix Plex's (intentional) mistake #3073. [Jamie Rees] + +- #2994 Fixed the startup issue. [tidusjar] + +- #2994 - enable multithreading in the sql config. [Jamie Rees] + ## v3.0.4659 (2019-07-02) ### **New Features** -- Added further logging into the API's (debug logging) [tidusjar] +- Update appsettings.json. [Jamie] -- Added transactions around all of the CUD operations. [Jamie Rees] +- Update CHANGELOG.md. [Jamie] -- Update stale.yml. [Jamie] -- Update README.md. [Dyson Parkes] +## v3.0.4654 (2019-07-02) -- Added stalebot. [tidusjar] +### **New Features** -- Added some validation around the new crons. [Jamie Rees] +- Added further logging into the API's (debug logging) [tidusjar] -- Added some defensive coding around when we create an artist for #2915. [tidusjar] +- Added transactions around all of the CUD operations. [Jamie Rees] -- Update README.md. [Jamie] +- Added some validation around the new crons. [Jamie Rees] -- Update README.md. [Jamie] +- Added some defensive coding around when we create an artist for #2915. [tidusjar] - Update JobSetup.cs. [Jamie] @@ -40,10 +137,28 @@ - Update dependancies. [TidusJar] +- Update stale.yml. [Jamie] + +- Update README.md. [Dyson Parkes] + +- Update README.md. [Jamie] + +- Update README.md. [Jamie] + - Update CHANGELOG.md. [Jamie] +- Added stalebot. [tidusjar] + ### **Fixes** +- Add back in the login time. [tidusjar] + +- New translations en.json (Spanish) [Jamie] + +- New translations en.json (Spanish) [Jamie] + +- New translations en.json (Spanish) [Jamie] + - New translations en.json (Spanish) [Jamie] - New translations en.json (Swedish) [Jamie] @@ -322,6 +437,12 @@ - Converted the Plex Jobs to use Quartz. [Jamie] +- Remove the need for the schedules.db #2994. [tidusjar] + +- Create FUNDING.yml. [Jamie] + +- Logging and slight change to the string matching now not dependant on Thread Culture #2866. [tidusjar] + ## v3.0.4256 (2019-02-19)