This website requires JavaScript.
b26e321926
feat: throttle yt-dlp requests to dodge YouTube rate-limiting
main
zebra
2026-06-13 23:39:08 -07:00
47f3482192
fix: Odesli links 'not found' when Odesli omits YouTube link
zebra
2026-06-13 22:14:57 -07:00
a4b5039e7f
Merge odesli-link-resolution: any link -> Lidarr-first, YouTube fallback
zebra
2026-06-13 22:07:21 -07:00
b899d75930
fix: _is_direct_url label-boundary host match (no notyoutube.com false positive)
zebra
2026-06-13 22:02:57 -07:00
32acd038c8
docs: document any-link Odesli resolution in README
zebra
2026-06-13 21:59:59 -07:00
eb45a3680f
feat: server /fetch resolves non-direct links via Odesli (Lidarr-first)
zebra
2026-06-13 21:59:33 -07:00
44aaa1f93e
feat: re-export odesli symbols through server/mf.py
zebra
2026-06-13 21:56:56 -07:00
8daf780023
feat: route non-direct CLI links through Odesli (handle_link)
zebra
2026-06-13 21:56:02 -07:00
9c308fefc7
feat: resolve_link_hits + handle_link — Odesli link -> Lidarr-first flow
zebra
2026-06-13 21:55:04 -07:00
a4e1dc1643
refactor: extract _dispatch_chosen from main() for reuse
zebra
2026-06-13 21:53:30 -07:00
9fccf9015a
feat: _is_direct_url — route YouTube/SoundCloud links to direct download
zebra
2026-06-13 21:52:14 -07:00
a88f4c594a
feat: odesli_resolve — resolve any song link to metadata via song.link
zebra
2026-06-13 21:47:22 -07:00
95a448ef58
docs: implementation plan for Odesli link resolution
zebra
2026-06-13 20:57:18 -07:00
dcb3014fb0
docs: spec for Odesli link resolution (any link -> Lidarr-first, YouTube fallback)
zebra
2026-06-13 20:33:26 -07:00
140bfef7c9
feat: yt-dlp cookie support + surface real failure reason; default workers 4
zebra
2026-06-13 11:25:39 -07:00
92742b9ad6
perf: parallelize --repair with a thread pool (--workers, default 8)
zebra
2026-06-13 11:13:52 -07:00
0347a638cf
fix: reliable YouTube tagging, loud Lidarr failures, deno runtime, repair recovery
fix/yt-tagging-lidarr-visibility-deno
zebra
2026-06-13 11:09:27 -07:00
33ca743a34
removed useless portion of compose
zebra
2026-06-11 22:02:51 -07:00
7951c436dd
Merge feat/unknown-album: default blank album to 'Unknown Album'
zebra
2026-06-11 21:53:11 -07:00
8b881c14bf
feat: always embed an album tag (default 'Unknown Album')
zebra
2026-06-11 21:53:11 -07:00
530b5b0406
typo in mutagen. fixed
zebra
2026-06-11 21:51:16 -07:00
0a4e6d474a
added mutagen to requirements.txt
zebra
2026-06-11 21:48:33 -07:00
c0503187c5
Merge feat/repair-fast-meta: faster --repair via player_skip=js
zebra
2026-06-10 22:52:39 -07:00
a6aa469084
perf(repair): skip YouTube JS signature step when fetching tags
zebra
2026-06-10 22:52:39 -07:00
f071158c10
Merge feat/repair-exclude: -x/--exclude for repair/retag
zebra
2026-06-10 22:41:16 -07:00
c6bde6958a
feat: -x/--exclude to skip folders during --repair/--retag-from-path
zebra
2026-06-10 22:41:16 -07:00
7ea3ad2538
Merge feat/retag-from-path: offline tag recovery
zebra
2026-06-10 22:30:25 -07:00
9af7f91a25
feat: --retag-from-path to recover tags damaged by a prior --repair
zebra
2026-06-10 22:30:25 -07:00
567d7578ad
Merge fix/repair-music-videos: conservative --repair + first-artist single folder
zebra
2026-06-10 18:53:27 -07:00
c6e28a4f75
fix: harden --repair against music videos; first-artist folder for single URLs
zebra
2026-06-10 18:53:27 -07:00
1a81f64cc3
Merge feat/repair: re-tag existing downloads via --repair
zebra
2026-06-09 19:11:43 -07:00
fdc3cc84a5
feat: --repair flag to re-tag existing downloads from source metadata
zebra
2026-06-09 19:11:43 -07:00
74eb63b243
Merge feat/multi-platform: any yt-dlp site, single tracks + playlists
zebra
2026-06-09 06:56:18 -07:00
6730f1f141
fix: route sparse-metadata playlist tracks by yt-dlp's own metadata
zebra
2026-06-09 06:55:56 -07:00
f103b6c253
feat: multi-platform URL & playlist support via yt-dlp probe
zebra
2026-06-09 00:25:58 -07:00
7309ad3a29
Merge feat/playlists-profiles: YouTube playlists + Lidarr profile hardening
zebra
2026-06-09 00:13:54 -07:00
90b9a01872
fix(server): use .get() for title/artist in perform_url_fetch result
zebra
2026-06-09 00:00:45 -07:00
0f7ddd7697
feat(server): route URL/playlist /fetch to download jobs
zebra
2026-06-08 23:58:37 -07:00
ca36d2bb27
feat(server): re-export URL helpers; callable job done_message
zebra
2026-06-08 23:54:49 -07:00
aa9d177ed1
feat(youtube): playlist expansion + per-track download, success bools
zebra
2026-06-08 23:49:26 -07:00
3ee49b17bd
fix(lidarr): select metadata/quality profiles by name with env overrides
zebra
2026-06-08 23:44:34 -07:00
6e6bec7a0d
Plan playlists + profile hardening (5 TDD tasks)
zebra
2026-06-08 23:42:13 -07:00
a24c894c61
Add design spec: YouTube playlists + Lidarr profile hardening
zebra
2026-06-08 23:38:06 -07:00
a424fbfd2f
Merge feat/rest-api: REST API + smarter Lidarr matching
zebra
2026-06-08 23:31:41 -07:00
b99e5eb9cb
fix(lidarr): prefer own-artist studio album over various-artists comps
zebra
2026-06-08 23:30:15 -07:00
1661cb1742
refactor(lidarr): drop now-unused Timeout import
zebra
2026-06-08 23:24:59 -07:00
18f72a5626
feat(lidarr): exact MBID album lookup via MusicBrainz resolution
zebra
2026-06-08 23:22:11 -07:00
babbd84fda
feat(lidarr): MusicBrainz track-to-album resolver
zebra
2026-06-08 23:17:43 -07:00
b0e3ce6e6c
feat(lidarr): add Artist - Track query splitter
feat/rest-api
zebra
2026-06-08 21:08:02 -07:00
45121dd807
Plan smarter Lidarr matching via exact MBID lookup
zebra
2026-06-08 21:06:39 -07:00
6687a5a0fc
Add design spec for smarter Lidarr matching
zebra
2026-06-08 20:51:15 -07:00
425a973d85
fix: write single first-artist tag, not doubled/multi-artist
zebra
2026-06-08 20:39:03 -07:00
9984c162c6
fix(server): return {message} body for request validation errors
zebra
2026-06-08 20:27:00 -07:00
eecf0836f7
fix(server): make .dockerignore effective at repo root, pin yt-dlp in requirements
zebra
2026-06-08 20:23:37 -07:00
809de44e2e
feat(server): Dockerfile and compose for the Lidarr stack
zebra
2026-06-08 20:21:14 -07:00
5b6986e01c
test(server): cover validation 422s and pick-None 404; tighten message assert
zebra
2026-06-08 20:18:54 -07:00
d4c1b18e58
feat(server): /fetch and /jobs endpoints with async download jobs
zebra
2026-06-08 20:15:28 -07:00
49a45e6270
feat(server): FastAPI app with API-key auth and health check
zebra
2026-06-08 20:09:50 -07:00
257ed5e0a5
fix(server): announce track title not album in messages; cover error paths
zebra
2026-06-08 20:07:09 -07:00
f4ffd23ed8
docs: REST API usage and Siri Shortcuts walkthrough
zebra
2026-06-08 20:02:16 -07:00
9912eb48a4
feat(server): action dispatch with structured result and messages
zebra
2026-06-08 20:02:18 -07:00
09a0d7e682
fix(server): harden job eviction and worker against missing job id
zebra
2026-06-08 19:59:31 -07:00
35df01f08e
feat(server): in-memory async job store with thread-pool worker
zebra
2026-06-08 19:55:57 -07:00
c46ff2ff1a
refactor(server): register loaded module in sys.modules, add __all__
zebra
2026-06-08 19:54:37 -07:00
ad660afae3
feat(server): load musicfetch binary as importable module
zebra
2026-06-08 19:49:18 -07:00
11a57bfa67
Add implementation plan for MusicFetch REST API
zebra
2026-06-08 19:46:13 -07:00
033bc00ccc
Add design spec for MusicFetch REST API
zebra
2026-06-08 19:42:17 -07:00
9fd4c8585b
Rewrite musicfetch as v2: dual-source search with interactive picker
zebra
2026-06-08 19:30:47 -07:00
51871fd296
Additional tweaks to search_artist function.
zebra
2025-06-12 16:28:23 -07:00
0cfee8205c
Command Line Arguments added to musicfetch script --debug for debug mode --search-all will search all music sources as soon as the artist is added to Lidarr. The default behavior is to not search all sources.
zebra
2025-06-12 16:24:44 -07:00
5d1a494e77
oops, wrong license before
zebra
2025-06-09 17:10:05 -07:00
35ff6c5dcc
updated README
zebra
2025-06-09 17:09:28 -07:00
61d45301da
updated readme
zebra
2025-06-09 16:59:16 -07:00
966a823f09
updated README
zebra
2025-06-09 16:58:47 -07:00
9d41f4dc33
updated README
zebra
2025-06-09 16:57:48 -07:00
36553fa766
updated README
zebra
2025-06-09 16:57:10 -07:00
255aae6459
Search functions now have verbosity
zebra
2025-06-09 15:37:57 -07:00
dd42d924ef
Updates to API key input
zebra
2025-06-09 14:24:23 -07:00
2751e65038
Update musicfetch
zebra
2025-06-09 21:20:31 +00:00
6110146908
Update README.md
zebra
2025-06-09 21:11:28 +00:00
c2fbc08c3b
New Readme
zebra
2025-06-09 14:09:03 -07:00
7522a541d4
Timeout search to yt-dlp requires ytsearch: when searching via name and not URL
zebra
2025-06-09 14:03:06 -07:00
d186e32c03
For Lidarr searches, implemented 15 sec timeout before falling back to yt-dlp
zebra
2025-06-09 13:33:32 -07:00
6810c0ecbb
initial commit
zebra
2025-06-09 13:29:52 -07:00
5af040e3fd
Initial commit
zebra
2025-06-09 20:25:03 +00:00