parseSongFlat function

JsonMap parseSongFlat(
  1. JsonMap data
)

Parses a song from data.

Implementation

JsonMap parseSongFlat(JsonMap data) {
  final columns = List.generate(
    (data['flexColumns'] as List).length,
    (i) => getFlexColumnItem(data, i),
  );

  final song = <String, dynamic>{
    'title': nav(columns[0], TEXT_RUN_TEXT),
    'videoId': nav(columns[0], [
      ...TEXT_RUN,
      ...NAVIGATION_VIDEO_ID,
    ], nullIfAbsent: true),
    'thumbnails': nav(data, THUMBNAILS),
    'isExplicit': nav(data, BADGE_LABEL, nullIfAbsent: true) != null,
  };

  final runs = nav(columns[1], TEXT_RUNS);
  song.addAll(parseSongRuns(runs as List, skipTypeSpec: true));

  if (columns.length > 2 &&
      columns[2] != null &&
      (nav(columns[2], TEXT_RUN) as JsonMap).containsKey(
        'navigationEndpoint',
      )) {
    song['album'] = {
      'name': nav(columns[2], TEXT_RUN_TEXT),
      'id': nav(columns[2], [...TEXT_RUN, ...NAVIGATION_BROWSE_ID]),
    };
  }

  return song;
}