aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-01-16 22:24:12 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-01-16 22:24:12 -0500
commit94261b7669829fa964469d7964d009024355e70e (patch)
tree22f818692c73ebe99aa6cb9932b37520443eaf7b
parent268b1c7916c1e2bb8c7f64470e17ab954b1ea4df (diff)
update episode refresh
-rw-r--r--MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs2
-rw-r--r--MediaBrowser.Providers/TV/TvdbSeriesProvider.cs52
2 files changed, 33 insertions, 21 deletions
diff --git a/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs b/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs
index 6b902ed8a..d03920742 100644
--- a/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs
+++ b/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs
@@ -112,6 +112,8 @@ namespace MediaBrowser.Providers.TV
if (TvdbSeriesProvider.IsValidSeries(searchInfo.SeriesProviderIds) &&
(searchInfo.IndexNumber.HasValue || searchInfo.PremiereDate.HasValue))
{
+ await TvdbSeriesProvider.Current.EnsureSeriesInfo(searchInfo.SeriesProviderIds, searchInfo.MetadataLanguage, cancellationToken).ConfigureAwait(false);
+
var seriesDataPath = TvdbSeriesProvider.GetSeriesDataPath(_config.ApplicationPaths, searchInfo.SeriesProviderIds);
var searchNumbers = new EpisodeNumbers();
diff --git a/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs b/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs
index 022cf241d..9452438cb 100644
--- a/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs
+++ b/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs
@@ -329,38 +329,48 @@ namespace MediaBrowser.Providers.TV
return false;
}
+ private SemaphoreSlim _ensureSemaphore = new SemaphoreSlim(1,1);
internal async Task<string> EnsureSeriesInfo(Dictionary<string, string> seriesProviderIds, string preferredMetadataLanguage, CancellationToken cancellationToken)
{
- string seriesId;
- if (seriesProviderIds.TryGetValue(MetadataProviders.Tvdb.ToString(), out seriesId))
- {
- var seriesDataPath = GetSeriesDataPath(_config.ApplicationPaths, seriesProviderIds);
+ await _ensureSemaphore.WaitAsync(cancellationToken).ConfigureAwait(false);
- // Only download if not already there
- // The post-scan task will take care of updates so we don't need to re-download here
- if (!IsCacheValid(seriesDataPath, preferredMetadataLanguage))
+ try
+ {
+ string seriesId;
+ if (seriesProviderIds.TryGetValue(MetadataProviders.Tvdb.ToString(), out seriesId))
{
- await DownloadSeriesZip(seriesId, MetadataProviders.Tvdb.ToString(), seriesDataPath, null, preferredMetadataLanguage, cancellationToken).ConfigureAwait(false);
- }
+ var seriesDataPath = GetSeriesDataPath(_config.ApplicationPaths, seriesProviderIds);
- return seriesDataPath;
- }
+ // Only download if not already there
+ // The post-scan task will take care of updates so we don't need to re-download here
+ if (!IsCacheValid(seriesDataPath, preferredMetadataLanguage))
+ {
+ await DownloadSeriesZip(seriesId, MetadataProviders.Tvdb.ToString(), seriesDataPath, null, preferredMetadataLanguage, cancellationToken).ConfigureAwait(false);
+ }
- if (seriesProviderIds.TryGetValue(MetadataProviders.Imdb.ToString(), out seriesId))
- {
- var seriesDataPath = GetSeriesDataPath(_config.ApplicationPaths, seriesProviderIds);
+ return seriesDataPath;
+ }
- // Only download if not already there
- // The post-scan task will take care of updates so we don't need to re-download here
- if (!IsCacheValid(seriesDataPath, preferredMetadataLanguage))
+ if (seriesProviderIds.TryGetValue(MetadataProviders.Imdb.ToString(), out seriesId))
{
- await DownloadSeriesZip(seriesId, MetadataProviders.Imdb.ToString(), seriesDataPath, null, preferredMetadataLanguage, cancellationToken).ConfigureAwait(false);
+ var seriesDataPath = GetSeriesDataPath(_config.ApplicationPaths, seriesProviderIds);
+
+ // Only download if not already there
+ // The post-scan task will take care of updates so we don't need to re-download here
+ if (!IsCacheValid(seriesDataPath, preferredMetadataLanguage))
+ {
+ await DownloadSeriesZip(seriesId, MetadataProviders.Imdb.ToString(), seriesDataPath, null, preferredMetadataLanguage, cancellationToken).ConfigureAwait(false);
+ }
+
+ return seriesDataPath;
}
- return seriesDataPath;
+ return null;
+ }
+ finally
+ {
+ _ensureSemaphore.Release();
}
-
- return null;
}
private bool IsCacheValid(string seriesDataPath, string preferredMetadataLanguage)