parseSongFlat function
- 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;
}