Implement file hash-based library matching and remove fuzzy ASIN matching

Adds file hash-based matching for Audiobookshelf library items to ensure 100% accurate ASIN assignment for RMAB-organized content. Removes fuzzy matching from library availability checks, making all matching ASIN-only to eliminate false positives and race conditions. Updates database schema, processors, and matcher utilities; adds new tests and documentation for the new matching strategy. Removes obsolete scripts, Dockerfile, and related tests; updates docker-compose for test environments.
This commit is contained in:
kikootwo
2026-01-28 10:32:14 -05:00
parent 497849f427
commit a97979358f
111 changed files with 6571 additions and 1426 deletions
@@ -0,0 +1,5 @@
-- AlterTable
-- Remove deprecated fields from bookdate_config table
-- These fields have been migrated to per-user settings (User.bookDateLibraryScope and User.bookDateCustomPrompt)
ALTER TABLE "bookdate_config" DROP COLUMN IF EXISTS "library_scope";
ALTER TABLE "bookdate_config" DROP COLUMN IF EXISTS "custom_prompt";
@@ -0,0 +1,5 @@
-- AlterTable
ALTER TABLE "download_history" ADD COLUMN "indexer_id" INTEGER;
-- CreateIndex
CREATE INDEX "download_history_indexer_id_idx" ON "download_history"("indexer_id");
@@ -0,0 +1,8 @@
-- Add files_hash field to audiobooks table for accurate library matching
-- SHA256 hash of sorted audio filenames used to match RMAB-organized content with ABS library items
-- AlterTable
ALTER TABLE "audiobooks" ADD COLUMN "files_hash" TEXT;
-- CreateIndex
CREATE INDEX "audiobooks_files_hash_idx" ON "audiobooks"("files_hash");