Commit Graph

504 Commits

Author SHA1 Message Date
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 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 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
oop7 86e0121a58 Adjust README badges' colors and order
Reorder and restyle README badges for consistent visual grouping. Several badges (downloads, license, supported platforms) were changed to a dark-gray color (1f2937) and grouped together, while GitHub Stars, PyPI version, and Sponsors badges were highlighted in red (c90000). This is a cosmetic update to improve badge contrast and layout.
2026-03-03 17:52:02 +02:00
oop7 1cfb106ccc Reorder badges in README.md
Move the PyPI version and License (MIT) badges down in the README header to improve grouping and visual flow of project badges (now placed after the GitHub Stars badge).
2026-03-03 17:48:42 +02:00
oop7 4775f827a0 Add sponsor link to About dialog
Add a styled '❤️ Sponsor' GitHub Sponsors link to the About dialog (ytsage_dialogs_base.py). The change creates a QLabel with an external href to the sponsor page, enables openExternalLinks, and appends it to the info layout so the About dialog displays a sponsor call-to-action.
2026-03-03 17:45:21 +02:00
oop7 c34f33cc7a Add GitHub Sponsors badge to README
Adds a GitHub Sponsors badge (via shields.io) to the README, linking to https://github.com/sponsors/oop7 to promote project sponsorship. Minor documentation/branding enhancement.
2026-03-03 17:45:06 +02:00
oop7 3de27938d0 Add separator and update manual install heading
Insert a horizontal rule before the Manual Installation section and update the section summary emoji/text from '🛠️ Manual Installation from Source' to '💻 Manual Installation from Source' for improved readability and consistency in the README.
2026-03-03 16:18:28 +02:00
oop7 51d43e38bf Add download link and remove duplicate
Insert a 'Download Latest Release' callout under the Pre-built Executables section and remove a duplicate link later in the README so there's a single prominent release download link.
2026-03-03 16:16:25 +02:00
oop7 0d8bf820ec Add installation and update instructions to README
Add collapsible (details/summary) sections with step-by-step installation and upgrade instructions: pip upgrade for updating, Windows installer/portable/FFmpeg options, Linux packages (deb/rpm/AppImage/Flatpak) with example commands, and macOS DMG/zip steps plus a troubleshooting note. Improves clarity and discoverability of install/update procedures for users.
2026-03-03 16:14:37 +02:00
oop7 6b6394b3b6 Zero-pad PyPI version to match GitHub tags
Normalize PyPI's version string (e.g. "2026.2.21") to the zero-padded GitHub tag format (e.g. "2026.02.21") before building the update target. The code splits a three-part version and pads the month/day components with two digits so stable@<tag> matches yt-dlp GitHub tagging.
2026-02-26 13:02:54 +02:00
oop7 026bd45c32 Bump project version to 5.0.0b5
Update pyproject.toml to change the project version from 4.9.7 to 5.0.0b5, marking a beta/pre-release for the upcoming 5.0 release cycle.
2026-02-10 14:45:35 +02:00
oop7 7490f1939b Update build-pypi.yml to set draft and prerelease options for GitHub release 2026-02-10 14:43:38 +02:00
oop7 a3abd3309f Bump ytsage version to 5.0.0b5
Update __version__ in ytsage/__init__.py from 5.0.0b4 to 5.0.0b5 to mark the next beta release.
2026-02-10 14:34:44 +02:00
oop7 a2c16bf793 Add Windows installer artifacts to CI docs
Update CI_CD_README.md to list the Windows installer outputs produced by the workflow: `YTSage-v{version}-Setup.exe` (standard installer) and `YTSage-v{version}-ffmpeg-Setup.exe` (FFmpeg bundle installer). This documents that the pipeline generates both portable zips and installer executables for Windows.
2026-02-10 14:33:25 +02:00
oop7 201d2fc8b6 Add Chinese, Hindi, Indonesian language files
Add unofficial translation files for Chinese Simplified, Hindi and Indonesian under setup-scripts/Languages/Unofficial. Also update Setup-windows.iss and Setup-windows-ffmpeg.iss to incorporate related installer changes.
2026-02-10 14:11:33 +02:00
oop7 c4e09cf433 About dialog: adjust loading text and style
Strip the 🔄 emoji from the localized loading string to avoid rendering issues and use the cleaned text for the QLabel. Tweak the label styling by changing the color from #cccccc to #888888 and removing the italic font-style for a more consistent appearance.
2026-02-10 13:54:18 +02:00
oop7 79f2613cf7 Add open_logs strings to localizations
Add open_logs and logs_tooltip localization entries across multiple language JSON files (ar, de, en, es, fr, hi, id, it, ja, pl, pt, ru, tr, zh) so the About/System Info UI can expose an action to open the application logs folder. Also add an "about" section to ytsage/utils/ytsage_localization.py with default entries (open_logs, logs_tooltip, refresh). This wires the logs-folder UI text into the localization system.
2026-02-10 13:50:22 +02:00
oop7 f33122fecd Add Open Logs button and simplify bug template
Add an 'Open Logs' button to the About dialog that opens the app log folder via QDesktopServices/QUrl, ensures the log directory exists, and logs warnings/errors. Include minimal styling and a handler (open_logs_folder) that uses APP_LOG_DIR and the logger. Also update settings dialog imports to include QUrl/QDesktopServices and APP_LOG_DIR. Simplify the bug report template to instruct users to open logs from the About dialog and attach ytsage.log / ytsage_error.log.
2026-02-10 13:50:03 +02:00
oop7 96cade3226 Add PyPI build workflow and docs
Introduce a new GitHub Actions workflow (build-pypi.yml) to build Python Wheel and Source Distribution and upload them as release assets. Integrate the PyPI job into the release-all workflow and update .github/CI_CD_README.md to document the PyPI artifacts and the new build-pypi.yml entry. The workflow uses Python 3.13, installs build tooling, runs build_release.py, and uploads dist/* via softprops/action-gh-release.
2026-02-08 19:39:18 +02:00
oop7 04e043c689 Add app update strings to translations
Add 'app_updates_title' and 'check_beta_updates' translation keys to language files (ar, de, es, fr, hi, id, it, ja, pl, pt, ru, tr, zh). These localized strings support the app updates settings UI (including an option to receive beta updates) and keep translations consistent with the existing auto-update-related entries.
2026-02-08 17:43:24 +02:00
oop7 d250c1b05f Add opt-in beta update UI and checks
Introduce an opt-in beta updates feature: add a styled "Receive Beta Updates" checkbox in the Updater UI with i18n strings, load/save logic in the custom options dialog, and a default config key (check_beta_updates=false).

Add _fetch_github_beta_version to the update thread to query GitHub releases (selecting the highest tag) and emit update_available for newer beta builds. When beta checking is enabled, the thread will perform the GitHub beta check and return early to avoid conflicting with the PyPI check. This enables users to opt into preview releases safely.
2026-02-08 17:41:13 +02:00
oop7 d2bc08e937 Bump package version to 5.0.0b4
Update __version__ in ytsage/__init__.py from 5.0.0b3 to 5.0.0b4 to mark the next beta release.
2026-02-07 19:15:07 +02:00
oop7 3d5dfd6d48 Add Inno Setup installers and build step
Add Inno Setup compilation to the Windows CI: the workflow now installs Inno Setup via choco, adjusts PATH, and runs iscc to compile two installers (standard and -ffmpeg) using /DMyAppVersion,/DMyAppExeName and /DSourceDir, placing outputs into repo/artifacts and failing the job on non-zero exit. Also add two new Inno Setup scripts in setup-scripts/: Setup-windows.iss and Setup-windows-ffmpeg.iss. The scripts include metadata, multi-language support, file/icon/registry/run entries, and Pascal code to create or update the user's ytsage_config.json language setting; the -ffmpeg script adds an optional task to append the app folder to the user's PATH.
2026-02-07 19:13:47 +02:00
oop7 9f1381d27e Update format table directly from analysis
Stop storing result_data["all_formats"] on the mixin and instead call update_format_table(result_data["all_formats"]). Replaces the previous filter_formats() call so the format table is populated directly from the fresh analysis result, avoiding reliance on a separate self.all_formats attribute.
2026-02-07 19:01:37 +02:00
oop7 c8ecdf8eb6 Fix PyPI badge link and add platform badge
Update README badges: change the PyPI badge URL to the official PyPI project page (pypi.org) and add a 'Supported Platforms' badge indicating cross-platform support (linked to releases). This improves badge accuracy and highlights platform compatibility in the project README.
2026-02-07 16:03:39 +02:00
oop7 351504ade9 Add reset and filename_format translations
Add a "reset" button label and new "filename_format" + "filename_format_help" entries to multiple locale JSON files (ar, de, es, fr, hi, id, it, ja, pl, pt, ru, tr, zh). The help text documents supported yt-dlp output template variables (%(title)s, %(uploader)s, %(upload_date)s, %(resolution)s, %(id)s, %(ext)s) so the UI can accept a custom output filename format.
2026-02-07 15:55:10 +02:00
oop7 40069c039a Clarify README UI labels
Update README text to reflect UI label changes: 'Force Output Format' now points to 'Download Settings → Output Format Settings', and 'Download History' instructs users to click the 'History' button. Improves accuracy of guidance in the docs.
2026-02-07 15:48:11 +02:00
oop7 b1d0034537 Increase help label font size to 11px
Bump help text font-size from 10px to 11px in DownloadSettingsDialog for improved readability. Updated style for force format, audio format, and filename format help labels in ytsage/gui/ytsage_gui_dialogs/ytsage_dialogs_settings.py.
2026-02-07 15:40:37 +02:00
oop7 1fbc3a43c2 Add Reset button for filename format
Add a Reset button next to the filename format input so users can restore the default pattern. The filename input and reset button are grouped in a QHBoxLayout; the button is fixed width (70) and sets the field back to the default %(title)s_%(resolution)s.%(ext)s. Also add the corresponding i18n key (buttons.reset -> "Reset") to en.json.
2026-02-07 15:37:26 +02:00
oop7 656a77f943 Document Output Filename Format option
Add a README entry describing the new Output Filename Format setting under Download Settings, showing example variables such as %(title)s, %(uploader)s, and %(resolution)s so users can customize downloaded filenames.
2026-02-07 15:29:42 +02:00