ItemIdentifier.cs 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. using System.Linq;
  2. using System.Threading;
  3. using System.Threading.Tasks;
  4. namespace MediaBrowser.Controller.Providers
  5. {
  6. public static class ItemIdentifier<TLookupInfo>
  7. where TLookupInfo : ItemLookupInfo
  8. {
  9. public static async Task FindIdentities(TLookupInfo item, IProviderManager providerManager, CancellationToken cancellationToken)
  10. {
  11. var providers = providerManager.GetItemIdentityProviders<TLookupInfo>();
  12. var converters = providerManager.GetItemIdentityConverters<TLookupInfo>().ToList();
  13. foreach (var provider in providers)
  14. {
  15. await provider.Identify(item);
  16. }
  17. bool changesMade = true;
  18. while (changesMade)
  19. {
  20. changesMade = false;
  21. foreach (var converter in converters)
  22. {
  23. if (await converter.Convert(item))
  24. {
  25. changesMade = true;
  26. }
  27. }
  28. }
  29. }
  30. }
  31. }