Commit graph

129 commits

Author SHA1 Message Date
Alexander Capehart
75612dd1eb
all: cleanup 2024-12-26 14:04:15 -05:00
Alexander Capehart
61fd11fe04
musikr: refactor cache api
To make the pruning system more agnostic and "extendable"
2024-12-26 13:58:23 -05:00
Alexander Capehart
3f364dc5c6
musikr: add cache pruning
Helps remove dead entries, and additionally makes date added values more
accurate over time.s
2024-12-26 13:36:56 -05:00
Alexander Capehart
4f920e922d
musikr: add date added support w/cache
This allows me to replicate something resembling date added
support while reducing query load.
2024-12-26 10:33:50 -05:00
Alexander Capehart
da76a03298
Revert "musikr: add date added support"
This reverts commit ca6388b28d.
2024-12-26 09:04:18 -05:00
Alexander Capehart
ca6388b28d
musikr: add date added support
Through a new `Tracker` interface.

Tracker is kind of a generic name. It's set up in the case that I have
to wind up associating more post-extraction metadata with songs.
2024-12-24 15:24:29 -05:00
Alexander Capehart
c42ac644eb
musikr: compute uid on presong creation 2024-12-24 15:08:49 -05:00
Alexander Capehart
7768d98632
musikr.cover: refactor cover
Instead of using a weird sealed class, instead go for a
Cover/CoverCollection system instead that removes some implicit
design dependence in musikr.
2024-12-24 14:43:48 -05:00
Alexander Capehart
8409a93c4e
musikr: reformat 2024-12-23 20:53:01 -05:00
Alexander Capehart
258418578a
musikr.tag: parse artist sort name 2024-12-23 17:13:45 -05:00
Alexander Capehart
bdce83f047
musikr.tag: fix incorrect artist name placeholder 2024-12-23 17:04:12 -05:00
Alexander Capehart
75ca315b9b
musikr.tag: fix broken tag field 2024-12-23 17:01:07 -05:00
Alexander Capehart
518b80bdf2
musikr.metadata: add missing log header 2024-12-23 16:50:54 -05:00
Alexander Capehart
c379174ffe
musikr.metadata: wrap exceptions into log
Not ideal, but avoids a total catastrophic crash on failed metadata
extractions.
2024-12-23 16:48:32 -05:00
Alexander Capehart
b6bc065a4a
musikr.tag: parse mp4 fields 2024-12-23 16:46:56 -05:00
Alexander Capehart
6652e351cf
musikr.metadata: uppercase internal atoms 2024-12-23 16:46:35 -05:00
Alexander Capehart
6ccae5f0d2
musikr.metadata: fix mp4 parsing 2024-12-23 12:52:33 -05:00
Alexander Capehart
e56e290451
musikr: make nativeinputstream internal again 2024-12-23 11:27:34 -05:00
Alexander Capehart
77f97ef656
all: cleanup 2024-12-23 11:04:51 -05:00
Alexander Capehart
07118a5ff1
musikr: link correct taglib jni lib 2024-12-23 11:03:17 -05:00
Alexander Capehart
44696424a9
musikr: build taglib sequentially w/more threads
This is probably better since locality can be leveraged more.
2024-12-23 10:53:44 -05:00
Alexander Capehart
a888d09a2c
musikr: link private libraries
This is what the ffmpeg extension does, it probably does something
good.
2024-12-23 10:53:33 -05:00
Alexander Capehart
787a78f845
musikr: shrink end taglib jni size
Use some magic linker flags that @Tolriq found over in
https://github.com/taglib/taglib/issues/1212#issuecomment-2326456903
that somehow reduced linked so size by ~2mb.
2024-12-23 10:46:53 -05:00
Alexander Capehart
046a02de00
musikr: update readme 2024-12-23 10:05:48 -05:00
Alexander Capehart
b6cbf97df9
musikr: rename taglib jni cmake project 2024-12-23 10:05:33 -05:00
Alexander Capehart
6dd70af10c
musikr: fix more taglib jni mismatches 2024-12-23 10:04:41 -05:00
Alexander Capehart
6fd0bd411b
musikr: fix broken iostream jni integration 2024-12-23 09:59:23 -05:00
Alexander Capehart
6f8a960ee1
build: share desugaring version 2024-12-21 12:11:32 -05:00
Alexander Capehart
001db620e3
all: reformat 2024-12-21 11:52:28 -05:00
Alexander Capehart
9a38877c2e
musikr: hide cache database 2024-12-21 11:52:28 -05:00
Alexander Capehart
503a4854c3
musikr: hide playlist database 2024-12-21 11:52:28 -05:00
Alexander Capehart
a4cca0ca79
all: remove log.d calls 2024-12-21 11:52:28 -05:00
Alexander Capehart
2ec3bbbe8c
musikr: hide unstable internals
Hypothetically I'd open these up into a broader API once I can confirm
they are safely extensible.
2024-12-21 11:35:14 -05:00
Alexander Capehart
b9c8933021
musikr: add readme 2024-12-20 22:47:46 -05:00
Alexander Capehart
c4a4b69cd1
musikr.pipeline: parallelize cache writes 2024-12-20 22:21:24 -05:00
Alexander Capehart
0f0b7a4a7d
all: reformat 2024-12-20 22:17:08 -05:00
Alexander Capehart
6bad9e719d
musikr.pipeline: parallelize cache reads 2024-12-20 22:12:01 -05:00
Alexander Capehart
9f68f59504
musikr.pipeline: disable extraction shuffling
No longer needed now that jpeg writes are extremely quick. Will
re-introduce in the case that I introduce webp parsing again.
2024-12-20 22:06:41 -05:00
Alexander Capehart
a598f39dea
musikr.cover: use jpeg for covers
Way faster to encode and the artifacts are minimal at 1kx1k and 100
compression.

Still not fully ideal, but webp is so flow to encode.
2024-12-20 22:05:51 -05:00
Alexander Capehart
1843986f75
music: implement revisioned covers 2024-12-20 21:57:16 -05:00
Alexander Capehart
8b69042288
Revert "musikr: bundle cover resolution with key"
This reverts commit 8cc939b58d.
2024-12-20 15:28:25 -05:00
Alexander Capehart
8cc939b58d
musikr: bundle cover resolution with key
This is a partial refactor, I'm still trying to find a good approach to
a revisionable system.
2024-12-20 12:41:14 -05:00
Alexander Capehart
249d2fad67
musikr.pipeline: shuffle songs to extract
This helps avoid the entire tag parsing flow from getting blocked up
by several tracks that are blocking trying to write a single cover.
2024-12-19 16:13:16 -05:00
Alexander Capehart
a77dd3ff7a
musikr.pipeline: redo extract pipeline
Try to separate opening FDs, extracting metadata, parsing tags/writing
covers, and cache writes.

This makes it slower, but now I know the bottleneck is covers. Gotta
figure out how to offload that work.
2024-12-17 20:31:04 -05:00
Alexander Capehart
7e8764d6d4
musikr.metadata: dont expose file name
Not needed.
2024-12-17 20:03:35 -05:00
Alexander Capehart
c431e90af8
musikr: output stack trace in pipeline error 2024-12-17 16:30:53 -05:00
Alexander Capehart
03ee8d299d
musikr: dont produce tag maps w/empty values 2024-12-17 16:27:25 -05:00
Alexander Capehart
7b1ccfc3fb
all: reformat 2024-12-17 16:05:13 -05:00
Alexander Capehart
acd4dab74c
musikr: include context in pipeline errors 2024-12-17 16:01:44 -05:00
Alexander Capehart
3fbb33e3e4
musikr: share more versions with app 2024-12-17 15:25:30 -05:00
Alexander Capehart
93da4a69a9
musikr: re-add playlist deletion 2024-12-17 12:19:36 -05:00
Alexander Capehart
7e45812411
all: reformat 2024-12-17 12:18:18 -05:00
Alexander Capehart
3ad2fd2fc0
musikr: fix playlist graphing 2024-12-17 12:17:28 -05:00
Alexander Capehart
b3a598c558
musikr: re-add playlist rewriting 2024-12-17 12:12:09 -05:00
Alexander Capehart
744097694f
musikr: re-add playlist adding 2024-12-17 12:11:20 -05:00
Alexander Capehart
f4822a4e40
musikr: re-add playlist renaming 2024-12-17 12:04:24 -05:00
Alexander Capehart
9f657adf94
musikr: re-add playlist creation 2024-12-17 11:48:17 -05:00
Alexander Capehart
bdfd9d6e23
musikr: move storage/interpretation dependence to construction
This makes some testing and certain code more ergonomic.
2024-12-17 11:45:04 -05:00
Alexander Capehart
8bbb7497a6
musikr: fix stuck evaluate step 2024-12-17 11:27:14 -05:00
Alexander Capehart
50b7c24c03
musikr: expose bitrate and sample rate 2024-12-17 10:42:54 -05:00
Alexander Capehart
880967f8be
all: fix formatting 2024-12-16 20:47:17 -05:00
Alexander Capehart
7fab7f7eeb
musikr: add full playlist evaluation 2024-12-16 20:45:26 -05:00
Alexander Capehart
3d94ab67cf
musikr: re-implement playlist graphing 2024-12-16 20:13:08 -05:00
Alexander Capehart
11a4d6a720
name: fix name token constructor 2024-12-16 19:07:50 -05:00
Alexander Capehart
b6f6213ac4
all: reformat 2024-12-16 18:46:54 -05:00
Alexander Capehart
6e3b03d4c6
musikr: re-implement playlist loading 2024-12-16 18:46:06 -05:00
Alexander Capehart
50bfe9926b
musikr.model: use genre core 2024-12-16 15:50:10 -05:00
Alexander Capehart
4421f4f56d
musikr.graph: dont simplify size-1 clusters
Creates very hard to trace bugs.
2024-12-16 15:47:59 -05:00
Alexander Capehart
9d1978850b
musikr: update classpaths in native code 2024-12-16 15:20:46 -05:00
Alexander Capehart
00520f7fda
musikr: api fixes 2024-12-16 15:15:30 -05:00
Alexander Capehart
5a65a6aa25
musikr: additional api cleanup 2024-12-16 14:49:24 -05:00
Alexander Capehart
47d5184e8d
build: add dokka
Just to test API surface in the future.
2024-12-16 14:41:45 -05:00
Alexander Capehart
0d5abb6407
musikr: cleanup api 2024-12-16 14:33:31 -05:00
Alexander Capehart
14355a1005
musikr: extract out shared parse fns
Into the util module
2024-12-16 13:41:57 -05:00
Alexander Capehart
ed102d3414
all: format 2024-12-16 13:34:49 -05:00
Alexander Capehart
d4d00249df
musikr: move tag tests away from auxio 2024-12-16 13:27:45 -05:00
Alexander Capehart
71667f378d
musikr: merge ktaglib into musikr.metadata
No longer makes sense as an independent module.
2024-12-16 13:18:13 -05:00
Alexander Capehart
ae44abc35a
musikr: reduce taglib build parallelism
Likely unhealthy to run maximum thread count 4x over
2024-12-16 13:15:47 -05:00
Alexander Capehart
e908d0e102
all: break off musikr 2024-12-16 13:09:08 -05:00