diff --git a/app/src/main/java/org/oxycblt/auxio/detail/PlaylistDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/PlaylistDetailFragment.kt
index f396909d7..8bcb64605 100644
--- a/app/src/main/java/org/oxycblt/auxio/detail/PlaylistDetailFragment.kt
+++ b/app/src/main/java/org/oxycblt/auxio/detail/PlaylistDetailFragment.kt
@@ -41,7 +41,7 @@ import org.oxycblt.auxio.music.Playlist
import org.oxycblt.auxio.music.PlaylistDecision
import org.oxycblt.auxio.music.PlaylistMessage
import org.oxycblt.auxio.music.Song
-import org.oxycblt.auxio.music.external.M3U
+import org.oxycblt.auxio.musikr.playlist.m3u.M3U
import org.oxycblt.auxio.playback.PlaybackDecision
import org.oxycblt.auxio.playback.formatDurationMs
import org.oxycblt.auxio.ui.DialogAwareNavigationListener
diff --git a/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt
index de34e5f7f..0ddfc80a3 100644
--- a/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt
+++ b/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt
@@ -65,7 +65,7 @@ import org.oxycblt.auxio.music.MusicViewModel
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.musikr.playlist.m3u.M3U
import org.oxycblt.auxio.musikr.IndexingProgress
import org.oxycblt.auxio.playback.PlaybackDecision
import org.oxycblt.auxio.playback.PlaybackViewModel
diff --git a/app/src/main/java/org/oxycblt/auxio/music/MusicViewModel.kt b/app/src/main/java/org/oxycblt/auxio/music/MusicViewModel.kt
index 177c1151e..2796cbaf9 100644
--- a/app/src/main/java/org/oxycblt/auxio/music/MusicViewModel.kt
+++ b/app/src/main/java/org/oxycblt/auxio/music/MusicViewModel.kt
@@ -29,8 +29,8 @@ import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.launch
import org.oxycblt.auxio.R
import org.oxycblt.auxio.list.ListSettings
-import org.oxycblt.auxio.music.external.ExportConfig
-import org.oxycblt.auxio.music.external.ExternalPlaylistManager
+import org.oxycblt.auxio.musikr.playlist.ExportConfig
+import org.oxycblt.auxio.musikr.playlist.ExternalPlaylistManager
import org.oxycblt.auxio.util.Event
import org.oxycblt.auxio.util.MutableEvent
import timber.log.Timber as L
diff --git a/app/src/main/java/org/oxycblt/auxio/music/decision/ExportPlaylistDialog.kt b/app/src/main/java/org/oxycblt/auxio/music/decision/ExportPlaylistDialog.kt
index 3fe140aed..2b10abb82 100644
--- a/app/src/main/java/org/oxycblt/auxio/music/decision/ExportPlaylistDialog.kt
+++ b/app/src/main/java/org/oxycblt/auxio/music/decision/ExportPlaylistDialog.kt
@@ -32,8 +32,8 @@ import org.oxycblt.auxio.R
import org.oxycblt.auxio.databinding.DialogPlaylistExportBinding
import org.oxycblt.auxio.music.MusicViewModel
import org.oxycblt.auxio.music.Playlist
-import org.oxycblt.auxio.music.external.ExportConfig
-import org.oxycblt.auxio.music.external.M3U
+import org.oxycblt.auxio.musikr.playlist.ExportConfig
+import org.oxycblt.auxio.musikr.playlist.m3u.M3U
import org.oxycblt.auxio.ui.ViewBindingMaterialDialogFragment
import org.oxycblt.auxio.util.collectImmediately
import org.oxycblt.auxio.util.unlikelyToBeNull
diff --git a/app/src/main/java/org/oxycblt/auxio/music/decision/PlaylistPickerViewModel.kt b/app/src/main/java/org/oxycblt/auxio/music/decision/PlaylistPickerViewModel.kt
index be6ef5c00..6ae62d019 100644
--- a/app/src/main/java/org/oxycblt/auxio/music/decision/PlaylistPickerViewModel.kt
+++ b/app/src/main/java/org/oxycblt/auxio/music/decision/PlaylistPickerViewModel.kt
@@ -32,7 +32,7 @@ import org.oxycblt.auxio.music.MusicRepository
import org.oxycblt.auxio.music.Playlist
import org.oxycblt.auxio.music.PlaylistDecision
import org.oxycblt.auxio.music.Song
-import org.oxycblt.auxio.music.external.ExportConfig
+import org.oxycblt.auxio.musikr.playlist.ExportConfig
import timber.log.Timber as L
/**
diff --git a/app/src/main/java/org/oxycblt/auxio/music/external/ExternalPlaylistManager.kt b/app/src/main/java/org/oxycblt/auxio/musikr/playlist/ExternalPlaylistManager.kt
similarity index 96%
rename from app/src/main/java/org/oxycblt/auxio/music/external/ExternalPlaylistManager.kt
rename to app/src/main/java/org/oxycblt/auxio/musikr/playlist/ExternalPlaylistManager.kt
index c071af76f..0e70767ad 100644
--- a/app/src/main/java/org/oxycblt/auxio/music/external/ExternalPlaylistManager.kt
+++ b/app/src/main/java/org/oxycblt/auxio/musikr/playlist/ExternalPlaylistManager.kt
@@ -16,13 +16,14 @@
* along with this program. If not, see .
*/
-package org.oxycblt.auxio.music.external
+package org.oxycblt.auxio.musikr.playlist
import android.content.Context
import android.net.Uri
import dagger.hilt.android.qualifiers.ApplicationContext
import javax.inject.Inject
import org.oxycblt.auxio.music.Playlist
+import org.oxycblt.auxio.musikr.playlist.m3u.M3U
import org.oxycblt.auxio.musikr.fs.Components
import org.oxycblt.auxio.musikr.fs.DocumentPathFactory
import org.oxycblt.auxio.musikr.fs.Path
@@ -38,7 +39,8 @@ import timber.log.Timber as L
*/
interface ExternalPlaylistManager {
/**
- * Import the playlist file at the given [uri].
+ * Import the playli L.d("Unable to extract bit rate field")
+st file at the given [uri].
*
* @param uri The [Uri] of the playlist file to import.
* @return An [ImportedPlaylist] containing the paths to the files listed in the playlist file,
diff --git a/app/src/main/java/org/oxycblt/auxio/music/external/ExternalModule.kt b/app/src/main/java/org/oxycblt/auxio/musikr/playlist/PlaylistModule.kt
similarity index 85%
rename from app/src/main/java/org/oxycblt/auxio/music/external/ExternalModule.kt
rename to app/src/main/java/org/oxycblt/auxio/musikr/playlist/PlaylistModule.kt
index af29c3620..1f2795bdb 100644
--- a/app/src/main/java/org/oxycblt/auxio/music/external/ExternalModule.kt
+++ b/app/src/main/java/org/oxycblt/auxio/musikr/playlist/PlaylistModule.kt
@@ -16,20 +16,20 @@
* along with this program. If not, see .
*/
-package org.oxycblt.auxio.music.external
+package org.oxycblt.auxio.musikr.playlist
import dagger.Binds
import dagger.Module
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
+import org.oxycblt.auxio.musikr.playlist.m3u.M3U
+import org.oxycblt.auxio.musikr.playlist.m3u.M3UImpl
@Module
@InstallIn(SingletonComponent::class)
-interface ExternalModule {
+interface PlaylistModule {
@Binds
fun externalPlaylistManager(
externalPlaylistManager: ExternalPlaylistManagerImpl
): ExternalPlaylistManager
-
- @Binds fun m3u(m3u: M3UImpl): M3U
}
diff --git a/app/src/main/java/org/oxycblt/auxio/music/external/M3U.kt b/app/src/main/java/org/oxycblt/auxio/musikr/playlist/m3u/M3U.kt
similarity index 98%
rename from app/src/main/java/org/oxycblt/auxio/music/external/M3U.kt
rename to app/src/main/java/org/oxycblt/auxio/musikr/playlist/m3u/M3U.kt
index 0d6efb0a7..d282ff227 100644
--- a/app/src/main/java/org/oxycblt/auxio/music/external/M3U.kt
+++ b/app/src/main/java/org/oxycblt/auxio/musikr/playlist/m3u/M3U.kt
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package org.oxycblt.auxio.music.external
+package org.oxycblt.auxio.musikr.playlist.m3u
import android.content.Context
import dagger.hilt.android.qualifiers.ApplicationContext
@@ -33,6 +33,9 @@ import org.oxycblt.auxio.musikr.fs.Components
import org.oxycblt.auxio.musikr.fs.Path
import org.oxycblt.auxio.musikr.fs.Volume
import org.oxycblt.auxio.musikr.fs.VolumeManager
+import org.oxycblt.auxio.musikr.playlist.ExportConfig
+import org.oxycblt.auxio.musikr.playlist.ImportedPlaylist
+import org.oxycblt.auxio.musikr.playlist.PossiblePaths
import org.oxycblt.auxio.util.unlikelyToBeNull
import timber.log.Timber as L
@@ -151,7 +154,8 @@ constructor(
else ->
listOf(
InterpretedPath(Components.parseUnix(path), false),
- InterpretedPath(Components.parseWindows(path), true))
+ InterpretedPath(Components.parseWindows(path), true)
+ )
}
private fun expandInterpretation(
diff --git a/app/src/main/java/org/oxycblt/auxio/musikr/playlist/m3u/M3UModule.kt b/app/src/main/java/org/oxycblt/auxio/musikr/playlist/m3u/M3UModule.kt
new file mode 100644
index 000000000..ae5c455c9
--- /dev/null
+++ b/app/src/main/java/org/oxycblt/auxio/musikr/playlist/m3u/M3UModule.kt
@@ -0,0 +1,16 @@
+package org.oxycblt.auxio.musikr.playlist.m3u
+
+import dagger.Binds
+import dagger.Module
+import dagger.hilt.InstallIn
+import dagger.hilt.components.SingletonComponent
+import org.oxycblt.auxio.musikr.playlist.ExternalPlaylistManager
+import org.oxycblt.auxio.musikr.playlist.ExternalPlaylistManagerImpl
+import org.oxycblt.auxio.musikr.playlist.m3u.M3U
+import org.oxycblt.auxio.musikr.playlist.m3u.M3UImpl
+
+@Module
+@InstallIn(SingletonComponent::class)
+interface PlaylistModule {
+ @Binds fun m3u(m3u: M3UImpl): M3U
+}
diff --git a/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt b/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt
index b9515b4db..761164298 100644
--- a/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt
+++ b/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt
@@ -54,7 +54,7 @@ import org.oxycblt.auxio.music.Playlist
import org.oxycblt.auxio.music.PlaylistDecision
import org.oxycblt.auxio.music.PlaylistMessage
import org.oxycblt.auxio.music.Song
-import org.oxycblt.auxio.music.external.M3U
+import org.oxycblt.auxio.musikr.playlist.m3u.M3U
import org.oxycblt.auxio.playback.PlaybackDecision
import org.oxycblt.auxio.playback.PlaybackViewModel
import org.oxycblt.auxio.util.collect