music: break off stack into musikr

Will become it's own separate module later.
This commit is contained in:
Alexander Capehart 2024-11-30 11:37:18 -07:00
parent e647c31c56
commit 86a77bc19b
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
54 changed files with 147 additions and 144 deletions

View file

@ -66,7 +66,7 @@ import org.oxycblt.auxio.music.Playlist
import org.oxycblt.auxio.music.PlaylistDecision
import org.oxycblt.auxio.music.PlaylistMessage
import org.oxycblt.auxio.music.external.M3U
import org.oxycblt.auxio.music.stack.IndexingProgress
import org.oxycblt.auxio.musikr.IndexingProgress
import org.oxycblt.auxio.playback.PlaybackDecision
import org.oxycblt.auxio.playback.PlaybackViewModel
import org.oxycblt.auxio.util.collect

View file

@ -19,7 +19,7 @@
package org.oxycblt.auxio.music
import android.os.Build
import org.oxycblt.auxio.music.stack.IndexingProgress
import org.oxycblt.auxio.musikr.IndexingProgress
/** Version-aware permission identifier for reading audio files. */
val PERMISSION_READ_AUDIO =

View file

@ -33,8 +33,8 @@ import org.oxycblt.auxio.music.info.Date
import org.oxycblt.auxio.music.info.Disc
import org.oxycblt.auxio.music.info.Name
import org.oxycblt.auxio.music.info.ReleaseType
import org.oxycblt.auxio.music.stack.explore.fs.MimeType
import org.oxycblt.auxio.music.stack.explore.fs.Path
import org.oxycblt.auxio.musikr.explore.fs.MimeType
import org.oxycblt.auxio.musikr.explore.fs.Path
import org.oxycblt.auxio.playback.replaygain.ReplayGainAdjustment
import org.oxycblt.auxio.util.concatLocalized
import org.oxycblt.auxio.util.toUuidOrNull

View file

