diff options
Diffstat (limited to 'MediaBrowser.Providers/Subtitles/OpenSubtitleDownloader.cs')
| -rw-r--r-- | MediaBrowser.Providers/Subtitles/OpenSubtitleDownloader.cs | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/MediaBrowser.Providers/Subtitles/OpenSubtitleDownloader.cs b/MediaBrowser.Providers/Subtitles/OpenSubtitleDownloader.cs index 289c5661f..54db0d5fa 100644 --- a/MediaBrowser.Providers/Subtitles/OpenSubtitleDownloader.cs +++ b/MediaBrowser.Providers/Subtitles/OpenSubtitleDownloader.cs @@ -5,10 +5,11 @@ using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Security; using MediaBrowser.Controller.Subtitles; -using MediaBrowser.Model.Configuration; +using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using MediaBrowser.Model.Providers; +using MediaBrowser.Model.Serialization; using OpenSubtitlesHandler; using System; using System.Collections.Generic; @@ -38,17 +39,23 @@ namespace MediaBrowser.Providers.Subtitles // And the user may restart the server private const int MaxDownloadsPerDay = 150; - public OpenSubtitleDownloader(ILogManager logManager, IHttpClient httpClient, IServerConfigurationManager config, IEncryptionManager encryption) + private readonly IJsonSerializer _json; + + public OpenSubtitleDownloader(ILogManager logManager, IHttpClient httpClient, IServerConfigurationManager config, IEncryptionManager encryption, IJsonSerializer json) { _logger = logManager.GetLogger(GetType().Name); _httpClient = httpClient; _config = config; _encryption = encryption; + _json = json; _config.NamedConfigurationUpdating += _config_NamedConfigurationUpdating; // Reset the count every 24 hours _dailyTimer = new Timer(state => _dailyDownloadCount = 0, null, TimeSpan.FromHours(24), TimeSpan.FromHours(24)); + + Utilities.HttpClient = httpClient; + OpenSubtitles.SetUserAgent("mediabrowser.tv"); } private const string PasswordHashPrefix = "h:"; @@ -195,6 +202,26 @@ namespace MediaBrowser.Providers.Subtitles _lastLogin = DateTime.UtcNow; } + public async Task<IEnumerable<NameIdPair>> GetSupportedLanguages(CancellationToken cancellationToken) + { + await Login(cancellationToken).ConfigureAwait(false); + + var result = OpenSubtitles.GetSubLanguages("en"); + if (!(result is MethodResponseGetSubLanguages)) + { + _logger.Error("Invalid response type"); + return new List<NameIdPair>(); + } + + var results = ((MethodResponseGetSubLanguages)result).Languages; + + return results.Select(i => new NameIdPair + { + Name = i.LanguageName, + Id = i.SubLanguageID + }); + } + public async Task<IEnumerable<RemoteSubtitleInfo>> Search(SubtitleSearchRequest request, CancellationToken cancellationToken) { var imdbIdText = request.GetProviderId(MetadataProviders.Imdb); @@ -229,9 +256,6 @@ namespace MediaBrowser.Providers.Subtitles return new List<RemoteSubtitleInfo>(); } - Utilities.HttpClient = _httpClient; - OpenSubtitles.SetUserAgent("mediabrowser.tv"); - await Login(cancellationToken).ConfigureAwait(false); var subLanguageId = request.Language; @@ -260,7 +284,7 @@ namespace MediaBrowser.Providers.Subtitles var result = await OpenSubtitles.SearchSubtitlesAsync(parms.ToArray(), cancellationToken).ConfigureAwait(false); if (!(result is MethodResponseSubtitleSearch)) { - _logger.Debug("Invalid response type"); + _logger.Error("Invalid response type"); return new List<RemoteSubtitleInfo>(); } |
