refactor(android): share native album artist resolution

This commit is contained in:
zarzet committed 2026-10-18 00:46:10 +07:00
1 parent ce32558d46
commit 504c3cd18b
2 files changed
+11 -29

No files matched your search

@@ -993,14 +993,7 @@ object NativeDownloadFinalizer {
.put("title", trackString(input, "name", input.request.optString("track_name", "")))
.put("artist", trackString(input, "artistName", input.request.optString("artist_name", "")))
.put("album", trackString(input, "albumName", input.request.optString("album_name", "")))
.put(
"album_artist",
NativeFinalizationPolicy.authoritativeAlbumArtist(
requestValue = requestString(input, "album_artist"),
trackValue = trackString(input, "albumArtist", ""),
providerResultValue = resultString(input, "album_artist"),
),
)
.put("album_artist", resolvedAlbumArtist(input))
.put("track_number", trackInt(input, "trackNumber", input.request.optInt("track_number", 0)))
.put("disc_number", trackInt(input, "discNumber", input.request.optInt("disc_number", 0)))
.put("isrc", trackString(input, "isrc", input.request.optString("isrc", "")))
@@ -1164,11 +1157,7 @@ object NativeDownloadFinalizer {
val albumId = trackString(input, "albumId", "")
if (albumId.isNotBlank()) return "id:$albumId"
val albumName = trackString(input, "albumName", input.request.optString("album_name", ""))
val albumArtist = NativeFinalizationPolicy.authoritativeAlbumArtist(
requestValue = requestString(input, "album_artist"),
trackValue = trackString(input, "albumArtist", ""),
providerResultValue = resultString(input, "album_artist"),
)
val albumArtist = resolvedAlbumArtist(input)
return "name:$albumName|$albumArtist"
}
@@ -1187,16 +1176,7 @@ object NativeDownloadFinalizer {
values.put("track_name", result.optString("title", "").ifBlank { trackString(input, "name", input.request.optString("track_name", "")) })
values.put("artist_name", result.optString("artist", "").ifBlank { trackString(input, "artistName", input.request.optString("artist_name", "")) })
values.put("album_name", result.optString("album", "").ifBlank { trackString(input, "albumName", input.request.optString("album_name", "")) })
values.put(
"album_artist",
normalizeOptional(
NativeFinalizationPolicy.authoritativeAlbumArtist(
requestValue = requestString(input, "album_artist"),
trackValue = trackString(input, "albumArtist", ""),
providerResultValue = resultString(input, "album_artist"),
),
),
)
values.put("album_artist", normalizeOptional(resolvedAlbumArtist(input)))
values.put("cover_url", normalizeOptional(metadataCoverUrl(input).ifBlank { resultString(input, "cover_url") }))
values.put("file_path", state.filePath)
values.put("storage_mode", input.request.optString("storage_mode", "app"))
@@ -1303,6 +1283,13 @@ object NativeDownloadFinalizer {
internal fun resultString(input: FinalizeInput, key: String): String =
cleanMetadataString(input.result.optString(key, ""))
internal fun resolvedAlbumArtist(input: FinalizeInput): String =
NativeFinalizationPolicy.authoritativeAlbumArtist(
requestValue = requestString(input, "album_artist"),
trackValue = trackString(input, "albumArtist", ""),
providerResultValue = resultString(input, "album_artist"),
)
internal fun metadataCoverUrl(input: FinalizeInput): String =
trackString(input, "coverUrl", requestString(input, "cover_url"))
@@ -8,7 +8,6 @@ import com.zarz.spotiflac.SafDownloadHandler.normalizeExt
import com.zarz.spotiflac.NativeFinalizationPolicy.applyQualityVariantFilenameLabel
import com.zarz.spotiflac.NativeFinalizationPolicy.artistTagValue
import com.zarz.spotiflac.NativeFinalizationPolicy.metadataTagValue
import com.zarz.spotiflac.NativeFinalizationPolicy.authoritativeAlbumArtist
import com.zarz.spotiflac.NativeFinalizationPolicy.formatIndexTag
import com.zarz.spotiflac.NativeFinalizationPolicy.logicalOutputFileName
import com.zarz.spotiflac.NativeFinalizationPolicy.removeQualityVariantStagingLabel
@@ -251,11 +250,7 @@ internal fun NativeDownloadFinalizer.embedBasicMetadata(context: Context, path:
val album = resultString(input, "album").ifBlank {
trackString(input, "albumName", requestString(input, "album_name"))
}
val albumArtist = authoritativeAlbumArtist(
requestValue = requestString(input, "album_artist"),
trackValue = trackString(input, "albumArtist", ""),
providerResultValue = resultString(input, "album_artist"),
)
val albumArtist = resolvedAlbumArtist(input)
val date = resultString(input, "release_date").ifBlank {
resultString(input, "date").ifBlank {
trackString(input, "releaseDate", requestString(input, "release_date"))