- Implemented `bulk_video_download` function to handle video downloads, including metadata fetching, HLS stream handling, and tarball creation.
- Enhanced `bulk_download` function in `rip_background.py` to improve error logging with formatted track descriptions.
- Added video search and metadata retrieval methods in `sr_wrapper.py` for better integration with Tidal's video API.
- Updated Tidal client credentials
- Added detailed reporting for each table processed, including success and error statuses.
- Integrated Discord notifications for various stages of the upsert process.
- Included functionality to fetch the latest SQLite dump from a specified URL.
- Added error handling and state management for the upsert process.
Resolves#34
- Change of direction, LRCLib searches from /lyric/search now use internal cache - which is a PGSQL import of the LRCLib SQLite database. Change to PGSQL was made for performance.
Enhance RadioUtil playlist handling and deduplication
- Added checks to ensure playlists are initialized and not empty.
- Improved deduplication logic to prevent modifying the original playlist during iteration.
- Added logging for duplicate removal and playlist population.
Add cover art handling in rip_background.py
- Implemented functionality to attach album art if provided in metadata.
- Added error handling for cover art download failures.
Introduce unique filename handling in rip_background.py
- Added `ensure_unique_filename_in_dir` function to prevent overwriting files with the same name.
Refactor SRUtil for improved error handling and metadata fetching
- Introduced `MetadataFetchError` for better error management during metadata retrieval.
- Implemented `_safe_api_call` for resilient API calls with retry logic.
- Enhanced `get_artists_by_name` to optionally group results by artist name.
- Updated various methods to utilize the new error handling and retry mechanisms.