Commit Graph
100 Commits
Author SHA1 Message Date
Robert Honz 9f1b7a61b6 🌟 Version bumped to v0.26.7 2025-09-25 20:45:22 +02:00
Robert Honz dfc8968b1f fix(path): 🐛 correct filename sanitization logic
* Adjusted the logic in `path_file_sanitize` to ensure the sanitized filename correctly appends the file suffix after the placeholder.
* This change prevents potential filename issues when handling file paths.
2025-09-25 20:25:00 +02:00
Robert Honz fed4cc1331 🌟 Version bumped to v0.26.6 2025-09-07 19:45:54 +02:00
Robert Honz 8f8e8e0a78 fix(download): 🐛 adjust cover image handling to prevent metadata size issues
* Prevent writing `CoverDimensions.PxORIGIN` to metadata to avoid exceeding max file size (>16Mb).
* Ensure correct cover image is used based on `cover_dimension` settings.
2025-09-07 19:37:39 +02:00
Robert Honz 1a3baac75a fix(README): 📝 update Python version requirement to 3.12 only
* Clarified the Python version requirement for installation.
* Removed mention of Python 3.13 to avoid confusion.
2025-09-07 18:52:06 +02:00
Robert Honz 541527be32 feat(tidal): ✨ add url_ending_clean function and refactor URL handling. Fixes #523
* Introduced `url_ending_clean` to sanitize URLs by removing trailing "/u" or "?u".
* Updated `_process_url` and GUI search logic to utilize cleaned URLs for better validation and processing.
2025-09-07 18:27:30 +02:00
Robert Honz 47b1f2a669 fix: 📝 update placeholder text for bug report
* Clarified the placeholder instructions for the "What happened?" field in the bug report template.
* Ensured consistency in language and improved readability for users submitting bug reports.
2025-09-07 17:13:08 +02:00
Robert Honz 8939796164 🌟 Version bumped to v0.26.5 2025-08-13 08:20:21 +02:00
Robert Honz 8dd75897e3 refactor(constants): streamline enums and enhance type annotations
This commit refactors the codebase to improve readability and maintainability by updating enums and type annotations:

- ✨ **Replaced `StrEnum` attributes**: Removed explicit type declarations for enum values to simplify the code.
- 🛠️ **Introduced `AudioExtensionsValid` enum**: Added a new enum for valid audio file extensions.
- 🔄 **Enhanced type annotations**: Updated `FAVORITES` dictionary to include specific type hints for clarity.
- 🧹 **Updated references**: Replaced outdated `AudioExtensions` usage with the new `AudioExtensionsValid`.

These changes improve code clarity, enforce stricter typing, and enhance extensibility.
2025-08-13 08:17:11 +02:00
Robert Honz f16165558c feat: add metadata_write_url setting for conditional URL metadata writing
Introduces a new configuration option, `metadata_write_url`, to control whether the media file URL is included in metadata. Updates logic to respect this setting.

- ✨ **Feature**: Adds `metadata_write_url` to enable/disable URL writing in metadata.
- 🔧 **Logic Update**: Adjusts URL handling to check the new setting before including it.
- 📝 **Documentation**: Updates help descriptions to explain the new option.

This change improves flexibility in metadata customization.
2025-08-12 19:36:41 +02:00
Robert Honz d6b1cae1ff 🌟 Version bumped to v0.26.4 2025-08-12 18:30:55 +02:00
Robert Honz d481a26ccb feat: add support for original image dimension in album covers
Adds functionality to handle original image dimensions (`origin`) for album cover downloads.

- ✨ Added `PxORIGIN` option to cover dimension constants.
- 🔄 Updated cover image URL logic to support original dimensions.
- 🛠️ Improved cover data handling for more flexible metadata embedding.

This enhances customization and fidelity in cover image management.
2025-08-12 18:22:59 +02:00
Robert Honz 8b8cc9c2fe 🌟 Version bumped to v0.26.3 2025-08-12 18:03:57 +02:00
Robert Honz ef507b56ed feat(gui): enhance app icons with multi-resolution support
Improves the application's icon handling by introducing multi-resolution
support, replacing a single PNG file with multiple resolution-specific icons.

