Commit Graph
771 Commits
Author SHA1 Message Date
Robert Honz 017aa17155 feat(media): ✨ add support for retrieving album and track artist IDs
* Implemented logic to return `album_artist_id` for `Album` instances.
* Added functionality to retrieve `track_artist_id` for `Track` instances.
2025-11-13 08:52:58 +01:00
Robert Honz b9ede6603e 🌟 Version bumped to v0.31.4 2025-11-13 08:35:39 +01:00
Robert Honz 5cdf482ef9 refactor(downloader): 🔧 reorganize TrackStreamInfo class and imports
* Moved `TrackStreamInfo` class definition from `download.py` to `downloader.py`.
* Removed redundant `dataclass` import from `download.py`.
* Updated import statements to maintain clarity and organization.
2025-11-13 08:33:59 +01:00
exislowandGitHub 0939bc0742 Merge pull request #626 from Rikrdoga:Dolby_Atmos
Fix(Atmos): Resolve Race Condition and Optimize Session Switching for Atmos Downloads
2025-11-13 08:32:26 +01:00
Rikrdoga 4f0026fada Create TrackStreamInfo dataclass & Add proper docstrings 2025-11-12 15:18:35 -06:00
exislowandGitHub 048cb13ad3 Merge pull request #646 from exislow:download-context-menu
Download-context-menu
2025-11-12 15:34:27 +01:00
Robert Honz d06dfa90a8 feat(gui): ✨ add functionality to download albums from favorites
- Introduced a new context menu option to download all albums from selected favorites.
- Implemented methods to handle downloading albums from favorite albums, artists, and tracks.
- Enhanced logging for better tracking of the download process and errors.
2025-11-12 15:31:44 +01:00
Robert Honz 03266db087 feat(gui): ✨ add favorites download functionality
* Implemented `on_download_favorites` method to allow users to download all items from a favorites category.
* Added context menu option for downloading all items from favorites.
* Enhanced error handling and logging for better user feedback.
2025-11-12 15:27:05 +01:00
Robert Honz 3f936038ae feat(gui): ✨ add folder support for media downloads
* Implemented context menu options for downloading playlists and albums from folders.
* Added methods to fetch playlists and tracks from a folder.
* Enhanced user experience by allowing bulk downloads from folder structures.
2025-11-12 15:20:11 +01:00
exislowandGitHub be59cf1684 Merge pull request #644 from exislow:folders
feat(gui): ✨ enhance user media handling with folder support
2025-11-12 15:06:18 +01:00
Robert Honz 9baea9b82c feat(gui): ✨ enhance user media handling with folder support
* Updated `user_media_lists` to return a dictionary containing both `playlists` and `mixes`, including `Folder` objects.
* Modified `on_populate_tree_lists` to handle `Folder` items and display their contents.
* Introduced new methods for loading and displaying folder contents in the user interface.
2025-11-12 15:05:20 +01:00
Robert Honz 554a42860e chore: 📝 add comprehensive coding standards and guidelines
* Introduced a new `AGENTS.md` file containing detailed coding standards for the project.
* Covers topics such as Python version support, naming conventions, type annotations, error handling, and best practices.
* Aims to improve code quality, maintainability, and team consistency.
2025-11-12 14:18:41 +01:00
exislowandGitHub ab10926656 Merge pull request #643 from exislow/pagination
chore: 🔧 update function names in FAVORITES for consistency
2025-11-12 14:09:57 +01:00
Robert Honz f488316a42 chore: 🔧 update function names in FAVORITES for consistency
* Changed `function_name` for `fav_tracks`, `fav_artists`, and `fav_albums` to use paginated versions.
* Ensures uniformity in function naming across favorites.
2025-11-12 14:09:22 +01:00
exislowandGitHub df2b5e1ef9 Merge pull request #625 from talios/feature/klrrwxuwvrty
Add format place holder for album_type
2025-11-12 09:37:11 +01:00
Mark Derricutt 5d573c57c9 Add format place holder for album_type
This commit exposes the album type as a configuration placeholder.

Fixes #595

