SeriesOrderManager.cs 1.0 KB

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