parseWatchTrack function
- JsonMap data
Parses an individual track from a watch playlist.
Implementation
JsonMap parseWatchTrack(JsonMap data) {
String? likeStatus;
for (final item in List<JsonMap>.from(nav(data, MENU_ITEMS) as List)) {
if (item.containsKey(TOGGLE_MENU)) {
final service =
(item[TOGGLE_MENU] as JsonMap)['defaultServiceEndpoint'] as JsonMap;
if (service.containsKey('likeEndpoint')) {
likeStatus = parseLikeStatus(service);
}
}
}
final track = <String, dynamic>{
'videoId': data['videoId'],
'title': nav(data, TITLE_TEXT),
'length': nav(data, ['lengthText', 'runs', 0, 'text'], nullIfAbsent: true),
'thumbnail': nav(data, THUMBNAIL),
'likeStatus': likeStatus,
'videoType': nav(data, [
'navigationEndpoint',
...NAVIGATION_VIDEO_TYPE,
], nullIfAbsent: true),
};
track.addAll({
'inLibrary': null,
'feedbackTokens': null,
'pinnedToListenAgain': null,
'listenAgainFeedbackTokens': null,
...parseSongMenuData(data),
});
final longBylineText = nav(data, ['longBylineText']) as JsonMap?;
if (longBylineText != null) {
final songInfo = parseSongRuns(longBylineText['runs'] as List);
track.addAll(songInfo);
}
return track;
}