Commit graph

859 commits

Author SHA1 Message Date
Broque Thomas
fca3e641dc Improve artist name extraction in wishlist selection
Enhanced the logic for extracting artist name and ID to handle both object and string formats from Spotify API and sanitized data. Added fallbacks to ensure artist information is correctly retrieved from multiple possible data structures.
2025-12-12 21:19:29 -08:00
Broque Thomas
4587022877 Remove source prefixes from playlist names
Eliminates hardcoded source prefixes (e.g., [Tidal], [YouTube], [Beatport], [ListenBrainz]) from playlist names in both backend and frontend code. Source detection is now handled via virtualPlaylistId prefixes, improving consistency and simplifying playlist name handling throughout the application.
2025-12-12 12:36:45 -08:00
Broque Thomas
8f30f0ab91 Enhance matched downloads with full Spotify metadata
Adds robust track-to-track matching for album and single downloads, enabling enhanced metadata enrichment using Spotify data. Updates both backend and frontend to support matching Soulseek tracks to Spotify tracks, sending full Spotify track objects for improved organization and post-processing. Simplifies context handling for simple downloads and removes legacy flags, ensuring more accurate and consistent metadata for matched downloads.
2025-12-12 07:13:53 -08:00
Broque Thomas
20d9ac6ec4 move search page downloads to transfer folder 2025-12-11 17:35:20 -08:00
Broque Thomas
c6c0a30ced Improve Spotify auth instructions for remote access
Adds detection for remote access during Spotify authentication and provides step-by-step instructions for users connecting remotely, including guidance on modifying the callback URL. Enhances user experience with styled HTML and a copy-to-clipboard button for the host IP.
2025-12-11 14:21:56 -08:00
Broque Thomas
e2b8cc2e35 Create DOCKER-TRANSFER-GUIDE.md 2025-12-10 13:46:22 -08:00
Broque Thomas
eebe035274 Update soulsync.xml 2025-12-10 09:52:23 -08:00
Broque Thomas
c7e943034d Add customizable file organization templates
Introduces a template-based file organization system for downloads, allowing users to define custom folder and filename structures for albums, singles, and playlists. Updates the backend, config example, web UI, and client-side validation to support template editing, resetting, and error checking. Improves consistency in file placement and metadata handling across all download modes.
2025-12-10 09:46:22 -08:00
Broque Thomas
5e866463ea Prevent duplicate playlist syncs and update UI
Added checks to prevent starting multiple syncs for the same playlist and updated the sync button state immediately for better user feedback. The sync button is now disabled and shows a loading state while syncing is in progress.
2025-12-09 11:36:59 -08:00
Broque Thomas
bab31218bb Improve artist handling and preserve album data in sync
Enhanced handling of artist data to support both string and object formats across the database, sync service, and web server. The sync process now preserves full album and artist objects for tracks, enabling wishlist additions with album cover art. The frontend and API were updated to use the full artist objects, and the UI now formats artist names correctly.
2025-12-09 10:44:54 -08:00
Broque Thomas
90732cc029 Update README.md 2025-12-08 16:37:59 -08:00
Broque Thomas
e5e68d0cc6 Update docker-compose.yml 2025-12-08 15:25:42 -08:00
Broque Thomas
c1561b15ab Add dynamic log level control via Web UI
Introduces API endpoints and UI elements to view and change the application's log level from the web interface. Log level changes are applied immediately and persisted in the database. Updates backend logic, logging utilities, and frontend scripts to support this feature.
2025-12-08 12:53:44 -08:00
Broque Thomas
25a8117733 Add wishlist track and album removal with confirmation
Introduces backend API endpoints to remove individual tracks or all tracks from an album in the wishlist. Updates the frontend to display delete buttons for tracks and albums, with confirmation modals before removal, and styles these new UI elements for clarity and usability.
2025-12-08 11:11:08 -08:00
Broque Thomas
b42d0252a1 Add Jellyfin music library selection support
Introduces backend and frontend functionality to list and select Jellyfin music libraries. Adds API endpoints, updates the client logic, and provides a UI selector for users to choose their preferred Jellyfin music library.
2025-12-08 10:20:15 -08:00
Broque Thomas
eae2a9c135 Add auto-cleanup and stuck task detection for batches
Implements automatic cleanup of completed, errored, or cancelled batches after 5 minutes to prevent stale state. Adds stuck task detection for 'searching' and 'post_processing' states, forcing failure or completion if tasks exceed time thresholds. Updates batch completion logic to track completion timestamps and handle orphaned tasks more robustly. Also improves wishlist auto-processing timer management.
2025-12-07 21:43:08 -08:00
Broque Thomas
349d653ca0 Prevent race conditions in wishlist downloads
Adds support for sending specific track IDs from the frontend to the backend when starting wishlist missing downloads. This ensures only the tracks currently visible to the user are processed, preventing race conditions if the wishlist changes between modal open and analysis start. Category filtering remains for backward compatibility.
2025-12-07 14:43:43 -08:00
Broque Thomas
c237f354c4
Merge pull request #80 from Nezreka/docker-fix
Migrate config storage to SQLite database
2025-12-04 11:09:24 -08:00
Broque Thomas
36418e05b4 Migrate config storage to SQLite database
ConfigManager now stores configuration in a SQLite database instead of a JSON file. The class supports migration from existing config.json files and falls back to defaults if no configuration is found. This change improves reliability and centralizes configuration management.
2025-12-04 11:08:38 -08:00
Broque Thomas
bfabd26469 Cache artist image on watchlist addition
When an artist is added to the watchlist, their image is now fetched from Spotify and cached in the database immediately if available. This improves user experience by ensuring artist images are present without requiring a separate fetch.
2025-12-02 16:26:18 -08:00
Broque Thomas
0519c58cd7 Remove already-owned tracks from wishlist before download
Added logic to both automatic and manual wishlist processing to check for and remove tracks that already exist in the library before initiating downloads. This prevents unnecessary bandwidth usage and keeps the wishlist up to date.
2025-12-02 13:32:15 -08:00
Broque Thomas
cee7774c93 Refactor wishlist auto-processing lock logic
Improves handling of concurrent wishlist and watchlist operations by moving scheduling outside the lock and using flags to avoid deadlocks. This change ensures that scheduling the next wishlist processing does not occur while holding the lock, reducing risk of deadlock and improving code clarity.
2025-12-02 09:36:59 -08:00
Broque Thomas
8e67c34d72 Update web_server.py 2025-12-01 15:12:18 -08:00
Broque Thomas
44b1050dca wishlist auto restart timer check 2025-12-01 10:26:46 -08:00
Broque Thomas
9575d8983c add timer to watchlist/wishlist 2025-11-26 12:14:08 -08:00
Broque Thomas
aba4129193 adjust auto watchlist scan ui 2025-11-26 11:58:29 -08:00
Broque Thomas
14548ec640 watchlist stuck fix 2025-11-26 11:11:28 -08:00
Broque Thomas
7e43a26408 Revert "wishlist duplicate bug"
This reverts commit e67be4b19d.
2025-11-26 09:21:54 -08:00
Broque Thomas
e67be4b19d wishlist duplicate bug 2025-11-26 08:50:36 -08:00
Broque Thomas
28d8dbf5e0 fix listenbrainz wishlist comp 2025-11-25 23:34:56 -08:00
Broque Thomas
e8f9803bd5 Update script.js 2025-11-25 22:07:26 -08:00
Broque Thomas
94fd39cf34 listenbrainz persistence bug 2025-11-25 18:36:59 -08:00
Broque Thomas
bcf62d7de4 Update music_database.py 2025-11-25 17:54:14 -08:00
Broque Thomas
a61c581c25 listenbrainz fully connected to discovery modal 2025-11-25 17:41:22 -08:00
Broque Thomas
ffe02d5330 listenbrainz discovery fix 2025-11-25 15:13:41 -08:00
Broque Thomas
ab58b64a17 cap listenbrainz playlist memory 2025-11-25 09:44:41 -08:00
Broque Thomas
9a1cd2e74b fix seasonal auto scan 2025-11-25 09:25:36 -08:00
Broque Thomas
6db4409d08 better watchlist live status display for auto and manual scan 2025-11-25 09:21:33 -08:00
Broque Thomas
27f115d719 connect watchlist settings to scan 2025-11-24 21:43:11 -08:00
Broque Thomas
4684408439 Revert "user selected watchlist settings now connected to backend."
This reverts commit 2c12759dbb.
2025-11-24 19:30:30 -08:00
Broque Thomas
353580bd2d Revert "Update watchlist_scanner.py"
This reverts commit 4c8fa45337.
2025-11-24 19:29:53 -08:00
Broque Thomas
4c8fa45337 Update watchlist_scanner.py 2025-11-24 19:14:32 -08:00
Broque Thomas
2c12759dbb user selected watchlist settings now connected to backend. 2025-11-24 17:27:50 -08:00
Broque Thomas
1749bb62a5 foundation for allowing user to decide which releases to grab per watchlist artist 2025-11-24 17:16:12 -08:00
Broque Thomas
fd206f552d Update web_server.py 2025-11-24 15:23:56 -08:00
Broque Thomas
bb816be280 update discoveyr modal to grab album data 2025-11-24 14:51:24 -08:00
Broque Thomas
3be1dc9ace update discovery modal to collect album info 2025-11-24 14:22:32 -08:00
Broque Thomas
178bb7696d update liked songs to include album info 2025-11-24 07:19:15 -08:00
Broque Thomas
c46e2c527e search bar for watchlist 2025-11-23 20:23:30 -08:00
Broque Thomas
8798522854 v1.1 modal udpated 2025-11-23 19:53:45 -08:00