parseAudioPlaylist function
- JsonMap response,
- int? limit,
- RequestFuncBodyType requestFunc
Parses audio playlist.
Implementation
Future<JsonMap> parseAudioPlaylist(
JsonMap response,
int? limit,
RequestFuncBodyType requestFunc,
) async {
final playlist = <String, dynamic>{
'owned': false,
'privacy': 'PUBLIC',
'description': null,
'views': null,
'duration': null,
'tracks': <JsonMap>[],
'thumbnails': <dynamic>[],
'related': <dynamic>[],
};
final sectionList = nav(response, [
...TWO_COLUMN_RENDERER,
'secondaryContents',
...SECTION,
]);
final contentData = nav(sectionList, [
...CONTENT,
'musicPlaylistShelfRenderer',
]);
playlist['id'] = nav(contentData, [
...CONTENT,
MRLIR,
...PLAY_BUTTON,
'playNavigationEndpoint',
...WATCH_PLAYLIST_ID,
]);
playlist['trackCount'] = nav(contentData, ['collapsedItemCount']);
playlist['tracks'] = [];
if ((contentData as JsonMap).containsKey('contents')) {
playlist['tracks'] = parsePlaylistItems(
contentData['contents'] as List<JsonMap>,
);
List parseFunc(contents) => parsePlaylistItems(contents as List<JsonMap>);
(playlist['tracks'] as List).addAll(
await getContinuations2025(contentData, limit, requestFunc, parseFunc),
);
}
playlist['title'] =
(((playlist['tracks'] as List)[0] as JsonMap)['album']
as JsonMap)['name'];
playlist['duration_seconds'] = sumTotalDuration(playlist);
return playlist;
}