YTSage


NameYTSage JSON
Version 3.5.0 PyPI version JSON
download
home_pagehttps://github.com/oop7/YTSage
SummaryModern YouTube downloader with a clean PySide6 interface. Download videos in any quality, extract audio, fetch subtitles (including auto-generated), and view video metadata. Built with yt-dlp for reliable performance.
upload_time2025-01-30 14:07:22
maintainerNone
docs_urlNone
authoroop7
requires_python>=3.7
licenseMIT License
keywords
VCS
bugtrack_url
requirements PySide6 yt-dlp requests pillow packaging
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # YTSage

A modern YouTube downloader with a clean PySide6 interface. Download videos in any quality, extract audio, fetch subtitles (including auto-generated), and view video metadata. Built with yt-dlp for reliable performance.

## Screenshots

### Main Interface

![Main Interface](https://github.com/user-attachments/assets/04959c77-695b-4a69-b8fc-7103fe530236)

*Main interface with video metadata and thumbnail preview*

### Playlist download support with auto-detection

![Playlist download](https://github.com/user-attachments/assets/537b8553-9657-42b2-a452-051c4cb2e32a)

*Playlist download with auto-detection*
### Audio Format Selection

![Audio Format](https://github.com/user-attachments/assets/51a6a613-6c97-4581-b728-38c91c0b2d24)

*Smart format selection with quality options*

### Subtitle Options

![Subtitle Options](https://github.com/user-attachments/assets/4e8c686f-98e2-435a-add8-758e317b56fe)

*Support for both manual and auto-generated subtitles*

## Features

- đŸŽĨ Smart video quality selection with automatic audio merging
- đŸŽĩ Audio-only extraction
- 📝 Manual and auto-generated subtitle support with language filtering
- â„šī¸ Video metadata display (views, upload date, duration)
- đŸ–ŧī¸ Thumbnail preview
- 🎨 Clean, modern PySide6 interface
- 🚀 Built on yt-dlp for robust downloading
- â¯ī¸ Download control (pause, resume, and cancel)
- 📊 Real-time progress tracking (speed, ETA, percentage)
- 📝 Built-in yt-dlp log viewer
- âš™ī¸ Custom yt-dlp command support with real-time output
- 📋 Playlist download support with auto-detection
- 💾 Save download path memory
- 🔄 One-click yt-dlp updater
- âš ī¸ User-friendly error messages
- đŸ› ī¸ FFmpeg installation checker and guide
- 📎 Quick URL paste button
- đŸŽ¯ Smart format filtering (Video/Audio)

## Download

You can download the latest executable from the [Releases](https://github.com/oop7/YTSage/releases) page.

### Pre-built Executables
- Windows: `YTSage.exe`
- macOS: `YTSage.app`
- Linux: `YTSage.AppImage`
- No installation required - just download and run!

### PyPI Package
You can also install YTSage directly from PyPI:
```bash
pip install YTSage
```


### Installation

1. Clone the repository:
```bash
git clone https://github.com/oop7/YTSage.git

cd YTSage
```
2. Install the required dependencies:
```bash
pip install -r requirements.txt
```
3. Run the application:
```bash
python YTSage.py
```

# Usage

1. **Run the application**  
2. **Paste a YouTube URL** into the input field  
3. **Click "Analyze"** to load video information  
4. **Select your desired format**:  
   - Choose **"Video"** for video downloads (will automatically merge with best audio)  
   - Choose **"Audio Only"** for audio extraction  
5. **Enable subtitle download** if needed  
6. **Select the output directory**  
7. **Click "Download"** to start  

---

### Additional Steps for Playlist Download:

1. **Paste the Playlist URL**: Instead of a single video URL, paste the URL of the entire YouTube playlist into the input field.  
2. **Analyze the Playlist**: Click "Analyze" to load information for all videos in the playlist.  
3. **Select Best Quality**: Ensure that the best quality option is selected for both video and audio.  
4. **Download the Playlist**: Click "Download" to start downloading all videos in the playlist. The application should automatically handle the download queue.  

---

### Note:  
- **Best Quality**: Always select the highest available resolution (e.g., 1080p, 4K) for video and the best audio format (e.g., 320kbps) for the best experience.  
- **Subtitle Download**: If you need subtitles, enable this option before starting the download.  
- **Output Directory**: Choose a directory with enough storage space, especially for large playlists.  

By following these steps, you can efficiently download entire playlists in the best quality without encountering issues.  

## Requirements

- Python 3.7+
- PySide6
- yt-dlp
- Pillow
- requests
- ffmpeg
- packaging

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

1. Fork the repository
2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## Acknowledgments

- [yt-dlp](https://github.com/yt-dlp/yt-dlp) for the powerful downloading engine
- [PySide6](https://en.wikipedia.org/wiki/PySide) for the GUI framework
- [FFmpeg](https://ffmpeg.org/) for the audio and video processing
- [Pillow](https://pypi.org/project/Pillow/) for the image processing
- [requests](https://pypi.org/project/requests/) for the HTTP requests
- [packaging](https://pypi.org/project/packaging/) for the package management
- [PyInstaller](https://pypi.org/project/PyInstaller/) for the executable creation

## Disclaimer

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

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/oop7/YTSage",
    "name": "YTSage",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": null,
    "author": "oop7",
    "author_email": "oop7 <oop7_support@proton.me>",
    "download_url": "https://files.pythonhosted.org/packages/c5/fb/642150e52e34b4c3028dde1ad265356b4ef0498d8e9f7c641e946da5f861/ytsage-3.5.0.tar.gz",
    "platform": null,
    "description": "# YTSage\r\n\r\nA modern YouTube downloader with a clean PySide6 interface. Download videos in any quality, extract audio, fetch subtitles (including auto-generated), and view video metadata. Built with yt-dlp for reliable performance.\r\n\r\n## Screenshots\r\n\r\n### Main Interface\r\n\r\n![Main Interface](https://github.com/user-attachments/assets/04959c77-695b-4a69-b8fc-7103fe530236)\r\n\r\n*Main interface with video metadata and thumbnail preview*\r\n\r\n### Playlist download support with auto-detection\r\n\r\n![Playlist download](https://github.com/user-attachments/assets/537b8553-9657-42b2-a452-051c4cb2e32a)\r\n\r\n*Playlist download with auto-detection*\r\n### Audio Format Selection\r\n\r\n![Audio Format](https://github.com/user-attachments/assets/51a6a613-6c97-4581-b728-38c91c0b2d24)\r\n\r\n*Smart format selection with quality options*\r\n\r\n### Subtitle Options\r\n\r\n![Subtitle Options](https://github.com/user-attachments/assets/4e8c686f-98e2-435a-add8-758e317b56fe)\r\n\r\n*Support for both manual and auto-generated subtitles*\r\n\r\n## Features\r\n\r\n- \ud83c\udfa5 Smart video quality selection with automatic audio merging\r\n- \ud83c\udfb5 Audio-only extraction\r\n- \ud83d\udcdd Manual and auto-generated subtitle support with language filtering\r\n- \u2139\ufe0f Video metadata display (views, upload date, duration)\r\n- \ud83d\uddbc\ufe0f Thumbnail preview\r\n- \ud83c\udfa8 Clean, modern PySide6 interface\r\n- \ud83d\ude80 Built on yt-dlp for robust downloading\r\n- \u23ef\ufe0f Download control (pause, resume, and cancel)\r\n- \ud83d\udcca Real-time progress tracking (speed, ETA, percentage)\r\n- \ud83d\udcdd Built-in yt-dlp log viewer\r\n- \u2699\ufe0f Custom yt-dlp command support with real-time output\r\n- \ud83d\udccb Playlist download support with auto-detection\r\n- \ud83d\udcbe Save download path memory\r\n- \ud83d\udd04 One-click yt-dlp updater\r\n- \u26a0\ufe0f User-friendly error messages\r\n- \ud83d\udee0\ufe0f FFmpeg installation checker and guide\r\n- \ud83d\udcce Quick URL paste button\r\n- \ud83c\udfaf Smart format filtering (Video/Audio)\r\n\r\n## Download\r\n\r\nYou can download the latest executable from the [Releases](https://github.com/oop7/YTSage/releases) page.\r\n\r\n### Pre-built Executables\r\n- Windows: `YTSage.exe`\r\n- macOS: `YTSage.app`\r\n- Linux: `YTSage.AppImage`\r\n- No installation required - just download and run!\r\n\r\n### PyPI Package\r\nYou can also install YTSage directly from PyPI:\r\n```bash\r\npip install YTSage\r\n```\r\n\r\n\r\n### Installation\r\n\r\n1. Clone the repository:\r\n```bash\r\ngit clone https://github.com/oop7/YTSage.git\r\n\r\ncd YTSage\r\n```\r\n2. Install the required dependencies:\r\n```bash\r\npip install -r requirements.txt\r\n```\r\n3. Run the application:\r\n```bash\r\npython YTSage.py\r\n```\r\n\r\n# Usage\r\n\r\n1. **Run the application**  \r\n2. **Paste a YouTube URL** into the input field  \r\n3. **Click \"Analyze\"** to load video information  \r\n4. **Select your desired format**:  \r\n   - Choose **\"Video\"** for video downloads (will automatically merge with best audio)  \r\n   - Choose **\"Audio Only\"** for audio extraction  \r\n5. **Enable subtitle download** if needed  \r\n6. **Select the output directory**  \r\n7. **Click \"Download\"** to start  \r\n\r\n---\r\n\r\n### Additional Steps for Playlist Download:\r\n\r\n1. **Paste the Playlist URL**: Instead of a single video URL, paste the URL of the entire YouTube playlist into the input field.  \r\n2. **Analyze the Playlist**: Click \"Analyze\" to load information for all videos in the playlist.  \r\n3. **Select Best Quality**: Ensure that the best quality option is selected for both video and audio.  \r\n4. **Download the Playlist**: Click \"Download\" to start downloading all videos in the playlist. The application should automatically handle the download queue.  \r\n\r\n---\r\n\r\n### Note:  \r\n- **Best Quality**: Always select the highest available resolution (e.g., 1080p, 4K) for video and the best audio format (e.g., 320kbps) for the best experience.  \r\n- **Subtitle Download**: If you need subtitles, enable this option before starting the download.  \r\n- **Output Directory**: Choose a directory with enough storage space, especially for large playlists.  \r\n\r\nBy following these steps, you can efficiently download entire playlists in the best quality without encountering issues.  \r\n\r\n## Requirements\r\n\r\n- Python 3.7+\r\n- PySide6\r\n- yt-dlp\r\n- Pillow\r\n- requests\r\n- ffmpeg\r\n- packaging\r\n\r\n## Contributing\r\n\r\nContributions are welcome! Please feel free to submit a Pull Request.\r\n\r\n1. Fork the repository\r\n2. Create your feature branch (`git checkout -b feature/AmazingFeature`)\r\n3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)\r\n4. Push to the branch (`git push origin feature/AmazingFeature`)\r\n5. Open a Pull Request\r\n\r\n## License\r\n\r\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\r\n\r\n## Acknowledgments\r\n\r\n- [yt-dlp](https://github.com/yt-dlp/yt-dlp) for the powerful downloading engine\r\n- [PySide6](https://en.wikipedia.org/wiki/PySide) for the GUI framework\r\n- [FFmpeg](https://ffmpeg.org/) for the audio and video processing\r\n- [Pillow](https://pypi.org/project/Pillow/) for the image processing\r\n- [requests](https://pypi.org/project/requests/) for the HTTP requests\r\n- [packaging](https://pypi.org/project/packaging/) for the package management\r\n- [PyInstaller](https://pypi.org/project/PyInstaller/) for the executable creation\r\n\r\n## Disclaimer\r\n\r\nThis tool is for personal use only. Please respect YouTube's terms of service and content creators' rights.\r\n",
    "bugtrack_url": null,
    "license": "MIT License",
    "summary": "Modern YouTube downloader with a clean PySide6 interface. Download videos in any quality, extract audio, fetch subtitles (including auto-generated), and view video metadata. Built with yt-dlp for reliable performance.",
    "version": "3.5.0",
    "project_urls": {
        "Homepage": "https://github.com/oop7/YTSage"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1553b54bc95b3cdc3203fcd530e1b1f49b9318e0d3fb7c146b48511a0901b354",
                "md5": "2daa8a2ffb1b43b3e5fc8cfec302c85b",
                "sha256": "1d4bf60492b654381ca8045bc9c1b85902bd91a1754a7d4eee47dec0dd7316da"
            },
            "downloads": -1,
            "filename": "YTSage-3.5.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "2daa8a2ffb1b43b3e5fc8cfec302c85b",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 17633,
            "upload_time": "2025-01-30T14:07:20",
            "upload_time_iso_8601": "2025-01-30T14:07:20.102717Z",
            "url": "https://files.pythonhosted.org/packages/15/53/b54bc95b3cdc3203fcd530e1b1f49b9318e0d3fb7c146b48511a0901b354/YTSage-3.5.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c5fb642150e52e34b4c3028dde1ad265356b4ef0498d8e9f7c641e946da5f861",
                "md5": "9d0035a810c91b307175aed25e3d9571",
                "sha256": "f327258084deb8f91a7a1180b800543c6f7e56563b9a6301dcd1fd7b080ec2bc"
            },
            "downloads": -1,
            "filename": "ytsage-3.5.0.tar.gz",
            "has_sig": false,
            "md5_digest": "9d0035a810c91b307175aed25e3d9571",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 20321,
            "upload_time": "2025-01-30T14:07:22",
            "upload_time_iso_8601": "2025-01-30T14:07:22.577017Z",
            "url": "https://files.pythonhosted.org/packages/c5/fb/642150e52e34b4c3028dde1ad265356b4ef0498d8e9f7c641e946da5f861/ytsage-3.5.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-01-30 14:07:22",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "oop7",
    "github_project": "YTSage",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "PySide6",
            "specs": []
        },
        {
            "name": "yt-dlp",
            "specs": []
        },
        {
            "name": "requests",
            "specs": []
        },
        {
            "name": "pillow",
            "specs": []
        },
        {
            "name": "packaging",
            "specs": []
        }
    ],
    "lcname": "ytsage"
}
        
Elapsed time: 1.73490s