aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-04-07 00:09:32 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-04-07 00:09:32 -0400
commit8e0c9c53bc0a599aa90dc37ff040769653db5e7d (patch)
tree7e89a2ac66a96a9e00b2aaa6ce61cd30f9fb8546 /MediaBrowser.Providers
parentc27e60d2d8c25fac8844553c35461cdad28b38f8 (diff)
add open subtitle option to only download subtitles that are a perfect match
Diffstat (limited to 'MediaBrowser.Providers')
-rw-r--r--MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs1
-rw-r--r--MediaBrowser.Providers/MediaInfo/SubtitleDownloader.cs8
-rw-r--r--MediaBrowser.Providers/MediaInfo/SubtitleScheduledTask.cs1
-rw-r--r--MediaBrowser.Providers/Subtitles/OpenSubtitleDownloader.cs4
4 files changed, 10 insertions, 4 deletions
diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs
index 24bf8b497e..6215100285 100644
--- a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs
+++ b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs
@@ -532,6 +532,7 @@ namespace MediaBrowser.Providers.MediaInfo
currentStreams.Concat(externalSubtitleStreams).ToList(),
subtitleOptions.SkipIfEmbeddedSubtitlesPresent,
subtitleOptions.SkipIfAudioTrackMatches,
+ subtitleOptions.RequirePerfectMatch,
subtitleOptions.DownloadLanguages,
cancellationToken).ConfigureAwait(false);
diff --git a/MediaBrowser.Providers/MediaInfo/SubtitleDownloader.cs b/MediaBrowser.Providers/MediaInfo/SubtitleDownloader.cs
index d822890326..9ae8413d19 100644
--- a/MediaBrowser.Providers/MediaInfo/SubtitleDownloader.cs
+++ b/MediaBrowser.Providers/MediaInfo/SubtitleDownloader.cs
@@ -28,6 +28,7 @@ namespace MediaBrowser.Providers.MediaInfo
List<MediaStream> mediaStreams,
bool skipIfEmbeddedSubtitlesPresent,
bool skipIfAudioTrackMatches,
+ bool requirePerfectMatch,
IEnumerable<string> languages,
CancellationToken cancellationToken)
{
@@ -59,7 +60,7 @@ namespace MediaBrowser.Providers.MediaInfo
{
try
{
- var downloaded = await DownloadSubtitles(video, mediaStreams, skipIfEmbeddedSubtitlesPresent, skipIfAudioTrackMatches, lang, mediaType, cancellationToken)
+ var downloaded = await DownloadSubtitles(video, mediaStreams, skipIfEmbeddedSubtitlesPresent, skipIfAudioTrackMatches, requirePerfectMatch, lang, mediaType, cancellationToken)
.ConfigureAwait(false);
if (downloaded)
@@ -80,6 +81,7 @@ namespace MediaBrowser.Providers.MediaInfo
List<MediaStream> mediaStreams,
bool skipIfEmbeddedSubtitlesPresent,
bool skipIfAudioTrackMatches,
+ bool requirePerfectMatch,
string language,
VideoContentType mediaType,
CancellationToken cancellationToken)
@@ -125,7 +127,9 @@ namespace MediaBrowser.Providers.MediaInfo
ProviderIds = video.ProviderIds,
// Stop as soon as we find something
- SearchAllProviders = false
+ SearchAllProviders = false,
+
+ IsPerfectMatch = requirePerfectMatch
};
var episode = video as Episode;
diff --git a/MediaBrowser.Providers/MediaInfo/SubtitleScheduledTask.cs b/MediaBrowser.Providers/MediaInfo/SubtitleScheduledTask.cs
index b8b17cefee..79da291b77 100644
--- a/MediaBrowser.Providers/MediaInfo/SubtitleScheduledTask.cs
+++ b/MediaBrowser.Providers/MediaInfo/SubtitleScheduledTask.cs
@@ -116,6 +116,7 @@ namespace MediaBrowser.Providers.MediaInfo
mediaStreams,
options.SkipIfEmbeddedSubtitlesPresent,
options.SkipIfAudioTrackMatches,
+ options.RequirePerfectMatch,
options.DownloadLanguages,
cancellationToken).ConfigureAwait(false);
diff --git a/MediaBrowser.Providers/Subtitles/OpenSubtitleDownloader.cs b/MediaBrowser.Providers/Subtitles/OpenSubtitleDownloader.cs
index 2276e391d6..271f8170fc 100644
--- a/MediaBrowser.Providers/Subtitles/OpenSubtitleDownloader.cs
+++ b/MediaBrowser.Providers/Subtitles/OpenSubtitleDownloader.cs
@@ -308,8 +308,8 @@ namespace MediaBrowser.Providers.Subtitles
// Avoid implicitly captured closure
var hasCopy = hash;
- return results.Where(x => x.SubBad == "0" && mediaFilter(x))
- .OrderBy(x => (x.MovieHash == hash ? 0 : 1))
+ return results.Where(x => x.SubBad == "0" && mediaFilter(x) && (!request.IsPerfectMatch || string.Equals(x.MovieHash, hash, StringComparison.OrdinalIgnoreCase)))
+ .OrderBy(x => (string.Equals(x.MovieHash, hash, StringComparison.OrdinalIgnoreCase) ? 0 : 1))
.ThenBy(x => Math.Abs(long.Parse(x.MovieByteSize, _usCulture) - movieByteSize))
.ThenByDescending(x => int.Parse(x.SubDownloadsCnt, _usCulture))
.ThenByDescending(x => double.Parse(x.SubRating, _usCulture))