|
@@ -166,14 +166,7 @@ namespace MediaBrowser.Providers.Subtitles
|
|
public async Task<IEnumerable<RemoteSubtitleInfo>> SearchSubtitles(SubtitleSearchRequest request, CancellationToken cancellationToken)
|
|
public async Task<IEnumerable<RemoteSubtitleInfo>> SearchSubtitles(SubtitleSearchRequest request, CancellationToken cancellationToken)
|
|
{
|
|
{
|
|
var imdbIdText = request.GetProviderId(MetadataProviders.Imdb);
|
|
var imdbIdText = request.GetProviderId(MetadataProviders.Imdb);
|
|
- long imdbId;
|
|
|
|
-
|
|
|
|
- if (string.IsNullOrWhiteSpace(imdbIdText) ||
|
|
|
|
- !long.TryParse(imdbIdText.TrimStart('t'), NumberStyles.Any, _usCulture, out imdbId))
|
|
|
|
- {
|
|
|
|
- _logger.Debug("Imdb id missing");
|
|
|
|
- return new List<RemoteSubtitleInfo>();
|
|
|
|
- }
|
|
|
|
|
|
+ long imdbId = 0;
|
|
|
|
|
|
switch (request.ContentType)
|
|
switch (request.ContentType)
|
|
{
|
|
{
|
|
@@ -190,6 +183,11 @@ namespace MediaBrowser.Providers.Subtitles
|
|
_logger.Debug("Movie name missing");
|
|
_logger.Debug("Movie name missing");
|
|
return new List<RemoteSubtitleInfo>();
|
|
return new List<RemoteSubtitleInfo>();
|
|
}
|
|
}
|
|
|
|
+ if (string.IsNullOrWhiteSpace(imdbIdText) || !long.TryParse(imdbIdText.TrimStart('t'), NumberStyles.Any, _usCulture, out imdbId))
|
|
|
|
+ {
|
|
|
|
+ _logger.Debug("Imdb id missing");
|
|
|
|
+ return new List<RemoteSubtitleInfo>();
|
|
|
|
+ }
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -208,18 +206,26 @@ namespace MediaBrowser.Providers.Subtitles
|
|
var hash = Utilities.ComputeHash(request.MediaPath);
|
|
var hash = Utilities.ComputeHash(request.MediaPath);
|
|
var fileInfo = new FileInfo(request.MediaPath);
|
|
var fileInfo = new FileInfo(request.MediaPath);
|
|
var movieByteSize = fileInfo.Length;
|
|
var movieByteSize = fileInfo.Length;
|
|
-
|
|
|
|
|
|
+ var searchImdbId = request.ContentType == SubtitleMediaType.Movie ? imdbId.ToString(_usCulture) : "";
|
|
var subtitleSearchParameters = request.ContentType == SubtitleMediaType.Episode
|
|
var subtitleSearchParameters = request.ContentType == SubtitleMediaType.Episode
|
|
- ? new SubtitleSearchParameters(subLanguageId, request.SeriesName, request.ParentIndexNumber.Value.ToString(_usCulture), request.IndexNumber.Value.ToString(_usCulture))
|
|
|
|
- : new SubtitleSearchParameters(subLanguageId, request.Name);
|
|
|
|
-
|
|
|
|
|
|
+ ? new List<SubtitleSearchParameters> {
|
|
|
|
+ new SubtitleSearchParameters(subLanguageId,
|
|
|
|
+ query: request.SeriesName,
|
|
|
|
+ season: request.ParentIndexNumber.Value.ToString(_usCulture),
|
|
|
|
+ episode: request.IndexNumber.Value.ToString(_usCulture))
|
|
|
|
+ }
|
|
|
|
+ : new List<SubtitleSearchParameters> {
|
|
|
|
+ new SubtitleSearchParameters(subLanguageId, imdbid: searchImdbId),
|
|
|
|
+ new SubtitleSearchParameters(subLanguageId, query: request.Name, imdbid: searchImdbId)
|
|
|
|
+ };
|
|
var parms = new List<SubtitleSearchParameters> {
|
|
var parms = new List<SubtitleSearchParameters> {
|
|
- new SubtitleSearchParameters(subLanguageId, hash, movieByteSize),
|
|
|
|
- subtitleSearchParameters
|
|
|
|
|
|
+ new SubtitleSearchParameters( subLanguageId,
|
|
|
|
+ movieHash: hash,
|
|
|
|
+ movieByteSize: movieByteSize,
|
|
|
|
+ imdbid: searchImdbId ),
|
|
};
|
|
};
|
|
-
|
|
|
|
- var result = await OpenSubtitles.SearchSubtitlesAsync(parms.ToArray(), cancellationToken).ConfigureAwait(false);
|
|
|
|
-
|
|
|
|
|
|
+ parms.AddRange(subtitleSearchParameters);
|
|
|
|
+ var result = OpenSubtitles.SearchSubtitles(parms.ToArray());
|
|
if (!(result is MethodResponseSubtitleSearch))
|
|
if (!(result is MethodResponseSubtitleSearch))
|
|
{
|
|
{
|
|
_logger.Debug("Invalid response type");
|
|
_logger.Debug("Invalid response type");
|