- ✨ **Added** multiple resolution icons (16x16, 32x32, 48x48, 64x64, 256x256, 512x512).
- 🔄 **Updated** GUI setup to use multi-resolution icons for better scalability.
- 🗑️ **Removed** the old single-resolution `icon.png`.

This update ensures better compatibility and visual quality across
different platforms and screen resolutions.
2025-08-12 16:02:41 +02:00
Robert Honz afdb523cb5 feat: add support for formatting album release dates
This update introduces support for handling date-related format strings, improving the flexibility of media metadata formatting.

- ✨ **Feature**: Adds `_format_dates` function to handle date-related strings like `album_date`.
- 🛠️ **Enhancement**: Refactors `_format_durations` by isolating date-related logic into a new function.
- 📅 **Improvement**: Supports formatting `album_year` and `album_date` with proper checks for `Album` and `Track` types.

This improvement enhances media metadata formatting capabilities for more detailed date information.
2025-08-12 10:52:53 +02:00
Robert Honz a0a6a8d15b refactor(helper): improve ID format handling logic
Refactors the ID formatting logic to extend support for `video_id` and improve clarity.

- ✨ **Feature:** Adds support for `video_id` in ID formatting logic.
- ♻️ **Refactor:** Updates conditional checks for better readability.
- 🔧 **Metadata:** Updates `poetry.lock` content hash.

These changes enhance functionality and maintainability by accommodating additional media types.
2025-08-12 10:18:20 +02:00
Robert Honz bf2f5055a0 feat(metadata): add UPC support for metadata tagging
This update introduces support for handling UPCs (Universal Product Codes) in metadata processing. It ensures that UPC information is extracted, stored, and written to the appropriate metadata tags for various formats.

- ✨ **Feature**: Adds UPC field to metadata handling.
- 🛠️ **Enhancement**: Updates metadata initialization to include UPC.
- 🗂️ **Tagging**: Implements UPC writing for supported file formats.
- ✅ **Compatibility**: Ensures proper handling when UPC is absent.

This improvement enhances metadata completeness and compatibility with systems requiring UPC data.
2025-08-12 09:55:34 +02:00
Robert Honz 5375850f98 Update dependencies in pyproject.toml
- Bump rich from 14.0.0 to 14.1.0
- Update tidalapi from 0.8.3 to 0.8.5
- Upgrade dev dependencies:
  - deptry from 0.23.0 to 0.23.1
  - mypy from 1.16.1 to 1.17.1
  - pre-commit from 4.2.0 to 4.3.0
  - tox from 4.27.0 to 4.28.4
  - bandit from 1.8.5 to 1.8.6
  - pylint from 3.3.7 to 3.3.8
  - pillow from 11.2.1 to 11.3.0
2025-08-11 13:06:16 +02:00
Robert Honz d6bb9d51d2 chore(workflow): 🚀 Update build matrix for GUI packaging across multiple OS
* Added support for building GUI on macOS ARM64, Ubuntu, and Windows platforms.
* Restored previously commented-out build commands for better cross-platform compatibility.
2025-07-08 09:58:30 +02:00
Robert Honz 7d60950613 fix(makefile): 🐛 Remove gui-macos-dmg-intel target and related commands
* Eliminated the `gui-macos-dmg-intel` target from the Makefile.
* This target was a workaround for Intel Macs and is no longer necessary.
* Streamlined the `gui-macos-dmg` process for better clarity and maintenance.
2025-07-08 09:57:33 +02:00
Robert Honz b3c53ab396 fix(makefile): 🐛 Update gui-macos-dmg command to use sudo for create-dmg
* Changed the command to run `create-dmg` with `sudo` to ensure proper permissions on macOS.
* Added a sleep delay of 60 seconds to allow for any necessary processing time.
2025-07-08 09:38:06 +02:00
Robert Honz f0bbbc0108 fix(gui): 🐛 Correct make gui-macos-dmg command and add delay
* Updated the command to `make gui-macos-dmg` for proper packaging.
* Introduced a 60-second delay before creating the DMG to ensure all processes are completed.
2025-07-04 00:02:41 +02:00
Robert Honz ae17fab057 chore(workflow): 🚀 Update GUI packaging process for macOS
* Added a sleep command before creating the `.dmg` file to ensure proper execution.
* Modified the `hdiutil create` command to include `-debug` for troubleshooting.
2025-07-03 23:45:21 +02:00
Robert Honz 0e7dda5622 Bump pyside6 version from 6.8.1 to 6.9.0 in pyproject.toml 2025-07-03 15:41:55 +02:00
Robert Honz 6f499057aa chore(workflow): 🚀 Add release and test build GitHub Actions workflow
- Introduced a new workflow for managing releases and test builds.
- Configured jobs for publishing, deploying documentation, and building GUI assets for multiple platforms.
- Set up environment variables and matrix strategy for cross-platform builds.
2025-07-03 11:32:28 +02:00
Robert Honz fa1ea1fc87 refactor(tox): 🔧 Remove Python 3.13 from testing matrix
* Updated the Python version matrix in the tox job to only include 3.12.
* This change simplifies the testing process and focuses on the currently supported version.
2025-07-03 11:24:50 +02:00
Robert Honz 650e799eb6 refactor(cli): restructure callback and favorites commands
Refactors the CLI structure to improve readability and maintainability:

