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.PlaylistDecision
import org.oxycblt.auxio.music.PlaylistMessage import org.oxycblt.auxio.music.PlaylistMessage
import org.oxycblt.auxio.music.external.M3U 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.PlaybackDecision
import org.oxycblt.auxio.playback.PlaybackViewModel import org.oxycblt.auxio.playback.PlaybackViewModel
import org.oxycblt.auxio.util.collect import org.oxycblt.auxio.util.collect

View file

@ -19,7 +19,7 @@
package org.oxycblt.auxio.music package org.oxycblt.auxio.music
import android.os.Build 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. */ /** Version-aware permission identifier for reading audio files. */
val PERMISSION_READ_AUDIO = 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.Disc
import org.oxycblt.auxio.music.info.Name import org.oxycblt.auxio.music.info.Name
import org.oxycblt.auxio.music.info.ReleaseType import org.oxycblt.auxio.music.info.ReleaseType
import org.oxycblt.auxio.music.stack.explore.fs.MimeType import org.oxycblt.auxio.musikr.explore.fs.MimeType
import org.oxycblt.auxio.music.stack.explore.fs.Path import org.oxycblt.auxio.musikr.explore.fs.Path
import org.oxycblt.auxio.playback.replaygain.ReplayGainAdjustment import org.oxycblt.auxio.playback.replaygain.ReplayGainAdjustment
import org.oxycblt.auxio.util.concatLocalized import org.oxycblt.auxio.util.concatLocalized
import org.oxycblt.auxio.util.toUuidOrNull 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.MusicRepository.IndexingWorker
import org.oxycblt.auxio.music.info.Name import org.oxycblt.auxio.music.info.Name
import org.oxycblt.auxio.music.metadata.Separators import org.oxycblt.auxio.music.metadata.Separators
import org.oxycblt.auxio.music.stack.Indexer import org.oxycblt.auxio.musikr.Indexer
import org.oxycblt.auxio.music.stack.IndexingProgress import org.oxycblt.auxio.musikr.IndexingProgress
import org.oxycblt.auxio.music.stack.interpret.Interpretation import org.oxycblt.auxio.musikr.interpret.Interpretation
import org.oxycblt.auxio.music.stack.interpret.model.MutableLibrary import org.oxycblt.auxio.musikr.interpret.model.MutableLibrary
import timber.log.Timber as L import timber.log.Timber as L
/** /**

View file

@ -24,7 +24,7 @@ import androidx.core.content.edit
import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.android.qualifiers.ApplicationContext
import javax.inject.Inject import javax.inject.Inject
import org.oxycblt.auxio.R 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 org.oxycblt.auxio.settings.Settings
import timber.log.Timber as L import timber.log.Timber as L

View file

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

View file

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

View file

@ -24,7 +24,7 @@ import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import org.oxycblt.auxio.databinding.ItemMusicLocationBinding import org.oxycblt.auxio.databinding.ItemMusicLocationBinding
import org.oxycblt.auxio.list.recycler.DialogRecyclerView 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.context
import org.oxycblt.auxio.util.inflater import org.oxycblt.auxio.util.inflater
import timber.log.Timber as L 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.R
import org.oxycblt.auxio.databinding.DialogMusicLocationsBinding import org.oxycblt.auxio.databinding.DialogMusicLocationsBinding
import org.oxycblt.auxio.music.MusicSettings 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.ui.ViewBindingMaterialDialogFragment
import org.oxycblt.auxio.util.showToast import org.oxycblt.auxio.util.showToast
import timber.log.Timber as L import timber.log.Timber as L

View file

@ -24,7 +24,7 @@ import android.media.MediaFormat
import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.android.qualifiers.ApplicationContext
import javax.inject.Inject import javax.inject.Inject
import org.oxycblt.auxio.music.Song 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 import timber.log.Timber as L
/** /**
@ -119,6 +119,7 @@ constructor(@ApplicationContext private val context: Context) : AudioProperties.
return AudioProperties( return AudioProperties(
bitrate, bitrate,
sampleRate, 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 package org.oxycblt.auxio.music.metadata
import org.oxycblt.auxio.music.stack.explore.extractor.correctWhitespace import org.oxycblt.auxio.musikr.explore.extractor.correctWhitespace
import org.oxycblt.auxio.music.stack.explore.extractor.splitEscaped 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 * 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.ForegroundServiceNotification
import org.oxycblt.auxio.IntegerTable import org.oxycblt.auxio.IntegerTable
import org.oxycblt.auxio.R 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 org.oxycblt.auxio.util.newMainPendingIntent
import timber.log.Timber as L import timber.log.Timber as L

View file

@ -27,7 +27,7 @@ import dagger.hilt.android.qualifiers.ApplicationContext
import javax.inject.Inject import javax.inject.Inject
import org.oxycblt.auxio.music.MusicRepository import org.oxycblt.auxio.music.MusicRepository
import org.oxycblt.auxio.music.MusicSettings 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 import timber.log.Timber as L
/** /**

View file

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

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * 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.Binds
import dagger.Module import dagger.Module

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * 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.Binds
import dagger.Module import dagger.Module

View file

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

View file

@ -16,13 +16,13 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * 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 android.net.Uri
import org.oxycblt.auxio.music.Music import org.oxycblt.auxio.music.Music
import org.oxycblt.auxio.music.Song import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.music.info.Date 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( data class DeviceFile(
val uri: Uri, val uri: Uri,

View file

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

View file

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

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * 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.Binds
import dagger.Module import dagger.Module

View file

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

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * 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 androidx.core.text.isDigitsOnly
import org.oxycblt.auxio.music.info.Date 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/>. * 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 import org.oxycblt.auxio.util.positiveOrNull

View file

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

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * 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.ContentUris
import android.content.Context import android.content.Context

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * 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.content.Context
import android.media.MediaFormat import android.media.MediaFormat

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * 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.ContentResolver
import android.content.Context import android.content.Context

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * 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.database.Cursor
import android.os.Build import android.os.Build

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * 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.annotation.SuppressLint
import android.content.ContentResolver import android.content.ContentResolver

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * 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.Dao
import androidx.room.Database import androidx.room.Database

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * 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.ColumnInfo
import androidx.room.Embedded import androidx.room.Embedded

View file

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

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * 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 android.content.Context
import androidx.room.Room import androidx.room.Room

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * 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.Binds
import dagger.Module import dagger.Module

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -16,13 +16,13 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * 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.Library
import org.oxycblt.auxio.music.Music import org.oxycblt.auxio.music.Music
import org.oxycblt.auxio.music.Playlist import org.oxycblt.auxio.music.Playlist
import org.oxycblt.auxio.music.Song 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 { interface MutableLibrary : Library {
suspend fun createPlaylist(name: String, songs: List<Song>): MutableLibrary 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/>. * 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.image.Cover
import org.oxycblt.auxio.music.Playlist import org.oxycblt.auxio.music.Playlist
import org.oxycblt.auxio.music.info.Name 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 { class PlaylistImpl(linkedPlaylist: LinkedPlaylist) : Playlist {
private val prePlaylist = linkedPlaylist.prePlaylist private val prePlaylist = linkedPlaylist.prePlaylist

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * 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 --- /// --- ID3v2 PARSING ---

View file

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

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * 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.Binds
import dagger.Module import dagger.Module

View file

@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * 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 javax.inject.Inject
import kotlinx.coroutines.flow.Flow 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.Disc
import org.oxycblt.auxio.music.info.Name import org.oxycblt.auxio.music.info.Name
import org.oxycblt.auxio.music.info.ReleaseType import org.oxycblt.auxio.music.info.ReleaseType
import org.oxycblt.auxio.music.stack.explore.AudioFile import org.oxycblt.auxio.musikr.explore.AudioFile
import org.oxycblt.auxio.music.stack.explore.fs.MimeType import org.oxycblt.auxio.musikr.explore.fs.MimeType
import org.oxycblt.auxio.music.stack.interpret.Interpretation import org.oxycblt.auxio.musikr.interpret.Interpretation
import org.oxycblt.auxio.playback.replaygain.ReplayGainAdjustment import org.oxycblt.auxio.playback.replaygain.ReplayGainAdjustment
import org.oxycblt.auxio.util.toUuidOrNull 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.Assert.assertEquals
import org.junit.Test import org.junit.Test
import org.oxycblt.auxio.music.stack.explore.extractor.correctWhitespace import org.oxycblt.auxio.musikr.explore.extractor.correctWhitespace
import org.oxycblt.auxio.music.stack.explore.extractor.parseId3v2PositionField import org.oxycblt.auxio.musikr.explore.extractor.parseId3v2PositionField
import org.oxycblt.auxio.music.stack.explore.extractor.parseVorbisPositionField import org.oxycblt.auxio.musikr.explore.extractor.parseVorbisPositionField
import org.oxycblt.auxio.music.stack.explore.extractor.splitEscaped import org.oxycblt.auxio.musikr.explore.extractor.splitEscaped
import org.oxycblt.auxio.music.stack.interpret.prepare.parseId3GenreNames import org.oxycblt.auxio.musikr.interpret.prepare.parseId3GenreNames
class TagUtilTest { class TagUtilTest {
@Test @Test

View file

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