parsePlaylist function

JsonMap parsePlaylist(
  1. JsonMap data
)

Parses a playlist from data.

Implementation

JsonMap parsePlaylist(JsonMap data) {
  final JsonMap realData;
  if (data.containsKey(MTRIR)) {
    realData = nav(data, [MTRIR]) as JsonMap;
  } else {
    realData = data;
  }
  final playlist = <String, dynamic>{
    'title': nav(realData, TITLE_TEXT, nullIfAbsent: true),
    'playlistId': (nav(realData, [...TITLE, ...NAVIGATION_BROWSE_ID]) as String)
        .substring(2),
    'thumbnails': nav(realData, THUMBNAIL_RENDERER),
  };

  final subtitle = realData['subtitle'] as JsonMap;
  if (subtitle.containsKey('runs')) {
    playlist['description'] =
        (subtitle['runs'] as List)
            .map((run) => (run as JsonMap)['text'])
            .join();
    if ((subtitle['runs'] as List).length == 3 &&
        RegExp(r'\d+ ').hasMatch(nav(realData, SUBTITLE2) as String)) {
      playlist['count'] = (nav(realData, SUBTITLE2) as String).split(' ')[0];
      playlist['author'] = parseSongArtistsRuns(
        (subtitle['runs'] as List).sublist(0, 1),
      );
    }
  }

  return playlist;
}