diff --git a/lib/class/track.dart b/lib/class/track.dart index a4a509dd..1c473a70 100644 --- a/lib/class/track.dart +++ b/lib/class/track.dart @@ -221,6 +221,20 @@ class TrackExtended { required this.lyrics, }); + static String _padInt(int val) => val.toString().padLeft(2, '0'); + + static int? enforceYearFormat(String? fromYearString) { + final intVal = fromYearString.getIntValue(); + if (intVal != null) return intVal; + if (fromYearString != null) { + try { + final yearDate = DateTime.parse(fromYearString.replaceAll(RegExp(r'[\s]'), '-')); + return int.parse("${yearDate.year}${_padInt(yearDate.month)}${_padInt(yearDate.day)}"); + } catch (_) {} + } + return null; + } + factory TrackExtended.fromJson( Map json, { required ArtistsSplitConfig artistsSplitConfig, @@ -372,7 +386,7 @@ extension TrackExtUtils on TrackExtended { moodList: tag.mood != null ? [tag.mood!] : moodList, composer: tag.composer ?? composer, trackNo: tag.trackNumber.getIntValue() ?? trackNo, - year: tag.year.getIntValue() ?? year, + year: TrackExtended.enforceYearFormat(tag.year) ?? year, dateModified: dateModified ?? this.dateModified, path: path ?? this.path, comment: tag.comment ?? comment, diff --git a/lib/controller/indexer_controller.dart b/lib/controller/indexer_controller.dart index 02d36767..07979a58 100644 --- a/lib/controller/indexer_controller.dart +++ b/lib/controller/indexer_controller.dart @@ -1170,7 +1170,7 @@ class Indexer { ); final bitrate = map['bitrate'] as int?; final disc = map['disc_number'] as int?; - final year = (map['year'] as String?).getIntValue(); + final yearString = map['year'] as String?; final trext = TrackExtended( title: e.title, originalArtist: e.artist ?? UnknownTags.ARTIST, @@ -1184,7 +1184,7 @@ class Indexer { composer: e.composer ?? '', trackNo: e.track ?? 0, duration: e.duration == null ? 0 : e.duration! ~/ 1000, - year: year ?? 0, + year: TrackExtended.enforceYearFormat(yearString) ?? 0, size: e.size, dateAdded: e.dateAdded ?? 0, dateModified: e.dateModified ?? 0, diff --git a/pubspec.yaml b/pubspec.yaml index cb186c42..35650889 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: namida description: A Beautiful and Feature-rich Music Player, With YouTube & Video Support Built in Flutter publish_to: "none" -version: 2.2.6-beta+240513130 +version: 2.2.7-beta+240513130 environment: sdk: ">=3.1.4 <4.0.0"