- Implemented the service and adapter layers instead of controllers to simplify the integration of new audio recognition and metadata fetching APIs.
- Unified code styling and practices throughout the project to ensure consistency.
- Create metadataController to orchestrate the retrieval of metadata for given recording IDs.
- Develop metadataRetrieval for direct API communication with MusicBrainz, handling request execution and response parsing.
- Implement musicBrainzApiErrorHandler from scratch to provide specific error messages for different HTTP response codes related to MusicBrainz API requests.
- Ensure complete integration across newly written components for a cohesive metadata retrieval flow.
These changes establish a new MusicBrainz API integration system that facilitates metadata retrieval with comprehensive error handling features, improving the resilience and maintainability of the application.
- Transitioned audio recognition in audioRecognition service from Audd API to AcoustID, leveraging audio fingerprinting instead of direct audio file analysis.
- Created acoustidApiErrorHandler for modular error handling within the audioRecognition service.
- Developed a retry mechanism for axios requests in the retryAxios service to enhance robustness.
- Added dependencies on fpcalc and chromaprint to generate audio fingerprints, now required to be installed and set in the system PATH for Windows environments.
Removed all files, dependencies, and mentions related to the AuDD API. Cleaned up the src directory, removing all non-developed or unused items, as part of a major cleanup. This change is due to the strategic shift towards using audio fingerprinting for song recognition, as opposed to sending the raw audio file itself.
- Refactor error handling by consolidating all errors in a newly created 'errors' directory.
- Introduce truncateAudioStream functionality to limit audio file processing to 25 seconds, optimizing performance and API usage.
The newly added 'errors' directory contains the apiError handler which provides a centralized error handling mechanism to easily manage error consistency and possible expansion in the future.
Remove dotenv package and update the application to use Node.jss built-in --env-file flag for loading environment variables. This change is made to simplify the configuration by utilizing native capabilities introduced in Node.js v16.x.x.
- Move audioFileValidator and audioTagWriter to src/services to underline their role in the application's core logic.
- Create audioController.js in src/controllers to handle validation and API interactions, centralizing request handling and streamlining app.js.
Create a new audioFileValidator module to ensure only audio files are processed. Add directoryFileFetcher module to traverse and fetch file paths from directories.
- src/index.js: Entry point of the CLI application that processes command-line arguments and orchestrates the audio recognition and metadata tagging process.
- src/api/audioRecognition.js: Handles communication with the audio recognition API to identify songs from provided audio files.
- src/api/metadataRetrieval.js: Fetches additional song metadata such as album art, artist, and release date from music metadata services.
- src/utils/fileHandler.js: Manages file I/O operations, including reading audio files and writing metadata to them.
- src/utils/tagWriter.js: Writes the retrieved metadata to the audio files' ID3 tags, leveraging the node-id3 library.