瀏覽代碼

Change to IAsyncEnumerable

Claus Vium 5 年之前
父節點
當前提交
6d37a5fe52

+ 7 - 13
MediaBrowser.Providers/Plugins/TheTvdb/TvdbClientManager.cs

@@ -229,49 +229,43 @@ namespace MediaBrowser.Providers.Plugins.TheTvdb
             return GetEpisodesPageAsync(tvdbId, 1, episodeQuery, language, cancellationToken);
             return GetEpisodesPageAsync(tvdbId, 1, episodeQuery, language, cancellationToken);
         }
         }
 
 
-        public async Task<IEnumerable<KeyType>> GetImageKeyTypesForSeriesAsync(int tvdbId, string language, CancellationToken cancellationToken)
+        public async IAsyncEnumerable<KeyType> GetImageKeyTypesForSeriesAsync(int tvdbId, string language, CancellationToken cancellationToken)
         {
         {
             var cacheKey = GenerateKey(nameof(TvDbClient.Series.GetImagesSummaryAsync), tvdbId);
             var cacheKey = GenerateKey(nameof(TvDbClient.Series.GetImagesSummaryAsync), tvdbId);
             var imagesSummary = await TryGetValue(cacheKey, language, () => TvDbClient.Series.GetImagesSummaryAsync(tvdbId, cancellationToken)).ConfigureAwait(false);
             var imagesSummary = await TryGetValue(cacheKey, language, () => TvDbClient.Series.GetImagesSummaryAsync(tvdbId, cancellationToken)).ConfigureAwait(false);
-            var keyTypes = new List<KeyType>();
 
 
             if (imagesSummary.Data.Fanart > 0)
             if (imagesSummary.Data.Fanart > 0)
             {
             {
-                keyTypes.Add(KeyType.Fanart);
+                yield return KeyType.Fanart;
             }
             }
 
 
             if (imagesSummary.Data.Series > 0)
             if (imagesSummary.Data.Series > 0)
             {
             {
-                keyTypes.Add(KeyType.Series);
+                yield return KeyType.Series;
             }
             }
 
 
             if (imagesSummary.Data.Poster > 0)
             if (imagesSummary.Data.Poster > 0)
             {
             {
-                keyTypes.Add(KeyType.Poster);
+                yield return KeyType.Poster;
             }
             }
-
-            return keyTypes;
         }
         }
 
 
-        public async Task<IEnumerable<KeyType>> GetImageKeyTypesForSeasonAsync(int tvdbId, string language, CancellationToken cancellationToken)
+        public async IAsyncEnumerable<KeyType> GetImageKeyTypesForSeasonAsync(int tvdbId, string language, CancellationToken cancellationToken)
         {
         {
             var cacheKey = GenerateKey(nameof(TvDbClient.Series.GetImagesSummaryAsync), tvdbId);
             var cacheKey = GenerateKey(nameof(TvDbClient.Series.GetImagesSummaryAsync), tvdbId);
             var imagesSummary = await TryGetValue(cacheKey, language, () => TvDbClient.Series.GetImagesSummaryAsync(tvdbId, cancellationToken)).ConfigureAwait(false);
             var imagesSummary = await TryGetValue(cacheKey, language, () => TvDbClient.Series.GetImagesSummaryAsync(tvdbId, cancellationToken)).ConfigureAwait(false);
-            var keyTypes = new List<KeyType>();
 
 
             if (imagesSummary.Data.Season > 0)
             if (imagesSummary.Data.Season > 0)
             {
             {
-                keyTypes.Add(KeyType.Season);
+                yield return KeyType.Season;
             }
             }
 
 
             if (imagesSummary.Data.Fanart > 0)
             if (imagesSummary.Data.Fanart > 0)
             {
             {
-                keyTypes.Add(KeyType.Fanart);
+                yield return KeyType.Fanart;
             }
             }
 
 
             // TODO seasonwide is not supported in TvDbSharper
             // TODO seasonwide is not supported in TvDbSharper
-
-            return keyTypes;
         }
         }
 
 
         private async Task<T> TryGetValue<T>(string key, string language, Func<Task<T>> resultFactory)
         private async Task<T> TryGetValue<T>(string key, string language, Func<Task<T>> resultFactory)

+ 2 - 2
MediaBrowser.Providers/Plugins/TheTvdb/TvdbSeasonImageProvider.cs

@@ -65,8 +65,8 @@ namespace MediaBrowser.Providers.Plugins.TheTvdb
             var language = item.GetPreferredMetadataLanguage();
             var language = item.GetPreferredMetadataLanguage();
             var remoteImages = new List<RemoteImageInfo>();
             var remoteImages = new List<RemoteImageInfo>();
 
 
-            var keyTypes = await _tvdbClientManager.GetImageKeyTypesForSeasonAsync(tvdbId, language, cancellationToken).ConfigureAwait(false);
-            foreach (var keyType in keyTypes)
+            var keyTypes = _tvdbClientManager.GetImageKeyTypesForSeasonAsync(tvdbId, language, cancellationToken).ConfigureAwait(false);
+            await foreach (var keyType in keyTypes)
             {
             {
                 var imageQuery = new ImagesQuery
                 var imageQuery = new ImagesQuery
                 {
                 {

+ 2 - 2
MediaBrowser.Providers/Plugins/TheTvdb/TvdbSeriesImageProvider.cs

@@ -60,9 +60,9 @@ namespace MediaBrowser.Providers.Plugins.TheTvdb
             var language = item.GetPreferredMetadataLanguage();
             var language = item.GetPreferredMetadataLanguage();
             var remoteImages = new List<RemoteImageInfo>();
             var remoteImages = new List<RemoteImageInfo>();
             var tvdbId = Convert.ToInt32(item.GetProviderId(MetadataProvider.Tvdb));
             var tvdbId = Convert.ToInt32(item.GetProviderId(MetadataProvider.Tvdb));
-            var allowedKeyTypes = await _tvdbClientManager.GetImageKeyTypesForSeriesAsync(tvdbId, language, cancellationToken)
+            var allowedKeyTypes = _tvdbClientManager.GetImageKeyTypesForSeriesAsync(tvdbId, language, cancellationToken)
                 .ConfigureAwait(false);
                 .ConfigureAwait(false);
-            foreach (KeyType keyType in allowedKeyTypes)
+            await foreach (KeyType keyType in allowedKeyTypes)
             {
             {
                 var imageQuery = new ImagesQuery
                 var imageQuery = new ImagesQuery
                 {
                 {