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.
This commit is contained in:
oop7
2026-03-19 14:06:44 +02:00
parent fe828a5191
commit 9d1e83f7df
14 changed files with 8052 additions and 0 deletions
+35
View File
@@ -15,6 +15,23 @@
**A modern YouTube downloader with a clean PySide6 interface.**
Download videos in any quality, extract audio, fetch subtitles, and more.
### 🌍 README Languages
English: [EN](README.md)
| العربية: [AR](readme-translations/README.ar.md)
| Deutsch: [DE](readme-translations/README.de.md)
| Español: [ES](readme-translations/README.es.md)
| Français: [FR](readme-translations/README.fr.md)
| हिन्दी: [HI](readme-translations/README.hi.md)
| Bahasa Indonesia: [ID](readme-translations/README.id.md)
| Italiano: [IT](readme-translations/README.it.md)
| 日本語: [JA](readme-translations/README.ja.md)
| Polski: [PL](readme-translations/README.pl.md)
| Português: [PT](readme-translations/README.pt.md)
| Русский: [RU](readme-translations/README.ru.md)
| Türkçe: [TR](readme-translations/README.tr.md)
| 中文: [ZH](readme-translations/README.zh.md)
<p align="center">
<a href="#installation">Installation</a> •
<a href="#features">Features</a> •
@@ -340,6 +357,18 @@ YTSage supports **14 languages** for worldwide accessibility. Select your prefer
| 🇧🇷 Portuguese | `pt` | 🇷🇺 Russian | `ru` |
| 🇹🇷 Turkish | `tr` | 🇨🇳 Chinese | `zh` |
### README Translations
| Language | File | Language | File |
|----------|------|----------|------|
| 🇺🇸 English | [README.md](README.md) | 🇪🇸 Spanish | [README.es.md](readme-translations/README.es.md) |
| 🇸🇦 Arabic | [README.ar.md](readme-translations/README.ar.md) | 🇫🇷 French | [README.fr.md](readme-translations/README.fr.md) |
| 🇩🇪 German | [README.de.md](readme-translations/README.de.md) | 🇮🇳 Hindi | [README.hi.md](readme-translations/README.hi.md) |
| 🇮🇩 Indonesian | [README.id.md](readme-translations/README.id.md) | 🇮🇹 Italian | [README.it.md](readme-translations/README.it.md) |
| 🇯🇵 Japanese | [README.ja.md](readme-translations/README.ja.md) | 🇵🇱 Polish | [README.pl.md](readme-translations/README.pl.md) |
| 🇧🇷 Portuguese | [README.pt.md](readme-translations/README.pt.md) | 🇷🇺 Russian | [README.ru.md](readme-translations/README.ru.md) |
| 🇹🇷 Turkish | [README.tr.md](readme-translations/README.tr.md) | 🇨🇳 Chinese | [README.zh.md](readme-translations/README.zh.md) |
> 💡 **Want to contribute a translation?** Check out the [Contributing](#contributing) section to help us add more languages!
</details>
@@ -430,6 +459,12 @@ We welcome contributions! Here's how you can help:
```
5. 🔄 Open a Pull Request
### 🌍 Contributing Translations
- Update the matching localized README file (for example `readme-translations/README.es.md`)
- Keep app strings in sync by editing `ytsage/languages/<code>.json`
- If your language is missing, start from `README.md` and create `README.<code>.md`
<details>
<summary>📂 Project Structure</summary>
+617
View File
@@ -0,0 +1,617 @@
<div align="center">
<img src="../branding/svg/ytsage-wordmark.svg" width="400" alt="ytsage-wordmark">
<img src="../branding/screenshots/main.png" width="800" alt="YTSage Interface"/>
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-1f2937?style=for-the-badge&logo=python&logoColor=white)](https://www.python.org/downloads/)
[![PyPI Downloads](https://img.shields.io/pepy/dt/ytsage?color=1f2937&style=for-the-badge&label=downloads&logo=python&logoColor=white)](https://pepy.tech/project/ytsage)
[![GitHub Downloads](https://img.shields.io/github/downloads/oop7/YTSage/total?color=1f2937&style=for-the-badge&label=downloads&logo=github&logoColor=white)](https://github.com/oop7/YTSage/releases)
[![License: MIT](https://img.shields.io/badge/License-MIT-1f2937?style=for-the-badge&logo=opensource&logoColor=white)](https://opensource.org/licenses/MIT)
[![Supported Platforms](https://img.shields.io/badge/platform-cross--platform-1f2937?style=for-the-badge&logo=github&logoColor=white)](https://github.com/oop7/YTSage/releases)
[![GitHub Stars](https://img.shields.io/github/stars/oop7/YTSage?color=c90000&style=for-the-badge&logo=github&logoColor=white)](https://github.com/oop7/YTSage/stargazers)
[![PyPI version](https://img.shields.io/pypi/v/ytsage?color=c90000&style=for-the-badge&logo=pypi&logoColor=white)](https://pypi.org/project/ytsage/)
[![GitHub Sponsors](https://img.shields.io/github/sponsors/oop7?color=c90000&style=for-the-badge&logo=githubsponsors&logoColor=white)](https://github.com/sponsors/oop7)
**أداة تنزيل حديثة من YouTube بواجهة PySide6 نظيفة.**
قم بتنزيل مقاطع الفيديو بأي جودة، واستخرج الصوت، واجلب الترجمات، والمزيد.
### 🌍 اقرأني اللغات
الإنجليزية: [EN](../README.md)
| العربية: [AR](README.ar.md)
| الألمانية: [DE](README.de.md)
| الاسبانية: [ES](README.es.md)
| الفرنسية: [FR](README.fr.md)
| الهندية: [HI](README.hi.md)
| البهاسا الإندونيسية: [ID](README.id.md)
| إيطاليانو: [IT](README.it.md)
| العنوان: [JA](README.ja.md)
| بولسكي: [PL](README.pl.md)
| البرتغالية: [PT](README.pt.md)
| Русский: [RU](README.ru.md)
| التركية: [TR](README.tr.md)
| 中文: [ZH](README.zh.md)
<p align="center">
<a href="#installation">التثبيت</a> •
<a href="#features">المميزات</a> •
<a href="#usage">الاستخدام</a> •
<a href="#screenshots">لقطات الشاشة</a> •
<a href="#troubleshooting">استكشاف الأخطاء وإصلاحها</a> •
<a href="#sponsor">Sponsor</a> •
<a href="#contributing">المساهمة</a>
</p>
</div>
---
<a id="why-ytsage"></a>
## ❓ لماذا YTSage؟
تم تصميم YTSage للمستخدمين الذين يريدون **برنامج تنزيل YouTube بسيطًا وقويًا**. على عكس الأدوات الأخرى، فهو يقدم:
- واجهة PySide6 نظيفة وحديثة
- التنزيلات بنقرة واحدة للفيديو والصوت والترجمات
- ميزات متقدمة مثل SponsorBlock ودمج الترجمة واختيار قائمة التشغيل
- الوضع العام الاختياري للمواقع التي تدعم yt-dlp خارج YouTube
- دعم عبر الأنظمة الأساسية وسهولة التثبيت
<a id="features"></a>
## ✨المميزات
<div align="center">
| الميزات الأساسية | الميزات المتقدمة | ميزات إضافية |
|-----------------------------------|--------------------------------------------------------|-----|
| 🎥 تنسيق الجدول | 🚫 تكامل SponsorBlock | 🎞️ عرض FPS/HDR |
| 🎵 استخراج الصوت | 📝 تحديد ودمج الترجمة المتعددة | 🔄 التحديث التلقائي yt-dlp |
| ✨ واجهة مستخدم بسيطة | 💾 حفظ الوصف والصورة المصغرة | 🛠️ كشف FFmpeg/yt-dlp/Deno |
| 📋 دعم قائمة التشغيل والمحدد | 🚀 محدد السرعة | ⚙️ أوامر مخصصة |
| 📑 تضمين الفصول | ✂️ تقليم أقسام الفيديو | 🍪 تسجيل الدخول باستخدام ملفات تعريف الارتباط |
| 📜 تحميل التاريخ | 🔄 إطلاق اختيار القناة | 🌐 دعم الوكيل |
| 🎚️ تحويل تنسيق الصوت | 🎬 إعدادات تنسيق الفيديو | 🆙 علامة تبويب التحديث المدمجة |
| 🌍 الوضع العام |
| 🌍 التعريب بـ 14 لغة | |
</div>
<a id="installation"></a>
## 🚀التركيب
### ⚡ التثبيت السريع (موصى به)
تثبيت YTSage من PyPI:
```bash
pip install ytsage
```
<details>
<summary>🔄 تحديث التثبيت الحالي</summary>
```bash
pip install --upgrade ytsage
```
</details>
ثم قم بتشغيل التطبيق:
```bash
ytsage
```
### 📦 الملفات التنفيذية المعدة مسبقًا
> [👉 Download Latest Release](https://github.com/oop7/YTSage/releases/latest)
#### 🪟 ويندوز
| تنسيق | الوصف |
|--------|------------|
| ![Windows EXE](https://img.shields.io/badge/Windows-EXE-0078D6?style=for-the-badge&logo=windows&logoColor=white) | المثبت القياسي |
| ![Windows FFmpeg](https://img.shields.io/badge/Windows-FFmpeg-0078D6?style=for-the-badge&logo=windows&logoColor=white) | مع FFmpeg المجمعة |
| ![Windows Portable](https://img.shields.io/badge/Windows-Portable-0078D6?style=for-the-badge&logo=windows&logoColor=white) | نسخة محمولة، لا تحتاج إلى تثبيت |
| ![Windows Portable FFmpeg](https://img.shields.io/badge/Windows-Portable%20FFmpeg-0078D6?style=for-the-badge&logo=windows&logoColor=white) | محمول مع FFmpeg، مضغوط |
<details>
<summary>🛠️ خطوات التثبيت</summary>
1. **مثبت EXE (`.exe`)**: انقر نقرًا مزدوجًا فوق الملف واتبع معالج الإعداد.
2. **النسخة المحمولة (`.zip`)**: قم باستخراج الأرشيف إلى الموقع المطلوب وتشغيل `ytsage.exe`.
3. **FFmpeg Bundled**: اختر إصدارات FFmpeg المجمعة إذا لم يكن FFmpeg مثبتًا على نظامك.
</details>
#### 🐧 لينكس
| تنسيق | الوصف |
|--------|------------|
| ![Linux DEB](https://img.shields.io/badge/Linux-DEB-FCC624?style=for-the-badge&logo=linux&logoColor=black) | حزمة دبيان |
| ![Linux AppImage](https://img.shields.io/badge/Linux-AppImage-FCC624?style=for-the-badge&logo=linux&logoColor=black) | صورة التطبيق المحمولة |
| ![Linux RPM](https://img.shields.io/badge/Linux-RPM-FCC624?style=for-the-badge&logo=linux&logoColor=black) | حزمة دورة في الدقيقة |
| ![Flathub](https://img.shields.io/badge/Linux-Flatpak-FCC624?style=for-the-badge&logo=flathub&logoColor=black) | حزمة فلاتباك |
<details>
<summary>🛠️ خطوات التثبيت</summary>
- **ديب (`.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`)**:
```bash
chmod +x YTSage-*.AppImage
./YTSage-*.AppImage
```
- **Flatpak**: اتبع التعليمات الموجودة على Flathub أو قم بتشغيل:
```bash
flatpak install flathub io.github.oop7.ytsage
```
</details>
#### 🍎 ماك
| تنسيق | الوصف |
|--------|------------|
| ![macOS ARM64 APP](https://img.shields.io/badge/macOS-ARM64%20APP-000000?style=for-the-badge&logo=apple&logoColor=white) | تطبيق مضغوط لأبل سيليكون |
| ![macOS ARM64 DMG](https://img.shields.io/badge/macOS-ARM64%20DMG-000000?style=for-the-badge&logo=apple&logoColor=white) | مثبت صورة القرص لـ Apple Silicon |
<details>
<summary>🛠️ خطوات التثبيت</summary>
- **مثبت DMG (`.dmg`)**: انقر نقرًا مزدوجًا للتثبيت، ثم اسحب `YTSage.app` إلى مجلد التطبيقات.
- **أرشيف التطبيقات (`.zip`)**: استخرج الملف المضغوط وانقل `YTSage.app` إلى مجلد التطبيقات.
*ملاحظة: إذا واجهت خطأ "التطبيق تالف"، راجع [macOS troubleshooting section](#troubleshooting) أدناه.*
</details>
---
<details>
<summary>💻 التثبيت اليدوي من المصدر</summary>
### 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
```
</details>
<a id="screenshots"></a>
## 📸 لقطات الشاشة
<div align="center">
<table>
<tr>
<td><img src="../branding/screenshots/Download-Settings.png" alt="Download Settings" width="400"/></td>
<td><img src="../branding/screenshots/playlist.png" alt="Playlist Download" width="400"/></td>
</tr>
<tr>
<td align="center"><em>إعدادات التحميل</em></td>
<td align="center"><em>تنزيل قائمة التشغيل</em></td>
</tr>
<tr>
<td><img src="../branding/screenshots/audio_format.png" alt="Audio Format Selection with Save Thumbnail" width="400"/></td>
<td><img src="../branding/screenshots/Custom-Option.png" alt="Custom Options" width="400"/></td>
</tr>
<tr>
<td align="center"><em>تنسيق الصوت</em></td>
<td align="center"><em>خيارات مخصصة</em></td>
</tr>
</table>
</div><a id="usage"></a>
## 📖 الاستخدام
<details>
<summary>🎯 الاستخدام الأساسي</summary>
1. ** إطلاق YTSage **
2. **الصق عنوان URL لموقع YouTube** (أو استخدم الزر "لصق عنوان URL")
3. **انقر على "تحليل"**
4. **حدد التنسيق:**
- `Video` لتنزيل الفيديو
- `Audio Only` لاستخراج الصوت
5. **اختر الخيارات:**
- تمكين الترجمة واختيار اللغة
- تمكين دمج الترجمة
- حفظ الصورة المصغرة
- إزالة شرائح الراعي
- حفظ الوصف
- تضمين الفصول
6. **حدد دليل المخرجات**
7. **انقر على "تنزيل"**
> 💡 دليل التنزيل الافتراضي هو مجلد "التنزيلات" الخاص بالمستخدم.
</details>
<details>
<summary>📋 تنزيل قائمة التشغيل</summary>
1. **لصق عنوان URL لقائمة التشغيل**
2. **انقر على "تحليل"**
3. **حدد مقاطع الفيديو من محدد قائمة التشغيل (اختياري، الإعداد الافتراضي هو الكل)**
4. **اختر التنسيق/الجودة المطلوبة**
5. **انقر على "تنزيل"**
> 💡 يتعامل التطبيق تلقائيًا مع قائمة انتظار التنزيل
</details>
<details>
<summary>🌍 الوضع العام للمواقع غير التابعة لليوتيوب</summary>
استخدم الوضع العام عندما تريد أن يقبل YTSage عناوين URL من المواقع التي يدعمها yt-dlp، مثل Dailymotion وCBC Gem وTikTok وغيرها.
كيفية استخدامه:
1. افتح `Download Settings`.
2. تفعيل `Generic Mode`.
3. الصق عنوان URL لفيديو أو قائمة تشغيل مدعومة غير تابعة لـ YouTube.
4. اضغط على `Analyze`.
5. اختر التنسيق وقم بتنزيله كالمعتاد.
ملاحظات:
- الوضع العام يغير فقط التحقق من صحة عنوان URL داخل YTSage. يجب أن يظل الموقع المستهدف مدعومًا بإصدار yt-dlp المثبت لديك.
- تتطلب بعض المواقع ملفات تعريف الارتباط، أو جلسة تسجيل دخول، أو وكيلًا، أو وسائط yt-dlp إضافية اعتمادًا على المستخرج.
- إذا فشل أحد المواقع، فقم بتحديث yt-dlp أولاً من علامة تبويب المحدث المضمنة قبل الإبلاغ عن المشكلة.
</details>
<details>
<summary>🧰 خيارات الوسائط والتنزيل</summary>
- **خيارات الترجمة:** تصفية اللغات وتضمين الترجمة في ملف الفيديو
- **دمج الترجمة:** دمج الترجمات في ملف الفيديو للحصول على ترجمات مضمنة
- **حفظ الوصف:** احفظ وصف الفيديو كملف نصي
- **حفظ الصورة المصغرة:** احفظ الصورة المصغرة للفيديو كملف صورة
- **تضمين الفصول:** تضمين علامات الفصل كبيانات وصفية لمشغلات الفيديو المتوافقة
- **إزالة شرائح الجهات الراعية:** قم بإزالة شرائح الجهات الراعية من الفيديو باستخدام SponsorBlock
- **قص الفيديو:** قم بتنزيل أجزاء محددة فقط من الفيديو عن طريق تحديد نطاقات زمنية بتنسيق `HH:MM:SS`
</details>
<details>
<summary>⚙️ إعدادات الإخراج والملف</summary>
- **محدد السرعة:** حدد سرعة التنزيل، على سبيل المثال `500K` لـ 500 كيلو بايت/ثانية
- **حفظ مسار التنزيل:** احفظ مسار التنزيل الافتراضي للتنزيلات المستقبلية. متوفر في **إعدادات التنزيل → مسار التنزيل**.
- **تنسيق اسم ملف الإخراج:** قم بتخصيص تنسيق اسم ملف الإخراج باستخدام متغيرات مثل `%(title)s`، `%(uploader)s`، و`%(resolution)s`. متوفر في **إعدادات التنزيل → تنسيق اسم الملف**.
- **تنسيق الإخراج الإجباري:** فرض تنزيلات الفيديو في تنسيق حاوية محدد مثل `mp4` أو `webm` أو `mkv`. متوفر في **إعدادات التنزيل ← إعدادات تنسيق الإخراج**.
- **تحويل تنسيق الصوت:** تحويل التنزيلات الصوتية فقط إلى التنسيقات المفضلة مثل `AAC`، `MP3`، `FLAC`، `WAV`، `Opus`، `M4A`، `Vorbis` أو `Best`. متوفر في **إعدادات التنزيل → إعدادات تنسيق الصوت**.
</details>
<details>
<summary>🌐 الوصول والشبكة</summary>
- **تسجيل الدخول باستخدام ملفات تعريف الارتباط:** قم بتسجيل الدخول إلى YouTube باستخدام ملفات تعريف الارتباط للوصول إلى المحتوى الخاص.
كيفية استخدامه:
1. **موصى به:** استخدم خيار `Extract cookies from browser` المدمج في التطبيق، ثم حدد المتصفح الخاص بك وملفًا شخصيًا بشكل اختياري.
2. بدلاً من ذلك، قم باستخراج ملفات تعريف الارتباط يدويًا:
أ. قم بتصدير ملفات تعريف الارتباط من متصفحك باستخدام ملحق مثل [cookie-editor](https://github.com/moustachauve/cookie-editor?tab=readme-ov-file)
ب. انسخ ملفات تعريف الارتباط بتنسيق Netscape
ج. أنشئ ملفًا باسم `cookies.txt` والصق ملفات تعريف الارتباط فيه
د. حدد الملف `cookies.txt` في التطبيق
- **دعم الوكيل:** استخدم خادمًا وكيلاً للتنزيلات، على سبيل المثال `http://<proxy-server>:<port>`
- **الوضع العام:** اسمح لـ YTSage بالتحليل والتنزيل من مواقع غير تابعة لـ YouTube والتي يدعمها yt-dlp. قم بتمكينه من **إعدادات التنزيل → الوضع العام**.
</details>
<details>
<summary>🛠️ الأدوات والصيانة</summary>
- **الأوامر المخصصة:** الوصول إلى ميزات yt-dlp المتقدمة عبر وسيطات سطر الأوامر
- **علامة تبويب التحديث:** إدارة أدوات التحديث المضمنة من مكان واحد في الخيارات المخصصة:
- **تحديثات yt-dlp:** تحقق من وجود تحديثات وقم بالتبديل بين قنوات الإصدار الثابت وقنوات الإصدار الليلي
- **مدقق إصدار FFmpeg:** تحقق من إصدار FFmpeg الخاص بك وافتح أدلة التثبيت
- **تحديثات Deno:** التحقق من وقت تشغيل Deno وتحديثه
- **اكتشاف FFmpeg/yt-dlp/Deno:** اكتشاف مسارات وإصدارات FFmpeg وyt-dlp وDeno تلقائيًا من مربع الحوار "حول".
- **سجل التنزيلات:** اعرض التنزيلات السابقة باستخدام الصور المصغرة والحالات من زر **السجل**.
</details>
<details>
<summary>🌍 التعريب</summary>
يدعم 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) لمساعدتنا في إضافة المزيد من اللغات!
</details>
<a id="troubleshooting"></a>
## 🛠️ استكشاف الأخطاء وإصلاحها
<details>
<summary>انقر لعرض المشكلات والحلول الشائعة</summary>
- **تنسيق الجدول لا يتم عرضه:** قم بتحديث yt-dlp إلى الإصدار الأحدث، ثم قم بالتبديل إلى yt-dlp ليلاً.
- **فشل التنزيل:** تحقق من اتصالك بالإنترنت وتأكد من توفر الفيديو.
- **أخطاء تنزيل محددة:**
- **مقاطع الفيديو الخاصة:** استخدم مصادقة ملفات تعريف الارتباط للوصول إلى المحتوى الخاص.
- **محتوى مقيد بالفئة العمرية:** قم بتسجيل الدخول إلى حساب YouTube لعرض مقاطع الفيديو المقيدة بالفئة العمرية.
- **مقاطع الفيديو المحظورة جغرافيًا:** فكر في استخدام VPN لتجاوز القيود الإقليمية.
- **مقاطع الفيديو المحذوفة/المحذوفة:** لم يعد الفيديو متاحًا على YouTube.
- **البث المباشر:** لا يمكن تنزيل البث المباشر؛ انتظر حتى ينتهي الدفق.
- **أخطاء الشبكة:** تحقق من اتصالك بالإنترنت وحاول مرة أخرى.
- **عناوين URL غير صالحة:** تأكد من أن عنوان URL صحيح ومن نظام أساسي مدعوم.
- **المحتوى المميز:** يتطلب عضوية YouTube Premium.
- **حظر حقوق الطبع والنشر:** تم حظر المحتوى بسبب قيود حقوق الطبع والنشر.
- **فصل ملفات الفيديو والصوت بعد التنزيل:** يحدث هذا عندما يكون FFmpeg مفقودًا أو لم يتم اكتشافه. يتطلب YTSage FFmpeg لدمج تدفقات الفيديو والصوت عالية الجودة.
- **الحل:** تأكد من تثبيت FFmpeg وإمكانية الوصول إليه في PATH الخاص بنظامك. بالنسبة لمستخدمي Windows، الخيار الأسهل هو تنزيل الملف `YTSage-v<version>-ffmpeg.exe`، والذي يأتي مرفقًا مع FFmpeg.
---
#### 🛡️ تحذير Windows Defender / مضاد الفيروسات
قد تقوم بعض برامج مكافحة الفيروسات بوضع علامة على الملفات `.exe` على أنها ملفات إيجابية كاذبة. هذا **قيد معروف** للتطبيقات المجمعة.
**لماذا يحدث هذا:**
- يمكن للاستدلالات المضادة للفيروسات أن تخطئ في تعريف الملفات التنفيذية المعبأة على أنها مشبوهة
** البدائل الآمنة: **
- ✅ **استخدم تثبيت النقطة:** `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 مرة أخرى.** من المفترض الآن أن يتم تشغيله بشكل صحيح.
---
#### **مواقع التكوين (متقدمة)**
- **ويندوز:** `%LOCALAPPDATA%\YTSage`
- **ماك:** `~/Library/Application Support/YTSage`
- **لينكس:** `~/.local/share/YTSage`
</details>
<a id="sponsor"></a>
## 💖 الراعي
إذا كان YTSage يوفر عليك الوقت، ففكر في رعاية المشروع. تساعد الرعاية في تغطية وقت التطوير والاختبار عبر الأنظمة الأساسية والتحسينات المستقبلية.
- رعاة GitHub: https://github.com/sponsors/oop7
- رابط الراعي متاح أيضًا مباشرة داخل التطبيق من مربع الحوار "حول".
[![Sponsor YTSage](https://img.shields.io/badge/Sponsor-YTSage-EA4AAA?style=for-the-badge&logo=github&logoColor=white)](https://github.com/sponsors/oop7)
<a id="contributing"></a>
## 👥 المساهمة
نحن نرحب بالمساهمات! إليك كيف يمكنك المساعدة:
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/<code>.json`
- إذا كانت لغتك مفقودة، ابدأ من `README.md` وأنشئ `README.<code>.md`
<details>
<summary>📂 هيكل المشروع</summary>
## 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
```
</details>
## ⭐️ تاريخ النجوم
<div align="center">
## تاريخ النجوم
<a href="https://www.star-history.com/#oop7/YTSage&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date" />
</picture>
</a>
</div>
## 📜 الترخيص
هذا المشروع مرخص بموجب ترخيص MIT - راجع الملف [LICENSE](../LICENSE) للحصول على التفاصيل.
## 🙏 شكر وتقدير
<details>
<summary>إظهار الشكر والتقدير</summary>
<div align="center">
<p>شكرًا جزيلًا لكل من ساهم في هذا المشروع من خلال فتح مشكلة لاقتراح تحسين أو الإبلاغ عن خطأ.</p>
<table>
<tr class="section"><th colspan="2">المكونات الأساسية</th></tr>
<tr>
<td width="35%"><a href="https://github.com/yt-dlp/yt-dlp">yt-dlp</a></td>
<td>تحميل المحرك</td>
</tr>
<tr>
<td><a href="https://ffmpeg.org/">FFmpeg</a></td>
<td>معالجة الوسائط</td>
</tr>
<tr>
<td><a href="https://deno.com/">دينو</a></td>
<td>وقت التشغيل للتكامل مع yt-dlp</td>
</tr>
<tr class="section"><th colspan="2">المكتبات والأطر</th></tr>
<tr>
<td><a href="https://wiki.qt.io/Qt_for_Python">PySide6</a></td>
<td>إطار واجهة المستخدم الرسومية</td>
</tr>
<tr>
<td><a href="https://python-pillow.org/">الوسادة</a></td>
<td>معالجة الصور</td>
</tr>
<tr><td><a href="https://requests.readthedocs.io/">الطلبات</a></td>
<td>طلبات HTTP</td>
</tr>
<tr>
<td><a href="https://packaging.python.org/">التغليف</a></td>
<td>التعامل مع الإصدار والحزمة</td>
</tr>
<tr>
<td><a href="https://python-markdown.github.io/">تخفيض السعر</a></td>
<td>عرض تخفيض السعر</td>
</tr>
<tr>
<td><a href="https://github.com/Delgan/loguru">loguru</a></td>
<td>التسجيل</td>
</tr>
<tr class="section"><th colspan="2">الأصول والمساهمون</th></tr>
<tr>
<td><a href="https://pixabay.com/sound-effects/new-notification-09-352705/">إشعار جديد 09 من Universfield</a></td>
<td>صوت الإشعارات</td>
</tr>
<tr>
<td><a href="https://github.com/viru185">الفيروس185</a></td>
<td>مساهم الكود</td>
</tr>
</table>
</div>
</details>
## ⚠️إخلاء المسؤولية
هذه الأداة للاستخدام الشخصي فقط. يرجى احترام شروط خدمة YouTube وحقوق منشئي المحتوى.
---
<div align="center">
صُنع باستخدام ❤️ بواسطة [oop7](https://github.com/oop7)
</div>
+617
View File
@@ -0,0 +1,617 @@
<div align="center">
<img src="../branding/svg/ytsage-wordmark.svg" width="400" alt="ytsage-wordmark">
<img src="../branding/screenshots/main.png" width="800" alt="YTSage Interface"/>
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-1f2937?style=for-the-badge&logo=python&logoColor=white)](https://www.python.org/downloads/)
[![PyPI Downloads](https://img.shields.io/pepy/dt/ytsage?color=1f2937&style=for-the-badge&label=downloads&logo=python&logoColor=white)](https://pepy.tech/project/ytsage)
[![GitHub Downloads](https://img.shields.io/github/downloads/oop7/YTSage/total?color=1f2937&style=for-the-badge&label=downloads&logo=github&logoColor=white)](https://github.com/oop7/YTSage/releases)
[![License: MIT](https://img.shields.io/badge/License-MIT-1f2937?style=for-the-badge&logo=opensource&logoColor=white)](https://opensource.org/licenses/MIT)
[![Supported Platforms](https://img.shields.io/badge/platform-cross--platform-1f2937?style=for-the-badge&logo=github&logoColor=white)](https://github.com/oop7/YTSage/releases)
[![GitHub Stars](https://img.shields.io/github/stars/oop7/YTSage?color=c90000&style=for-the-badge&logo=github&logoColor=white)](https://github.com/oop7/YTSage/stargazers)
[![PyPI version](https://img.shields.io/pypi/v/ytsage?color=c90000&style=for-the-badge&logo=pypi&logoColor=white)](https://pypi.org/project/ytsage/)
[![GitHub Sponsors](https://img.shields.io/github/sponsors/oop7?color=c90000&style=for-the-badge&logo=githubsponsors&logoColor=white)](https://github.com/sponsors/oop7)
**Ein moderner YouTube-Downloader mit einer sauberen PySide6-Oberfläche.**
Laden Sie Videos in beliebiger Qualität herunter, extrahieren Sie Audio, rufen Sie Untertitel ab und mehr.
### 🌍 README-Sprachen
Englisch: [EN](../README.md)
| Quelle: [AR](README.ar.md)
| Deutsch: [DE](README.de.md)
| Spanisch: [ES](README.es.md)
| Französisch: [FR](README.fr.md)
| Quelle: [HI](README.hi.md)
| Bahasa Indonesien: [ID](README.id.md)
| Italienisch: [IT](README.it.md)
| 日本語: [JA](README.ja.md)
| Polnisch: [PL](README.pl.md)
| Portugiesisch: [PT](README.pt.md)
| Russisch: [RU](README.ru.md)
| Türkei: [TR](README.tr.md)
| Quelle: [ZH](README.zh.md)
<p align="center">
<a href="#installation">Installation</a> •
<a href="#features">Funktionen</a> •
<a href="#usage">Verwendung</a> •
<a href="#screenshots">Screenshots</a> •
<a href="#troubleshooting">Fehlerbehebung</a> •
<a href="#sponsor">Sponsor</a> •
<a href="#contributing">Mitwirken</a>
</p>
</div>
---
<a id="why-ytsage"></a>
## ❓ Warum YTSage?
YTSage wurde für Benutzer entwickelt, die einen **einfachen, aber leistungsstarken YouTube-Downloader** suchen. Im Gegensatz zu anderen Tools bietet es:
- Eine saubere, moderne PySide6-Schnittstelle
- Ein-Klick-Downloads für Video, Audio und Untertitel
- Erweiterte Funktionen wie SponsorBlock, Zusammenführen von Untertiteln und Auswahl von Wiedergabelisten
- Optionaler generischer Modus für von YT-DLP unterstützte Websites außerhalb von YouTube
- Plattformübergreifende Unterstützung und einfache Installation
<a id="features"></a>
## ✨ Funktionen
<div align="center">
| Kernfunktionen | Erweiterte Funktionen | Zusätzliche Funktionen |
|----------------------------------|--------------------------|------------------------------------|
| 🎥 Tabelle formatieren | 🚫 SponsorBlock-Integration | 🎞️ FPS/HDR-Anzeige |
| 🎵 Audioextraktion | 📝 Mehrere Untertitel auswählen und zusammenführen | 🔄 yt-dlp automatisch aktualisieren |
| ✨ Einfache Benutzeroberfläche | 💾 Beschreibung und Miniaturansicht speichern | 🛠️ FFmpeg/yt-dlp/Deno-Erkennung |
| 📋 Playlist-Unterstützung und -Auswahl | 🚀 Geschwindigkeitsbegrenzer | ⚙️ Benutzerdefinierte Befehle |
| 📑 Kapitel einbetten | ✂️ Videoabschnitte zuschneiden | 🍪 Mit Cookies anmelden |
| 📜 Download-Verlauf | 🔄 Kanalauswahl freigeben | 🌐 Proxy-Unterstützung |
| 🎚️ Audioformatkonvertierung | 🎬 Videoformateinstellungen | 🆙 Integrierte Updater-Registerkarte |
| 🌍 Allgemeiner Modus |
| 🌍 Lokalisierung in 14 Sprachen | |
</div>
<a id="installation"></a>
## 🚀 Installation
### ⚡ Schnellinstallation (empfohlen)
Installieren Sie YTSage von PyPI:
```bash
pip install ytsage
```
<details>
<summary>🔄Aktualisieren Sie eine vorhandene Installation</summary>
```bash
pip install --upgrade ytsage
```
</details>
Starten Sie dann die App:
```bash
ytsage
```
### 📦 Vorgefertigte ausführbare Dateien
> [👉 Download Latest Release](https://github.com/oop7/YTSage/releases/latest)
#### 🪟 Windows
| Formatieren | Beschreibung |
|--------|-------------|
| ![Windows EXE](https://img.shields.io/badge/Windows-EXE-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Standardinstallationsprogramm |
| ![Windows FFmpeg](https://img.shields.io/badge/Windows-FFmpeg-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Mit FFmpeg gebündelt |
| ![Windows Portable](https://img.shields.io/badge/Windows-Portable-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Portable Version, keine Installation erforderlich |
| ![Windows Portable FFmpeg](https://img.shields.io/badge/Windows-Portable%20FFmpeg-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Tragbar mit FFmpeg, gezippt |
<details>
<summary>🛠️ Installationsschritte</summary>
1. **EXE-Installationsprogramm (`.exe`)**: Doppelklicken Sie auf die Datei und folgen Sie dem Setup-Assistenten.
2. **Portable Version (`.zip`)**: Extrahieren Sie das Archiv an den gewünschten Speicherort und führen Sie `ytsage.exe` aus.
3. **FFmpeg gebündelt**: Wählen Sie die gebündelten FFmpeg-Versionen, wenn Sie FFmpeg nicht auf Ihrem System installiert haben.
</details>
#### 🐧 Linux
| Formatieren | Beschreibung |
|--------|-------------|
| ![Linux DEB](https://img.shields.io/badge/Linux-DEB-FCC624?style=for-the-badge&logo=linux&logoColor=black) | Debian-Paket |
| ![Linux AppImage](https://img.shields.io/badge/Linux-AppImage-FCC624?style=for-the-badge&logo=linux&logoColor=black) | AppImage, tragbar |
| ![Linux RPM](https://img.shields.io/badge/Linux-RPM-FCC624?style=for-the-badge&logo=linux&logoColor=black) | RPM-Paket |
| ![Flathub](https://img.shields.io/badge/Linux-Flatpak-FCC624?style=for-the-badge&logo=flathub&logoColor=black) | Flatpak-Bundle |
<details>
<summary>🛠️ Installationsschritte</summary>
- **DEB (`.deb`)**:
```bash
sudo dpkg -i ytsage_*.deb
sudo apt-get install -f # Fix missing dependencies if any
```
- **RPM (`.rpm`)**:
```bash
sudo rpm -i ytsage-*.rpm
```
- **AppImage (`.AppImage`)**:
```bash
chmod +x YTSage-*.AppImage
./YTSage-*.AppImage
```
- **Flatpak**: Folgen Sie den Anweisungen auf Flathub oder führen Sie Folgendes aus:
```bash
flatpak install flathub io.github.oop7.ytsage
```
</details>
#### 🍎 macOS
| Formatieren | Beschreibung |
|--------|-------------|
| ![macOS ARM64 APP](https://img.shields.io/badge/macOS-ARM64%20APP-000000?style=for-the-badge&logo=apple&logoColor=white) | Gezippte Anwendung für Apple Silicon |
| ![macOS ARM64 DMG](https://img.shields.io/badge/macOS-ARM64%20DMG-000000?style=for-the-badge&logo=apple&logoColor=white) | Disk-Image-Installationsprogramm für Apple Silicon |
<details>
<summary>🛠️ Installationsschritte</summary>
- **DMG-Installationsprogramm (`.dmg`)**: Doppelklicken Sie zum Mounten und ziehen Sie dann `YTSage.app` in Ihren Anwendungsordner.
- **App-Archiv (`.zip`)**: Extrahieren Sie die ZIP-Datei und verschieben Sie `YTSage.app` in Ihren Anwendungsordner.
*Hinweis: Wenn Sie auf den Fehler „App ist beschädigt“ stoßen, sehen Sie sich das [macOS troubleshooting section](#troubleshooting) unten an.*
</details>
---
<details>
<summary>💻 Manuelle Installation von der Quelle</summary>
### 1. Klonen Sie das Repository
```bash
git clone https://github.com/oop7/YTSage.git
cd YTSage
```
### 2. Abhängigkeiten installieren
#### ⚡ Mit UV
```bash
uv pip install .
```
#### 📦 Oder mit Standard-Pip
```bash
pip install .
```
### 3. Führen Sie die Anwendung aus
```bash
python -m ytsage.main
```
</details>
<a id="screenshots"></a>
## 📸 Screenshots
<div align="center">
<table>
<tr>
<td><img src="../branding/screenshots/Download-Settings.png" alt="Download Settings" width="400"/></td>
<td><img src="../branding/screenshots/playlist.png" alt="Playlist Download" width="400"/></td>
</tr>
<tr>
<td align="center"><em>Download-Einstellungen</em></td>
<td align="center"><em>Playlist-Download</em></td>
</tr>
<tr>
<td><img src="../branding/screenshots/audio_format.png" alt="Audio Format Selection with Save Thumbnail" width="400"/></td>
<td><img src="../branding/screenshots/Custom-Option.png" alt="Custom Options" width="400"/></td>
</tr>
<tr>
<td align="center"><em>Audioformat</em></td>
<td align="center"><em>Benutzerdefinierte Optionen</em></td>
</tr>
</table>
</div><a id="usage"></a>
## 📖 Verwendung
<details>
<summary>🎯 Grundlegende Verwendung</summary>
1. **YTSage starten**
2. **YouTube-URL einfügen** (oder verwenden Sie die Schaltfläche „URL einfügen“)
3. **Klicken Sie auf „Analysieren“**
4. **Format auswählen:**
- `Video` für Video-Downloads
- `Audio Only` zur Audioextraktion
5. **Optionen wählen:**
- Untertitel aktivieren und Sprache auswählen
- Untertitelzusammenführung aktivieren
- Miniaturansicht speichern
- Entfernen Sie Sponsorsegmente
- Beschreibung speichern
- Kapitel einbetten
6. **Ausgabeverzeichnis auswählen**
7. **Klicken Sie auf „Herunterladen“**
> 💡 Das Standard-Download-Verzeichnis ist der Ordner „Downloads“ des Benutzers.
</details>
<details>
<summary>📋 Playlist-Download</summary>
1. **Playlist-URL einfügen**
2. **Klicken Sie auf „Analysieren“**
3. **Wählen Sie Videos aus der Playlist-Auswahl aus (optional, standardmäßig alle)**
4. **Wählen Sie das gewünschte Format/die gewünschte Qualität**
5. **Klicken Sie auf „Herunterladen“**
> 💡 Die Anwendung verwaltet die Download-Warteschlange automatisch
</details>
<details>
<summary>🌍 Allgemeiner Modus für Nicht-YouTube-Websites</summary>
Verwenden Sie den generischen Modus, wenn Sie möchten, dass YTSage URLs von Websites akzeptiert, die von yt-dlp unterstützt werden, wie z. B. Dailymotion, CBC Gem, TikTok und andere.
So verwenden Sie es:
1. Öffnen Sie `Download Settings`.
2. Aktivieren Sie `Generic Mode`.
3. Fügen Sie eine unterstützte Nicht-YouTube-Video- oder Playlist-URL ein.
4. Klicken Sie auf `Analyze`.
5. Wählen Sie ein Format und laden Sie es wie gewohnt herunter.
Hinweise:
- Der generische Modus ändert nur die URL-Validierung innerhalb von YTSage. Die Zielsite muss weiterhin von Ihrer installierten yt-dlp-Version unterstützt werden.
- Einige Websites erfordern je nach Extraktor Cookies, eine Anmeldesitzung, einen Proxy oder zusätzliche YT-DLP-Argumente.
- Wenn eine Site ausfällt, aktualisieren Sie yt-dlp zunächst über die Registerkarte des integrierten Updaters, bevor Sie das Problem melden.
</details>
<details>
<summary>🧰 Medien- und Download-Optionen</summary>
- **Untertiteloptionen:** Sprachen filtern und Untertitel in die Videodatei einbetten
- **Untertitel zusammenführen:** Untertitel für fest codierte Untertitel in die Videodatei einbinden
- **Beschreibung speichern:** Speichern Sie die Videobeschreibung als Textdatei
- **Miniaturansicht speichern:** Speichern Sie die Miniaturansicht des Videos als Bilddatei
- **Kapitel einbetten:** Betten Sie Kapitelmarkierungen als Metadaten für kompatible Videoplayer ein
- **Sponsorensegmente entfernen:** Entfernen Sie Sponsorsegmente aus dem Video mit SponsorBlock
- **Video zuschneiden:** Laden Sie nur bestimmte Teile eines Videos herunter, indem Sie Zeitbereiche im Format `HH:MM:SS` angeben
</details>
<details>
<summary>⚙️ Ausgabe- und Dateieinstellungen</summary>
- **Geschwindigkeitsbegrenzer:** Begrenzen Sie die Download-Geschwindigkeit, zum Beispiel `500K` auf 500 KB/s
- **Download-Pfad speichern:** Speichern Sie den Standard-Download-Pfad für zukünftige Downloads. Verfügbar unter **Download-Einstellungen → Download-Pfad**.
- **Format des Ausgabedateinamens:** Passen Sie das Format des Ausgabedateinamens mithilfe von Variablen wie `%(title)s`, `%(uploader)s` und `%(resolution)s` an. Verfügbar unter **Download-Einstellungen → Dateinamenformat**.
- **Ausgabeformat erzwingen:** Video-Downloads in ein bestimmtes Containerformat wie `mp4`, `webm` oder `mkv` erzwingen. Verfügbar unter **Download-Einstellungen → Ausgabeformat-Einstellungen**.
- **Audioformatkonvertierung:** Konvertieren Sie reine Audio-Downloads in bevorzugte Formate wie `AAC`, `MP3`, `FLAC`, `WAV`, `Opus`, `M4A`, `Vorbis` oder `Best`. Verfügbar unter **Download-Einstellungen → Audioformat-Einstellungen**.
</details>
<details>
<summary>🌐 Zugang und Netzwerk</summary>
- **Mit Cookies anmelden:** Melden Sie sich mit Cookies bei YouTube an, um auf private Inhalte zuzugreifen.
So verwenden Sie es:
1. **Empfohlen:** Verwenden Sie die integrierte Option „Extract cookies from browser“ in der App und wählen Sie dann Ihren Browser und optional ein Profil aus.
2. Alternativ können Sie Cookies auch manuell extrahieren:
a. Exportieren Sie Cookies aus Ihrem Browser mit einer Erweiterung wie [cookie-editor](https://github.com/moustachauve/cookie-editor?tab=readme-ov-file)
b. Kopieren Sie die Cookies im Netscape-Format
c. Erstellen Sie eine Datei mit dem Namen `cookies.txt` und fügen Sie die Cookies darin ein
d. Wählen Sie in der App die Datei „cookies.txt“ aus
- **Proxy-Unterstützung:** Verwenden Sie einen Proxy-Server für Downloads, zum Beispiel `http://<proxy-server>:<port>`
- **Generischer Modus:** Ermöglicht YTSage die Analyse und den Download von Nicht-YouTube-Websites, die von yt-dlp unterstützt werden. Aktivieren Sie es über **Download-Einstellungen → Allgemeiner Modus**.
</details>
<details>
<summary>🛠️ Werkzeuge und Wartung</summary>
- **Benutzerdefinierte Befehle:** Greifen Sie über Befehlszeilenargumente auf erweiterte yt-dlp-Funktionen zu
- **Registerkarte „Updater“:** Integrierte Update-Tools von einem Ort aus in den benutzerdefinierten Optionen verwalten:
- **yt-dlp-Updates:** Suchen Sie nach Updates und wechseln Sie zwischen den Veröffentlichungskanälen Stable und Nightly
- **FFmpeg-Versionsprüfer:** Überprüfen Sie Ihre FFmpeg-Version und öffnen Sie die Installationsanleitungen
- **Deno-Updates:** Überprüfen und aktualisieren Sie die Deno-Laufzeitumgebung
- **FFmpeg/yt-dlp/Deno-Erkennung:** Erkennt automatisch FFmpeg-, yt-dlp- und Deno-Pfade und -Versionen im Info-Dialog.
- **Download-Verlauf:** Zeigen Sie frühere Downloads mit Miniaturansichten und Status über die Schaltfläche **Verlauf** an.
</details>
<details>
<summary>🌍 Lokalisierung</summary>
YTSage unterstützt **14 Sprachen** für weltweite Zugänglichkeit. Wählen Sie Ihre bevorzugte Sprache unter **Benutzerdefinierte Optionen → Sprache** aus.
### Unterstützte Sprachen
| Sprache | Code | Sprache | Code |
|----------|------|----------|------|
| 🇺🇸 Englisch | `en` | 🇪🇸 Spanisch | `es` |
| 🇸🇦 Arabisch | `ar` | 🇫🇷 Französisch | `fr` |
| 🇩🇪 Deutsch | `de` | 🇮🇳 Hindi | `hi` |
| 🇮🇩 Indonesisch | `id` | 🇮🇹 Italienisch | `it` |
| 🇯🇵 Japanisch | `ja` | 🇵🇱 Polnisch | `pl` |
| 🇧🇷 Portugiesisch | `pt` | 🇷🇺 Russisch | `ru` |
| 🇹🇷 Türkisch | `tr` | 🇨🇳 Chinesisch | `zh` |
### README-Übersetzungen
| Sprache | Datei | Sprache | Datei |
|----------|------|----------|------|
| 🇺🇸 Englisch | [README.md](../README.md) | 🇪🇸 Spanisch | [README.es.md](README.es.md)
| 🇸🇦 Arabisch | [README.ar.md](README.ar.md) | 🇫🇷 Französisch | [README.fr.md](README.fr.md) |
| 🇩🇪 Deutsch | [README.de.md](README.de.md) | 🇮🇳 Hindi | [README.hi.md](README.hi.md) |
| 🇮🇩 Indonesisch | [README.id.md](README.id.md) | 🇮🇹 Italienisch | [README.it.md](README.it.md) |
| 🇯🇵 Japanisch | [README.ja.md](README.ja.md) | 🇵🇱 Polnisch | [README.pl.md](README.pl.md) |
| 🇧🇷 Portugiesisch | [README.pt.md](README.pt.md) | 🇷🇺 Russisch | [README.ru.md](README.ru.md) |
| 🇹🇷 Türkisch | [README.tr.md](README.tr.md) | 🇨🇳 Chinesisch | [README.zh.md](README.zh.md) |
> 💡 **Möchten Sie eine Übersetzung beisteuern?** Schauen Sie sich den Abschnitt [Contributing](#contributing) an, um uns beim Hinzufügen weiterer Sprachen zu helfen!
</details>
<a id="troubleshooting"></a>
## 🛠️ Fehlerbehebung
<details>
<summary>Klicken Sie hier, um häufige Probleme und Lösungen anzuzeigen</summary>
- **Formattabelle wird nicht angezeigt:** Aktualisieren Sie yt-dlp auf die neueste Version und wechseln Sie jede Nacht zu yt-dlp.
- **Download schlägt fehl:** Überprüfen Sie Ihre Internetverbindung und stellen Sie sicher, dass das Video verfügbar ist.
- **Spezifische Downloadfehler:**
- **Private Videos:** Verwenden Sie die Cookie-Authentifizierung, um auf private Inhalte zuzugreifen.
- **Inhalte mit Altersbeschränkung:** Melden Sie sich bei Ihrem YouTube-Konto an, um Videos mit Altersbeschränkung anzusehen.
- **Geoblockierte Videos:** Erwägen Sie die Verwendung eines VPN, um regionale Beschränkungen zu umgehen.
- **Entfernte/gelöschte Videos:** Das Video ist nicht mehr auf YouTube verfügbar.
- **Live-Streams:** Live-Streams können nicht heruntergeladen werden; Warten Sie, bis der Stream beendet ist.
- **Netzwerkfehler:** Überprüfen Sie Ihre Internetverbindung und versuchen Sie es erneut.
- **Ungültige URLs:** Stellen Sie sicher, dass die URL korrekt ist und von einer unterstützten Plattform stammt.
- **Premium-Inhalte:** Erfordert eine YouTube Premium-Mitgliedschaft.
- **Urheberrechtliche Sperren:** Der Inhalt ist aufgrund von Urheberrechtsbeschränkungen gesperrt.
- **Video- und Audiodateien nach dem Download trennen:** Dies passiert, wenn FFmpeg fehlt oder nicht erkannt wird. YTSage benötigt FFmpeg, um hochwertige Video- und Audiostreams zusammenzuführen.
- **Lösung:** Stellen Sie sicher, dass FFmpeg im PATH Ihres Systems installiert und zugänglich ist. Für Windows-Benutzer ist es am einfachsten, die Datei „YTSage-v<version>-ffmpeg.exe“ herunterzuladen, die im Lieferumfang von FFmpeg enthalten ist.
---
#### 🛡️ Windows Defender/Antivirus-Warnung
Einige Antivirenprogramme kennzeichnen die „.exe“-Dateien möglicherweise als falsch positive Ergebnisse. Dies ist eine **bekannte Einschränkung** von Paketanwendungen.
**Warum das passiert:**
Antivirus-Heuristiken können gepackte ausführbare Dateien fälschlicherweise als verdächtig identifizieren
**Sichere Alternativen:**
- ✅ **Pip-Installation verwenden:** `pip install ytsage` (empfohlen)
- ✅ **Aus dem Quellcode erstellen**: Folgen Sie diesem [guide](../.github/CI_CD_README.md)
- ✅ **Setzen Sie die Anwendung in Ihre Antivirensoftware auf die Whitelist
#### 🍎 macOS: „App ist beschädigt und kann nicht geöffnet werden“
Wenn dieser Fehler unter macOS Sonoma oder neuer auftritt, müssen Sie das Quarantäneattribut entfernen.
1. **Öffnen Sie das Terminal** (Sie können es mit Spotlight finden).
2. **Geben Sie den folgenden Befehl ein**, drücken Sie aber noch nicht die Eingabetaste. Achten Sie darauf, das Leerzeichen am Ende einzufügen:
```bash
xattr -d com.apple.quarantine
```
3. **Ziehen Sie die Datei „YTSage.app“ aus Ihrem Finder-Fenster und legen Sie sie direkt im Terminalfenster ab. Dadurch wird automatisch der richtige Dateipfad eingefügt.
4. **Drücken Sie die Eingabetaste**, um den Befehl auszuführen.
5. **Versuchen Sie erneut, YTSage.app zu öffnen.** Es sollte jetzt korrekt starten.
---
#### **Konfigurationsorte (Erweitert)**
- **Windows:** `%LOCALAPPDATA%\YTSage`
- **macOS:** `~/Library/Application Support/YTSage`
- **Linux:** `~/.local/share/YTSage`
</details>
<a id="sponsor"></a>
## 💖 Sponsor
Wenn Sie mit YTSage Zeit sparen, sollten Sie das Projekt sponsern. Durch Sponsoring können Entwicklungszeit, plattformübergreifende Tests und zukünftige Verbesserungen abgedeckt werden.
- GitHub-Sponsoren: https://github.com/sponsors/oop7
- Der Sponsor-Link ist auch direkt in der App im Info-Dialog verfügbar.
[![Sponsor YTSage](https://img.shields.io/badge/Sponsor-YTSage-EA4AAA?style=for-the-badge&logo=github&logoColor=white)](https://github.com/sponsors/oop7)
<a id="contributing"></a>
## 👥 Mitwirken
Wir freuen uns über Beiträge! So können Sie helfen:
1. 🍴 Forken Sie das Repository
2. 🌿 Erstellen Sie Ihren Feature-Branch:
```bash
git checkout -b feature/AmazingFeature
```
3. 💾 Übernehmen Sie Ihre Änderungen:
```bash
git commit -m 'Add some AmazingFeature'
```
4. 📤 Zur Filiale schieben:
```bash
git push origin feature/AmazingFeature
```
5. 🔄 Öffnen Sie eine Pull-Anfrage
### 🌍 Mitwirkende Übersetzungen
- Aktualisieren Sie die passende lokalisierte README-Datei (zum Beispiel `README.es.md`)
- Halten Sie App-Strings synchron, indem Sie `ytsage/languages/<code>.json` bearbeiten
- Wenn Ihre Sprache fehlt, beginnen Sie mit `README.md` und erstellen Sie `README.<code>.md`
<details>
<summary>📂 Projektstruktur</summary>
## YTSage Projektstruktur
Dieses Dokument beschreibt die organisierte Ordnerstruktur von YTSage.
### 📁 Projektstruktur
```
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
```
</details>
## ⭐️ Sterngeschichte
<div align="center">
## Sterngeschichte
<a href="https://www.star-history.com/#oop7/YTSage&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date" />
</picture>
</a>
</div>
## 📜 Lizenz
Dieses Projekt ist unter der MIT-Lizenz lizenziert Einzelheiten finden Sie in der Datei „LICENSE“.
## 🙏 Danksagungen
<details>
<summary>Danksagungen anzeigen</summary>
<div align="center">
<p>Ein herzliches Dankeschön an alle, die zu diesem Projekt beigetragen haben, indem sie ein Problem geöffnet haben, um eine Verbesserung vorzuschlagen oder einen Fehler zu melden.</p>
<table>
<tr class="section"><th colspan="2">Kernkomponenten</th></tr>
<tr>
<td width="35%"><a href="https://github.com/yt-dlp/yt-dlp">yt-dlp</a></td>
<td>Download Engine</td>
</tr>
<tr>
<td><a href="https://ffmpeg.org/">FFmpeg</a></td>
<td>Medienverarbeitung</td>
</tr>
<tr>
<td><a href="https://deno.com/">Deno</a></td>
<td>Laufzeit für die Integration mit yt-dlp</td>
</tr>
<tr class="section"><th colspan="2">Bibliotheken und Frameworks</th></tr>
<tr>
<td><a href="https://wiki.qt.io/Qt_for_Python">PySide6</a></td>
<td>GUI-Framework</td>
</tr>
<tr>
<td><a href="https://python-pillow.org/">Kissen</a></td>
<td>Bildverarbeitung</td>
</tr>
<tr><td><a href="https://requests.readthedocs.io/">Anfragen</a></td>
<td>HTTP-Anfragen</td>
</tr>
<tr>
<td><a href="https://packaging.python.org/">Verpackung</a></td>
<td>Versions- und Pakethandhabung</td>
</tr>
<tr>
<td><a href="https://python-markdown.github.io/">Abschlag</a></td>
<td>Markdown-Rendering</td>
</tr>
<tr>
<td><a href="https://github.com/Delgan/loguru">loguru</a></td>
<td>Protokollierung</td>
</tr>
<tr class="section"><th colspan="2">Vermögenswerte und Mitwirkende</th></tr>
<tr>
<td><a href="https://pixabay.com/sound-effects/new-notification-09-352705/">Neue Benachrichtigung 09 von Universfield</a></td>
<td>Benachrichtigungston</td>
</tr>
<tr>
<td><a href="https://github.com/viru185">viru185</a></td>
<td>Code-Mitwirkender</td>
</tr>
</table>
</div>
</details>
## ⚠️ Haftungsausschluss
Dieses Tool ist nur für den persönlichen Gebrauch bestimmt. Bitte respektieren Sie die Nutzungsbedingungen und die Rechte der Inhaltsersteller von YouTube.
---
<div align="center">
Hergestellt mit ❤️ von [oop7](https://github.com/oop7)
</div>
+617
View File
@@ -0,0 +1,617 @@
<div align="center">
<img src="../branding/svg/ytsage-wordmark.svg" width="400" alt="ytsage-wordmark">
<img src="../branding/screenshots/main.png" width="800" alt="YTSage Interface"/>
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-1f2937?style=for-the-badge&logo=python&logoColor=white)](https://www.python.org/downloads/)
[![PyPI Downloads](https://img.shields.io/pepy/dt/ytsage?color=1f2937&style=for-the-badge&label=downloads&logo=python&logoColor=white)](https://pepy.tech/project/ytsage)
[![GitHub Downloads](https://img.shields.io/github/downloads/oop7/YTSage/total?color=1f2937&style=for-the-badge&label=downloads&logo=github&logoColor=white)](https://github.com/oop7/YTSage/releases)
[![License: MIT](https://img.shields.io/badge/License-MIT-1f2937?style=for-the-badge&logo=opensource&logoColor=white)](https://opensource.org/licenses/MIT)
[![Supported Platforms](https://img.shields.io/badge/platform-cross--platform-1f2937?style=for-the-badge&logo=github&logoColor=white)](https://github.com/oop7/YTSage/releases)
[![GitHub Stars](https://img.shields.io/github/stars/oop7/YTSage?color=c90000&style=for-the-badge&logo=github&logoColor=white)](https://github.com/oop7/YTSage/stargazers)
[![PyPI version](https://img.shields.io/pypi/v/ytsage?color=c90000&style=for-the-badge&logo=pypi&logoColor=white)](https://pypi.org/project/ytsage/)
[![GitHub Sponsors](https://img.shields.io/github/sponsors/oop7?color=c90000&style=for-the-badge&logo=githubsponsors&logoColor=white)](https://github.com/sponsors/oop7)
**Un descargador de YouTube moderno con una interfaz PySide6 limpia.**
Descargue videos en cualquier calidad, extraiga audio, obtenga subtítulos y más.
### 🌍 LÉAME Idiomas
Inglés: [EN](../README.md)
| العربية: [AR](README.ar.md)
| Alemán: [DE](README.de.md)
| Español: [ES](README.es.md)
| Francés: [FR](README.fr.md)
| हिन्दी: [HI](README.hi.md)
| Bahasa Indonesia: [ID](README.id.md)
| Italiano: [IT](README.it.md)
| Traducción: [JA](README.ja.md)
| Polonia: [PL](README.pl.md)
| Português: [PT](README.pt.md)
| Ruso: [RU](README.ru.md)
| Turco: [TR](README.tr.md)
| Traducción: [ZH](README.zh.md)
<p align="center">
<a href="#installation">Instalación</a> •
<a href="#features">Características</a> •
<a href="#usage">Uso</a> •
<a href="#screenshots">Capturas de pantalla</a> •
<a href="#troubleshooting">Solución de problemas</a> •
<a href="#sponsor">Patrocinador</a> •
<a href="#contributing">Contribuyendo</a>
</p>
</div>
---
<a id="why-ytsage"></a>
## ❓ ¿Por qué YTSage?
YTSage está diseñado para usuarios que desean un **descargador de YouTube simple pero potente**. A diferencia de otras herramientas, ofrece:
- Una interfaz PySide6 limpia y moderna
- Descargas con un solo clic de vídeo, audio y subtítulos.
- Funciones avanzadas como SponsorBlock, combinación de subtítulos y selección de listas de reproducción
- Modo genérico opcional para sitios compatibles con yt-dlp más allá de YouTube
- Soporte multiplataforma y fácil instalación.
<a id="features"></a>
## ✨ Características
<div align="center">
| Características principales | Funciones avanzadas | Funciones adicionales |
|-----------------------------------|-----------------------------------------|------------------------------------|
| 🎥 Tabla de formato | 🚫 Integración de SponsorBlock | 🎞️ Pantalla FPS/HDR |
| 🎵 Extracción de audio | 📝 Seleccionar y fusionar múltiples subtítulos | 🔄 Actualización automática yt-dlp |
| ✨ Interfaz de usuario sencilla | 💾 Guardar descripción y miniatura | 🛠️ FFmpeg/yt-dlp/Detección de Deno |
| 📋 Soporte y selector de listas de reproducción | 🚀 Limitador de velocidad | ⚙️ Comandos personalizados |
| 📑 Insertar capítulos | ✂️ Recortar secciones de video | 🍪 Iniciar sesión con cookies |
| 📜 Historial de descargas | 🔄 Selección de canal de lanzamiento | 🌐 Soporte de proxy |
| 🎚️ Conversión de formato de audio | 🎬 Configuración de formato de vídeo | 🆙 Pestaña de actualización incorporada |
| 🌍 Modo Genérico |
| 🌍 Localización en 14 idiomas | |
</div>
<a id="installation"></a>
## 🚀 Instalación
### ⚡ Instalación rápida (recomendado)
Instale YTSage desde PyPI:
```bash
pip install ytsage
```
<details>
<summary>🔄 Actualizar una instalación existente</summary>
```bash
pip install --upgrade ytsage
```
</details>
Luego inicie la aplicación:
```bash
ytsage
```
### 📦 Ejecutables prediseñados
> [👉 Download Latest Release](https://github.com/oop7/YTSage/releases/latest)
#### 🪟Ventanas
| Formato | Descripción |
|--------|-------------|
| ![Windows EXE](https://img.shields.io/badge/Windows-EXE-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Instalador estándar |
| ![Windows FFmpeg](https://img.shields.io/badge/Windows-FFmpeg-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Con FFmpeg incluido |
| ![Windows Portable](https://img.shields.io/badge/Windows-Portable-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Versión portátil, no requiere instalación |
| ![Windows Portable FFmpeg](https://img.shields.io/badge/Windows-Portable%20FFmpeg-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Portátil con FFmpeg, con cremallera |
<details>
<summary>🛠️ Pasos de instalación</summary>
1. **Instalador EXE (`.exe`)**: haga doble clic en el archivo y siga el asistente de configuración.
2. **Versión portátil (`.zip`)**: extraiga el archivo a la ubicación deseada y ejecute `ytsage.exe`.
3. **FFmpeg incluido**: elija las versiones incluidas de FFmpeg si no tiene FFmpeg instalado en su sistema.
</details>
#### 🐧Linux
| Formato | Descripción |
|--------|-------------|
| ![Linux DEB](https://img.shields.io/badge/Linux-DEB-FCC624?style=for-the-badge&logo=linux&logoColor=black) | Paquete Debian |
| ![Linux AppImage](https://img.shields.io/badge/Linux-AppImage-FCC624?style=for-the-badge&logo=linux&logoColor=black) | AppImage, portátil |
| ![Linux RPM](https://img.shields.io/badge/Linux-RPM-FCC624?style=for-the-badge&logo=linux&logoColor=black) | Paquete RPM |
| ![Flathub](https://img.shields.io/badge/Linux-Flatpak-FCC624?style=for-the-badge&logo=flathub&logoColor=black) | Paquete plano |
<details>
<summary>🛠️ Pasos de instalación</summary>
- **DEB (`.deb`)**:
```bash
sudo dpkg -i ytsage_*.deb
sudo apt-get install -f # Fix missing dependencies if any
```
- **RPM (`.rpm`)**:
```bash
sudo rpm -i ytsage-*.rpm
```
- **Imagen de aplicación (`.AppImage`)**:
```bash
chmod +x YTSage-*.AppImage
./YTSage-*.AppImage
```
- **Flatpak**: siga las instrucciones en Flathub o ejecute:
```bash
flatpak install flathub io.github.oop7.ytsage
```
</details>
#### 🍎macOS
| Formato | Descripción |
|--------|-------------|
| ![macOS ARM64 APP](https://img.shields.io/badge/macOS-ARM64%20APP-000000?style=for-the-badge&logo=apple&logoColor=white) | Aplicación comprimida para Apple Silicon |
| ![macOS ARM64 DMG](https://img.shields.io/badge/macOS-ARM64%20DMG-000000?style=for-the-badge&logo=apple&logoColor=white) | Instalador de imágenes de disco para Apple Silicon |
<details>
<summary>🛠️ Pasos de instalación</summary>
- **Instalador de DMG (`.dmg`)**: haga doble clic para montar, luego arrastre `YTSage.app` a su carpeta de Aplicaciones.
- **Archivo de aplicaciones (`.zip`)**: extrae el zip y mueve `YTSage.app` a tu carpeta de Aplicaciones.
*Nota: Si encuentra el error "La aplicación está dañada", consulte el [macOS troubleshooting section](#troubleshooting) a continuación.*
</details>
---
<details>
<summary>💻 Instalación manual desde la fuente</summary>
### 1. Clonar el repositorio
```bash
git clone https://github.com/oop7/YTSage.git
cd YTSage
```
### 2. Instalar dependencias
#### ⚡ Con ultravioleta
```bash
uv pip install .
```
#### 📦 O con pip estándar
```bash
pip install .
```
### 3. Ejecute la aplicación
```bash
python -m ytsage.main
```
</details>
<a id="screenshots"></a>
## 📸 Capturas de pantalla
<div align="center">
<table>
<tr>
<td><img src="../branding/screenshots/Download-Settings.png" alt="Download Settings" width="400"/></td>
<td><img src="../branding/screenshots/playlist.png" alt="Playlist Download" width="400"/></td>
</tr>
<tr>
<td align="center"><em>Configuración de descarga</em></td>
<td align="center"><em>Descargar lista de reproducción</em></td>
</tr>
<tr>
<td><img src="../branding/screenshots/audio_format.png" alt="Audio Format Selection with Save Thumbnail" width="400"/></td>
<td><img src="../branding/screenshots/Custom-Option.png" alt="Custom Options" width="400"/></td>
</tr>
<tr>
<td align="center"><em>Formato de audio</em></td>
<td align="center"><em>Opciones personalizadas</em></td>
</tr>
</table>
</div><a id="usage"></a>
## 📖 Uso
<details>
<summary>🎯 Uso básico</summary>
1. **Inicie YTSage**
2. **Pegue la URL de YouTube** (o use el botón "Pegar URL")
3. **Haga clic en "Analizar"**
4. **Seleccione formato:**
- `Video` para descargas de videos
- `Audio Only` para extracción de audio
5. **Elija Opciones:**
- Habilitar subtítulos y seleccionar idioma.
- Habilitar la combinación de subtítulos
- Guardar miniatura
- Eliminar segmentos de patrocinadores
- Guardar descripción
- Insertar capítulos
6. **Seleccione el directorio de salida**
7. **Haga clic en "Descargar"**
> 💡 El directorio de descarga predeterminado es la carpeta "Descargas" del usuario.
</details>
<details>
<summary>📋 Descarga de lista de reproducción</summary>
1. **Pegar URL de la lista de reproducción**
2. **Haga clic en "Analizar"**
3. **Seleccione videos del selector de lista de reproducción (opcional, el valor predeterminado es todos)**
4. **Elija el formato/calidad deseado**
5. **Haga clic en "Descargar"**
> 💡 La aplicación maneja automáticamente la cola de descarga
</details>
<details>
<summary>🌍 Modo genérico para sitios que no son de YouTube</summary>
Utilice el modo genérico cuando desee que YTSage acepte URL de sitios compatibles con yt-dlp, como Dailymotion, CBC Gem, TikTok y otros.
Cómo usarlo:
1. Abra `Download Settings`.
2. Habilite `Generic Mode`.
3. Pegue una URL de lista de reproducción o video compatible que no sea de YouTube.
4. Haga clic en `Analyze`.
5. Elija un formato y descárguelo como de costumbre.
Notas:
- El modo genérico solo cambia la validación de URL dentro de YTSage. El sitio de destino aún debe ser compatible con la versión de yt-dlp instalada.
- Algunos sitios requieren cookies, una sesión de inicio de sesión, un proxy o argumentos yt-dlp adicionales según el extractor.
- Si un sitio falla, actualice primero yt-dlp desde la pestaña de actualización integrada antes de informar el problema.
</details>
<details>
<summary>🧰 Opciones de descarga y medios</summary>
- **Opciones de subtítulos:** Filtrar idiomas e incrustar subtítulos en el archivo de video
- **Combinación de subtítulos:** Combina subtítulos en el archivo de video para obtener subtítulos codificados
- **Guardar descripción:** Guarde la descripción del video como un archivo de texto.
- **Guardar miniatura:** Guarda la miniatura del vídeo como un archivo de imagen.
- **Incrustar capítulos:** Incrustar marcadores de capítulos como metadatos para reproductores de video compatibles
- **Eliminar segmentos de patrocinador:** Elimina segmentos de patrocinador del video usando SponsorBlock
- **Recortar video:** Descargue solo partes específicas de un video especificando rangos de tiempo en formato `HH:MM:SS`
</details>
<details>
<summary>⚙️ Configuración de archivos y salida</summary>
- **Limitador de velocidad:** Limita la velocidad de descarga, por ejemplo `500K` a 500 KB/s
- **Guardar ruta de descarga:** Guarde la ruta de descarga predeterminada para futuras descargas. Disponible en **Configuración de descarga → Ruta de descarga**.
- **Formato de nombre de archivo de salida:** Personalice el formato de nombre de archivo de salida usando variables como `%(title)s`, `%(uploader)s` y `%(resolution)s`. Disponible en **Configuración de descarga → Formato de nombre de archivo**.
- **Forzar formato de salida:** Fuerza las descargas de videos en un formato contenedor específico como `mp4`, `webm` o `mkv`. Disponible en **Configuración de descarga → Configuración de formato de salida**.
- **Conversión de formato de audio:** Convierta descargas de solo audio a formatos preferidos como `AAC`, `MP3`, `FLAC`, `WAV`, `Opus`, `M4A`, `Vorbis` o `Best`. Disponible en **Configuración de descarga → Configuración de formato de audio**.
</details>
<details>
<summary>🌐 Acceso y Red</summary>
- **Iniciar sesión con cookies:** Inicie sesión en YouTube utilizando cookies para acceder a contenido privado.
Cómo usarlo:
1. **Recomendado:** Utilice la opción `Extract cookies from browser` incorporada en la aplicación, luego seleccione su navegador y, opcionalmente, un perfil.
2. Alternativamente, extraiga las cookies manualmente:
un. Exporte cookies desde su navegador usando una extensión como [cookie-editor](https://github.com/moustachauve/cookie-editor?tab=readme-ov-file)
B. Copiar las cookies en formato Netscape
c. Cree un archivo llamado `cookies.txt` y pegue las cookies en él
d. Seleccione el archivo `cookies.txt` en la aplicación
- **Soporte de proxy:** Utilice un servidor proxy para descargas, por ejemplo `http://<proxy-server>:<port>`
- **Modo genérico:** Permita que YTSage analice y descargue desde sitios que no sean de YouTube compatibles con yt-dlp. Habilítelo desde **Configuración de descarga → Modo genérico**.
</details>
<details>
<summary>🛠️ Herramientas y Mantenimiento</summary>
- **Comandos personalizados:** Acceda a funciones avanzadas de yt-dlp a través de argumentos de línea de comando
- **Pestaña Actualizador:** Administre las herramientas de actualización integradas desde un solo lugar en Opciones personalizadas:
- **Actualizaciones de yt-dlp:** Busque actualizaciones y cambie entre los canales de lanzamiento estable y nocturno
- **Comprobador de versiones de FFmpeg:** Verifique su versión de FFmpeg y abra las guías de instalación
- **Actualizaciones de Deno:** Verifique y actualice el tiempo de ejecución de Deno
- **Detección de FFmpeg/yt-dlp/Deno:** Detecta automáticamente las rutas y versiones de FFmpeg, yt-dlp y Deno desde el cuadro de diálogo Acerca de.
- **Historial de descargas:** Vea descargas anteriores con miniaturas y estados desde el botón **Historial**.
</details>
<details>
<summary>🌍 Localización</summary>
YTSage admite **14 idiomas** para accesibilidad mundial. Seleccione su idioma preferido en **Opciones personalizadas → Idioma**.
### Idiomas admitidos
| Idioma | Código | Idioma | Código |
|----------|------|----------|------|
| 🇺🇸 Inglés | `en` | 🇪🇸 Español | `es` |
| 🇸🇦 Árabe | `ar` | 🇫🇷 Francés | `fr` |
| 🇩🇪 Alemán | `de` | 🇮🇳 hindi | `hi` |
| 🇮🇩 Indonesio | `id` | 🇮🇹 Italiano | `it` |
| 🇯🇵 Japonés | `ja` | 🇵🇱 Polaco | `pl` |
| 🇧🇷 Portugués | `pt` | 🇷🇺 Ruso | `ru` |
| 🇹🇷 Turco | `tr` | 🇨🇳 Chino | `zh` |
### Léame Traducciones
| Idioma | Archivo | Idioma | Archivo |
|----------|------|----------|------|
| 🇺🇸 Inglés | [README.md](../README.md) | 🇪🇸 Español | [README.es.md](README.es.md)
| 🇸🇦 Árabe | [README.ar.md](README.ar.md) | 🇫🇷 Francés | [README.fr.md](README.fr.md) |
| 🇩🇪 Alemán | [README.de.md](README.de.md) | 🇮🇳 hindi | [README.hi.md](README.hi.md) |
| 🇮🇩 Indonesio | [README.id.md](README.id.md) | 🇮🇹 Italiano | [README.it.md](README.it.md) |
| 🇯🇵 Japonés | [README.ja.md](README.ja.md) | 🇵🇱 Polaco | [README.pl.md](README.pl.md) |
| 🇧🇷 Portugués | [README.pt.md](README.pt.md) | 🇷🇺 Ruso | [README.ru.md](README.ru.md) |
| 🇹🇷 Turco | [README.tr.md](README.tr.md) | 🇨🇳 Chino | [README.zh.md](README.zh.md) |
> 💡 **¿Quieres contribuir con una traducción?** ¡Consulta la sección [Contributing](#contributing) para ayudarnos a agregar más idiomas!
</details>
<a id="troubleshooting"></a>
## 🛠️ Solución de problemas
<details>
<summary>Haga clic para ver problemas y soluciones comunes</summary>
- **La tabla de formato no se muestra:** Actualice yt-dlp a la última versión y cambie a yt-dlp todas las noches.
- **La descarga falla:** Verifique su conexión a Internet y asegúrese de que el video esté disponible.
- **Errores de descarga específicos:**
- **Vídeos privados:** Utilice la autenticación de cookies para acceder a contenido privado.
- **Contenido restringido por edad:** Inicie sesión en su cuenta de YouTube para ver videos restringidos por edad.
- **Videos bloqueados geográficamente:** Considere usar una VPN para evitar las restricciones regionales.
- **Videos eliminados/eliminados:** El video ya no está disponible en YouTube.
- **Transmisiones en vivo:** Las transmisiones en vivo no se pueden descargar; espera a que termine la transmisión.
- **Errores de red:** Verifica tu conexión a Internet y vuelve a intentarlo.
- **URL no válidas:** Asegúrese de que la URL sea correcta y provenga de una plataforma compatible.
- **Contenido premium:** Requiere membresía de YouTube Premium.
- **Bloqueos de derechos de autor:** El contenido está bloqueado debido a restricciones de derechos de autor.
- **Separar archivos de video y audio después de la descarga:** Esto sucede cuando falta FFmpeg o no se detecta. YTSage requiere FFmpeg para fusionar transmisiones de audio y video de alta calidad.
- **Solución:** Asegúrese de que FFmpeg esté instalado y sea accesible en la RUTA de su sistema. Para los usuarios de Windows, la opción más sencilla es descargar el archivo `YTSage-v<version>-ffmpeg.exe`, que viene incluido con FFmpeg.
---
#### 🛡️ Advertencia de Windows Defender/Antivirus
Algunos programas antivirus pueden marcar los archivos `.exe` como falsos positivos. Esta es una **limitación conocida** de las aplicaciones empaquetadas.
**Por qué sucede esto:**
- La heurística antivirus puede identificar erróneamente ejecutables empaquetados como sospechosos.
**Alternativas seguras:**
- ✅ **Usar instalación de pip:** `pip install ytsage` (recomendado)
- ✅ **Construir desde la fuente**: siguiendo esto [guide](../.github/CI_CD_README.md)
- ✅ **Incluye la aplicación en la lista blanca** en tu software antivirus
#### 🍎 macOS: "La aplicación está dañada y no se puede abrir"
Si ve este error en macOS Sonoma o posterior, debe eliminar el atributo de cuarentena.
1. **Abrir Terminal** (puedes encontrarlo usando Spotlight).
2. **Escriba el siguiente comando** pero **no** presione Entrar todavía. Asegúrate de incluir el espacio al final:
```bash
xattr -d com.apple.quarantine
```
3. **Arrastre el archivo `YTSage.app`** desde la ventana de su Finder y suéltelo directamente en la ventana de Terminal. Esto pegará automáticamente la ruta del archivo correcta.
4. **Presione Entrar** para ejecutar el comando.
5. **Intenta abrir YTSage.app nuevamente.** Ahora debería iniciarse correctamente.
---
#### **Ubicaciones de configuración (avanzada)**
- **Windows:** `%LOCALAPPDATA%\YTSage`
- **macOS:** `~/Library/Application Support/YTSage`
- **Linux:** `~/.local/share/YTSage`
</details>
<a id="sponsor"></a>
## 💖 Patrocinador
Si YTSage le ahorra tiempo, considere patrocinar el proyecto. El patrocinio ayuda a cubrir el tiempo de desarrollo, las pruebas en todas las plataformas y las mejoras futuras.
- Patrocinadores de GitHub: https://github.com/sponsors/oop7
- El enlace del patrocinador también está disponible directamente dentro de la aplicación desde el cuadro de diálogo Acerca de.
[![Sponsor YTSage](https://img.shields.io/badge/Sponsor-YTSage-EA4AAA?style=for-the-badge&logo=github&logoColor=white)](https://github.com/sponsors/oop7)
<a id="contributing"></a>
## 👥 Contribuyendo
¡Agradecemos las contribuciones! Así es como puedes ayudar:
1. 🍴 Bifurca el repositorio
2. 🌿 Crea tu rama de funciones:
```bash
git checkout -b feature/AmazingFeature
```
3. 💾 Confirme sus cambios:
```bash
git commit -m 'Add some AmazingFeature'
```
4. 📤 Empuje a la sucursal:
```bash
git push origin feature/AmazingFeature
```
5. 🔄 Abra una solicitud de extracción
### 🌍 Contribuyendo con traducciones
- Actualice el archivo README localizado coincidente (por ejemplo `README.es.md`)
- Mantenga las cadenas de aplicaciones sincronizadas editando `ytsage/languages/<code>.json`
- Si falta su idioma, comience desde `README.md` y cree `README.<code>.md`
<details>
<summary>📂 Estructura del proyecto</summary>
## YTSage - Estructura del proyecto
Este documento describe la estructura de carpetas organizada de YTSage.
### 📁 Estructura del proyecto
```
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
```
</details>
## ⭐️ Historia de las estrellas
<div align="center">
## Historia de las estrellas
<a href="https://www.star-history.com/#oop7/YTSage&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date" />
</picture>
</a>
</div>
## 📜 Licencia
Este proyecto tiene la licencia MIT; consulte el archivo [LICENSE](../LICENSE) para obtener más detalles.
## 🙏 Agradecimientos
<details>
<summary>Mostrar agradecimientos</summary>
<div align="center">
<p>Un sincero agradecimiento a todos los que contribuyeron a este proyecto abriendo un problema para sugerir una mejora o informar un error.</p>
<table>
<tr class="section"><th colspan="2">Componentes principales</th></tr>
<tr>
<td width="35%"><a href="https://github.com/yt-dlp/yt-dlp">yt-dlp</a></td>
<td>Motor de descarga</td>
</tr>
<tr>
<td><a href="https://ffmpeg.org/">FFmpeg</a></td>
<td>Procesamiento de medios</td>
</tr>
<tr>
<td><a href="https://deno.com/">Deno</a></td>
<td>Tiempo de ejecución para integración con yt-dlp</td>
</tr>
<tr class="section"><th colspan="2">Bibliotecas y marcos</th></tr>
<tr>
<td><a href="https://wiki.qt.io/Qt_for_Python">PySide6</a></td>
<td>Marco GUI</td>
</tr>
<tr>
<td><a href="https://python-pillow.org/">Almohada</a></td>
<td>Procesamiento de imágenes</td>
</tr>
<tr><td><a href="https://requests.readthedocs.io/">solicitudes</a></td>
<td>Solicitudes HTTP</td>
</tr>
<tr>
<td><a href="https://packaging.python.org/">embalaje</a></td>
<td>Manejo de versiones y paquetes</td>
</tr>
<tr>
<td><a href="https://python-markdown.github.io/">rebaja</a></td>
<td>Representación de rebajas</td>
</tr>
<tr>
<td><a href="https://github.com/Delgan/loguru">loguru</a></td>
<td>Registro</td>
</tr>
<tr class="section"><th colspan="2">Activos y contribuyentes</th></tr>
<tr>
<td><a href="https://pixabay.com/sound-effects/new-notification-09-352705/">Nueva Notificación 09 por Universfield</a></td>
<td>Sonido de notificación</td>
</tr>
<tr>
<td><a href="https://github.com/viru185">viru185</a></td>
<td>Colaborador de código</td>
</tr>
</table>
</div>
</details>
## ⚠️ Descargo de responsabilidad
Esta herramienta es sólo para uso personal. Respete los términos de servicio de YouTube y los derechos de los creadores de contenido.
---
<div align="center">
Hecho con ❤️ por [oop7](https://github.com/oop7)
</div>
+617
View File
@@ -0,0 +1,617 @@
<div align="center">
<img src="../branding/svg/ytsage-wordmark.svg" width="400" alt="ytsage-wordmark">
<img src="../branding/screenshots/main.png" width="800" alt="YTSage Interface"/>
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-1f2937?style=for-the-badge&logo=python&logoColor=white)](https://www.python.org/downloads/)
[![PyPI Downloads](https://img.shields.io/pepy/dt/ytsage?color=1f2937&style=for-the-badge&label=downloads&logo=python&logoColor=white)](https://pepy.tech/project/ytsage)
[![GitHub Downloads](https://img.shields.io/github/downloads/oop7/YTSage/total?color=1f2937&style=for-the-badge&label=downloads&logo=github&logoColor=white)](https://github.com/oop7/YTSage/releases)
[![License: MIT](https://img.shields.io/badge/License-MIT-1f2937?style=for-the-badge&logo=opensource&logoColor=white)](https://opensource.org/licenses/MIT)
[![Supported Platforms](https://img.shields.io/badge/platform-cross--platform-1f2937?style=for-the-badge&logo=github&logoColor=white)](https://github.com/oop7/YTSage/releases)
[![GitHub Stars](https://img.shields.io/github/stars/oop7/YTSage?color=c90000&style=for-the-badge&logo=github&logoColor=white)](https://github.com/oop7/YTSage/stargazers)
[![PyPI version](https://img.shields.io/pypi/v/ytsage?color=c90000&style=for-the-badge&logo=pypi&logoColor=white)](https://pypi.org/project/ytsage/)
[![GitHub Sponsors](https://img.shields.io/github/sponsors/oop7?color=c90000&style=for-the-badge&logo=githubsponsors&logoColor=white)](https://github.com/sponsors/oop7)
**Un téléchargeur YouTube moderne avec une interface PySide6 épurée.**
Téléchargez des vidéos dans n'importe quelle qualité, extrayez l'audio, récupérez des sous-titres, et bien plus encore.
### 🌍 Langues README
Anglais : [EN](../README.md)
| Titre : [AR](README.ar.md)
| Allemand : [DE](README.de.md)
| Espagnol : [ES](README.es.md)
| Anglais: [FR](README.fr.md)
| Nom : [HI](README.hi.md)
| Bahasa Indonésie : [ID](README.id.md)
| Italien : [IT](README.it.md)
| Nom : [JA](README.ja.md)
| Polski : [PL](README.pl.md)
| Portugais : [PT](README.pt.md)
| Russe : [RU](README.ru.md)
| Turc : [TR](README.tr.md)
| Nom : [ZH](README.zh.md)
<p align="center">
<a href="#installation">Installation</a> •
<a href="#features">Caractéristiques</a> •
<a href="#usage">Utilisation</a> •
<a href="#screenshots">Captures d'écran</a> •
<a href="#troubleshooting">Dépannage</a> •
<a href="#sponsor">Commanditaire</a> •
<a href="#contributing">Contribuer</a>
</p>
</div>
---
<a id="why-ytsage"></a>
## ❓Pourquoi YTSage ?
YTSage est conçu pour les utilisateurs qui souhaitent un **téléchargeur YouTube simple mais puissant**. Contrairement à dautres outils, il propose :
- Une interface PySide6 propre et moderne
- Téléchargements en un clic pour la vidéo, l'audio et les sous-titres
- Fonctionnalités avancées telles que SponsorBlock, la fusion de sous-titres et la sélection de listes de lecture
- Mode générique en option pour les sites pris en charge par yt-dlp au-delà de YouTube
- Prise en charge multiplateforme et installation facile
<a id="features"></a>
## ✨ Caractéristiques
<div align="center">
| Fonctionnalités principales | Fonctionnalités avancées | Fonctionnalités supplémentaires |
|--------------------------------------------------|-----------------------------------------|--------------------------------------------------|
| 🎥 Formater le tableau | 🚫 Intégration SponsorBlock | 🎞️ Affichage FPS/HDR |
| 🎵 Extraction audio | 📝 Sélection et fusion de sous-titres multiples | 🔄 Mise à jour automatique yt-dlp |
| ✨ Interface utilisateur simple | 💾 Enregistrer la description et la vignette | 🛠️ Détection FFmpeg/yt-dlp/Deno |
| 📋 Prise en charge et sélecteur de playlist | 🚀 Limiteur de vitesse | ⚙️ Commandes personnalisées |
| 📑 Intégrer les chapitres | ✂️ Couper les sections vidéo | 🍪 Connectez-vous avec les cookies |
| 📜 Historique des téléchargements | 🔄 Sélection des chaînes de sortie | 🌐 Assistance proxy |
| 🎚️ Conversion de formats audio | 🎬 Paramètres de format vidéo | 🆙 Onglet de mise à jour intégré |
| 🌍 Mode générique |
| 🌍 Localisation en 14 langues | |
</div>
<a id="installation"></a>
## 🚀Installation
### ⚡ Installation rapide (recommandé)
Installez YTSage depuis PyPI :
```bash
pip install ytsage
```
<details>
<summary>🔄 Mettre à jour une installation existante</summary>
```bash
pip install --upgrade ytsage
```
</details>
Lancez ensuite l'application :
```bash
ytsage
```
### 📦 Exécutables prédéfinis
> [👉 Download Latest Release](https://github.com/oop7/YTSage/releases/latest)
#### 🪟Fenêtres
| Formater | Descriptif |
|--------|-------------|
| ![Windows EXE](https://img.shields.io/badge/Windows-EXE-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Installateur standard |
| ![Windows FFmpeg](https://img.shields.io/badge/Windows-FFmpeg-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Avec FFmpeg fourni |
| ![Windows Portable](https://img.shields.io/badge/Windows-Portable-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Version portable, aucune installation requise |
| ![Windows Portable FFmpeg](https://img.shields.io/badge/Windows-Portable%20FFmpeg-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Portable avec FFmpeg, zippé |
<details>
<summary>🛠️ Étapes d'installation</summary>
1. **EXE Installer (`.exe`)** : Double-cliquez sur le fichier et suivez l'assistant d'installation.
2. **Version portable (`.zip`)** : Extrayez l'archive à l'emplacement souhaité et exécutez `ytsage.exe`.
3. **FFmpeg Bundled** : Choisissez les versions groupées de FFmpeg si FFmpeg n'est pas installé sur votre système.
</details>
#### 🐧Linux
| Formater | Descriptif |
|--------|-------------|
| ![Linux DEB](https://img.shields.io/badge/Linux-DEB-FCC624?style=for-the-badge&logo=linux&logoColor=black) | Paquet Debian |
| ![Linux AppImage](https://img.shields.io/badge/Linux-AppImage-FCC624?style=for-the-badge&logo=linux&logoColor=black) | AppImage, portable |
| ![Linux RPM](https://img.shields.io/badge/Linux-RPM-FCC624?style=for-the-badge&logo=linux&logoColor=black) | Paquet RPM |
| ![Flathub](https://img.shields.io/badge/Linux-Flatpak-FCC624?style=for-the-badge&logo=flathub&logoColor=black) | Paquet Flatpak |
<details>
<summary>🛠️ Étapes d'installation</summary>
- **DEB (`.deb`)** :
```bash
sudo dpkg -i ytsage_*.deb
sudo apt-get install -f # Fix missing dependencies if any
```
- **RPM (`.rpm`)** :
```bash
sudo rpm -i ytsage-*.rpm
```
- **AppImage (`.AppImage`)** :
```bash
chmod +x YTSage-*.AppImage
./YTSage-*.AppImage
```
- **Flatpak** : suivez les instructions sur Flathub ou exécutez :
```bash
flatpak install flathub io.github.oop7.ytsage
```
</details>
#### 🍎macOS
| Formater | Descriptif |
|--------|-------------|
| ![macOS ARM64 APP](https://img.shields.io/badge/macOS-ARM64%20APP-000000?style=for-the-badge&logo=apple&logoColor=white) | Application zippée pour Apple Silicon |
| ![macOS ARM64 DMG](https://img.shields.io/badge/macOS-ARM64%20DMG-000000?style=for-the-badge&logo=apple&logoColor=white) | Programme dinstallation dimage disque pour Apple Silicon |
<details>
<summary>🛠️ Étapes d'installation</summary>
- **DMG Installer (`.dmg`)** : Double-cliquez pour monter, puis faites glisser `YTSage.app` dans votre dossier Applications.
- **App Archive (`.zip`)** : Extrayez le zip et déplacez `YTSage.app` vers votre dossier Applications.
*Remarque : si vous rencontrez une erreur « L'application est endommagée », consultez le [macOS troubleshooting section](#troubleshooting) ci-dessous.*
</details>
---
<details>
<summary>💻 Installation manuelle à partir de la source</summary>
### 1. Cloner le référentiel
```bash
git clone https://github.com/oop7/YTSage.git
cd YTSage
```
### 2. Installer les dépendances
#### ⚡Avec uv
```bash
uv pip install .
```
#### 📦 Ou avec pip standard
```bash
pip install .
```
### 3. Exécutez l'application
```bash
python -m ytsage.main
```
</details>
<a id="screenshots"></a>
## 📸 Captures d'écran
<div align="center">
<table>
<tr>
<td><img src="../branding/screenshots/Download-Settings.png" alt="Download Settings" width="400"/></td>
<td><img src="../branding/screenshots/playlist.png" alt="Playlist Download" width="400"/></td>
</tr>
<tr>
<td align="center"><em>Paramètres de téléchargement</em></td>
<td align="center"><em>Téléchargement de la liste de lecture</em></td>
</tr>
<tr>
<td><img src="../branding/screenshots/audio_format.png" alt="Audio Format Selection with Save Thumbnail" width="400"/></td>
<td><img src="../branding/screenshots/Custom-Option.png" alt="Custom Options" width="400"/></td>
</tr>
<tr>
<td align="center"><em>Format audio</em></td>
<td align="center"><em>Options personnalisées</em></td>
</tr>
</table>
</div><a id="usage"></a>
## 📖 Utilisation
<details>
<summary>🎯 Utilisation de base</summary>
1. **Lancer YTSage**
2. **Collez l'URL YouTube** (ou utilisez le bouton « Coller l'URL »)
3. **Cliquez sur « Analyser »**
4. **Sélectionnez le format :**
- `Video` pour les téléchargements de vidéos
- `Audio Only` pour l'extraction audio
5. **Choisissez les options :**
- Activer les sous-titres et sélectionner la langue
- Activer la fusion des sous-titres
- Enregistrer la vignette
- Supprimer les segments de sponsors
- Enregistrer la description
- Intégrer des chapitres
6. **Sélectionnez le répertoire de sortie**
7. **Cliquez sur "Télécharger"**
> 💡 Le répertoire de téléchargement par défaut est le dossier « Téléchargements » de l'utilisateur.
</details>
<details>
<summary>📋 Téléchargement de la liste de lecture</summary>
1. **Coller l'URL de la liste de lecture**
2. **Cliquez sur « Analyser »**
3. ** Sélectionnez des vidéos dans le sélecteur de playlist (facultatif, par défaut : toutes) **
4. **Choisissez le format/qualité souhaité**
5. **Cliquez sur "Télécharger"**
> 💡 L'application gère automatiquement la file d'attente de téléchargement
</details>
<details>
<summary>🌍 Mode générique pour les sites non YouTube</summary>
Utilisez le mode générique lorsque vous souhaitez que YTSage accepte les URL de sites pris en charge par yt-dlp, tels que Dailymotion, CBC Gem, TikTok et autres.
Comment l'utiliser :
1. Ouvrez `Download Settings`.
2. Activez `Generic Mode`.
3. Collez une URL de vidéo ou de playlist non YouTube prise en charge.
4. Cliquez sur `Analyze`.
5. Choisissez un format et téléchargez comme d'habitude.
Remarques :
- Le mode générique modifie uniquement la validation de l'URL dans YTSage. Le site cible doit toujours être pris en charge par votre version yt-dlp installée.
- Certains sites nécessitent des cookies, une session de connexion, un proxy ou des arguments yt-dlp supplémentaires selon l'extracteur.
- Si un site échoue, mettez d'abord à jour yt-dlp à partir de l'onglet de mise à jour intégré avant de signaler le problème.
</details>
<details>
<summary>🧰 Options multimédia et de téléchargement</summary>
- **Options de sous-titres :** Filtrez les langues et intégrez des sous-titres dans le fichier vidéo
- **Fusion des sous-titres :** Fusionnez les sous-titres dans le fichier vidéo pour les sous-titres codés en dur
- **Enregistrer la description :** Enregistrez la description de la vidéo sous forme de fichier texte
- **Enregistrer la vignette :** Enregistrez la vignette de la vidéo en tant que fichier image
- **Intégrer les chapitres :** Intégrer des marqueurs de chapitre en tant que métadonnées pour les lecteurs vidéo compatibles
- **Supprimer les segments de sponsor :** Supprimez les segments de sponsor de la vidéo à l'aide de SponsorBlock
- **Découper la vidéo :** Téléchargez uniquement des parties spécifiques d'une vidéo en spécifiant des plages de temps au format `HH:MM:SS`
</details>
<details>
<summary>⚙️ Paramètres de sortie et de fichier</summary>
- **Speed Limiter :** Limitez la vitesse de téléchargement, par exemple `500K` à 500 Ko/s
- **Enregistrer le chemin de téléchargement :** Enregistrez le chemin de téléchargement par défaut pour les prochains téléchargements. Disponible dans **Paramètres de téléchargement → Chemin de téléchargement**.
- **Format du nom de fichier de sortie :** Personnalisez le format du nom de fichier de sortie à l'aide de variables telles que `%(title)s`, `%(uploader)s` et `%(resolution)s`. Disponible dans **Paramètres de téléchargement → Format du nom de fichier**.
- **Forcer le format de sortie :** Forcer les téléchargements de vidéos dans un format de conteneur spécifique tel que `mp4`, `webm` ou `mkv`. Disponible dans **Paramètres de téléchargement → Paramètres du format de sortie**.
- **Conversion de format audio :** Convertissez les téléchargements audio uniquement vers les formats préférés tels que `AAC`, `MP3`, `FLAC`, `WAV`, `Opus`, `M4A`, `Vorbis`, ou `Best`. Disponible dans **Paramètres de téléchargement → Paramètres de format audio**.
</details>
<details>
<summary>🌐 Accès et réseau</summary>
- **Connexion avec des cookies :** Connectez-vous à YouTube en utilisant des cookies pour accéder au contenu privé.
Comment l'utiliser :
1. **Recommandé :** Utilisez l'option intégrée `Extract cookies from browser` dans l'application, puis sélectionnez votre navigateur et éventuellement un profil.
2. Vous pouvez également extraire les cookies manuellement :
une. Exportez les cookies de votre navigateur en utilisant une extension comme [cookie-editor](https://github.com/moustachauve/cookie-editor?tab=readme-ov-file)
b. Copiez les cookies au format Netscape
c. Créez un fichier nommé `cookies.txt` et collez-y les cookies
d. Sélectionnez le fichier `cookies.txt` dans l'application
- **Prise en charge du proxy :** Utilisez un serveur proxy pour les téléchargements, par exemple `http://<proxy-server>:<port>`
- **Mode générique :** Autorisez YTSage à analyser et à télécharger à partir de sites non YouTube pris en charge par yt-dlp. Activez-le depuis **Paramètres de téléchargement → Mode générique**.
</details>
<details>
<summary>🛠️ Outils et entretien</summary>
- **Commandes personnalisées :** Accédez aux fonctionnalités avancées de yt-dlp via des arguments de ligne de commande
- **Onglet Mise à jour :** Gérez les outils de mise à jour intégrés à partir d'un seul endroit dans les options personnalisées :
- **Mises à jour yt-dlp :** Vérifiez les mises à jour et basculez entre les versions stables et nocturnes
- **FFmpeg Version Checker :** Vérifiez votre version de FFmpeg et ouvrez les guides d'installation
- **Mises à jour Deno :** Vérifiez et mettez à jour le runtime Deno
- **Détection FFmpeg/yt-dlp/Deno :** Détecte automatiquement les chemins et versions FFmpeg, yt-dlp et Deno à partir de la boîte de dialogue À propos.
- **Historique des téléchargements :** affichez les téléchargements passés avec des vignettes et des statuts à partir du bouton **Historique**.
</details>
<details>
<summary>🌍 Localisation</summary>
YTSage prend en charge **14 langues** pour une accessibilité mondiale. Sélectionnez votre langue préférée dans **Options personnalisées → Langue**.
### Langues prises en charge
| Langue | Codes | Langue | Codes |
|--------------|------|--------------|------|
| 🇺🇸 Anglais | `en` | Espagnol | `es` |
| 🇸🇦 Arabe | `ar` | 🇫🇷 Français | `fr` |
| 🇩🇪 Allemand | `de` | 🇮🇳 Hindi | `hi` |
| 🇮🇩 Indonésien | `id` | 🇮🇹 Italien | `it` |
| 🇯🇵 Japonais | `ja` | 🇵🇱 Polonais | `pl` |
| 🇧🇷 Portugais | `pt` | 🇷🇺 Russe | `ru` |
| 🇹🇷 Turc | `tr` | 🇨🇳 Chinois | `zh` |
### Traductions README
| Langue | Fichier | Langue | Fichier |
|--------------|------|--------------|------|
| 🇺🇸 Anglais | [README.md](../README.md) | Espagnol | [README.es.md](README.es.md)
| 🇸🇦 Arabe | [README.ar.md](README.ar.md) | 🇫🇷 Français | [README.fr.md](README.fr.md) |
| 🇩🇪 Allemand | [README.de.md](README.de.md) | 🇮🇳 Hindi | [README.hi.md](README.hi.md) |
| 🇮🇩 Indonésien | [README.id.md](README.id.md) | 🇮🇹 Italien | [README.it.md](README.it.md) |
| 🇯🇵 Japonais | [README.ja.md](README.ja.md) | 🇵🇱 Polonais | [README.pl.md](README.pl.md) |
| 🇧🇷 Portugais | [README.pt.md](README.pt.md) | 🇷🇺 Russe | [README.ru.md](README.ru.md) |
| 🇹🇷 Turc | [README.tr.md](README.tr.md) | 🇨🇳 Chinois | [README.zh.md](README.zh.md) |
> 💡 **Vous voulez contribuer à une traduction ?** Consultez la section [Contributing](#contributing) pour nous aider à ajouter plus de langues !
</details>
<a id="troubleshooting"></a>
## 🛠️ Dépannage
<details>
<summary>Cliquez pour afficher les problèmes courants et les solutions</summary>
- **Le tableau de format ne s'affiche pas :** Mettez à jour yt-dlp vers la dernière version et passez à yt-dlp tous les soirs.
- **Échec du téléchargement :** Vérifiez votre connexion Internet et assurez-vous que la vidéo est disponible.
- **Erreurs de téléchargement spécifiques :**
- **Vidéos privées :** Utilisez l'authentification par cookie pour accéder au contenu privé.
- **Contenu soumis à une limite d'âge :** Connectez-vous à votre compte YouTube pour visionner des vidéos soumises à une limite d'âge.
- **Vidéos géo-bloquées :** Pensez à utiliser un VPN pour contourner les restrictions régionales.
- **Vidéos supprimées/supprimées :** La vidéo n'est plus disponible sur YouTube.
- **Diffusions en direct :** Les diffusions en direct ne peuvent pas être téléchargées ; attendez la fin du flux.
- **Erreurs réseau :** Vérifiez votre connexion Internet et réessayez.
- **URL invalides :** Assurez-vous que l'URL est correcte et qu'elle provient d'une plate-forme prise en charge.
- **Contenu Premium :** Nécessite un abonnement YouTube Premium.
- **Blocs de droits d'auteur :** Le contenu est bloqué en raison de restrictions de droits d'auteur.
- **Séparez les fichiers vidéo et audio après le téléchargement :** Cela se produit lorsque FFmpeg est manquant ou n'est pas détecté. YTSage nécessite FFmpeg pour fusionner des flux vidéo et audio de haute qualité.
- **Solution :** Assurez-vous que FFmpeg est installé et accessible dans le PATH de votre système. Pour les utilisateurs Windows, l'option la plus simple consiste à télécharger le fichier `YTSage-v<version>-ffmpeg.exe`, fourni avec FFmpeg.
---
#### 🛡️ Avertissement Windows Defender / Antivirus
Certains logiciels antivirus peuvent signaler les fichiers `.exe` comme de faux positifs. Il s'agit d'une **limitation connue** des applications packagées.
**Pourquoi cela se produit :**
- L'heuristique antivirus peut identifier à tort les exécutables compressés comme suspects
**Alternatives sûres :**
- ✅ **Utiliser l'installation pip :** `pip install ytsage` (recommandé)
- ✅ **Construire à partir des sources** : en suivant ceci [guide](../.github/CI_CD_README.md)
- ✅ **Liste blanche de l'application** dans votre logiciel antivirus
#### 🍎 macOS : "L'application est endommagée et ne peut pas être ouverte"
Si vous voyez cette erreur sur macOS Sonoma ou version ultérieure, vous devez supprimer l'attribut de quarantaine.
1. **Ouvrez le terminal** (vous pouvez le trouver en utilisant Spotlight).
2. **Tapez la commande suivante** mais **n'appuyez pas** encore sur Entrée. Assurez-vous d'inclure l'espace à la fin :
```bash
xattr -d com.apple.quarantine
```
3. **Faites glisser le fichier `YTSage.app`** depuis votre fenêtre du Finder et déposez-le directement dans la fenêtre du Terminal. Cela collera automatiquement le chemin de fichier correct.
4. **Appuyez sur Entrée** pour exécuter la commande.
5. **Essayez d'ouvrir à nouveau YTSage.app.** Il devrait maintenant se lancer correctement.
---
#### **Emplacements de configuration (avancé)**
- **Windows :** `%LOCALAPPDATA%\YTSage`
- **macOS :** `~/Library/Application Support/YTSage`
- **Linux :** `~/.local/share/YTSage`
</details>
<a id="sponsor"></a>
## 💖 Parrainer
Si YTSage vous fait gagner du temps, envisagez de parrainer le projet. Le parrainage permet de couvrir le temps de développement, les tests sur toutes les plateformes et les améliorations futures.
- Commanditaires GitHub : https://github.com/sponsors/oop7
- Le lien du sponsor est également disponible directement dans l'application à partir de la boîte de dialogue À propos.
[![Sponsor YTSage](https://img.shields.io/badge/Sponsor-YTSage-EA4AAA?style=for-the-badge&logo=github&logoColor=white)](https://github.com/sponsors/oop7)
<a id="contributing"></a>
## 👥 Contribuer
Nous apprécions les contributions ! Voici comment vous pouvez aider :
1. 🍴 Forkez le référentiel
2. 🌿 Créez votre branche de fonctionnalités :
```bash
git checkout -b feature/AmazingFeature
```
3. 💾 Validez vos modifications :
```bash
git commit -m 'Add some AmazingFeature'
```
4. 📤 Push vers l'agence :
```bash
git push origin feature/AmazingFeature
```
5. 🔄 Ouvrir une Pull Request
### 🌍 Contribuer aux traductions
- Mettez à jour le fichier README localisé correspondant (par exemple `README.es.md`)
- Gardez les chaînes de l'application synchronisées en éditant `ytsage/languages/<code>.json`
- Si votre langue est manquante, partez de `README.md` et créez `README.<code>.md`
<details>
<summary>📂 Structure du projet</summary>
## YTSage Structure du projet
Ce document décrit la structure des dossiers organisés de YTSage.
### 📁 Structure du projet
```
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
```
</details>
## ⭐️ Histoire des étoiles
<div align="center">
## Historique des étoiles
<a href="https://www.star-history.com/#oop7/YTSage&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date" />
</picture>
</a>
</div>
## 📜 Licence
Ce projet est sous licence MIT - voir le fichier [LICENSE](../LICENSE) pour plus de détails.
## 🙏 Remerciements
<details>
<summary>Afficher les remerciements</summary>
<div align="center">
<p>Un merci sincère à tous ceux qui ont contribué à ce projet en ouvrant un ticket pour suggérer une amélioration ou signaler un bug.</p>
<table>
<tr class="section"><th colspan="2">Composants de base</th></tr>
<tr>
<td width="35%"><a href="https://github.com/yt-dlp/yt-dlp">yt-dlp</a></td>
<td>Moteur de téléchargement</td>
</tr>
<tr>
<td><a href="https://ffmpeg.org/">FFmpeg</a></td>
<td>Traitement multimédia</td>
</tr>
<tr>
<td><a href="https://deno.com/">Déno</a></td>
<td>Runtime pour l'intégration avec yt-dlp</td>
</tr>
<tr class="section"><th colspan="2">Bibliothèques et frameworks</th></tr>
<tr>
<td><a href="https://wiki.qt.io/Qt_for_Python">PySide6</a></td>
<td>Cadre GUI</td>
</tr>
<tr>
<td><a href="https://python-pillow.org/">Oreiller</a></td>
<td>Traitement d'images</td>
</tr>
<tr><td><a href="https://requests.readthedocs.io/">demandes</a></td>
<td>Demandes HTTP</td>
</tr>
<tr>
<td><a href="https://packaging.python.org/">emballage</a></td>
<td>Version et gestion des packages</td>
</tr>
<tr>
<td><a href="https://python-markdown.github.io/">markdown</a></td>
<td>Rendu Markdown</td>
</tr>
<tr>
<td><a href="https://github.com/Delgan/loguru">loguru</a></td>
<td>Journalisation</td>
</tr>
<tr class="section"><th colspan="2">Actifs et contributeurs</th></tr>
<tr>
<td><a href="https://pixabay.com/sound-effects/new-notification-09-352705/">Nouvelle notification 09 par Universfield</a></td>
<td>Son de notification</td>
</tr>
<tr>
<td><a href="https://github.com/viru185">viru185</a></td>
<td>Contributeur de code</td>
</tr>
</table>
</div>
</details>
## ⚠️ Avis de non-responsabilité
Cet outil est destiné à un usage personnel uniquement. Veuillez respecter les conditions d'utilisation de YouTube et les droits des créateurs de contenu.
---
<div align="center">
Réalisé avec ❤️ par [oop7](https://github.com/oop7)
</div>
+616
View File
@@ -0,0 +1,616 @@
<div align="center">
<img src="../branding/svg/ytsage-wordmark.svg" width="400" alt="ytsage-wordmark">
<img src="../branding/screenshots/main.png" width="800" alt="YTSage Interface"/>
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-1f2937?style=for-the-badge&logo=python&logoColor=white)](https://www.python.org/downloads/)
[![PyPI Downloads](https://img.shields.io/pepy/dt/ytsage?color=1f2937&style=for-the-badge&label=downloads&logo=python&logoColor=white)](https://pepy.tech/project/ytsage)
[![GitHub Downloads](https://img.shields.io/github/downloads/oop7/YTSage/total?color=1f2937&style=for-the-badge&label=downloads&logo=github&logoColor=white)](https://github.com/oop7/YTSage/releases)
[![License: MIT](https://img.shields.io/badge/License-MIT-1f2937?style=for-the-badge&logo=opensource&logoColor=white)](https://opensource.org/licenses/MIT)
[![Supported Platforms](https://img.shields.io/badge/platform-cross--platform-1f2937?style=for-the-badge&logo=github&logoColor=white)](https://github.com/oop7/YTSage/releases)
[![GitHub Stars](https://img.shields.io/github/stars/oop7/YTSage?color=c90000&style=for-the-badge&logo=github&logoColor=white)](https://github.com/oop7/YTSage/stargazers)
[![PyPI version](https://img.shields.io/pypi/v/ytsage?color=c90000&style=for-the-badge&logo=pypi&logoColor=white)](https://pypi.org/project/ytsage/)
[![GitHub Sponsors](https://img.shields.io/github/sponsors/oop7?color=c90000&style=for-the-badge&logo=githubsponsors&logoColor=white)](https://github.com/sponsors/oop7)
**स्वच्छ PySide6 इंटरफ़ेस वाला एक आधुनिक YouTube डाउनलोडर।**
किसी भी गुणवत्ता में वीडियो डाउनलोड करें, ऑडियो निकालें, उपशीर्षक प्राप्त करें और बहुत कुछ करें।
### 🌍 रीडमी भाषाएँ
अंग्रेज़ी: [EN](../README.md)
| उत्तर: [AR](README.ar.md)
| जर्मन: [DE](README.de.md)
| Español: [ES](README.es.md)
| फ़्रेंच: [FR](README.fr.md)
| हिन्दी: [HI](README.hi.md)
| बहासा इंडोनेशिया: [ID](README.id.md)
| इटालियनो: [IT](README.it.md)
| उत्तर: [JA](README.ja.md)
| पोल्स्की: [PL](README.pl.md)
| पुर्तगाली: [PT](README.pt.md)
| Русский: [RU](README.ru.md)
| तुर्की: [TR](README.tr.md)
| उत्तर: [ZH](README.zh.md)
<p align="center">
<a href="#installation">स्थापना</a> •
<a href="#features">विशेषताएं</a> •
<a href="#usage">उपयोग</a> •
<a href="#screenshots">स्क्रीनशॉट</a> •
<a href="#troubleshooting">समस्या निवारण</a> •
<a href="#sponsor">प्रायोजक</a> •
<a href="#contributing">योगदान</a>
</p>
</div>
---
<a id="why-ytsage"></a>
## ❓ YTSage क्यों?
YTSage उन उपयोगकर्ताओं के लिए डिज़ाइन किया गया है जो **सरल लेकिन शक्तिशाली YouTube डाउनलोडर** चाहते हैं। अन्य उपकरणों के विपरीत, यह प्रदान करता है:
- एक साफ़, आधुनिक PySide6 इंटरफ़ेस
- वीडियो, ऑडियो और उपशीर्षक के लिए एक-क्लिक डाउनलोड
- स्पॉन्सरब्लॉक, उपशीर्षक विलय और प्लेलिस्ट चयन जैसी उन्नत सुविधाएँ
- YouTube से परे yt-dlp-समर्थित साइटों के लिए वैकल्पिक जेनेरिक मोड
- क्रॉस-प्लेटफ़ॉर्म समर्थन और आसान स्थापना
<a id="features"></a>
## ✨ विशेषताएँ
<div align="center">
| मुख्य विशेषताएं | उन्नत सुविधाएँ | अतिरिक्त सुविधाएँ |
|------------------------------------------------|------------------------------------------------|------------------------------------------------|
| 🎥 प्रारूप तालिका | 🚫प्रायोजकब्लॉक एकीकरण | 🎞️ एफपीएस/एचडीआर डिस्प्ले |
| 🎵 ऑडियो निष्कर्षण | 📝 बहु-उपशीर्षक चुनें और मर्ज करें | 🔄 ऑटो-अपडेट yt-dlp |
| ✨ सरल यूआई | 💾 विवरण और थंबनेल सहेजें | 🛠️ FFmpeg/yt-dlp/Deno डिटेक्शन |
| 📋 प्लेलिस्ट समर्थन और चयनकर्ता | 🚀 गति सीमक | ⚙️ कस्टम कमांड |
| 📑 अध्याय एम्बेड करें | ✂️ वीडियो अनुभाग ट्रिम करें | 🍪 कुकीज़ के साथ लॉगिन करें |
| 📜इतिहास डाउनलोड करें | 🔄रिलीज़ चैनल चयन | 🌐 प्रॉक्सी सपोर्ट |
| 🎚️ ऑडियो प्रारूप रूपांतरण | 🎬 वीडियो प्रारूप सेटिंग्स | 🆙 बिल्ट-इन अपडेटर टैब |
| 🌍 जेनेरिक मोड |
| 🌍14 भाषाओं में स्थानीयकरण | |
</div>
<a id="installation"></a>
## 🚀 स्थापना
### ⚡ त्वरित इंस्टाल (अनुशंसित)
PyPI से YTSage इंस्टॉल करें:
```bash
pip install ytsage
```
<details>
<summary>🔄मौजूदा इंस्टॉलेशन को अपडेट करें</summary>
```bash
pip install --upgrade ytsage
```
</details>
फिर ऐप लॉन्च करें:
```bash
ytsage
```
### 📦 पूर्व-निर्मित निष्पादनयोग्य
> [👉 Download Latest Release](https://github.com/oop7/YTSage/releases/latest)
#### 🪟 खिड़कियाँ
| प्रारूप | विवरण |
|-------|----|
| ![Windows EXE](https://img.shields.io/badge/Windows-EXE-0078D6?style=for-the-badge&logo=windows&logoColor=white) | मानक इंस्टॉलर |
| ![Windows FFmpeg](https://img.shields.io/badge/Windows-FFmpeg-0078D6?style=for-the-badge&logo=windows&logoColor=white) | FFmpeg बंडल के साथ |
| ![Windows Portable](https://img.shields.io/badge/Windows-Portable-0078D6?style=for-the-badge&logo=windows&logoColor=white) | पोर्टेबल संस्करण, किसी इंस्टॉलेशन की आवश्यकता नहीं |
| ![Windows Portable FFmpeg](https://img.shields.io/badge/Windows-Portable%20FFmpeg-0078D6?style=for-the-badge&logo=windows&logoColor=white) | FFmpeg के साथ पोर्टेबल, ज़िपित |
<details>
<summary>🛠️ इंस्टालेशन चरण</summary>
1. **EXE इंस्टॉलर (`.exe`)**: फ़ाइल पर डबल-क्लिक करें और सेटअप विज़ार्ड का पालन करें।
2. **पोर्टेबल संस्करण (`.zip`)**: संग्रह को अपने इच्छित स्थान पर निकालें और `ytsage.exe` चलाएँ।
3. **एफएफएमपीईजी बंडल**: यदि आपके सिस्टम पर एफएफएमपीईजी स्थापित नहीं है तो एफएफएमपीईजी बंडल संस्करण चुनें।
</details>
#### 🐧 लिनक्स
| प्रारूप | विवरण |
|-------|----|
| ![Linux DEB](https://img.shields.io/badge/Linux-DEB-FCC624?style=for-the-badge&logo=linux&logoColor=black) | डेबियन पैकेज |
| ![Linux AppImage](https://img.shields.io/badge/Linux-AppImage-FCC624?style=for-the-badge&logo=linux&logoColor=black) | ऐपइमेज, पोर्टेबल |
| ![Linux RPM](https://img.shields.io/badge/Linux-RPM-FCC624?style=for-the-badge&logo=linux&logoColor=black) | आरपीएम पैकेज |
| ![Flathub](https://img.shields.io/badge/Linux-Flatpak-FCC624?style=for-the-badge&logo=flathub&logoColor=black) | फ़्लैटपैक बंडल |
<details>
<summary>🛠️ इंस्टालेशन चरण</summary>
- **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`)**:
```bash
chmod +x YTSage-*.AppImage
./YTSage-*.AppImage
```
- **फ्लैटपैक**: फ़्लैटहब पर निर्देशों का पालन करें या चलाएँ:
```bash
flatpak install flathub io.github.oop7.ytsage
```
</details>
#### 🍎 मैकओएस
| प्रारूप | विवरण |
|-------|----|
| ![macOS ARM64 APP](https://img.shields.io/badge/macOS-ARM64%20APP-000000?style=for-the-badge&logo=apple&logoColor=white) | एप्पल सिलिकॉन के लिए ज़िप्ड एप्लिकेशन |
| ![macOS ARM64 DMG](https://img.shields.io/badge/macOS-ARM64%20DMG-000000?style=for-the-badge&logo=apple&logoColor=white) | एप्पल सिलिकॉन के लिए डिस्क छवि इंस्टॉलर |
<details>
<summary>🛠️ इंस्टालेशन चरण</summary>
- **डीएमजी इंस्टॉलर (`.dmg`)**: माउंट करने के लिए डबल-क्लिक करें, फिर `YTSage.app` को अपने एप्लिकेशन फ़ोल्डर में खींचें।
- **ऐप आर्काइव (`.zip`)**: ज़िप निकालें और `YTSage.app` को अपने एप्लिकेशन फ़ोल्डर में ले जाएं।
*ध्यान दें: यदि आपको "ऐप क्षतिग्रस्त है" त्रुटि आती है, तो नीचे [macOS troubleshooting section](#troubleshooting) देखें।*
</details>
---
<details>
<summary>💻 स्रोत से मैन्युअल इंस्टालेशन</summary>
### 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
```
</details>
<a id="screenshots"></a>
## 📸 स्क्रीनशॉट
<div align="center">
<table>
<tr>
<td><img src="../branding/screenshots/Download-Settings.png" alt="Download Settings" width="400"/></td>
<td><img src="../branding/screenshots/playlist.png" alt="Playlist Download" width="400"/></td>
</tr>
<tr>
<td align="center"><em>डाउनलोड सेटिंग्स</em></td>
<td align="center"><em>प्लेलिस्ट डाउनलोड</em></td>
</tr>
<tr>
<td><img src="../branding/screenshots/audio_format.png" alt="Audio Format Selection with Save Thumbnail" width="400"/></td>
<td><img src="../branding/screenshots/Custom-Option.png" alt="Custom Options" width="400"/></td>
</tr>
<tr>
<td align="center"><em>ऑडियो फॉर्मेट</em></td>
<td align="center"><em>कस्टम विकल्प</em></td>
</tr>
</table>
</div><a id="usage"></a>
## 📖 प्रयोग
<details>
<summary>🎯 मूल उपयोग</summary>
1. **YTSage लॉन्च करें**
2. **यूट्यूब यूआरएल चिपकाएँ** (या "यूआरएल चिपकाएँ" बटन का उपयोग करें)
3. **"विश्लेषण करें" पर क्लिक करें**
4. **प्रारूप चुनें:**
- वीडियो डाउनलोड के लिए `Video`
- ऑडियो निष्कर्षण के लिए `Audio Only`
5. **विकल्प चुनें:**
- उपशीर्षक सक्षम करें और भाषा चुनें
- उपशीर्षक मर्ज सक्षम करें
- थंबनेल सहेजें
- प्रायोजक खंड हटाएँ
- विवरण सहेजें
- अध्याय एम्बेड करें
6. **आउटपुट डायरेक्टरी चुनें**
7. **"डाउनलोड" पर क्लिक करें**
> 💡 डिफ़ॉल्ट डाउनलोड निर्देशिका उपयोगकर्ता का "डाउनलोड" फ़ोल्डर है।
</details>
<details>
<summary>📋 प्लेलिस्ट डाउनलोड</summary>
1. **प्लेलिस्ट यूआरएल चिपकाएँ**
2. **"विश्लेषण करें" पर क्लिक करें**
3. **प्लेलिस्ट चयनकर्ता से वीडियो चुनें (वैकल्पिक, सभी के लिए डिफ़ॉल्ट)**
4. **वांछित प्रारूप/गुणवत्ता चुनें**
5. **"डाउनलोड" पर क्लिक करें**
> 💡 एप्लिकेशन स्वचालित रूप से डाउनलोड कतार को संभालता है
</details>
<details>
<summary>🌍 गैर-यूट्यूब साइटों के लिए जेनेरिक मोड</summary>
जब आप चाहते हैं कि YTSage, yt-dlp द्वारा समर्थित साइटों, जैसे कि डेलीमोशन, CBC जेम, टिकटॉक और अन्य से यूआरएल स्वीकार करे, तो जेनेरिक मोड का उपयोग करें।
इसका उपयोग कैसे करें:
1. `Download Settings` खोलें।
2. `Generic Mode` सक्षम करें।
3. एक समर्थित गैर-यूट्यूब वीडियो या प्लेलिस्ट यूआरएल चिपकाएँ।
4. `Analyze` पर क्लिक करें।
5. एक प्रारूप चुनें और हमेशा की तरह डाउनलोड करें।
टिप्पणियाँ:
- जेनेरिक मोड केवल YTSage के अंदर URL सत्यापन को बदलता है। लक्ष्य साइट को अभी भी आपके स्थापित yt-dlp संस्करण द्वारा समर्थित होना चाहिए।
- कुछ साइटों को एक्सट्रैक्टर के आधार पर कुकीज़, एक लॉगिन सत्र, एक प्रॉक्सी, या अतिरिक्त yt-dlp तर्क की आवश्यकता होती है।
- यदि कोई साइट विफल हो जाती है, तो समस्या की रिपोर्ट करने से पहले अंतर्निहित अपडेटर टैब से yt-dlp को अपडेट करें।
</details>
<details>
<summary>🧰मीडिया और डाउनलोड विकल्प</summary>
- **उपशीर्षक विकल्प:** भाषाओं को फ़िल्टर करें और वीडियो फ़ाइल में उपशीर्षक एम्बेड करें
- **उपशीर्षक मर्ज:** हार्डकोडेड उपशीर्षक के लिए उपशीर्षक को वीडियो फ़ाइल में मर्ज करें
- **विवरण सहेजें:** वीडियो विवरण को टेक्स्ट फ़ाइल के रूप में सहेजें
- **थंबनेल सहेजें:** वीडियो थंबनेल को एक छवि फ़ाइल के रूप में सहेजें
- **अध्याय एम्बेड करें:**संगत वीडियो प्लेयर के लिए मेटाडेटा के रूप में अध्याय मार्कर एम्बेड करें
- **प्रायोजक खंड हटाएं:** SponsorBlock का उपयोग करके वीडियो से प्रायोजक खंड हटाएं
- **वीडियो ट्रिम करें:** `HH:MM:SS` प्रारूप में समय सीमा निर्दिष्ट करके वीडियो के केवल विशिष्ट भागों को डाउनलोड करें
</details>
<details>
<summary>⚙️ आउटपुट और फ़ाइल सेटिंग्स</summary>
- **स्पीड लिमिटर:** डाउनलोड स्पीड सीमित करें, उदाहरण के लिए `500K` 500 KB/s के लिए
- **डाउनलोड पथ सहेजें:** भविष्य के डाउनलोड के लिए डिफ़ॉल्ट डाउनलोड पथ सहेजें। **डाउनलोड सेटिंग → डाउनलोड पथ** में उपलब्ध है।
- **आउटपुट फ़ाइल नाम प्रारूप:** `%(title)s`, `%(uploader)s`, और `%(resolution)s` जैसे वेरिएबल का उपयोग करके आउटपुट फ़ाइल नाम प्रारूप को अनुकूलित करें। **डाउनलोड सेटिंग्स → फ़ाइल नाम प्रारूप** में उपलब्ध है।- **फोर्स आउटपुट फॉर्मेट:** वीडियो डाउनलोड को एक विशिष्ट कंटेनर फॉर्मेट जैसे `mp4`, `webm`, या `mkv` में फोर्स करें। **डाउनलोड सेटिंग्स → आउटपुट फॉर्मेट सेटिंग्स** में उपलब्ध है।
- **ऑडियो प्रारूप रूपांतरण:** केवल-ऑडियो डाउनलोड को पसंदीदा प्रारूपों में परिवर्तित करें जैसे `AAC`, `MP3`, `FLAC`, `WAV`, `Opus`, `M4A`, `Vorbis`, या `Best`. **डाउनलोड सेटिंग्स → ऑडियो फॉर्मेट सेटिंग्स** में उपलब्ध है।
</details>
<details>
<summary>🌐 पहुंच और नेटवर्क</summary>
- **कुकीज़ के साथ लॉगिन करें:** निजी सामग्री तक पहुंचने के लिए कुकीज़ का उपयोग करके यूट्यूब पर लॉगिन करें।
इसका उपयोग कैसे करें:
1. **अनुशंसित:** ऐप में अंतर्निहित `Extract cookies from browser` विकल्प का उपयोग करें, फिर अपना ब्राउज़र और वैकल्पिक रूप से एक प्रोफ़ाइल चुनें।
2. वैकल्पिक रूप से, कुकीज़ को मैन्युअल रूप से निकालें:
ए. [cookie-editor](https://github.com/moustachauve/cookie-editor?tab=readme-ov-file) जैसे एक्सटेंशन का उपयोग करके अपने ब्राउज़र से कुकीज़ निर्यात करें
बी. कुकीज़ को नेटस्केप प्रारूप में कॉपी करें
सी. `cookies.txt` नाम की एक फ़ाइल बनाएं और उसमें कुकीज़ पेस्ट करें
घ. ऐप में `cookies.txt` फ़ाइल चुनें
- **प्रॉक्सी समर्थन:** डाउनलोड के लिए प्रॉक्सी सर्वर का उपयोग करें, उदाहरण के लिए `http://<proxy-server>:<port>`
- **जेनेरिक मोड:** YTSage को yt-dlp द्वारा समर्थित गैर-यूट्यूब साइटों से विश्लेषण और डाउनलोड करने की अनुमति दें। इसे **डाउनलोड सेटिंग्स → जेनेरिक मोड** से सक्षम करें।
</details>
<details>
<summary>🛠️ उपकरण और रखरखाव</summary>
- **कस्टम कमांड:** कमांड लाइन तर्कों के माध्यम से उन्नत yt-dlp सुविधाओं तक पहुंचें
- **अपडेटर टैब:** कस्टम विकल्पों में एक ही स्थान से अंतर्निहित अपडेट टूल प्रबंधित करें:
- **yt-dlp अपडेट:** अपडेट की जांच करें और स्थिर और रात्रिकालीन रिलीज़ चैनलों के बीच स्विच करें
- **एफएफएमपीईजी संस्करण जांचकर्ता:** अपना एफएफएमपीईजी संस्करण जांचें और इंस्टॉलेशन गाइड खोलें
- **डेनो अपडेट:** डेनो रनटाइम की जांच करें और अपडेट करें
- **FFmpeg/yt-dlp/Deno डिटेक्शन:** अबाउट डायलॉग से FFmpeg, yt-dlp, और Deno पथ और संस्करणों का स्वचालित रूप से पता लगाएं।
- **डाउनलोड इतिहास:** **इतिहास** बटन से थंबनेल और स्थितियों के साथ पिछले डाउनलोड देखें।
</details>
<details>
<summary>🌍 स्थानीयकरण</summary>
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) अनुभाग देखें!
</details>
<a id="troubleshooting"></a>
## 🛠️समस्या निवारण
<details>
<summary>सामान्य समस्याएं और समाधान देखने के लिए क्लिक करें</summary>
- **प्रारूप तालिका प्रदर्शित नहीं हो रही है:** yt-dlp को नवीनतम संस्करण में अपडेट करें, और रात में yt-dlp पर स्विच करें।
- **डाउनलोड विफल:** अपना इंटरनेट कनेक्शन जांचें और सुनिश्चित करें कि वीडियो उपलब्ध है।
- **विशिष्ट डाउनलोड त्रुटियाँ:**
- **निजी वीडियो:** निजी सामग्री तक पहुंचने के लिए कुकी प्रमाणीकरण का उपयोग करें।
- **आयु-प्रतिबंधित सामग्री:** आयु-प्रतिबंधित वीडियो देखने के लिए YouTube खाते में लॉगिन करें।
- **जियो-अवरुद्ध वीडियो:** क्षेत्रीय प्रतिबंधों को बायपास करने के लिए वीपीएन का उपयोग करने पर विचार करें।
- **हटाए गए/हटाए गए वीडियो:** वीडियो अब YouTube पर उपलब्ध नहीं है।
- **लाइव स्ट्रीम:** लाइव स्ट्रीम डाउनलोड नहीं की जा सकतीं; स्ट्रीम समाप्त होने की प्रतीक्षा करें.
- **नेटवर्क त्रुटियां:** अपना इंटरनेट कनेक्शन जांचें और पुनः प्रयास करें।
- **अमान्य यूआरएल:** सुनिश्चित करें कि यूआरएल सही है और समर्थित प्लेटफॉर्म से है।
- **प्रीमियम सामग्री:** YouTube प्रीमियम सदस्यता की आवश्यकता है।
- **कॉपीराइट ब्लॉक:** कॉपीराइट प्रतिबंधों के कारण सामग्री अवरुद्ध है।
- **डाउनलोड के बाद वीडियो और ऑडियो फ़ाइलों को अलग करें:** ऐसा तब होता है जब FFmpeg गायब है या पता नहीं चला है। उच्च गुणवत्ता वाले वीडियो और ऑडियो स्ट्रीम को मर्ज करने के लिए YTSage को FFmpeg की आवश्यकता होती है।
- **समाधान:** सुनिश्चित करें कि FFmpeg आपके सिस्टम के PATH में स्थापित और पहुंच योग्य है। विंडोज़ उपयोगकर्ताओं के लिए, सबसे आसान विकल्प `YTSage-v<version>-ffmpeg.exe` फ़ाइल डाउनलोड करना है, जो FFmpeg के साथ बंडल में आती है।
---
#### 🛡️ विंडोज डिफेंडर / एंटीवायरस चेतावनी
कुछ एंटीवायरस सॉफ़्टवेयर `.exe` फ़ाइलों को गलत सकारात्मक के रूप में चिह्नित कर सकते हैं। यह पैकेज्ड एप्लिकेशन की **ज्ञात सीमा** है।
**ऐसा क्यों होता है:**
- एंटीवायरस अनुमान पैक किए गए निष्पादन योग्य को संदिग्ध के रूप में गलत पहचान सकता है
**सुरक्षित विकल्प:**
- ✅ **पाइप इंस्टॉलेशन का उपयोग करें:** `pip install ytsage` (अनुशंसित)
- ✅ **स्रोत से निर्माण**: इसका पालन करके [guide](../.github/CI_CD_README.md)
- ✅ **एप्लिकेशन को अपने एंटीवायरस सॉफ़्टवेयर में श्वेतसूची में डालें**
#### 🍎 macOS: "ऐप क्षतिग्रस्त है और खोला नहीं जा सकता"
यदि आपको यह त्रुटि macOS सोनोमा या नए पर दिखाई देती है, तो आपको संगरोध विशेषता को हटाना होगा।
1. **टर्मिनल खोलें** (आप इसे स्पॉटलाइट का उपयोग करके पा सकते हैं)।
2. **निम्न आदेश टाइप करें** लेकिन **अभी तक Enter न दबाएँ। अंत में स्थान शामिल करना सुनिश्चित करें:
```bash
xattr -d com.apple.quarantine
```
3. ** `YTSage.app` फ़ाइल** को अपनी फाइंडर विंडो से खींचें और इसे सीधे टर्मिनल विंडो में छोड़ें। इससे स्वचालित रूप से सही फ़ाइल पथ पेस्ट हो जाएगा.
4. कमांड चलाने के लिए **एंटर** दबाएं।
5. **YTSage.app को दोबारा खोलने का प्रयास करें।** इसे अब सही ढंग से लॉन्च होना चाहिए।
---
#### **कॉन्फ़िगरेशन स्थान (उन्नत)**
- **विंडोज़:** `%LOCALAPPDATA%\YTSage`
- **मैकओएस:** `~/Library/Application Support/YTSage`
- **लिनक्स:** `~/.local/share/YTSage`
</details>
<a id="sponsor"></a>
## 💖 प्रायोजक
यदि YTSage आपका समय बचाता है, तो परियोजना को प्रायोजित करने पर विचार करें। प्रायोजन विकास के समय, सभी प्लेटफार्मों पर परीक्षण और भविष्य में सुधारों को कवर करने में मदद करता है।
- GitHub प्रायोजक: https://github.com/sponsors/oop7
- प्रायोजक लिंक सीधे ऐप के अंदर अबाउट डायलॉग से भी उपलब्ध है।
[![Sponsor YTSage](https://img.shields.io/badge/Sponsor-YTSage-EA4AAA?style=for-the-badge&logo=github&logoColor=white)](https://github.com/sponsors/oop7)
<a id="contributing"></a>
## 👥 योगदान दे रहे हैं
हम योगदान का स्वागत करते हैं! यहां बताया गया है कि आप कैसे मदद कर सकते हैं:
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/<code>.json` को संपादित करके ऐप स्ट्रिंग्स को सिंक में रखें
- यदि आपकी भाषा गायब है, तो `README.md` से शुरू करें और `README.<code>.md` बनाएं
<details>
<summary>📂 परियोजना संरचना</summary>
## 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
```
</details>
## ⭐️ सितारा इतिहास
<div align="center">
## सितारा इतिहास
<a href="https://www.star-history.com/#oop7/YTSage&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date" />
</picture>
</a>
</div>
## 📜 लाइसेंस
यह प्रोजेक्ट एमआईटी लाइसेंस के तहत लाइसेंस प्राप्त है - विवरण के लिए [LICENSE](../LICENSE) फ़ाइल देखें।
## 🙏 आभार
<details>
<summary> आभार दिखाएं</summary>
<div align="center">
<p>सुधार का सुझाव देने या बग की रिपोर्ट करने के लिए एक मुद्दा खोलकर इस परियोजना में योगदान देने वाले सभी लोगों को हार्दिक धन्यवाद।</p>
<table>
<tr class="section"><th colspan="2">मुख्य घटक</th></tr>
<tr>
<td width="35%"><a href="https://github.com/yt-dlp/yt-dlp">yt-dlp</a></td>
<td>डाउनलोड इंजन</td>
</tr>
<tr>
<td><a href="https://ffmpeg.org/">FFmpeg</a></td>
<td>मीडिया प्रोसेसिंग</td>
</tr>
<tr>
<td><a href="https://deno.com/">Deno</a></td>
<td>yt-dlp के साथ एकीकरण के लिए रनटाइम</td>
</tr>
<tr class="section"><th colspan="2">लाइब्रेरी और फ्रेमवर्क</th></tr>
<tr>
<td><a href="https://wiki.qt.io/Qt_for_Python">PySide6</a></td>
<td>GUI फ्रेमवर्क</td>
</tr>
<tr>
<td><a href="https://python-pillow.org/">तकिया</a></td>
<td>इमेज प्रोसेसिंग</td>
</tr>
<tr><td><a href="https://requests.readthedocs.io/">अनुरोध</a></td>
<td>HTTP अनुरोध</td>
</tr>
<tr>
<td><a href="https://packaging.python.org/">पैकेजिंग</a></td>
<td>संस्करण और पैकेज हैंडलिंग</td>
</tr>
<tr>
<td><a href="https://python-markdown.github.io/">मार्कडाउन</a></td>
<td>मार्कडाउन रेंडरिंग</td>
</tr>
<tr>
<td><a href="https://github.com/Delgan/loguru">loguru</a></td>
<td>लॉगिंग</td>
</tr>
<tr class="section"><th colspan="2">संपत्ति और योगदानकर्ता</th></tr>
<tr>
<td><a href="https://pixabay.com/sound-effects/new-notification-09-352705/">यूनिवर्सफील्ड द्वारा नई अधिसूचना 09</a></td>
<td>अधिसूचना ध्वनि</td>
</tr>
<tr>
<td><a href="https://github.com/viru185">viru185</a></td>
<td>कोड योगदानकर्ता</td>
</tr>
</table>
</div>
</details>
## ⚠️ अस्वीकरण
यह उपकरण केवल व्यक्तिगत उपयोग के लिए है. कृपया YouTube की सेवा की शर्तों और सामग्री निर्माताओं के अधिकारों का सम्मान करें।
---
<div align="center">
❤️ के साथ [oop7](https://github.com/oop7) द्वारा बनाया गया
</div>
+617
View File
@@ -0,0 +1,617 @@
<div align="center">
<img src="../branding/svg/ytsage-wordmark.svg" width="400" alt="ytsage-wordmark">
<img src="../branding/screenshots/main.png" width="800" alt="YTSage Interface"/>
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-1f2937?style=for-the-badge&logo=python&logoColor=white)](https://www.python.org/downloads/)
[![PyPI Downloads](https://img.shields.io/pepy/dt/ytsage?color=1f2937&style=for-the-badge&label=downloads&logo=python&logoColor=white)](https://pepy.tech/project/ytsage)
[![GitHub Downloads](https://img.shields.io/github/downloads/oop7/YTSage/total?color=1f2937&style=for-the-badge&label=downloads&logo=github&logoColor=white)](https://github.com/oop7/YTSage/releases)
[![License: MIT](https://img.shields.io/badge/License-MIT-1f2937?style=for-the-badge&logo=opensource&logoColor=white)](https://opensource.org/licenses/MIT)
[![Supported Platforms](https://img.shields.io/badge/platform-cross--platform-1f2937?style=for-the-badge&logo=github&logoColor=white)](https://github.com/oop7/YTSage/releases)
[![GitHub Stars](https://img.shields.io/github/stars/oop7/YTSage?color=c90000&style=for-the-badge&logo=github&logoColor=white)](https://github.com/oop7/YTSage/stargazers)
[![PyPI version](https://img.shields.io/pypi/v/ytsage?color=c90000&style=for-the-badge&logo=pypi&logoColor=white)](https://pypi.org/project/ytsage/)
[![GitHub Sponsors](https://img.shields.io/github/sponsors/oop7?color=c90000&style=for-the-badge&logo=githubsponsors&logoColor=white)](https://github.com/sponsors/oop7)
**Pengunduh YouTube modern dengan antarmuka PySide6 yang bersih.**
Unduh video dalam kualitas apa pun, ekstrak audio, ambil subtitle, dan banyak lagi.
### 🌍 README Bahasa
Bahasa Inggris: [EN](../README.md)
| Nilai: [AR](README.ar.md)
| Jerman: [DE](README.de.md)
| Spanyol: [ES](README.es.md)
| Perancis: [FR](README.fr.md)
| nilai: [HI](README.hi.md)
| Bahasa Indonesia: [ID](README.id.md)
| Italia: [IT](README.it.md)
| Nilai: [JA](README.ja.md)
| Polski: [PL](README.pl.md)
| Portugis: [PT](README.pt.md)
| Jawaban: [RU](README.ru.md)
| Turki: [TR](README.tr.md)
| nama: [ZH](README.zh.md)
<p align="center">
<a href="#installation">Instalasi</a> •
<a href="#features">Fitur</a> •
<a href="#usage">Penggunaan</a> •
<a href="#screenshots">Tangkapan Layar</a> •
<a href="#troubleshooting">Pemecahan Masalah</a> •
<a href="#sponsor">Sponsor</a> •
<a href="#contributing">Berkontribusi</a>
</p>
</div>
---
<a id="why-ytsage"></a>
## ❓ Mengapa YTSage?
YTSage dirancang untuk pengguna yang menginginkan **pengunduh YouTube yang sederhana namun kuat**. Tidak seperti alat lainnya, alat ini menawarkan:
- Antarmuka PySide6 yang bersih dan modern
- Unduhan sekali klik untuk video, audio, dan subtitle
- Fitur lanjutan seperti SponsorBlock, penggabungan subtitle, dan pemilihan playlist
- Mode Generik Opsional untuk situs yang didukung yt-dlp di luar YouTube
- Dukungan lintas platform dan instalasi mudah
<a id="features"></a>
## ✨ Fitur
<div align="center">
| Fitur Inti | Fitur Lanjutan | Fitur Ekstra |
|----------------------------------||-----------------------------------------|------------------------------------|
| 🎥 Format Tabel | 🚫 Integrasi Blok Sponsor | 🎞️ Tampilan FPS/HDR |
| 🎵 Ekstraksi Audio | 📝 Pilih & Gabungkan Multi-Subjudul | 🔄 Perbarui Otomatis yt-dlp |
| ✨ UI Sederhana | 💾 Simpan Deskripsi & Gambar Kecil | 🛠️ Deteksi FFmpeg/yt-dlp/Deno |
| 📋 Dukungan & Pemilih Daftar Putar | 🚀 Pembatas Kecepatan | ⚙️ Perintah Khusus |
| 📑 Sematkan Bab | ✂️ Pangkas Bagian Video | 🍪 Masuk dengan Cookie |
| 📜 Unduh Riwayat | 🔄 Rilis Pilihan Saluran | 🌐 Dukungan Proksi |
| 🎚️ Konversi Format Audio | 🎬 Pengaturan Format Video | 🆙 Tab Pembaruan Bawaan |
| 🌍 Mode Generik |
| 🌍 Lokalisasi dalam 14 Bahasa | |
</div>
<a id="installation"></a>
## 🚀 Instalasi
### ⚡ Instal Cepat (Disarankan)
Instal YTSage dari PyPI:
```bash
pip install ytsage
```
<details>
<summary>🔄 Perbarui instalasi yang ada</summary>
```bash
pip install --upgrade ytsage
```
</details>
Kemudian luncurkan aplikasi:
```bash
ytsage
```
### 📦 Executable yang sudah dibuat sebelumnya
> [👉 Download Latest Release](https://github.com/oop7/YTSage/releases/latest)
#### 🪟 Jendela
| Format | Deskripsi |
|--------|-------------|
| ![Windows EXE](https://img.shields.io/badge/Windows-EXE-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Pemasang standar |
| ![Windows FFmpeg](https://img.shields.io/badge/Windows-FFmpeg-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Dengan FFmpeg dibundel |
| ![Windows Portable](https://img.shields.io/badge/Windows-Portable-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Versi portabel, tidak perlu instalasi |
| ![Windows Portable FFmpeg](https://img.shields.io/badge/Windows-Portable%20FFmpeg-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Portabel dengan FFmpeg, zip |
<details>
<summary>🛠️ Langkah Instalasi</summary>
1. **EXE Installer (`.exe`)**: Klik dua kali file tersebut dan ikuti panduan pengaturan.
2. **Versi Portabel (`.zip`)**: Ekstrak arsip ke lokasi yang Anda inginkan dan jalankan `ytsage.exe`.
3. **FFmpeg Bundled**: Pilih versi paket FFmpeg jika Anda belum menginstal FFmpeg di sistem Anda.
</details>
#### 🐧 Linux
| Format | Deskripsi |
|--------|-------------|
| ![Linux DEB](https://img.shields.io/badge/Linux-DEB-FCC624?style=for-the-badge&logo=linux&logoColor=black) | Paket Debian |
| ![Linux AppImage](https://img.shields.io/badge/Linux-AppImage-FCC624?style=for-the-badge&logo=linux&logoColor=black) | AppImage, portabel |
| ![Linux RPM](https://img.shields.io/badge/Linux-RPM-FCC624?style=for-the-badge&logo=linux&logoColor=black) | Paket RPM |
| ![Flathub](https://img.shields.io/badge/Linux-Flatpak-FCC624?style=for-the-badge&logo=flathub&logoColor=black) | Paket Flatpak |
<details>
<summary>🛠️ Langkah Instalasi</summary>
- **DEB (`.deb`)**:
```bash
sudo dpkg -i ytsage_*.deb
sudo apt-get install -f # Fix missing dependencies if any
```
- **RPM (`.rpm`)**:
```bash
sudo rpm -i ytsage-*.rpm
```
- **Gambar Aplikasi (`.AppImage`)**:
```bash
chmod +x YTSage-*.AppImage
./YTSage-*.AppImage
```
- **Flatpak**: Ikuti instruksi di Flathub atau jalankan:
```bash
flatpak install flathub io.github.oop7.ytsage
```
</details>
#### 🍎 macOS
| Format | Deskripsi |
|--------|-------------|
| ![macOS ARM64 APP](https://img.shields.io/badge/macOS-ARM64%20APP-000000?style=for-the-badge&logo=apple&logoColor=white) | Aplikasi zip untuk Apple Silicon |
| ![macOS ARM64 DMG](https://img.shields.io/badge/macOS-ARM64%20DMG-000000?style=for-the-badge&logo=apple&logoColor=white) | Penginstal gambar disk untuk Apple Silicon |
<details>
<summary>🛠️ Langkah Instalasi</summary>
- **Pemasang DMG (`.dmg`)**: Klik dua kali untuk memasang, lalu seret `YTSage.app` ke dalam folder Aplikasi Anda.
- **Arsip Aplikasi (`.zip`)**: Ekstrak zip dan pindahkan `YTSage.app` ke folder Aplikasi Anda.
*Catatan: Jika Anda mengalami kesalahan "Aplikasi rusak", lihat [macOS troubleshooting section](#troubleshooting) di bawah.*
</details>
---
<details>
<summary>💻 Instalasi Manual dari Sumber</summary>
### 1. Kloning Repositori
```bash
git clone https://github.com/oop7/YTSage.git
cd YTSage
```
### 2. Instal Dependensi
#### ⚡ Dengan UV
```bash
uv pip install .
```
#### 📦 Atau dengan pip standar
```bash
pip install .
```
### 3. Jalankan Aplikasi
```bash
python -m ytsage.main
```
</details>
<a id="screenshots"></a>
## 📸 Tangkapan layar
<div align="center">
<table>
<tr>
<td><img src="../branding/screenshots/Download-Settings.png" alt="Download Settings" width="400"/></td>
<td><img src="../branding/screenshots/playlist.png" alt="Playlist Download" width="400"/></td>
</tr>
<tr>
<td align="center"><em>Pengaturan Unduhan</em></td>
<td align="center"><em>Unduh Daftar Putar</em></td>
</tr>
<tr>
<td><img src="../branding/screenshots/audio_format.png" alt="Audio Format Selection with Save Thumbnail" width="400"/></td>
<td><img src="../branding/screenshots/Custom-Option.png" alt="Custom Options" width="400"/></td>
</tr>
<tr>
<td align="center"><em>Format Audio</em></td>
<td align="center"><em>Opsi Khusus</em></td>
</tr>
</table>
</div><a id="usage"></a>
## 📖 Penggunaan
<details>
<summary>🎯 Penggunaan Dasar</summary>
1. **Luncurkan YTSage**
2. **Tempel URL YouTube** (atau gunakan tombol "Tempel URL")
3. **Klik "Analisis"**
4. **Pilih Format:**
- `Video` untuk mengunduh video
- `Audio Only` untuk ekstraksi audio
5. **Pilih Opsi:**
- Aktifkan subtitle & pilih bahasa
- Aktifkan penggabungan subtitle
- Simpan gambar kecil
- Hapus segmen sponsor
- Simpan deskripsi
- Sematkan bab
6. **Pilih Direktori Keluaran**
7. **Klik "Unduh"**
> 💡 Direktori unduhan default adalah folder "Unduhan" milik pengguna.
</details>
<details>
<summary>📋 Unduh Daftar Putar</summary>
1. **Tempel URL Daftar Putar**
2. **Klik "Analisis"**
3. **Pilih video dari pemilih daftar putar (opsional, default untuk semua)**
4. **Pilih format/kualitas yang diinginkan**
5. **Klik "Unduh"**
> 💡 Aplikasi secara otomatis menangani antrian unduhan
</details>
<details>
<summary>🌍 Mode Generik untuk situs non-YouTube</summary>
Gunakan Mode Generik bila Anda ingin YTSage menerima URL dari situs yang didukung oleh yt-dlp, seperti Dailymotion, CBC Gem, TikTok, dan lainnya.
Cara menggunakannya:
1. Buka `Download Settings`.
2. Aktifkan `Generic Mode`.
3. Tempelkan URL video atau playlist non-YouTube yang didukung.
4. Klik `Analyze`.
5. Pilih format dan unduh seperti biasa.
Catatan:
- Mode Generik hanya mengubah validasi URL di dalam YTSage. Situs target harus tetap didukung oleh versi yt-dlp yang Anda instal.
- Beberapa situs memerlukan cookie, sesi login, proxy, atau argumen yt-dlp tambahan tergantung pada ekstraktornya.
- Jika situs gagal, perbarui yt-dlp terlebih dahulu dari tab pembaru bawaan sebelum melaporkan masalah tersebut.
</details>
<details>
<summary>🧰 Opsi Media dan Unduhan</summary>
- **Opsi Subtitle:** Filter bahasa dan sematkan subtitle ke dalam file video
- **Penggabungan Subtitle:** Menggabungkan subtitle ke dalam file video untuk subtitle hardcode
- **Simpan Deskripsi:** Simpan deskripsi video sebagai file teks
- **Simpan Gambar Kecil:** Menyimpan gambar kecil video sebagai file gambar
- **Sematkan Bab:** Sematkan penanda bab sebagai metadata untuk pemutar video yang kompatibel
- **Hapus Segmen Sponsor:** Hapus segmen sponsor dari video menggunakan SponsorBlock
- **Pangkas Video:** Unduh hanya bagian tertentu dari video dengan menentukan rentang waktu dalam format `HH:MM:SS`
</details>
<details>
<summary>⚙️ Pengaturan Output dan File</summary>
- **Pembatas Kecepatan:** Batasi kecepatan unduh, misalnya `500K` sebesar 500 KB/dtk
- **Simpan Jalur Unduhan:** Simpan jalur unduhan default untuk unduhan berikutnya. Tersedia di **Pengaturan Unduhan → Jalur Unduhan**.
- **Format Nama File Keluaran:** Sesuaikan format nama file keluaran menggunakan variabel seperti `%(title)s`, `%(uploader)s`, dan `%(resolution)s`. Tersedia di **Pengaturan Unduhan → Format Nama File**.
- **Format Output Paksa:** Paksa pengunduhan video ke dalam format wadah tertentu seperti `mp4`, `webm`, atau `mkv`. Tersedia di **Pengaturan Unduhan → Pengaturan Format Output**.
- **Konversi Format Audio:** Konversi unduhan audio saja ke format pilihan seperti `AAC`, `MP3`, `FLAC`, `WAV`, `Opus`, `M4A`, `Vorbis`, atau `Best`. Tersedia di **Pengaturan Unduhan → Pengaturan Format Audio**.
</details>
<details>
<summary>🌐 Akses dan Jaringan</summary>
- **Masuk dengan Cookie:** Masuk ke YouTube menggunakan cookie untuk mengakses konten pribadi.
Cara menggunakannya:
1. **Disarankan:** Gunakan opsi `Extract cookies from browser` bawaan di aplikasi, lalu pilih browser Anda dan opsional profil.
2. Alternatifnya, ekstrak cookie secara manual:
sebuah. Ekspor cookie dari browser Anda menggunakan ekstensi seperti [cookie-editor](https://github.com/moustachauve/cookie-editor?tab=readme-ov-file)
b. Salin cookie dalam format Netscape
c. Buat file bernama `cookies.txt` dan tempel cookie ke dalamnya
d. Pilih file `cookies.txt` di aplikasi
- **Dukungan Proxy:** Gunakan server proxy untuk mendownload, misalnya `http://<proxy-server>:<port>`
- **Mode Generik:** Izinkan YTSage menganalisis dan mengunduh dari situs non-YouTube yang didukung oleh yt-dlp. Aktifkan dari **Pengaturan Unduhan → Mode Generik**.
</details>
<details>
<summary>🛠️ Alat dan Perawatan</summary>
- **Perintah Khusus:** Akses fitur yt-dlp tingkat lanjut melalui argumen baris perintah
- **Tab Pembaruan:** Kelola alat pembaruan bawaan dari satu tempat di Opsi Kustom:
- **Pembaruan yt-dlp:** Periksa pembaruan dan beralih antara saluran rilis Stabil dan Malam
- **Pemeriksa Versi FFmpeg:** Periksa versi FFmpeg Anda dan buka panduan instalasi
- **Pembaruan Deno:** Periksa dan perbarui runtime Deno
- **Deteksi FFmpeg/yt-dlp/Deno:** Secara otomatis mendeteksi jalur dan versi FFmpeg, yt-dlp, dan Deno dari dialog Tentang.
- **Riwayat Unduhan:** Lihat unduhan sebelumnya dengan thumbnail dan status dari tombol **Riwayat**.
</details>
<details>
<summary>🌍 Lokalisasi</summary>
YTSage mendukung **14 bahasa** untuk aksesibilitas di seluruh dunia. Pilih bahasa pilihan Anda dari **Opsi Kustom → Bahasa**.
### Bahasa yang Didukung
| Bahasa | Kode | Bahasa | Kode |
|----------|------|----------|------|
| 🇮🇩 Bahasa Inggris | `en` | 🇪🇪 Spanyol | `es` |
| Arab Saudi | `ar` | 🇫🇷 Perancis | `fr` |
| 🇩🇪 Jerman | `de` | 🇮🇩 Hindi | `hi` |
| 🇮🇩 Bahasa Indonesia | `id` | 🇮🇹 Italia | `it` |
| 🇯ppa Jepang | `ja` | 🇱 Polandia | `pl` |
| 🇧🇷 Portugis | `pt` | 🇷л Rusia | `ru` |
| 🇹🇷 Turki | `tr` | CNY Cina | `zh` |
### README Terjemahan
| Bahasa | Berkas | Bahasa | Berkas |
|----------|------|----------|------|
| 🇮🇩 Bahasa Inggris | [README.md](../README.md) | 🇪🇪 Spanyol | [README.es.md](README.es.md)
| Arab Saudi | [README.ar.md](README.ar.md) | 🇫🇷 Perancis | [README.fr.md](README.fr.md) |
| 🇩🇪 Jerman | [README.de.md](README.de.md) | 🇮🇩 Hindi | [README.hi.md](README.hi.md) |
| 🇮🇩 Bahasa Indonesia | [README.id.md](README.id.md) | 🇮🇹 Italia | [README.it.md](README.it.md) |
| 🇯ppa Jepang | [README.ja.md](README.ja.md) | 🇱 Polandia | [README.pl.md](README.pl.md) |
| 🇧🇷 Portugis | [README.pt.md](README.pt.md) | 🇷л Rusia | [README.ru.md](README.ru.md) |
| 🇹🇷 Turki | [README.tr.md](README.tr.md) | CNY Cina | [README.zh.md](README.zh.md) |
> 💡 **Ingin berkontribusi terjemahan?** Lihat bagian [Contributing](#contributing) untuk membantu kami menambahkan lebih banyak bahasa!
</details>
<a id="troubleshooting"></a>
## 🛠️ Pemecahan masalah
<details>
<summary>Klik untuk melihat masalah umum dan solusinya</summary>
- **Format tabel tidak ditampilkan:** Perbarui yt-dlp ke versi terbaru, dan beralih ke yt-dlp setiap malam.
- **Pengunduhan gagal:** Periksa koneksi internet Anda dan pastikan video tersedia.
- **Kesalahan pengunduhan tertentu:**
- **Video pribadi:** Gunakan autentikasi cookie untuk mengakses konten pribadi.
- **Konten dengan batasan usia:** Masuk ke akun YouTube untuk melihat video dengan batasan usia.
- **Video yang diblokir secara geografis:** Pertimbangkan untuk menggunakan VPN untuk melewati batasan regional.
- **Video yang dihapus/dihapus:** Video tidak lagi tersedia di YouTube.
- **Streaming langsung:** Streaming langsung tidak dapat diunduh; tunggu hingga streaming berakhir.
- **Kesalahan jaringan:** Periksa koneksi internet Anda dan coba lagi.
- **URL tidak valid:** Pastikan URL benar dan berasal dari platform yang didukung.
- **Konten premium:** Memerlukan keanggotaan YouTube Premium.
- **Pemblokiran hak cipta:** Konten diblokir karena pembatasan hak cipta.
- **Pisahkan file video dan audio setelah diunduh:** Ini terjadi jika FFmpeg hilang atau tidak terdeteksi. YTSage memerlukan FFmpeg untuk menggabungkan aliran video dan audio berkualitas tinggi.
- **Solusi:** Pastikan FFmpeg diinstal dan dapat diakses di PATH sistem Anda. Untuk pengguna Windows, opsi termudah adalah mengunduh file `YTSage-v<version>-ffmpeg.exe`, yang disertakan dengan FFmpeg.
---
#### 🛡️ Peringatan Windows Defender / Antivirus
Beberapa perangkat lunak antivirus mungkin menandai file `.exe` sebagai positif palsu. Ini adalah **batasan umum** pada aplikasi paket.
**Mengapa ini terjadi:**
- Heuristik antivirus dapat salah mengidentifikasi executable yang dikemas sebagai sesuatu yang mencurigakan
**Alternatif yang aman:**
- ✅ **Gunakan instalasi pip:** `pip install ytsage` (disarankan)
- ✅ **Bangun dari sumber**: dengan mengikuti [guide](../.github/CI_CD_README.md) ini
- ✅ **Masukkan aplikasi ke daftar putih** di perangkat lunak antivirus Anda
#### 🍎 macOS: "Aplikasi rusak dan tidak dapat dibuka"
Jika Anda melihat kesalahan ini di macOS Sonoma atau lebih baru, Anda harus menghapus atribut karantina.
1. **Buka Terminal** (Anda dapat menemukannya menggunakan Spotlight).
2. **Ketik perintah berikut** tetapi **jangan** tekan Enter dulu. Pastikan untuk menyertakan spasi di akhir:
```bash
xattr -d com.apple.quarantine
```
3. **Seret file `YTSage.app`** dari jendela Finder Anda dan letakkan langsung ke jendela Terminal. Ini secara otomatis akan menempelkan jalur file yang benar.
4. **Tekan Enter** untuk menjalankan perintah.
5. **Coba buka YTSage.app lagi.** Sekarang seharusnya sudah diluncurkan dengan benar.
---
#### **Lokasi Konfigurasi (Lanjutan)**
- **Jendela:** `%LOCALAPPDATA%\YTSage`
- **macOS:** `~/Library/Application Support/YTSage`
- **Linux:** `~/.local/share/YTSage`
</details>
<a id="sponsor"></a>
## 💖 Sponsor
Jika YTSage menghemat waktu Anda, pertimbangkan untuk mensponsori proyek tersebut. Sponsor membantu menutupi waktu pengembangan, pengujian lintas platform, dan peningkatan di masa depan.
- Sponsor GitHub: https://github.com/sponsors/oop7
- Tautan sponsor juga tersedia langsung di dalam aplikasi dari dialog Tentang.
[![Sponsor YTSage](https://img.shields.io/badge/Sponsor-YTSage-EA4AAA?style=for-the-badge&logo=github&logoColor=white)](https://github.com/sponsors/oop7)
<a id="contributing"></a>
## 👥 Berkontribusi
Kami menyambut kontribusi! Inilah cara Anda dapat membantu:
1. 🍴 Cabangkan repositori
2. 🌿 Buat cabang fitur Anda:
```bash
git checkout -b feature/AmazingFeature
```
3. 💾 Komit perubahan Anda:
```bash
git commit -m 'Add some AmazingFeature'
```
4. 📤 Dorong ke cabang:
```bash
git push origin feature/AmazingFeature
```
5. 🔄 Buka Permintaan Tarik
### 🌍 Berkontribusi pada Terjemahan
- Perbarui file README lokal yang cocok (misalnya `README.es.md`)
- Jaga agar string aplikasi tetap sinkron dengan mengedit `ytsage/languages/<code>.json`
- Jika bahasa Anda hilang, mulai dari `README.md` dan buat `README.<code>.md`
<details>
<summary>📂 Struktur Proyek</summary>
## YTSage - Struktur Proyek
Dokumen ini menjelaskan struktur folder YTSage yang terorganisir.
### 📁 Struktur Proyek
```
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
```
</details>
## ⭐️ Sejarah Bintang
<div align="center">
## Sejarah Bintang
<a href="https://www.star-history.com/#oop7/YTSage&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date" />
</picture>
</a>
</div>
## 📜 Lisensi
Proyek ini dilisensikan di bawah Lisensi MIT - lihat file [LICENSE](../LICENSE) untuk detailnya.
## 🙏 Ucapan Terima Kasih
<details>
<summary>Tampilkan Ucapan Terima Kasih</summary>
<div align="center">
<p>Terima kasih yang sebesar-besarnya kepada semua orang yang telah berkontribusi pada proyek ini dengan membuka terbitan untuk menyarankan perbaikan atau melaporkan bug.</p>
<table>
<tr class="section"><th colspan="2">Komponen Inti</th></tr>
<tr>
<td width="35%"><a href="https://github.com/yt-dlp/yt-dlp">yt-dlp</a></td>
<td>Mesin Unduh</td>
</tr>
<tr>
<td><a href="https://ffmpeg.org/">FFmpeg</a></td>
<td>Pemrosesan Media</td>
</tr>
<tr>
<td><a href="https://deno.com/">Deno</a></td>
<td>Waktu proses untuk integrasi dengan yt-dlp</td>
</tr>
<tr class="section"><th colspan="2">Perpustakaan & Kerangka Kerja</th></tr>
<tr>
<td><a href="https://wiki.qt.io/Qt_for_Python">PySide6</a></td>
<td>Kerangka GUI</td>
</tr>
<tr>
<td><a href="https://python-pillow.org/">Bantal</a></td>
<td>Pemrosesan Gambar</td>
</tr>
<tr><td><a href="https://requests.readthedocs.io/">permintaan</a></td>
<td>Permintaan HTTP</td>
</tr>
<tr>
<td><a href="https://packaging.python.org/">kemasan</a></td>
<td>Penanganan Versi & Paket</td>
</tr>
<tr>
<td><a href="https://python-markdown.github.io/">penurunan harga</a></td>
<td>Render Penurunan Harga</td>
</tr>
<tr>
<td><a href="https://github.com/Delgan/loguru">logguru</a></td>
<td>Pencatatan</td>
</tr>
<tr class="section"><th colspan="2">Aset & Kontributor</th></tr>
<tr>
<td><a href="https://pixabay.com/sound-effects/new-notification-09-352705/">Pemberitahuan Baru 09 oleh Universfield</a></td>
<td>Suara Notifikasi</td>
</tr>
<tr>
<td><a href="https://github.com/viru185">virus185</a></td>
<td>Kontributor Kode</td>
</tr>
</table>
</div>
</details>
## ⚠️ Penafian
Alat ini hanya untuk penggunaan pribadi. Harap hormati persyaratan layanan YouTube dan hak pembuat konten.
---
<div align="center">
Dibuat dengan ❤️ oleh [oop7](https://github.com/oop7)
</div>
+617
View File
@@ -0,0 +1,617 @@
<div align="center">
<img src="../branding/svg/ytsage-wordmark.svg" width="400" alt="ytsage-wordmark">
<img src="../branding/screenshots/main.png" width="800" alt="YTSage Interface"/>
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-1f2937?style=for-the-badge&logo=python&logoColor=white)](https://www.python.org/downloads/)
[![PyPI Downloads](https://img.shields.io/pepy/dt/ytsage?color=1f2937&style=for-the-badge&label=downloads&logo=python&logoColor=white)](https://pepy.tech/project/ytsage)
[![GitHub Downloads](https://img.shields.io/github/downloads/oop7/YTSage/total?color=1f2937&style=for-the-badge&label=downloads&logo=github&logoColor=white)](https://github.com/oop7/YTSage/releases)
[![License: MIT](https://img.shields.io/badge/License-MIT-1f2937?style=for-the-badge&logo=opensource&logoColor=white)](https://opensource.org/licenses/MIT)
[![Supported Platforms](https://img.shields.io/badge/platform-cross--platform-1f2937?style=for-the-badge&logo=github&logoColor=white)](https://github.com/oop7/YTSage/releases)
[![GitHub Stars](https://img.shields.io/github/stars/oop7/YTSage?color=c90000&style=for-the-badge&logo=github&logoColor=white)](https://github.com/oop7/YTSage/stargazers)
[![PyPI version](https://img.shields.io/pypi/v/ytsage?color=c90000&style=for-the-badge&logo=pypi&logoColor=white)](https://pypi.org/project/ytsage/)
[![GitHub Sponsors](https://img.shields.io/github/sponsors/oop7?color=c90000&style=for-the-badge&logo=githubsponsors&logoColor=white)](https://github.com/sponsors/oop7)
**Un moderno downloader da YouTube con un'interfaccia PySide6 pulita.**
Scarica video di qualsiasi qualità, estrai audio, recupera sottotitoli e altro ancora.
### 🌍 README Lingue
Inglese: [EN](../README.md)
| Indirizzo: [AR](README.ar.md)
| Tedesco: [DE](README.de.md)
| Español: [ES](README.es.md)
| Francese: [FR](README.fr.md)
| Nome: [HI](README.hi.md)
| Bahasa Indonesia: [ID](README.id.md)
| Italiano: [IT](README.it.md)
| 日本語: [JA](README.ja.md)
| Polacco: [PL](README.pl.md)
| Portoghese: [PT](README.pt.md)
| Russo: [RU](README.ru.md)
| Turchia: [TR](README.tr.md)
| Nome: [ZH](README.zh.md)
<p align="center">
<a href="#installation">Installazione</a> •
<a href="#features">Caratteristiche</a> •
<a href="#usage">Utilizzo</a> •
<a href="#screenshots">Screenshot</a> •
<a href="#troubleshooting">Risoluzione dei problemi</a> •
<a href="#sponsor">Sponsor</a> •
<a href="#contributing">Contribuendo</a>
</p>
</div>
---
<a id="why-ytsage"></a>
## ❓Perché YTSage?
YTSage è progettato per gli utenti che desiderano un **downloader YouTube semplice ma potente**. A differenza di altri strumenti, offre:
- Un'interfaccia PySide6 pulita e moderna
- Download con un clic per video, audio e sottotitoli
- Funzionalità avanzate come SponsorBlock, fusione dei sottotitoli e selezione della playlist
- Modalità generica opzionale per i siti supportati da yt-dlp oltre YouTube
- Supporto multipiattaforma e facilità di installazione
<a id="features"></a>
## ✨Caratteristiche
<div align="center">
| Caratteristiche principali | Funzionalità avanzate | Funzionalità extra |
|------------------------------------|----------------------------------------------|------------------------------------|
| 🎥 Tabella dei formati | 🚫Integrazione SponsorBlock | 🎞️ Visualizzazione FPS/HDR |
| 🎵Estrazione audio | 📝 Seleziona e unisci più sottotitoli | 🔄 Aggiornamento automatico yt-dlp |
| ✨Interfaccia utente semplice | 💾 Salva descrizione e miniatura | 🛠️ Rilevamento FFmpeg/yt-dlp/Deno |
| 📋 Supporto e selettore playlist | 🚀Limitatore di velocità | ⚙️ Comandi personalizzati |
| 📑 Incorpora capitoli | ✂️ Taglia le sezioni video | 🍪 Accedi con i cookie |
| 📜 Scarica Cronologia | 🔄 Rilascio Selezione canale | 🌐Supporto proxy |
| 🎚️ Conversione del formato audio | 🎬 Impostazioni formato video | 🆙 Scheda Aggiornamento integrata |
| 🌍 Modalità generica |
| 🌍 Localizzazione in 14 lingue | |
</div>
<a id="installation"></a>
## 🚀 Installazione
### ⚡ Installazione rapida (consigliata)
Installa YTSage da PyPI:
```bash
pip install ytsage
```
<details>
<summary>🔄 Aggiorna un'installazione esistente</summary>
```bash
pip install --upgrade ytsage
```
</details>
Quindi avvia l'app:
```bash
ytsage
```
### 📦 Eseguibili predefiniti
> [👉 Download Latest Release](https://github.com/oop7/YTSage/releases/latest)
#### 🪟 Finestre
| Formato | Descrizione |
|--------|-------------|
| ![Windows EXE](https://img.shields.io/badge/Windows-EXE-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Programma di installazione standard |
| ![Windows FFmpeg](https://img.shields.io/badge/Windows-FFmpeg-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Con FFmpeg in bundle |
| ![Windows Portable](https://img.shields.io/badge/Windows-Portable-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Versione portatile, nessuna installazione richiesta |
| ![Windows Portable FFmpeg](https://img.shields.io/badge/Windows-Portable%20FFmpeg-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Portatile con FFmpeg, zippato |
<details>
<summary>🛠️ Passaggi di installazione</summary>
1. **Programma di installazione EXE (`.exe`)**: fare doppio clic sul file e seguire la procedura guidata di installazione.
2. **Versione portatile (`.zip`)**: estrai l'archivio nella posizione desiderata ed esegui `ytsage.exe`.
3. **FFmpeg in bundle**: scegli le versioni in bundle di FFmpeg se non hai FFmpeg installato sul tuo sistema.
</details>
#### 🐧Linux
| Formato | Descrizione |
|--------|-------------|
| ![Linux DEB](https://img.shields.io/badge/Linux-DEB-FCC624?style=for-the-badge&logo=linux&logoColor=black) | Pacchetto Debian |
| ![Linux AppImage](https://img.shields.io/badge/Linux-AppImage-FCC624?style=for-the-badge&logo=linux&logoColor=black) | AppImage, portatile |
| ![Linux RPM](https://img.shields.io/badge/Linux-RPM-FCC624?style=for-the-badge&logo=linux&logoColor=black) | Pacchetto RPM |
| ![Flathub](https://img.shields.io/badge/Linux-Flatpak-FCC624?style=for-the-badge&logo=flathub&logoColor=black) | Pacchetto Flatpack |
<details>
<summary>🛠️ Passaggi di installazione</summary>
- **DEB (`.deb`)**:
```bash
sudo dpkg -i ytsage_*.deb
sudo apt-get install -f # Fix missing dependencies if any
```
- **Giri/min (`.rpm`)**:
```bash
sudo rpm -i ytsage-*.rpm
```
- **AppImage (`.AppImage`)**:
```bash
chmod +x YTSage-*.AppImage
./YTSage-*.AppImage
```
- **Flatpak**: segui le istruzioni su Flathub o esegui:
```bash
flatpak install flathub io.github.oop7.ytsage
```
</details>
#### 🍎 macOS
| Formato | Descrizione |
|--------|-------------|
| ![macOS ARM64 APP](https://img.shields.io/badge/macOS-ARM64%20APP-000000?style=for-the-badge&logo=apple&logoColor=white) | Applicazione zippata per Apple Silicon |
| ![macOS ARM64 DMG](https://img.shields.io/badge/macOS-ARM64%20DMG-000000?style=for-the-badge&logo=apple&logoColor=white) | Programma di installazione dell'immagine disco per Apple Silicon |
<details>
<summary>🛠️ Passaggi di installazione</summary>
- **DMG Installer (`.dmg`)**: fai doppio clic per montare, quindi trascina `YTSage.app` nella cartella Applicazioni.
- **Archivio app (`.zip`)**: estrai il file zip e sposta `YTSage.app` nella cartella Applicazioni.
*Nota: se riscontri l'errore "L'app è danneggiata", consulta [macOS troubleshooting section](#troubleshooting) di seguito.*
</details>
---
<details>
<summary>💻 Installazione manuale dalla fonte</summary>
### 1. Clonare il repository
```bash
git clone https://github.com/oop7/YTSage.git
cd YTSage
```
### 2. Installa le dipendenze
#### ⚡ Con uv
```bash
uv pip install .
```
#### 📦 Oppure con pip standard
```bash
pip install .
```
### 3. Eseguire l'applicazione
```bash
python -m ytsage.main
```
</details>
<a id="screenshots"></a>
## 📸 Schermate
<div align="center">
<table>
<tr>
<td><img src="../branding/screenshots/Download-Settings.png" alt="Download Settings" width="400"/></td>
<td><img src="../branding/screenshots/playlist.png" alt="Playlist Download" width="400"/></td>
</tr>
<tr>
<td align="center"><em>Scarica impostazioni</em></td>
<td align="center"><em>Scarica playlist</em></td>
</tr>
<tr>
<td><img src="../branding/screenshots/audio_format.png" alt="Audio Format Selection with Save Thumbnail" width="400"/></td>
<td><img src="../branding/screenshots/Custom-Option.png" alt="Custom Options" width="400"/></td>
</tr>
<tr>
<td align="center"><em>Formato audio</em></td>
<td align="center"><em>Opzioni personalizzate</em></td>
</tr>
</table>
</div><a id="usage"></a>
## 📖 Utilizzo
<details>
<summary>🎯 Utilizzo di base</summary>
1. **Avvia YTSage**
2. **Incolla l'URL di YouTube** (o utilizza il pulsante "Incolla URL")
3. **Fai clic su "Analizza"**
4. **Seleziona formato:**
- `Video` per i download di video
- `Audio Only` per l'estrazione audio
5. **Scegli le opzioni:**
- Abilita i sottotitoli e seleziona la lingua
- Abilita l'unione dei sottotitoli
- Salva miniatura
- Rimuovere i segmenti dello sponsor
- Salva descrizione
- Incorpora capitoli
6. **Seleziona directory di output**
7. **Fai clic su "Scarica"**
> 💡 La directory di download predefinita è la cartella "Download" dell'utente.
</details>
<details>
<summary>📋 Download della playlist</summary>
1. **Incolla l'URL della playlist**
2. **Fai clic su "Analizza"**
3. **Seleziona i video dal selettore della playlist (facoltativo, l'impostazione predefinita è tutti)**
4. **Scegli il formato/la qualità desiderata**
5. **Fai clic su "Scarica"**
> 💡 L'applicazione gestisce automaticamente la coda di download
</details>
<details>
<summary>🌍 Modalità generica per siti non YouTube</summary>
Utilizza la modalità generica quando desideri che YTSage accetti URL da siti supportati da yt-dlp, come Dailymotion, CBC Gem, TikTok e altri.
Come usarlo:
1. Apri `Download Settings`.
2. Abilita `Generic Mode`.
3. Incolla un video o un URL di playlist non YouTube supportato.
4. Fare clic su `Analyze`.
5. Scegli un formato e scarica come al solito.
Note:
- La modalità generica modifica solo la convalida dell'URL all'interno di YTSage. Il sito di destinazione deve essere ancora supportato dalla versione yt-dlp installata.
- Alcuni siti richiedono cookie, una sessione di accesso, un proxy o argomenti yt-dlp aggiuntivi a seconda dell'estrattore.
- Se un sito non funziona, aggiorna prima yt-dlp dalla scheda di aggiornamento integrata prima di segnalare il problema.
</details>
<details>
<summary>🧰 Opzioni multimediali e di download</summary>
- **Opzioni sottotitoli:** Filtra le lingue e incorpora i sottotitoli nel file video
- **Unione sottotitoli:** unisci i sottotitoli nel file video per i sottotitoli hardcoded
- **Salva descrizione:** salva la descrizione del video come file di testo
- **Salva miniatura:** salva la miniatura del video come file immagine
- **Incorpora capitoli:** incorpora indicatori di capitolo come metadati per lettori video compatibili
- **Rimuovi segmenti di sponsor:** rimuovi i segmenti di sponsor dal video utilizzando SponsorBlock
- **Taglia video:** scarica solo parti specifiche di un video specificando gli intervalli di tempo nel formato `HH:MM:SS`
</details>
<details>
<summary>⚙️ Impostazioni file e output</summary>
- **Limitatore di velocità:** Limita la velocità di download, ad esempio `500K` per 500 KB/s
- **Salva percorso di download:** salva il percorso di download predefinito per download futuri. Disponibile in **Impostazioni di download → Percorso di download**.
- **Formato nome file di output:** Personalizza il formato del nome file di output utilizzando variabili come `%(title)s`, `%(uploader)s` e `%(resolution)s`. Disponibile in **Impostazioni download → Formato nome file**.
- **Forza formato output:** forza i download dei video in un formato contenitore specifico come `mp4`, `webm` o `mkv`. Disponibile in **Impostazioni download → Impostazioni formato output**.
- **Conversione del formato audio:** Converti i download solo audio nei formati preferiti come `AAC`, `MP3`, `FLAC`, `WAV`, `Opus`, `M4A`, `Vorbis`, o `Best`. Disponibile in **Impostazioni download → Impostazioni formato audio**.
</details>
<details>
<summary>🌐 Accesso e Rete</summary>
- **Accedi con i cookie:** Accedi a YouTube utilizzando i cookie per accedere ai contenuti privati.
Come usarlo:
1. **Consigliato:** utilizza l'opzione `Extract cookies from browser` integrata nell'app, quindi seleziona il browser e, facoltativamente, un profilo.
2. In alternativa, estrarre manualmente i cookie:
un. Esporta i cookie dal tuo browser utilizzando un'estensione come [cookie-editor](https://github.com/moustachauve/cookie-editor?tab=readme-ov-file)
b. Copia i cookie in formato Netscape
c. Crea un file denominato `cookies.txt` e incollaci i cookie
d. Seleziona il file `cookies.txt` nell'app
- **Supporto proxy:** utilizza un server proxy per i download, ad esempio `http://<proxy-server>:<port>`
- **Modalità generica:** consente a YTSage di analizzare e scaricare da siti non YouTube supportati da yt-dlp. Abilitalo da **Impostazioni download → Modalità generica**.
</details>
<details>
<summary>🛠️ Attrezzi e Manutenzione</summary>
- **Comandi personalizzati:** accedi alle funzionalità avanzate di yt-dlp tramite argomenti della riga di comando
- **Scheda Aggiornamento:** gestisci gli strumenti di aggiornamento integrati da un'unica posizione in Opzioni personalizzate:
- **Aggiornamenti yt-dlp:** controlla gli aggiornamenti e passa tra i canali di rilascio stabile e notturno
- **Controllo versione FFmpeg:** controlla la tua versione di FFmpeg e apri le guide di installazione
- **Aggiornamenti Deno:** controlla e aggiorna il runtime Deno
- **Rilevamento FFmpeg/yt-dlp/Deno:** rileva automaticamente i percorsi e le versioni di FFmpeg, yt-dlp e Deno dalla finestra di dialogo Informazioni.
- **Cronologia download:** visualizza i download precedenti con miniature e stati dal pulsante **Cronologia**.
</details>
<details>
<summary>🌍 Localizzazione</summary>
YTSage supporta **14 lingue** per l'accessibilità in tutto il mondo. Seleziona la tua lingua preferita da **Opzioni personalizzate → Lingua**.
### Lingue supportate
| Lingua | Codice | Lingua | Codice |
|----------|------|----------|------|
| 🇺🇸 Inglese | `en` | 🇪🇸Spagnolo | `es` |
| 🇸🇦 Arabo | `ar` | 🇫🇷 Francese | `fr` |
| 🇩🇪 Tedesco | `de` | 🇮🇳 Hindi | `hi` |
| 🇮🇩 Indonesiano | `id` | 🇮🇹Italiano | `it` |
| 🇯🇵Giapponese | `ja` | 🇵🇱 Polacco | `pl` |
| 🇧🇷 Portoghese | `pt` | 🇷🇺 Russo | `ru` |
| 🇹🇷 Turco | `tr` | 🇨🇳Cinese | `zh` |
### Traduzioni README
| Lingua | File | Lingua | File |
|----------|------|----------|------|
| 🇺🇸 Inglese | [README.md](../README.md) | 🇪🇸Spagnolo | [README.es.md](README.es.md)
| 🇸🇦 Arabo | [README.ar.md](README.ar.md) | 🇫🇷 Francese | [README.fr.md](README.fr.md) |
| 🇩🇪 Tedesco | [README.de.md](README.de.md) | 🇮🇳 Hindi | [README.hi.md](README.hi.md) |
| 🇮🇩 Indonesiano | [README.id.md](README.id.md) | 🇮🇹Italiano | [README.it.md](README.it.md) |
| 🇯🇵Giapponese | [README.ja.md](README.ja.md) | 🇵🇱 Polacco | [README.pl.md](README.pl.md) |
| 🇧🇷 Portoghese | [README.pt.md](README.pt.md) | 🇷🇺 Russo | [README.ru.md](README.ru.md) |
| 🇹🇷 Turco | [README.tr.md](README.tr.md) | 🇨🇳Cinese | [README.zh.md](README.zh.md) |
> 💡 **Vuoi contribuire con una traduzione?** Dai un'occhiata alla sezione [Contributing](#contributing) per aiutarci ad aggiungere altre lingue!
</details>
<a id="troubleshooting"></a>
## 🛠️ Risoluzione dei problemi
<details>
<summary>Fai clic per visualizzare problemi e soluzioni comuni</summary>
- **La tabella di formato non viene visualizzata:** Aggiorna yt-dlp alla versione più recente e passa a yt-dlp ogni notte.
- **Download non riuscito:** controlla la tua connessione Internet e assicurati che il video sia disponibile.
- **Errori di download specifici:**
- **Video privati:** utilizza l'autenticazione tramite cookie per accedere ai contenuti privati.
- **Contenuti soggetti a limiti di età:** accedi all'account YouTube per visualizzare video soggetti a limiti di età.
- **Video geo-bloccati:** valuta la possibilità di utilizzare una VPN per aggirare le restrizioni regionali.
- **Video rimossi/eliminati:** il video non è più disponibile su YouTube.
- **Streaming live:** Gli streaming live non possono essere scaricati; attendere la fine dello streaming.
- **Errori di rete:** controlla la connessione Internet e riprova.
- **URL non validi:** assicurati che l'URL sia corretto e provenga da una piattaforma supportata.
- **Contenuti premium:** richiede l'abbonamento a YouTube Premium.
- **Blocchi dovuti al copyright:** Il contenuto è bloccato a causa di restrizioni sul copyright.
- **Separare i file video e audio dopo il download:** Ciò accade quando FFmpeg manca o non viene rilevato. YTSage richiede FFmpeg per unire flussi video e audio di alta qualità.
- **Soluzione:** assicurati che FFmpeg sia installato e accessibile nel PATH del tuo sistema. Per gli utenti Windows, l'opzione più semplice è scaricare il file `YTSage-v<version>-ffmpeg.exe`, fornito in bundle con FFmpeg.
---
#### 🛡️ Avviso Windows Defender/Antivirus
Alcuni software antivirus potrebbero contrassegnare i file `.exe` come falsi positivi. Questa è una **limitazione nota** delle applicazioni in pacchetto.
**Perché ciò accade:**
- L'euristica dell'antivirus può identificare erroneamente gli eseguibili compressi come sospetti
**Alternative sicure:**
- ✅ **Utilizza installazione pip:** `pip install ytsage` (consigliato)
- ✅ **Crea dal codice sorgente**: seguendo questo [guide](../.github/CI_CD_README.md)
- ✅ **Autorizza l'applicazione** nel tuo software antivirus
#### 🍎 macOS: "L'app è danneggiata e non può essere aperta"
Se visualizzi questo errore su macOS Sonoma o versioni successive, devi rimuovere l'attributo quarantena.
1. **Apri Terminale** (puoi trovarlo utilizzando Spotlight).
2. **Digita il seguente comando** ma **non** premere ancora Invio. Assicurati di includere lo spazio alla fine:
```bash
xattr -d com.apple.quarantine
```
3. **Trascina il file `YTSage.app`** dalla finestra del Finder e rilascialo direttamente nella finestra Terminale. Questo incollerà automaticamente il percorso file corretto.
4. **Premere Invio** per eseguire il comando.
5. **Prova ad aprire nuovamente YTSage.app.** Ora dovrebbe avviarsi correttamente.
---
#### **Posizioni di configurazione (avanzate)**
- **Windows:** `%LOCALAPPDATA%\YTSage`
- **macOS:** `~/Library/Application Support/YTSage`
- **Linux:** `~/.local/share/YTSage`
</details>
<a id="sponsor"></a>
## 💖 Sponsor
Se YTSage ti fa risparmiare tempo, valuta la possibilità di sponsorizzare il progetto. La sponsorizzazione aiuta a coprire i tempi di sviluppo, i test su tutte le piattaforme e i miglioramenti futuri.
- Sponsor GitHub: https://github.com/sponsors/oop7
- Il collegamento allo sponsor è disponibile anche direttamente all'interno dell'app dalla finestra di dialogo Informazioni.
[![Sponsor YTSage](https://img.shields.io/badge/Sponsor-YTSage-EA4AAA?style=for-the-badge&logo=github&logoColor=white)](https://github.com/sponsors/oop7)
<a id="contributing"></a>
## 👥 Contribuire
Diamo il benvenuto ai contributi! Ecco come puoi aiutare:
1. 🍴 Effettua il fork del repository
2. 🌿 Crea il tuo ramo di funzionalità:
```bash
git checkout -b feature/AmazingFeature
```
3. 💾 Applica le tue modifiche:
```bash
git commit -m 'Add some AmazingFeature'
```
4. 📤 Spingere verso il ramo:
```bash
git push origin feature/AmazingFeature
```
5. 🔄 Apri una richiesta di pull
### 🌍 Contribuire alle traduzioni
- Aggiorna il file README localizzato corrispondente (ad esempio `README.es.md`)
- Mantieni sincronizzate le stringhe dell'app modificando `ytsage/languages/<code>.json`
- Se manca la tua lingua, inizia da `README.md` e crea `README.<code>.md`
<details>
<summary>📂 Struttura del progetto</summary>
## YTSage - Struttura del progetto
Questo documento descrive la struttura di cartelle organizzata di YTSage.
### 📁 Struttura del progetto
```
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
```
</details>
## ⭐️ Storia delle stelle
<div align="center">
## Storia delle stelle
<a href="https://www.star-history.com/#oop7/YTSage&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date" />
</picture>
</a>
</div>
## 📜 Licenza
Questo progetto è concesso in licenza con la licenza MIT: per i dettagli vedere il file [LICENSE](../LICENSE).
## 🙏Ringraziamenti
<details>
<summary>Mostra Ringraziamenti</summary>
<div align="center">
<p>Un sentito ringraziamento a tutti coloro che hanno contribuito a questo progetto aprendo un issue per suggerire un miglioramento o segnalare un bug.</p>
<table>
<tr class="section"><th colspan="2">Componenti principali</th></tr>
<tr>
<td width="35%"><a href="https://github.com/yt-dlp/yt-dlp">yt-dlp</a></td>
<td>Scarica motore</td>
</tr>
<tr>
<td><a href="https://ffmpeg.org/">FFmpeg</a></td>
<td>Elaborazione multimediale</td>
</tr>
<tr>
<td><a href="https://deno.com/">Deno</a></td>
<td>Runtime per integrazione con yt-dlp</td>
</tr>
<tr class="section"><th colspan="2">Librerie e framework</th></tr>
<tr>
<td><a href="https://wiki.qt.io/Qt_for_Python">PySide6</a></td>
<td>Framework GUI</td>
</tr>
<tr>
<td><a href="https://python-pillow.org/">Cuscino</a></td>
<td>Elaborazione immagini</td>
</tr>
<tr><td><a href="https://requests.readthedocs.io/">richieste</a></td>
<td>Richieste HTTP</td>
</tr>
<tr>
<td><a href="https://packaging.python.org/">imballaggio</a></td>
<td>Gestione versioni e pacchetti</td>
</tr>
<tr>
<td><a href="https://python-markdown.github.io/">ribasso</a></td>
<td>Rendering riduzione</td>
</tr>
<tr>
<td><a href="https://github.com/Delgan/loguru">loguru</a></td>
<td>Registrazione</td>
</tr>
<tr class="section"><th colspan="2">Risorse e contributori</th></tr>
<tr>
<td><a href="https://pixabay.com/sound-effects/new-notification-09-352705/">Nuova notifica 09 di Universfield</a></td>
<td>Suono di notifica</td>
</tr>
<tr>
<td><a href="https://github.com/viru185">viru185</a></td>
<td>Codice Contributore</td>
</tr>
</table>
</div>
</details>
## ⚠️ Disclaimer
Questo strumento è solo per uso personale. Rispetta i termini di servizio di YouTube e i diritti dei creatori di contenuti.
---
<div align="center">
Realizzato con ❤️ da [oop7](https://github.com/oop7)
</div>
+616
View File
@@ -0,0 +1,616 @@
<div align="center">
<img src="../branding/svg/ytsage-wordmark.svg" width="400" alt="ytsage-wordmark">
<img src="../branding/screenshots/main.png" width="800" alt="YTSage Interface"/>
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-1f2937?style=for-the-badge&logo=python&logoColor=white)](https://www.python.org/downloads/)
[![PyPI Downloads](https://img.shields.io/pepy/dt/ytsage?color=1f2937&style=for-the-badge&label=downloads&logo=python&logoColor=white)](https://pepy.tech/project/ytsage)
[![GitHub Downloads](https://img.shields.io/github/downloads/oop7/YTSage/total?color=1f2937&style=for-the-badge&label=downloads&logo=github&logoColor=white)](https://github.com/oop7/YTSage/releases)
[![License: MIT](https://img.shields.io/badge/License-MIT-1f2937?style=for-the-badge&logo=opensource&logoColor=white)](https://opensource.org/licenses/MIT)
[![Supported Platforms](https://img.shields.io/badge/platform-cross--platform-1f2937?style=for-the-badge&logo=github&logoColor=white)](https://github.com/oop7/YTSage/releases)
[![GitHub Stars](https://img.shields.io/github/stars/oop7/YTSage?color=c90000&style=for-the-badge&logo=github&logoColor=white)](https://github.com/oop7/YTSage/stargazers)
[![PyPI version](https://img.shields.io/pypi/v/ytsage?color=c90000&style=for-the-badge&logo=pypi&logoColor=white)](https://pypi.org/project/ytsage/)
[![GitHub Sponsors](https://img.shields.io/github/sponsors/oop7?color=c90000&style=for-the-badge&logo=githubsponsors&logoColor=white)](https://github.com/sponsors/oop7)
**クリーンな PySide6 インターフェイスを備えた最新の YouTube ダウンローダー。**
任意の品質でビデオをダウンロードしたり、音声を抽出したり、字幕を取得したりできます。
### 🌍 README 言語
英語: [EN](../README.md)
|番号: [AR](README.ar.md)
|ドイツ語: [DE](README.de.md)
|スペイン語: [ES](README.es.md)
|フランセ: [FR](README.fr.md)
|名前: [HI](README.hi.md)
|インドネシア語: [ID](README.id.md)
|イタリアーノ: [IT](README.it.md)
| 日本語: [JA](README.ja.md)
|ポルスキー: [PL](README.pl.md)
|ポルトガル語: [PT](README.pt.md)
| Русский: [RU](README.ru.md)
|テュルクチェ: [TR](README.tr.md)
| 中文: [ZH](README.zh.md)
<p align="center">
<a href="#installation">インストール</a> •
<a href="#features">特徴</a> •
<a href="#usage">使用方法</a> •
<a href="#screenshots">スクリーンショット</a> •
<a href="#troubleshooting">トラブルシューティング</a> •
<a href="#sponsor">スポンサー</a> •
<a href="#contributing">貢献しています</a>
</p>
</div>
---
<a id="why-ytsage"></a>
## ❓ なぜ YTSage なのか?
YTSage は、**シンプルかつ強力な YouTube ダウンローダー**を求めるユーザー向けに設計されています。他のツールとは異なり、次の機能を提供します。
- クリーンでモダンな PySide6 インターフェイス
- ワンクリックでビデオ、オーディオ、字幕をダウンロード
- スポンサーブロック、字幕の結合、プレイリストの選択などの高度な機能
- YouTube 以外の yt-dlp 対応サイト向けのオプションの汎用モード
- クロスプラットフォームのサポートと簡単なインストール
<a id="features"></a>
## ✨ 特徴
<div align="center">
|コア機能 |高度な機能 |追加機能 |
|---------------------------------|-------------------------------------------|-------------------------------------|
| 🎥 テーブルのフォーマット | 🚫 スポンサーブロックの統合 | 🎞️ FPS/HDR ディスプレイ |
| 🎵 オーディオ抽出 | 📝 複数字幕の選択と結合 | 🔄 yt-dlp を自動更新 |
| ✨シンプルなUI | 💾 説明とサムネイルを保存 | 🛠️ FFmpeg/yt-dlp/Deno 検出 |
| 📋 プレイリストのサポートとセレクター | 🚀 スピードリミッター | ⚙️ カスタムコマンド |
| 📑 章を埋め込む | ✂️ ビデオセクションをトリミング | 🍪 Cookie でログイン |
| 📜 ダウンロード履歴 | 🔄 チャンネル選択をリリース | 🌐 プロキシサポート |
| 🎚️ オーディオ形式変換 | 🎬 ビデオ形式設定 | 🆙 内蔵アップデータタブ |
| 🌍 汎用モード |
| 🌍 14 言語のローカリゼーション | |
</div>
<a id="installation"></a>
## 🚀 インストール
### ⚡ クイックインストール (推奨)
PyPI から YTSage をインストールします。
```bash
pip install ytsage
```
<details>
<summary>🔄 既存のインストールを更新します</summary>
```bash
pip install --upgrade ytsage
```
</details>
次に、アプリを起動します。
```bash
ytsage
```
### 📦 ビルド済みの実行可能ファイル
> [👉 Download Latest Release](https://github.com/oop7/YTSage/releases/latest)
#### 🪟 Windows
|フォーマット |説明 |
|----------|---------------|
| ![Windows EXE](https://img.shields.io/badge/Windows-EXE-0078D6?style=for-the-badge&logo=windows&logoColor=white) |標準インストーラー |
| ![Windows FFmpeg](https://img.shields.io/badge/Windows-FFmpeg-0078D6?style=for-the-badge&logo=windows&logoColor=white) | FFmpeg がバンドルされている |
| ![Windows Portable](https://img.shields.io/badge/Windows-Portable-0078D6?style=for-the-badge&logo=windows&logoColor=white) |ポータブル版、インストール不要 |
| ![Windows Portable FFmpeg](https://img.shields.io/badge/Windows-Portable%20FFmpeg-0078D6?style=for-the-badge&logo=windows&logoColor=white) | FFmpeg、zip 形式でポータブル |
<details>
<summary>🛠️ インストール手順</summary>
1. **EXE インストーラー (`.exe`)**: ファイルをダブルクリックし、セットアップ ウィザードに従います。
2. **ポータブル バージョン (`.zip`)**: アーカイブを目的の場所に解凍し、`ytsage.exe` を実行します。
3. **FFmpeg バンドル**: システムに FFmpeg がインストールされていない場合は、FFmpeg バンドル バージョンを選択します。
</details>
#### 🐧 Linux
|フォーマット |説明 |
|----------|---------------|
| ![Linux DEB](https://img.shields.io/badge/Linux-DEB-FCC624?style=for-the-badge&logo=linux&logoColor=black) | Debian パッケージ |
| ![Linux AppImage](https://img.shields.io/badge/Linux-AppImage-FCC624?style=for-the-badge&logo=linux&logoColor=black) | AppImage、ポータブル |
| ![Linux RPM](https://img.shields.io/badge/Linux-RPM-FCC624?style=for-the-badge&logo=linux&logoColor=black) | RPM パッケージ |
| ![Flathub](https://img.shields.io/badge/Linux-Flatpak-FCC624?style=for-the-badge&logo=flathub&logoColor=black) |フラットパックバンドル |
<details>
<summary>🛠️ インストール手順</summary>
- **DEB (`.deb`)**:
```bash
sudo dpkg -i ytsage_*.deb
sudo apt-get install -f # Fix missing dependencies if any
```
- **RPM (`.rpm`)**:
```bash
sudo rpm -i ytsage-*.rpm
```
- **アプリ画像 (`.AppImage`)**:
```bash
chmod +x YTSage-*.AppImage
./YTSage-*.AppImage
```
- **Flatpak**: Flathub の指示に従うか、次のコマンドを実行します。
```bash
flatpak install flathub io.github.oop7.ytsage
```
</details>
#### 🍎 macOS
|フォーマット |説明 |
|----------|---------------|
| ![macOS ARM64 APP](https://img.shields.io/badge/macOS-ARM64%20APP-000000?style=for-the-badge&logo=apple&logoColor=white) | Apple Silicon 用の ZIP アプリケーション |
| ![macOS ARM64 DMG](https://img.shields.io/badge/macOS-ARM64%20DMG-000000?style=for-the-badge&logo=apple&logoColor=white) | Apple Silicon 用のディスク イメージ インストーラー |
<details>
<summary>🛠️ インストール手順</summary>
- **DMG インストーラー (`.dmg`)**: ダブルクリックしてマウントし、`YTSage.app` をアプリケーション フォルダーにドラッグします。
- **アプリ アーカイブ (`.zip`)**: zip を解凍し、`YTSage.app` をアプリケーション フォルダーに移動します。
*注意:「アプリが破損しています」エラーが発生した場合は、以下の[macOS troubleshooting section](#troubleshooting)を参照してください。*
</details>
---
<details>
<summary>💻 ソースからの手動インストール</summary>
### 1. リポジトリのクローンを作成します
```bash
git clone https://github.com/oop7/YTSage.git
cd YTSage
```
### 2. 依存関係をインストールする
#### ⚡ UV あり
```bash
uv pip install .
```
#### 📦 または標準の pip を使用
```bash
pip install .
```
### 3. アプリケーションを実行する
```bash
python -m ytsage.main
```
</details>
<a id="screenshots"></a>
## 📸 スクリーンショット
<div align="center">
<table>
<tr>
<td><img src="../branding/screenshots/Download-Settings.png" alt="Download Settings" width="400"/></td>
<td><img src="../branding/screenshots/playlist.png" alt="Playlist Download" width="400"/></td>
</tr>
<tr>
<td align="center"><em>ダウンロード設定</em></td>
<td align="center"><em>プレイリストダウンロード</em></td>
</tr>
<tr>
<td><img src="../branding/screenshots/audio_format.png" alt="Audio Format Selection with Save Thumbnail" width="400"/></td>
<td><img src="../branding/screenshots/Custom-Option.png" alt="Custom Options" width="400"/></td>
</tr>
<tr>
<td align="center"><em>オーディオフォーマット</em></td>
<td align="center"><em>カスタム オプション</em></td>
</tr>
</table>
</div><a id="usage"></a>
## 📖 使用法
<details>
<summary>🎯 基本的な使い方</summary>
1. **YTSage を起動**
2. **YouTube URL を貼り付け** (または [URL を貼り付け] ボタンを使用)
3. **「分析」をクリックします**
4. **形式を選択します:**
- `Video` ビデオダウンロード用
- `Audio Only` 音声抽出用
5. **オプションを選択します:**
- 字幕を有効にし、言語を選択します
- 字幕のマージを有効にする
- サムネイルの保存
- スポンサーセグメントの削除
- 説明の保存
- 章を埋め込む
6. **出力ディレクトリを選択**
7. **「ダウンロード」をクリックします**
> 💡 デフォルトのダウンロード ディレクトリは、ユーザーの「ダウンロード」フォルダーです。
</details>
<details>
<summary>📋 プレイリストのダウンロード</summary>
1. **プレイリストの URL を貼り付け**
2. **「分析」をクリックします**
3. **プレイリスト セレクターからビデオを選択します (オプション、デフォルトはすべて)**
4. **希望の形式/品質を選択します**
5. **「ダウンロード」をクリック**
> 💡 アプリケーションはダウンロードキューを自動的に処理します
</details>
<details>
<summary>🌍 YouTube 以外のサイトの汎用モード</summary>
Dailymotion、CBC Gem、TikTok など、yt-dlp でサポートされているサイトからの URL を YTSage が受け入れるようにする場合は、ジェネリック モードを使用します。
使用方法:
1. `Download Settings` を開きます。
2. `Generic Mode` を有効にします。
3. サポートされている YouTube 以外のビデオまたはプレイリストの URL を貼り付けます。
4. 「`Analyze`」をクリックします。
5. 形式を選択し、通常どおりダウンロードします。
注:
- 汎用モードでは、YTSage 内の URL 検証のみが変更されます。ターゲット サイトは、インストールされている yt-dlp バージョンでサポートされている必要があります。
- 一部のサイトでは、エクストラクターに応じて、Cookie、ログイン セッション、プロキシ、または追加の yt-dlp 引数が必要です。
- サイトに障害が発生した場合は、問題を報告する前に、まず組み込みのアップデーター タブから yt-dlp を更新してください。
</details>
<details>
<summary>🧰 メディアとダウンロードのオプション</summary>
- **字幕オプション:** 言語をフィルターし、ビデオ ファイルに字幕を埋め込みます。
- **字幕の結合:** ハードコードされた字幕のビデオ ファイルに字幕を結合します。
- **説明の保存:** ビデオの説明をテキスト ファイルとして保存します。
- **サムネイルの保存:** ビデオのサムネイルを画像ファイルとして保存します。
- **チャプターの埋め込み:** 互換性のあるビデオ プレーヤーのメタデータとしてチャプター マーカーを埋め込みます。
- **スポンサー セグメントの削除:** SponsorBlock を使用してビデオからスポンサー セグメントを削除します。
- **ビデオのトリミング:** `HH:MM:SS` 形式で時間範囲を指定して、ビデオの特定の部分のみをダウンロードします
</details>
<details>
<summary>⚙️ 出力とファイルの設定</summary>
- **速度リミッター:** ダウンロード速度を制限します (例: `500K` 500 KB/秒)
- **ダウンロード パスの保存:** 今後のダウンロードのためにデフォルトのダウンロード パスを保存します。 **[ダウンロード設定] → [ダウンロード パス]** で利用できます。
- **出力ファイル名の形式:** `%(title)s`、`%(uploader)s`、`%(resolution)s` などの変数を使用して、出力ファイル名の形式をカスタマイズします。 **ダウンロード設定 → ファイル名形式**で利用できます。- **出力形式を強制:** ビデオを`mp4`、`webm`、`mkv`などの特定のコンテナ形式に強制的にダウンロードします。 **ダウンロード設定 → 出力形式設定**で利用できます。
- **オーディオ形式変換:** オーディオのみのダウンロードを、`AAC`、`MP3`、`FLAC`、`WAV`、`Opus`、`M4A`、などの優先形式に変換します。 `Vorbis`、または `Best`。 **ダウンロード設定 → オーディオ形式設定**で利用できます。
</details>
<details>
<summary>🌐 アクセスとネットワーク</summary>
- **Cookie を使用してログイン:** Cookie を使用して YouTube にログインし、プライベート コンテンツにアクセスします。
使用方法:
1. **推奨:** アプリに組み込まれている `Extract cookies from browser` オプションを使用し、ブラウザーとオプションでプロファイルを選択します。
2. または、Cookie を手動で抽出します。
a. [cookie-editor](https://github.com/moustachauve/cookie-editor?tab=readme-ov-file) のような拡張子を使用してブラウザから Cookie をエクスポートします。
b. Netscape 形式で Cookie をコピーします。
c. `cookies.txt` という名前のファイルを作成し、そこに Cookie を貼り付けます。
d.アプリで `cookies.txt` ファイルを選択します
- **プロキシ サポート:** ダウンロードにはプロキシ サーバーを使用します (例: `http://<proxy-server>:<port>`)
- **汎用モード:** YTSage が yt-dlp でサポートされている YouTube 以外のサイトから分析してダウンロードできるようにします。 **[ダウンロード設定] → [汎用モード]** から有効にします。
</details>
<details>
<summary>🛠️ ツールとメンテナンス</summary>
- **カスタム コマンド:** コマンドライン引数を介して高度な yt-dlp 機能にアクセスします
- **「アップデータ」タブ:** カスタム オプションの 1 か所から組み込みの更新ツールを管理します。
- **yt-dlp アップデート:** アップデートを確認し、安定リリース チャネルと夜間リリース チャネルを切り替えます。
- **FFmpeg バージョン チェッカー:** FFmpeg バージョンを確認し、インストール ガイドを開きます
- **Deno の更新:** Deno ランタイムを確認して更新します
- **FFmpeg/yt-dlp/Deno 検出:** [バージョン情報] ダイアログから FFmpeg、yt-dlp、および Deno のパスとバージョンを自動的に検出します。
- **ダウンロード履歴:** **履歴** ボタンから過去のダウンロードをサムネイルとステータスとともに表示します。
</details>
<details>
<summary>🌍 ローカリゼーション</summary>
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) セクションをご覧ください。
</details>
<a id="troubleshooting"></a>
## 🛠️ トラブルシューティング
<details>
<summary>クリックすると一般的な問題と解決策が表示されます</summary>
- **フォーマット テーブルが表示されない:** yt-dlp を最新バージョンに更新し、毎晩 yt-dlp に切り替えます。
- **ダウンロードが失敗する:** インターネット接続をチェックし、ビデオが利用可能であることを確認してください。
- **特定のダウンロード エラー:**
- **プライベート ビデオ:** Cookie 認証を使用してプライベート コンテンツにアクセスします。
- **年齢制限のあるコンテンツ:** 年齢制限のある動画を閲覧するには、YouTube アカウントにログインしてください。
- **地理的にブロックされたビデオ:** 地域制限を回避するには、VPN の使用を検討してください。
- **削除/削除されたビデオ:** このビデオは YouTube で利用できなくなりました。
- **ライブ ストリーム:** ライブ ストリームはダウンロードできません。ストリームが終了するまで待ちます。
- **ネットワーク エラー:** インターネット接続を確認して、もう一度試してください。
- **無効な URL:** URL が正しく、サポートされているプラ​​ットフォームからのものであることを確認してください。
- **プレミアム コンテンツ:** YouTube プレミアム メンバーシップが必要です。
- **著作権ブロック:** コンテンツは著作権制限によりブロックされています。
- **ダウンロード後にビデオ ファイルとオーディオ ファイルを分離します:** これは、FFmpeg が見つからない、または検出されない場合に発生します。 YTSage では、高品質のビデオ ストリームとオーディオ ストリームをマージするために FFmpeg が必要です。
- **解決策:** FFmpeg がシステムの PATH にインストールされ、アクセスできることを確認してください。 Windows ユーザーの場合、最も簡単なオプションは、FFmpeg にバンドルされている `YTSage-v<version>-ffmpeg.exe` ファイルをダウンロードすることです。
---
#### 🛡️ Windows Defender / ウイルス対策の警告
一部のウイルス対策ソフトウェアでは、`.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`
</details>
<a id="sponsor"></a>
## 💖 スポンサー
YTSage によって時間を節約できる場合は、プロジェクトのスポンサーになることを検討してください。スポンサーシップは、開発時間、プラットフォーム全体のテスト、将来の改善をカバーするのに役立ちます。
- GitHub スポンサー: https://github.com/sponsors/oop7
- スポンサー リンクは、アプリ内の [バージョン情報] ダイアログから直接利用することもできます。
[![Sponsor YTSage](https://img.shields.io/badge/Sponsor-YTSage-EA4AAA?style=for-the-badge&logo=github&logoColor=white)](https://github.com/sponsors/oop7)
<a id="contributing"></a>
## 👥 貢献しています
寄付を歓迎します!お手伝いできる方法は次のとおりです。
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/<code>.json` を編集してアプリ文字列を同期させます
- 言語が見つからない場合は、`README.md` から開始して `README.<code>.md` を作成します
<details>
<summary>📂 プロジェクト構造</summary>
## 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
```
</details>
## ⭐️スターの歴史
<div align="center">
## スターの歴史
<a href="https://www.star-history.com/#oop7/YTSage&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date" />
</picture>
</a>
</div>
## 📜ライセンス
このプロジェクトは MIT ライセンスに基づいてライセンスされています。詳細については、[LICENSE](../LICENSE) ファイルを参照してください。
## 🙏 謝辞
<details>
<summary>謝辞を表示</summary>
<div align="center">
<p>改善の提案やバグの報告のために問題を開いてこのプロジェクトに貢献してくださった皆様に心から感謝します。</p>
<table>
<tr class="section"><th colspan="2">コアコンポーネント</th></tr>
<tr>
<td width="35%"><a href="https://github.com/yt-dlp/yt-dlp">yt-dlp</a></td>
<td>ダウンロード エンジン</td>
</tr>
<tr>
<td><a href="https://ffmpeg.org/">FFmpeg</a></td>
<td>メディア処理</td>
</tr>
<tr>
<td><a href="https://deno.com/">デノ</a></td>
<td>yt-dlp との統合用ランタイム</td>
</tr>
<tr class="section"><th colspan="2">ライブラリとフレームワーク</th></tr>
<tr>
<td><a href="https://wiki.qt.io/Qt_for_Python">PySide6</a></td>
<td>GUI フレームワーク</td>
</tr>
<tr>
<td><a href="https://python-pillow.org/">枕</a></td>
<td>画像処理</td>
</tr>
<tr><td><a href="https://requests.readthedocs.io/">リクエスト</a></td>
<td>HTTP リクエスト</td>
</tr>
<tr>
<td><a href="https://packaging.python.org/">梱包</a></td>
<td>バージョンとパッケージの取り扱い</td>
</tr>
<tr>
<td><a href="https://python-markdown.github.io/">値下げ</a></td>
<td>マークダウン レンダリング</td>
</tr>
<tr>
<td><a href="https://github.com/Delgan/loguru">ろぐる</a></td>
<td>ロギング</td>
</tr>
<tr class="section"><th colspan="2">アセットと寄稿者</th></tr>
<tr>
<td><a href="https://pixabay.com/sound-effects/new-notification-09-352705/">ユニバーズフィールドによる新しい通知 09</a></td>
<td>通知音</td>
</tr>
<tr>
<td><a href="https://github.com/viru185">ウイルス185</a></td>
<td>コード寄稿者</td>
</tr>
</table>
</div>
</details>
## ⚠️免責事項
このツールは個人使用のみを目的としています。 YouTube の利用規約とコンテンツ作成者の権利を尊重してください。
---
<div align="center">
[oop7](https://github.com/oop7) によって ❤️ で作られました
</div>
+617
View File
@@ -0,0 +1,617 @@
<div align="center">
<img src="../branding/svg/ytsage-wordmark.svg" width="400" alt="ytsage-wordmark">
<img src="../branding/screenshots/main.png" width="800" alt="YTSage Interface"/>
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-1f2937?style=for-the-badge&logo=python&logoColor=white)](https://www.python.org/downloads/)
[![PyPI Downloads](https://img.shields.io/pepy/dt/ytsage?color=1f2937&style=for-the-badge&label=downloads&logo=python&logoColor=white)](https://pepy.tech/project/ytsage)
[![GitHub Downloads](https://img.shields.io/github/downloads/oop7/YTSage/total?color=1f2937&style=for-the-badge&label=downloads&logo=github&logoColor=white)](https://github.com/oop7/YTSage/releases)
[![License: MIT](https://img.shields.io/badge/License-MIT-1f2937?style=for-the-badge&logo=opensource&logoColor=white)](https://opensource.org/licenses/MIT)
[![Supported Platforms](https://img.shields.io/badge/platform-cross--platform-1f2937?style=for-the-badge&logo=github&logoColor=white)](https://github.com/oop7/YTSage/releases)
[![GitHub Stars](https://img.shields.io/github/stars/oop7/YTSage?color=c90000&style=for-the-badge&logo=github&logoColor=white)](https://github.com/oop7/YTSage/stargazers)
[![PyPI version](https://img.shields.io/pypi/v/ytsage?color=c90000&style=for-the-badge&logo=pypi&logoColor=white)](https://pypi.org/project/ytsage/)
[![GitHub Sponsors](https://img.shields.io/github/sponsors/oop7?color=c90000&style=for-the-badge&logo=githubsponsors&logoColor=white)](https://github.com/sponsors/oop7)
**Nowoczesny downloader YouTube z przejrzystym interfejsem PySide6.**
Pobieraj filmy w dowolnej jakości, wyodrębniaj dźwięk, pobieraj napisy i nie tylko.
### 🌍 PRZECZYTAJ Języki
Angielski: [EN](../README.md)
| Numer telefonu: [AR](README.ar.md)
| Niemiecki: [DE](README.de.md)
| Hiszpański: [ES](README.es.md)
| Français: [FR](README.fr.md)
| हिन्दी: [HI](README.hi.md)
| Bahasa Indonezja: [ID](README.id.md)
| włoski: [IT](README.it.md)
| 日本語: [JA](README.ja.md)
| Polski: [PL](README.pl.md)
| Portugalski: [PT](README.pt.md)
| Rosyjski: [RU](README.ru.md)
| Turecki: [TR](README.tr.md)
| Nazwa: [ZH](README.zh.md)
<p align="center">
<a href="#installation">Instalacja</a> •
<a href="#features">Funkcje</a> •
<a href="#usage">Użycie</a> •
<a href="#screenshots">Zrzuty ekranu</a> •
<a href="#troubleshooting">Rozwiązywanie problemów</a> •
<a href="#sponsor">Sponsor</a> •
<a href="#contributing">Wspieranie</a>
</p>
</div>
---
<a id="why-ytsage"></a>
## ❓ Dlaczego YTSage?
YTSage jest przeznaczony dla użytkowników, którzy chcą **prostego, ale potężnego narzędzia do pobierania YouTube**. W odróżnieniu od innych narzędzi oferuje:
- Czysty, nowoczesny interfejs PySide6
- Pobieranie wideo, audio i napisów jednym kliknięciem
- Zaawansowane funkcje, takie jak SponsorBlock, łączenie napisów i wybór listy odtwarzania
- Opcjonalny tryb ogólny dla witryn obsługujących yt-dlp poza YouTube
- Obsługa wielu platform i łatwa instalacja
<a id="features"></a>
## ✨ Funkcje
<div align="center">
| Podstawowe funkcje | Zaawansowane funkcje | Dodatkowe funkcje |
|----------------------------------|------------------------------------------------------|-----------------------------------|
| 🎥 Formatuj tabelę | 🚫 Integracja z blokiem sponsorskim | 🎞️ Wyświetlacz FPS/HDR |
| 🎵 Ekstrakcja dźwięku | 📝 Wybierz i połącz wiele napisów | 🔄 Automatyczna aktualizacja yt-dlp |
| ✨ Prosty interfejs użytkownika | 💾 Zapisz opis i miniaturę | 🛠️ Wykrywanie FFmpeg/yt-dlp/Deno |
| 📋 Obsługa i wybór list odtwarzania | 🚀 Ogranicznik prędkości | ⚙️ Polecenia niestandardowe |
| 📑 Umieść rozdziały | ✂️ Przytnij sekcje wideo | 🍪 Zaloguj się za pomocą plików cookie |
| 📜 Pobierz historię | 🔄 Zwolnij wybór kanału | 🌐 Wsparcie proxy |
| 🎚️ Konwersja formatu audio | 🎬 Ustawienia formatu wideo | 🆙 Wbudowana zakładka Aktualizator |
| 🌍 Tryb ogólny |
| 🌍 Lokalizacja w 14 językach | |
</div>
<a id="installation"></a>
## 🚀 Instalacja
### ⚡ Szybka instalacja (zalecane)
Zainstaluj YTSage z PyPI:
```bash
pip install ytsage
```
<details>
<summary>🔄 Zaktualizuj istniejącą instalację</summary>
```bash
pip install --upgrade ytsage
```
</details>
Następnie uruchom aplikację:
```bash
ytsage
```
### 📦 Gotowe pliki wykonywalne
> [👉 Download Latest Release](https://github.com/oop7/YTSage/releases/latest)
#### 🪟 Okna
| Formatuj | Opis |
|------------|------------|
| ![Windows EXE](https://img.shields.io/badge/Windows-EXE-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Standardowy instalator |
| ![Windows FFmpeg](https://img.shields.io/badge/Windows-FFmpeg-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Z pakietem FFmpeg |
| ![Windows Portable](https://img.shields.io/badge/Windows-Portable-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Wersja przenośna, nie wymaga instalacji |
| ![Windows Portable FFmpeg](https://img.shields.io/badge/Windows-Portable%20FFmpeg-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Przenośny z FFmpeg, spakowany |
<details>
<summary>🛠️ Kroki instalacji</summary>
1. **Instalator EXE (`.exe`)**: Kliknij dwukrotnie plik i postępuj zgodnie z instrukcjami kreatora instalacji.
2. **Wersja przenośna (`.zip`)**: Wypakuj archiwum do wybranej lokalizacji i uruchom `ytsage.exe`.
3. **FFmpeg w pakiecie**: Wybierz wersję w pakiecie FFmpeg, jeśli nie masz zainstalowanego FFmpeg w swoim systemie.
</details>
#### 🐧 Linux
| Formatuj | Opis |
|------------|------------|
| ![Linux DEB](https://img.shields.io/badge/Linux-DEB-FCC624?style=for-the-badge&logo=linux&logoColor=black) | Pakiet Debiana |
| ![Linux AppImage](https://img.shields.io/badge/Linux-AppImage-FCC624?style=for-the-badge&logo=linux&logoColor=black) | Obraz aplikacji, przenośny |
| ![Linux RPM](https://img.shields.io/badge/Linux-RPM-FCC624?style=for-the-badge&logo=linux&logoColor=black) | Pakiet RPM |
| ![Flathub](https://img.shields.io/badge/Linux-Flatpak-FCC624?style=for-the-badge&logo=flathub&logoColor=black) | Pakiet Flatpak |
<details>
<summary>🛠️ Kroki instalacji</summary>
- **DEB (`.deb`)**:
```bash
sudo dpkg -i ytsage_*.deb
sudo apt-get install -f # Fix missing dependencies if any
```
- **RPM (`.rpm`)**:
```bash
sudo rpm -i ytsage-*.rpm
```
- **Obraz aplikacji (`.AppImage`)**:
```bash
chmod +x YTSage-*.AppImage
./YTSage-*.AppImage
```
- **Flatpak**: Postępuj zgodnie z instrukcjami na Flathubie lub uruchom:
```bash
flatpak install flathub io.github.oop7.ytsage
```
</details>
#### 🍎 macOS
| Formatuj | Opis |
|------------|------------|
| ![macOS ARM64 APP](https://img.shields.io/badge/macOS-ARM64%20APP-000000?style=for-the-badge&logo=apple&logoColor=white) | Spakowana aplikacja dla Apple Silicon |
| ![macOS ARM64 DMG](https://img.shields.io/badge/macOS-ARM64%20DMG-000000?style=for-the-badge&logo=apple&logoColor=white) | Instalator obrazu dysku dla Apple Silicon |
<details>
<summary>🛠️ Kroki instalacji</summary>
- **Instalator DMG (`.dmg`)**: Kliknij dwukrotnie, aby zamontować, a następnie przeciągnij `YTSage.app` do folderu Aplikacje.
- **Archiwum aplikacji (`.zip`)**: Wypakuj plik ZIP i przenieś `YTSage.app` do folderu Aplikacje.
*Uwaga: jeśli napotkasz błąd „Aplikacja jest uszkodzona”, zobacz [macOS troubleshooting section](#troubleshooting) poniżej.*
</details>
---
<details>
<summary>💻 Instalacja ręczna ze źródła</summary>
### 1. Sklonuj repozytorium
```bash
git clone https://github.com/oop7/YTSage.git
cd YTSage
```
### 2. Zainstaluj zależności
#### ⚡ Z uv
```bash
uv pip install .
```
#### 📦 Lub ze standardową końcówką
```bash
pip install .
```
### 3. Uruchom aplikację
```bash
python -m ytsage.main
```
</details>
<a id="screenshots"></a>
## 📸 Zrzuty ekranu
<div align="center">
<table>
<tr>
<td><img src="../branding/screenshots/Download-Settings.png" alt="Download Settings" width="400"/></td>
<td><img src="../branding/screenshots/playlist.png" alt="Playlist Download" width="400"/></td>
</tr>
<tr>
<td align="center"><em>Pobierz ustawienia</em></td>
<td align="center"><em>Pobieranie listy odtwarzania</em></td>
</tr>
<tr>
<td><img src="../branding/screenshots/audio_format.png" alt="Audio Format Selection with Save Thumbnail" width="400"/></td>
<td><img src="../branding/screenshots/Custom-Option.png" alt="Custom Options" width="400"/></td>
</tr>
<tr>
<td align="center"><em>Format audio</em></td>
<td align="center"><em>Opcje niestandardowe</em></td>
</tr>
</table>
</div><a id="usage"></a>
## 📖 Użycie
<details>
<summary>🎯 Podstawowe użycie</summary>
1. **Uruchom YTSage**
2. **Wklej adres URL YouTube** (lub użyj przycisku „Wklej adres URL”)
3. **Kliknij „Analizuj”**
4. **Wybierz format:**
- `Video` do pobierania plików wideo
- `Audio Only` do ekstrakcji dźwięku
5. **Wybierz opcje:**
- Włącz napisy i wybierz język
- Włącz scalanie napisów
- Zapisz miniaturę
- Usuń segmenty sponsorów
- Zapisz opis
- Osadzaj rozdziały
6. **Wybierz katalog wyjściowy**
7. **Kliknij „Pobierz”**
> 💡 Domyślnym katalogiem pobierania jest folder „Pobrane” użytkownika.
</details>
<details>
<summary>📋 Pobieranie listy odtwarzania</summary>
1. **Wklej adres URL listy odtwarzania**
2. **Kliknij „Analizuj”**
3. **Wybierz filmy z selektora playlist (opcjonalnie, domyślnie wszystkie)**
4. **Wybierz żądany format/jakość**
5. **Kliknij „Pobierz”**
> 💡 Aplikacja automatycznie obsługuje kolejkę pobierania
</details>
<details>
<summary>🌍 Tryb ogólny dla witryn innych niż YouTube</summary>
Użyj trybu ogólnego, jeśli chcesz, aby YTSage akceptował adresy URL z witryn obsługiwanych przez yt-dlp, takich jak Dailymotion, CBC Gem, TikTok i inne.
Jak z niego korzystać:
1. Otwórz `Download Settings`.
2. Włącz `Generic Mode`.
3. Wklej obsługiwany adres URL filmu lub listy odtwarzania spoza YouTube.
4. Kliknij `Analyze`.
5. Wybierz format i pobierz jak zwykle.
Uwagi:
- Tryb ogólny zmienia tylko weryfikację adresu URL w YTSage. Witryna docelowa musi nadal być obsługiwana przez zainstalowaną wersję yt-dlp.
- Niektóre witryny wymagają plików cookie, sesji logowania, serwera proxy lub dodatkowych argumentów yt-dlp, w zależności od ekstraktora.
- Jeśli witryna ulegnie awarii, przed zgłoszeniem problemu zaktualizuj najpierw yt-dlp z wbudowanej karty aktualizatora.
</details>
<details>
<summary>🧰 Opcje multimediów i pobierania</summary>
- **Opcje napisów:** Filtruj języki i osadzaj napisy w pliku wideo
- **Scalanie napisów:** Łączenie napisów z plikiem wideo w celu uzyskania napisów zakodowanych na stałe
- **Zapisz opis:** Zapisz opis filmu jako plik tekstowy
- **Zapisz miniaturę:** zapisz miniaturę wideo jako plik obrazu
- **Osadzanie rozdziałów:** Osadzanie znaczników rozdziałów jako metadanych dla zgodnych odtwarzaczy wideo
- **Usuń segmenty sponsora:** Usuń segmenty sponsora z filmu za pomocą funkcji SponsorBlock
- **Przytnij wideo:** Pobierz tylko określone fragmenty filmu, określając zakresy czasu w formacie `HH:MM:SS`
</details>
<details>
<summary>⚙️ Ustawienia wyjściowe i plikowe</summary>
- **Ogranicznik prędkości:** Ogranicz prędkość pobierania, na przykład `500K` dla 500 KB/s
- **Zapisz ścieżkę pobierania:** zapisz domyślną ścieżkę pobierania dla przyszłych pobrań. Dostępne w **Ustawienia pobierania → Ścieżka pobierania**.
- **Format nazwy pliku wyjściowego:** Dostosuj format nazwy pliku wyjściowego za pomocą zmiennych takich jak `%(title)s`, `%(uploader)s` i `%(resolution)s`. Dostępne w **Ustawienia pobierania → Format nazwy pliku**.
- **Wymuś format wyjściowy:** Wymuś pobieranie plików wideo w określonym formacie kontenera, takim jak `mp4`, `webm` lub `mkv`. Dostępne w **Ustawienia pobierania → Ustawienia formatu wyjściowego**.
- **Konwersja formatu audio:** Konwertuj pliki do pobrania zawierające wyłącznie dźwięk do preferowanych formatów, takich jak `AAC`, `MP3`, `FLAC`, `WAV`, `Opus`, `M4A`, `Vorbis` lub `Best`. Dostępne w **Ustawienia pobierania → Ustawienia formatu audio**.
</details>
<details>
<summary>🌐 Dostęp i sieć</summary>
- **Zaloguj się za pomocą plików cookie:** zaloguj się do YouTube za pomocą plików cookie, aby uzyskać dostęp do prywatnych treści.
Jak z niego korzystać:
1. **Zalecane:** Skorzystaj z wbudowanej opcji `Extract cookies from browser` w aplikacji, a następnie wybierz przeglądarkę i opcjonalnie profil.
2. Alternatywnie wyodrębnij pliki cookie ręcznie:
a. Eksportuj pliki cookie ze swojej przeglądarki za pomocą rozszerzenia takiego jak [cookie-editor](https://github.com/moustachauve/cookie-editor?tab=readme-ov-file)
b. Skopiuj pliki cookie w formacie Netscape
c. Utwórz plik o nazwie `cookies.txt` i wklej do niego pliki cookie
d. Wybierz plik `cookies.txt` w aplikacji
- **Obsługa proxy:** Do pobierania używaj serwera proxy, na przykład `http://<proxy-server>:<port>`
- **Tryb ogólny:** Zezwól YTSage na analizowanie i pobieranie z witryn innych niż YouTube obsługiwanych przez yt-dlp. Włącz tę opcję w **Ustawienia pobierania → Tryb ogólny**.
</details>
<details>
<summary>🛠️ Narzędzia i konserwacja</summary>
- **Niestandardowe polecenia:** Dostęp do zaawansowanych funkcji yt-dlp poprzez argumenty wiersza poleceń
- **Karta Aktualizator:** Zarządzaj wbudowanymi narzędziami aktualizacji z jednego miejsca w Opcjach niestandardowych:
- **Aktualizacje yt-dlp:** sprawdź dostępność aktualizacji i przełączaj się między kanałami wersji stabilnej i nocnej
- **Kontrola wersji FFmpeg:** Sprawdź wersję FFmpeg i otwórz przewodniki instalacji
- **Aktualizacje Deno:** Sprawdź i zaktualizuj środowisko wykonawcze Deno
- **Wykrywanie FFmpeg/yt-dlp/Deno:** Automatycznie wykrywa ścieżki i wersje FFmpeg, yt-dlp i Deno w oknie dialogowym Informacje.
- **Historia pobierania:** Przeglądaj wcześniejsze pobrania z miniaturami i statusami za pomocą przycisku **Historia**.
</details>
<details>
<summary>🌍 Lokalizacja</summary>
YTSage obsługuje **14 języków**, zapewniając dostępność na całym świecie. Wybierz preferowany język z **Opcje niestandardowe → Język**.
### Obsługiwane języki
| Język | Kod | Język | Kod |
|---------|------|----------|------|
| 🇺🇸 Angielski | `en` | 🇪🇸 Hiszpański | `es` |
| 🇸🇦 arabski | `ar` | 🇫🇷 Francuski | `fr` |
| 🇩🇪 niemiecki | `de` | 🇮🇳 hindi | `hi` |
| 🇮🇩 Indonezyjski | `id` | 🇮🇹 włoski | `it` |
| 🇯🇵 Japoński | `ja` | 🇵🇱polski | `pl` |
| 🇧🇷 portugalski | `pt` | 🇷🇺 Rosyjski | `ru` |
| 🇹🇷 Turecki | `tr` | 🇨🇳 chiński | `zh` |
### Tłumaczenia README
| Język | Plik | Język | Plik |
|---------|------|----------|------|
| 🇺🇸 Angielski | [README.md](../README.md) | 🇪🇸 Hiszpański | [README.es.md](README.es.md)
| 🇸🇦 arabski | [README.ar.md](README.ar.md) | 🇫🇷 Francuski | [README.fr.md](README.fr.md) |
| 🇩🇪 niemiecki | [README.de.md](README.de.md) | 🇮🇳 hindi | [README.hi.md](README.hi.md) |
| 🇮🇩 Indonezyjski | [README.id.md](README.id.md) | 🇮🇹 włoski | [README.it.md](README.it.md) |
| 🇯🇵 Japoński | [README.ja.md](README.ja.md) | 🇵🇱polski | [README.pl.md](README.pl.md) |
| 🇧🇷 portugalski | [README.pt.md](README.pt.md) | 🇷🇺 Rosyjski | [README.ru.md](README.ru.md) |
| 🇹🇷 Turecki | [README.tr.md](README.tr.md) | 🇨🇳 chiński | [README.zh.md](README.zh.md) |
> 💡 **Chcesz dodać tłumaczenie?** Sprawdź sekcję [Contributing](#contributing), aby pomóc nam dodać więcej języków!
</details>
<a id="troubleshooting"></a>
## 🛠️ Rozwiązywanie problemów
<details>
<summary>Kliknij, aby wyświetlić typowe problemy i rozwiązania</summary>
- **Tabela formatów nie wyświetla się:** Aktualizuj yt-dlp do najnowszej wersji i co wieczór przełączaj się na yt-dlp.
- **Pobieranie nie powiodło się:** Sprawdź swoje połączenie internetowe i upewnij się, że plik wideo jest dostępny.
- **Specyficzne błędy pobierania:**
- **Prywatne filmy:** Użyj uwierzytelniania plików cookie, aby uzyskać dostęp do prywatnych treści.
- **Treści z ograniczeniami wiekowymi:** Zaloguj się do konta YouTube, aby oglądać filmy z ograniczeniami wiekowymi.
- **Filmy z blokadą geograficzną:** rozważ użycie VPN w celu ominięcia ograniczeń regionalnych.
- **Usunięte/usunięte filmy:** Film nie jest już dostępny w serwisie YouTube.
- **Transmisje na żywo:** Transmisji na żywo nie można pobrać; poczekaj, aż strumień się zakończy.
- **Błędy sieciowe:** Sprawdź swoje połączenie internetowe i spróbuj ponownie.
- **Nieprawidłowe adresy URL:** Upewnij się, że adres URL jest poprawny i pochodzi z obsługiwanej platformy.
**Treści premium:** wymaga członkostwa YouTube Premium.
- **Bloki dotyczące praw autorskich:** Treść jest blokowana ze względu na ograniczenia praw autorskich.
- **Oddziel pliki wideo i audio po pobraniu:** Dzieje się tak, gdy brakuje FFmpeg lub nie został on wykryty. YTSage wymaga FFmpeg do łączenia wysokiej jakości strumieni wideo i audio.
- **Rozwiązanie:** Upewnij się, że FFmpeg jest zainstalowany i dostępny w PATH twojego systemu. Dla użytkowników systemu Windows najłatwiejszą opcją jest pobranie pliku `YTSage-v<version>-ffmpeg.exe`, który jest dostarczany w pakiecie z FFmpeg.
---
#### 🛡️ Ostrzeżenie o programie Windows Defender/antywirusie
Niektóre programy antywirusowe mogą oznaczać pliki `.exe` jako fałszywe alarmy. Jest to **znane ograniczenie** aplikacji w pakietach.
**Dlaczego tak się dzieje:**
- Heurystyka antywirusowa może błędnie zidentyfikować spakowane pliki wykonywalne jako podejrzane
**Bezpieczne alternatywy:**
- ✅ **Użyj instalacji pip:** `pip install ytsage` (zalecane)
- ✅ **Kompiluj ze źródła**: postępując zgodnie z tym [guide](../.github/CI_CD_README.md)
- ✅ **Dodaj aplikację do białej listy** w swoim oprogramowaniu antywirusowym
#### 🍎 macOS: „Aplikacja jest uszkodzona i nie można jej otworzyć”
Jeśli widzisz ten błąd w systemie macOS Sonoma lub nowszym, musisz usunąć atrybut kwarantanny.
1. **Otwórz Terminal** (możesz go znaleźć za pomocą Spotlight).
2. **Wpisz następujące polecenie**, ale **nie** jeszcze naciskaj Enter. Pamiętaj o dodaniu spacji na końcu:
```bash
xattr -d com.apple.quarantine
```
3. **Przeciągnij plik `YTSage.app`** z okna Findera i upuść go bezpośrednio w oknie Terminala. Spowoduje to automatyczne wklejenie prawidłowej ścieżki pliku.
4. **Naciśnij Enter**, aby uruchomić polecenie.
5. **Spróbuj ponownie otworzyć YTSage.app.** Powinna teraz uruchomić się poprawnie.
---
#### **Lokacje konfiguracji (zaawansowane)**
- **Windows:** `%LOCALAPPDATA%\YTSage`
- **macOS:** `~/Library/Application Support/YTSage`
- **Linux:** `~/.local/share/YTSage`
</details>
<a id="sponsor"></a>
## 💖 Sponsor
Jeśli YTSage pozwoli Ci zaoszczędzić czas, rozważ sponsorowanie projektu. Sponsoring pomaga pokryć czas opracowywania, testowania na różnych platformach i przyszłych ulepszeń.
- Sponsorzy GitHuba: https://github.com/sponsors/oop7
- Link sponsora jest również dostępny bezpośrednio w aplikacji, w oknie dialogowym Informacje.
[![Sponsor YTSage](https://img.shields.io/badge/Sponsor-YTSage-EA4AAA?style=for-the-badge&logo=github&logoColor=white)](https://github.com/sponsors/oop7)
<a id="contributing"></a>
## 👥 Wkład
Zapraszamy do wpłat! Oto jak możesz pomóc:
1. 🍴Rozwidl repozytorium
2. 🌿 Utwórz gałąź funkcji:
```bash
git checkout -b feature/AmazingFeature
```
3. 💾 Zatwierdź zmiany:
```bash
git commit -m 'Add some AmazingFeature'
```
4. 📤 Pchnij do oddziału:
```bash
git push origin feature/AmazingFeature
```
5. 🔄 Otwórz żądanie ściągnięcia
### 🌍 Tłumaczenia wspierające
- Zaktualizuj pasujący zlokalizowany plik README (na przykład `README.es.md`)
- Synchronizuj ciągi aplikacji, edytując `ytsage/languages/<code>.json`
- Jeśli brakuje Twojego języka, zacznij od `README.md` i utwórz `README.<code>.md`
<details>
<summary>📂 Struktura projektu</summary>
## YTSage Struktura projektu
Ten dokument opisuje zorganizowaną strukturę folderów YTSage.
### 📁 Struktura projektu
```
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
```
</details>
## ⭐️ Historia gwiazd
<div align="center">
## Historia gwiazd
<a href="https://www.star-history.com/#oop7/YTSage&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date" />
</picture>
</a>
</div>
## 📜Licencja
Ten projekt jest objęty licencją MIT — szczegółowe informacje można znaleźć w pliku [LICENSE](../LICENSE).
## 🙏 Podziękowania
<details>
<summary>Pokaż podziękowania</summary>
<div align="center">
<p>Serdecznie dziękujemy wszystkim, którzy przyczynili się do tego projektu, otwierając problem, aby zasugerować ulepszenie lub zgłosić błąd.</p>
<table>
<tr class="section"><th colspan="2">Główne komponenty</th></tr>
<tr>
<td width="35%"><a href="https://github.com/yt-dlp/yt-dlp">yt-dlp</a></td>
<td>Pobierz silnik</td>
</tr>
<tr>
<td><a href="https://ffmpeg.org/">FFmpeg</a></td>
<td>Przetwarzanie multimediów</td>
</tr>
<tr>
<td><a href="https://deno.com/">Deno</a></td>
<td>Środowisko wykonawcze do integracji z yt-dlp</td>
</tr>
<tr class="section"><th colspan="2">Biblioteki i struktury</th></tr>
<tr>
<td><a href="https://wiki.qt.io/Qt_for_Python">PySide6</a></td>
<td>Struktura GUI</td>
</tr>
<tr>
<td><a href="https://python-pillow.org/">Poduszka</a></td>
<td>Przetwarzanie obrazu</td>
</tr>
<tr><td><a href="https://requests.readthedocs.io/">żądania</a></td>
<td>Żądania HTTP</td>
</tr>
<tr>
<td><a href="https://packaging.python.org/">opakowanie</a></td>
<td>Obsługa wersji i pakietów</td>
</tr>
<tr>
<td><a href="https://python-markdown.github.io/">przecena</a></td>
<td>Renderowanie Markdown</td>
</tr>
<tr>
<td><a href="https://github.com/Delgan/loguru">loguru</a></td>
<td>Logowanie</td>
</tr>
<tr class="section"><th colspan="2">Zasoby i współtwórcy</th></tr>
<tr>
<td><a href="https://pixabay.com/sound-effects/new-notification-09-352705/">Nowe powiadomienie 09 od Universfield</a></td>
<td>Dźwięk powiadomienia</td>
</tr>
<tr>
<td><a href="https://github.com/viru185">viru185</a></td>
<td>Współtwórca kodu</td>
</tr>
</table>
</div>
</details>
## ⚠️ Zastrzeżenie
To narzędzie jest przeznaczone wyłącznie do użytku osobistego. Prosimy o przestrzeganie warunków korzystania z usługi YouTube i praw twórców treści.
---
<div align="center">
Wykonane z ❤️ przez [oop7](https://github.com/oop7)
</div>
+617
View File
@@ -0,0 +1,617 @@
<div align="center">
<img src="../branding/svg/ytsage-wordmark.svg" width="400" alt="ytsage-wordmark">
<img src="../branding/screenshots/main.png" width="800" alt="YTSage Interface"/>
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-1f2937?style=for-the-badge&logo=python&logoColor=white)](https://www.python.org/downloads/)
[![PyPI Downloads](https://img.shields.io/pepy/dt/ytsage?color=1f2937&style=for-the-badge&label=downloads&logo=python&logoColor=white)](https://pepy.tech/project/ytsage)
[![GitHub Downloads](https://img.shields.io/github/downloads/oop7/YTSage/total?color=1f2937&style=for-the-badge&label=downloads&logo=github&logoColor=white)](https://github.com/oop7/YTSage/releases)
[![License: MIT](https://img.shields.io/badge/License-MIT-1f2937?style=for-the-badge&logo=opensource&logoColor=white)](https://opensource.org/licenses/MIT)
[![Supported Platforms](https://img.shields.io/badge/platform-cross--platform-1f2937?style=for-the-badge&logo=github&logoColor=white)](https://github.com/oop7/YTSage/releases)
[![GitHub Stars](https://img.shields.io/github/stars/oop7/YTSage?color=c90000&style=for-the-badge&logo=github&logoColor=white)](https://github.com/oop7/YTSage/stargazers)
[![PyPI version](https://img.shields.io/pypi/v/ytsage?color=c90000&style=for-the-badge&logo=pypi&logoColor=white)](https://pypi.org/project/ytsage/)
[![GitHub Sponsors](https://img.shields.io/github/sponsors/oop7?color=c90000&style=for-the-badge&logo=githubsponsors&logoColor=white)](https://github.com/sponsors/oop7)
**Um downloader moderno do YouTube com uma interface PySide6 limpa.**
Baixe vídeos em qualquer qualidade, extraia áudio, busque legendas e muito mais.
### 🌍 LEIA-ME Idiomas
Inglês: [EN](../README.md)
| Nome: [AR](README.ar.md)
| Alemão: [DE](README.de.md)
| Espanhol: [ES](README.es.md)
| Francês: [FR](README.fr.md)
| Nome: [HI](README.hi.md)
| Bahasa Indonésia: [ID](README.id.md)
| Italiano: [IT](README.it.md)
| Nome do usuário: [JA](README.ja.md)
| Polaco: [PL](README.pl.md)
| Português: [PT](README.pt.md)
| Russo: [RU](README.ru.md)
| Turco: [TR](README.tr.md)
| 中文: [ZH](README.zh.md)
<p align="center">
<a href="#installation">Instalação</a> •
<a href="#features">Recursos</a> •
<a href="#usage">Uso</a> •
<a href="#screenshots">Capturas de tela</a> •
<a href="#troubleshooting">Solução de problemas</a> •
<a href="#sponsor">Patrocinador</a> •
<a href="#contributing">Contribuindo</a>
</p>
</div>
---
<a id="why-ytsage"></a>
## ❓ Por que YTSage?
YTSage foi projetado para usuários que desejam um **baixador de YouTube simples, mas poderoso**. Ao contrário de outras ferramentas, oferece:
- Uma interface PySide6 limpa e moderna
- Downloads com um clique para vídeo, áudio e legendas
- Recursos avançados como SponsorBlock, mesclagem de legendas e seleção de playlist
- Modo genérico opcional para sites compatíveis com yt-dlp além do YouTube
- Suporte multiplataforma e fácil instalação
<a id="features"></a>
## ✨ Recursos
<div align="center">
| Recursos principais | Recursos Avançados | Recursos extras |
|-----------------------------------|---------------------------------------------------|-----------------------------------|
| 🎥 Tabela de Formatos | 🚫 Integração SponsorBlock | 🎞️ Tela FPS/HDR |
| 🎵 Extração de Áudio | 📝 Seleção e mesclagem de múltiplas legendas | 🔄 Atualização automática do yt-dlp |
| ✨ UI simples | 💾 Salvar descrição e miniatura | 🛠️ Detecção de FFmpeg/yt-dlp/Deno |
| 📋 Suporte e seletor de lista de reprodução | 🚀 Limitador de velocidade | ⚙️ Comandos personalizados |
| 📑 Incorporar capítulos | ✂️ Cortar seções de vídeo | 🍪 Login com Cookies |
| 📜 Histórico de downloads | 🔄 Seleção de canal de lançamento | 🌐 Suporte a proxy |
| 🎚️ Conversão de formato de áudio | 🎬 Configurações de formato de vídeo | 🆙 Guia Atualizador integrado |
| 🌍 Modo Genérico |
| 🌍 Localização em 14 idiomas | |
</div>
<a id="installation"></a>
## 🚀 Instalação
### ⚡ Instalação rápida (recomendado)
Instale YTSage do PyPI:
```bash
pip install ytsage
```
<details>
<summary>🔄 Atualizar uma instalação existente</summary>
```bash
pip install --upgrade ytsage
```
</details>
Em seguida, inicie o aplicativo:
```bash
ytsage
```
### 📦 Executáveis pré-construídos
> [👉 Download Latest Release](https://github.com/oop7/YTSage/releases/latest)
#### 🪟 Janelas
| Formato | Descrição |
|--------|------------|
| ![Windows EXE](https://img.shields.io/badge/Windows-EXE-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Instalador padrão |
| ![Windows FFmpeg](https://img.shields.io/badge/Windows-FFmpeg-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Com FFmpeg incluído |
| ![Windows Portable](https://img.shields.io/badge/Windows-Portable-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Versão portátil, sem necessidade de instalação |
| ![Windows Portable FFmpeg](https://img.shields.io/badge/Windows-Portable%20FFmpeg-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Portátil com FFmpeg, compactado |
<details>
<summary>🛠️ Etapas de instalação</summary>
1. **EXE Installer (`.exe`)**: Clique duas vezes no arquivo e siga o assistente de configuração.
2. **Versão portátil (`.zip`)**: Extraia o arquivo para o local desejado e execute `ytsage.exe`.
3. **FFmpeg Bundled**: Escolha as versões empacotadas do FFmpeg se você não tiver o FFmpeg instalado em seu sistema.
</details>
#### 🐧Linux
| Formato | Descrição |
|--------|------------|
| ![Linux DEB](https://img.shields.io/badge/Linux-DEB-FCC624?style=for-the-badge&logo=linux&logoColor=black) | Pacote Debian |
| ![Linux AppImage](https://img.shields.io/badge/Linux-AppImage-FCC624?style=for-the-badge&logo=linux&logoColor=black) | AppImage, portátil |
| ![Linux RPM](https://img.shields.io/badge/Linux-RPM-FCC624?style=for-the-badge&logo=linux&logoColor=black) | Pacote RPM |
| ![Flathub](https://img.shields.io/badge/Linux-Flatpak-FCC624?style=for-the-badge&logo=flathub&logoColor=black) | Pacote Flatpak |
<details>
<summary>🛠️ Etapas de instalação</summary>
- **DEB (`.deb`)**:
```bash
sudo dpkg -i ytsage_*.deb
sudo apt-get install -f # Fix missing dependencies if any
```
- **RPM (`.rpm`)**:
```bash
sudo rpm -i ytsage-*.rpm
```
- **AppImage (`.AppImage`)**:
```bash
chmod +x YTSage-*.AppImage
./YTSage-*.AppImage
```
- **Flatpak**: Siga as instruções no Flathub ou execute:
```bash
flatpak install flathub io.github.oop7.ytsage
```
</details>
#### 🍎 macOS
| Formato | Descrição |
|--------|------------|
| ![macOS ARM64 APP](https://img.shields.io/badge/macOS-ARM64%20APP-000000?style=for-the-badge&logo=apple&logoColor=white) | Aplicativo compactado para Apple Silicon |
| ![macOS ARM64 DMG](https://img.shields.io/badge/macOS-ARM64%20DMG-000000?style=for-the-badge&logo=apple&logoColor=white) | Instalador de imagem de disco para Apple Silicon |
<details>
<summary>🛠️ Etapas de instalação</summary>
- **Instalador DMG (`.dmg`)**: Clique duas vezes para montar e arraste `YTSage.app` para a pasta Aplicativos.
- **Arquivo de aplicativos (`.zip`)**: Extraia o zip e mova `YTSage.app` para a pasta Aplicativos.
*Observação: se você encontrar um erro "O aplicativo está danificado", consulte [macOS troubleshooting section](#troubleshooting) abaixo.*
</details>
---
<details>
<summary>💻 Instalação manual da fonte</summary>
### 1. Clone o repositório
```bash
git clone https://github.com/oop7/YTSage.git
cd YTSage
```
### 2. Instalar dependências
#### ⚡ Com UV
```bash
uv pip install .
```
#### 📦 Ou com pip padrão
```bash
pip install .
```
### 3. Execute o aplicativo
```bash
python -m ytsage.main
```
</details>
<a id="screenshots"></a>
## 📸 Capturas de tela
<div align="center">
<table>
<tr>
<td><img src="../branding/screenshots/Download-Settings.png" alt="Download Settings" width="400"/></td>
<td><img src="../branding/screenshots/playlist.png" alt="Playlist Download" width="400"/></td>
</tr>
<tr>
<td align="center"><em>Configurações de download</em></td>
<td align="center"><em>Baixar lista de reprodução</em></td>
</tr>
<tr>
<td><img src="../branding/screenshots/audio_format.png" alt="Audio Format Selection with Save Thumbnail" width="400"/></td>
<td><img src="../branding/screenshots/Custom-Option.png" alt="Custom Options" width="400"/></td>
</tr>
<tr>
<td align="center"><em>Formato de áudio</em></td>
<td align="center"><em>Opções personalizadas</em></td>
</tr>
</table>
</div><a id="usage"></a>
## 📖 Uso
<details>
<summary>🎯 Uso Básico</summary>
1. **Inicie o YTSage**
2. **Colar URL do YouTube** (ou usar o botão "Colar URL")
3. **Clique em "Analisar"**
4. **Selecione Formato:**
- `Video` para downloads de vídeos
- `Audio Only` para extração de áudio
5. **Escolha Opções:**
- Ative legendas e selecione o idioma
- Ativar mesclagem de legendas
- Salvar miniatura
- Remover segmentos de patrocinadores
- Salvar descrição
- Incorporar capítulos
6. **Selecione Diretório de Saída**
7. **Clique em "Baixar"**
> 💡 O diretório de download padrão é a pasta "Downloads" do usuário.
</details>
<details>
<summary>📋 Baixar lista de reprodução</summary>
1. **Colar URL da lista de reprodução**
2. **Clique em "Analisar"**
3. **Selecione vídeos no seletor de playlist (opcional, o padrão é todos)**
4. **Escolha o formato/qualidade desejado**
5. **Clique em "Baixar"**
> 💡 O aplicativo gerencia automaticamente a fila de download
</details>
<details>
<summary>🌍 Modo genérico para sites que não são do YouTube</summary>
Use o modo genérico quando quiser que o YTSage aceite URLs de sites suportados pelo yt-dlp, como Dailymotion, CBC Gem, TikTok e outros.
Como usar:
1. Abra `Download Settings`.
2. Ative `Generic Mode`.
3. Cole um URL de vídeo ou lista de reprodução compatível que não seja do YouTube.
4. Clique em `Analyze`.
5. Escolha um formato e baixe normalmente.
Notas:
- O Modo Genérico altera apenas a validação de URL dentro do YTSage. O site de destino ainda deve ser compatível com a versão yt-dlp instalada.
- Alguns sites exigem cookies, uma sessão de login, um proxy ou argumentos yt-dlp extras, dependendo do extrator.
- Se um site falhar, atualize o yt-dlp primeiro na guia do atualizador integrado antes de relatar o problema.
</details>
<details>
<summary>🧰 Opções de mídia e download</summary>
- **Opções de legenda:** Filtre idiomas e incorpore legendas no arquivo de vídeo
- **Mesclagem de legendas:** Mesclar legendas no arquivo de vídeo para legendas codificadas
- **Salvar descrição:** Salve a descrição do vídeo como um arquivo de texto
- **Salvar miniatura:** Salve a miniatura do vídeo como um arquivo de imagem
- **Incorporar capítulos:** Incorpore marcadores de capítulo como metadados para players de vídeo compatíveis
- **Remover segmentos de patrocinadores:** Remova segmentos de patrocinadores do vídeo usando SponsorBlock
- **Cortar vídeo:** baixe apenas partes específicas de um vídeo especificando intervalos de tempo no formato `HH:MM:SS`
</details>
<details>
<summary>⚙️ Configurações de saída e arquivo</summary>
- **Limitador de velocidade:** Limite a velocidade de download, por exemplo `500K` para 500 KB/s
- **Salvar caminho de download:** Salve o caminho de download padrão para downloads futuros. Disponível em **Configurações de download → Caminho de download**.
- **Formato do nome do arquivo de saída:** Personalize o formato do nome do arquivo de saída usando variáveis como `%(title)s`, `%(uploader)s` e `%(resolution)s`. Disponível em **Configurações de download → Formato do nome do arquivo**.
- **Forçar formato de saída:** Força downloads de vídeo em um formato de contêiner específico, como `mp4`, `webm` ou `mkv`. Disponível em **Configurações de download → Configurações de formato de saída**.
- **Conversão de formato de áudio:** Converta downloads somente de áudio para formatos preferidos, como `AAC`, `MP3`, `FLAC`, `WAV`, `Opus`, `M4A`, `Vorbis` ou `Best`. Disponível em **Configurações de download → Configurações de formato de áudio**.
</details>
<details>
<summary>🌐 Acesso e Rede</summary>
- **Login com Cookies:** Faça login no YouTube usando cookies para acessar conteúdo privado.
Como usar:
1. **Recomendado:** Use a opção `Extract cookies from browser` integrada no aplicativo e selecione seu navegador e, opcionalmente, um perfil.
2. Como alternativa, extraia os cookies manualmente:
uma. Exporte cookies do seu navegador usando uma extensão como [cookie-editor](https://github.com/moustachauve/cookie-editor?tab=readme-ov-file)
b. Copie os cookies no formato Netscape
c. Crie um arquivo chamado `cookies.txt` e cole os cookies nele
d. Selecione o arquivo `cookies.txt` no aplicativo
- **Suporte a proxy:** Use um servidor proxy para downloads, por exemplo `http://<proxy-server>:<port>`
- **Modo genérico:** permite que o YTSage analise e faça download de sites que não sejam do YouTube suportados pelo yt-dlp. Habilite-o em **Configurações de download → Modo genérico**.
</details>
<details>
<summary>🛠️ Ferramentas e Manutenção</summary>
- **Comandos personalizados:** Acesse recursos avançados do yt-dlp por meio de argumentos de linha de comando
- **Guia Atualizador:** Gerencie ferramentas de atualização integradas em um só lugar nas Opções Personalizadas:
- **Atualizações do yt-dlp:** verifique se há atualizações e alterne entre canais de lançamento estável e noturno
- **Verificador de versão do FFmpeg:** Verifique sua versão do FFmpeg e abra os guias de instalação
- **Atualizações do Deno:** Verifique e atualize o tempo de execução do Deno
- **Detecção de FFmpeg/yt-dlp/Deno:** Detecta automaticamente caminhos e versões de FFmpeg, yt-dlp e Deno na caixa de diálogo Sobre.
- **Histórico de downloads:** Veja downloads anteriores com miniaturas e status no botão **Histórico**.
</details>
<details>
<summary>🌍 Localização</summary>
YTSage oferece suporte a **14 idiomas** para acessibilidade mundial. Selecione seu idioma preferido em **Opções personalizadas → Idioma**.
### Idiomas Suportados
| Idioma | Código | Idioma | Código |
|----------|------|----------|------|
| 🇺🇸 Inglês | `en` | 🇪🇸 Espanhol | `es` |
| 🇸🇦 Árabe | `ar` | 🇫🇷 Francês | `fr` |
| 🇩🇪 Alemão | `de` | 🇮🇳 Hindi | `hi` |
| 🇮🇩 Indonésio | `id` | 🇮🇹 Italiano | `it` |
| 🇯🇵 Japonês | `ja` | 🇵🇱 Polonês | `pl` |
| 🇧🇷 Português | `pt` | 🇷🇺 Russo | `ru` |
| 🇹🇷 Turco | `tr` | 🇨🇳 Chinês | `zh` |
### LEIA-ME Traduções
| Idioma | Arquivo | Idioma | Arquivo |
|----------|------|----------|------|
| 🇺🇸 Inglês | [README.md](../README.md) | 🇪🇸 Espanhol | [README.es.md](README.es.md)
| 🇸🇦 Árabe | [README.ar.md](README.ar.md) | 🇫🇷 Francês | [README.fr.md](README.fr.md) |
| 🇩🇪 Alemão | [README.de.md](README.de.md) | 🇮🇳 Hindi | [README.hi.md](README.hi.md) |
| 🇮🇩 Indonésio | [README.id.md](README.id.md) | 🇮🇹 Italiano | [README.it.md](README.it.md) |
| 🇯🇵 Japonês | [README.ja.md](README.ja.md) | 🇵🇱 Polonês | [README.pl.md](README.pl.md) |
| 🇧🇷 Português | [README.pt.md](README.pt.md) | 🇷🇺 Russo | [README.ru.md](README.ru.md) |
| 🇹🇷 Turco | [README.tr.md](README.tr.md) | 🇨🇳 Chinês | [README.zh.md](README.zh.md) |
> 💡 **Quer contribuir com uma tradução?** Confira a seção [Contributing](#contributing) para nos ajudar a adicionar mais idiomas!
</details>
<a id="troubleshooting"></a>
## 🛠️ Solução de problemas
<details>
<summary>Clique para ver problemas e soluções comuns</summary>
- **Tabela de formato não exibida:** Atualize yt-dlp para a versão mais recente e mude para yt-dlp todas as noites.
- **Falha no download:** Verifique sua conexão com a Internet e certifique-se de que o vídeo esteja disponível.
- **Erros específicos de download:**
- **Vídeos privados:** Use autenticação de cookies para acessar conteúdo privado.
- **Conteúdo com restrição de idade:** Faça login na conta do YouTube para visualizar vídeos com restrição de idade.
- **Vídeos bloqueados geograficamente:** considere usar uma VPN para contornar restrições regionais.
- **Vídeos removidos/excluídos:** O vídeo não está mais disponível no YouTube.
- **Transmissões ao vivo:** As transmissões ao vivo não podem ser baixadas; espere o fluxo terminar.
- **Erros de rede:** Verifique sua conexão com a Internet e tente novamente.
- **URLs inválidos:** certifique-se de que o URL esteja correto e seja de uma plataforma compatível.
- **Conteúdo Premium:** Requer assinatura do YouTube Premium.
- **Bloqueios de direitos autorais:** O conteúdo está bloqueado devido a restrições de direitos autorais.
- **Arquivos de vídeo e áudio separados após o download:** Isso acontece quando o FFmpeg está ausente ou não é detectado. YTSage requer FFmpeg para mesclar fluxos de vídeo e áudio de alta qualidade.
- **Solução:** Certifique-se de que o FFmpeg esteja instalado e acessível no PATH do seu sistema. Para usuários do Windows, a opção mais fácil é baixar o arquivo `YTSage-v<version>-ffmpeg.exe`, que vem junto com o FFmpeg.
---
#### 🛡️ Aviso do Windows Defender / Antivírus
Alguns softwares antivírus podem sinalizar os arquivos `.exe` como falsos positivos. Esta é uma **limitação conhecida** dos aplicativos empacotados.
**Por que isso acontece:**
- A heurística antivírus pode identificar erroneamente executáveis compactados como suspeitos
**Alternativas seguras:**
- ✅ **Use instalação pip:** `pip install ytsage` (recomendado)
- ✅ **Construir a partir da fonte**: seguindo isto [guide](../.github/CI_CD_README.md)
- ✅ **Coloque o aplicativo na lista de permissões** em seu software antivírus
#### 🍎 macOS: "O aplicativo está danificado e não pode ser aberto"
Se você vir esse erro no macOS Sonoma ou mais recente, será necessário remover o atributo de quarentena.
1. **Abra o Terminal** (você pode encontrá-lo usando o Spotlight).
2. **Digite o seguinte comando** mas **não** pressione Enter ainda. Certifique-se de incluir o espaço no final:
```bash
xattr -d com.apple.quarantine
```
3. **Arraste o arquivo `YTSage.app`** da janela do Finder e solte-o diretamente na janela do Terminal. Isso colará automaticamente o caminho correto do arquivo.
4. **Pressione Enter** para executar o comando.
5. **Tente abrir YTSage.app novamente.** Agora ele deve iniciar corretamente.
---
#### **Locais de configuração (avançado)**
- **Janelas:** `%LOCALAPPDATA%\YTSage`
- **macOS:** `~/Library/Application Support/YTSage`
- **Linux:** `~/.local/share/YTSage`
</details>
<a id="sponsor"></a>
## 💖 Patrocinador
Se o YTSage economizar seu tempo, considere patrocinar o projeto. O patrocínio ajuda a cobrir o tempo de desenvolvimento, testes em plataformas e melhorias futuras.
- Patrocinadores do GitHub: https://github.com/sponsors/oop7
- O link do patrocinador também está disponível diretamente no aplicativo, na caixa de diálogo Sobre.
[![Sponsor YTSage](https://img.shields.io/badge/Sponsor-YTSage-EA4AAA?style=for-the-badge&logo=github&logoColor=white)](https://github.com/sponsors/oop7)
<a id="contributing"></a>
## 👥 Contribuindo
Aceitamos contribuições! Veja como você pode ajudar:
1. 🍴 Bifurque o repositório
2. 🌿 Crie seu branch de recursos:
```bash
git checkout -b feature/AmazingFeature
```
3. 💾 Confirme suas alterações:
```bash
git commit -m 'Add some AmazingFeature'
```
4. 📤 Empurre para o galho:
```bash
git push origin feature/AmazingFeature
```
5. 🔄 Abra uma solicitação pull
### 🌍 Contribuindo com traduções
- Atualize o arquivo README localizado correspondente (por exemplo `README.es.md`)
- Mantenha as strings do aplicativo sincronizadas editando `ytsage/languages/<code>.json`
- Se o seu idioma estiver faltando, comece em `README.md` e crie `README.<code>.md`
<details>
<summary>📂 Estrutura do Projeto</summary>
## YTSage - Estrutura do Projeto
Este documento descreve a estrutura de pastas organizada do YTSage.
### 📁 Estrutura do Projeto
```
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
```
</details>
## ⭐️ História da estrela
<div align="center">
## História da estrela
<a href="https://www.star-history.com/#oop7/YTSage&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date" />
</picture>
</a>
</div>
## 📜 Licença
Este projeto está licenciado sob a licença MIT - consulte o arquivo [LICENSE](../LICENSE) para obter detalhes.
## 🙏 Agradecimentos
<details>
<summary>Mostrar agradecimentos</summary>
<div align="center">
<p>Um sincero obrigado a todos que contribuíram para este projeto abrindo um problema para sugerir uma melhoria ou relatar um bug.</p>
<table>
<tr class="section"><th colspan="2">Componentes principais</th></tr>
<tr>
<td width="35%"><a href="https://github.com/yt-dlp/yt-dlp">yt-dlp</a></td>
<td>Mecanismo de download</td>
</tr>
<tr>
<td><a href="https://ffmpeg.org/">FFmpeg</a></td>
<td>Processamento de mídia</td>
</tr>
<tr>
<td><a href="https://deno.com/">Deno</a></td>
<td>Tempo de execução para integração com yt-dlp</td>
</tr>
<tr class="section"><th colspan="2">Bibliotecas e Estruturas</th></tr>
<tr>
<td><a href="https://wiki.qt.io/Qt_for_Python">PySide6</a></td>
<td>Estrutura GUI</td>
</tr>
<tr>
<td><a href="https://python-pillow.org/">Travesseiro</a></td>
<td>Processamento de imagem</td>
</tr>
<tr><td><a href="https://requests.readthedocs.io/">solicitações</a></td>
<td>Solicitações HTTP</td>
</tr>
<tr>
<td><a href="https://packaging.python.org/">embalagem</a></td>
<td>Manuseio de versões e pacotes</td>
</tr>
<tr>
<td><a href="https://python-markdown.github.io/">remarcação</a></td>
<td>Renderização de redução</td>
</tr>
<tr>
<td><a href="https://github.com/Delgan/loguru">loguru</a></td>
<td>Registro</td>
</tr>
<tr class="section"><th colspan="2">Ativos e Contribuintes</th></tr>
<tr>
<td><a href="https://pixabay.com/sound-effects/new-notification-09-352705/">Nova Notificação 09 por Universfield</a></td>
<td>Som de notificação</td>
</tr>
<tr>
<td><a href="https://github.com/viru185">viru185</a></td>
<td>Colaborador de código</td>
</tr>
</table>
</div>
</details>
## ⚠️ Isenção de responsabilidade
Esta ferramenta é apenas para uso pessoal. Respeite os termos de serviço do YouTube e os direitos dos criadores de conteúdo.
---
<div align="center">
Feito com ❤️ por [oop7](https://github.com/oop7)
</div>
+617
View File
@@ -0,0 +1,617 @@
<div align="center">
<img src="../branding/svg/ytsage-wordmark.svg" width="400" alt="ytsage-wordmark">
<img src="../branding/screenshots/main.png" width="800" alt="YTSage Interface"/>
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-1f2937?style=for-the-badge&logo=python&logoColor=white)](https://www.python.org/downloads/)
[![PyPI Downloads](https://img.shields.io/pepy/dt/ytsage?color=1f2937&style=for-the-badge&label=downloads&logo=python&logoColor=white)](https://pepy.tech/project/ytsage)
[![GitHub Downloads](https://img.shields.io/github/downloads/oop7/YTSage/total?color=1f2937&style=for-the-badge&label=downloads&logo=github&logoColor=white)](https://github.com/oop7/YTSage/releases)
[![License: MIT](https://img.shields.io/badge/License-MIT-1f2937?style=for-the-badge&logo=opensource&logoColor=white)](https://opensource.org/licenses/MIT)
[![Supported Platforms](https://img.shields.io/badge/platform-cross--platform-1f2937?style=for-the-badge&logo=github&logoColor=white)](https://github.com/oop7/YTSage/releases)
[![GitHub Stars](https://img.shields.io/github/stars/oop7/YTSage?color=c90000&style=for-the-badge&logo=github&logoColor=white)](https://github.com/oop7/YTSage/stargazers)
[![PyPI version](https://img.shields.io/pypi/v/ytsage?color=c90000&style=for-the-badge&logo=pypi&logoColor=white)](https://pypi.org/project/ytsage/)
[![GitHub Sponsors](https://img.shields.io/github/sponsors/oop7?color=c90000&style=for-the-badge&logo=githubsponsors&logoColor=white)](https://github.com/sponsors/oop7)
**Современный загрузчик YouTube с чистым интерфейсом PySide6.**
Скачивайте видео в любом качестве, извлекайте аудио, получайте субтитры и многое другое.
### 🌍 README Языки
Английский: [EN](../README.md)
| Сообщение: [AR](README.ar.md)
| Немецкий: [DE](README.de.md)
| Испанский: [ES](README.es.md)
| Французский: [FR](README.fr.md)
| Ответ: [HI](README.hi.md)
| Бахаса Индонезия: [ID](README.id.md)
| Итальянский: [IT](README.it.md)
| 日本語: [JA](README.ja.md)
| Польски: [PL](README.pl.md)
| Португальский: [PT](README.pt.md)
| Русский: [RU](README.ru.md)
| Тюркче: [TR](README.tr.md)
| 中文: [ZH](README.zh.md)
<p align="center">
<a href="#installation">Установка</a> •
<a href="#features">Функции</a> •
<a href="#usage">Использование</a> •
<a href="#screenshots">Скриншоты</a> •
<a href="#troubleshooting">Устранение неполадок</a> •
<a href="#sponsor">Спонсор</a> •
<a href="#contributing">Содействие</a>
</p>
</div>
---
<a id="why-ytsage"></a>
## ❓ Почему YTSage?
YTSage предназначен для пользователей, которым нужен **простой, но мощный загрузчик YouTube**. В отличие от других инструментов, он предлагает:
- Чистый, современный интерфейс PySide6.
- Загрузка видео, аудио и субтитров в один клик.
- Расширенные функции, такие как SponsorBlock, объединение субтитров и выбор списка воспроизведения.
– Дополнительный общий режим для сайтов, поддерживаемых yt-dlp, за пределами YouTube.
- Кроссплатформенная поддержка и простота установки.
<a id="features"></a>
## ✨ Особенности
<div align="center">
| Основные возможности | Расширенные возможности | Дополнительные возможности |
|-----------------------------------|-----------------------------------------|------------------------------------|
| 🎥 Формат таблицы | 🚫 Интеграция SponsorBlock | 🎞️ Отображение FPS/HDR |
| 🎵 Извлечение аудио | 📝 Выбор и объединение нескольких субтитров | 🔄 Автоматическое обновление yt-dlp |
| ✨ Простой интерфейс | 💾 Сохранить описание и миниатюру | 🛠️ Обнаружение FFmpeg/yt-dlp/Deno |
| 📋 Поддержка и выбор плейлистов | 🚀 Ограничитель скорости | ⚙️ Пользовательские команды |
| 📑 Встроить главы | ✂️ Обрезать разделы видео | 🍪 Вход с помощью файлов cookie |
| 📜 История загрузок | 🔄 Выбор канала выпуска | 🌐 Поддержка прокси |
| 🎚️ Преобразование аудиоформатов | 🎬 Настройки формата видео | 🆙 Встроенная вкладка «Обновление» |
| 🌍 Общий режим |
| 🌍 Локализация на 14 языках | |
</div>
<a id="installation"></a>
## 🚀 Установка
### ⚡ Быстрая установка (рекомендуется)
Установите YTSage из PyPI:
```bash
pip install ytsage
```
<details>
<summary>🔄 Обновите существующую установку</summary>
```bash
pip install --upgrade ytsage
```
</details>
Затем запустите приложение:
```bash
ytsage
```
### 📦 Готовые исполняемые файлы
> [👉 Download Latest Release](https://github.com/oop7/YTSage/releases/latest)
#### 🪟 Окна
| Формат | Описание |
|--------|-------------|
| ![Windows EXE](https://img.shields.io/badge/Windows-EXE-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Стандартный установщик |
| ![Windows FFmpeg](https://img.shields.io/badge/Windows-FFmpeg-0078D6?style=for-the-badge&logo=windows&logoColor=white) | В комплекте FFmpeg |
| ![Windows Portable](https://img.shields.io/badge/Windows-Portable-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Портативная версия, установка не требуется |
| ![Windows Portable FFmpeg](https://img.shields.io/badge/Windows-Portable%20FFmpeg-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Портативный с FFmpeg, в архиве |
<details>
<summary>🛠️ Этапы установки</summary>
1. **Установщик EXE (`.exe`)**: дважды щелкните файл и следуйте указаниям мастера установки.
2. **Портативная версия (`.zip`)**: распакуйте архив в нужное место и запустите `ytsage.exe`.
3. **FFmpeg Bundled**: выберите версии в комплекте FFmpeg, если в вашей системе не установлен FFmpeg.
</details>
#### 🐧 Линукс
| Формат | Описание |
|--------|-------------|
| ![Linux DEB](https://img.shields.io/badge/Linux-DEB-FCC624?style=for-the-badge&logo=linux&logoColor=black) | Пакет Debian |
| ![Linux AppImage](https://img.shields.io/badge/Linux-AppImage-FCC624?style=for-the-badge&logo=linux&logoColor=black) | AppImage, портативный |
| ![Linux RPM](https://img.shields.io/badge/Linux-RPM-FCC624?style=for-the-badge&logo=linux&logoColor=black) | пакет RPM |
| ![Flathub](https://img.shields.io/badge/Linux-Flatpak-FCC624?style=for-the-badge&logo=flathub&logoColor=black) | Комплект Flatpak |
<details>
<summary>🛠️ Этапы установки</summary>
- **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
```
</details>
#### 🍎 macOS
| Формат | Описание |
|--------|-------------|
| ![macOS ARM64 APP](https://img.shields.io/badge/macOS-ARM64%20APP-000000?style=for-the-badge&logo=apple&logoColor=white) | Заархивированное приложение для Apple Silicon |
| ![macOS ARM64 DMG](https://img.shields.io/badge/macOS-ARM64%20DMG-000000?style=for-the-badge&logo=apple&logoColor=white) | Установщик образа диска для Apple Silicon |
<details>
<summary>🛠️ Этапы установки</summary>
- **Установщик DMG (`.dmg`)**: дважды щелкните, чтобы смонтировать, затем перетащите `YTSage.app` в папку «Приложения».
- **Архив приложений (`.zip`)**: распакуйте zip-архив и переместите `YTSage.app` в папку «Приложения».
*Примечание. Если вы столкнулись с ошибкой «Приложение повреждено», см. [macOS troubleshooting section](#troubleshooting) ниже.*
</details>
---
<details>
<summary>💻 Ручная установка из исходного кода</summary>
### 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
```
</details>
<a id="screenshots"></a>
## 📸 Скриншоты
<div align="center">
<table>
<tr>
<td><img src="../branding/screenshots/Download-Settings.png" alt="Download Settings" width="400"/></td>
<td><img src="../branding/screenshots/playlist.png" alt="Playlist Download" width="400"/></td>
</tr>
<tr>
<td align="center"><em>Настройки загрузки</em></td>
<td align="center"><em>Скачать плейлист</em></td>
</tr>
<tr>
<td><img src="../branding/screenshots/audio_format.png" alt="Audio Format Selection with Save Thumbnail" width="400"/></td>
<td><img src="../branding/screenshots/Custom-Option.png" alt="Custom Options" width="400"/></td>
</tr>
<tr>
<td align="center"><em>Аудиоформат</em></td>
<td align="center"><em>Пользовательские параметры</em></td>
</tr>
</table>
</div><a id="usage"></a>
## 📖 Использование
<details>
<summary>🎯 Базовое использование</summary>
1. **Запустите YTSage**
2. **Вставьте URL-адрес YouTube** (или нажмите кнопку «Вставить URL-адрес»).
3. **Нажмите «Анализ»**.
4. **Выберите формат:**
- `Video` для загрузки видео.
- `Audio Only` для извлечения звука
5. **Выберите параметры:**
- Включить субтитры и выбрать язык
- Включить объединение субтитров
- Сохранить миниатюру
- Удалить спонсорские сегменты
- Сохранить описание
- Вставлять главы
6. **Выберите выходной каталог**
7. **Нажмите «Загрузить»**.
> 💡 Каталогом загрузки по умолчанию является папка «Загрузки» пользователя.
</details>
<details>
<summary>📋 Скачать плейлист</summary>
1. **Вставьте URL-адрес плейлиста**
2. **Нажмите «Анализ»**.
3. **Выберите видео в селекторе плейлиста (необязательно, по умолчанию — все)**
4. **Выберите желаемый формат/качество**
5. **Нажмите «Загрузить»**.
> 💡 Приложение автоматически обрабатывает очередь загрузки
</details>
<details>
<summary>🌍 Общий режим для сайтов, не принадлежащих YouTube</summary>
Используйте общий режим, если хотите, чтобы 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 на вкладке встроенного средства обновления, прежде чем сообщать о проблеме.
</details>
<details>
<summary>🧰 Параметры мультимедиа и загрузки</summary>
- **Параметры субтитров:** фильтруйте языки и встраивайте субтитры в видеофайл.
- **Объединение субтитров:** объединение субтитров в видеофайл для жестко запрограммированных субтитров.
- **Сохранить описание:** сохранить описание видео в виде текстового файла.
- **Сохранить миниатюру:** сохраните миниатюру видео как файл изображения.
- **Встроить главы.** Встраивайте маркеры глав в качестве метаданных для совместимых видеопроигрывателей.
- **Удалить спонсорские сегменты.** Удалите спонсорские сегменты из видео с помощью SponsorBlock.
- **Обрезать видео:** загружайте только определенные части видео, указав временные диапазоны в формате `HH:MM:SS`.
</details>
<details>
<summary>⚙️ Настройки вывода и файла</summary>
- **Ограничитель скорости:** Ограничьте скорость загрузки, например `500K` до 500 КБ/с.
- **Сохранить путь загрузки:** сохраните путь загрузки по умолчанию для будущих загрузок. Доступно в **Настройки загрузки → Путь загрузки**.
- **Формат имени выходного файла:** Настройте формат имени выходного файла, используя такие переменные, как `%(title)s`, `%(uploader)s` и `%(resolution)s`. Доступно в **Настройки загрузки → Формат имени файла**.
- **Принудительный формат вывода.** Принудительно загружайте видео в определенный формат контейнера, например `mp4`, `webm` или `mkv`. Доступно в **Настройки загрузки → Настройки формата вывода**.
- **Преобразование аудиоформата:** конвертируйте загрузки, содержащие только аудио, в предпочтительные форматы, такие как `AAC`, `MP3`, `FLAC`, `WAV`, `Opus`, `M4A`, `Vorbis` или `Best`. Доступно в **Настройки загрузки → Настройки аудиоформата**.
</details>
<details>
<summary>🌐 Доступ и сеть</summary>
- **Войти с помощью файлов 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://<proxy-server>:<port>`
- **Общий режим.** Разрешить YTSage анализировать и загружать контент с сайтов, не принадлежащих YouTube, и поддерживаемых yt-dlp. Включите его в разделе **Настройки загрузки → Общий режим**.
</details>
<details>
<summary>🛠️ Инструменты и уход</summary>
– **Пользовательские команды.** Доступ к расширенным функциям yt-dlp с помощью аргументов командной строки.
- **Вкладка «Обновление».** Управляйте встроенными инструментами обновления из одного места в пользовательских настройках:
- **Обновления yt-dlp:** проверяйте наличие обновлений и переключайтесь между стабильными и ночными выпусками.
- **Проверка версии FFmpeg:** проверьте версию FFmpeg и откройте руководства по установке.
- **Обновления Deno:** проверьте и обновите среду выполнения Deno.
- **Обнаружение FFmpeg/yt-dlp/Deno:** автоматическое определение путей и версий FFmpeg, yt-dlp и Deno в диалоговом окне «О программе».
- **История загрузок.** Просматривайте прошлые загрузки с помощью миниатюр и статусов с помощью кнопки **История**.
</details>
<details>
<summary>🌍 Локализация</summary>
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), чтобы мы могли добавить больше языков!
</details>
<a id="troubleshooting"></a>
## 🛠️ Устранение неполадок
<details>
<summary>Нажмите, чтобы просмотреть распространенные проблемы и решения</summary>
– **Таблица формата не отображается.** Обновите yt-dlp до последней версии и переключайтесь на yt-dlp каждую ночь.
- **Не удалось загрузить.** Проверьте подключение к Интернету и убедитесь, что видео доступно.
- **Конкретные ошибки загрузки:**
- **Частные видео.** Используйте аутентификацию с помощью файлов cookie для доступа к частному контенту.
- **Контент с возрастными ограничениями.** Войдите в аккаунт YouTube, чтобы просмотреть видео с возрастными ограничениями.
– **Видео с геоблокировкой.** Рассмотрите возможность использования VPN, чтобы обойти региональные ограничения.
– **Удалены видео:** Видео больше не доступно на YouTube.
- **Прямые трансляции:** Прямые трансляции невозможно загрузить; дождитесь окончания потока.
- **Ошибки сети.** Проверьте подключение к Интернету и повторите попытку.
- **Недопустимые URL-адреса.** Убедитесь, что URL-адрес правильный и принадлежит поддерживаемой платформе.
- **Премиум-контент:** требуется подписка YouTube Premium.
- **Блокировка авторских прав.** Контент блокируется из-за ограничений авторских прав.
- **Разделение видео и аудиофайлов после загрузки.** Это происходит, когда FFmpeg отсутствует или не обнаружен. YTSage требует FFmpeg для объединения высококачественных видео и аудио потоков.
- **Решение:** Убедитесь, что FFmpeg установлен и доступен в PATH вашей системы. Для пользователей Windows самый простой вариант — загрузить файл `YTSage-v<version>-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`
</details>
<a id="sponsor"></a>
## 💖 Спонсор
Если YTSage сэкономит вам время, рассмотрите возможность спонсирования проекта. Спонсорство помогает покрыть время разработки, тестирования на разных платформах и будущих улучшений.
- Спонсоры GitHub: https://github.com/sponsors/oop7
- Спонсорская ссылка также доступна непосредственно внутри приложения из диалогового окна «О программе».
[![Sponsor YTSage](https://img.shields.io/badge/Sponsor-YTSage-EA4AAA?style=for-the-badge&logo=github&logoColor=white)](https://github.com/sponsors/oop7)
<a id="contributing"></a>
## 👥 Вклад
Мы приветствуем вклады! Вот как вы можете помочь:
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/<code>.json`.
- Если ваш язык отсутствует, начните с `README.md` и создайте `README.<code>.md`.
<details>
<summary>📂 Структура проекта</summary>
## 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
```
</details>
## ⭐️ Звездная история
<div align="center">
## Звездная история
<a href="https://www.star-history.com/#oop7/YTSage&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date" />
</picture>
</a>
</div>
## 📜 Лицензия
Этот проект лицензируется по лицензии MIT — подробности см. в файле [LICENSE](../LICENSE).
## 🙏 Благодарности
<details>
<summary>Показать благодарности</summary>
<div align="center">
<p>Сердечное спасибо всем, кто внес свой вклад в этот проект, открыв проблему, чтобы предложить улучшения или сообщить об ошибке.</p>
<table>
<tr class="section"><th colspan="2">Основные компоненты</th></tr>
<tr>
<td width="35%"><a href="https://github.com/yt-dlp/yt-dlp">yt-dlp</a></td>
<td>Загрузить двигатель</td>
</tr>
<tr>
<td><a href="https://ffmpeg.org/">FFmpeg</a></td>
<td>Обработка мультимедиа</td>
</tr>
<tr>
<td><a href="https://deno.com/">Deno</a></td>
<td>Среда выполнения для интеграции с yt-dlp</td>
</tr>
<tr class="section"><th colspan="2">Библиотеки и платформы</th></tr>
<tr>
<td><a href="https://wiki.qt.io/Qt_for_Python">PySide6</a></td>
<td>GUI Framework</td>
</tr>
<tr>
<td><a href="https://python-pillow.org/">Подушка</a></td>
<td>Обработка изображений</td>
</tr>
<tr><td><a href="https://requests.readthedocs.io/">запросы</a></td>
<td>HTTP-запросы</td>
</tr>
<tr>
<td><a href="https://packaging.python.org/">упаковка</a></td>
<td>Обработка версий и пакетов</td>
</tr>
<tr>
<td><a href="https://python-markdown.github.io/">уценка</a></td>
<td>Рендеринг уценки</td>
</tr>
<tr>
<td><a href="https://github.com/Delgan/loguru">loguru</a></td>
<td>Ведение журнала</td>
</tr>
<tr class="section"><th colspan="2">Активы и участники</th></tr>
<tr>
<td><a href="https://pixabay.com/sound-effects/new-notification-09-352705/">Новое уведомление 09 от Universfield</a></td>
<td>Звук уведомления</td>
</tr>
<tr>
<td><a href="https://github.com/viru185">viru185</a></td>
<td>Соавтор кода</td>
</tr>
</table>
</div>
</details>
## ⚠️ Отказ от ответственности
Этот инструмент предназначен только для личного использования. Пожалуйста, соблюдайте условия обслуживания YouTube и права создателей контента.
---
<div align="center">
Сделано с ❤️ автором [oop7](https://github.com/oop7)
</div>
+616
View File
@@ -0,0 +1,616 @@
<div align="center">
<img src="../branding/svg/ytsage-wordmark.svg" width="400" alt="ytsage-wordmark">
<img src="../branding/screenshots/main.png" width="800" alt="YTSage Interface"/>
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-1f2937?style=for-the-badge&logo=python&logoColor=white)](https://www.python.org/downloads/)
[![PyPI Downloads](https://img.shields.io/pepy/dt/ytsage?color=1f2937&style=for-the-badge&label=downloads&logo=python&logoColor=white)](https://pepy.tech/project/ytsage)
[![GitHub Downloads](https://img.shields.io/github/downloads/oop7/YTSage/total?color=1f2937&style=for-the-badge&label=downloads&logo=github&logoColor=white)](https://github.com/oop7/YTSage/releases)
[![License: MIT](https://img.shields.io/badge/License-MIT-1f2937?style=for-the-badge&logo=opensource&logoColor=white)](https://opensource.org/licenses/MIT)
[![Supported Platforms](https://img.shields.io/badge/platform-cross--platform-1f2937?style=for-the-badge&logo=github&logoColor=white)](https://github.com/oop7/YTSage/releases)
[![GitHub Stars](https://img.shields.io/github/stars/oop7/YTSage?color=c90000&style=for-the-badge&logo=github&logoColor=white)](https://github.com/oop7/YTSage/stargazers)
[![PyPI version](https://img.shields.io/pypi/v/ytsage?color=c90000&style=for-the-badge&logo=pypi&logoColor=white)](https://pypi.org/project/ytsage/)
[![GitHub Sponsors](https://img.shields.io/github/sponsors/oop7?color=c90000&style=for-the-badge&logo=githubsponsors&logoColor=white)](https://github.com/sponsors/oop7)
**Temiz bir PySide6 arayüzüne sahip modern bir YouTube indiricisi.**
Videoları istediğiniz kalitede indirin, ses çıkarın, altyazıları getirin ve daha fazlasını yapın.
### 🌍 BENİOKU Diller
İngilizce: [EN](../README.md)
| Cevap: [AR](README.ar.md)
| Almanca: [DE](README.de.md)
| İspanyolca: [ES](README.es.md)
| Fransızca: [FR](README.fr.md)
| Adres: [HI](README.hi.md)
| Bahasa Endonezya: [ID](README.id.md)
| İtalyanca: [IT](README.it.md)
| Şarkı sözü: [JA](README.ja.md)
| Polski: [PL](README.pl.md)
| Portekizce: [PT](README.pt.md)
| Rusça: [RU](README.ru.md)
| Türkçe: [TR](README.tr.md)
| Adres: [ZH](README.zh.md)
<p align="center">
<a href="#installation">Kurulum</a> •
<a href="#features">Özellikler</a> •
<a href="#usage">Kullanım</a> •
<a href="#screenshots">Ekran görüntüleri</a> •
<a href="#troubleshooting">Sorun giderme</a> •
<a href="#sponsor">Sponsor</a> •
<a href="#contributing">Katkıda Bulunuyorum</a>
</p>
</div>
---
<a id="why-ytsage"></a>
## ❓ Neden YTSage?
YTSage, **basit ama güçlü bir YouTube indiricisi** isteyen kullanıcılar için tasarlanmıştır. Diğer araçların aksine şunları sunar:
- Temiz, modern bir PySide6 arayüzü
- Video, ses ve altyazılar için tek tıklamayla indirmeler
- SponsorBlock, altyazı birleştirme ve oynatma listesi seçimi gibi gelişmiş özellikler
- YouTube'un ötesinde yt-dlp destekli siteler için İsteğe Bağlı Genel Mod
- Platformlar arası destek ve kolay kurulum
<a id="features"></a>
## ✨ Özellikler
<div align="center">
| Temel Özellikler | Gelişmiş Özellikler | Ekstra Özellikler |
|-------------------------------------|--------------------------------------------------|
| 🎥 Format Tablosu | 🚫 SponsorBlock Entegrasyonu | 🎞️ FPS/HDR Ekran |
| 🎵 Ses Çıkarma | 📝 Çoklu Altyazı Seç ve Birleştir | 🔄 yt-dlp'yi Otomatik Güncelle |
| ✨ Basit kullanıcı arayüzü | 💾 Açıklamayı ve Küçük Resmi Kaydet | 🛠️ FFmpeg/yt-dlp/Deno Algılama |
| 📋 Çalma Listesi Desteği ve Seçici | 🚀 Hız Sınırlayıcı | ⚙️ Özel Komutlar |
| 📑 Bölümleri Yerleştir | ✂️ Video Bölümlerini Kırp | 🍪 Çerezlerle Giriş Yapın |
| 📜 Geçmişi İndir | 🔄 Kanal Seçimini Serbest Bırak | 🌐 Proxy Desteği |
| 🎚️ Ses Formatı Dönüştürme | 🎬 Video Formatı Ayarları | 🆙 Yerleşik Güncelleyici Sekmesi |
| 🌍 Genel Mod |
| 🌍 14 Dilde Yerelleştirme | |
</div>
<a id="installation"></a>
## 🚀 Kurulum
### ⚡ Hızlı Kurulum (Önerilir)
YTSage'i PyPI'den yükleyin:
```bash
pip install ytsage
```
<details>
<summary>🔄 Mevcut bir kurulumu güncelleyin</summary>
```bash
pip install --upgrade ytsage
```
</details>
Ardından uygulamayı başlatın:
```bash
ytsage
```
### 📦 Önceden Oluşturulmuş Yürütülebilir Dosyalar
> [👉 Download Latest Release](https://github.com/oop7/YTSage/releases/latest)
#### 🪟 Windows
| Biçim | Açıklama |
|----------|----------------|
| ![Windows EXE](https://img.shields.io/badge/Windows-EXE-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Standart yükleyici |
| ![Windows FFmpeg](https://img.shields.io/badge/Windows-FFmpeg-0078D6?style=for-the-badge&logo=windows&logoColor=white) | FFmpeg paketiyle birlikte |
| ![Windows Portable](https://img.shields.io/badge/Windows-Portable-0078D6?style=for-the-badge&logo=windows&logoColor=white) | Taşınabilir versiyon, kurulum gerektirmez |
| ![Windows Portable FFmpeg](https://img.shields.io/badge/Windows-Portable%20FFmpeg-0078D6?style=for-the-badge&logo=windows&logoColor=white) | FFmpeg ile taşınabilir, sıkıştırılmış |
<details>
<summary>🛠️ Kurulum Adımları</summary>
1. **EXE Yükleyici (`.exe`)**: Dosyaya çift tıklayın ve kurulum sihirbazını izleyin.
2. **Taşınabilir Sürüm (`.zip`)**: Arşivi istediğiniz konuma çıkarın ve `ytsage.exe`'i çalıştırın.
3. **FFmpeg Paketli**: Sisteminizde FFmpeg yüklü değilse FFmpeg paketli versiyonlarını seçin.
</details>
#### 🐧 Linux
| Biçim | Açıklama |
|----------|----------------|
| ![Linux DEB](https://img.shields.io/badge/Linux-DEB-FCC624?style=for-the-badge&logo=linux&logoColor=black) | Debian paketi |
| ![Linux AppImage](https://img.shields.io/badge/Linux-AppImage-FCC624?style=for-the-badge&logo=linux&logoColor=black) | AppImage, taşınabilir |
| ![Linux RPM](https://img.shields.io/badge/Linux-RPM-FCC624?style=for-the-badge&logo=linux&logoColor=black) | RPM paketi |
| ![Flathub](https://img.shields.io/badge/Linux-Flatpak-FCC624?style=for-the-badge&logo=flathub&logoColor=black) | Düz Paket Paketi |
<details>
<summary>🛠️ Kurulum Adımları</summary>
- **DEB (`.deb`)**:
```bash
sudo dpkg -i ytsage_*.deb
sudo apt-get install -f # Fix missing dependencies if any
```
- **RPM (`.rpm`)**:
```bash
sudo rpm -i ytsage-*.rpm
```
- **AppImage (`.AppImage`)**:
```bash
chmod +x YTSage-*.AppImage
./YTSage-*.AppImage
```
- **Flatpak**: Flathub'daki talimatları izleyin veya şunu çalıştırın:
```bash
flatpak install flathub io.github.oop7.ytsage
```
</details>
#### 🍎macOS
| Biçim | Açıklama |
|----------|----------------|
| ![macOS ARM64 APP](https://img.shields.io/badge/macOS-ARM64%20APP-000000?style=for-the-badge&logo=apple&logoColor=white) | Apple Silicon için sıkıştırılmış uygulama |
| ![macOS ARM64 DMG](https://img.shields.io/badge/macOS-ARM64%20DMG-000000?style=for-the-badge&logo=apple&logoColor=white) | Apple Silicon için disk görüntüsü yükleyici |
<details>
<summary>🛠️ Kurulum Adımları</summary>
- **DMG Installer (`.dmg`)**: Bağlamak için çift tıklayın, ardından `YTSage.app`'i Uygulamalar klasörünüze sürükleyin.
- **Uygulama Arşivi (`.zip`)**: Zip dosyasını çıkartın ve `YTSage.app`'i Uygulamalar klasörünüze taşıyın.
*Not: "Uygulama hasar gördü" hatasıyla karşılaşırsanız aşağıdaki [macOS troubleshooting section](#troubleshooting)'e bakın.*
</details>
---
<details>
<summary>💻 Kaynaktan Manuel Kurulum</summary>
### 1. Depoyu Klonlayın
```bash
git clone https://github.com/oop7/YTSage.git
cd YTSage
```
### 2. Bağımlılıkları Kurun
#### ⚡UV ile
```bash
uv pip install .
```
#### 📦 Veya standart pip ile
```bash
pip install .
```
### 3. Uygulamayı çalıştırın
```bash
python -m ytsage.main
```
</details>
<a id="screenshots"></a>
## 📸 Ekran görüntüleri
<div align="center">
<table>
<tr>
<td><img src="../branding/screenshots/Download-Settings.png" alt="Download Settings" width="400"/></td>
<td><img src="../branding/screenshots/playlist.png" alt="Playlist Download" width="400"/></td>
</tr>
<tr>
<td align="center"><em>İndirme Ayarları</em></td>
<td align="center"><em>Çalma Listesi İndir</em></td>
</tr>
<tr>
<td><img src="../branding/screenshots/audio_format.png" alt="Audio Format Selection with Save Thumbnail" width="400"/></td>
<td><img src="../branding/screenshots/Custom-Option.png" alt="Custom Options" width="400"/></td>
</tr>
<tr>
<td align="center"><em>Ses Formatı</em></td>
<td align="center"><em>Özel Seçenekler</em></td>
</tr>
</table>
</div><a id="usage"></a>
## 📖 Kullanım
<details>
<summary>🎯 Temel Kullanım</summary>
1. **YTSage'i başlatın**
2. **YouTube URL'sini yapıştırın** (veya "URL'yi yapıştır" düğmesini kullanın)
3. **"Analiz Et"i tıklayın**
4. **Biçim Seçin:**
- `Video` video indirmeleri için
- `Audio Only` ses çıkarma için
5. **Seçenekleri seçin:**
- Altyazıları etkinleştirin ve dili seçin
- Altyazı birleştirmeyi etkinleştir
- Küçük resmi kaydet
- Sponsor segmentlerini kaldırın
- Açıklamayı kaydet
- Bölümleri yerleştir
6. **Çıktı Dizinini Seçin**
7. **"İndir"e tıklayın**
> 💡 Varsayılan indirme dizini kullanıcının "İndirilenler" klasörüdür.
</details>
<details>
<summary>📋 Çalma Listesi İndir</summary>
1. **Oynatma Listesi URL'sini yapıştırın**
2. **"Analiz Et"i tıklayın**
3. **Oynatma seçiciden videoları seçin (isteğe bağlı, varsayılan olarak tümü)**
4. **İstediğiniz formatı/kaliteyi seçin**
5. **"İndir"e tıklayın**
> 💡 Uygulama indirme sırasını otomatik olarak yönetir
</details>
<details>
<summary>🌍 YouTube dışı siteler için Genel Mod</summary>
YTSage'in Dailymotion, CBC Gem, TikTok ve diğerleri gibi yt-dlp tarafından desteklenen sitelerdeki URL'leri kabul etmesini istiyorsanız Genel Modu kullanın.
Nasıl kullanılır:
1. `Download Settings`'i açın.
2. `Generic Mode`'ı etkinleştirin.
3. Desteklenen YouTube dışı bir video veya oynatma listesi URL'sini yapıştırın.
4. `Analyze`'a tıklayın.
5. Bir format seçin ve her zamanki gibi indirin.
Notlar:
- Genel Mod yalnızca YTSage içindeki URL doğrulamasını değiştirir. Hedef sitenin yüklü yt-dlp sürümünüz tarafından hala desteklenmesi gerekiyor.
- Bazı siteler, çıkarıcıya bağlı olarak çerezlere, oturum açma oturumuna, proxy'ye veya ekstra yt-dlp argümanlarına ihtiyaç duyar.
- Bir site başarısız olursa, sorunu bildirmeden önce yerleşik güncelleyici sekmesinden yt-dlp'yi güncelleyin.
</details>
<details>
<summary>🧰 Medya ve İndirme Seçenekleri</summary>
- **Altyazı Seçenekleri:** Dilleri filtreleyin ve altyazıları video dosyasına ekleyin
- **Altyazı Birleştirme:** Sabit kodlanmış altyazılar için altyazıları video dosyasıyla birleştirin
- **Açıklamayı Kaydet:** Video açıklamasını bir metin dosyası olarak kaydedin
- **Küçük Resmi Kaydet:** Video küçük resmini bir resim dosyası olarak kaydedin
- **Bölümleri Göm:** Uyumlu video oynatıcılar için bölüm işaretlerini meta veri olarak gömün
- **Sponsor Segmentlerini Kaldır:** SponsorBlock'u kullanarak sponsor segmentlerini videodan kaldırın
- **Videoyu Kırp:** `HH:MM:SS` biçiminde zaman aralıklarını belirterek videonun yalnızca belirli bölümlerini indirin
</details>
<details>
<summary>⚙️ Çıktı ve Dosya Ayarları</summary>
- **Hız Sınırlayıcı:** İndirme hızını sınırlayın, örneğin 500 KB/s için `500K`
- **İndirme Yolunu Kaydet:** Gelecekteki indirmeler için varsayılan indirme yolunu kaydedin. **İndirme Ayarları → İndirme Yolu**'nda mevcuttur.
- **Çıktı Dosya Adı Formatı:** `%(title)s`, `%(uploader)s` ve `%(resolution)s` gibi değişkenleri kullanarak çıktı dosya adı formatını özelleştirin. **İndirme Ayarları → Dosya Adı Formatı**'nda mevcuttur.- **Çıktı Formatını Zorla:** Video indirme işlemlerini `mp4`, `webm` veya `mkv` gibi belirli bir kapsayıcı formatına zorlayın. **İndirme Ayarları → Çıktı Formatı Ayarları** bölümünde mevcuttur.
- **Ses Formatı Dönüştürme:** Yalnızca ses indirmelerini `AAC`, `MP3`, `FLAC`, `WAV`, `Opus`, `M4A` gibi tercih edilen formatlara dönüştürün `Vorbis` veya `Best`. **İndirme Ayarları → Ses Formatı Ayarları**'nda mevcuttur.
</details>
<details>
<summary>🌐 Erişim ve Ağ</summary>
- **Çerezler ile Giriş Yapın:** Özel içeriğe erişmek için çerezleri kullanarak YouTube'a giriş yapın.
Nasıl kullanılır:
1. **Önerilen:** Uygulamadaki yerleşik `Extract cookies from browser` seçeneğini kullanın, ardından tarayıcınızı ve isteğe bağlı olarak bir profili seçin.
2. Alternatif olarak çerezleri manuel olarak çıkarın:
a. [cookie-editor](https://github.com/moustachauve/cookie-editor?tab=readme-ov-file) gibi bir uzantı kullanarak çerezleri tarayıcınızdan dışa aktarın
b. Çerezleri Netscape formatında kopyalayın
c. `cookies.txt` adında bir dosya oluşturun ve çerezleri bu dosyaya yapıştırın
D. Uygulamada `cookies.txt` dosyasını seçin
- **Proxy Desteği:** İndirmeler için bir proxy sunucusu kullanın, örneğin `http://<proxy-server>:<port>`
- **Genel Mod:** YTSage'in, yt-dlp tarafından desteklenen YouTube dışı sitelerden analiz yapmasına ve indirme yapmasına izin verin. **İndirme Ayarları → Genel Mod**'dan etkinleştirin.
</details>
<details>
<summary>🛠️ Araçlar ve Bakım</summary>
- **Özel Komutlar:** Komut satırı bağımsız değişkenleri aracılığıyla gelişmiş yt-dlp özelliklerine erişin
- **Güncelleyici Sekmesi:** Özel Seçenekler'de yerleşik güncelleme araçlarını tek yerden yönetin:
- **yt-dlp Güncellemeleri:** Güncellemeleri kontrol edin ve Mevcut ve Gecelik sürüm kanalları arasında geçiş yapın
- **FFmpeg Sürüm Denetleyicisi:** FFmpeg sürümünüzü kontrol edin ve kurulum kılavuzlarını açın
- **Deno Güncellemeleri:** Deno çalışma zamanını kontrol edin ve güncelleyin
- **FFmpeg/yt-dlp/Deno Algılama:** Hakkında iletişim kutusundan FFmpeg, yt-dlp ve Deno yollarını ve sürümlerini otomatik olarak algılar.
- **İndirme Geçmişi:** **Geçmiş** düğmesinden geçmiş indirmeleri küçük resimler ve durumlarla birlikte görüntüleyin.
</details>
<details>
<summary>🌍 Yerelleştirme</summary>
YTSage, dünya çapında erişilebilirlik için **14 dili** destekler. **Özel Seçenekler → Dil**'den tercih ettiğiniz dili seçin.
### Desteklenen Diller
| Dil | Kod | Dil | Kod |
|----------|------|----------|------|
| 🇺🇸 İngilizce | `en` | 🇪🇸 İspanyolca | `es` |
| 🇸🇦 Arapça | `ar` | 🇫🇷 Fransızca | `fr` |
| 🇩🇪 Almanca | `de` | 🇮🇳 Hintçe | `hi` |
| 🇮🇩 Endonezce | `id` | 🇮🇹 İtalyanca | `it` |
| 🇯🇵 Japonca | `ja` | 🇵🇱 Lehçe | `pl` |
| 🇧🇷 Portekizce | `pt` | 🇷🇺 Rusça | `ru` |
| 🇹🇷 Türkçe | `tr` | 🇨🇳 Çince | `zh` |
### README Çevirileri
| Dil | Dosya | Dil | Dosya |
|----------|------|----------|------|
| 🇺🇸 İngilizce | [README.md](../README.md) | 🇪🇸 İspanyolca | [README.es.md](README.es.md)
| 🇸🇦 Arapça | [README.ar.md](README.ar.md) | 🇫🇷 Fransızca | [README.fr.md](README.fr.md) |
| 🇩🇪 Almanca | [README.de.md](README.de.md) | 🇮🇳 Hintçe | [README.hi.md](README.hi.md) |
| 🇮🇩 Endonezce | [README.id.md](README.id.md) | 🇮🇹 İtalyanca | [README.it.md](README.it.md) |
| 🇯🇵 Japonca | [README.ja.md](README.ja.md) | 🇵🇱 Lehçe | [README.pl.md](README.pl.md) |
| 🇧🇷 Portekizce | [README.pt.md](README.pt.md) | 🇷🇺 Rusça | [README.ru.md](README.ru.md) |
| 🇹🇷 Türkçe | [README.tr.md](README.tr.md) | 🇨🇳 Çince | [README.zh.md](README.zh.md) |
> 💡 **Çeviriye katkıda bulunmak mı istiyorsunuz?** Daha fazla dil eklememize yardımcı olmak için [Contributing](#contributing) bölümüne göz atın!
</details>
<a id="troubleshooting"></a>
## 🛠️ Sorun giderme
<details>
<summary>Genel sorunları ve çözümleri görüntülemek için tıklayın</summary>
- **Biçim tablosu görüntülenmiyor:** yt-dlp'yi en son sürüme güncelleyin ve her gece yt-dlp'ye geçin.
- **İndirme başarısız oluyor:** İnternet bağlantınızı kontrol edin ve videonun mevcut olduğundan emin olun.
- **Belirli indirme hataları:**
- **Özel videolar:** Özel içeriğe erişmek için çerez kimlik doğrulamasını kullanın.
- **Yaş kısıtlamalı içerik:** Yaş kısıtlamalı videoları görüntülemek için YouTube hesabına giriş yapın.
- **Coğrafi olarak engellenen videolar:** Bölgesel kısıtlamaları aşmak için bir VPN kullanmayı düşünün.
- **Kaldırılan/silinen videolar:** Video artık YouTube'da mevcut değil.
- **Canlı yayınlar:** Canlı yayınlar indirilemez; akışın bitmesini bekleyin.
- **Ağ hataları:** İnternet bağlantınızı kontrol edip tekrar deneyin.
- **Geçersiz URL'ler:** URL'nin doğru olduğundan ve desteklenen bir platforma ait olduğundan emin olun.
- **Premium içerik:** YouTube Premium üyeliği gerektirir.
- **Telif hakkı engellemeleri:** İçerik, telif hakkı kısıtlamaları nedeniyle engellenmiştir.
- **İndirmeden sonra video ve ses dosyalarını ayırın:** Bu, FFmpeg eksik olduğunda veya algılanmadığında meydana gelir. YTSage, yüksek kaliteli video ve ses akışlarını birleştirmek için FFmpeg'e ihtiyaç duyar.
- **Çözüm:** FFmpeg'in sisteminizin PATH'inde kurulu ve erişilebilir olduğundan emin olun. Windows kullanıcıları için en kolay seçenek, FFmpeg ile birlikte gelen `YTSage-v<version>-ffmpeg.exe` dosyasını indirmektir.
---
#### 🛡️ Windows Defender / Antivirüs Uyarısı
Bazı antivirüs yazılımları `.exe` dosyalarını yanlış pozitif olarak işaretleyebilir. Bu, paket uygulamaların **bilinen bir sınırlamasıdır**.
**Bu neden oluyor:**
- Antivirüs buluşsal yöntemleri, paketlenmiş yürütülebilir dosyaları şüpheli olarak yanlış tanımlayabilir
**Güvenli alternatifler:**
- ✅ **Pip kurulumunu kullanın:** `pip install ytsage` (önerilir)
- ✅ **Kaynaktan oluşturun**: bunu takip ederek [guide](../.github/CI_CD_README.md)
- ✅ **Uygulamayı antivirüs yazılımınızda beyaz listeye alın**
#### 🍎 macOS: "Uygulama hasarlı ve açılamıyor"
Bu hatayı macOS Sonoma veya daha yeni bir sürümde görüyorsanız karantina özelliğini kaldırmanız gerekir.
1. **Terminal'i açın** (Spotlight'ı kullanarak bulabilirsiniz).
2. **Aşağıdaki komutu yazın** ancak **henüz Enter'a basmayın**. Sondaki boşluğu eklediğinizden emin olun:
```bash
xattr -d com.apple.quarantine
```
3. **`YTSage.app` dosyasını Finder pencerenizden sürükleyip doğrudan Terminal penceresine bırakın. Bu, doğru dosya yolunu otomatik olarak yapıştıracaktır.
4. **Komutu çalıştırmak için **Enter** tuşuna basın.
5. **YTSage.app'i tekrar açmayı deneyin.** Artık doğru şekilde başlatılması gerekir.
---
#### **Yapılandırma Konumları (Gelişmiş)**
- **Windows:** `%LOCALAPPDATA%\YTSage`
- **macOS:** `~/Library/Application Support/YTSage`
- **Linux:** `~/.local/share/YTSage`
</details>
<a id="sponsor"></a>
## 💖 Sponsor
YTSage size zaman kazandırıyorsa projeye sponsor olmayı düşünün. Sponsorluk, geliştirme süresinin, platformlar arası testlerin ve gelecekteki iyileştirmelerin karşılanmasına yardımcı olur.
- GitHub Sponsorları: https://github.com/sponsors/oop7
- Sponsor bağlantısına doğrudan uygulamanın içindeki Hakkında iletişim kutusundan da ulaşılabilir.
[![Sponsor YTSage](https://img.shields.io/badge/Sponsor-YTSage-EA4AAA?style=for-the-badge&logo=github&logoColor=white)](https://github.com/sponsors/oop7)
<a id="contributing"></a>
## 👥 Katkıda Bulunmak
Katkılarınızı bekliyoruz! İşte nasıl yardımcı olabileceğiniz:
1. 🍴 Depoyu çatallayın
2. 🌿 Özellik dalınızı oluşturun:
```bash
git checkout -b feature/AmazingFeature
```
3. 💾 Değişikliklerinizi gerçekleştirin:
```bash
git commit -m 'Add some AmazingFeature'
```
4. 📤 Şubeye itin:
```bash
git push origin feature/AmazingFeature
```
5. 🔄 Bir Çekme İsteği Açın
### 🌍 Çevirilere Katkıda Bulunmak
- Eşleşen yerelleştirilmiş README dosyasını güncelleyin (örneğin `README.es.md`)
- `ytsage/languages/<code>.json` düzenleyerek uygulama dizelerini senkronize tutun
- Diliniz eksikse `README.md`'den başlayın ve `README.<code>.md`'i oluşturun
<details>
<summary>📂 Proje Yapısı</summary>
## YTSage - Proje Yapısı
Bu belge YTSage'in organize klasör yapısını açıklamaktadır.
### 📁 Proje Yapısı
```
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
```
</details>
## ⭐️ Yıldız Tarihi
<div align="center">
## Yıldız Geçmişi
<a href="https://www.star-history.com/#oop7/YTSage&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date" />
</picture>
</a>
</div>
## 📜 Lisans
Bu proje MIT Lisansı kapsamında lisanslıdır; ayrıntılar için [LICENSE](../LICENSE) dosyasına bakın.
## 🙏 Teşekkürler
<details>
<summary>Teşekkürleri Göster</summary>
<div align="center">
<p>Bir iyileştirme önermek veya hata bildirmek için konu açarak bu projeye katkıda bulunan herkese yürekten teşekkür ederiz.</p>
<table>
<tr class="section"><th colspan="2">Temel Bileşenler</th></tr>
<tr>
<td width="35%"><a href="https://github.com/yt-dlp/yt-dlp">yt-dlp</a></td>
<td>İndirme Motoru</td>
</tr>
<tr>
<td><a href="https://ffmpeg.org/">FFmpeg</a></td>
<td>Medya İşleme</td>
</tr>
<tr>
<td><a href="https://deno.com/">Deno</a></td>
<td>Yt-dlp</td> ile entegrasyon için çalışma zamanı
</tr>
<tr class="section"><th colspan="2">Kütüphaneler ve Çerçeveler</th></tr>
<tr>
<td><a href="https://wiki.qt.io/Qt_for_Python">PySide6</a></td>
<td>GUI Çerçevesi</td>
</tr>
<tr>
<td><a href="https://python-pillow.org/">Yastık</a></td>
<td>Görüntü İşleme</td>
</tr>
<tr><td><a href="https://requests.readthedocs.io/">istekler</a></td>
<td>HTTP İstekleri</td>
</tr>
<tr>
<td><a href="https://packaging.python.org/">paketleme</a></td>
<td>Versiyon ve Paket İşleme</td>
</tr>
<tr>
<td><a href="https://python-markdown.github.io/">markdown</a></td>
<td>Markdown Oluşturma</td>
</tr>
<tr>
<td><a href="https://github.com/Delgan/loguru">loguru</a></td>
<td>Günlüğe kaydetme</td>
</tr>
<tr class="section"><th colspan="2">Varlıklar ve Katkıda Bulunanlar</th></tr>
<tr>
<td><a href="https://pixabay.com/sound-effects/new-notification-09-352705/">Universfield'dan Yeni Bildirim 09</a></td>
<td>Bildirim Sesi</td>
</tr>
<tr>
<td><a href="https://github.com/viru185">viru185</a></td>
<td>Kod Katılımcısı</td>
</tr>
</table>
</div>
</details>
## ⚠️ Yasal Uyarı
Bu araç yalnızca kişisel kullanım içindir. Lütfen YouTube'un hizmet şartlarına ve içerik oluşturucuların haklarına saygı gösterin.
---
<div align="center">
[oop7](https://github.com/oop7) tarafından ❤️ ile yapılmıştır
</div>
+616
View File
@@ -0,0 +1,616 @@
<div align="center">
<img src="../branding/svg/ytsage-wordmark.svg" width="400" alt="ytsage-wordmark">
<img src="../branding/screenshots/main.png" width="800" alt="YTSage Interface"/>
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-1f2937?style=for-the-badge&logo=python&logoColor=white)](https://www.python.org/downloads/)
[![PyPI Downloads](https://img.shields.io/pepy/dt/ytsage?color=1f2937&style=for-the-badge&label=downloads&logo=python&logoColor=white)](https://pepy.tech/project/ytsage)
[![GitHub Downloads](https://img.shields.io/github/downloads/oop7/YTSage/total?color=1f2937&style=for-the-badge&label=downloads&logo=github&logoColor=white)](https://github.com/oop7/YTSage/releases)
[![License: MIT](https://img.shields.io/badge/License-MIT-1f2937?style=for-the-badge&logo=opensource&logoColor=white)](https://opensource.org/licenses/MIT)
[![Supported Platforms](https://img.shields.io/badge/platform-cross--platform-1f2937?style=for-the-badge&logo=github&logoColor=white)](https://github.com/oop7/YTSage/releases)
[![GitHub Stars](https://img.shields.io/github/stars/oop7/YTSage?color=c90000&style=for-the-badge&logo=github&logoColor=white)](https://github.com/oop7/YTSage/stargazers)
[![PyPI version](https://img.shields.io/pypi/v/ytsage?color=c90000&style=for-the-badge&logo=pypi&logoColor=white)](https://pypi.org/project/ytsage/)
[![GitHub Sponsors](https://img.shields.io/github/sponsors/oop7?color=c90000&style=for-the-badge&logo=githubsponsors&logoColor=white)](https://github.com/sponsors/oop7)
**具有干净 PySide6 界面的现代 YouTube 下载器。**
下载任何质量的视频、提取音频、获取字幕等等。
### 🌍 自述文件语言
英文:[EN](../README.md)
|巴黎: [AR](README.ar.md)
|德语:[DE](README.de.md)
|西班牙语:[ES](README.es.md)
|法语:[FR](README.fr.md)
|编号:[HI](README.hi.md)
|印度尼西亚语:[ID](README.id.md)
|意大利语:[IT](README.it.md)
| 日本语:[JA](README.ja.md)
|波兰斯基:[PL](README.pl.md)
|葡萄牙语:[PT](README.pt.md)
| Русский: [RU](README.ru.md)
|土耳其:[TR](README.tr.md)
| 中文: [ZH](README.zh.md)
<p align="center">
<a href="#installation">安装</a> •
<a href="#features">特点</a> •
<a href="#usage">使用</a> •
<a href="#screenshots">屏幕截图</a> •
<a href="#troubleshooting">故障排除</a> •
<a href="#sponsor">赞助商</a> •
<a href="#contributing">贡献</a>
</p>
</div>
---
<a id="why-ytsage"></a>
## ❓ 为什么选择 YTSage
YTSage 专为想要**简单但功能强大的 YouTube 下载器**的用户而设计。与其他工具不同,它提供:
- 干净、现代的 PySide6 界面
- 视频、音频和字幕一键下载
- SponsorBlock、字幕合并和播放列表选择等高级功能
- 适用于 YouTube 以外支持 yt-dlp 的网站的可选通用模式
- 跨平台支持且易于安装
<a id="features"></a>
## ✨ 特点
<div align="center">
|核心特点|高级功能 |额外功能 |
|------------------------------------------------|--------------------------------------------------------|------------------------------------|
| 🎥 格式化表格 | 🚫 SponsorBlock 集成 | 🎞️ FPS/HDR 显示 |
| 🎵 音频提取 | 📝 多字幕选择和合并 | 🔄 自动更新 yt-dlp |
| ✨ 简单的用户界面 | 💾 保存描述和缩略图 | 🛠️ FFmpeg/yt-dlp/Deno 检测 |
| 📋 播放列表支持和选择器 | 🚀 限速器 | ⚙️ 自定义命令 |
| 📑 嵌入章节 | ✂️ 修剪视频部分 | 🍪 使用 Cookie 登录 |
| 📜 下载历史记录 | 🔄 发布渠道选择 | 🌐 代理支持 |
| 🎚️ 音频格式转换 | 🎬 视频格式设置 | 🆙 内置更新程序选项卡 |
| 🌍 通用模式 |
| 🌍 14 种语言本地化 | |
</div>
<a id="installation"></a>
## 🚀 安装
### ⚡ 快速安装(推荐)
从 PyPI 安装 YTSage
```bash
pip install ytsage
```
<details>
<summary>🔄 更新现有安装</summary>
```bash
pip install --upgrade ytsage
```
</details>
然后启动应用程序:
```bash
ytsage
```
### 📦 预构建的可执行文件
> [👉 Download Latest Release](https://github.com/oop7/YTSage/releases/latest)
#### 🪟 Windows
|格式|描述 |
|--------|-------------|
| [Windows EXE](https://img.shields.io/badge/Windows-EXE-0078D6?style=for-the-badge&logo=windows&logoColor=white) |标准安装程序 |
| [Windows FFmpeg](https://img.shields.io/badge/Windows-FFmpeg-0078D6?style=for-the-badge&logo=windows&logoColor=white) |与 FFmpeg 捆绑 |
| [Windows Portable](https://img.shields.io/badge/Windows-Portable-0078D6?style=for-the-badge&logo=windows&logoColor=white) |便携版,无需安装|
| [Windows Portable FFmpeg](https://img.shields.io/badge/Windows-Portable%20FFmpeg-0078D6?style=for-the-badge&logo=windows&logoColor=white) |带有 FFmpeg 的便携式,压缩 |
<details>
<summary>🛠️安装步骤</summary>
1. **EXE 安装程序 (`.exe`)**:双击该文件并按照安装向导进行操作。
2. **便携式版本(`.zip`**:将存档解压到您所需的位置并运行`ytsage.exe`
3. **FFmpeg Bundled**:如果您的系统上没有安装 FFmpeg,请选择 FFmpeg 捆绑版本。
</details>
#### 🐧 Linux
|格式|描述 |
|--------|-------------|
| [Linux DEB](https://img.shields.io/badge/Linux-DEB-FCC624?style=for-the-badge&logo=linux&logoColor=black) | Debian 软件包 |
| [Linux AppImage](https://img.shields.io/badge/Linux-AppImage-FCC624?style=for-the-badge&logo=linux&logoColor=black) | AppImage,便携式|
| [Linux RPM](https://img.shields.io/badge/Linux-RPM-FCC624?style=for-the-badge&logo=linux&logoColor=black) |转包 |
| [Flathub](https://img.shields.io/badge/Linux-Flatpak-FCC624?style=for-the-badge&logo=flathub&logoColor=black) | Flatpak 捆绑包 |
<details>
<summary>🛠️安装步骤</summary>
- **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`**
```bash
chmod +x YTSage-*.AppImage
./YTSage-*.AppImage
```
- **Flatpak**:按照 Flathub 上的说明进行操作或运行:
```bash
flatpak install flathub io.github.oop7.ytsage
```
</details>
#### 🍎 macOS
|格式|描述 |
|--------|-------------|
| [macOS ARM64 APP](https://img.shields.io/badge/macOS-ARM64%20APP-000000?style=for-the-badge&logo=apple&logoColor=white) | Apple Silicon 的压缩应用程序 |
| [macOS ARM64 DMG](https://img.shields.io/badge/macOS-ARM64%20DMG-000000?style=for-the-badge&logo=apple&logoColor=white) | Apple Silicon 的磁盘映像安装程序 |
<details>
<summary>🛠️安装步骤</summary>
- **DMG 安装程序 (`.dmg`)**:双击安装,然后将 `YTSage.app` 拖到您的应用程序文件夹中。
- **应用程序存档 (`.zip`)**:解压 zip 并将 `YTSage.app` 移动到您的应用程序文件夹。
*注意:如果您遇到“应用程序已损坏”错误,请参阅下面的[macOS troubleshooting section](#troubleshooting)。*
</details>
---
<details>
<summary>💻从源手动安装</summary>
### 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
```
</details>
<a id="screenshots"></a>
## 📸 截图
<div align="center">
<table>
<tr>
<td><img src="../branding/screenshots/Download-Settings.png" alt="Download Settings" width="400"/></td>
<td><img src="../branding/screenshots/playlist.png" alt="Playlist Download" width="400"/></td>
</tr>
<tr>
<td align="center"><em>下载设置</em></td>
<td align="center"><em>播放列表下载</em></td>
</tr>
<tr>
<td><img src="../branding/screenshots/audio_format.png" alt="Audio Format Selection with Save Thumbnail" width="400"/></td>
<td><img src="../branding/screenshots/Custom-Option.png" alt="Custom Options" width="400"/></td>
</tr>
<tr>
<td align="center"><em>音频格式</em></td>
<td align="center"><em>自定义选项</em></td>
</tr>
</table>
</div><a id="usage"></a>
## 📖 用法
<details>
<summary>🎯基本用法</summary>
1. **启动 YTSage**
2. **粘贴 YouTube URL**(或使用“粘贴 URL”按钮)
3. **点击“分析”**
4. **选择格式:**
- `Video` 用于视频下载
- `Audio Only` 用于音频提取
5. **选择选项:**
- 启用字幕并选择语言
- 启用字幕合并
- 保存缩略图
- 删除赞助商部分
- 保存描述
- 嵌入章节
6. **选择输出目录**
7. **点击“下载”**
> 💡 默认下载目录是用户的“Downloads”文件夹。
</details>
<details>
<summary>📋播放列表下载</summary>
1. **粘贴播放列表 URL**
2. **点击“分析”**
3. **从播放列表选择器中选择视频(可选,默认为全部)**
4. **选择所需的格式/质量**
5. **点击“下载”**
> 💡 应用程序自动处理下载队列
</details>
<details>
<summary>🌍非 YouTube 网站的通用模式</summary>
当您希望 YTSage 接受来自 yt-dlp 支持的网站(例如 Dailymotion、CBC Gem、TikTok 等)的 URL 时,请使用通用模式。
使用方法:
1. 打开`Download Settings`。
2. 启用`Generic Mode`。
3. 粘贴受支持的非 YouTube 视频或播放列表 URL。
4. 单击`Analyze`。
5. 选择格式并照常下载。
注意事项:
- 通用模式仅更改 YTSage 内的 URL 验证。您安装的 yt-dlp 版本仍必须支持目标站点。
- 某些站点需要 cookie、登录会话、代理或额外的 yt-dlp 参数,具体取决于提取器。
- 如果站点出现故障,请先从内置更新程序选项卡更新 yt-dlp,然后再报告问题。
</details>
<details>
<summary>🧰媒体和下载选项</summary>
- **字幕选项:** 过滤语言并将字幕嵌入到视频文件中
- **字幕合并:** 将字幕合并到视频文件中以获取硬编码字幕
- **保存描述:** 将视频描述保存为文本文件
- **保存缩略图:** 将视频缩略图保存为图像文件
- **嵌入章节:** 将章节标记嵌入为兼容视频播放器的元数据
- **删除赞助商片段:** 使用 SponsorBlock 从视频中删除赞助商片段
- **修剪视频:** 通过以 `HH:MM:SS` 格式指定时间范围,仅下载视频的特定部分
</details>
<details>
<summary>⚙️输出和文件设置</summary>
- **限速器:**限制下载速度,例如`500K`为500 KB/s
- **保存下载路径:** 保存默认下载路径以供将来下载。在**下载设置→下载路径**中可用。
- **输出文件名格式:** 使用`%(title)s`、`%(uploader)s`和`%(resolution)s`等变量自定义输出文件名格式。在**下载设置 → 文件名格式**中可用。- **强制输出格式:** 强制视频下载为特定容器格式,例如`mp4`、`webm`或`mkv`。在**下载设置 → 输出格式设置**中可用。
- **音频格式转换:** 将纯音频下载转换为首选格式,例如 `AAC`、`MP3`、`FLAC`、`WAV`、`Opus`、`M4A`、 `Vorbis`,或`Best`。在**下载设置 → 音频格式设置**中可用。
</details>
<details>
<summary>🌐接入和网络</summary>
- **使用 Cookie 登录:** 使用 Cookie 登录 YouTube 以访问私人内容。
使用方法:
1. **推荐:** 使用应用程序中的内置`Extract cookies from browser`选项,然后选择您的浏览器和可选的配置文件。
2. 或者,手动提取 cookie
a.使用类似 [cookie-editor](https://github.com/moustachauve/cookie-editor?tab=readme-ov-file) 的扩展程序从浏览器导出 cookie
b.以 Netscape 格式复制 cookie
c.创建一个名为 `cookies.txt` 的文件并将 cookie 粘贴到其中
d.在应用程序中选择`cookies.txt`文件
- **代理支持:** 使用代理服务器进行下载,例如`http://<proxy-server>:<port>`
- **通用模式:** 允许 YTSage 从 yt-dlp 支持的非 YouTube 网站分析和下载。从**下载设置 → 通用模式**启用它。
</details>
<details>
<summary>🛠️工具与维护</summary>
- **自定义命令:** 通过命令行参数访问高级 yt-dlp 功能
- **更新程序选项卡:** 从自定义选项中的一处管理内置更新工具:
- **yt-dlp 更新:** 检查更新并在稳定版和夜间发布频道之间切换
- **FFmpeg 版本检查器:** 检查您的 FFmpeg 版本并打开安装指南
- **Deno 更新:** 检查并更新 Deno 运行时
- **FFmpeg/yt-dlp/Deno 检测:** 从“关于”对话框中自动检测 FFmpeg、yt-dlp 和 Deno 路径和版本。
- **下载历史记录:** 通过“**历史记录**”按钮查看过去的下载,其中包含缩略图和状态。
</details>
<details>
<summary>🌍本地化</summary>
YTSage 支持**14 种语言**,可在全球范围内访问。从**自定义选项 → 语言**中选择您的首选语言。
### 支持的语言
|语言 |代码|语言 |代码|
|----------|------|----------|------|
| 🇺🇸 英语 | `en` | 🇪🇸 西班牙语 | `es` |
| 🇸🇦 阿拉伯语 | `ar` | 🇫🇷 法语 | `fr` |
| 🇩🇪 德语 | `de` | 🇮🇳 印地语 | `hi` |
| 🇮🇩 印度尼西亚语 | `id` | 🇮🇹 意大利语 | `it` |
| 🇯🇵 日语 | `ja` | 🇵🇱 波兰语 | `pl` |
| 🇧🇷 葡萄牙语 | `pt` | 🇷🇺 俄语 | `ru` |
| 🇹🇷 土耳其语 | `tr` | 🇨🇳 中文 | `zh` |
### 自述文件翻译
|语言 |文件 |语言 |文件 |
|----------|------|----------|------|
| 🇺🇸 英语 | [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) 部分以帮助我们添加更多语言!
</details>
<a id="troubleshooting"></a>
## 🛠️ 故障排除
<details>
<summary>点击查看常见问题及解决方案</summary>
- **格式表不显示:** 将 yt-dlp 更新到最新版本,并切换到 yt-dlp nightly。
- **下载失败:** 检查您的互联网连接并确保视频可用。
- **具体下载错误:**
- **私人视频:** 使用cookie身份验证访问私人内容。
- **有年龄限制的内容:** 登录 YouTube 帐户即可观看有年龄限制的视频。
- **地理封锁的视频:** 考虑使用 VPN 来绕过区域限制。
- **删除/删除的视频:** YouTube 上不再提供视频。
- **直播:** 直播无法下载;等待流结束。
- **网络错误:** 检查您的互联网连接并重试。
- **无效 URL:** 确保 URL 正确且来自受支持的平台。
- **高级内容:** 需要 YouTube Premium 会员资格。
- **版权封锁:** 由于版权限制,内容被封锁。
- **下载后分离视频和音频文件:** 当 FFmpeg 丢失或未检测到时会发生这种情况。 YTSage 需要 FFmpeg 来合并高质量的视频和音频流。
- **解决方案:** 确保 FFmpeg 已安装并可在系统路径中访问。对于 Windows 用户,最简单的选择是下载与 FFmpeg 捆绑在一起的 `YTSage-v<version>-ffmpeg.exe` 文件。
---
#### 🛡️ Windows Defender / 防病毒警告
某些防病毒软件可能会将“.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`
</details>
<a id="sponsor"></a>
## 💖 赞助商
如果 YTSage 可以节省您的时间,请考虑赞助该项目。赞助有助于涵盖开发时间、跨平台测试以及未来的改进。
- GitHub 赞助商:https://github.com/sponsors/oop7
- 赞助商链接也可以直接在应用程序内的“关于”对话框中找到。
[![Sponsor YTSage](https://img.shields.io/badge/Sponsor-YTSage-EA4AAA?style=for-the-badge&logo=github&logoColor=white)](https://github.com/sponsors/oop7)
<a id="contributing"></a>
## 👥 贡献
我们欢迎贡献!以下是您可以提供帮助的方法:
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.es.md`
- 通过编辑`ytsage/languages/<code>.json`保持应用程序字符串同步
- 如果您的语言缺失,请从`README.md`开始并创建`README.<code>.md`
<details>
<summary>📂项目结构</summary>
## 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
```
</details>
## ⭐️ 明星历史
<div align="center">
## 明星历史
<a href="https://www.star-history.com/#oop7/YTSage&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=oop7/YTSage&type=Date" />
</picture>
</a>
</div>
## 📜 许可证
该项目已获得 MIT 许可证 - 有关详细信息,请参阅[LICENSE](../LICENSE) 文件。
## 🙏致谢
<details>
<summary>显示致谢</summary>
<div align="center">
<p>衷心感谢所有通过提出改进建议或报告错误为该项目做出贡献的人。</p>
<table>
<tr class="section"><th colspan="2">核心组件</th></tr>
<tr>
<td width="35%"><a href="https://github.com/yt-dlp/yt-dlp">yt-dlp</a></td>
<td>下载引擎</td>
</tr>
<tr>
<td><a href="https://ffmpeg.org/">FFmpeg</a></td>
<td>媒体处理</td>
</tr>
<tr>
<td><a href="https://deno.com/">德诺</a></td>
<td>与 yt-dlp 集成的运行时</td>
</tr>
<tr class="section"><th colspan="2">库和框架</th></tr>
<tr>
<td><a href="https://wiki.qt.io/Qt_for_Python">PySide6</a></td>
<td>GUI框架</td>
</tr>
<tr>
<td><a href="https://python-pillow.org/">枕头</a></td>
<td>图像处理</td>
</tr>
<tr><td><a href="https://requests.readthedocs.io/">请求</a></td>
<td>HTTP 请求</td>
</tr>
<tr>
<td><a href="https://packaging.python.org/">包装</a></td>
<td>版本和包处理</td>
</tr>
<tr>
<td><a href="https://python-markdown.github.io/">降价</a></td>
<td>Markdown 渲染</td>
</tr>
<tr>
<td><a href="https://github.com/Delgan/loguru">loguru</a></td>
<td>记录</td>
</tr>
<tr class="section"><th colspan="2">资产和贡献者</th></tr>
<tr>
<td><a href="https://pixabay.com/sound-effects/new-notification-09-352705/">Universfield 的新通知 09</a></td>
<td>通知声音</td>
</tr>
<tr>
<td><a href="https://github.com/viru185">viru185</a></td>
<td>代码贡献者</td>
</tr>
</table>
</div>
</details>
## ⚠️ 免责声明
该工具仅供个人使用。请尊重 YouTube 的服务条款和内容创作者的权利。
---
<div align="center">
由[oop7](https://github.com/oop7)用❤️制作
</div>