Commit graph

489 commits

Author SHA1 Message Date
Broque Thomas
9af0be1300 fixed issue where legacy cold was called. 2026-01-26 13:37:42 -08:00
Broque Thomas
db2400b42a fix navidrome sync issue where duplicate playlists are created 2026-01-26 10:25:55 -08:00
Broque Thomas
b9f2344f0f lookup artist name on track/album pull to ensure clean data.
Great for multi artist scenarios
2026-01-25 15:08:08 -08:00
Broque Thomas
48b914a4be Update spotify_client.py 2026-01-25 13:51:29 -08:00
Broque Thomas
4f1dc2c15f force refetch similar artists when Spotify IDs missing
When Spotify is enabled after populating similar artists with only iTunes IDs, the freshness check now detects missing Spotify IDs and triggers a refetch. This fixes the Discover page not showing data when switching from iTunes-only mode.
2026-01-24 23:46:01 -08:00
Broque Thomas
3cb88669e3 Fix iTunes-only Discover page not loading data
- Add similar artists fetching to web UI scan loop
  - Add database migration for UNIQUE constraint on similar_artists table                                          - Add source-agnostic /api/discover/album endpoint for iTunes support
  - Fix NOT NULL constraint on discovery_recent_albums blocking iTunes albums
  - Add fallback to watchlist artists when no similar artists exist
  - Add /api/discover/refresh and /api/discover/diagnose endpoints
  - Add retry logic with exponential backoff for iTunes API calls
  - Ensure cache_discovery_recent_albums runs even when pool population skips
2026-01-24 21:48:17 -08:00
Broque Thomas
4319d440ee Add iTunes as resilient primary source for discovery features
Implement dual-source architecture where iTunes serves as always-available
  primary source and Spotify as preferred source when authenticated.

  - Make watchlist scans provider-aware (manual and auto paths)
  - Update discovery pool population to process both sources
  - Update recent albums caching for both sources
  - Create source-specific curated playlists (Fresh Tape, Archives)
  - Add on-the-fly iTunes ID resolution for similar artists
  - Add iTunes ID check to similar artists freshness validation
  - Fix sqlite3.Row compatibility in personalized playlists
  - Fix iTunes ISO 8601 date format parsing
  - Update API endpoints to serve source-appropriate data

  This ensures the app remains fully functional if Spotify becomes
  unavailable (rate limits, auth issues, bans) by seamlessly falling
  back to iTunes data that has been building in parallel.