- ♻️ Replaces `dl_fav_group` with `app_dl_fav` for better naming consistency.
- 🛠️ Restructures the `callback_app` function, removing redundancy.
- 🚀 Adds a URL detection mechanism to streamline `dl <URL>` command simulation.
- ✨ Enhances imports by adding `urlparse`.

These updates aim to simplify the codebase and improve user experience.
2025-07-03 11:09:57 +02:00
Robert Honz 4662d18fdf refactor(decryption): ✨ Improve docstring for decrypt_security_token function
- Enhanced clarity of the function's purpose and usage.
- Added detailed descriptions for arguments and return values.
2025-07-03 09:45:18 +02:00
Robert Honz 5b110638e0 refactor(cli): 🔧 Update context handling in download functions
* Refactored `_handle_track_or_video` and `_handle_album_playlist_mix_artist` to use `typer.Context` instead of `Settings` directly.
* Improved clarity by centralizing settings retrieval through context.
* Adjusted `_process_url` and `_download` functions to align with the new context-based approach.
2025-07-03 08:57:46 +02:00
Robert Honz a96d44170b refactor(download): 🔧 Improve media validation and preparation logic
* Enhanced `_validate_and_prepare_media` method to support additional media types: `Album`, `Playlist`, `UserPlaylist`, and `Mix`.
* Updated media validation checks to ensure proper handling of unavailable media.
* Refactored `_validate_media_instance` to streamline media instance creation and validation.
* Removed redundant `_validate_and_prepare_media_collection` method for cleaner code.
2025-07-03 08:53:44 +02:00
Robert Honz bfc0c92d69 fix: downgrade pyside6 version from 6.8.3 to 6.8.1 for compatibility 2025-07-03 08:52:04 +02:00
Robert Honz 3085cd67a1 refactor(download): ✨ Enhance media collection handling and download execution
* Improved validation and preparation of media collections for downloads.
* Refactored download context setup and execution logic for better clarity and maintainability.
* Added progress tracking for download tasks and improved handling of download futures.
2025-07-02 15:11:19 +02:00
Robert Honz 33f5fcbda8 refactor(download): 🔧 Improve media validation and download process
* Reordered parameters in `item` method for clarity.
* Added `_validate_media_instance` method to streamline media validation.
* Enhanced `_prepare_file_paths_and_skip_logic` for better file handling.
* Introduced `_perform_actual_download` to encapsulate download logic.
* Improved error handling and logging throughout the download process.
2025-07-02 14:52:31 +02:00
Robert Honz 37f9250cdf refactor(download): ✨ Refactor media download logic for clarity and efficiency
* Renamed `_download` to `_get_media_urls` for better clarity on its purpose.
* Simplified URL extraction logic for `Track` and `Video` media types.
* Improved progress setup and error handling in the download process.
* Enhanced `_download_segments` and `_download_postprocess` methods for better readability and maintainability.
2025-07-02 10:29:54 +02:00
Robert Honz 6d7f4f1625 refactor(guidelines): ✨ Improve clarity in coding standards
* Enhanced wording for better understanding of blank line usage.
* Clarified instructions on updating docstrings during refactoring.
* Specified the use of line comments for complex logic explanations.
2025-07-02 09:56:57 +02:00
Robert Honz 35d4ff9229 refactor(download): ✨ Enhance docstrings for RequestsClient and Download classes
* Improved documentation for methods in the `RequestsClient` and `Download` classes.
* Added detailed descriptions, parameters, and return types to enhance code readability and maintainability.
2025-07-02 08:55:56 +02:00
Robert Honz 6d62a3b5c0 refactor(guidelines): ✨ Update coding standards for type annotations
* Added a guideline to use modern built-in generics from the `typing` module.
* This change aligns with PEP 484 and promotes better coding practices.
2025-07-02 08:49:32 +02:00
Robert Honz fd16a620f2 refactor(gui): ✨ Enhance type annotations and improve method signatures
* Updated type hints for various methods in  and  classes.
* Changed list types from  to  for better clarity and consistency.
* Improved function signatures to include return types for better type safety.
2025-07-02 08:47:59 +02:00
Robert Honz 99b4347b9a refactor(gui): ✨ Improve filter handling in MainWindow
* Refactored the filter extraction logic to directly use `header.filter_text(i)` for better clarity.
* Updated the filters list to store tuples of index and text, enhancing the data structure used.
* Ensured that the `proxy_model.filters` is set directly, simplifying the code.
2025-07-01 15:58:51 +02:00
Robert Honz 76f6010a12 refactor(gui): ✨ Enhance type annotations and improve method signatures
* Updated type hints for several methods in `MainWindow` class to improve code clarity and type safety.
* Changed return types to `None` where applicable.
* Refined parameter types for better type checking and consistency.
2025-07-01 15:52:30 +02:00
Robert Honz 395771a939 refactor(guidelines): ✨ Update coding standards for type annotations and add PEP references
* Clarified type annotations usage for function parameters, return types, and variables.
* Added guidelines for using blank lines, coroutines, and string interpolation as per PEP standards.
2025-07-01 14:36:37 +02:00
Robert Honz d8a6c26d65 refactor(gui): ✨ Enhance documentation for MainWindow methods
* Added detailed docstrings for methods in the `MainWindow` class.
* Improved clarity on parameters and return types for better understanding.
* Aims to facilitate future development and maintenance.
2025-07-01 14:30:10 +02:00
Robert Honz aa532f62fc refactor(gui): ✨ Improve search_result_to_model method and extract helper functions
* Refactored `search_result_to_model` to use type hints with `list` instead of `[*SearchTypes]`.
* Added detailed docstring for better understanding of parameters and return types.
* Extracted logic into helper methods for better readability and maintainability.
* Improved handling of item availability and explicit content representation.
2025-07-01 13:35:17 +02:00
Robert Honz 6b99c4ba62 fix(cli): 🐛 Correct type for item_id in _handle_album_playlist_mix_artist
* Changed `item_id` type from `int` to `str` for better consistency.
* Updated related list type from `list[int]` to `list[str]`.
* Added type checks for `media_type`, `item_id`, and `file_template` in `_process_url` for improved error handling.
2025-07-01 13:19:28 +02:00
Robert Honz 38a97357dd refactor(cli): ✨ Improve function documentation and remove unused imports
* Enhanced docstrings for clarity and consistency across functions.
* Removed unused imports to clean up the codebase.
* Improved the structure of the `_download` function for better readability.
2025-07-01 11:42:07 +02:00
Robert Honz 4dde8c819a chore: 🔧 Update coding standards and documentation guidelines
* Refined coding guidelines for clarity and structure.
* Added sections for type annotations and docstring requirements.
* Ensured consistency in documentation practices across the project.
2025-07-01 11:33:04 +02:00
Robert Honz 29ffd5df4b chore: 🔧 Update link format in README
- Changed the link to `cookiecutter-poetry` for consistency.
2025-07-01 11:09:27 +02:00
Robert Honz a91a368994 feat: ✨ Enhance media formatting functions
* Added detailed docstrings for `format_str_media` and related helper functions.
* Refactored media formatting logic to utilize dedicated functions for better readability and maintainability.
* Improved error handling in media formatting.
* Updated `file_unique_suffix` function to correct the spelling of `separator`.
2025-07-01 11:05:33 +02:00
Robert Honz 1f7d8a15e2 chore: 🔧 Update docstring guidelines for typing usage
- Added clarification to the docstring guidelines to include the use of `typing` in docstrings.
2025-07-01 11:04:58 +02:00
Robert Honz de47935f04 chore: 🔧 Update coding standards for Python
- Added a guideline to use the newest coding style supported by the used Python version.
2025-07-01 10:46:41 +02:00
Robert Honz ca927984d3 chore: 🔧 Update docstring guidelines in coding standards
* Changed "Write docstrings for all public modules, classes, functions, and methods" to "Always write doc strings for all modules, classes, functions, and methods."
* Added missing punctuation for consistency in error handling guidelines.
2025-07-01 10:34:20 +02:00
Robert Honz 6395a00ed6 chore: 🔧 Update Python version constraints in configuration files
* Adjusted `requires-python` in `pyproject.toml` to `>=3.12,<3.13`
* Modified `envlist` in `tox.ini` to remove Python 3.13
* Updated `python-versions` in `poetry.lock` to reflect the new constraints
* coloredlogs does not support py3.13, yet, see https://github.com/xolox/python-coloredlogs/issues/119
2025-07-01 10:17:56 +02:00
Robert Honz eda5ab92c0 feat: ✨ Add project coding standards for Python
* Introduced guidelines for naming conventions and error handling.
* Specified the use of `snake_case` for variables, `CamelCase` for classes, and PEP 8 compliance.
* Emphasized the importance of type hints and docstrings in code documentation.
2025-07-01 10:08:46 +02:00
Robert Honz f546b43101 ✨ Add docstrings for path-related functions and improve path sanitization logic. 2025-07-01 09:56:17 +02:00
Robert Honz 29ea5c5182 🌟 Version bumped to v0.26.2 2025-07-01 09:11:09 +02:00
Robert Honz 5a1e3d58a1 ✨ Downgrading pyside6 to 6.8.3, since 6.9.1 is not available on all platforms, yet. 2025-07-01 08:25:56 +02:00
Robert Honz 854aaf2543 🌟 Version bumped to v0.26.1 2025-07-01 08:05:33 +02:00
Robert Honz d3164f48de ✨ Add Python 3.13 support and update dependencies
Extends Python version support to include 3.13 in CI workflows,
tox environments, and documentation. Updates dependencies to
ensure compatibility with the new Python version and resolves
legacy workarounds for macOS GitHub Actions runners.

