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