Change-Id: Ife8832534861fc01da5d68c37be6c7476a6a6964
2025-11-05 09:21:00 +13:00
Rikrdoga af58b0a83d Resolve Race Condition and Optimize Session Switching for Atmos Downloads 2025-11-04 12:36:27 -06:00
exislowandGitHub 6e665bcd45 Merge pull request #613 from jbrower2/patch-1
Fix album_artist substitution
2025-10-26 15:37:35 +01:00
Jeff BrowerandGitHub be43c3f616 Fix album_artist substitution
For albums that are listed with a non-"main" artist first (ex: 37691520), the album artist replacement was returning an empty string. This isn't a problem with the default settings, but if you format albums into `{album_artist}/...`, the path becomes `/...` in this case, and is interpreted as an absolute path instead of a relative one, causing the download to fail.

This changes the logic so that if the `first_only` flag is passed, it will return after the first artist is actually added to the list, no longer returning an empty string.
2025-10-26 10:33:07 -04:00
Robert Honz 3bd41f2139 chore: ✨ update header in README for improved branding
* Changed the header format to include an icon for better visual appeal.
* Ensures consistency with the overall project branding.
2025-10-26 09:59:51 +01:00
Robert Honz c1af2a8adf 🌟 Version bumped to v0.31.3 2025-10-26 09:54:11 +01:00
Robert Honz 7b72146092 chore: 🔧 update Python version requirements in README
* Updated the requirements section to include support for Python 3.13.
* Clarified compatibility for users regarding Python versions.
2025-10-26 09:52:42 +01:00
Robert Honz 2d60f54b39 docs: 📚 update README for Dolby Atmos support and build instructions
* Added information on downloading Dolby Atmos files.
* Updated build instructions for macOS and added options for Windows and Linux.
* Corrected the build status badge link in the README.
2025-10-22 23:05:04 +02:00
Robert Honz 777a5e394d chore(gui): 🎨 update data file inclusion pattern for icons
* Adjusted the pattern for including icon files to ensure proper matching.
* This change enhances the flexibility of file inclusion during the build process.
2025-10-22 22:50:25 +02:00
Robert Honz 23d1b61e1e chore(ui): 🎨 update application icons for improved visual consistency
* Replaced multiple icon files in the UI.
* Ensured all icon sizes are updated to maintain a cohesive look across the application.
2025-10-22 22:42:29 +02:00
Robert Honz 8f0c784187 refactor(gui): ✨ update album download options and improve session validation
* Added a new action to download all albums in a playlist.
* Removed the deprecated `validate_session` method and replaced it with a direct call to `self.tidal.session.check_login()`.
* Adjusted the UI layout in `dialog_settings` to accommodate new options and improved sizing.
2025-10-22 21:52:20 +02:00
exislowandGitHub b485292807 Merge pull request #596 from Winman486/fix/rate-limiting-playlist-downloads
Fix/rate limiting playlist downloads
2025-10-22 21:38:30 +02:00
exislowandGitHub 0cf3516fb0 Merge pull request #573 from Rikrdoga/Dolby_Atmos
Implement Dolby Atmos Support & API Key Selection
2025-10-22 21:34:02 +02:00
Winman486 e9070eef66 refactor: Make rate limiting configurable and move session validation to Tidal class
- Add api_rate_limit_batch_size and api_rate_limit_delay_sec to Settings (cfg.py)
- Move validate_session() and is_authentication_error() to Tidal class (config.py)
- Update _load_albums_with_rate_limiting() to use config values instead of hardcoded 20/3
- Update _handle_album_load_error() to use Tidal.is_authentication_error()
- Remove _validate_session() from gui.py (now uses Tidal.validate_session())
- Addresses maintainer feedback: configurable tweaking variables and proper separation of concerns
2025-10-21 15:23:18 -05:00
Rikrdoga e266149684 Move credentials to constants, improve docs (tidal_obj), and clean up Atmos legacy code 2025-10-21 11:58:34 -06:00
Robert Honz a71bc18ca6 fix(pyproject): 🐛 add support for Python 3.13 in classifiers
* Updated the `classifiers` section to include support for Python 3.13.
* Ensures compatibility with the latest Python version.
2025-10-21 09:15:19 +02:00
exislowandGitHub 74c38e5f4a Merge pull request #603 from exislow:py313
Py313
2025-10-21 08:10:15 +02:00
Robert Honz d3ec0398b4 fix(gui): 🐛 integrate ansi2html for improved log message formatting
* Added `Ansi2HTMLConverter` to convert ANSI color codes in log messages to HTML.
* Updated the `MainWindow` class to utilize the new converter for displaying logs.
* Removed dependency on `coloredlogs.converter` for log message display.
2025-10-21 07:58:00 +02:00
Rikrdoga 234ed80192 minor fix: Respect audio quality selected 2025-10-20 21:34:50 -06:00
Rikrdoga 70cfc1b6eb Apply formatter and fix TRY003 2025-10-20 20:46:36 -06:00
Rikrdoga cb32c2fa8b Refactor Dolby Atmos Implementation 2025-10-20 20:23:14 -06:00
Winman486 6c1704e3c4 fix: Remove duplicate menu entry and reduce code complexity
- Removed duplicate 'Download Full Album' context menu entry
- Refactored on_download_all_albums_from_playlist to reduce C901 complexity
- Extracted helper methods: _extract_album_ids_from_tracks, _load_albums_with_rate_limiting, _validate_session, _handle_album_load_error, _queue_loaded_albums
- All make check errors and warnings now resolved
2025-10-20 18:58:46 -05:00
Winman486 3c835c2d19 Merge upstream/master and resolve conflicts
- Resolved conflict in dialog_settings.py (kept both cb_use_primary_album_artist and cb_mark_explicit checkboxes)
- Fixed code quality issues found by make check:
  * Removed duplicate on_download_album_from_track function (F811)
  * Updated isinstance calls to use X | Y syntax instead of (X, Y) (UP038)
  * Fixed unused loop variable album_stub (B007)
  * Applied automatic formatting fixes (black, prettier, trailing whitespace)