@ -27,10 +27,10 @@ import kotlinx.coroutines.yield
import org.oxycblt.auxio.music.MusicRepository.IndexingWorker
import org.oxycblt.auxio.music.info.Name
import org.oxycblt.auxio.music.metadata.Separators
import org.oxycblt.auxio.music.stack.Indexer
import org.oxycblt.auxio.music.stack.IndexingProgress
import org.oxycblt.auxio.music.stack.interpret.Interpretation
import org.oxycblt.auxio.music.stack.interpret.model.MutableLibrary
import org.oxycblt.auxio.musikr.Indexer
import org.oxycblt.auxio.musikr.IndexingProgress
import org.oxycblt.auxio.musikr.interpret.Interpretation
import org.oxycblt.auxio.musikr.interpret.model.MutableLibrary
import timber.log.Timber as L
/**

View file

@ -24,7 +24,7 @@ import androidx.core.content.edit
import dagger.hilt.android.qualifiers.ApplicationContext
import javax.inject.Inject
import org.oxycblt.auxio.R
import org.oxycblt.auxio.music.stack.explore.fs.DocumentPathFactory
import org.oxycblt.auxio.musikr.explore.fs.DocumentPathFactory
import org.oxycblt.auxio.settings.Settings
import timber.log.Timber as L

View file

@ -23,10 +23,10 @@ import android.net.Uri
import dagger.hilt.android.qualifiers.ApplicationContext
import javax.inject.Inject
import org.oxycblt.auxio.music.Playlist
import org.oxycblt.auxio.music.stack.explore.fs.Components
import org.oxycblt.auxio.music.stack.explore.fs.DocumentPathFactory
import org.oxycblt.auxio.music.stack.explore.fs.Path
import org.oxycblt.auxio.music.stack.explore.fs.contentResolverSafe
import org.oxycblt.auxio.musikr.explore.fs.Components
import org.oxycblt.auxio.musikr.explore.fs.DocumentPathFactory
import org.oxycblt.auxio.musikr.explore.fs.Path
import org.oxycblt.auxio.musikr.explore.fs.contentResolverSafe
import timber.log.Timber as L
/**

View file

@ -28,11 +28,11 @@ import java.io.OutputStream
import javax.inject.Inject
import org.oxycblt.auxio.music.Playlist
import org.oxycblt.auxio.music.resolveNames
import org.oxycblt.auxio.music.stack.explore.extractor.correctWhitespace
import org.oxycblt.auxio.music.stack.explore.fs.Components
import org.oxycblt.auxio.music.stack.explore.fs.Path
import org.oxycblt.auxio.music.stack.explore.fs.Volume
import org.oxycblt.auxio.music.stack.explore.fs.VolumeManager
import org.oxycblt.auxio.musikr.explore.extractor.correctWhitespace
import org.oxycblt.auxio.musikr.explore.fs.Components
import org.oxycblt.auxio.musikr.explore.fs.Path
import org.oxycblt.auxio.musikr.explore.fs.Volume
import org.oxycblt.auxio.musikr.explore.fs.VolumeManager
import org.oxycblt.auxio.util.unlikelyToBeNull
import timber.log.Timber as L

View file

@ -24,7 +24,7 @@ import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import org.oxycblt.auxio.databinding.ItemMusicLocationBinding
import org.oxycblt.auxio.list.recycler.DialogRecyclerView
import org.oxycblt.auxio.music.stack.explore.fs.Path
import org.oxycblt.auxio.musikr.explore.fs.Path
import org.oxycblt.auxio.util.context
import org.oxycblt.auxio.util.inflater
import timber.log.Timber as L

View file

@ -36,7 +36,7 @@ import org.oxycblt.auxio.BuildConfig
import org.oxycblt.auxio.R
import org.oxycblt.auxio.databinding.DialogMusicLocationsBinding
import org.oxycblt.auxio.music.MusicSettings
import org.oxycblt.auxio.music.stack.explore.fs.DocumentPathFactory
import org.oxycblt.auxio.musikr.explore.fs.DocumentPathFactory
import org.oxycblt.auxio.ui.ViewBindingMaterialDialogFragment
import org.oxycblt.auxio.util.showToast
import timber.log.Timber as L

View file

@ -24,7 +24,7 @@ import android.media.MediaFormat
import dagger.hilt.android.qualifiers.ApplicationContext
import javax.inject.Inject
import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.music.stack.explore.fs.MimeType
import org.oxycblt.auxio.musikr.explore.fs.MimeType
import timber.log.Timber as L
/**
@ -119,6 +119,7 @@ constructor(@ApplicationContext private val context: Context) : AudioProperties.
return AudioProperties(
bitrate,
sampleRate,
MimeType(fromExtension = song.mimeType.fromExtension, fromFormat = formatMimeType))
MimeType(fromExtension = song.mimeType.fromExtension, fromFormat = formatMimeType)
)
}
}

View file

@ -18,8 +18,8 @@
package org.oxycblt.auxio.music.metadata
import org.oxycblt.auxio.music.stack.explore.extractor.correctWhitespace
import org.oxycblt.auxio.music.stack.explore.extractor.splitEscaped
import org.oxycblt.auxio.musikr.explore.extractor.correctWhitespace
import org.oxycblt.auxio.musikr.explore.extractor.splitEscaped
/**
* Defines the user-specified parsing of multi-value tags. This should be used to parse any tags

View file

@ -25,7 +25,7 @@ import org.oxycblt.auxio.BuildConfig
import org.oxycblt.auxio.ForegroundServiceNotification
import org.oxycblt.auxio.IntegerTable
import org.oxycblt.auxio.R
import org.oxycblt.auxio.music.stack.IndexingProgress
import org.oxycblt.auxio.musikr.IndexingProgress
import org.oxycblt.auxio.util.newMainPendingIntent
import timber.log.Timber as L

View file

@ -27,7 +27,7 @@ import dagger.hilt.android.qualifiers.ApplicationContext
import javax.inject.Inject
import org.oxycblt.auxio.music.MusicRepository
import org.oxycblt.auxio.music.MusicSettings
import org.oxycblt.auxio.music.stack.explore.fs.contentResolverSafe
import org.oxycblt.auxio.musikr.explore.fs.contentResolverSafe
import timber.log.Timber as L
/**

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack
package org.oxycblt.auxio.musikr
import android.net.Uri
import javax.inject.Inject
@ -27,10 +27,10 @@ import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.buffer
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.flowOn
import org.oxycblt.auxio.music.stack.explore.Explorer
import org.oxycblt.auxio.music.stack.interpret.Interpretation
import org.oxycblt.auxio.music.stack.interpret.Interpreter
import org.oxycblt.auxio.music.stack.interpret.model.MutableLibrary
import org.oxycblt.auxio.musikr.explore.Explorer
import org.oxycblt.auxio.musikr.interpret.Interpretation
import org.oxycblt.auxio.musikr.interpret.Interpreter
import org.oxycblt.auxio.musikr.interpret.model.MutableLibrary
interface Indexer {
suspend fun run(

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack
package org.oxycblt.auxio.musikr
import dagger.Binds
import dagger.Module

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.explore
package org.oxycblt.auxio.musikr.explore
import dagger.Binds
import dagger.Module

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.explore
package org.oxycblt.auxio.musikr.explore
import android.net.Uri
import javax.inject.Inject
@ -29,17 +29,16 @@ import kotlinx.coroutines.flow.buffer
import kotlinx.coroutines.flow.flattenMerge
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.flowOn
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.merge
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.flow.receiveAsFlow
import kotlinx.coroutines.flow.withIndex
import org.oxycblt.auxio.music.stack.IndexingProgress
import org.oxycblt.auxio.music.stack.explore.cache.CacheResult
import org.oxycblt.auxio.music.stack.explore.cache.TagCache
import org.oxycblt.auxio.music.stack.explore.extractor.TagExtractor
import org.oxycblt.auxio.music.stack.explore.fs.DeviceFiles
import org.oxycblt.auxio.music.stack.explore.playlists.StoredPlaylists
import org.oxycblt.auxio.musikr.IndexingProgress
import org.oxycblt.auxio.musikr.explore.cache.CacheResult
import org.oxycblt.auxio.musikr.explore.cache.TagCache
import org.oxycblt.auxio.musikr.explore.extractor.TagExtractor
import org.oxycblt.auxio.musikr.explore.fs.DeviceFiles
import org.oxycblt.auxio.musikr.explore.playlists.StoredPlaylists
import timber.log.Timber
interface Explorer {

View file

@ -16,13 +16,13 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.explore
package org.oxycblt.auxio.musikr.explore
import android.net.Uri
import org.oxycblt.auxio.music.Music
import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.music.info.Date
import org.oxycblt.auxio.music.stack.explore.fs.Path
import org.oxycblt.auxio.musikr.explore.fs.Path
data class DeviceFile(
val uri: Uri,

View file

@ -16,14 +16,14 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.explore.cache
package org.oxycblt.auxio.musikr.explore.cache
import javax.inject.Inject
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onEach
import org.oxycblt.auxio.music.stack.explore.AudioFile
import org.oxycblt.auxio.music.stack.explore.DeviceFile
import org.oxycblt.auxio.musikr.explore.AudioFile
import org.oxycblt.auxio.musikr.explore.DeviceFile
sealed interface CacheResult {
data class Hit(val audioFile: AudioFile) : CacheResult

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.explore.cache
package org.oxycblt.auxio.musikr.explore.cache
import android.content.Context
import androidx.room.Room

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.explore.cache
package org.oxycblt.auxio.musikr.explore.cache
import androidx.room.Dao
import androidx.room.Database
@ -29,10 +29,10 @@ import androidx.room.RoomDatabase
import androidx.room.TypeConverter
import androidx.room.TypeConverters
import org.oxycblt.auxio.music.info.Date
import org.oxycblt.auxio.music.stack.explore.AudioFile
import org.oxycblt.auxio.music.stack.explore.DeviceFile
import org.oxycblt.auxio.music.stack.explore.extractor.correctWhitespace
import org.oxycblt.auxio.music.stack.explore.extractor.splitEscaped
import org.oxycblt.auxio.musikr.explore.AudioFile
import org.oxycblt.auxio.musikr.explore.DeviceFile
import org.oxycblt.auxio.musikr.explore.extractor.correctWhitespace
import org.oxycblt.auxio.musikr.explore.extractor.splitEscaped
@Database(entities = [Tags::class], version = 50, exportSchema = false)
abstract class TagDatabase : RoomDatabase() {

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.explore.extractor
package org.oxycblt.auxio.musikr.explore.extractor
import dagger.Binds
import dagger.Module

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.explore.extractor
package org.oxycblt.auxio.musikr.explore.extractor
import android.content.Context
import android.media.MediaMetadataRetriever
@ -43,8 +43,8 @@ import javax.inject.Inject
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.guava.asDeferred
import org.oxycblt.auxio.music.stack.explore.AudioFile
import org.oxycblt.auxio.music.stack.explore.DeviceFile
import org.oxycblt.auxio.musikr.explore.AudioFile
import org.oxycblt.auxio.musikr.explore.DeviceFile
import timber.log.Timber as L
interface TagExtractor {
@ -194,7 +194,8 @@ private class ChunkedMetadataRetriever(private val mediaSourceFactory: MediaSour
job = MetadataJob(data, mediaSourceCaller)
mediaSourceHandler.sendEmptyMessageDelayed(
MESSAGE_CHECK_FAILURE, /* delayMs= */ CHECK_INTERVAL_MS)
MESSAGE_CHECK_FAILURE, /* delayMs= */ CHECK_INTERVAL_MS
)
return true
}

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.explore.extractor
package org.oxycblt.auxio.musikr.explore.extractor
import androidx.core.text.isDigitsOnly
import org.oxycblt.auxio.music.info.Date

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.explore.extractor
package org.oxycblt.auxio.musikr.explore.extractor
import org.oxycblt.auxio.util.positiveOrNull

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.explore.extractor
package org.oxycblt.auxio.musikr.explore.extractor
import androidx.media3.common.Metadata
import androidx.media3.extractor.metadata.id3.InternalFrame

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.explore.fs
package org.oxycblt.auxio.musikr.explore.fs
import android.content.ContentResolver
import android.content.Context
@ -31,7 +31,7 @@ import kotlinx.coroutines.flow.emitAll
import kotlinx.coroutines.flow.flatMapMerge
import kotlinx.coroutines.flow.flattenMerge
import kotlinx.coroutines.flow.flow
import org.oxycblt.auxio.music.stack.explore.DeviceFile
import org.oxycblt.auxio.musikr.explore.DeviceFile
import timber.log.Timber
interface DeviceFiles {
@ -65,7 +65,8 @@ constructor(
): Flow<DeviceFile> = flow {
contentResolver.useQuery(
DocumentsContract.buildChildDocumentsUriUsingTree(rootUri, treeDocumentId),
PROJECTION) { cursor ->
PROJECTION
) { cursor ->
val childUriIndex =
cursor.getColumnIndexOrThrow(DocumentsContract.Document.COLUMN_DOCUMENT_ID)
val displayNameIndex =
@ -97,7 +98,8 @@ constructor(
mimeType,
newPath,
size,
lastModified))
lastModified)
)
}
}
emitAll(recursive.asFlow().flattenMerge())

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.explore.fs
package org.oxycblt.auxio.musikr.explore.fs
import android.content.ContentUris
import android.content.Context

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.explore.fs
package org.oxycblt.auxio.musikr.explore.fs
import android.content.Context
import android.media.MediaFormat

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.explore.fs
package org.oxycblt.auxio.musikr.explore.fs
import android.content.ContentResolver
import android.content.Context

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.explore.fs
package org.oxycblt.auxio.musikr.explore.fs
import android.database.Cursor
import android.os.Build

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.explore.fs
package org.oxycblt.auxio.musikr.explore.fs
import android.annotation.SuppressLint
import android.content.ContentResolver

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.explore.playlists
package org.oxycblt.auxio.musikr.explore.playlists
import androidx.room.Dao
import androidx.room.Database

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.explore.playlists
package org.oxycblt.auxio.musikr.explore.playlists
import androidx.room.ColumnInfo
import androidx.room.Embedded

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.explore.playlists
package org.oxycblt.auxio.musikr.explore.playlists
import javax.inject.Inject
import kotlinx.coroutines.flow.Flow
@ -24,7 +24,7 @@ import kotlinx.coroutines.flow.asFlow
import kotlinx.coroutines.flow.emitAll
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.map
import org.oxycblt.auxio.music.stack.explore.PlaylistFile
import org.oxycblt.auxio.musikr.explore.PlaylistFile
interface StoredPlaylists {
fun read(): Flow<PlaylistFile>

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.explore.playlists
package org.oxycblt.auxio.musikr.explore.playlists
import android.content.Context
import androidx.room.Room

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.interpret
package org.oxycblt.auxio.musikr.interpret
import dagger.Binds
import dagger.Module

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.interpret
package org.oxycblt.auxio.musikr.interpret
import org.oxycblt.auxio.music.info.Name
import org.oxycblt.auxio.music.metadata.Separators

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.interpret
package org.oxycblt.auxio.musikr.interpret
import javax.inject.Inject
import kotlinx.coroutines.Dispatchers
@ -28,21 +28,21 @@ import kotlinx.coroutines.flow.flowOn
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.toList
import org.oxycblt.auxio.music.Music
import org.oxycblt.auxio.music.stack.explore.AudioFile
import org.oxycblt.auxio.music.stack.explore.PlaylistFile
import org.oxycblt.auxio.music.stack.interpret.linker.AlbumLinker
import org.oxycblt.auxio.music.stack.interpret.linker.ArtistLinker
import org.oxycblt.auxio.music.stack.interpret.linker.GenreLinker
import org.oxycblt.auxio.music.stack.interpret.linker.Linked
import org.oxycblt.auxio.music.stack.interpret.linker.LinkedSong
import org.oxycblt.auxio.music.stack.interpret.model.AlbumImpl
import org.oxycblt.auxio.music.stack.interpret.model.ArtistImpl
import org.oxycblt.auxio.music.stack.interpret.model.GenreImpl
import org.oxycblt.auxio.music.stack.interpret.model.LibraryImpl
import org.oxycblt.auxio.music.stack.interpret.model.MutableLibrary
import org.oxycblt.auxio.music.stack.interpret.model.SongImpl
import org.oxycblt.auxio.music.stack.interpret.prepare.PreSong
import org.oxycblt.auxio.music.stack.interpret.prepare.Preparer
import org.oxycblt.auxio.musikr.explore.AudioFile
import org.oxycblt.auxio.musikr.explore.PlaylistFile
import org.oxycblt.auxio.musikr.interpret.linker.AlbumLinker
import org.oxycblt.auxio.musikr.interpret.linker.ArtistLinker
import org.oxycblt.auxio.musikr.interpret.linker.GenreLinker
import org.oxycblt.auxio.musikr.interpret.linker.Linked
import org.oxycblt.auxio.musikr.interpret.linker.LinkedSong
import org.oxycblt.auxio.musikr.interpret.model.AlbumImpl
import org.oxycblt.auxio.musikr.interpret.model.ArtistImpl
import org.oxycblt.auxio.musikr.interpret.model.GenreImpl
import org.oxycblt.auxio.musikr.interpret.model.LibraryImpl
import org.oxycblt.auxio.musikr.interpret.model.MutableLibrary
import org.oxycblt.auxio.musikr.interpret.model.SongImpl
import org.oxycblt.auxio.musikr.interpret.prepare.PreSong
import org.oxycblt.auxio.musikr.interpret.prepare.Preparer
import timber.log.Timber as L
interface Interpreter {

View file

@ -16,13 +16,13 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.interpret.linker
package org.oxycblt.auxio.musikr.interpret.linker
import java.util.UUID
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
import org.oxycblt.auxio.music.stack.interpret.model.AlbumImpl
import org.oxycblt.auxio.music.stack.interpret.model.SongImpl
import org.oxycblt.auxio.musikr.interpret.model.AlbumImpl
import org.oxycblt.auxio.musikr.interpret.model.SongImpl
class AlbumLinker {
private val tree = mutableMapOf<String?, MutableMap<UUID?, AlbumLink>>()

View file

@ -16,17 +16,17 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.interpret.linker
package org.oxycblt.auxio.musikr.interpret.linker
import java.util.UUID
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
import org.oxycblt.auxio.music.Music
import org.oxycblt.auxio.music.stack.interpret.model.AlbumImpl
import org.oxycblt.auxio.music.stack.interpret.model.ArtistImpl
import org.oxycblt.auxio.music.stack.interpret.model.SongImpl
import org.oxycblt.auxio.music.stack.interpret.prepare.PreAlbum
import org.oxycblt.auxio.music.stack.interpret.prepare.PreArtist
import org.oxycblt.auxio.musikr.interpret.model.AlbumImpl
import org.oxycblt.auxio.musikr.interpret.model.ArtistImpl
import org.oxycblt.auxio.musikr.interpret.model.SongImpl
import org.oxycblt.auxio.musikr.interpret.prepare.PreAlbum
import org.oxycblt.auxio.musikr.interpret.prepare.PreArtist
class ArtistLinker {
private val tree = mutableMapOf<String?, MutableMap<UUID?, ArtistLink>>()

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.interpret.linker
package org.oxycblt.auxio.musikr.interpret.linker
class Contribution<T> {
private val map = mutableMapOf<T, Int>()

View file

@ -16,14 +16,14 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.interpret.linker
package org.oxycblt.auxio.musikr.interpret.linker
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
import org.oxycblt.auxio.music.stack.interpret.model.GenreImpl
import org.oxycblt.auxio.music.stack.interpret.model.SongImpl
import org.oxycblt.auxio.music.stack.interpret.prepare.PreGenre
import org.oxycblt.auxio.music.stack.interpret.prepare.PreSong
import org.oxycblt.auxio.musikr.interpret.model.GenreImpl
import org.oxycblt.auxio.musikr.interpret.model.SongImpl
import org.oxycblt.auxio.musikr.interpret.prepare.PreGenre
import org.oxycblt.auxio.musikr.interpret.prepare.PreSong
class GenreLinker {
private val tree = mutableMapOf<String?, GenreLink>()

View file

@ -16,16 +16,16 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.interpret.linker
package org.oxycblt.auxio.musikr.interpret.linker
import org.oxycblt.auxio.music.stack.interpret.model.AlbumImpl
import org.oxycblt.auxio.music.stack.interpret.model.ArtistImpl
import org.oxycblt.auxio.music.stack.interpret.model.GenreImpl
import org.oxycblt.auxio.music.stack.interpret.model.PlaylistImpl
import org.oxycblt.auxio.music.stack.interpret.model.SongImpl
import org.oxycblt.auxio.music.stack.interpret.prepare.PreAlbum
import org.oxycblt.auxio.music.stack.interpret.prepare.PrePlaylist
import org.oxycblt.auxio.music.stack.interpret.prepare.PreSong
import org.oxycblt.auxio.musikr.interpret.model.AlbumImpl
import org.oxycblt.auxio.musikr.interpret.model.ArtistImpl
import org.oxycblt.auxio.musikr.interpret.model.GenreImpl
import org.oxycblt.auxio.musikr.interpret.model.PlaylistImpl
import org.oxycblt.auxio.musikr.interpret.model.SongImpl
import org.oxycblt.auxio.musikr.interpret.prepare.PreAlbum
import org.oxycblt.auxio.musikr.interpret.prepare.PrePlaylist
import org.oxycblt.auxio.musikr.interpret.prepare.PreSong
interface LinkedSong {
val preSong: PreSong

View file

@ -16,12 +16,12 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.interpret.linker
package org.oxycblt.auxio.musikr.interpret.linker
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.emptyFlow
import org.oxycblt.auxio.music.stack.explore.PlaylistFile
import org.oxycblt.auxio.music.stack.interpret.model.PlaylistImpl
import org.oxycblt.auxio.musikr.explore.PlaylistFile
import org.oxycblt.auxio.musikr.interpret.model.PlaylistImpl
class PlaylistLinker {
fun register(

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.interpret.model
package org.oxycblt.auxio.musikr.interpret.model
import kotlin.math.min
import org.oxycblt.auxio.image.Cover
@ -28,10 +28,10 @@ import org.oxycblt.auxio.music.Music
import org.oxycblt.auxio.music.MusicType
import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.music.info.Date
import org.oxycblt.auxio.music.stack.interpret.linker.LinkedAlbum
import org.oxycblt.auxio.music.stack.interpret.linker.LinkedSong
import org.oxycblt.auxio.music.stack.interpret.prepare.PreArtist
import org.oxycblt.auxio.music.stack.interpret.prepare.PreGenre
import org.oxycblt.auxio.musikr.interpret.linker.LinkedAlbum
import org.oxycblt.auxio.musikr.interpret.linker.LinkedSong
import org.oxycblt.auxio.musikr.interpret.prepare.PreArtist
import org.oxycblt.auxio.musikr.interpret.prepare.PreGenre
import org.oxycblt.auxio.util.update
/**

View file

@ -16,13 +16,13 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.interpret.model
package org.oxycblt.auxio.musikr.interpret.model
import org.oxycblt.auxio.music.Library
import org.oxycblt.auxio.music.Music
import org.oxycblt.auxio.music.Playlist
import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.music.stack.explore.fs.Path
import org.oxycblt.auxio.musikr.explore.fs.Path
interface MutableLibrary : Library {
suspend fun createPlaylist(name: String, songs: List<Song>): MutableLibrary

View file

@ -16,12 +16,12 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.interpret.model
package org.oxycblt.auxio.musikr.interpret.model
import org.oxycblt.auxio.image.Cover
import org.oxycblt.auxio.music.Playlist
import org.oxycblt.auxio.music.info.Name
import org.oxycblt.auxio.music.stack.interpret.linker.LinkedPlaylist
import org.oxycblt.auxio.musikr.interpret.linker.LinkedPlaylist
class PlaylistImpl(linkedPlaylist: LinkedPlaylist) : Playlist {
private val prePlaylist = linkedPlaylist.prePlaylist

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.interpret.prepare
package org.oxycblt.auxio.musikr.interpret.prepare
/// --- ID3v2 PARSING ---

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.interpret.prepare
package org.oxycblt.auxio.musikr.interpret.prepare
import android.net.Uri
import java.util.UUID
@ -26,9 +26,9 @@ import org.oxycblt.auxio.music.info.Date
import org.oxycblt.auxio.music.info.Disc
import org.oxycblt.auxio.music.info.Name
import org.oxycblt.auxio.music.info.ReleaseType
import org.oxycblt.auxio.music.stack.explore.PlaylistHandle
import org.oxycblt.auxio.music.stack.explore.fs.MimeType
import org.oxycblt.auxio.music.stack.explore.fs.Path
import org.oxycblt.auxio.musikr.explore.PlaylistHandle
import org.oxycblt.auxio.musikr.explore.fs.MimeType
import org.oxycblt.auxio.musikr.explore.fs.Path
import org.oxycblt.auxio.playback.replaygain.ReplayGainAdjustment
import org.oxycblt.auxio.util.update

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.interpret.prepare
package org.oxycblt.auxio.musikr.interpret.prepare
import dagger.Binds
import dagger.Module

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package org.oxycblt.auxio.music.stack.interpret.prepare
package org.oxycblt.auxio.musikr.interpret.prepare
import javax.inject.Inject
import kotlinx.coroutines.flow.Flow
@ -25,9 +25,9 @@ import org.oxycblt.auxio.R
import org.oxycblt.auxio.music.info.Disc
import org.oxycblt.auxio.music.info.Name
import org.oxycblt.auxio.music.info.ReleaseType
import org.oxycblt.auxio.music.stack.explore.AudioFile
import org.oxycblt.auxio.music.stack.explore.fs.MimeType
import org.oxycblt.auxio.music.stack.interpret.Interpretation
import org.oxycblt.auxio.musikr.explore.AudioFile
import org.oxycblt.auxio.musikr.explore.fs.MimeType
import org.oxycblt.auxio.musikr.interpret.Interpretation
import org.oxycblt.auxio.playback.replaygain.ReplayGainAdjustment
import org.oxycblt.auxio.util.toUuidOrNull

View file

@ -20,11 +20,11 @@ package org.oxycblt.auxio.music.metadata
import org.junit.Assert.assertEquals
import org.junit.Test
import org.oxycblt.auxio.music.stack.explore.extractor.correctWhitespace
import org.oxycblt.auxio.music.stack.explore.extractor.parseId3v2PositionField
import org.oxycblt.auxio.music.stack.explore.extractor.parseVorbisPositionField
import org.oxycblt.auxio.music.stack.explore.extractor.splitEscaped
import org.oxycblt.auxio.music.stack.interpret.prepare.parseId3GenreNames
import org.oxycblt.auxio.musikr.explore.extractor.correctWhitespace
import org.oxycblt.auxio.musikr.explore.extractor.parseId3v2PositionField
import org.oxycblt.auxio.musikr.explore.extractor.parseVorbisPositionField
import org.oxycblt.auxio.musikr.explore.extractor.splitEscaped
import org.oxycblt.auxio.musikr.interpret.prepare.parseId3GenreNames
class TagUtilTest {
@Test

View file

@ -27,7 +27,7 @@ import androidx.media3.extractor.metadata.vorbis.VorbisComment
import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue
import org.junit.Test
import org.oxycblt.auxio.music.stack.explore.extractor.TextTags
import org.oxycblt.auxio.musikr.explore.extractor.TextTags
class TextTagsTest {
@Test