2026-01-24 09:47:41 -08:00
Broque Thomas
1d14a8b987 Discover page itunes integration. Spotify and Itunes will have their own pool 2026-01-23 23:05:58 -08:00
Broque Thomas
1560726bbc rebuild discovery pool flow to allow multiprocessing of itunes and spotfiy. each getting their own pool. 2026-01-23 14:25:26 -08:00
Broque Thomas
fecd371b5e Add lazy loading for artist images across UI
Implements lazy loading of artist images in search results, artist pages, and similar artist bubbles to improve performance and user experience. Updates the iTunes client to prefer explicit album versions and deduplicate albums accordingly. Adds a new API endpoint to fetch artist images, and updates frontend logic to asynchronously fetch and display images where missing.
2026-01-23 07:38:03 -08:00
Broque Thomas
f12478ee70 Add iTunes fallback and improve artist/album handling
Adds iTunes fallback to SpotifyClient for search and metadata when Spotify is not authenticated. Updates album type logic to distinguish EPs, singles, and albums more accurately. Refactors watchlist database methods to support both Spotify and iTunes artist IDs. Improves deduplication and normalization of album names from iTunes. Updates web server and frontend to use new album type logic and support both ID types. Adds artist bubble snapshot example data.
2026-01-22 19:12:14 -08:00
Broque Thomas
b790c34657 Add support for scanning artists with iTunes provider
Refactored artist scanning logic to use the active metadata provider (Spotify or iTunes) for fetching artist data, discography, and album tracks. Introduced helper methods to select the correct client and artist ID based on the provider, and updated image and similar artist handling accordingly. This enables watchlist scanning to work with iTunes when Spotify is not authenticated, improving flexibility and provider support.
2026-01-22 18:14:23 -08:00
Broque Thomas
579124c477 Normalize iTunes API responses to Spotify format
Updated get_album, get_album_tracks, and get_artist methods to return data structures compatible with Spotify's API format. This includes normalizing image arrays, artist and album fields, and adding synthetic URIs and external URLs for better interoperability.
2026-01-22 17:32:23 -08:00
Broque Thomas
f126cf7118 Add cross-provider support for watchlist artists
Introduces iTunes artist ID support to WatchlistArtist and database schema, enabling proactive backfilling of missing provider IDs (Spotify/iTunes) for watchlist artists. Updates WatchlistScanner to use MetadataService for provider-agnostic scanning and ID matching, and modifies web_server to support scans with either provider. Includes new database migration and update methods for iTunes and Spotify artist IDs.
2026-01-22 17:04:23 -08:00
Broque Thomas
e7c1e44cf1 Add iTunes metadata client and fallback guide
Introduces core/itunes_client.py implementing an iTunes Search API client for music metadata, providing search and lookup for tracks, albums, and artists with rate limiting. Adds METADATA-FALLBACK-IMPLEMENTATION.md, a comprehensive guide comparing fallback strategies for music metadata, including anonymous Spotify access and iTunes, and outlines integration approaches for seamless user experience without requiring Spotify credentials.
2026-01-22 15:31:02 -08:00
Broque Thomas
05c2cd7320 Update tidal_client.py 2026-01-16 11:48:50 -08:00
Broque Thomas
fdb9435fbe Fix pagination cursor retrieval in TidalClient
Updates the method for obtaining the next cursor during track pagination to use the approach from PR #113, retrieving it from 'links.meta.nextCursor' instead of 'meta.nextCursor'. This ensures correct pagination behavior.
2026-01-16 10:15:18 -08:00
Broque Thomas
6e02aa03ac Remove redundant playlist ownership filtering
Eliminated unnecessary filtering of playlists by owner or collaboration status, as the Spotify API already returns all accessible playlists. This simplifies the code and ensures all relevant playlists are processed.
2026-01-15 07:16:59 -08:00
Broque Thomas
665281f184 Refactor playlist fetching to use Tidal JSON:API
Rewrites playlist and track fetching to use Tidal's JSON:API endpoints with cursor-based pagination and batch track hydration. Adds robust rate limiting with retry logic, and introduces ISO-8601 duration parsing. This improves reliability, performance, and compatibility with Tidal's latest API structure.
2026-01-15 06:44:35 -08:00
Broque Thomas
007640a37f Reload Soulseek client config on orchestrator init
Added a call to self.soulseek._setup_client() in DownloadOrchestrator to ensure the Soulseek client configuration is reloaded when the orchestrator is initialized. This helps keep the client settings in sync with the latest configuration.
2026-01-11 21:02:23 -08:00
Broque Thomas
a8766828d9 Add content type filters for watchlist artists
Introduces new filters for live versions, remixes, acoustic versions, and compilation albums to the watchlist artist configuration. Updates the database schema, backend API, and web UI to support these options, allowing users to customize which content types are included for each artist in their watchlist.
2026-01-11 01:33:39 -08:00
Broque Thomas
9d275488e2 Add config reload support and improve config loading
Introduces a reload_config method to SpotifyClient and refactors ConfigManager to support reloading configuration from a file. Updates web_server.py to use the new config loading mechanism, ensuring configuration is loaded into the existing singleton instance and SpotifyClient is properly re-initialized after settings changes.
2026-01-06 09:29:11 -08:00
Broque Thomas
a23b033d37 Add search_and_download_best method to orchestrator
Introduces an async method to search for a query and automatically download the best result based on quality preferences and source priority. The method handles empty results, filters by quality, and logs the download process.
2026-01-05 22:33:24 -08:00
Broque Thomas
304cc84ad5 Add clearing of completed YouTube downloads
Implemented clear_all_completed_downloads in YouTubeClient to remove completed, cancelled, errored, and aborted downloads from memory. Updated DownloadOrchestrator to call this method, ensuring both Soulseek and YouTube completed downloads are cleared.
2026-01-05 22:00:38 -08:00
Broque Thomas
9bf1948097 Add priority query for Artist + Album + Title in matching
Introduces a new priority 0 query that combines artist, album, and title for improved matching, especially for YouTube and hybrid download modes. This helps better match tracks where the album is significant, such as soundtracks, and only applies when the album is not a generic label like 'single' or 'greatest hits'.
2026-01-05 21:27:54 -08:00
Broque Thomas
ddd2ebdb13 Improve YouTube download handling and shutdown safety
Adjusts matching weights for YouTube sources to rely more on title and duration, adds a shutdown callback to the YouTube client to prevent new downloads during shutdown, and enhances post-processing to reliably resolve actual YouTube file paths. Improves error handling for file removal, ensures no new batch downloads start during shutdown, and refines download monitoring to trigger post-processing on completed YouTube downloads. Also increases YouTube download retries and improves logging for debugging.
2026-01-05 18:08:43 -08:00
Broque Thomas
381e43c76b Update youtube_client.py 2026-01-04 15:02:41 -08:00
Broque Thomas
58f7fdb005 style youtube cards 2026-01-04 14:56:05 -08:00
Broque Thomas
61e822bf6f Add robust YouTube streaming support and improve format checks
Enhances streaming logic to better support YouTube as a download source, including improved filename handling, fuzzy file matching, and search query generation. Updates format checks in the frontend to skip them for YouTube (always MP3). Refactors backend to use a unified download status API for both Soulseek and YouTube, and improves service test messaging based on the active download mode.
2026-01-04 12:30:35 -08:00
Broque Thomas
c94b1d2f5b Add hybrid Soulseek/YouTube download orchestration - TESTING
Introduces a DownloadOrchestrator class to route downloads between Soulseek and YouTube based on user-configurable modes (Soulseek only, YouTube only, Hybrid with fallback). Updates web server and UI to support new download source settings, including hybrid mode options and YouTube confidence threshold. Refactors YouTube client for thread-safe download management and bot detection bypass. Ensures quality filtering is skipped for YouTube results and improves file matching and post-processing logic for YouTube downloads.
2026-01-03 22:20:36 -08:00
Broque Thomas
ce67e64ff7 Update youtube_client.py 2026-01-03 14:57:43 -08:00
Broque Thomas
eaf33f6f6d just testing things 2026-01-03 13:10:37 -08:00
Broque Thomas
8f15dc039d Convert track duration to milliseconds in search results
Updated the duration field in TrackResult to store duration in milliseconds instead of seconds, matching Spotify's expected format. This ensures consistency when integrating with services that use millisecond-based durations.
2025-12-29 14:54:28 -08:00
Broque Thomas
a167a00a0a Add enhanced search with categorized dropdown UI
Implements an enhanced search endpoint in the backend that unifies Spotify and local database results, returning categorized artists, albums, and tracks. Updates the frontend with a new dropdown overlay for live search, debounced input, categorized result rendering, and direct integration with the main results area for album/track selection. Adds new CSS for the dropdown and result cards, and updates the Track dataclass to include image URLs for richer UI display.
2025-12-29 09:56:32 -08:00
Broque Thomas
5d29131530 Add configurable Soulseek search timeout and buffer
Introduces 'search_timeout' and 'search_timeout_buffer' options to Soulseek settings in the config, backend, and web UI. The backend now uses these values to control search duration and polling, allowing users to fine-tune how long searches run and how long to wait for late results.
2025-12-28 21:02:01 -08:00
Broque Thomas
a2bdb93498 Improve matching logic and wishlist album display
Enhanced the music matching engine to use stricter version handling, rebalance title/artist/duration weights, and raise confidence thresholds to reduce false positives. Updated string normalization to better handle separators and special characters. In the web UI, improved album ID sanitization and added a placeholder for missing album images in the wishlist view.
2025-12-28 19:23:50 -08:00
Broque Thomas
3c7659feac Improve wishlist track sorting robustness
Refactored the sorting logic to handle cases where 'spotify_data' may be a JSON string or have varying structures. This ensures consistent sorting by artist and track name, even with malformed or unexpected data formats.
2025-12-14 12:21:36 -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
44b1050dca wishlist auto restart timer check 2025-12-01 10:26:46 -08:00
Broque Thomas
ab58b64a17 cap listenbrainz playlist memory 2025-11-25 09:44:41 -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
c46e2c527e search bar for watchlist 2025-11-23 20:23:30 -08:00
Broque Thomas
4804a995f7 further progress on wishlist rebuild 2025-11-23 19:14:13 -08:00
Broque Thomas
0b2322f225 Wishlist overhaul near complete 2025-11-23 18:22:09 -08:00
Broque Thomas
b7b76b378d Fix: Emby sync issue 2025-11-23 11:34:38 -08:00
Broque Thomas
ec6a9163a8 Fix: Jellyfin multiple users could break functionality. 2025-11-22 14:41:44 -08:00
Broque Thomas
8712209bb9 emby support? 2025-11-21 16:19:58 -08:00
Broque Thomas
aef53f7b4d grab paginated albums 2025-11-18 22:46:24 -08:00
Broque Thomas
52c27ce2a9 cache listenbrainz and update with watchlist 2025-11-18 13:41:45 -08:00
Broque Thomas
333d984527 listenbrainz update 2025-11-18 09:57:47 -08:00
Broque Thomas
bc54f2c1a3 listenbrainz playlist support 2025-11-17 22:38:38 -08:00
Broque Thomas
a3f98f29d3 utilize quality profile over preferred. 2025-11-17 14:11:14 -08:00
Broque Thomas
08eb014da8 fix genre discovery 2025-11-17 12:22:49 -08:00
Broque Thomas
cc62b3b48e discover page progress 2025-11-17 10:09:08 -08:00
Broque Thomas
ee266920a9 discover progress 2025-11-17 08:49:49 -08:00
Broque Thomas
5a13b5fe94 discover progress 2025-11-17 08:30:38 -08:00
Broque Thomas
08a4decda8 discover progress 2025-11-16 20:56:08 -08:00
Broque Thomas
86fe7dde1f discover progress 2025-11-16 20:26:19 -08:00
Broque Thomas
f75ffdf6cb discover progress 2025-11-16 16:27:44 -08:00
Broque Thomas
68a15071f1 discover page 2025-11-16 15:33:08 -08:00
Broque Thomas
bd4e0d131e discover page updates 2025-11-16 15:11:42 -08:00
Broque Thomas
b16318f37e add spotify liked songs playlist 2025-11-16 10:34:44 -08:00
Broque Thomas
b0cfdf5271 progress 2025-11-11 17:05:44 -08:00
Broque Thomas
bb69b75f61 progress 2025-11-11 16:47:22 -08:00
Broque Thomas
65cbf6ce28 discover progress 2025-11-11 16:00:37 -08:00
Broque Thomas
76dca2f045 caching for similar artists 2025-11-11 14:04:55 -08:00
Broque Thomas
d399a612ef progress on discover page 2025-11-11 11:38:27 -08:00
Broque Thomas
47f8862fc4 discovery page progress 2025-11-11 10:39:46 -08:00
Broque Thomas
77c05b0315 grab all tracks from tidal playlists correctly 2025-11-09 20:42:29 -08:00
Broque Thomas
576f151c5c preferred quality updates. 2025-11-09 14:16:38 -08:00
Broque Thomas
9e3c64115b fix dict error on gui verison for manual searches 2025-11-09 09:39:00 -08:00
Broque Thomas
033ddb756a better rate limiting for spotiify 2025-11-09 08:55:07 -08:00
Broque Thomas
8c7cb6d448 manual library selection for plex servers 2025-10-15 15:04:05 -07:00
Broque Thomas
09b4638279 Enforce strict version matching for track confidence
Adds strict checks to ensure Soulseek track versions (live, remix, acoustic, instrumental) are only matched if the Spotify track title contains corresponding version indicators. This prevents mismatched versions from being accepted and applies a reduced penalty for matching non-original versions.
2025-10-04 21:48:52 -07:00
Broque Thomas
22db9ba04d Update jellyfin_client.py 2025-09-25 14:17:57 -07:00
Broque Thomas
3e8b469adb library page updates 2025-09-23 23:47:58 -07:00
Broque Thomas
329e665db9 library page update 2025-09-23 20:45:58 -07:00
Broque Thomas
8de9df07e7 auto lyric download 2025-09-22 16:04:06 -07:00
Broque Thomas
a73d89bc9e Update plex_client.py 2025-09-22 15:15:34 -07:00
Broque Thomas
e06f0ea372 auto scan after download completion and follow with auto incremental update for active server 2025-09-22 15:01:28 -07:00
Broque Thomas
fcee0194e7 navidrome functionality start 2025-09-21 21:02:12 -07:00
Broque Thomas
21d016fcbd Add configurable redirect URI for Spotify and Tidal
Redirect URIs for Spotify and Tidal OAuth are now configurable via the web UI and settings. Updated backend clients to use the configured redirect URI if provided, improving flexibility for deployments with custom callback URLs.
2025-09-12 21:56:26 -07:00
Broque Thomas
93ac55a709 Improve wishlist track sorting and cleanup logic
Wishlist tracks are now sorted by artist and track name for consistent display. The database query for wishlist tracks now orders by date_added instead of randomly. Added logic to remove completed tracks from the wishlist during failed track processing. Updated docker-compose.yml to mount the H: drive for transfer folders.
2025-09-12 15:19:36 -07:00
Broque Thomas
d51171c180 Update plex_client.py 2025-09-12 12:47:00 -07:00
Broque Thomas
24b789660a Improve Docker path handling and filename extraction
Added helper functions to resolve Windows paths for Docker containers and to extract filenames in a cross-platform manner. Updated usage throughout web_server.py and soulseek_client.py to ensure correct path mapping and filename handling. Modified docker-compose.yml to use named volumes and mount the E: drive for better Docker compatibility.
2025-09-11 17:46:49 -07:00
Broque Thomas
008653a69c Improve Docker compatibility for host service URLs
Updated Soulseek client, web server, and docker-compose.yml to better handle service URLs when running inside Docker containers. Localhost URLs are now resolved to host.docker.internal, and Docker-specific volume mounts and extra_hosts are configured for improved interoperability between container and host services.
2025-09-11 13:53:36 -07:00
Broque Thomas
c4b4adf7fb Add web-based Spotify and Tidal OAuth flows
Introduces web server routes and UI buttons for initiating Spotify and Tidal OAuth authentication flows, with dedicated callback servers for token exchange. Updates Docker ports for OAuth callbacks and refines PKCE handling for Tidal. Improves user experience by allowing authentication directly from the web UI.
2025-09-11 13:24:15 -07:00
Broque Thomas
287d2fd2ec Add Docker support and improve headless compatibility
Introduces Docker deployment files (.dockerignore, Dockerfile, docker-compose.yml, docker-setup.sh, requirements-webui.txt, and README-Docker.md) for SoulSync WebUI. Refactors core/database_update_worker.py and core/media_scan_manager.py to support headless operation without PyQt6, enabling signal/callback compatibility for both GUI and non-GUI environments. Removes logs/app.log file.
2025-09-11 08:26:25 -07:00
Broque Thomas
94d1c82674 Add activity feed and toasts to dashboard
Introduces a global activity feed system with API endpoints for recent activities and toasts, and integrates activity tracking for key backend events (downloads, syncs, database updates, etc.). Updates the dashboard frontend to periodically fetch and display activity feed items and show toasts for recent actions. Improves error logging and reduces noise for expected 404s in Soulseek client. Adds related CSS for activity feed separators.
2025-09-10 17:04:12 -07:00
Broque Thomas
42002d1b45 Add automatic and manual wishlist cleanup features
Introduces backend logic to automatically remove tracks from the wishlist if they already exist in the database after downloads or database updates. Adds a new API endpoint and frontend button for manual wishlist cleanup, allowing users to remove already-owned tracks from the wishlist. Enhances reliability and user experience by keeping the wishlist up-to-date.
2025-09-10 07:37:46 -07:00
Broque Thomas
d13bd255d0 update 2025-09-03 18:45:05 -07:00
Broque Thomas
ebc7e2246d Added tidal support. Fixed readme auth issues. 2025-08-21 15:32:46 -07:00
Broque Thomas
87a1427b1e bug fix 2025-08-18 21:19:52 -07:00
Broque Thomas
ceeb4c22dc remove metadata updater tool for jellyfin since most of the support is lost. 2025-08-18 18:00:58 -07:00
Broque Thomas
0c90f4f327 multi-server source 2025-08-18 15:32:58 -07:00
Broque Thomas
620c78766b better 2025-08-18 10:36:57 -07:00
Broque Thomas
8063197a54 fix settings page, add rate limiting, live tracking to watchlist modal 2025-08-16 23:28:29 -07:00
Broque Thomas
1bf7995864 rate limiting 2025-08-16 10:24:07 -07:00
Broque Thomas
3bd6a29bfd Included Watchlist functionality.
Watchlist will allow the user to select artist to 'watch' and the app will automatically add new releases by those artists to the wishlist for automatic download.

