summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* fix: use lossless-capable TIDAL client for normal streamingHEADmastercashmere2026-07-032-5/+17
| | | | | | | | | | | | The default tidalapi OAuth client no longer has lossless/hi-res streaming entitlements, causing all downloads to fall back to AAC 320 kbps even when HI_RES_LOSSLESS is requested. - Replace broken Atmos/Fire TV client credentials with the working Android Atmos client (km8T1xS355y7dd3H) which supports lossless stereo as well as Dolby Atmos. - Use that client for the main session, not just Atmos tracks. - Refresh existing tokens on login so they are bound to the new client.
* Merge branch 'FunWarry:master' into masterRadexito2026-01-242-0/+97
|\
| * refactor: Refactor mpegdash patch logic and update import orderingWarry2026-01-232-38/+41
| |
| * Merge pull request #17 from musicalmusicalmusical/masterMathéo Gevraise2026-01-232-0/+94
| |\ | | | | | | fix: Handle non-integer AdaptationSet id/group in TIDAL manifests
| | * Add patchmusicalmusicalmusical2026-01-161-0/+88
| | |
| | * Update __init__.pymusicalmusicalmusical2026-01-161-0/+6
| |/
| * Merge pull request #12 from Radexito/fix/path_media_crashMathéo Gevraise2026-01-151-2/+3
| |\ | | | | | | [Fix] crash due to missing path_media.
* | | Bump version from 0.32.0 to 0.32.1Radexito2026-01-141-1/+1
| | |
* | | Merge pull request #1 from Radexito/fix/path_media_crashRadexito2026-01-141-2/+3
|\ \ \ | |/ / |/| / | |/ [Fix] crash due to missing path_media.
| * [Fix] crash due to missing path_media.Radexito2026-01-141-2/+3
|/
* chore: Update project metadata and repository links for new forkWarry2025-12-301-4/+4
| | | | | | | | - Renamed project to `tidal-dl-ng-for-dj` in `pyproject.toml`. - Updated author details to `Warry <warry@exemple.com>`. - Bumped version from `0.31.4` to `0.32.0`. - Changed repository URL to `FunWarry/tidal-dl-ng-For-DJ`. - Updated documentation link to reflect the new GitHub Pages URL.
* Remove donation links from READMEMathéo Gevraise2025-12-301-5/+0
| | | Removed coffee support section from README.
* chore: Update all repository references to the new fork URLWarry2025-12-2911-25/+25
| | | | | | - Replaced `exislow/tidal-dl-ng` URLs with `FunWarry/tidal-dl-ng-For-DJ` across documentation, configuration files, UI components, and metadata. - Synchronized all hyperlinks in README, issue templates, pyproject.toml, and mkdocs.yml. - Ensured all references to the old repository are removed for consistency with the new fork.
* chore: Update `deptry` configuration in `pyproject.toml`Warry2025-12-291-0/+2
| | | | - Replaced deprecated `ignore_transitive` with `per_rule_ignores` for DEP003 rules targeting `shiboken6`.
* chore: Remove redundant `ignore_transitive` configuration from `pyproject.toml`Warry2025-12-291-1/+0
|
* feat: Refactor playlist management, error handling, and testing infrastructureWarry2025-12-2910-135/+162
| | | | | | | | | | | - Improved playlist item handling with pagination, error logging, and dedicated request hooks. - Consolidated reusable helpers for track ID normalization, playlist validation, and removal logic. - Enhanced error handling by introducing `PlaylistNotFound` and `UserNotAuthenticated` exceptions. - Refined Pytest `qapp` fixture for headless CI compatibility and session-scoped reuse. - Replaced redundant fixtures in multiple test files for consistency. - Improved playlist management GUI with detailed debug logging for notifications and operations. - Added `deptry` configuration to handle transitive dependencies and ignored exclusions. - Updated Pytest and Tox configurations for consistent environment setup during CI/CD runs.
* feat: Enhance playlist management and GUI logicWarry2025-12-2910-43/+242
| | | | | | | | | | - Improved playlist item fetching by adding robust pagination and low-level request hooks for better testing and flexibility. - Refactored track ID extraction logic into reusable helpers for clarity. - Improved initialization for dialog components to avoid circular dependencies in the GUI. - Added new unit tests to validate playlist operations, including track addition/removal and API integration. - Updated metadata functions to simplify dictionary access using `.get` for better readability. - Ensured PySide6 system dependencies are installed in GitHub Actions to address CI compatibility issues. - Streamlined UI package initialization to improve modularity and robustness of imports.
* feat: Add playlist management functionality and compliance checksWarry2025-12-2917-4/+3433
| | | | | | | | | | - Introduced a new "Playlists" column in results view with visual indicators for membership. - Added `playlist_api.py` to handle playlist-related operations (fetch, add, remove tracks). - Implemented `PlaylistManagerDialog` for seamless playlist addition/removal with caching. - Integrated compliance check script (`check_agents_compliance.py`) for ensuring coding standards. - Added extensive documentation (`playlist_membership_manager.md`) covering architecture and flow. - Updated GUI logic and QStandardItemModel setup to include playlist data. - Included unit tests for playlist management components and API.
* refactor: Restructure GUI components into separate modules for improved ↵Warry2025-12-0423-1790/+1900
| | | | maintainability
* refactor: Update poetry.lock and pyproject.toml for improved dependency ↵Warry2025-12-032-6/+7
| | | | management
* chore: Remove outdated git package source from poetry.lockWarry2025-12-031-6/+1
|
* Initial snapshot for Poetry lockWarry2025-12-030-0/+0
|
* refactor: Improve hover manager cleanup and event filtering logicWarry2025-12-033-18/+4
|
* refactor: Improve hover manager cleanup and event filtering logicWarry2025-12-031-19/+26
|
* Merge branch 'feature/json-downloaded' into fusion-refac-&-infoWarry2025-12-0322-226/+5339
|\ | | | | | | | | | | | | # Conflicts: # .gitignore # README.md # tidal_dl_ng/gui.py
| * Merge remote-tracking branch 'warry-github/master' into feature/json-downloadedWarry2025-12-039-32/+46
| |\ | | | | | | | | | | | | # Conflicts: # README.md
| * | feat: Add download history tracking with duplicate preventionWarry2025-11-2915-14/+3852
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implement comprehensive download history system with JSON persistence and duplicate prevention capabilities. Features: - Persistent JSON-based download history with atomic writes - Duplicate prevention toggle in Tools menu - Thread-safe operations with proper locking - Automatic corruption recovery with backup creation - Import/Export functionality for history portability - Statistics view grouped by source (playlist, album, mix) - Green console messages for improved visibility - Custom exception handling for better error reporting Technical Details: - HistoryService singleton with O(1) track lookups - Track-centric JSON structure for performance - Atomic file operations to prevent data corruption - Custom HistoryFormatError exception class - Complexity reduction through helper methods - Full AGENTS.md compliance (ruff, black, type hints) UI Changes: - Added "Tools" menu with two actions: - "View Download History..." - Opens history dialog - "Prevent Duplicate Downloads" - Toggle with persistence - New Download History dialog with: - Tree view grouped by source - Statistics display - Import/Export buttons - Clear history option - Open folder functionality Files Added: - tidal_dl_ng/history.py (438 lines) - tidal_dl_ng/dialog_history.py (325 lines) - tidal_dl_ng/ui/dialog_history.py - tidal_dl_ng/ui/dialog_history.ui - tests/test_history_service.py (38 tests) - tests/test_download_duplicate_prevention.py (10 tests) - tests/test_gui_duplicate_prevention.py (22 tests) - tests/test_logger_configuration.py (20 tests) - FEATURE_DOCUMENTATION.md (900+ lines) - tests/README.md - CODE_QUALITY_COMPLIANCE.md - FINAL_SUMMARY.md Files Modified: - tidal_dl_ng/download.py - History integration - tidal_dl_ng/gui.py - Tools menu and handlers - tidal_dl_ng/logger.py - Green INFO messages Testing: - 91 tests total, all passing (100% pass rate) - Full test coverage for all new functionality - Thread safety validated with concurrent tests - Corruption recovery tested - Import/Export functionality verified Quality: - Zero ruff violations (full AGENTS.md compliance) - All pre-commit hooks passing - Type hints on all functions - Google-style docstrings throughout - Black formatted - Security reviewed (subprocess usage annotated) Performance: - O(1) track existence checks via dict - Atomic writes prevent corruption - Minimal memory footprint (~100 bytes per track) - Fast startup (<50ms for 1000 tracks) Breaking Changes: None Backward Compatible: Yes (legacy format auto-migrated)
* | | Merge branch 'feature/informations-window' into fusion-refafac-setingsWarry2025-12-0324-1618/+4985
|\ \ \ | | | | | | | | | | | | | | | | # Conflicts: # .gitignore
| * \ \ Merge remote-tracking branch 'warry-github/master' into ↵Warry2025-12-039-27/+41
| |\ \ \ | | | |/ | | |/| | | | | | | | | | | | | | | | | | | | | feature/informations-window # Conflicts: # CONTRIBUTING.md # README.md
| * | | feat: enable rich text links for metadata fields and add search functionalityWarry2025-11-292-78/+175
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Introduced clickable metadata links (tracks, albums, artists, playlists, videos). - Left-click triggers in-app search; Ctrl+click or right-click opens browser search. - Enhanced label interactions and added tooltips for actionable fields. - Simplified artist, album, and playlist rendering with rich links. - Extended search functionality with URL-safe encoding and type mapping.
| * | | fix: correct find_attr calls to use variadic args instead of listWarry2025-11-292-12/+12
| | | | | | | | | | | | | | | | | | | | | | | | After refactoring find_attr signature from list to *args, forgot to update the call sites. Track number and other metadata were not displaying due to passing list instead of individual arguments.
| * | | feat(hover): add track details preview on hover + fix all ruff violationsWarry2025-11-2926-1622/+4886
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implement comprehensive track information display on hover and resolve all code quality issues to achieve complete ruff compliance. MAJOR FEATURES: - Track details preview on hover with rich metadata display - Async BPM fetching with loading indicator - Enhanced metadata utilities with fuzzy matching - TIDAL API extras integration FILES MODIFIED: 15+ files (core, UI, tests, docs) RUFF COMPLIANCE: 0 errors (89+ violations resolved) - Fixed E999 syntax error in metadata_utils.py - Refactored 10+ complex functions (C901) - Updated error handling (S110, S112, SIM105) - Modernized type hints (UP038) - Fixed naming conflicts (A001, F811) BUG FIXES: - Added missing _on_update_cover() method (11 test failures) - Fixed BPM display and async loading - Improved thread safety TESTING: 30 passed, 1 skipped DOCUMENTATION: Windows PowerShell support, tox troubleshooting
* | | Merge remote-tracking branch 'warry-github/master' into ↵Warry2025-12-039-33/+47
|\ \ \ | | |/ | |/| | | | feature/refactor-settings-ui
| * | Merge pull request #668 from jotalevi/hide-ffmpeg-flashexislow2025-11-292-0/+15
| |\ \ | | | | | | | | fix(ffmpeg): prevent terminal window flash on Windows during media conversion
| | * | fix(ffmpeg): prevent terminal window flash on Windows during media conversionE.J. Talevi2025-11-262-2/+12
| | | |
| | * | fix(ffmpeg): prevent terminal window flash on Windows during media conversionE.J. Talevi2025-11-263-2/+7
| | |/
| * | Merge pull request #665 from jotalevi/clarity-check-and-grammar-fixesexislow2025-11-298-33/+32
| |\ \ | | |/ | |/| Clarity and grammar
| | * Added clarity and grammar fixes to documentation and to some strings on the ↵E.J. Talevi2025-11-258-33/+32
| |/ | | | | | | program itself.
* / feat: refactor settings UI with category navigation and add Delimiters pageWarry2025-11-3013-847/+3057
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Closes #640 ## Changes ### UI Refactoring - Replace monolithic settings dialog with category-based navigation - Add QListWidget (lw_categories) for category selection on the left - Add QStackedWidget (sw_categories) for content pages on the right - Organize settings into 5 distinct pages: - Flags (14 checkboxes) - Quality (3 combo boxes) - Numbers (2 spin boxes) - Paths & Formats (7 line edits + 2 browse buttons) - Delimiters (4 line edits) — NEW ### New Feature: Delimiters Category - Add customizable separators for artists in metadata and filenames: - metadata_delimiter_artist - metadata_delimiter_album_artist - filename_delimiter_artist - filename_delimiter_album_artist - Auto-integration with DialogPreferences via parameters_line_edit - Line edits with max width 100px for compact display ### Styling - Apply dark theme to settings dialog: - Category list: #2b2b2b background, #3d5a80 selection, #3a3a3a hover - Settings area: #333333 background, styled GroupBoxes (#3a3a3a) - Light text (#e0e0e0) for better contrast - Add spacing property (6px) to category list for better readability - Style QListWidget items with padding (4px 3px) and margin (2px 0px) ### Testing - Add comprehensive test suite (61 tests total): - test_settings_ui.py: UI and basic integration (14 tests) - test_settings_dialog_structure.py: detailed structure validation (20 tests) - test_dialog_preferences_integration.py: DialogPreferences integration (14 tests) - test_delimiters_category.py: new Delimiters page validation (13 tests) - Fix ruff issues (F841, S108) in test files - All tests passing with 100% success rate ### Documentation - Add docs/refactor_settings_ui.md: comprehensive refactor overview - Add docs/delimiters_category.md: Delimiters feature documentation - Add docs/ui_styles.md: dark theme style guide - Add docs/testing_summary.md: testing overview and commands ### Code Quality - Apply ruff/black/pyupgrade via pre-commit hooks - Fix F841 (unused variable) in test_dialog_preferences_integration.py - Fix S108 (insecure temp path) using Path.home() in test_settings_ui.py - End-of-file fixes applied automatically ## Files Modified - tidal_dl_ng/ui/dialog_settings.ui (complete restructure) - tidal_dl_ng/ui/dialog_settings.py (auto-generated from .ui) - tidal_dl_ng/dialog.py (add 4 delimiter params + Delimiters category) - tests/* (4 new test files with 61 tests) - docs/* (4 new documentation files) ## Impact - Improved UX: intuitive category navigation, better visual organization - Extensibility: easy to add new settings pages/categories - Quality: comprehensive test coverage ensures robustness - User flexibility: customizable separators for metadata and filenames ## Technical Notes - QStackedWidget pages indexed 0-4 matching category list order - Navigation via QListWidget::currentRowChanged signal - Automatic save/load through existing DialogPreferences methods - No breaking changes to existing settings or configuration ## Testing Commands ```powershell poetry run pre-commit run -a poetry run pytest -q
* Merge pull request #647 from exislow:612-adding-of-artist_idexislow2025-11-131-0/+4
|\ | | | | feat(media): ✨ add support for retrieving album and track artist IDs
| * feat(media): ✨ add support for retrieving album and track artist IDsRobert Honz2025-11-131-0/+4
|/ | | | | * Implemented logic to return `album_artist_id` for `Album` instances. * Added functionality to retrieve `track_artist_id` for `Track` instances.
* 🌟 Version bumped to v0.31.4Robert Honz2025-11-131-1/+1
|
* refactor(downloader): 🔧 reorganize TrackStreamInfo class and importsRobert Honz2025-11-132-12/+12
| | | | | | * 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.
* Merge pull request #626 from Rikrdoga:Dolby_Atmosexislow2025-11-132-48/+176
|\ | | | | Fix(Atmos): Resolve Race Condition and Optimize Session Switching for Atmos Downloads
| * Create TrackStreamInfo dataclass & Add proper docstringsRikrdoga2025-11-122-13/+52
| |
| * Resolve Race Condition and Optimize Session Switching for Atmos DownloadsRikrdoga2025-11-042-44/+133
| |
* | Merge pull request #646 from exislow:download-context-menuexislow2025-11-121-5/+328
|\ \ | | | | | | Download-context-menu
| * | feat(gui): ✨ add functionality to download albums from favoritesRobert Honz2025-11-121-0/+115
| | | | | | | | | | | | | | | | | | - 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.
| * | feat(gui): ✨ add favorites download functionalityRobert Honz2025-11-121-0/+50
| | | | | | | | | | | | | | | | | | * 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.
| * | feat(gui): ✨ add folder support for media downloadsRobert Honz2025-11-121-5/+163
|/ / | | | | | | | | | | * 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.