aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Providers/Subtitles/OpenSubtitleDownloader.cs37
-rw-r--r--OpenSubtitlesHandler/SubtitleTypes/SubtitleSearchParameters.cs50
2 files changed, 24 insertions, 63 deletions
diff --git a/MediaBrowser.Providers/Subtitles/OpenSubtitleDownloader.cs b/MediaBrowser.Providers/Subtitles/OpenSubtitleDownloader.cs
index 7b40b5673..a8e9ff4a8 100644
--- a/MediaBrowser.Providers/Subtitles/OpenSubtitleDownloader.cs
+++ b/MediaBrowser.Providers/Subtitles/OpenSubtitleDownloader.cs
@@ -166,14 +166,7 @@ namespace MediaBrowser.Providers.Subtitles
public async Task<IEnumerable<RemoteSubtitleInfo>> SearchSubtitles(SubtitleSearchRequest request, CancellationToken cancellationToken)
{
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)
{
@@ -190,6 +183,11 @@ namespace MediaBrowser.Providers.Subtitles
_logger.Debug("Movie name missing");
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;
}
@@ -208,16 +206,25 @@ namespace MediaBrowser.Providers.Subtitles
var hash = Utilities.ComputeHash(request.MediaPath);
var fileInfo = new FileInfo(request.MediaPath);
var movieByteSize = fileInfo.Length;
-
+ var searchImdbId = request.ContentType == SubtitleMediaType.Movie ? imdbId.ToString(_usCulture) : "";
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> {
- new SubtitleSearchParameters(subLanguageId, hash, movieByteSize),
- subtitleSearchParameters
+ new SubtitleSearchParameters( subLanguageId,
+ movieHash: hash,
+ movieByteSize: movieByteSize,
+ imdbid: searchImdbId ),
};
-
+ parms.AddRange(subtitleSearchParameters);
var result = OpenSubtitles.SearchSubtitles(parms.ToArray());
if (!(result is MethodResponseSubtitleSearch))
{
diff --git a/OpenSubtitlesHandler/SubtitleTypes/SubtitleSearchParameters.cs b/OpenSubtitlesHandler/SubtitleTypes/SubtitleSearchParameters.cs
index f2e70ef81..46af6215b 100644
--- a/OpenSubtitlesHandler/SubtitleTypes/SubtitleSearchParameters.cs
+++ b/OpenSubtitlesHandler/SubtitleTypes/SubtitleSearchParameters.cs
@@ -25,63 +25,17 @@ namespace OpenSubtitlesHandler
/// </summary>
public struct SubtitleSearchParameters
{
- /// <summary>
- /// Paramaters for subtitle search call
- /// </summary>
- /// <param name="subLanguageId">List of language ISO639-3 language codes to search for, divided by ',' (e.g. 'cze,eng,slo')</param>
- /// <param name="movieHash">Video file hash as calculated by one of the implementation functions as seen on http://trac.opensubtitles.org/projects/opensubtitles/wiki/HashSourceCodes</param>
- /// <param name="movieByteSize">Size of video file in bytes </param>
- public SubtitleSearchParameters(string subLanguageId, string movieHash, long movieByteSize)
+ public SubtitleSearchParameters(string subLanguageId, string query = "", string season = "", string episode = "", string movieHash = "", long movieByteSize = 0, string imdbid = "")
{
this.subLanguageId = subLanguageId;
this.movieHash = movieHash;
this.movieByteSize = movieByteSize;
- this.imdbid = "";
- this._episode = "";
- this._season = "";
- this._query = "";
- }
-
- public SubtitleSearchParameters(string subLanguageId, string query)
- {
- this.subLanguageId = subLanguageId;
- this.movieHash = "";
- this.movieByteSize = 0;
- this.imdbid = "";
- this._episode = "";
- this._season = "";
- this._query = query;
- }
-
- public SubtitleSearchParameters(string subLanguageId, string query, string season, string episode)
- {
- this.subLanguageId = subLanguageId;
- this.movieHash = "";
- this.movieByteSize = 0;
- this.imdbid = "";
+ this.imdbid = imdbid;
this._episode = episode;
this._season = season;
this._query = query;
}
- /// <summary>
- /// Paramaters for subtitle search call
- /// </summary>
- /// <param name="subLanguageId">List of language ISO639-3 language codes to search for, divided by ',' (e.g. 'cze,eng,slo')</param>
- /// <param name="movieHash">Video file hash as calculated by one of the implementation functions as seen on http://trac.opensubtitles.org/projects/opensubtitles/wiki/HashSourceCodes</param>
- /// <param name="movieByteSize">Size of video file in bytes </param>
- /// <param name="imdbid"> IMDb ID of movie this video is part of, belongs to.</param>
- public SubtitleSearchParameters(string subLanguageId, string movieHash, long movieByteSize, string imdbid)
- {
- this.subLanguageId = subLanguageId;
- this.movieHash = movieHash;
- this.movieByteSize = movieByteSize;
- this.imdbid = imdbid;
- this._episode = "";
- this._season = "";
- this._query = "";
- }
-
private string subLanguageId;
private string movieHash;
private long movieByteSize;