Skip to content

Commit

Permalink
chore: sort network lyrics only if track duration was not modified (n…
Browse files Browse the repository at this point in the history
…ightcore/spedup)
  • Loading branch information
MSOB7YY committed Jan 26, 2025
1 parent 26acfe7 commit 1039ece
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 6 deletions.
3 changes: 2 additions & 1 deletion lib/controller/lyrics_controller.dart
Original file line number Diff line number Diff line change
Expand Up @@ -335,7 +335,8 @@ class _LRCSearchManager with PortsProvider<SendPort> {
final jsonLists = (jsonDecode(responseBody) as List<dynamic>?) ?? [];

final mainDuration = details?.durationMS ?? 0;
if (mainDuration > 0) {
final isDurationModified = details?.isDurationModified ?? false;
if (mainDuration > 0 && !isDurationModified) {
// -- prefer lyrics with closer duration (if info the same)
jsonLists.sort(
(a, b) {
Expand Down
2 changes: 2 additions & 0 deletions lib/controller/lyrics_search_utils/lrc_search_details.dart
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
class LRCSearchDetails {
final String title, artist, album;
final int durationMS;
final bool isDurationModified;

const LRCSearchDetails({
required this.title,
required this.artist,
required this.album,
required this.durationMS,
required this.isDurationModified,
});
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,14 +45,46 @@ class LrcSearchUtilsSelectable extends LrcSearchUtils {
return track.lyrics != '' || super.hasLyrics();
}

static final _durationModifiedRegex = RegExp('nightcore|sped up', caseSensitive: false);
static bool _checkIsDurationModified(String property) {
return _durationModifiedRegex.firstMatch(property) != null;
}

@override
List<LRCSearchDetails> searchDetailsQueries() {
final durMS = trackExt.durationMS;
final isDurationModified = _checkIsDurationModified(trackExt.originalGenre) || _checkIsDurationModified(trackExt.title) || _checkIsDurationModified(trackExt.originalArtist);
return [
LRCSearchDetails(title: trackExt.title, artist: trackExt.originalArtist, album: '', durationMS: durMS),
LRCSearchDetails(title: trackExt.title, artist: trackExt.originalArtist, album: trackExt.album, durationMS: durMS),
if (trackExt.artistsList.isNotEmpty) LRCSearchDetails(title: trackExt.title, artist: trackExt.artistsList.first, album: '', durationMS: durMS),
if (trackExt.artistsList.isNotEmpty) LRCSearchDetails(title: trackExt.title, artist: trackExt.artistsList.first, album: trackExt.album, durationMS: durMS),
LRCSearchDetails(
title: trackExt.title,
artist: trackExt.originalArtist,
album: '',
durationMS: durMS,
isDurationModified: isDurationModified,
),
LRCSearchDetails(
title: trackExt.title,
artist: trackExt.originalArtist,
album: trackExt.album,
durationMS: durMS,
isDurationModified: isDurationModified,
),
if (trackExt.artistsList.isNotEmpty)
LRCSearchDetails(
title: trackExt.title,
artist: trackExt.artistsList.first,
album: '',
durationMS: durMS,
isDurationModified: isDurationModified,
),
if (trackExt.artistsList.isNotEmpty)
LRCSearchDetails(
title: trackExt.title,
artist: trackExt.artistsList.first,
album: trackExt.album,
durationMS: durMS,
isDurationModified: isDurationModified,
),
];
}

Expand Down
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
@@ -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: 4.9.4-beta+250125000
version: 4.9.42-beta+250126167

environment:
sdk: ">=3.6.0 <4.0.0"
Expand Down

0 comments on commit 1039ece

Please sign in to comment.