Commit Graph

536 Commits

Author SHA1 Message Date
Your Name 4bc677add3 Make format table column widths responsive
Refactored column width and resize logic in the format table to use responsive sizing based on header text length and font metrics. Introduced helper methods to calculate and apply column widths for both normal and playlist modes, improving adaptability to localization and UI consistency.
2025-10-04 13:42:50 +03:00
Your Name a627dfbf64 Add new translation keys for file exists and auto-update dialogs
Introduces new translation keys for file exists and auto-update dialogs in all supported languages. Updates the settings and main GUI to use these i18n strings instead of hardcoded English text, improving localization and user experience.
2025-10-04 13:25:17 +03:00
Your Name d48a474e00 Add speed and ETA translations; localize status message
Added 'speed' and 'eta' translation keys to all language files for download status. Updated ytsage_downloader.py to use localized labels for speed and ETA in the status message.
2025-10-04 13:10:56 +03:00
Your Name 720c315d33 Add and update strings for download and errors
Expanded and updated translation files (ja, pt, ru, tr, zh) with new keys for download progress, error messages, playlist info, and subtitle selection. This improves localization coverage and user feedback during download and error scenarios.
2025-10-04 12:47:33 +03:00
Your Name 67d1ad1fbc Add new download and error messages to translations
Expanded translation files (ar, de, fr, hi, id, it, pl) with additional download status messages, error messages, playlist info, and subtitle selection strings to improve localization coverage and user feedback.
2025-10-04 12:40:05 +03:00
Your Name 3164c07416 Add localization for status and error messages
Replaced hardcoded status and error messages with localized strings throughout the downloader, main GUI, update dialog, and video info components. Updated English and Spanish language files with new keys for download statuses, errors, playlist info, and UI labels to improve internationalization and maintainability.
2025-10-02 22:03:21 +03:00
Your Name be122d77fe Fix resolution parsing in format quality sorting
Improves robustness of the get_quality function by handling None and non-string resolution values, and catching IndexError in addition to ValueError when parsing resolution.
2025-10-02 21:22:08 +03:00
Your Name d81adc4781 Replace notes column with FPS in format table
The format table now displays FPS (frame rate) instead of notes in both playlist and normal modes. All translations were updated to remove the 'notes' and related size/quality fields, replacing them with 'fps'. The table column widths were adjusted for better visibility, and FPS values are color-coded based on their value. The obsolete _get_format_notes method was removed.
2025-10-02 21:16:27 +03:00
Your Name f461e9480b Increase select column width in format table
The select column width in the format table was increased from 50 to 80 pixels to better accommodate longer translations. This change ensures consistent column sizing across different table setups.
2025-10-02 19:37:11 +03:00
Your Name f85e3a6a83 Add Japanese localization and update language support
Added a new Japanese translation file (ja.json) and updated all language files to include Japanese in the language selection. Updated quality label color detection in ytsage_gui_format_table.py to support Japanese terms, and registered Japanese in the default language list in ytsage_localization.py.
2025-10-02 18:28:04 +03:00
Your Name 0ccb974708 Add Arabic translation and update language support
Added a new Arabic translation file (ar.json) and updated all other language files to include 'arabic' in the language selection list. Also updated quality label color detection in the format table to support Arabic terms, ensuring proper highlighting for quality levels in Arabic.
2025-10-02 18:20:50 +03:00
Your Name 8d0bcf60c1 Add Italian language support and update quality labels
Introduces Italian translations by adding languages/it.json and updating all language files to include 'italian' in the language selection. Updates quality label color logic in ytsage_gui_format_table.py to recognize Italian terms for best, high, medium, and low quality. Also updates the default language list in ytsage_localization.py to include Italian.
2025-09-30 22:44:12 +03:00
Your Name 828f105c92 Add Polish localization and update quality color mapping
Added Polish translations in a new pl.json file and updated all language files to include 'polish' in the language selection. Extended the quality color mapping in ytsage_gui_format_table.py to recognize Polish terms for best, high, medium, and low quality. Updated the default language list in ytsage_localization.py to include Polish.
2025-09-30 22:38:29 +03:00
Your Name fdbb4a6972 Add Turkish localization and update language support
Added Turkish translations in languages/tr.json and updated all other language files to include Turkish in the language selection. Updated format table color logic in ytsage_gui_format_table.py to recognize Turkish quality terms. Also updated ytsage_localization.py to include Turkish in the default language list.
2025-09-30 22:28:27 +03:00
Your Name b9e8e34e8f Add Indonesian localization and update language support
Introduces Indonesian translations by adding languages/id.json and updating all language files to include 'indonesian' in the language selection. Updates format table color logic in ytsage_gui_format_table.py to recognize Indonesian quality terms. Also updates ytsage_localization.py to include Indonesian in the default language list.
2025-09-30 22:22:53 +03:00
Your Name b02ca9ae01 Add Hindi localization and update language support
Introduces a new Hindi translation file (hi.json) and adds Hindi as a selectable language in all existing language files. Updates the format table to recognize Hindi quality terms for color coding, and includes Hindi in the default language list in the localization manager.
2025-09-30 22:16:31 +03:00
Your Name 4b212c08e2 Add French localization and update language support
Added a complete French translation file (fr.json) and updated all other language files to include 'French' as a selectable language. Updated format table color logic to recognize French and German quality terms for better internationalization. Also updated the default English language map to include French.
2025-09-30 22:10:36 +03:00
Your Name 47cdd06494 Add German translation and update language support
Added a new German (de) translation file and updated all language JSON files to include German in the language selection. Updated format quality color mapping in the GUI to recognize German quality terms. Ensured localization manager and UI support the new language.
2025-09-30 22:00:03 +03:00
Your Name 9005bb61c1 Add Chinese localization and update language support
Added a new Simplified Chinese translation file (zh.json) and updated all language files to include Chinese as a selectable language. Updated format quality color logic in the format table to recognize Chinese quality terms, ensuring proper color coding for quality labels in the UI. Also updated the localization manager to include Chinese in the language selection.
2025-09-30 21:49:24 +03:00
Your Name 3cdcfe2ce5 Add Russian language option to localization
Introduced a new 'russian' entry in the language selection dictionary, enabling support for Russian language labeling in the application.
2025-09-30 21:42:43 +03:00
Your Name acf65b01b2 Expand quality label color support to more languages
Added Portuguese and Russian terms for quality levels in the table, ensuring color coding works for a broader set of localized quality labels.
2025-09-30 21:42:37 +03:00
Your Name 0ff96e371d Add Russian language translation file
Introduces a new ru.json file containing Russian translations for the application's UI and messages.
2025-09-30 21:42:31 +03:00
Your Name acfa5df527 Add Russian language option to Portuguese translations
Included the Russian language entry in the Portuguese language file to support selection of Russian in the language menu.
2025-09-30 21:42:26 +03:00
Your Name acd4bb192a Add Russian language option to Spanish translations
Added the Russian language entry to the language selection section in the Spanish translation file (es.json).
2025-09-30 21:42:21 +03:00
Your Name e5cc892dec Add Russian language option to language list
Included 'Russian' in the available language options in en.json to support users who prefer Russian.
2025-09-30 21:42:17 +03:00
Your Name bb8bf033bf Add Portuguese localization support
Introduces a new Portuguese translation file (pt.json) and updates the localization manager to recognize Portuguese as a supported language.
2025-09-30 21:25:30 +03:00
Your Name 69507abf32 Update language files with new and revised strings
Expanded and reorganized language keys in en.json, including improved labels for language selection, about dialog, and time range features. Added missing Portuguese language entry to es.json for consistency. Updated descriptions and placeholders for better clarity and user experience.
2025-09-30 21:25:25 +03:00
Your Name c5916d57c0 Add localization support and language selection
Introduces English and Spanish translation files, integrates localization throughout dialogs, and adds a language selection tab to the custom options dialog. UI strings are now loaded via the localization manager, enabling dynamic language switching and improved internationalization.
2025-09-30 20:53:59 +03:00
Your Name 0376c1c4cd Add proxy support to feature list in README
Updated the README to include proxy support as a listed feature, providing more accurate documentation of current capabilities.
2025-09-22 16:48:38 +03:00
Your Name 55f7a90c76 Bump version to 4.9.0b
Update version references from 4.8.3 to 4.9.0b in __init__.py, main app, and About dialog to prepare for the next beta release.
2025-09-22 15:19:08 +03:00
Your Name 377157d415 Improve partial file cleanup with retry and delays
Added a _safe_delete_with_retry method to handle Windows file locking issues when deleting partial files. Introduced delays before cleanup after process termination to ensure file handles are released, reducing errors during file deletion. Error signal emission for cleanup failures is suppressed to avoid thread crashes.
2025-09-22 15:16:34 +03:00
Your Name 16b50934ab Persist proxy settings in config manager
Proxy settings (main and geo-verification) are now loaded from and saved to the ConfigManager. The dialogs and main app have been updated to initialize and persist proxy values, and user feedback is improved for proxy changes and clearing.
2025-09-22 15:06:49 +03:00
Your Name d6fb926644 Add proxy configuration support to downloader and GUI
Introduces proxy and geo-verification proxy options to the downloader and GUI dialogs, allowing users to specify network proxies for downloads and geo-restricted content. Updates the DownloadThread and main app logic to pass and apply these proxy settings, and adds validation and status indicators in the custom options dialog.
2025-09-22 14:49:58 +03:00
Viren Hirpara e9de913b47 v4.9.0 - Refactor (#41)
* fix imports
remove unused imports
use full import path
sort import (1. Standard Library, 2. Third-Party, 3. Local) in alphabetic.

* - remove: Method 3 from src.core.ytsage_downlader:cleanup_subtitle_file
  - it could delete the subtitle file of other movies if it present in same directory as it scane recursively.

- refactor: migrate from os.path to pathlib.Path for path handling
  - Replaced os.path methods with pathlib.Path to improve readability,
  - avoid repeatation.
  - cross-platform compatibility, and maintain cleaner code.

- improve: enhance code readability
  - Standardized string literals to use double quotes for consistency
  - Removed unnecessary spaces to maintain cleaner formatting
  - Applied code formatting for better readability and maintainability

* - add: ytsage_constants.py file for one place to store all constants.

- imporve: return type hint for function.

- remove: src/gui/ytsage_gui_dialogs.py file to avoid repetation
  - src/gui/dialogs is renamed to src/gui/ytsage_gui_dialogs for same naming convection. (future import will remains same)
  - use of src/gui/ytsage_gui_dialogs/__init__.py to import the dilogs modules.

- change: variable self.parent to self._parent so it does not overwrite the parent()
  - add type hint checking.

* - refactor: QMetaObject.invokeMethod to Signal
  - I encounter error with incokeMethod. Could not solve it.
  - So, Changed it to Signal to match app code language.

- implement: the ytsage_constants.py to code
  - remove: unnecessary logic
  - remove: repetitive code logic.

- update: yt-dlp logic for src\gui\ytsage_gui_dialogs\ytsage_dialogs_update:_update_binary
  - yt-dlp update logic will use `yt-dlp -U`

* refactor: remove unused imports and streamline code formatting across multiple files

* - **refactor: drop `pygame` in favor of built-in `PySide6` sound**

- Removed `pygame` dependency (too heavy just for notifications).
- Replaced with `QSoundEffect`, which is lightweight and built into `PySide6`.
- Dropped `pygame.mixer` + threading → Qt handles async playback.
- Implemented sound playback with `QUrl.fromLocalFile()` and `.play()`.
- Added `setVolume(0.9)` as a configurable example.
- Converted notification sound from `.mp3` to `.wav` (only format supported).

* **refactor(utils): simplify logger module**
  - Moved `logger` to `src.utils`
  - Removed unnecessary import checks (logger is always available)
  - Replaced `raise` statements with error logging to prevent crashes
  - Use `logger.exception()` in `except` blocks to capture traceback (logged as error)

**style: remove redundant str() in f-strings**
  - Dropped explicit `str()` calls inside f-strings
  - f-strings already call `str()` under the hood

**chore: add type hints for GUI mixins**
  - Added type hints for `FormatTableMixin` (`src.gui.ytsage_gui_format_table`)
  - Added type hints for `VideoInfoMixin` (`src.gui.ytsage_gui_video_info`)
  - Improves autocomplete and type safety in IDEs

* - **introduce the `ytsage_config_manager.py` module to manage app setting.**
  - Loads settings from a JSON config file (`APP_CONFIG_FILE`).
  - Creates the config file with default values if missing or corrupt.
  - Retrieves, sets, and deletes settings using simple dot-separated keys.
  - Provides safe error handling with logging instead of raising exceptions.
  - Persists updates back to disk automatically.

- **Usage**
```python
from src.utils.ytsage_config_manager import ConfigManager

download_path = ConfigManager.get("download_path")

ConfigManager.set("download_path", "D:/Downloads")

last_check = ConfigManager.get("cached_versions.ytdlp.last_check")

ConfigManager.delete("cached_versions.ffmpeg.path")
```

* **Refactore: pkg_resources with importlib.metadata.version**
  - UserWarning: pkg_resources is deprecated as an API.
  - See https://setuptools.pypa.io/en/latest/pkg_resources.html.
  - The pkg_resources package is slated for removal as early as 2025-11-30.

* **refactore: notification sound**
  - `QSoundEffect` is chnaged back to `pyglet` as per mainter `@oop7` choise.
  - simplify the logic.

* remove: import check, it should always work.

* **fix: runtime error**
  - yt_dlp moved from `--excludes` to `--packages` in `build-windows.yml`
  - In frozen build, logger will not log to consol. insted will log to file.
  - In frozen build, `app_dir` is next to `.exe` file.

* chang back to checking import for ytdlp

* Bump version to 4.8.1

Update version references from 4.8.0b to 4.8.1 in __init__.py, main app, and About dialog to reflect the new release.

* Update asset paths in build workflows

Changed asset inclusion and screenshot removal paths from 'assets' to 'lib/assets' in Linux, macOS, and Windows build workflows to reflect new directory structure and ensure screenshots are excluded from packaged builds.

* Bump version to 4.8.2

Update version references from 4.8.1 to 4.8.2 in source files and documentation to prepare for a new patch release.

* Fix asset include path in Windows build workflow

Corrects the syntax for including asset files in the build-windows.yml workflow by changing 'assets,lib/assets' to 'assets=lib/assets'. This ensures assets are properly mapped during the build process.

* Update release tag examples in CI/CD README

Changed the example git tag commands from v4.8.0 and v4.8.2 to v4.8.1 for consistency in the CI/CD documentation.

* Fix include-files mapping in Windows build workflow

Changed the cx_Freeze --include-files argument from '=' to ':' for source:destination mapping in build-windows.yml. This resolves an issue where '=' was treated as a literal path, ensuring assets are correctly copied to the destination directory.

* Remove redundant comments in build-windows workflow

Deleted comments explaining the colon usage for source:destination mapping in the cx_Freeze CLI, as the mapping is already clear from the context.

* Refactor Windows build to use cx_Freeze setup script

Replaces direct cx_Freeze CLI calls with dynamically generated setup scripts for both standard and FFmpeg builds. This improves maintainability and flexibility of build configuration in the GitHub Actions workflow.

* Bump version to 4.8.3

Updated version references from 4.8.2 to 4.8.3 in __init__.py, main app, and About dialog to reflect the new release.

* revert(build): move yt_dlp from --packages to --excludes in build-windows.yml

---------

Co-authored-by: Your Name <mohamed.mohamed112@ai.mnu.edu.eg>
2025-09-09 23:01:19 +03:00
Your Name 79d8d224df Bump version to 4.8.3
Updated version references from 4.8.2 to 4.8.3 in __init__.py, main app, and About dialog to reflect the new release.
2025-09-09 14:55:49 +03:00
Your Name 2f0b4b9334 Refactor Windows build to use cx_Freeze setup script
Replaces direct cx_Freeze CLI calls with dynamically generated setup scripts for both standard and FFmpeg builds. This improves maintainability and flexibility of build configuration in the GitHub Actions workflow.
2025-09-09 14:35:45 +03:00
Your Name 4434eafe48 Remove redundant comments in build-windows workflow
Deleted comments explaining the colon usage for source:destination mapping in the cx_Freeze CLI, as the mapping is already clear from the context.
2025-09-09 14:20:13 +03:00
Your Name fe01f725d5 Fix include-files mapping in Windows build workflow
Changed the cx_Freeze --include-files argument from '=' to ':' for source:destination mapping in build-windows.yml. This resolves an issue where '=' was treated as a literal path, ensuring assets are correctly copied to the destination directory.
2025-09-09 14:15:55 +03:00
Your Name 1ba920aa11 Update release tag examples in CI/CD README
Changed the example git tag commands from v4.8.0 and v4.8.2 to v4.8.1 for consistency in the CI/CD documentation.
2025-09-09 14:07:36 +03:00
Your Name 1693b8fbed Fix asset include path in Windows build workflow
Corrects the syntax for including asset files in the build-windows.yml workflow by changing 'assets,lib/assets' to 'assets=lib/assets'. This ensures assets are properly mapped during the build process.
2025-09-09 13:54:08 +03:00
Your Name d105f87177 Bump version to 4.8.2
Update version references from 4.8.1 to 4.8.2 in source files and documentation to prepare for a new patch release.
2025-09-09 13:38:32 +03:00
Your Name e287b0b6b5 Update asset paths in build workflows
Changed asset inclusion and screenshot removal paths from 'assets' to 'lib/assets' in Linux, macOS, and Windows build workflows to reflect new directory structure and ensure screenshots are excluded from packaged builds.
2025-09-09 13:37:21 +03:00
Your Name f0232d535d Bump version to 4.8.1
Update version references from 4.8.0b to 4.8.1 in __init__.py, main app, and About dialog to reflect the new release.
2025-09-09 12:52:14 +03:00
Your Name c140acef5a Fix output template path handling in downloader
Replaces Path.joinpath with string concatenation using as_posix() for output templates to avoid issues with Path objects. Ensures correct file paths for both single downloads and playlists.
2025-09-09 11:50:21 +03:00
Your Name 3f1d697568 Add dynamic asset path resolution for YTSage
Introduced get_asset_path to resolve asset paths for both development and installed package environments. Updated ICON_PATH and SOUND_PATH to use this function, improving portability and reliability of asset loading.
2025-09-09 11:24:21 +03:00
Your Name 725b395bcd Update About dialog description text
Revised the AboutDialog description to better reflect the application's modern features and PySide6 interface.
2025-09-08 17:34:25 +03:00
Your Name 770acc2d16 Update README with SVG wordmark and badge formats
Replaced the YTSage title in README with an SVG wordmark and updated release format tables to use shield badges for Windows, Linux, and macOS. Added the ytsage-wordmark.svg asset and documented its location in the project structure.
2025-09-06 16:27:06 +03:00
Mohamed b063b4f01e Format project name and update Python version badge 2025-09-05 15:01:13 +03:00
Your Name 9e89228c6d Reapply "Fix path handling and subtitle file tracking in downloader"
This reverts commit afcab75b20.
2025-09-04 17:50:03 +03:00
Your Name afcab75b20 Revert "Fix path handling and subtitle file tracking in downloader"
This reverts commit 8198f7604f.
2025-09-04 17:48:36 +03:00