musikr: fix metadata drift
Largely a temporary compat measure to avoid playlist destruction, will retire UIDs for a new system soon which should give me the ability to rethink the spec.
This commit is contained in:
parent
b306456d46
commit
117678a066
4 changed files with 11 additions and 7 deletions
|
@ -50,7 +50,7 @@ class AlbumImpl internal constructor(private val core: AlbumCore) : Album {
|
||||||
// I don't know if there is any situation where an artist will have two albums with
|
// I don't know if there is any situation where an artist will have two albums with
|
||||||
// the exact same name, but if there is, I would love to know.
|
// the exact same name, but if there is, I would love to know.
|
||||||
update(preAlbum.rawName)
|
update(preAlbum.rawName)
|
||||||
update(preAlbum.preArtists.map { it.rawName })
|
update(preAlbum.preArtists.mapNotNull { it.rawName })
|
||||||
}
|
}
|
||||||
override val name = preAlbum.name
|
override val name = preAlbum.name
|
||||||
override val releaseType = preAlbum.releaseType
|
override val releaseType = preAlbum.releaseType
|
||||||
|
|
|
@ -51,7 +51,8 @@ internal data class PreSong(
|
||||||
val cover: Cover?,
|
val cover: Cover?,
|
||||||
val preAlbum: PreAlbum,
|
val preAlbum: PreAlbum,
|
||||||
val preArtists: List<PreArtist>,
|
val preArtists: List<PreArtist>,
|
||||||
val preGenres: List<PreGenre>
|
val preGenres: List<PreGenre>,
|
||||||
|
val compatAlbumArtistNames: List<String>
|
||||||
) {
|
) {
|
||||||
val uid =
|
val uid =
|
||||||
musicBrainzId?.let { Music.UID.musicBrainz(Music.UID.Item.SONG, it) }
|
musicBrainzId?.let { Music.UID.musicBrainz(Music.UID.Item.SONG, it) }
|
||||||
|
@ -66,8 +67,10 @@ internal data class PreSong(
|
||||||
update(track)
|
update(track)
|
||||||
update(disc?.number)
|
update(disc?.number)
|
||||||
|
|
||||||
update(preArtists.map { artist -> artist.rawName })
|
update(preArtists.mapNotNull { artist -> artist.rawName })
|
||||||
update(preAlbum.preArtists.map { artist -> artist.rawName })
|
// We have to encode the album artist names as-is w/o the interpreter's actions to
|
||||||
|
// maintain UID parity
|
||||||
|
update(compatAlbumArtistNames)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -83,7 +83,8 @@ private class TagInterpreterImpl(private val interpretation: Interpretation) : T
|
||||||
preAlbum = preAlbum,
|
preAlbum = preAlbum,
|
||||||
preArtists = rawArtists,
|
preArtists = rawArtists,
|
||||||
preGenres = rawGenres,
|
preGenres = rawGenres,
|
||||||
cover = song.cover)
|
cover = song.cover,
|
||||||
|
compatAlbumArtistNames = song.tags.albumArtistNames)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun makePreAlbum(
|
private fun makePreAlbum(
|
||||||
|
|
|
@ -38,14 +38,14 @@ private data object TagParserImpl : TagParser {
|
||||||
replayGainTrackAdjustment = metadata.replayGainTrackAdjustment(),
|
replayGainTrackAdjustment = metadata.replayGainTrackAdjustment(),
|
||||||
replayGainAlbumAdjustment = metadata.replayGainAlbumAdjustment(),
|
replayGainAlbumAdjustment = metadata.replayGainAlbumAdjustment(),
|
||||||
musicBrainzId = metadata.musicBrainzId(),
|
musicBrainzId = metadata.musicBrainzId(),
|
||||||
name = metadata.name() ?: unlikelyToBeNull(file.path.name),
|
name = metadata.name() ?: unlikelyToBeNull(file.path.name).split('.').first(),
|
||||||
sortName = metadata.sortName(),
|
sortName = metadata.sortName(),
|
||||||
track = metadata.track(),
|
track = metadata.track(),
|
||||||
disc = metadata.disc(),
|
disc = metadata.disc(),
|
||||||
subtitle = metadata.subtitle(),
|
subtitle = metadata.subtitle(),
|
||||||
date = metadata.date(),
|
date = metadata.date(),
|
||||||
albumMusicBrainzId = metadata.albumMusicBrainzId(),
|
albumMusicBrainzId = metadata.albumMusicBrainzId(),
|
||||||
albumName = metadata.albumName(),
|
albumName = metadata.albumName() ?: file.path.directory.name,
|
||||||
albumSortName = metadata.albumSortName(),
|
albumSortName = metadata.albumSortName(),
|
||||||
// Compilation flag implies a compilation release type in the case that
|
// Compilation flag implies a compilation release type in the case that
|
||||||
// we don't have any other release types
|
// we don't have any other release types
|
||||||
|
|
Loading…
Reference in a new issue