mirror of
https://github.com/zarzet/SpotiFLAC-Mobile.git
synced 2026-04-21 19:16:01 +02:00
01b8fd2480
- Backend: Return full metadata (Track, Disc, Year) from Tidal/Qobuz/Amazon download results - Flutter: Use backend metadata for tagging converted M4A and history entries - Fix: Duplicate convertTrack method in deezer.go - Fix: Better error message for Deezer fallback failure - Changed: Default service fallback to Tidal -> Qobuz -> Amazon - Build: Re-enabled resource shrinking and minification for release build
70 lines
1.6 KiB
Dart
70 lines
1.6 KiB
Dart
import 'package:json_annotation/json_annotation.dart';
|
|
|
|
part 'track.g.dart';
|
|
|
|
/// Track model representing a music track
|
|
@JsonSerializable()
|
|
class Track {
|
|
final String id;
|
|
final String name;
|
|
final String artistName;
|
|
final String albumName;
|
|
final String? albumArtist;
|
|
final String? coverUrl;
|
|
final String? isrc;
|
|
final int duration;
|
|
final int? trackNumber;
|
|
final int? discNumber;
|
|
final String? releaseDate;
|
|
final String? deezerId;
|
|
final ServiceAvailability? availability;
|
|
|
|
const Track({
|
|
required this.id,
|
|
required this.name,
|
|
required this.artistName,
|
|
required this.albumName,
|
|
this.albumArtist,
|
|
this.coverUrl,
|
|
this.isrc,
|
|
required this.duration,
|
|
this.trackNumber,
|
|
this.discNumber,
|
|
this.releaseDate,
|
|
this.deezerId,
|
|
this.availability,
|
|
});
|
|
|
|
factory Track.fromJson(Map<String, dynamic> json) => _$TrackFromJson(json);
|
|
Map<String, dynamic> toJson() => _$TrackToJson(this);
|
|
}
|
|
|
|
@JsonSerializable()
|
|
class ServiceAvailability {
|
|
final bool tidal;
|
|
final bool qobuz;
|
|
final bool amazon;
|
|
final bool deezer;
|
|
final String? tidalUrl;
|
|
final String? qobuzUrl;
|
|
final String? amazonUrl;
|
|
final String? deezerUrl;
|
|
final String? deezerId;
|
|
|
|
const ServiceAvailability({
|
|
this.tidal = false,
|
|
this.qobuz = false,
|
|
this.amazon = false,
|
|
this.deezer = false,
|
|
this.tidalUrl,
|
|
this.qobuzUrl,
|
|
this.amazonUrl,
|
|
this.deezerUrl,
|
|
this.deezerId,
|
|
});
|
|
|
|
factory ServiceAvailability.fromJson(Map<String, dynamic> json) =>
|
|
_$ServiceAvailabilityFromJson(json);
|
|
Map<String, dynamic> toJson() => _$ServiceAvailabilityToJson(this);
|
|
}
|