musikr: decouple m3u from auxio

This commit is contained in:
Alexander Capehart 2024-12-14 15:58:48 -05:00
parent 31e092a649
commit 479dca4452
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47

View file

@ -25,8 +25,6 @@ import java.io.BufferedWriter
import java.io.InputStream import java.io.InputStream
import java.io.InputStreamReader import java.io.InputStreamReader
import java.io.OutputStream import java.io.OutputStream
import org.oxycblt.auxio.music.resolve
import org.oxycblt.auxio.music.resolveNames
import org.oxycblt.musikr.Playlist import org.oxycblt.musikr.Playlist
import org.oxycblt.musikr.fs.Components import org.oxycblt.musikr.fs.Components
import org.oxycblt.musikr.fs.Path import org.oxycblt.musikr.fs.Path
@ -35,6 +33,7 @@ import org.oxycblt.musikr.fs.path.VolumeManager
import org.oxycblt.musikr.playlist.ExportConfig import org.oxycblt.musikr.playlist.ExportConfig
import org.oxycblt.musikr.playlist.ImportedPlaylist import org.oxycblt.musikr.playlist.ImportedPlaylist
import org.oxycblt.musikr.playlist.PossiblePaths import org.oxycblt.musikr.playlist.PossiblePaths
import org.oxycblt.musikr.tag.Name
import org.oxycblt.musikr.tag.util.correctWhitespace import org.oxycblt.musikr.tag.util.correctWhitespace
import org.oxycblt.musikr.util.unlikelyToBeNull import org.oxycblt.musikr.util.unlikelyToBeNull
import timber.log.Timber as L import timber.log.Timber as L
@ -190,12 +189,26 @@ private class M3UImpl(
// I imagine other players will use. // I imagine other players will use.
writer.writeLine("#EXTM3U") writer.writeLine("#EXTM3U")
writer.writeLine("#EXTENC:UTF-8") writer.writeLine("#EXTENC:UTF-8")
writer.writeLine("#PLAYLIST:${playlist.name.resolve(context)}") writer.writeLine("#PLAYLIST:${playlist.name.raw}")
for (song in playlist.songs) { for (song in playlist.songs) {
writer.writeLine("#EXTINF:${song.durationMs},${song.name.resolve(context)}") writer.writeLine("#EXTINF:${song.durationMs},${song.name.raw}")
writer.writeLine("#EXTALB:${song.album.name.resolve(context)}") val albumName = song.album.name
writer.writeLine("#EXTART:${song.artists.resolveNames(context)}") if (albumName is Name.Known) {
writer.writeLine("#EXTGEN:${song.genres.resolveNames(context)}") writer.writeLine("#EXTALB:${albumName.raw}")
}
// TODO: See if repeating #EXTART and #EXTGEN is legal
for (artist in song.artists) {
val name = artist.name
if (name is Name.Known) {
writer.writeLine("#EXTART:${name.raw}")
}
}
for (genre in song.genres) {
val name = genre.name
if (name is Name.Known) {
writer.writeLine("#EXTGEN:${name.raw}")
}
}
val formattedPath = val formattedPath =
if (config.absolute) { if (config.absolute) {