parseM3U8 static method

List<M3U8Item> parseM3U8({
  1. required String url,
  2. required Map<String, String> headers,
  3. required String data,
})

Implementation

static List<M3U8Item> parseM3U8({
  required final String url,
  required final Map<String, String> headers,
  required final String data,
}) =>
    RegExp(r'#(EXT-X-STREAM-INF|EXTINF):([^\n]+)\n([^\n]+)')
        .allMatches(data)
        .map(
      (final RegExpMatch x) {
        final Map<String, String> attributes = <String, String>{};
        for (final String x in x.group(2)!.split(',')) {
          final List<String> parsed = x.trim().split('=');
          if (parsed.length == 2) {
            attributes[parsed[0]] = parsed[1];
          }
        }

        String route = x.group(3)!.trim();
        if (!route.startsWith('http')) {
          route = joinURL(url, route, removeParentLastRoute: true);
        }

        return M3U8Item(route, headers, attributes);
      },
    ).toList();