mirror of
https://github.com/zarzet/SpotiFLAC-Mobile.git
synced 2026-10-03 06:36:55 +02:00
feat(library): filter tracks missing verified ReplayGain tags
This commit is contained in:
1 parent
fbf479c102
commit
718e13f24e
20 files changed
+568
-20
No files matched your search
@@ -7,6 +7,11 @@ String confirmedMissingLyricsSqlPredicate({
|
||||
required String lyricsKnownExpr,
|
||||
}) => '($lyricsKnownExpr) AND COALESCE($hasLyricsExpr, 0) = 0';
|
||||
|
||||
String confirmedMissingReplayGainSqlPredicate({
|
||||
required String hasReplayGainExpr,
|
||||
required String replayGainKnownExpr,
|
||||
}) => '($replayGainKnownExpr) AND COALESCE($hasReplayGainExpr, 0) = 0';
|
||||
|
||||
class _QueueOrderTerm {
|
||||
final String column;
|
||||
final bool descending;
|
||||
@@ -74,6 +79,8 @@ extension _LibraryDbQueueSql on LibraryDatabase {
|
||||
NULL AS file_mod_time,
|
||||
h.bitrate,
|
||||
h.format,
|
||||
h.has_replaygain,
|
||||
h.replaygain_metadata_scan_version,
|
||||
h.sort_track,
|
||||
h.sort_artist,
|
||||
h.sort_album,
|
||||
@@ -161,6 +168,9 @@ extension _LibraryDbQueueSql on LibraryDatabase {
|
||||
l.file_mod_time,
|
||||
l.bitrate,
|
||||
l.format,
|
||||
l.has_replaygain,
|
||||
CASE WHEN l.audio_metadata_scan_version >= ${LibraryDatabase.audioMetadataScanVersion}
|
||||
THEN 1 ELSE 0 END AS replaygain_metadata_scan_version,
|
||||
l.track_name_norm AS sort_track,
|
||||
l.artist_name_norm AS sort_artist,
|
||||
l.album_name_norm AS sort_album,
|
||||
@@ -220,6 +230,8 @@ extension _LibraryDbQueueSql on LibraryDatabase {
|
||||
NULL AS file_mod_time,
|
||||
NULL AS bitrate,
|
||||
NULL AS format,
|
||||
NULL AS has_replaygain,
|
||||
NULL AS replaygain_metadata_scan_version,
|
||||
NULL AS sort_track,
|
||||
NULL AS sort_artist,
|
||||
NULL AS sort_album,
|
||||
@@ -408,6 +420,9 @@ extension _LibraryDbQueueSql on LibraryDatabase {
|
||||
labelExpr: 'h.label',
|
||||
hasLyricsExpr: 'h.has_lyrics',
|
||||
lyricsKnownExpr: 'COALESCE(h.lyrics_metadata_scan_version, 0) >= 1',
|
||||
hasReplayGainExpr: 'h.has_replaygain',
|
||||
replayGainKnownExpr:
|
||||
'COALESCE(h.replaygain_metadata_scan_version, 0) >= 1',
|
||||
);
|
||||
}
|
||||
|
||||
@@ -456,6 +471,9 @@ extension _LibraryDbQueueSql on LibraryDatabase {
|
||||
labelExpr: 'l.label',
|
||||
hasLyricsExpr: 'l.has_lyrics',
|
||||
lyricsKnownExpr:
|
||||
'COALESCE(l.audio_metadata_scan_version, 0) >= ${LibraryDatabase.lyricsMetadataScanVersion}',
|
||||
hasReplayGainExpr: 'l.has_replaygain',
|
||||
replayGainKnownExpr:
|
||||
'COALESCE(l.audio_metadata_scan_version, 0) >= ${LibraryDatabase.audioMetadataScanVersion}',
|
||||
);
|
||||
}
|
||||
@@ -478,6 +496,8 @@ extension _LibraryDbQueueSql on LibraryDatabase {
|
||||
required String labelExpr,
|
||||
required String hasLyricsExpr,
|
||||
required String lyricsKnownExpr,
|
||||
required String hasReplayGainExpr,
|
||||
required String replayGainKnownExpr,
|
||||
}) {
|
||||
final quality = request.quality?.trim().toLowerCase();
|
||||
if (quality != null && quality.isNotEmpty) {
|
||||
@@ -572,6 +592,15 @@ extension _LibraryDbQueueSql on LibraryDatabase {
|
||||
),
|
||||
);
|
||||
break;
|
||||
case 'missing-replaygain':
|
||||
// Only files whose tags were read since ReplayGain was indexed.
|
||||
where.add(
|
||||
confirmedMissingReplayGainSqlPredicate(
|
||||
hasReplayGainExpr: hasReplayGainExpr,
|
||||
replayGainKnownExpr: replayGainKnownExpr,
|
||||
),
|
||||
);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -826,6 +855,8 @@ extension _LibraryDbQueueSql on LibraryDatabase {
|
||||
'label': row['label'],
|
||||
'copyright': row['copyright'],
|
||||
'format': row['format'],
|
||||
'hasReplayGain':
|
||||
row['has_replaygain'] == 1 || row['has_replaygain'] == true,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -860,6 +891,10 @@ extension _LibraryDbQueueSql on LibraryDatabase {
|
||||
'sampleRate': row['sample_rate'],
|
||||
'bitrate': row['bitrate'],
|
||||
'format': row['format'],
|
||||
'hasReplayGain':
|
||||
row['has_replaygain'] == 1 || row['has_replaygain'] == true,
|
||||
'replayGainMetadataScanVersion':
|
||||
row['replaygain_metadata_scan_version'] ?? 0,
|
||||
'genre': row['genre'],
|
||||
'composer': row['composer'],
|
||||
'label': row['label'],
|
||||
|
||||
Reference in new issue
Block a user