Uyanide
e6997a76c4
fix: watch pipe mode repeatedly refetch when no lyrics available
2026-04-09 23:28:33 +02:00
Uyanide
6d9cfaf8be
refactor: modules only need to know the config values they need to know
2026-04-09 23:14:51 +02:00
Uyanide
66a32c751a
style: relative import
2026-04-09 23:14:50 +02:00
Uyanide
d2a3e64b89
feat: config file
...
refactor: as the config module changed
test: add test for config
test: add test for local fetcher and local enrichers
test: add test for manual insertion
fix: some random bugs left by the last commit
2026-04-09 22:42:41 +02:00
Uyanide
e6b8583868
feat: add watch command and pipe view
2026-04-09 22:42:41 +02:00
Uyanide
03970bf17f
chore: update README and LICENSE
2026-04-08 17:00:16 +02:00
Uyanide
9b42cab76b
fix: preserve input order for equal-timestamp lyrics in normalize and to_plain
2026-04-08 12:32:56 +02:00
Uyanide
f8db549d8e
fix: change TTL of unsynced lyrics to infinite
2026-04-08 09:03:43 +02:00
Uyanide
d5188107ff
test: clarify semantics & remove duplicates
2026-04-08 09:03:43 +02:00
Uyanide
587d5dbe46
feat: normalize option
2026-04-08 08:01:41 +02:00
Uyanide
1e0f8e2868
fix: remove unused to_unsynced
2026-04-08 08:01:41 +02:00
Uyanide
573f8b5b8b
test: update tests for lrc
2026-04-08 08:01:40 +02:00
Uyanide
b922a0df28
refactor: better (really? 🤨 ) lrc parsing and handling
2026-04-07 19:33:17 +02:00
Uyanide
1414066eed
chore: de-markdown-lize comments
2026-04-07 19:33:17 +02:00
Uyanide
5666dd13c0
test: -1
2026-04-07 15:01:02 +02:00
Uyanide
f175eda57e
refactor: change cache schema to slots based
2026-04-07 14:54:36 +02:00
Uyanide
92860f0d30
test: clarify known limitations in the only xfail case
2026-04-07 14:54:36 +02:00
Uyanide
0c85af534e
refactor: large scale refactor regarding selection & fetchers
2026-04-06 22:30:55 +02:00
Uyanide
69b7f5c60c
chore: switch to src layout
2026-04-06 10:29:03 +02:00
Uyanide
c5abbff14c
chore: enhance comments
2026-04-06 08:40:59 +02:00
Uyanide
2d70231502
refactor: move some impl-specific constants out from config.py
2026-04-06 08:13:00 +02:00
Uyanide
9b04160783
refactor: lazy load credentials for testing
2026-04-06 08:13:00 +02:00
Uyanide
a8335d9920
test: remove tests that require credentials
2026-04-06 08:13:00 +02:00
Uyanide
8fabb0de86
fix: handle inconsistent response format of mxm
2026-04-05 19:59:46 +02:00
Uyanide
262d385b00
chore: 0.5.3
2026-04-05 11:53:55 +02:00
Uyanide
65327eb431
fix: remove inflated confidence for unsynced results (impacts: sp, mxm-sp, local, lrclib, manual)
2026-04-05 11:52:53 +02:00
Uyanide
0d56cde927
test: add basic tests for cache-search & network fetchers
...
test: enable debug
test: add pytest.ini to mark tests that require network
fix: cache-search should not aquire full match of artists due to different translations
fix: replace dynamic f-string SQL in track WHERE clauses with parameterized nullable conditions
refactor: lrc.py should never directly call print, return a str instead
chore: add requirements.txt (via 'uv export')
chore: update README.md with dev instructions
2026-04-05 11:35:04 +02:00
Uyanide
84a3e1076e
fix: missing await
2026-04-05 06:28:51 +02:00
Uyanide
449952c6c1
feat: auth: add auth module
2026-04-05 04:12:49 +02:00
Uyanide
1ed51fdbdb
feat: enricher: +1
2026-04-05 02:25:33 +02:00
Uyanide
d8c3813e39
refactor: move out some constants from config.py
2026-04-05 02:25:33 +02:00
Uyanide
9d6c2e2113
feat: add musixmatch as fetcher
2026-04-04 16:02:19 +02:00
Uyanide
38dc845abe
feat: cache stats now prints total row
2026-04-04 09:52:02 +02:00
Uyanide
1c7456c588
perf: parallelize lrclib search queries
2026-04-04 09:05:51 +02:00
Uyanide
303eeaa661
chore: add disclaimer
2026-04-04 08:40:09 +02:00
Uyanide
e3f12c1756
feat: fetcher: try multiple candidates rather just the best one
2026-04-04 08:29:20 +02:00
Uyanide
aa13940aa7
fix: adjust fetcher groups, sequentially fetch from sp and lrclib
2026-04-03 22:15:16 +02:00
Uyanide
4c5aba04b0
refactor: async parallel fetching
2026-04-03 22:09:59 +02:00
Uyanide
c91d5220bd
refactor: skip a enricher if fields it can provide are already filled
2026-04-03 22:09:59 +02:00
Uyanide
3917d68880
fix: no one uses artist/album/track.ext layout
2026-04-03 22:09:58 +02:00
Uyanide
9a200aa58d
feat: add hard duration filter to avoid fake positive matches
2026-04-03 16:38:46 +02:00
Uyanide
871ae2d589
fix: confidence should not be 100 for irrelevant cases
2026-04-03 15:46:13 +02:00
Uyanide
c44797fbf9
feat: able to set confidence for certain source via cli
2026-04-02 20:29:17 +02:00
Uyanide
6baa487565
test: remove 1 test for _raw_tag_to_ms since its already covered by
...
tests for to_plain
2026-04-02 11:57:23 +02:00
Uyanide
e382783f52
feat: export to a .txt file instead of .lrc when --plain
2026-04-02 11:15:29 +02:00
Uyanide
6791e9e965
feat: better cache stats
2026-04-02 10:52:48 +02:00
Uyanide
d18d8afb37
refactor: confidence should always have a value
2026-04-02 10:47:17 +02:00
Uyanide
66682e8b45
fix: only record spotify's trackid, ignore local ones
2026-04-02 10:47:17 +02:00
Uyanide
4d31a971a1
fix: --plain now sorts lyrics to handle multi-tag lrc correctly
2026-04-02 10:07:36 +02:00
Uyanide
2df167e31d
feat: evaluate fetch results with "confidence"
2026-04-02 09:44:20 +02:00
Uyanide
9aaf4d8aed
feat: lrclib-search fetcher now do multiple request to cover more cases
...
refactor: abstract selection logic & test dafür
2026-04-02 09:44:20 +02:00
Uyanide
5a44f2ba34
fix: --no-cache now also skips cache writing
2026-04-02 03:56:04 +02:00
Uyanide
8001c3f7e8
refactor: add LRCData class
2026-04-02 03:56:04 +02:00
Uyanide
83c9553309
fix: --plain should trim leading and trailing blank lines & v0.2.0
2026-04-01 21:05:55 +02:00
Uyanide
8af43ed112
test: add test for cache db
2026-04-01 21:05:54 +02:00
Uyanide
0b830e176d
feat: better lrc handling
2026-04-01 20:33:23 +02:00
Uyanide
cd60d3042c
feat: print plain lyrics without tags
2026-04-01 20:33:23 +02:00
Uyanide
5930f70bf2
chore: edit gitignore
2026-04-01 20:33:23 +02:00
Uyanide
13eb317e5b
refactor: only import DB_PATH once
2026-04-01 20:33:23 +02:00
Uyanide
7959a2efb9
feat: able to specify db path
2026-04-01 10:21:14 +02:00
Uyanide
88cf0115af
finish renaming
2026-03-31 22:46:55 +02:00
Uyanide
4d48e21533
delete old files
2026-03-31 22:46:55 +02:00
Uyanide
ae1dd7481d
rename to lrx
...
resolve conflicts
2026-03-31 22:46:55 +02:00
Uyanide
4c18efa10c
refactor: remove dep pydantic
2026-03-31 18:36:44 +02:00
Uyanide
8f44a0da35
feat: add insert subcommand to cache command
2026-03-31 18:08:40 +02:00
Uyanide
a1681c2551
chore: 0.1.7
2026-03-31 18:08:40 +02:00
Uyanide
d3090ceb1c
refactor: add is_available method to fetchers
2026-03-31 18:08:40 +02:00
Uyanide
03acda4478
feat: better LRC format handling
2026-03-31 16:47:26 +02:00
Uyanide
29273ad9fe
feat: include appversion in UA
2026-03-31 15:13:58 +02:00
Uyanide
3af6cee7e3
fix: sp
2026-03-31 15:13:58 +02:00
Uyanide
cc706c3117
refactor: remove unnecessary list of fetcher methods
2026-03-31 06:45:57 +02:00
Uyanide
4e83e6be15
feat: add metadata enrichers & refactor
2026-03-31 06:42:30 +02:00
Uyanide
d76b25e250
feat: 'search' command no longer requires 'title' param
2026-03-31 06:42:29 +02:00
Uyanide
cf7651ae84
fix: request param and header of sp fetcher
2026-03-31 04:17:24 +02:00
Uyanide
2337ff3472
feat: add player preference configuration and improve MPRIS player selection logic
2026-03-31 03:14:01 +02:00
Uyanide
e482fb1a82
feat: export lyrics default to sidecar path
2026-03-31 03:14:01 +02:00
Uyanide
4f6244bc9e
chore: bump version to 0.1.3
2026-03-31 02:15:39 +02:00
Uyanide
a0f988d0d8
feat: add qqmusic fetcher
2026-03-31 02:05:06 +02:00
Uyanide
d51a3eda1d
feat: replace typer with cycplots & improve cli
2026-03-30 18:48:42 +02:00
Uyanide
f49d305f0e
update .gitignore
2026-03-30 01:06:54 +02:00
Uyanide
1a04e46b48
feat: enhance fuzzy matching and add artist normalization in cache.py
2026-03-28 07:35:29 +01:00
Uyanide
6ccd90ba6a
feat: add exact metadata match for cache search in CacheSearchFetcher
2026-03-28 06:54:30 +01:00
Uyanide
d2b4134c96
feat: implement cache-search fetcher for cross-album fuzzy lookup
2026-03-28 06:21:31 +01:00
Uyanide
8ba9daf968
🚨 lint
2026-03-27 12:52:45 +01:00
Uyanide
23b2d5ae20
fix: URL decoding in local fetcher
2026-03-26 02:32:45 +01:00
Uyanide
ec40fbcf13
feat: add offset handling for LRC time tags
2026-03-25 21:55:36 +01:00
Uyanide
075853ad5b
fix: normalize time tags in fetched lrc (why [00:17:06]?)
2026-03-25 11:16:03 +01:00
Uyanide
e7ba59bfbb
feat: persist spo token
2026-03-25 10:53:01 +01:00
Uyanide
7067e33c20
feat: successfully synced lyrics should never expire
2026-03-25 10:24:56 +01:00
Uyanide
55978723a9
chore: add LICENSE
2026-03-25 06:03:06 +01:00
Uyanide
42bcb8b5ba
chore: remove .vscode
2026-03-25 05:59:47 +01:00
Uyanide
b327dc2bb2
chore: add README
2026-03-25 05:58:54 +01:00
Uyanide
0b9b617380
init
2026-03-25 05:58:37 +01:00