Skip to content

oop7/YTSage

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

496 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

ytsage-wordmark YTSage Interface

Python 3.10+ PyPI Downloads GitHub Downloads License: MIT Supported Platforms GitHub Stars PyPI version GitHub Sponsors

A modern YouTube downloader with a clean PySide6 interface.
Download videos in any quality, extract audio, fetch subtitles, and more.

Installation โ€ข Features โ€ข Usage โ€ข Screenshots โ€ข Troubleshooting โ€ข Contributing


โ“ Why YTSage?

YTSage is designed for users who want a simple yet powerful YouTube downloader. Unlike other tools, it offers:

  • A clean, modern PySide6 interface
  • One-click downloads for video, audio, and subtitles
  • Advanced features like SponsorBlock, subtitle merging, and playlist selection
  • Cross-platform support and easy installation

โœจ Features

Core Features Advanced Features Extra Features
๐ŸŽฅ Format Table ๐Ÿšซ SponsorBlock Integration ๐ŸŽž๏ธ FPS/HDR Display
๐ŸŽต Audio Extraction ๐Ÿ“ Multi-Subtitle Select & Merge ๐Ÿ”„ Auto-Update yt-dlp
โœจ Simple UI ๐Ÿ’พ Save Description & Thumbnail ๐Ÿ› ๏ธ FFmpeg/yt-dlp/Deno Detection
๐Ÿ“‹ Playlist Support & Selector ๐Ÿš€ Speed Limiter โš™๏ธ Custom Commands
๐Ÿ“‘ Embed Chapters โœ‚๏ธ Trim Video Sections ๐Ÿช Login with Cookies
๐Ÿ“œ Download History ๐Ÿ”„ Release Channel Selection ๐ŸŒ Proxy Support
๐ŸŽš๏ธ Audio Format Conversion ๐ŸŽฌ Video Format Settings ๐Ÿ†™ Built-in Updater Tab

๐Ÿš€ Installation

โšก Quick Install (Recommended)

Install YTSage from PyPI:

pip install ytsage
๐Ÿ”„ Update an existing installation
pip install --upgrade ytsage

Then launch the app:

ytsage

๐Ÿ“ฆ Pre-built Executables

๐Ÿ‘‰ Download Latest Release

๐ŸชŸ Windows

Format Description
Windows EXE Standard installer
Windows FFmpeg With FFmpeg bundled
Windows Portable Portable version, no installation required
Windows Portable FFmpeg Portable with FFmpeg, zipped
๐Ÿ› ๏ธ Installation Steps
  1. EXE Installer (.exe): Double-click the file and follow the setup wizard.
  2. Portable Version (.zip): Extract the archive to your desired location and run ytsage.exe.
  3. FFmpeg Bundled: Choose the FFmpeg bundled versions if you don't have FFmpeg installed on your system.

๐Ÿง Linux

Format Description
Linux DEB Debian package
Linux AppImage AppImage, portable
Linux RPM RPM package
Flathub Flatpak Bundle
๐Ÿ› ๏ธ Installation Steps
  • DEB (.deb):
    sudo dpkg -i ytsage_*.deb
    sudo apt-get install -f # Fix missing dependencies if any
  • RPM (.rpm):
    sudo rpm -i ytsage-*.rpm
  • AppImage (.AppImage):
    chmod +x YTSage-*.AppImage
    ./YTSage-*.AppImage
  • Flatpak: Follow instructions on Flathub or run:
    flatpak install flathub io.github.oop7.ytsage

๐ŸŽ macOS

Format Description
macOS ARM64 APP Zipped application for Apple Silicon
macOS ARM64 DMG Disk image installer for Apple Silicon
๐Ÿ› ๏ธ Installation Steps
  • DMG Installer (.dmg): Double-click to mount, then drag YTSage.app into your Applications folder.
  • App Archive (.zip): Extract the zip and move YTSage.app to your Applications folder.

Note: If you encounter an "App is damaged" error, see the macOS troubleshooting section below.


๐Ÿ’ป Manual Installation from Source

1. Clone the Repository

git clone https://github.com/oop7/YTSage.git
cd YTSage

2. Install Dependencies

โšก With uv

uv pip install .

๐Ÿ“ฆ Or with standard pip

pip install .

3. Run the Application

