music: break off stack into musikr
Will become it's own separate module later.
This commit is contained in:
parent
e647c31c56
commit
86a77bc19b
54 changed files with 147 additions and 144 deletions
|
@ -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
|
||||||
|
|
|
@ -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 =
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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(
|
|
@ -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
|
|
@ -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
|
|
@ -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 {
|
|
@ -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,
|
|
@ -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
|
|
@ -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
|
|
@ -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() {
|
|
@ -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
|
|
@ -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
|
||||||
}
|
}
|
|
@ -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
|
|
@ -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
|
||||||
|
|
|
@ -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
|
|
@ -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())
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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>
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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 {
|
|
@ -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>>()
|
|
@ -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>>()
|
|
@ -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>()
|
|
@ -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>()
|
|
@ -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
|
|
@ -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(
|
|
@ -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
|
||||||
|
|
||||||
/**
|
/**
|
|
@ -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
|
|
@ -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
|
|
@ -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 ---
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue