Commit graph

147 commits

Author SHA1 Message Date
Alexander Capehart
9fe508a906
all: fix formatting 2025-01-04 17:51:40 -07:00
Alexander Capehart
710e279d8f
musikr: tweak api 2025-01-04 17:43:09 -07:00
Alexander Capehart
32b152e155
musikr: reformat 2025-01-04 15:57:03 -07:00
Alexander Capehart
a4d7b54db7
musikr: add back tag whitespace fixes
Requires me to rejig the JNI integration, but it's overall good since
it allows me to strip away a lot of the logic.
2025-01-04 15:56:19 -07:00
Alexander Capehart
fddd527975
musikr.tag: handle compilation flag 2025-01-04 13:42:28 -07:00
Alexander Capehart
b0faad6380
build: bump to version 4.0.0-beta1 2025-01-04 12:14:37 -07:00
Alexander Capehart
c3ccb8519e
musikr: add empty library check 2025-01-01 16:10:34 -07:00
Alexander Capehart
a2e6bcbb7f
musikr: separate immutable/mutable subclasses
This makes it easier for me to centralize certain DI.
2025-01-01 14:37:01 -07:00
Alexander Capehart
62e214039f
all: reformat 2025-01-01 13:59:40 -07:00
Alexander Capehart
75455b1b90
musikr: make cover files more concrete
This should allow me to implement a solid ContentProvider.
2025-01-01 13:58:52 -07:00
Alexander Capehart
04e81916f7
all: fix formatting 2025-01-01 13:14:06 -07:00
Alexander Capehart
68098b97ed
music: move automatic reloading to musikr 2025-01-01 13:08:53 -07:00
Alexander Capehart
7497ff2514
musikr: fix crash when no mbids used 2024-12-28 15:11:28 -07:00
Alexander Capehart
d964df4616
musikr: fix broken cover cleanup 2024-12-27 15:49:26 -05:00
Alexander Capehart
b05d668b5e
musikr: close cover output streams 2024-12-27 15:39:31 -05:00
Alexander Capehart
292ea9d8a1
musikr: fix broken siloed covers
Caused by a missing param equality.
2024-12-27 15:38:49 -05:00
Alexander Capehart
ebcedb49eb
musikr: fix broken cache pruning 2024-12-27 15:38:23 -05:00
Alexander Capehart
8b3d7cae9c
musikr: handle missing covers on recaching
Now that we have effectively two caches (The main cache and the covers),
we have to handle the case where we have cached data, but the cover data
is missing. This is a real-world edge case once album covers are made
configurable as they were previously.
2024-12-27 15:11:09 -05:00
Alexander Capehart
32156f23b2
music: introduce siloed covers
Will allow me to dynamically configure cover quality by user settings.
2024-12-27 10:38:38 -05:00
Alexander Capehart
8b58f357cb
musikr: introduce cover cleanup
Helps reduce overall memory use.
2024-12-27 10:06:04 -05:00
Alexander Capehart
0dc72b67af
musikr: introduce cover params 2024-12-26 20:26:04 -05:00
Alexander Capehart
80c97cbea1
musikr: separate cover files/format 2024-12-26 19:54:31 -05:00
Alexander Capehart
b8178056f5
musikr: simplify cover storage boundaries 2024-12-26 19:23:48 -05:00
Alexander Capehart
5e7d575efd
build: fix cpp formatting 2024-12-26 18:53:24 -05:00
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
b6cbf97df9
musikr: rename taglib jni cmake project 2024-12-23 10:05:33 -05:00
Alexander Capehart
6fd0bd411b
musikr: fix broken iostream jni integration 2024-12-23 09:59:23 -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
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
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
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