AppMediaItem.fromJSON constructor
AppMediaItem.fromJSON(
- dynamic map
Implementation
factory AppMediaItem.fromJSON(map) {
try {
AppConfig.logger.t("AppMediaItem fromJSON: ${map['name'] ?? ''} with id ${map['id'] ?? ''}");
int dur = 30;
if(map['duration'] is String && map['duration'].toString().contains(":")) {
final List<String> parts = map['duration'].toString().split(':');
for (int i = 0; i < parts.length; i++) {
dur += int.parse(parts[i]) * (60 ^ (parts.length - i - 1));
}
} else if(map['duration'] is int) {
dur = map['duration'];
}
final appMediaItem = AppMediaItem(
id: map['id'] ?? '',
type: EnumToString.fromString(MediaItemType.values, map['type'].toString()) ?? MediaItemType.song,
album: map['album'] ?? '',
publishedYear: map['publishedYear'] ?? 0,
duration: dur,
language: map['language'] ?? '',
is320Kbps: map['is320Kbps'] ?? false,
lyrics: map['lyrics'] ?? '',
albumId: map['albumId'] ?? '',
description: map['description'] ?? '',
name: map['name'] ?? '',
artist: map['artist'] ?? '',
featInternalArtists: map['featInternalArtists'] as Map<String, String>?,
externalArtists: (map['externalArtists'] as List<dynamic>?)?.map((e) => e.toString()).toList(),
imgUrl: map['imgUrl'] ?? '',
allImgs: (map['allImgs'] as List<dynamic>?)?.map((e) => e.toString()).toList(),
url: map['url']?.toString() ?? '',
permaUrl: map['permaUrl'] ?? '',
allUrls: (map['allUrls'] as List<dynamic>?)?.map((e) => e.toString()).toList(),
quality: int.tryParse(map['quality'].toString()),
releaseDate: map['releaseDate'] ?? 0,
trackNumber: map['trackNumber'],
discNumber: map['discNumber'],
mediaSource: EnumToString.fromString(AppMediaSource.values, map["mediaSource"] ?? AppMediaSource.internal.name) ?? AppMediaSource.internal,
likes: map['likes'] ?? 0,
path: map['path'] ?? '',
state: map['state'] ?? 0,
);
return appMediaItem;
} catch (e) {
AppConfig.logger.e(e.toString());
throw Exception('Error parsing song item: $e');
}
}