From a0aaec98d0fdfe8499ee0299121e9cabf6a0985a Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Mon, 16 Jan 2023 09:33:20 -0700 Subject: [PATCH] music: extend non-standard artists to id3v2 Just pre-emptively add support for TXXX variations of the non-standard vorbis artist fields to the ID3v2 parser. I'd imagine the naming convention will be similar between them, so why not. --- .../org/oxycblt/auxio/detail/ReadOnlyTextInput.kt | 2 +- .../auxio/music/extractor/MetadataExtractor.kt | 6 +++--- .../org/oxycblt/auxio/playback/queue/QueueAdapter.kt | 1 + app/src/main/res/layout/dialog_music_dirs.xml | 12 ++++++++++++ app/src/main/res/values/strings.xml | 1 + 5 files changed, 18 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/oxycblt/auxio/detail/ReadOnlyTextInput.kt b/app/src/main/java/org/oxycblt/auxio/detail/ReadOnlyTextInput.kt index 327038255..f0e0924e0 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/ReadOnlyTextInput.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/ReadOnlyTextInput.kt @@ -30,7 +30,7 @@ import org.oxycblt.auxio.R * * Adapted from Material Files: https://github.com/zhanghai/MaterialFiles * - * @author Alexander Capehart (OxygenCobalt) + * @author Hai Zhang, Alexander Capehart (OxygenCobalt) */ class ReadOnlyTextInput @JvmOverloads diff --git a/app/src/main/java/org/oxycblt/auxio/music/extractor/MetadataExtractor.kt b/app/src/main/java/org/oxycblt/auxio/music/extractor/MetadataExtractor.kt index 1d823faa3..2ac6e26c3 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/extractor/MetadataExtractor.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/extractor/MetadataExtractor.kt @@ -213,12 +213,12 @@ class Task(context: Context, private val raw: Song.Raw) { // Artist textFrames["TXXX:musicbrainz artist id"]?.let { raw.artistMusicBrainzIds = it } (textFrames["TXXX:artists"] ?: textFrames["TPE1"])?.let { raw.artistNames = it } - textFrames["TSOP"]?.let { raw.artistSortNames = it } + (textFrames["TXXX:artists_sort"] ?: textFrames["TSOP"])?.let { raw.artistSortNames = it } // Album artist textFrames["TXXX:musicbrainz album artist id"]?.let { raw.albumArtistMusicBrainzIds = it } - textFrames["TPE2"]?.let { raw.albumArtistNames = it } - textFrames["TSO2"]?.let { raw.albumArtistSortNames = it } + (textFrames["TXXX:albumartists"] ?: textFrames["TPE2"])?.let { raw.albumArtistNames = it } + (textFrames["TXXX:albumartists_sort"] ?: textFrames["TSO2"])?.let { raw.albumArtistSortNames = it } // Genre textFrames["TCON"]?.let { raw.genreNames = it } diff --git a/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueAdapter.kt b/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueAdapter.kt index 4922d6d35..1cec07ed3 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueAdapter.kt @@ -167,6 +167,7 @@ class QueueSongViewHolder private constructor(private val binding: ItemQueueSong fun from(parent: View) = QueueSongViewHolder(ItemQueueSongBinding.inflate(parent.context.inflater)) + // TODO: This is not good enough, I need to compare item indices as well. /** A comparator that can be used with DiffUtil. */ val DIFF_CALLBACK = SongViewHolder.DIFF_CALLBACK } diff --git a/app/src/main/res/layout/dialog_music_dirs.xml b/app/src/main/res/layout/dialog_music_dirs.xml index a8eb3e006..2bad59793 100644 --- a/app/src/main/res/layout/dialog_music_dirs.xml +++ b/app/src/main/res/layout/dialog_music_dirs.xml @@ -12,6 +12,18 @@ android:layout_height="match_parent" android:orientation="vertical"> + + + + Reload the music library whenever it changes (requires persistent notification) Music folders Manage where music should be loaded from + Folders Mode