YtSong.fromJson constructor
YtSong.fromJson( - JsonMap jsonData
)
Implementation
factory YtSong.fromJson(JsonMap jsonData) {
final String? id = jsonData['videoId'] as String?;
return YtSong(
thumbnailData: YtThumbnailData.fromJson(
List<JsonMap>.from(jsonData['thumbnails'] as List),
),
id: id,
title: jsonData['title'] as String,
album:
jsonData['album'] is JsonMap
? YtBaseObject.fromJson(
jsonData['album'] as JsonMap,
'id',
'name',
)
: null,
inLibrary: jsonData['inLibrary'] as bool? ?? false,
feedbackTokenAdd:
(jsonData['feedbackTokens']) != null
? (jsonData['feedbackTokens'] as JsonMap)['add'] as String?
: null,
feedbackTokenRemove:
(jsonData['feedbackTokens']) != null
? (jsonData['feedbackTokens'] as JsonMap)['remove'] as String?
: null,
videoType: VideoType.fromValue(jsonData['videoType'] as String?),
durationRaw: jsonData['duration'] as String?,
duration:
jsonData['duration_seconds'] is int
? Duration(seconds: jsonData['duration_seconds'] as int)
: null,
artists:
List<JsonMap>.from(jsonData['artists'] as List)
.map((artist) => YtBaseObject.fromJson(artist, 'id', 'name'))
.toList(),
views: jsonData['views'] as String?,
isExplicit: jsonData['isExplicit'] as bool,
year:
(jsonData['year'] is int)
? (jsonData['year'] as int)
: ((jsonData['year'] is String)
? (int.tryParse(jsonData['year'] as String))
: null),
isAvailable:
(jsonData['isAvailable'] as bool?) == null
? (id != null)
: jsonData['isAvailable'] as bool && (id != null),
);
}