Commit Graph

  • 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