Skip to content

Replace FreeDB lookup with AccurateRip Meta [3/4] - #405

Open
andrewiethoff wants to merge 22 commits into
gchudov:masterfrom
andrewiethoff:feat/accuraterip-meta-implementation
Open

Replace FreeDB lookup with AccurateRip Meta [3/4]#405
andrewiethoff wants to merge 22 commits into
gchudov:masterfrom
andrewiethoff:feat/accuraterip-meta-implementation

Conversation

@andrewiethoff

@andrewiethoff andrewiethoff commented Jul 31, 2026

Copy link
Copy Markdown

Merge order: 3 of 4

Depends on dotnet10-update (#403). Independent of #404 — the two are sibling branches off dotnet10-update and neither contains the other, so they may be merged in either order. #406 builds on this one.

Order PR Branch Depends on
1 #403 dotnet10-update
2 #404 security-audit #403
3 #405 feat/accuraterip-meta-implementation #403
4 #406 fix/net10-build-output-and-assembly-resolution #405

What this does

Replaces the FreeDB metadata lookup with a provider backed by the AccurateRip metadata endpoint, and makes the FreeDB code dormant rather than deleting it.

  • Provider and mapperAccurateRipMeta builds the request disc ID and body, posts to the endpoint and maps the response onto CUEMetadataEntry, tolerating malformed and surplus tracks and unordered extra tracks.
  • Transport — an IAccurateRipMetaTransport seam with an HttpWebRequest implementation that sets both Timeout and ReadWriteTimeout, disables auto-redirect and 100-continue, enables gzip/deflate, and supports cooperative cancellation through a stop watcher. Non-cancellation failures are swallowed and reported as "no result" so a dead endpoint cannot break a lookup.
  • FreeDB made dormant — the UI, helpers and settings are kept behind an EnableDormantFreedb / DORMANT_FREEDB switch that is off by default, so nothing is lost if the service returns.
  • Processor integration — the provider participates in CUESheet album lookup, and in CUERipper it is queried whenever CTDB is asked for metadata, so its release and cover art appear on the first lookup rather than only after Reload.

Scope

21 commits, 26 files, +3775 / −466 — a large share of which is test code: AccurateRipMetaTest.cs covers the mapper, the HTTP transport contract, HTTPS handling, malformed and surplus track tolerance, and edge cases, against a recorded response fixture. Design notes and the implementation plan are included under docs/.

Note on reviewing this stack

All four PRs target master, because a cross-fork pull request can only target a branch that exists in this repository. Until #403 merges, this diff also contains its commit.

andrewiethoff and others added 22 commits May 24, 2026 22:22
The provider was gated behind "no other release was found, or the search mode
is Extensive", mirroring how the now dormant FreeDB lookup had been wired as a
last resort. Since CTDB answers for virtually every recognised disc, that meant
AccurateRip Meta was never consulted on the initial lookup: its release, its
track metadata and its cover art only appeared after pressing Reload.

Treat it as a peer of the CTDB metadata sources instead - whenever CTDB is asked
for metadata, ask AccurateRip Meta too. A configured search mode of None still
suppresses both.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RSHyfpM8tS5fv5bX2fn5Lk
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant