fix(download): align native metadata preparation and ReplayGain support

This commit is contained in:
zarzet committed 2026-09-28 12:21:15 +07:00
1 parent c0997de19c
commit e61e54f93f
11 files changed
+288 -117

No files matched your search

@@ -1269,11 +1269,11 @@ object NativeDownloadFinalizer {
}
private fun replayGainDurationSeconds(input: FinalizeInput): Double {
val duration = input.request.optInt("duration_ms", 0).let {
if (it > 0) it else trackInt(input, "duration", 0)
}
if (duration <= 0) return 1.0
return if (duration > 10000) duration / 1000.0 else duration.toDouble()
val duration = NativeFinalizationPolicy.durationMilliseconds(
input.request.optLong("duration_ms", 0L),
trackInt(input, "duration", 0).toLong(),
)
return if (duration > 0L) duration / 1000.0 else 1.0
}
private fun buildHistoryRow(input: FinalizeInput, state: FinalizeState): ContentValues {
@@ -11,6 +11,11 @@ import kotlin.math.roundToInt
* finalizer's I/O-heavy orchestration.
*/
internal object NativeFinalizationPolicy {
fun durationMilliseconds(requestMilliseconds: Long, trackSeconds: Long): Long {
if (requestMilliseconds > 0) return requestMilliseconds
return trackSeconds.coerceIn(0, Long.MAX_VALUE / 1000) * 1000
}
fun resolvedAlbumRelativeDirectory(
relativeDirectory: String,
albumFolderTemplate: String,
@@ -245,9 +245,7 @@ internal fun NativeDownloadFinalizer.resolveLyricsLrc(context: Context, input: N
internal fun NativeDownloadFinalizer.lyricsDurationMs(input: NativeDownloadFinalizer.FinalizeInput): Long {
val requestDuration = input.request.optLong("duration_ms", 0L)
val trackDuration = trackInt(input, "duration", 0).toLong()
val duration = if (requestDuration > 0L) requestDuration else trackDuration
if (duration <= 0L) return 0L
return if (duration > 10000L) duration else duration * 1000L
return NativeFinalizationPolicy.durationMilliseconds(requestDuration, trackDuration)
}
internal fun nativeMetadataEditHandled(response: String): Boolean {