extractMultiple method

Future<List<LinkMetadata>> extractMultiple(
  1. List<String> urls, {
  2. bool skipCache = false,
  3. int concurrentRequests = 3,
})

Extracts metadata for multiple URLs in parallel

Parameters:

  • urls: List of URLs to extract metadata from
  • skipCache: Whether to skip the cache and extract fresh metadata
  • concurrentRequests: Maximum number of concurrent requests to make

Implementation

Future<List<LinkMetadata>> extractMultiple(
  List<String> urls, {
  bool skipCache = false,
  int concurrentRequests = 3,
}) async {
  if (urls.isEmpty) {
    return [];
  }

  // Use a pool to limit concurrent requests
  final results = <LinkMetadata>[];

  // Process in batches to limit concurrent requests
  for (var i = 0; i < urls.length; i += concurrentRequests) {
    final end = (i + concurrentRequests < urls.length)
        ? i + concurrentRequests
        : urls.length;
    final batch = urls.sublist(i, end);

    // Process batch in parallel
    final batchResults = await Future.wait(
      batch.map((url) => extract(url, skipCache: skipCache)),
    );

    results.addAll(batchResults);
  }

  return results;
}