SeriesOrderManager.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using System.Threading.Tasks;
  4. using MediaBrowser.Common;
  5. using MediaBrowser.Controller.Providers;
  6. namespace MediaBrowser.Providers.Manager
  7. {
  8. public class SeriesOrderManager : ISeriesOrderManager
  9. {
  10. private Dictionary<string, ISeriesOrderProvider[]> _providers;
  11. public void AddParts(IEnumerable<ISeriesOrderProvider> orderProviders)
  12. {
  13. _providers = orderProviders
  14. .GroupBy(p => p.OrderType)
  15. .ToDictionary(g => g.Key, g => g.ToArray());
  16. }
  17. public async Task<int?> FindSeriesIndex(string orderType, string seriesName)
  18. {
  19. ISeriesOrderProvider[] providers;
  20. if (!_providers.TryGetValue(orderType, out providers))
  21. return null;
  22. foreach (ISeriesOrderProvider provider in providers)
  23. {
  24. int? index = await provider.FindSeriesIndex(seriesName);
  25. if (index != null)
  26. return index;
  27. }
  28. return null;
  29. }
  30. }
  31. }