Browse Source

fix episodes subtitles

Luis Miguel Almánzar 11 years ago
parent
commit
ad7af6355d

+ 22 - 15
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))
             {

+ 2 - 48
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;