Upgrades include:
- `pyside6` to version 6.9.1
- `click` to version 8.2.1
- Other relevant dependency updates for compatibility.

Re-enables `pyupgrade` pre-commit hook targeting Python 3.12+.

Fixed binary creation for Intel macOS.
2025-07-01 08:04:21 +02:00
Robert Honz 181daf53a4 🛠️ Windows drives won't get sanitized anymore. Fixes #474 2025-07-01 07:34:07 +02:00
Robert Honz 6ddcb12bdf 🌟 Version bumped to v0.26.0 2025-06-30 17:42:28 +02:00
Robert Honz 70e29771b9 🛠️ Directory length limit is checked and adapted correctly now. Fixes #447 & #436 2025-06-30 16:33:32 +02:00
Robert Honz 0eaeed533f 👷 Added Apple Script timeout workaround for macos-13 Intel runner. 2025-06-30 10:45:52 +02:00
Robert Honz 70e8b5fb13 ✨ Either date added or date released will be shown, depending if a list is selected or a search was performed. Fixes #424 2025-06-30 10:44:51 +02:00
Robert Honz 98f5230ccd 🛠️ Favorites won't getting duplicated after user hits the list reload button. Fixes #409 2025-06-30 08:39:33 +02:00
Robert Honz 09b611361c 🌟 Version bumped to v0.25.11 2025-06-29 21:55:20 +02:00
Robert Honz bbc65c8577 🛠️ Cover won't be removed, if clicked on the same item multiple times. 2025-06-29 21:53:50 +02:00
Robert Honz 5bdd48e471 ✨ Spinner will be shown, if search results are expanded. 2025-06-29 21:50:12 +02:00
Robert Honz db5c5eac97 ✨ will only return the first artists. will return all album artists. Fixes #439 2025-06-29 21:42:39 +02:00
Robert Honz e8ca69fefa 🛠️ GUI dos not hang if searched media is not available anymore. 2025-06-29 21:29:06 +02:00
Robert Honz a676e16367 🛠️ App does not crash anymore on not available content. Fixes #422 2025-06-29 21:23:27 +02:00
Robert Honz 039546ffe8 👷 Lists and cover will be loaded in background. Gui won't hang anymore. Fixes #423 2025-06-29 20:33:22 +02:00
Robert Honz f0412c6f96 👷 Re-arranged imports. 2025-06-29 14:24:15 +02:00
Robert Honz d53077f3f2 👷 Nuitka update to 2.7.11 2025-06-29 14:24:15 +02:00
Robert Honz 20ba5c2057 👷 APFS will be sued for DMG creation to avoid busy resource error in github action runner. https://github.com/actions/runner-images/issues/7522#issuecomment-2299918092 2025-06-29 14:24:15 +02:00
Robert Honz 353fedd682 🛠️ Fixed link to orbittwz profile. 2025-06-29 13:08:42 +02:00
Robert Honz 85ecdf866e 🛠️ Fixed wrong repo url after pyproject.toml update. Credits to @orbittwz in README. 2025-06-29 12:36:08 +02:00
Robert Honz 4a26aea87f ✨ Added Windows ARM action built. 2025-06-27 15:16:25 +02:00
Robert Honz a1f344644c 🌟 Version bumped to v0.25.10 2025-06-27 13:28:43 +02:00
Robert Honz 6bef8242f8 👷 Deprecated GitHub runner update. 2025-06-27 13:28:02 +02:00
Robert Honz f2ea4fef59 🌟 Version bumped to v0.25.9 2025-06-27 12:20:31 +02:00
Robert Honz e277cdced2 👷 Poetry lock update. 2025-06-27 12:19:51 +02:00
Robert Honz 6e1b00fdec 🌟 Version bumped to v0.25.8 2025-06-27 12:17:46 +02:00
Robert Honz a2e8be4114 ✨ Dependency update. pyproject.toml fixes. isort-seed removal. 2025-06-27 09:42:35 +02:00
Robert Honz a266e37f45 🌟 Version bumped to v0.25.7 2025-06-26 20:35:59 +02:00
Robert Honz 6f2e73baaa ✨ Empty metadata tags will be removed before written to file. Url tag for mp4 corrected. 2025-06-06 08:29:26 +02:00
Robert Honz d9ab28d884 🌟 Version bumped to v0.25.6 2025-04-02 07:03:53 +02:00
Robert Honz 819655d8b7 ✨ Implemented playlist track position naming ({list_pos}) for downloads. Fixes #165 2025-04-02 07:00:28 +02:00
Robert Honz d7a9227c06 👷 Dependency update. 2025-04-02 05:56:36 +02:00
Robert Honz 5b073b5e43 🌟 Version bumped to v0.25.5 2025-03-27 19:07:59 +01:00
Robert Honz 6ac116beed 🛠️ Fixed and simplified path_file_sanitize method. 2025-03-27 19:01:51 +01:00
Robert Honz f4b40b133e ✨ Nuitka downgraded to overcome pathelf --add-rpath issue. 2025-03-27 18:59:20 +01:00
Robert Honz aa71d9993f ✨ Readme and Makefile have been extended regarding setup instructions for dev environment. 2025-03-27 18:57:34 +01:00
Robert Honz 309ded73e4 🛠️ Fix: Only re-create media item if it is a track. Fixes #386 2025-03-25 21:22:35 +01:00
Robert Honz 0686bbf376 👷 Install patchelf explicitly. 2025-03-25 21:14:24 +01:00
Robert Honz 03cf970f88 🌟 Version bumped to v0.25.4 2025-03-24 12:11:39 +01:00
Robert Honz b50e3bd14d 👷 Code style. 2025-03-24 09:01:49 +01:00
Robert Honz efc2549ab5 👷 Check if albums and videos are available or not due to regional restrictions. Fixes #277 2025-03-24 08:57:47 +01:00
Robert Honz b3ed18acaf 🛠️ Fixed: Skip file is not ignored anymore. Filenames will not be uniquified by default. 2025-03-24 08:22:12 +01:00
Robert Honz f936a8794b 🛠️ Fixed: Wrong path build after file sanitization on Windows. Fixes #389 & #358 2025-03-24 07:34:13 +01:00
Robert Honz b25b58a03b 👷 Refactored path file split method. 2025-03-24 07:12:16 +01:00