python -m ytsage.main

๐Ÿ“ธ Screenshots

Download Settings Playlist Download
Download Settings Playlist Download
Audio Format Selection with Save Thumbnail Custom Options
Audio Format Custom Options

๐Ÿ“– Usage

๐ŸŽฏ Basic Usage
  1. Launch YTSage
  2. Paste YouTube URL (or use "Paste URL" button)
  3. Click "Analyze"
  4. Select Format:
    • Video for video downloads
    • Audio Only for audio extraction
  5. Choose Options:
    • Enable subtitles & select language
    • Enable subtitle merge
    • Save thumbnail
    • Remove sponsor segments
    • Save description
    • Embed chapters
  6. Select Output Directory
  7. Click "Download"

๐Ÿ’ก The default download directory is the user's "Downloads" folder.

๐Ÿ“‹ Playlist Download
  1. Paste Playlist URL
  2. Click "Analyze"
  3. Select videos from the playlist selector (optional, defaults to all)
  4. Choose desired format/quality
  5. Click "Download"

๐Ÿ’ก The application automatically handles the download queue

๐Ÿงฐ Advanced Options
  • Subtitle Options: Filter languages and embed into video file
  • Subtitle Merge: Merge subtitles into video file for hardcoded subtitles
  • Custom Commands: Access advanced yt-dlp features via command line arguments
  • Save Description: Save the description of the video as a text file
  • Save Thumbnail: Save the thumbnail of the video as an image file
  • Embed Chapters: Embed chapter markers as metadata in the downloaded video file for compatible video players
  • Remove Sponsor Segments: Remove sponsor segments from the video using SponsorBlock
  • Speed Limiter: Limit the download speed (e.g., 500K for 500 KB/s)
  • Login with Cookies: Login to YouTube using cookies to access private content
    How to use it:
    1. Recommended: Use the built-in "Extract cookies from browser" option in the app. Select your browser (Chrome, Firefox, etc.) and then select Profile (optional).
    2. Alternatively, extract cookies manually: a. Extract cookies from your browser using an extension like cookie-editor b. Copy the cookies in Netscape format c. Create a file named cookies.txt and paste the cookies into it d. Select the cookies.txt file in the app
  • Save Download Path: Save the default download path for future downloads. Available in Download Settings โ†’ Download Path.
  • Output Filename Format: Customize the output filename format using variables like %(title)s, %(uploader)s, %(resolution)s, etc. Available in Download Settings โ†’ Filename Format.
  • Updater Tab: Unified tab in Custom Options for managing all updates:
    • yt-dlp Updates: Check and update yt-dlp to the latest version, with release channel selection (Stable/Nightly)
    • FFmpeg Version Checker: Check your FFmpeg version with direct links to installation guides
    • Deno Updates: Check and update Deno runtime to the latest version
  • FFmpeg/yt-dlp/Deno Detection: Automatically detect FFmpeg/yt-dlp/Deno path and version. You can use this option by clicking on about button.
  • Trim Video: Download only specific parts of a video by specifying time ranges (HH:MM:SS format)
  • Proxy Support: Use a proxy server for downloads (e.g., http://<proxy-server>:<port>)
  • Force Output Format: Force video downloads in a specific container format (e.g., mp4, webm, mkv). Available in Download Settings โ†’ Output Format Settings.
  • Audio Format Conversion: Convert audio-only downloads to preferred formats (AAC, MP3, FLAC, WAV, Opus, M4A, Vorbis, or Best). Ideal for video editing software like DaVinci Resolve. Available in Download Settings โ†’ Audio Format Settings.
  • Download History: View past downloads with thumbnails and statuses. You can use this option by clicking on the History button.
๐ŸŒ Localization

YTSage supports 14 languages for worldwide accessibility. Select your preferred language from Custom Options โ†’ Language.

Supported Languages

Language Code Language Code
๐Ÿ‡บ๐Ÿ‡ธ English en ๐Ÿ‡ช๐Ÿ‡ธ Spanish es
๐Ÿ‡ธ๐Ÿ‡ฆ Arabic ar ๐Ÿ‡ซ๐Ÿ‡ท French fr
๐Ÿ‡ฉ๐Ÿ‡ช German de ๐Ÿ‡ฎ๐Ÿ‡ณ Hindi hi
๐Ÿ‡ฎ๐Ÿ‡ฉ Indonesian id ๐Ÿ‡ฎ๐Ÿ‡น Italian it
๐Ÿ‡ฏ๐Ÿ‡ต Japanese ja ๐Ÿ‡ต๐Ÿ‡ฑ Polish pl
๐Ÿ‡ง๐Ÿ‡ท Portuguese pt ๐Ÿ‡ท๐Ÿ‡บ Russian ru
๐Ÿ‡น๐Ÿ‡ท Turkish tr ๐Ÿ‡จ๐Ÿ‡ณ Chinese zh

๐Ÿ’ก Want to contribute a translation? Check out the Contributing section to help us add more languages!

๐Ÿ› ๏ธ Troubleshooting

Click to view common issues and solutions
  • Format table not displaying: Update yt-dlp to the latest version, and switch to yt-dlp nightly.
  • Download fails: Check your internet connection and ensure the video is available.
  • Specific download errors:
    • Private videos: Use cookie authentication to access private content.
    • Age-restricted content: Login to YouTube account to view age-restricted videos.
    • Geo-blocked videos: Consider using a VPN to bypass regional restrictions.
    • Removed/deleted videos: Video is no longer available on YouTube.
    • Live streams: Live streams cannot be downloaded; wait for the stream to end.
    • Network errors: Check your internet connection and try again.
    • Invalid URLs: Ensure the URL is correct and from a supported platform.
    • Premium content: Requires YouTube Premium membership.
    • Copyright blocks: Content is blocked due to copyright restrictions.
  • Separate video and audio files after download: This happens when FFmpeg is missing or not detected. YTSage requires FFmpeg to merge high-quality video and audio streams.
    • Solution: Ensure FFmpeg is installed and accessible in your system's PATH. For Windows users, the easiest option is to download the YTSage-v<version>-ffmpeg.exe file, which comes bundled with FFmpeg.

๐Ÿ›ก๏ธ Windows Defender / Antivirus Warning

Some antivirus software may flag the .exe files as false positives. This is a known limitation of packaged applications.

Why this happens:

  • Antivirus heuristics can misidentify packed executables as suspicious

Safe alternatives:

  • โœ… Use pip installation: pip install ytsage (recommended)
  • โœ… Build from source: by following this guide
  • โœ… Whitelist the application in your antivirus software

๐ŸŽ macOS: "App is damaged and canโ€™t be opened"

If you see this error on macOS Sonoma or newer, you need to remove the quarantine attribute.

  1. Open Terminal (you can find it using Spotlight).
  2. Type the following command but do not press Enter yet. Make sure to include the space at the end:
    xattr -d com.apple.quarantine 
  3. Drag the YTSage.app file from your Finder window and drop it directly into the Terminal window. This will automatically paste the correct file path.
  4. Press Enter to run the command.
  5. Try opening YTSage.app again. It should now launch correctly.

Configuration Locations (Advanced)

  • Windows: %LOCALAPPDATA%\YTSage
  • macOS: ~/Library/Application Support/YTSage
  • Linux: ~/.local/share/YTSage

๐Ÿ‘ฅ Contributing

We welcome contributions! Here's how you can help:

  1. ๐Ÿด Fork the repository
  2. ๐ŸŒฟ Create your feature branch:
git checkout -b feature/AmazingFeature
  1. ๐Ÿ’พ Commit your changes:
git commit -m 'Add some AmazingFeature'
  1. ๐Ÿ“ค Push to the branch:
git push origin feature/AmazingFeature
  1. ๐Ÿ”„ Open a Pull Request
๐Ÿ“‚ Project Structure

YTSage - Project Structure

This document describes the organized folder structure of YTSage.

๐Ÿ“ Project Structure

YTSage/
โ”œโ”€โ”€ ๐Ÿ“ .github/                   # GitHub configuration
โ”‚   โ”œโ”€โ”€ ๐Ÿ“ ISSUE_TEMPLATE/         # Issue templates
โ”‚   โ”‚   โ””โ”€โ”€ ๐Ÿ›-bug-report.md       # Bug report template
โ”‚   โ”œโ”€โ”€โ”€ ๐Ÿ“ workflows/              # GitHub Actions workflows
โ”‚   โ”‚   โ”œโ”€โ”€ build-linux.yml        # Linux build workflow
โ”‚   โ”‚   โ”œโ”€โ”€ build-macos.yml        # macOS build workflow
โ”‚   โ”‚   โ”‚โ”€โ”€ build-windows.yml      # Windows build workflow
|   |   โ””โ”€โ”€ release-all.yml          # Master release workflow
โ”‚   โ””โ”€โ”€ ๐Ÿ“„ CI_CD_README.md        # CI/CD documentation
โ”œโ”€โ”€  ๐Ÿ“ branding/                 # Branding assets (Screenshots, SVGs)
โ”‚   โ”œโ”€โ”€ ๐Ÿ“ icons/                 # Application icons
โ”‚   โ”œโ”€โ”€ ๐Ÿ“ screenshots/           # Screenshots for documentation
โ”‚   โ””โ”€โ”€ ๐Ÿ“ svg/                   # SVG assets
โ”œโ”€โ”€ ๐Ÿ“„ LICENSE                    # License file
โ”œโ”€โ”€ ๐Ÿ“„ pyproject.toml             # Project metadata and dependencies
โ”œโ”€โ”€ ๐Ÿ“„ README.md                  # Project documentation
โ”œโ”€โ”€ ๐Ÿ“„ requirements.txt           # Python dependencies (dev)
โ””โ”€โ”€ ๐Ÿ“ ytsage/                    # Source package
    โ”œโ”€โ”€ ๐Ÿ“ assets/                # Runtime assets
    โ”‚   โ”œโ”€โ”€ ๐Ÿ“ Icon/              # Application icons
    โ”‚   โ””โ”€โ”€ ๐Ÿ“ sound/             # Audio files
    โ”œโ”€โ”€ ๐Ÿ“ languages/             # Localization files
    โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ ar.json            # Arabic translation
    โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ de.json            # German translation
    โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ en.json            # English translation
    โ”‚   โ””โ”€โ”€ ...                   # Other languages
    โ”œโ”€โ”€ ๐Ÿ“ core/                  # Core business logic
    โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ __init__.py        # Core package init
    โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ ytsage_deno.py     # Deno integration
    โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ ytsage_downloader.py # Download functionality
    โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ ytsage_ffmpeg.py   # FFmpeg integration
    โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ ytsage_utils.py    # Utility functions
    โ”‚   โ””โ”€โ”€ ๐Ÿ“„ ytsage_yt_dlp.py   # yt-dlp integration
    โ”œโ”€โ”€ ๐Ÿ“ gui/                   # User interface components
    โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ __init__.py        # GUI package init
    โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ ytsage_gui_main.py # Main application window
    โ”‚   โ””โ”€โ”€ ๐Ÿ“ ytsage_gui_dialogs/ # Dialog classes
    โ”œโ”€โ”€ ๐Ÿ“ utils/                 # Utility modules
    โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ __init__.py        # Utils package init
    โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ ytsage_config_manager.py # Configuration management
    โ”‚   โ””โ”€โ”€ ๐Ÿ“„ ytsage_logger.py   # Logging utilities
    โ”œโ”€โ”€ ๐Ÿ“„ __init__.py            # Package entry point
    โ””โ”€โ”€ ๐Ÿ“„ main.py                # Main execution script

โญ๏ธ Star History

Star History

Star History Chart

๐Ÿ“œ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments

Show Acknowledgments

A heartfelt thank you to everyone who has contributed to this project by opening an issue to suggest an improvement or report a bug.

Core Components
yt-dlp Download Engine
FFmpeg Media Processing
Deno Runtime for integration with yt-dlp
Libraries & Frameworks
PySide6 GUI Framework
Pillow Image Processing
requests HTTP Requests
packaging Version & Package Handling
markdown Markdown Rendering
loguru Logging
Assets & Contributors
New Notification 09 by Universfield Notification Sound
viru185 Code Contributor

โš ๏ธ Disclaimer

This tool is for personal use only. Please respect YouTube's terms of service and content creators' rights.


Made with โค๏ธ by oop7

About

Modern YouTube downloader with a clean PySide6 interface. Download videos in any quality, extract audio, fetch subtitles, sponsorBlock, and view video metadata. Built with yt-dlp for reliable performance.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Contributors