extractMultiple method
Extracts metadata for multiple URLs in parallel
Parameters:
urls
: List of URLs to extract metadata fromskipCache
: Whether to skip the cache and extract fresh metadataconcurrentRequests
: 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;
}