- Only remaining issue is C901 complexity warning in on_download_all_albums_from_playlist (expected per maintainer feedback)
2025-10-20 16:12:46 -05:00
Rikrdoga 2c2cc0283a Refactor Dolby Atmos feature to be internal and seamless 2025-10-20 10:47:43 -06:00
Rikrdoga ec4502ad00 Disable Load from gist and fix JSON in api.py (remove // Invalid) 2025-10-20 10:33:13 -06:00
Rikrdoga 302b552ed7 Add support for Dolby Atmos 2025-10-20 10:33:01 -06:00
Robert Honz 0afd65c89b 🌟 Version bumped to v0.30.0 2025-10-20 10:41:08 +02:00
Robert Honz 5c09b6594c fix(tox): 🐛 update Python version support in configuration
* Added support for Python 3.13 in the `tox` configuration.
* Updated `envlist` to include `py313` for testing.
2025-10-20 10:09:30 +02:00
Robert Honz aaca12cacc fix(gui): 🐛 improve album download action and update docstring
* Refactored the menu action for downloading the full album from a track.
* Enhanced the docstring for `on_download_album_from_track` to clarify its functionality and error handling.
2025-10-20 09:37:01 +02:00
exislowandGitHub 51556f1d80 Merge pull request #590 from Rikrdoga/feature/download-album-from-track
feat: Add 'Download Full Album' from track context menu
2025-10-20 09:26:22 +02:00
Robert Honz 8c361249ed fix(cfg): 🐛 update mark_explicit default value and improve help text
* Set default value of `mark_explicit` to `False`.
* Update help text to clarify that marking explicit tracks applies only to metadata.
2025-10-20 08:20:20 +02:00
exislowandGitHub 307ea1bd6d Merge pull request #600 from truubo/597-optional-explicit-symbol-in-track-title
feat(metadata): Toggle explicit symbol in track titles
2025-10-20 08:17:52 +02:00
Robert Honz ffbd7849a1 fix(download): 🐛 handle missing st_birthtime attribute in track sorting
* Updated the sorting method for track paths to check for the presence of `st_birthtime`.
* If `st_birthtime` is not available, fallback to using `st_ctime` for sorting.
2025-10-20 08:12:34 +02:00
exislowandGitHub a4c36ff6f5 Merge pull request #601 from exislow:sort-by-birthtime
fix(download): 🐛 update sorting method for track paths
2025-10-20 08:06:56 +02:00
Robert Honz 2b932e84b4 fix(download): 🐛 update sorting method for track paths
* Changed sorting method from `os.path.getctime` to `x.stat().st_birthtime` for better accuracy in track creation time.
* This improves the reliability of track order when not dealing with albums.
2025-10-20 08:06:25 +02:00