included version information and modal
2025-08-16 09:27:01 -07:00
Broque Thomas
ce4dbef637 fetch all playlists with pagination 2025-08-14 20:28:16 -07:00
Broque Thomas
68584e0923 remove pycache 2025-08-14 14:09:11 -07:00
Broque Thomas
339cbe3c53 update pt. vol. feat. matching 2025-08-11 11:58:22 -07:00
Broque Thomas
7df724c202 rate limiting 2025-08-11 08:36:51 -07:00
Broque Thomas
6ff8ee2483 rate limiting to avoid sousleek ban 2025-08-11 00:18:14 -07:00
Broque Thomas
845f8e995f playlist backup functionality 2025-08-10 12:42:31 -07:00
Broque Thomas
0758512d8c metadata updater after transfer 2025-08-09 22:35:11 -07:00
Broque Thomas
f4ac2b7d6e KoЯn.... 2025-08-09 16:38:56 -07:00
Broque Thomas
3bbb635848 matching improvements and bug fixes 2025-08-09 13:47:00 -07:00
Broque Thomas
d9e41bc12f fix logging issue 2025-08-09 13:17:11 -07:00
Broque Thomas
de257af08d fixed korn match 2025-08-09 12:56:23 -07:00
Broque Thomas
5151c53fac incremental working better? 2025-08-09 11:14:42 -07:00
Broque Thomas
aee5995c1a auto incremental update 2025-08-09 01:37:25 -07:00
Broque Thomas
b5aea8c038 fixed issue where items didn't move to wishlist 2025-08-09 00:29:31 -07:00
Broque Thomas
2196ed35f6 fixing database issues 2025-08-08 22:27:02 -07:00
Broque Thomas
a228affd7b database fixes 2025-08-08 20:44:48 -07:00
Broque Thomas
e267986d44 better matching engine 2025-08-08 13:57:33 -07:00
Broque Thomas
285809d16f better matching 2025-08-08 13:19:49 -07:00
Broque Thomas
9f9183469d wishlist modal somewhat ready 2025-08-08 13:00:12 -07:00
Broque Thomas
b5e3c47051 wishlist functionality 2025-08-07 23:08:05 -07:00
Broque Thomas
ed91099a1c enable quality pref. 2025-08-07 21:43:03 -07:00
Broque Thomas
2ad0dddba4 recommend database refresh every 1-2weeks
This is needed if users manually correct failed matches on plex when songs are scanned in. If a db sync is done after the scan but before the manual modification,
2025-08-07 20:27:26 -07:00
Broque Thomas
73679f5709 bug fixes 2025-08-07 14:53:16 -07:00
Broque Thomas
906d0c23b7 incremental update bug fixed 2025-08-07 11:37:13 -07:00
Broque Thomas
66bbfaf9c1 fix incremental update 2025-08-07 11:26:50 -07:00
Broque Thomas
aafc0ca49f consistent matching between sync and artists. 2025-08-07 10:35:56 -07:00
Broque Thomas
35fdef76ce better matching on slskd 2025-08-07 00:37:44 -07:00
Broque Thomas
86fcdd6869 better matching 2025-08-06 19:44:55 -07:00
Broque Thomas
684433d857 update variations 2025-08-06 00:07:12 -07:00
Broque Thomas
b76c0531e5 basic db structure 2025-08-05 22:43:04 -07:00
Broque Thomas
a98b10715e remove bad code 2025-07-29 18:36:48 -07:00
Broque Thomas
886b9140a1 fixed 2025-07-29 17:25:04 -07:00
Broque Thomas
7ef7521c1b remove 2025-07-29 15:56:11 -07:00
Broque Thomas
bae3bedd71 remove logs 2025-07-29 15:32:18 -07:00
Broque Thomas
6bc87cc0f5 improved metadata speed 2025-07-29 14:10:06 -07:00
Broque Thomas
b5859a5ed5 Update plex_client.py 2025-07-29 11:07:16 -07:00
Broque Thomas
2b97e685dc fixed false positive issue from fallback query
removing artist from the search introduced false positives when searching plex.
2025-07-29 10:35:57 -07:00
Broque Thomas
7c42873834 good 2025-07-28 23:37:58 -07:00
Broque Thomas
8a2f5eb503 good 2025-07-28 20:41:06 -07:00
Broque Thomas
fc87fe1740 good 2025-07-28 18:59:19 -07:00
Broque Thomas
5265391ae4 good 2025-07-28 16:06:57 -07:00
Broque Thomas
b6dd42e916 good 2025-07-27 20:45:33 -07:00
Broque Thomas
b5ed2b0e5f cleanup 2025-07-27 16:26:44 -07:00
Broque Thomas
c40b85c558 adjust album matching 2025-07-26 23:41:33 -07:00
Broque Thomas
529456300a maybe helpful 2025-07-26 10:48:34 -07:00
Broque Thomas
852e755b95 progress 2025-07-25 18:04:23 -07:00
Broque Thomas
9a3f1e9c9f good 2025-07-25 17:52:00 -07:00
Broque Thomas
d5cea2c041 good 2025-07-25 13:18:09 -07:00
Broque Thomas
55c36241dd good 2025-07-25 10:53:53 -07:00
Broque Thomas
77383f0178 better 2025-07-25 10:13:33 -07:00
Broque Thomas
ff33f9b3ef better 2025-07-25 00:48:23 -07:00
Broque Thomas
276cd06f29 better 2025-07-24 19:37:15 -07:00
Broque Thomas
1af9e7d3d3 good 2025-07-24 18:17:50 -07:00
Broque Thomas
8e0e77f4d2 good 2025-07-24 18:09:31 -07:00
Broque Thomas
6358de554f good 2025-07-24 17:45:42 -07:00
Broque Thomas
44c262c7b4 better 2025-07-24 17:03:30 -07:00
Broque Thomas
fda2b92724 better 2025-07-24 16:49:08 -07:00
Broque Thomas
3e6b329e35 better 2025-07-24 16:44:26 -07:00
Broque Thomas
a2d64e9953 better 2025-07-24 16:27:54 -07:00
Broque Thomas
f1e4539936 better 2025-07-24 16:20:36 -07:00
Broque Thomas
3f04d7f984 better 2025-07-24 16:10:07 -07:00
Broque Thomas
39ca1e369a good 2025-07-24 14:53:05 -07:00
Broque Thomas
ccc89067e6 better 2025-07-22 19:15:13 -07:00
Broque Thomas
9197081092 better 2025-07-20 10:05:54 -07:00
Broque Thomas
4973a53369 Playlist page 2025-07-19 22:12:58 -07:00
Broque Thomas
8305cb6b47 better 2025-07-16 19:47:25 -07:00
Broque Thomas
15f4f8925b progress 2025-07-16 09:28:25 -07:00
Broque Thomas
5ea9de0cfe clean 2025-07-15 19:55:03 -07:00
Broque Thomas
f77c023e10 better 2025-07-15 16:24:51 -07:00
Broque Thomas
b42b1aeef5 i like this progress 2025-07-14 18:38:37 -07:00
Broque Thomas
32d1cfd06f better 2025-07-14 13:26:12 -07:00
Broque Thomas
f50f32dfc5 better 2025-07-14 10:55:40 -07:00
Broque Thomas
0ba486f990 matching system 2025-07-13 21:56:23 -07:00
Broque Thomas
405dd3d8e9 progress 2025-07-13 20:04:14 -07:00
Broque Thomas
2afa8c709a fix 2025-07-12 23:04:27 -07:00
Broque Thomas
18f2cac879 progress 2025-07-11 19:00:06 -07:00
Broque Thomas
671e9af07f fix 2025-07-11 14:37:13 -07:00
Broque Thomas
99605de41a working 2025-07-10 21:14:35 -07:00
Broque Thomas
712d492ade more 2025-07-10 20:43:17 -07:00
Broque Thomas
6154ed9519 working better 2025-07-10 13:52:13 -07:00
Broque Thomas
f647df1ebe fix 2025-07-10 09:03:54 -07:00
Broque Thomas
96a0bc4b43 fix 2025-07-10 08:10:40 -07:00
Broque Thomas
fc9b5f375a basic downloads 2025-07-09 22:06:24 -07:00
Broque Thomas
11a1343217 fix 2025-07-09 21:44:21 -07:00
Broque Thomas
8dd433fc3b fix 2025-07-09 13:55:18 -07:00
Broque Thomas
7d43bda3e5 Initial commit 2025-07-09 12:07:41 -07:00