all: reformat

This commit is contained in:
Alexander Capehart 2024-12-20 22:17:08 -05:00
parent 5ff949c49c
commit 0f0b7a4a7d
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
12 changed files with 39 additions and 67 deletions

View file

@ -44,7 +44,6 @@ import okio.FileSystem
import okio.buffer import okio.buffer
import okio.source import okio.source
import org.oxycblt.musikr.cover.Cover import org.oxycblt.musikr.cover.Cover
import org.oxycblt.musikr.cover.StoredCovers
class CoverKeyer @Inject constructor() : Keyer<Cover> { class CoverKeyer @Inject constructor() : Keyer<Cover> {
override fun key(data: Cover, options: Options) = "${data.id}&${options.size}" override fun key(data: Cover, options: Options) = "${data.id}&${options.size}"

View file

@ -39,7 +39,6 @@ import org.oxycblt.musikr.Song
import org.oxycblt.musikr.Storage import org.oxycblt.musikr.Storage
import org.oxycblt.musikr.cache.Cache import org.oxycblt.musikr.cache.Cache
import org.oxycblt.musikr.cache.CacheDatabase import org.oxycblt.musikr.cache.CacheDatabase
import org.oxycblt.musikr.cover.StoredCovers
import org.oxycblt.musikr.playlist.db.PlaylistDatabase import org.oxycblt.musikr.playlist.db.PlaylistDatabase
import org.oxycblt.musikr.playlist.db.StoredPlaylists import org.oxycblt.musikr.playlist.db.StoredPlaylists
import org.oxycblt.musikr.tag.interpret.Naming import org.oxycblt.musikr.tag.interpret.Naming

View file

@ -20,16 +20,14 @@ package org.oxycblt.auxio.music
import android.content.Context import android.content.Context
import androidx.media3.common.util.Log import androidx.media3.common.util.Log
import org.oxycblt.auxio.util.unlikelyToBeNull
import java.util.UUID import java.util.UUID
import org.oxycblt.auxio.util.unlikelyToBeNull
import org.oxycblt.musikr.cover.Cover import org.oxycblt.musikr.cover.Cover
import org.oxycblt.musikr.cover.MutableStoredCovers import org.oxycblt.musikr.cover.MutableStoredCovers
import org.oxycblt.musikr.cover.StoredCovers import org.oxycblt.musikr.cover.StoredCovers
open class RevisionedStoredCovers( open class RevisionedStoredCovers(private val context: Context, private val revision: UUID?) :
private val context: Context, StoredCovers {
private val revision: UUID?
) : StoredCovers {
protected val inner = revision?.let { StoredCovers.at(context, "covers_$it") } protected val inner = revision?.let { StoredCovers.at(context, "covers_$it") }
override suspend fun obtain(id: String): RevisionedCover? { override suspend fun obtain(id: String): RevisionedCover? {
@ -51,10 +49,8 @@ open class RevisionedStoredCovers(
} }
} }
class MutableRevisionedStoredCovers( class MutableRevisionedStoredCovers(context: Context, private val revision: UUID) :
context: Context, RevisionedStoredCovers(context, revision), MutableStoredCovers {
private val revision: UUID
) : RevisionedStoredCovers(context, revision), MutableStoredCovers {
override suspend fun write(data: ByteArray): RevisionedCover? { override suspend fun write(data: ByteArray): RevisionedCover? {
return unlikelyToBeNull(inner).write(data)?.let { RevisionedCover(revision, it) } return unlikelyToBeNull(inner).write(data)?.let { RevisionedCover(revision, it) }
} }

View file

@ -20,7 +20,6 @@ package org.oxycblt.musikr
import org.oxycblt.musikr.cache.Cache import org.oxycblt.musikr.cache.Cache
import org.oxycblt.musikr.cover.MutableStoredCovers import org.oxycblt.musikr.cover.MutableStoredCovers
import org.oxycblt.musikr.cover.StoredCovers
import org.oxycblt.musikr.playlist.db.StoredPlaylists import org.oxycblt.musikr.playlist.db.StoredPlaylists
import org.oxycblt.musikr.tag.interpret.Naming import org.oxycblt.musikr.tag.interpret.Naming
import org.oxycblt.musikr.tag.interpret.Separators import org.oxycblt.musikr.tag.interpret.Separators

View file

@ -30,7 +30,6 @@ import androidx.room.Room
import androidx.room.RoomDatabase import androidx.room.RoomDatabase
import androidx.room.TypeConverter import androidx.room.TypeConverter
import androidx.room.TypeConverters import androidx.room.TypeConverters
import org.oxycblt.musikr.cover.Cover
import org.oxycblt.musikr.cover.StoredCovers import org.oxycblt.musikr.cover.StoredCovers
import org.oxycblt.musikr.fs.DeviceFile import org.oxycblt.musikr.fs.DeviceFile
import org.oxycblt.musikr.metadata.Properties import org.oxycblt.musikr.metadata.Properties

View file

@ -18,8 +18,8 @@
package org.oxycblt.musikr.cover package org.oxycblt.musikr.cover
import org.oxycblt.musikr.Song
import java.io.InputStream import java.io.InputStream
import org.oxycblt.musikr.Song
sealed interface Cover { sealed interface Cover {
val id: String val id: String

View file

@ -19,18 +19,17 @@
package org.oxycblt.musikr.cover package org.oxycblt.musikr.cover
import android.content.Context import android.content.Context
import android.util.Log
import java.io.File import java.io.File
import java.io.IOException import java.io.IOException
import java.io.InputStream
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.sync.withLock
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import java.io.InputStream
import java.io.OutputStream
interface CoverFiles { interface CoverFiles {
suspend fun find(id: String): CoverFile? suspend fun find(id: String): CoverFile?
suspend fun write(id: String, data: ByteArray): CoverFile? suspend fun write(id: String, data: ByteArray): CoverFile?
companion object { companion object {

View file

@ -20,7 +20,6 @@ package org.oxycblt.musikr.cover
import android.graphics.Bitmap import android.graphics.Bitmap
import android.graphics.BitmapFactory import android.graphics.BitmapFactory
import android.os.Build
import java.io.OutputStream import java.io.OutputStream
internal interface CoverFormat { internal interface CoverFormat {
@ -31,23 +30,18 @@ internal interface CoverFormat {
companion object { companion object {
// Enable if perhaps you want to try other formats. // Enable if perhaps you want to try other formats.
// Currently this is just far too slow. // Currently this is just far too slow.
// fun webp(): CoverFormat = CoverFormatImpl( // fun webp(): CoverFormat = CoverFormatImpl(
// "webp", // "webp",
// 750, // 750,
// 80, // 80,
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
// Bitmap.CompressFormat.WEBP_LOSSY // Bitmap.CompressFormat.WEBP_LOSSY
// } else { // } else {
// Bitmap.CompressFormat.WEBP // Bitmap.CompressFormat.WEBP
// } // }
// ) // )
fun jpeg(): CoverFormat = CoverFormatImpl( fun jpeg(): CoverFormat = CoverFormatImpl("jpg", 1000, 100, Bitmap.CompressFormat.JPEG)
"jpg",
1000,
100,
Bitmap.CompressFormat.JPEG
)
} }
} }

View file

@ -19,16 +19,13 @@
package org.oxycblt.musikr.cover package org.oxycblt.musikr.cover
import android.content.Context import android.content.Context
import java.io.InputStream
interface StoredCovers { interface StoredCovers {
suspend fun obtain(id: String): Cover.Single? suspend fun obtain(id: String): Cover.Single?
companion object { companion object {
fun at(context: Context, path: String): MutableStoredCovers = fun at(context: Context, path: String): MutableStoredCovers =
FileStoredCovers( FileStoredCovers(CoverIdentifier.md5(), CoverFiles.at(context, path))
CoverIdentifier.md5(), CoverFiles.at(context, path)
)
} }
} }
@ -48,9 +45,6 @@ private class FileStoredCovers(
} }
} }
private class FileCover( private class FileCover(override val id: String, private val coverFile: CoverFile) : Cover.Single {
override val id: String,
private val coverFile: CoverFile
) : Cover.Single {
override suspend fun open() = coverFile.open() override suspend fun open() = coverFile.open()
} }

View file

@ -23,7 +23,6 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.buffer import kotlinx.coroutines.flow.buffer
import kotlinx.coroutines.flow.flatMapMerge
import kotlinx.coroutines.flow.flattenMerge import kotlinx.coroutines.flow.flattenMerge
import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.flowOn
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
@ -35,7 +34,6 @@ import org.oxycblt.musikr.cache.Cache
import org.oxycblt.musikr.cache.CacheResult import org.oxycblt.musikr.cache.CacheResult
import org.oxycblt.musikr.cover.Cover import org.oxycblt.musikr.cover.Cover
import org.oxycblt.musikr.cover.MutableStoredCovers import org.oxycblt.musikr.cover.MutableStoredCovers
import org.oxycblt.musikr.cover.StoredCovers
import org.oxycblt.musikr.fs.DeviceFile import org.oxycblt.musikr.fs.DeviceFile
import org.oxycblt.musikr.metadata.MetadataExtractor import org.oxycblt.musikr.metadata.MetadataExtractor
import org.oxycblt.musikr.metadata.Properties import org.oxycblt.musikr.metadata.Properties
@ -53,8 +51,7 @@ internal interface ExtractStep {
MetadataExtractor.from(context), MetadataExtractor.from(context),
TagParser.new(), TagParser.new(),
storage.cache, storage.cache,
storage.storedCovers storage.storedCovers)
)
} }
} }
@ -80,9 +77,8 @@ private class ExtractStepImpl(
val cacheResults = val cacheResults =
distributedAudioNodes.flows distributedAudioNodes.flows
.map { flow -> .map { flow ->
flow.map { flow
wrap(it) { file -> cache.read(file, storedCovers) } .map { wrap(it) { file -> cache.read(file, storedCovers) } }
}
.flowOn(Dispatchers.IO) .flowOn(Dispatchers.IO)
.buffer(Channel.UNLIMITED) .buffer(Channel.UNLIMITED)
} }
@ -150,8 +146,7 @@ private class ExtractStepImpl(
cacheFlow.manager, cacheFlow.manager,
cachedSongs, cachedSongs,
writtenSongs, writtenSongs,
playlistNodes playlistNodes)
)
} }
private data class FileWith<T>(val file: DeviceFile, val with: T) private data class FileWith<T>(val file: DeviceFile, val with: T)

View file

@ -21,11 +21,9 @@ package org.oxycblt.musikr.pipeline
import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.asFlow import kotlinx.coroutines.flow.asFlow
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 kotlinx.coroutines.flow.receiveAsFlow import kotlinx.coroutines.flow.receiveAsFlow
import kotlinx.coroutines.flow.toList
import kotlinx.coroutines.flow.withIndex import kotlinx.coroutines.flow.withIndex
internal sealed interface Divert<L, R> { internal sealed interface Divert<L, R> {