---
## ❓ Почему YTSage?
YTSage предназначен для пользователей, которым нужен **простой, но мощный загрузчик YouTube**. В отличие от других инструментов, он предлагает:
- Чистый, современный интерфейс PySide6.
- Загрузка видео, аудио и субтитров в один клик.
- Расширенные функции, такие как SponsorBlock, объединение субтитров и выбор списка воспроизведения.
– Дополнительный общий режим для сайтов, поддерживаемых yt-dlp, за пределами YouTube.
- Кроссплатформенная поддержка и простота установки.
## ✨ Особенности
| Основные возможности | Расширенные возможности | Дополнительные возможности |
|-----------------------------------|-----------------------------------------|------------------------------------|
| 🎥 Формат таблицы | 🚫 Интеграция SponsorBlock | 🎞️ Отображение FPS/HDR |
| 🎵 Извлечение аудио | 📝 Выбор и объединение нескольких субтитров | 🔄 Автоматическое обновление yt-dlp |
| ✨ Простой интерфейс | 💾 Сохранить описание и миниатюру | 🛠️ Обнаружение FFmpeg/yt-dlp/Deno |
| 📋 Поддержка и выбор плейлистов | 🚀 Ограничитель скорости | ⚙️ Пользовательские команды |
| 📑 Встроить главы | ✂️ Обрезать разделы видео | 🍪 Вход с помощью файлов cookie |
| 📜 История загрузок | 🔄 Выбор канала выпуска | 🌐 Поддержка прокси |
| 🎚️ Преобразование аудиоформатов | 🎬 Настройки формата видео | 🆙 Встроенная вкладка «Обновление» |
| 🌍 Общий режим |
| 🌍 Локализация на 14 языках | |
## 🚀 Установка
### ⚡ Быстрая установка (рекомендуется)
Установите YTSage из PyPI:
```bash
pip install ytsage
```
🔄 Обновите существующую установку
```bash
pip install --upgrade ytsage
```
Затем запустите приложение:
```bash
ytsage
```
### 📦 Готовые исполняемые файлы
> [👉 Download Latest Release](https://github.com/oop7/YTSage/releases/latest)
#### 🪟 Окна
| Формат | Описание |
|--------|-------------|
|  | Стандартный установщик |
|  | В комплекте FFmpeg |
|  | Портативная версия, установка не требуется |
|  | Портативный с FFmpeg, в архиве |
🛠️ Этапы установки
1. **Установщик EXE (`.exe`)**: дважды щелкните файл и следуйте указаниям мастера установки.
2. **Портативная версия (`.zip`)**: распакуйте архив в нужное место и запустите `ytsage.exe`.
3. **FFmpeg Bundled**: выберите версии в комплекте FFmpeg, если в вашей системе не установлен FFmpeg.
#### 🐧 Линукс
| Формат | Описание |
|--------|-------------|
|  | Пакет Debian |
|  | AppImage, портативный |
|  | пакет RPM |
|  | Комплект Flatpak |
🛠️ Этапы установки
- **DEB (`.deb`)**:
```bash
sudo dpkg -i ytsage_*.deb
sudo apt-get install -f # Fix missing dependencies if any
```
- **Об/мин (`.rpm`)**:
```bash
sudo rpm -i ytsage-*.rpm
```
- **AppImage (`.AppImage`)**:
```bash
chmod +x YTSage-*.AppImage
./YTSage-*.AppImage
```
- **Flatpak**: следуйте инструкциям на Flathub или запустите:
```bash
flatpak install flathub io.github.oop7.ytsage
```
#### 🍎 macOS
| Формат | Описание |
|--------|-------------|
|  | Заархивированное приложение для Apple Silicon |
|  | Установщик образа диска для Apple Silicon |
🛠️ Этапы установки
- **Установщик DMG (`.dmg`)**: дважды щелкните, чтобы смонтировать, затем перетащите `YTSage.app` в папку «Приложения».
- **Архив приложений (`.zip`)**: распакуйте zip-архив и переместите `YTSage.app` в папку «Приложения».
*Примечание. Если вы столкнулись с ошибкой «Приложение повреждено», см. [macOS troubleshooting section](#troubleshooting) ниже.*
---
💻 Ручная установка из исходного кода
### 1. Клонировать репозиторий
```bash
git clone https://github.com/oop7/YTSage.git
cd YTSage
```
### 2. Установите зависимости
#### ⚡ С уф
```bash
uv pip install .
```
#### 📦 Или со стандартным пипом
```bash
pip install .
```
### 3. Запустите приложение
```bash
python -m ytsage.main
```
## 📸 Скриншоты
Настройки загрузки
Скачать плейлист
Аудиоформат
Пользовательские параметры
## 📖 Использование
🎯 Базовое использование
1. **Запустите YTSage**
2. **Вставьте URL-адрес YouTube** (или нажмите кнопку «Вставить URL-адрес»).
3. **Нажмите «Анализ»**.
4. **Выберите формат:**
- `Video` для загрузки видео.
- `Audio Only` для извлечения звука
5. **Выберите параметры:**
- Включить субтитры и выбрать язык
- Включить объединение субтитров
- Сохранить миниатюру
- Удалить спонсорские сегменты
- Сохранить описание
- Вставлять главы
6. **Выберите выходной каталог**
7. **Нажмите «Загрузить»**.
> 💡 Каталогом загрузки по умолчанию является папка «Загрузки» пользователя.
📋 Скачать плейлист
1. **Вставьте URL-адрес плейлиста**
2. **Нажмите «Анализ»**.
3. **Выберите видео в селекторе плейлиста (необязательно, по умолчанию — все)**
4. **Выберите желаемый формат/качество**
5. **Нажмите «Загрузить»**.
> 💡 Приложение автоматически обрабатывает очередь загрузки
🌍 Общий режим для сайтов, не принадлежащих YouTube
Используйте общий режим, если хотите, чтобы YTSage принимал URL-адреса с сайтов, поддерживаемых yt-dlp, таких как Dailymotion, CBC Gem, TikTok и других.
Как его использовать:
1. Откройте `Download Settings`.
2. Включите `Generic Mode`.
3. Вставьте поддерживаемый URL-адрес видео или списка воспроизведения, не относящегося к YouTube.
4. Нажмите `Analyze`.
5. Выберите формат и загрузите как обычно.
Примечания:
- Общий режим изменяет только проверку URL-адреса внутри YTSage. Целевой сайт по-прежнему должен поддерживаться установленной версией yt-dlp.
– Некоторым сайтам требуются файлы cookie, сеанс входа в систему, прокси-сервер или дополнительные аргументы yt-dlp в зависимости от экстрактора.
– Если на сайте произошел сбой, сначала обновите yt-dlp на вкладке встроенного средства обновления, прежде чем сообщать о проблеме.
🧰 Параметры мультимедиа и загрузки
- **Параметры субтитров:** фильтруйте языки и встраивайте субтитры в видеофайл.
- **Объединение субтитров:** объединение субтитров в видеофайл для жестко запрограммированных субтитров.
- **Сохранить описание:** сохранить описание видео в виде текстового файла.
- **Сохранить миниатюру:** сохраните миниатюру видео как файл изображения.
- **Встроить главы.** Встраивайте маркеры глав в качестве метаданных для совместимых видеопроигрывателей.
- **Удалить спонсорские сегменты.** Удалите спонсорские сегменты из видео с помощью SponsorBlock.
- **Обрезать видео:** загружайте только определенные части видео, указав временные диапазоны в формате `HH:MM:SS`.
⚙️ Настройки вывода и файла
- **Ограничитель скорости:** Ограничьте скорость загрузки, например `500K` до 500 КБ/с.
- **Сохранить путь загрузки:** сохраните путь загрузки по умолчанию для будущих загрузок. Доступно в **Настройки загрузки → Путь загрузки**.
- **Формат имени выходного файла:** Настройте формат имени выходного файла, используя такие переменные, как `%(title)s`, `%(uploader)s` и `%(resolution)s`. Доступно в **Настройки загрузки → Формат имени файла**.
- **Принудительный формат вывода.** Принудительно загружайте видео в определенный формат контейнера, например `mp4`, `webm` или `mkv`. Доступно в **Настройки загрузки → Настройки формата вывода**.
- **Преобразование аудиоформата:** конвертируйте загрузки, содержащие только аудио, в предпочтительные форматы, такие как `AAC`, `MP3`, `FLAC`, `WAV`, `Opus`, `M4A`, `Vorbis` или `Best`. Доступно в **Настройки загрузки → Настройки аудиоформата**.
- **Нормализация звука:** Стандартизируйте громкость для загрузок, содержащих только аудио, используя EBU R128.
🌐 Доступ и сеть
- **Войти с помощью файлов cookie:** войдите на YouTube, используя файлы cookie, чтобы получить доступ к личному контенту.
Как его использовать:
1. **Рекомендуется**. Используйте встроенную опцию `Extract cookies from browser` в приложении, затем выберите браузер и, при необходимости, профиль.
2. Альтернативно извлеките файлы cookie вручную:
а. Экспортируйте файлы cookie из вашего браузера, используя расширение, например [cookie-editor](https://github.com/moustachauve/cookie-editor?tab=readme-ov-file).
б. Скопируйте файлы cookie в формате Netscape.
в. Создайте файл с именем `cookies.txt` и вставьте в него файлы cookie.
д. Выберите файл `cookies.txt` в приложении.
- **Поддержка прокси:** используйте прокси-сервер для загрузки, например `http://:`
- **Общий режим.** Разрешить YTSage анализировать и загружать контент с сайтов, не принадлежащих YouTube, и поддерживаемых yt-dlp. Включите его в разделе **Настройки загрузки → Общий режим**.
🛠️ Инструменты и уход
– **Пользовательские команды.** Доступ к расширенным функциям yt-dlp с помощью аргументов командной строки.
- **Вкладка «Обновление».** Управляйте встроенными инструментами обновления из одного места в пользовательских настройках:
- **Обновления yt-dlp:** проверяйте наличие обновлений и переключайтесь между стабильными и ночными выпусками.
- **Проверка версии FFmpeg:** проверьте версию FFmpeg и откройте руководства по установке.
- **Обновления Deno:** проверьте и обновите среду выполнения Deno.
- **Обнаружение FFmpeg/yt-dlp/Deno:** автоматическое определение путей и версий FFmpeg, yt-dlp и Deno в диалоговом окне «О программе».
- **История загрузок.** Просматривайте прошлые загрузки с помощью миниатюр и статусов с помощью кнопки **История**.
🌍 Локализация
YTSage поддерживает **14 языков**, что обеспечивает доступность по всему миру. Выберите предпочитаемый язык в меню **Пользовательские параметры → Язык**.
### Поддерживаемые языки
| Язык | Код | Язык | Код |
|----------|------|----------|------|
| 🇺🇸 Английский | `en` | 🇪🇸 Испанский | `es` |
| 🇸🇦 Арабский | `ar` | 🇫🇷 Французский | `fr` |
| 🇩🇪 немецкий | `de` | 🇮🇳 Хинди | `hi` |
| 🇮🇩 Индонезийский | `id` | 🇮🇹 Итальянский | `it` |
| 🇯🇵 Японский | `ja` | 🇵🇱 Польский | `pl` |
| 🇧🇷 Португальский | `pt` | 🇷🇺 Русский | `ru` |
| 🇹🇷 Турецкий | `tr` | 🇨🇳 Китайский | `zh` |
### README Переводы
| Язык | Файл | Язык | Файл |
|----------|------|----------|------|
| 🇺🇸 Английский | [README.md](../README.md) | 🇪🇸 Испанский | [README.es.md](README.es.md)
| 🇸🇦 Арабский | [README.ar.md](README.ar.md) | 🇫🇷 Французский | [README.fr.md](README.fr.md) |
| 🇩🇪 немецкий | [README.de.md](README.de.md) | 🇮🇳 Хинди | [README.hi.md](README.hi.md) |
| 🇮🇩 Индонезийский | [README.id.md](README.id.md) | 🇮🇹 Итальянский | [README.it.md](README.it.md) |
| 🇯🇵 Японский | [README.ja.md](README.ja.md) | 🇵🇱 Польский | [README.pl.md](README.pl.md) |
| 🇧🇷 Португальский | [README.pt.md](README.pt.md) | 🇷🇺 Русский | [README.ru.md](README.ru.md) |
| 🇹🇷 Турецкий | [README.tr.md](README.tr.md) | 🇨🇳 Китайский | [README.zh.md](README.zh.md) |
> 💡 **Хотите сделать перевод?** Посетите раздел [Contributing](#contributing), чтобы мы могли добавить больше языков!
## 🛠️ Устранение неполадок
Нажмите, чтобы просмотреть распространенные проблемы и решения
– **Таблица формата не отображается.** Обновите yt-dlp до последней версии и переключайтесь на yt-dlp каждую ночь.
- **Не удалось загрузить.** Проверьте подключение к Интернету и убедитесь, что видео доступно.
- **Конкретные ошибки загрузки:**
- **Частные видео.** Используйте аутентификацию с помощью файлов cookie для доступа к частному контенту.
- **Контент с возрастными ограничениями.** Войдите в аккаунт YouTube, чтобы просмотреть видео с возрастными ограничениями.
– **Видео с геоблокировкой.** Рассмотрите возможность использования VPN, чтобы обойти региональные ограничения.
– **Удалены видео:** Видео больше не доступно на YouTube.
- **Прямые трансляции:** Прямые трансляции невозможно загрузить; дождитесь окончания потока.
- **Ошибки сети.** Проверьте подключение к Интернету и повторите попытку.
- **Недопустимые URL-адреса.** Убедитесь, что URL-адрес правильный и принадлежит поддерживаемой платформе.
- **Премиум-контент:** требуется подписка YouTube Premium.
- **Блокировка авторских прав.** Контент блокируется из-за ограничений авторских прав.
- **Разделение видео и аудиофайлов после загрузки.** Это происходит, когда FFmpeg отсутствует или не обнаружен. YTSage требует FFmpeg для объединения высококачественных видео и аудио потоков.
- **Решение:** Убедитесь, что FFmpeg установлен и доступен в PATH вашей системы. Для пользователей Windows самый простой вариант — загрузить файл `YTSage-v-ffmpeg.exe`, который поставляется в комплекте с FFmpeg.
---
#### 🛡️ Предупреждение Защитника Windows/антивируса
Некоторые антивирусные программы могут помечать файлы `.exe` как ложные срабатывания. Это **известное ограничение** пакетных приложений.
**Почему это происходит:**
- Антивирусная эвристика может ошибочно идентифицировать упакованные исполняемые файлы как подозрительные.
**Безопасные альтернативы:**
- ✅ **Используйте установку pip:** `pip install ytsage` (рекомендуется)
- ✅ **Сборка из исходного кода**: следуя этому [guide](../.github/CI_CD_README.md)
- ✅ **Внесите приложение в белый список** в антивирусном программном обеспечении.
#### 🍎 macOS: «Приложение повреждено и его невозможно открыть»
Если вы видите эту ошибку в macOS Sonoma или более поздней версии, вам необходимо удалить атрибут карантина.
1. **Откройте терминал** (его можно найти с помощью Spotlight).
2. **Введите следующую команду**, но **не** пока нажимайте Enter. Обязательно добавьте пробел в конце:
```bash
xattr -d com.apple.quarantine
```
3. **Перетащите файл `YTSage.app`** из окна Finder и поместите его прямо в окно терминала. Это автоматически вставит правильный путь к файлу.
4. **Нажмите Enter**, чтобы запустить команду.
5. **Попробуйте снова открыть YTSage.app.** Теперь оно должно запуститься правильно.
---
#### **Места конфигурации (дополнительно)**
- **Windows:** `%LOCALAPPDATA%\YTSage`
- **macOS:** `~/Library/Application Support/YTSage`
- **Linux:** `~/.local/share/YTSage`
## 💖 Спонсор
Если YTSage сэкономит вам время, рассмотрите возможность спонсирования проекта. Спонсорство помогает покрыть время разработки, тестирования на разных платформах и будущих улучшений.
- Спонсоры GitHub: https://github.com/sponsors/oop7
- Спонсорская ссылка также доступна непосредственно внутри приложения из диалогового окна «О программе».
[](https://github.com/sponsors/oop7)
## 👥 Вклад
Мы приветствуем вклады! Вот как вы можете помочь:
1. 🍴 Форкните репозиторий
2. 🌿 Создайте свою ветку функций:
```bash
git checkout -b feature/AmazingFeature
```
3. 💾 Зафиксируйте изменения:
```bash
git commit -m 'Add some AmazingFeature'
```
4. 📤 Нажмите на ветку:
```bash
git push origin feature/AmazingFeature
```
5. 🔄 Откройте запрос на включение
### 🌍 Участие в переводах
- Обновите соответствующий локализованный файл README (например, `README.es.md`).
- Синхронизируйте строки приложения, отредактировав `ytsage/languages/.json`.
- Если ваш язык отсутствует, начните с `README.md` и создайте `README..md`.
📂 Структура проекта
## YTSage — Структура проекта
В этом документе описывается организованная структура папок YTSage.
### 📁 Структура проекта
```
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
```
## ⭐️ Звездная история
## Звездная история
## 📜 Лицензия
Этот проект лицензируется по лицензии MIT — подробности см. в файле [LICENSE](../LICENSE).
## 🙏 Благодарности
Показать благодарности
Сердечное спасибо всем, кто внес свой вклад в этот проект, открыв проблему, чтобы предложить улучшения или сообщить об ошибке.
## ⚠️ Отказ от ответственности
Этот инструмент предназначен только для личного использования. Пожалуйста, соблюдайте условия обслуживания YouTube и права создателей контента.
---
Сделано с ❤️ автором [oop7](https://github.com/oop7)