getVisitorId function

Future<Map<String, String>> getVisitorId(
  1. Future<Response> requestFunc(
    1. String url
    )
)

Returns a X-Goog-Visitor-Id.

Implementation

Future<Map<String, String>> getVisitorId(
  Future<Response> Function(String url) requestFunc,
) async {
  final response = await requestFunc(YTM_DOMAIN);
  final regex = RegExp(r'ytcfg\.set\s*\(\s*({.+?})\s*\)\s*;');
  final matches = regex.allMatches(decodeEscapes(response.data.toString()));
  String visitorId = '';
  if (matches.isNotEmpty) {
    final jsonStr = matches.first.group(1)!;
    final ytcfg = jsonDecode(jsonStr) as JsonMap;
    visitorId =
        (ytcfg['VISITOR_DATA'] ?? ytcfg['EOM_VISITOR_DATA'] ?? '') as String;
  }
  return {'X-Goog-Visitor-Id': visitorId};
}