mirror of
https://github.com/zarzet/SpotiFLAC-Mobile.git
synced 2026-10-02 22:26:52 +02:00
fix(metadata): preserve the selected recording during download enrichment
This commit is contained in:
1 parent
88508c806a
commit
2538cdffe1
2 files changed
+70
-4
No files matched your search
@@ -1,6 +1,7 @@
|
||||
import 'package:spotiflac_android/models/track.dart';
|
||||
import 'package:spotiflac_android/services/platform_bridge.dart';
|
||||
import 'package:spotiflac_android/utils/int_utils.dart';
|
||||
import 'package:spotiflac_android/utils/isrc_utils.dart';
|
||||
import 'package:spotiflac_android/utils/logger.dart';
|
||||
import 'package:spotiflac_android/utils/string_utils.dart';
|
||||
|
||||
@@ -26,18 +27,32 @@ Future<Track> enrichIncompleteDownloadTrack(
|
||||
final data = response['track'];
|
||||
if (data is! Map<String, dynamic>) return track;
|
||||
String? text(String key) => normalizeOptionalString(data[key]?.toString());
|
||||
final selectedIsrc = normalizeIsrc(track.isrc);
|
||||
final resolvedIsrc = normalizeIsrc(text('isrc'));
|
||||
if (selectedIsrc.isNotEmpty &&
|
||||
resolvedIsrc.isNotEmpty &&
|
||||
selectedIsrc != resolvedIsrc) {
|
||||
AppLogger(
|
||||
'DownloadMetadata',
|
||||
).w('Ignoring supplemental metadata for a different recording');
|
||||
return track;
|
||||
}
|
||||
final durationMs = readPositiveInt(data['duration_ms']);
|
||||
return track.copyWith(
|
||||
id: text('spotify_id') ?? track.id,
|
||||
name: text('name') ?? track.name,
|
||||
artistName: text('artists') ?? track.artistName,
|
||||
// This lookup fills missing credits; the selected track still determines
|
||||
// which recording is downloaded and named (including remix qualifiers).
|
||||
name: normalizeOptionalString(track.name) ?? text('name') ?? track.name,
|
||||
artistName:
|
||||
normalizeOptionalString(track.artistName) ??
|
||||
text('artists') ??
|
||||
track.artistName,
|
||||
albumName: text('album_name') ?? track.albumName,
|
||||
albumArtist: text('album_artist') ?? track.albumArtist,
|
||||
artistId: text('artist_id') ?? text('artistId') ?? track.artistId,
|
||||
albumId: text('album_id') ?? track.albumId,
|
||||
coverUrl: text('images') ?? track.coverUrl,
|
||||
duration: durationMs == null ? track.duration : durationMs ~/ 1000,
|
||||
isrc: text('isrc') ?? track.isrc,
|
||||
isrc: normalizeOptionalString(track.isrc) ?? text('isrc'),
|
||||
trackNumber: readPositiveInt(data['track_number']) ?? track.trackNumber,
|
||||
discNumber: readPositiveInt(data['disc_number']) ?? track.discNumber,
|
||||
totalDiscs: readPositiveInt(data['total_discs']) ?? track.totalDiscs,
|
||||
|
||||
Reference in new issue
Block a user