extractTwitterCard method

List<StructuredDataExtractionResult> extractTwitterCard(
  1. String html
)

Extracts Twitter Card data from HTML

Implementation

List<StructuredDataExtractionResult> extractTwitterCard(String html) {
  final document = html_parser.parse(html);
  final results = <StructuredDataExtractionResult>[];

  try {
    // Find all meta tags with name starting with "twitter:"
    final metaTags = document.querySelectorAll('meta[name^="twitter:"]');

    if (metaTags.isEmpty) {
      return results;
    }

    final data = <String, dynamic>{};

    for (final metaTag in metaTags) {
      final name = metaTag.attributes['name'];
      final content = metaTag.attributes['content'];

      if (name != null && content != null) {
        // Remove the "twitter:" prefix
        final key = name.substring(8);
        data[key] = content;
      }
    }

    if (data.isNotEmpty) {
      // Add type information
      data['@type'] = 'TwitterCard';

      results.add(
        StructuredDataExtractionResult(
          type: StructuredDataType.twitterCard,
          data: data,
          rawData: metaTags.map((e) => e.outerHtml).join('\n'),
        ),
      );
    }

    logger?.info('Extracted ${results.length} Twitter Card items');
  } catch (e) {
    logger?.error('Error extracting Twitter Card data: $e');
  }

  return results;
}