ocarina2/lib/api/subsonic/song.dart

46 lines
1.2 KiB
Dart

import 'package:json_annotation/json_annotation.dart';
import 'package:ocarina/api/subsonic/subsonic.dart';
part 'song.g.dart';
@JsonSerializable()
class Song {
Song({
required this.id,
required this.artistName,
required this.title,
required this.albumName,
required this.albumId,
required this.artistId,
required this.duration,
required this.bitRate,
required this.contentType,
required this.fileType,
required String coverArtId,
this.trackNumber,
}) : _coverArtId = coverArtId;
factory Song.fromJson(Map<String, dynamic> json) => _$SongFromJson(json);
Map<String, dynamic> toJson() => _$SongToJson(this);
final String id;
@JsonKey(name: "artist")
final String artistName;
final String artistId;
final String albumId;
final String title;
@JsonKey(name: "album")
final String albumName;
@JsonKey(name: "track")
final int? trackNumber;
final int duration;
final int bitRate;
final String contentType;
@JsonKey(name: "suffix")
final String fileType;
@JsonKey(name: "coverArt")
final String _coverArtId;
String get coverArtUrl => SubsonicApiService().getCoverArtUrl(_coverArtId);
String get streamUrl => SubsonicApiService().getStreamUrl(id);
}