Commit Graph

592 Commits

Author SHA1 Message Date
oop7 bb461898e4 Update translations across multiple locales
Update and improve translations for multiple language files (ar, de, es, fr, hi, id, it, ja, pl, pt, ru, tr, zh). Key changes include localized strings for playlist saving ("Save Playlist As" -> localized), save/result/error messages, concurrent connections and help text, default selection/settings (video quality and subtitle language), and various wording/typo fixes. Also add/translate FFmpeg installation and yt-dlp setup messages in Turkish and Chinese. No functional code changes.
2026-04-25 17:42:36 +03:00
oop7 a2e11eec06 Update French translations
Translate several UI strings in ytsage/languages/fr.json from English to French: update `save_playlist`, `filter_playlist_placeholder`, and a group of settings strings (`concurrent_fragments`, `concurrent_fragments_help`, `defaults_settings`, `default_video_quality`, `default_subtitle_language`, `defaults_help`) to provide correct French localization and improve consistency.
2026-04-25 17:40:49 +03:00
oop7 9856dbf301 Update Spanish and Hindi translations
Improve localization by updating translations in ytsage/languages/es.json and ytsage/languages/hi.json. Spanish fixes provide full translations for interface help text, restart notice, playlist/save labels, dialog placeholders, and playlist save messages. Hindi adds translated strings for concurrent connections, related help text, and default selection settings for video quality and subtitles.
2026-04-25 17:40:24 +03:00
oop7 3d06c4dba6 Update German and Hindi translations
Translate several UI strings in ytsage/languages for German (de.json) and Hindi (hi.json). Changes include localized labels for saving playlists and filtering videos, dialog placeholders, and various settings text (e.g. concurrent connections and default selection help in German). Hindi updates add translated playlist save dialog messages and related UI strings.
2026-04-25 17:39:52 +03:00
oop7 d8c3ce8fa1 Add new i18n keys to language files
Add new localization keys across multiple ytsage language JSONs. Common addition: "filter_playlist_placeholder" added to most languages. Spanish, Turkish and Chinese receive several new strings for custom commands, proxy settings, FFmpeg installation messages, history loading, time/placeholders and validation messages. Also ensure files end with newline. Files modified: ar, de, es, fr, hi, id, it, ja, pl, pt, ru, tr, zh.
2026-04-25 10:58:43 +03:00
oop7 d19ac96ff7 Bump package version to 5.0.7b
Update project version in pyproject.toml and ytsage/__init__.py from 5.0.5b to 5.0.7b to mark the new release.
2026-04-25 10:54:08 +03:00
oop7 a512c603ce Document playlist export and new defaults
Update README to reflect new features and settings: add "Export Playlists" to the feature table; document the "Save Playlist As" export options (.txt, .csv, .m3u, .json). Add docs for Default Video Resolution and Default Subtitle Languages settings, and update the Output Filename Format variables to include %(playlist_index)s and %(resolution)s. These changes keep the README in sync with recent UI/settings additions.
2026-04-25 10:46:43 +03:00
oop7 c9217fccb7 Handle None file_size in history delegate
Replace entry.get('file_size', 0) with entry.get('file_size') or 0 in HistoryDelegate (ytsage_dialogs_history.py) to treat None as 0. This prevents TypeError when comparing None > 0 and ensures file size formatting/display only occurs for positive sizes.
2026-04-25 10:40:38 +03:00
oop7 57f5450725 Add save_playlist key to language files
Add a new "save_playlist" entry (placeholder "Save Playlist As") to multiple locale JSON files (ar, de, es, fr, hi, id, it, ja, pl, pt, ru, tr, zh) to provide a translation key for saving playlists. Also adds the required trailing commas when inserting the new entries.
2026-04-25 10:39:00 +03:00
oop7 405ae07cac Add i18n entries for defaults and playlist save
Add new localization keys across multiple languages to support default selection settings and playlist saving UI. New keys include defaults_settings, default_video_quality, default_subtitle_language, defaults_help, and playlist save messages (save_as, save_success_title, saved_successfully, save_error_title, no_videos_to_save, save_error_msg). Files updated: ar, de, es, fr, hi, id, it, ja, pl, pt, ru, tr, zh.
2026-04-25 10:37:40 +03:00
oop7 3b6ac7ce81 Add playlist save and default selection strings
Update English locale with new UI strings for playlist saving and default selections. Adds 'save_playlist' and related save messages (save_as, save_success_title, saved_successfully, save_error_title, no_videos_to_save, save_error_msg), adds default selection settings keys (defaults_settings, default_video_quality, default_subtitle_language, defaults_help), and documents the %(playlist_index)s variable in filename_format_help. Also minor formatting cleanup in the file.
2026-04-25 10:33:10 +03:00
oop7 cf4c4e37c8 Add 'Save Playlist' button and save dialog
Introduce a Save Playlist UI flow: import QFileDialog, group playlist action buttons into a horizontal layout, add a new "Save Playlist As" button with styling and visibility control, and connect its click to a new save_playlist_to_file method. The new method prompts for a save location and supports saving playlist_entries in TXT, M3U, CSV, or JSON formats, shows success/error message boxes, and logs exceptions. Also wire the existing playlist visibility signal to control the save button and adjust layout placement for the playlist buttons.
2026-04-25 10:32:59 +03:00
oop7 fb209351f2 Auto-select default video quality in formats
After populating the format table, read default_video_quality from ConfigManager and attempt to auto-select a matching video format (by resolution/height). If a matching video format is found it is checked and handle_checkbox_click is invoked to trigger selection side-effects; if not, the first (highest-quality) format is selected as a fallback. Existing visibility filtering via filter_formats is still applied afterward.
2026-04-25 10:32:49 +03:00
oop7 6eb12043e3 Add default video quality & subtitles settings
Introduce a "Default Selection Settings" group in the Download Settings dialog to let users specify a default video resolution (height) and default subtitle language(s). Adds labeled QLineEdit inputs with placeholders and explanatory help text, uses localized strings for labels, and persists values to ConfigManager under keys "default_video_quality" and "default_subtitle_language" when saving.
2026-04-25 10:32:35 +03:00
oop7 717e9b40ae Preselect default subtitles from config
Load user's default_subtitle_language from ConfigManager and preselect matching manual or auto-generated subtitles on analysis load. Handles comma-separated strings, checks against available_subtitles and available_automatic_subtitles, and updates the selected subtitles list. Attempts to update the UI label and button state (with style refresh) inside a try/except to avoid errors during initialization.
2026-04-25 10:32:20 +03:00
oop7 ab7d77800a Include video id in default filename format
Add video id to the default output filename template across the downloader and settings UI. The template was changed from "%(title)s_%(resolution)s.%(ext)s" to "%(title)s_%(resolution)s_[%(id)s].%(ext)s" in ytsage_downloader.py and ytsage_dialogs_settings.py (including placeholder and reset behavior). This helps avoid filename collisions and makes downloaded files easier to identify.
2026-04-19 19:20:56 +02:00
oop7 a51d8092a8 Include video id in default filename format
Update default filename_format to append the video id as _[%(id)s] before the extension, improving uniqueness of generated filenames and preventing collisions when multiple videos share the same title and resolution.
2026-04-19 18:11:19 +02:00
oop7 00fc685e88 Bump version to 5.0.5b
Prepare a new beta release by updating the package version. Sync version from 5.0.4b to 5.0.5b in pyproject.toml and ytsage/__init__.py.
2026-04-10 17:19:44 +02:00
oop7 9b085aa547 Prefix playlist formats with '≤' and read table
Format table: when in playlist mode and the format has a video codec, prefix the quality and (when available) resolution with "≤ " to indicate an upper-bound. Resolution is only prefixed if it's not "N/A".

Main UI: replace the old checkbox-list lookup with scanning the format_table rows to find the checked checkbox widget, pick the correct resolution column depending on playlist mode, strip any leading "≤ " and use that as the selected resolution. This fixes resolution selection for playlist entries and ensures the displayed "≤" semantics are handled when extracting values.
2026-04-10 17:10:58 +02:00
oop7 71a68d3947 Use smaller dimension for resolution height
Previously the code assumed the height was always the second value in the "WxH" resolution string. This change splits the resolution into parts, verifies there are two components, and uses the smaller dimension (min) as the height to correctly classify vertical videos. Also avoids potential index errors when the resolution string is malformed.
2026-04-10 15:10:00 +02:00
oop7 ac5690b9b0 Add Concurrent Connections note to README
Document the new Concurrent Connections setting: explains that downloads can use multiple fragments concurrently to increase speed, where to find it (Download Settings → General → Concurrent Connections), the default value (1), and a recommended maximum (8–10) to avoid IP limiting.
2026-04-09 18:33:07 +02:00
oop7 93033d6661 Add concurrent connections note to translations
Add a new note about the "Concurrent Connections" download setting to multiple translated README files under readme-translations/. The entry documents that downloading files in multiple simultaneous fragments can drastically increase speed, and notes the default of 1 and a recommended maximum of 8–10 to avoid IP throttling. Files updated include translations for AR/DE/ES/FR/HI/ID/IT/JA/PL/PT/RU/TR/ZH.
2026-04-09 18:28:03 +02:00
oop7 e86536d585 Add concurrent connections i18n keys
Add new i18n keys "concurrent_fragments" and "concurrent_fragments_help" to multiple language JSON files (ar, de, en, es, fr, hi, id, it, ja, pl, pt, ru, tr, zh). These expose a UI option for the number of concurrent connections per download with a help string (default: 1, warns about throttling/temporary blocks). Strings were added in English across locales and may need translation.
2026-04-09 18:27:50 +02:00
oop7 7acb3d0853 Add default concurrent_fragments setting
Introduce a new config key 'concurrent_fragments' with default value 1 in ConfigManager defaults. This exposes a setting to control the number of concurrent fragment downloads/processing, preserving single-fragment behavior unless overridden by user configuration.
2026-04-09 18:27:33 +02:00
oop7 47dafe565f Pass concurrent_fragments to DownloadThread
Read concurrent_fragments from ConfigManager (defaulting to 1) and forward it into the DownloadThread constructor so the download fragment concurrency setting is propagated to the downloader.
2026-04-09 18:27:23 +02:00
oop7 2495c77d3c Support concurrent fragments and emit finished
Add a concurrent_fragments parameter to DownloadThread (default 1) and store it as an instance attribute. When building the yt-dlp command, include a -N <concurrent_fragments> option and log the concurrent connections. Also emit finished_signal upon cancellation and on error paths to ensure the UI is notified of thread completion. Minor comment/logging clarifications added around command construction.
2026-04-09 18:27:14 +02:00
oop7 fda6a4059d Add concurrent connections setting to dialog
Add a "Concurrent Connections" section to DownloadSettingsDialog with a QComboBox (1–20) and help text; initialize from ConfigManager("concurrent_fragments"). Introduce get_concurrent_fragments() to return the chosen value (with a safe fallback to 1) and persist the setting on dialog accept. Uses localized labels and minor styling for the help label.
2026-04-09 18:26:57 +02:00
oop7 99f1adf8eb Bump package version to 5.0.4b
Update package version from 5.0.2b to 5.0.4b. Changed version in pyproject.toml and __version__ in ytsage/__init__.py to prepare for the new release.
2026-04-09 14:50:01 +02:00
oop7 7bf62c542c Bump version to 5.0.3
Update package version from 5.0.2b to 5.0.3 in pyproject.toml and ytsage/__init__.py to prepare the 5.0.3 release.
2026-04-09 14:18:42 +02:00
oop7 7a39c4a4ba Merge branch 'beta' 2026-04-09 14:15:52 +02:00
oop7 437344695d Add UI tab labels to translation files
Add "tab_general", "tab_format", and "tab_file" entries to multiple ytsage/languages/*.json files to provide localized labels for the UI tabs (General, Format, File). Also include a minor formatting/newline fix in en.json.
2026-03-21 16:26:41 +02:00
oop7 f66ea09ba6 Refactor settings dialog into tabs and restyle
Reorganize the Download Settings dialog into a SmoothTabWidget with three tabs (General, Format, File) and move existing group sections into corresponding tab layouts. Import QWidget and SmoothTabWidget, increase dialog minimum width from 450 to 550, and add stretches for better layout spacing. Overhaul the dialog stylesheet to restyle tabs, frames, group boxes, checkboxes, radio buttons, combo boxes and item views (borders, paddings, colors, radii, hover/selected states). Also style OK/Cancel buttons to match the Custom Options dialog. These changes improve the dialog's visual consistency and UX while preserving existing settings controls and behavior.
2026-03-21 16:21:07 +02:00
oop7 1b3d60a1bc Bump project version to 5.0.2b
Update pyproject.toml project version from 5.0.1b to 5.0.2b to prepare the next beta release. No other code or metadata changes included in this commit.
2026-03-21 15:40:49 +02:00
oop7 7d5aa5da7e Add audio normalization (EBU R128) to READMEs
Update translated README feature lists to include audio normalization (EBU R128). Applied the change across multiple language files in readme-translations (ar, de, es, fr, hi, id, it, ja, pl, pt, ru, tr, zh) to reflect the new audio normalization feature in the project documentation.
2026-03-21 15:31:27 +02:00
oop7 4f25b268f7 Fix table layout in translated READMEs
Merge two table cells into a single row in multiple translated README files to correct the features table layout (combine "Generic mode" and "Localization in 14 languages"). Affected files: readme-translations/README.{ar,de,es,fr,hi,id,it,ja,pl,pt,ru,tr,zh}. Improves consistency and readability across translations.
2026-03-21 15:27:30 +02:00
oop7 62b8ede273 Add audio normalization docs and translations
Document Audio Normalization (EBU R128) in README and translated READMEs, and add corresponding localization keys and help text in ytsage language files. Updates include README.md, readme-translations (ar,de,es,fr,hi,id,it,ja,pl,pt,ru,tr,zh) and ytsage/languages JSON files to explain the feature and note that normalization requires re-encoding and forcing a specific audio format (e.g. MP3 or M4A).
2026-03-21 15:21:40 +02:00
oop7 b048f8ce09 Add audio normalization option and support
Introduce an "audio_normalization" option across the app and implement normalization for audio-only downloads. Updates include: add config default (ConfigManager), new language strings, settings UI checkbox + help text and logic to auto-enable force-audio-format when normalization is enabled, and persist the setting. Pass the setting from main app to DownloadThread, and in the downloader force re-encoding to mp3 when necessary and append --postprocessor-args ExtractAudio:-af loudnorm=... to apply EBU R128 normalization. This ensures normalization works reliably (avoids ffmpeg stream-copy errors) and keeps the behavior scoped to ExtractAudio postprocessor.
2026-03-21 15:08:48 +02:00
oop7 fff674a0b8 Add check_app_updates key to locales
Add a new "check_app_updates" translation string to multiple language files so the UI can display the option to check for YTSage updates at startup. Updated languages: ar, de, es, fr, hi, id, it, ja, pl, pt, ru, tr, zh.
2026-03-19 14:49:37 +02:00
oop7 4a16aad2ac Add check_app_updates setting and UI
Introduce a new "check_app_updates" configuration (default: true) to allow users to enable/disable automatic YTSage update checks. Adds a styled checkbox to the Updater tab with getter, loads the setting (defaults to enabled for older configs), and saves it from the custom options dialog. The main update check now respects this setting and will skip checking when disabled. Also include English localization entries for the new UI strings.
2026-03-19 14:45:56 +02:00
oop7 67dc1c83f2 Bump package version to 5.0.2b
Update ytsage.__version__ from 5.0.1b to 5.0.2b to mark the next beta release.
2026-03-19 14:34:37 +02:00
oop7 b43ed3212c Fix localized usage sections 2026-03-19 14:12:12 +02:00
oop7 9d1e83f7df Add README translations and language links
Add localized README files and update main README to expose them. Creates readme-translations/*.md (Arabic, German, Spanish, French, Hindi, Indonesian, Italian, Japanese, Polish, Portuguese, Russian, Turkish, Chinese) and adds a language list, README Translations table, and a "Contributing Translations" subsection to README.md so contributors can find and update localized docs.
2026-03-19 14:06:44 +02:00
oop7 fe828a5191 Reorganize README sections and update wording
Rename and restructure the options section: 'Advanced Options' becomes 'Media and Download Options', and new sections 'Output and File Settings', 'Access and Network', and 'Tools and Maintenance' are added. Clarify and reword items (subtitle embedding/merge, save thumbnail/description, trim video, speed limiter, proxy, cookie extraction), and consolidate updater/FFmpeg/yt-dlp/Deno detection and history/tooling notes. Documentation-only cleanup to improve clarity and discoverability of features.
2026-03-12 16:10:11 +02:00
oop7 c4c3e18b1b Document Generic Mode and add Sponsor section
Update README to document the new Optional Generic Mode: add a feature note, usage steps, troubleshooting notes (yt-dlp dependency, cookies/proxies), and a mention in Advanced Options and the features table. Also add a Sponsor anchor, nav link, and badge to the top navigation and About references. (Documentation-only changes)
2026-03-12 15:53:16 +02:00
oop7 64c9cf84da Bump version to 5.0.1b
Update project version from 5.0.0b5 to 5.0.1b in pyproject.toml and ytsage/__init__.py to reflect a new beta release.
2026-03-12 11:24:45 +02:00
oop7 9afca46c5d Add generic-mode URL validation and UI
Introduce a "generic_mode" option to allow validating/downloading from non-YouTube sites and wire it through the UI, config, and validation logic. Key changes:

- Add generic_mode default to ConfigManager and persist setting from DownloadSettingsDialog (checkbox + help text).
- Extend validate_video_url to accept a generic_mode flag and allow any http/https URL with a domain when enabled; pass this flag from Analysis and Download flows.
- Update YTSageApp to load/save generic_mode, update URL placeholder and settings tooltip behavior, and refresh tooltip when settings change.
- Improve robustness in FormatTableMixin: handle None/incorrect types for format_note, abr, resolution, ext, and codec values to avoid type errors and ensure consistent display.
- Add localization entries for generic mode, placeholder, and related help text across multiple language files and update the in-app default localization strings.

These changes enable broader site support via yt-dlp while hardening UI format handling and keeping user settings persistent.
2026-03-12 11:10:10 +02:00
oop7 518bd20e54 Bump version to 5.0.0
Promote package from beta to stable by updating version strings from 5.0.0b5 to 5.0.0 in pyproject.toml and ytsage/__init__.py. Prepares the project for the 5.0.0 release.
2026-03-07 20:58:31 +02:00
oop7 0078959be9 Merge branch 'beta' 2026-03-07 20:56:53 +02:00
oop7 a98dad0a33 Simplify link styling in About dialog
Update AboutDialog link markup to remove explicit font-size and font-weight styles and to unify link color. The author and repo links no longer set font-size, and the sponsor link color was changed from #ea4aaa to #c90000 (and its font-size/weight removed) for consistent appearance across links.
2026-03-03 18:00:03 +02:00
oop7 7bf4eec9fa Remove extra blank line in README badges
Delete an unintended blank line between badge entries in README.md to tighten badge layout and clean up formatting. No functional changes.
2026-03-03 17:53:14 +02:00