---
## ❓ لماذا YTSage؟
تم تصميم YTSage للمستخدمين الذين يريدون **أداة تحميل يوتيوب بسيطة لكن قوية**. على عكس الأدوات الأخرى، فإنه يوفر:
- واجهة PySide6 عصرية ونظيفة
- تحميل بنقرة واحدة للفيديو والصوت والترجمات
- ميزات متقدمة مثل SponsorBlock، دمج الترجمات، واختيار قوائم التشغيل
- وضع عام (Generic Mode) اختياري للمواقع التي يدعمها yt-dlp بخلاف يوتيوب
- دعم منصات متعددة وتثبيت سهل
## ✨ المميزات
| الميزات الأساسية | الميزات المتقدمة | ميزات إضافية |
|-----------------------------------|-----------------------------------------|------------------------------------|
| 🎥 جدول الصيغ | 🚫 تكامل SponsorBlock | 🎞️ عرض FPS/HDR |
| 🎵 استخراج الصوت | 📝 اختيار ودمج الترجمات | 🔄 تحديث تلقائي لـ yt-dlp |
| ✨ واجهة مستخدم بسيطة | 💾 حفظ الوصف والصورة المصغرة | 🛠️ اكتشاف FFmpeg/yt-dlp/Deno |
| 📋 دعم ومحدد قوائم التشغيل | 🚀 محدد السرعة | ⚙️ أوامر مخصصة |
| 📑 دمج الفصول | ✂️ قص أجزاء الفيديو | 🍪 تسجيل الدخول بالكوكيز |
| 📜 سجل التحميلات | 🔄 اختيار قناة الإصدار | 🌐 دعم البروكسي |
| 🎚️ تحويل صيغ الصوت | 🎬 إعدادات صيغ الفيديو | 🆙 تبويب تحديث مدمج |
| 🌍 الوضع العام | 🔊 تطبيع الصوت (EBU R128) | 🌍 دعم 14 لغة |
| 💾 تصدير قوائم التشغيل | ⚙️ الجودة والترجمات الافتراضية | |
## 🚀 التثبيت
### ⚡ التثبيت السريع (موصى به)
تثبيت YTSage عبر PyPI:
```bash
pip install ytsage
```
🔄 تحديث نسخة مثبتة
```bash
pip install --upgrade ytsage
```
ثم قم بتشغيل التطبيق:
```bash
ytsage
```
### 📦 حزم جاهزة للتشغيل
> [👉 تحميل أحدث إصدار](https://github.com/oop7/YTSage/releases/latest)
#### 🪟 Windows
| الصيغة | الوصف |
|--------|-------------|
|  | مثبت قياسي |
|  | مع FFmpeg مدمج |
|  | نسخة محمولة، لا تحتاج لتثبيت |
|  | محمولة مع FFmpeg، مضغوطة |
🛠️ خطوات التثبيت
1. **مثبت EXE (`.exe`)**: انقر نقرًا مزدوجًا على الملف واتبع معالج التثبيت.
2. **النسخة المحمولة (`.zip`)**: استخرج الملف في أي مكان وشغل `ytsage.exe`.
3. **FFmpeg المدمج**: اختر النسخة التي تحتوي على FFmpeg إذا لم يكن مثبتًا على نظامك.
#### 🐧 Linux
| الصيغة | الوصف |
|--------|-------------|
|  | حزمة Debian |
|  | AppImage، محمولة |
|  | حزمة RPM |
|  | Flatpak Bundle |
🛠️ خطوات التثبيت
- **DEB (`.deb`)**:
```bash
sudo dpkg -i ytsage_*.deb
sudo apt-get install -f # لإصلاح الاعتمادات الناقصة إذا لزم الأمر
```
- **RPM (`.rpm`)**:
```bash
sudo rpm -i ytsage-*.rpm
```
- **AppImage (`.AppImage`)**:
```bash
chmod +x YTSage-*.AppImage
./YTSage-*.AppImage
```
- **Flatpak**: اتبع التعليمات على Flathub أو شغل:
```bash
flatpak install flathub io.github.oop7.ytsage
```
#### 🍎 macOS
| الصيغة | الوصف |
|--------|-------------|
|  | تطبيق مضغوط لـ Apple Silicon |
|  | صورة قرص لـ Apple Silicon |
🛠️ خطوات التثبيت
- **مثبت DMG (`.dmg`)**: انقر نقرًا مزدوجًا لفتح القرص، ثم اسحب `YTSage.app` إلى مجلد Applications.
- **تطبيق مضغوط (`.zip`)**: استخرج الملف وانقل `YTSage.app` إلى مجلد Applications.
*ملاحظة: إذا واجهت خطأ "التطبيق تالف"، راجع قسم استكشاف الأخطاء لنظام macOS أدناه.*
---
💻 التثبيت اليدوي من المصدر
### 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
```
## 📸 لقطات الشاشة
إعدادات التحميل
تحميل قوائم التشغيل
صيغة الصوت
خيارات مخصصة
## 📖 الاستخدام
🎯 الاستخدام الأساسي
1. **شغل YTSage**
2. **الصق رابط يوتيوب** (أو استخدم زر "Paste URL")
3. **اضغط على "Analyze"**
4. **اختر الصيغة:**
- `Video` للتحميلات المرئية
- `Audio Only` لاستخراج الصوت فقط
5. **اختر الخيارات:**
- تفعيل الترجمات واختيار اللغة
- تفعيل دمج الترجمات
- حفظ الصورة المصغرة
- حذف المقاطع الإعلانية (Sponsor segments)
- حفظ الوصف
- دمج الفصول (Chapters)
6. **اختر مجلد الحفظ**
7. **اضغط على "Download"**
> 💡 مجلد التحميل الافتراضي هو مجلد "Downloads" للمستخدم.
📋 تحميل قائمة تشغيل (Playlist)
1. **الصق رابط قائمة التشغيل**
2. **اضغط على "Analyze"**
3. **اختر الفيديوهات من محدد القائمة (اختياري، يتم اختيار الكل تلقائيًا)**
4. **اختر الصيغة/الجودة المطلوبة**
5. **اضغط على "Download"**
> 💡 التطبيق يتعامل مع طابور التحميل تلقائيًا، ويمكنك تصدير مدخلات القائمة كملفات `.txt` أو `.csv` أو `.m3u` أو `.json`.
🌍 الوضع العام للمواقع غير يوتيوب
استخدم الوضع العام (Generic Mode) عندما تريد أن يقبل YTSage روابط من المواقع التي يدعمها yt-dlp، مثل Dailymotion و CBC Gem و TikTok وغيرها.
كيفية الاستخدام:
1. افتح `Download Settings`.
2. فعل `Generic Mode`.
3. الصق رابط فيديو أو قائمة تشغيل مدعومة غير يوتيوب.
4. اضغط على `Analyze`.
5. اختر الصيغة وحمل كالمعتاد.
ملاحظات:
- الوضع العام يغير فقط التحقق من الرابط داخل YTSage. يجب أن يكون الموقع مدعومًا من نسخة yt-dlp المثبتة لديك.
- بعض المواقع تتطلب كوكيز، تسجيل دخول، بروكسي أو وسائط yt-dlp إضافية حسب نوع الموقع.
- إذا فشل موقع ما، حدث yt-dlp أولاً من تبويب التحديث المدمج قبل الإبلاغ عن المشكلة.
🧰 خيارات الميديا والتحميل
- **خيارات الترجمة:** تصفية اللغات وتضمين الترجمات في ملف الفيديو.
- **دمج الترجمات:** دمج الترجمات داخل ملف الفيديو لتكون ترجمة مدمجة (Hardcoded).
- **حفظ الوصف:** حفظ وصف الفيديو كملف نصي.
- **حفظ الصورة المصغرة:** حفظ صورة الفيديو كملف صورة.
- **دمج الفصول:** تضمين علامات الفصول كبيانات وصفية لمشغلات الفيديو المتوافقة.
- **حذف مقاطع الرعاة:** حذف الأجزاء الإعلانية من الفيديو باستخدام SponsorBlock.
- **قص الفيديو:** تحميل أجزاء محددة فقط من الفيديو عن طريق تحديد أوقات البداية والنهاية بصيغة `HH:MM:SS`.
⚙️ إعدادات الإخراج والملفات
- **محدد السرعة:** تحديد سرعة التحميل، مثلاً `500K` لـ 500 كيلوبايت/ثانية.
- **حفظ مسار التحميل:** يحفظ مسار التحميل الافتراضي للتحميلات المستقبلية. متاح في **Download Settings → Download Path**.
- **دقة الفيديو الافتراضية:** حدد دقة الفيديو المفضلة للاختيار التلقائي (مثل 1080p أو 720p). متاح في **Download Settings → Default Video Resolution**.
- **لغات الترجمة الافتراضية:** حدد لغات الترجمة للاختيار التلقائي (مفصولة بفواصل، مثل `ar,en`). متاح في **Download Settings → Default Subtitle Languages**.
- **صيغة اسم الملف:** تخصيص صيغة اسم الملف باستخدام متغيرات مثل `%(title)s` و `%(uploader)s` و `%(playlist_index)s` و `%(resolution)s`. متاح في **Download Settings → Filename Format**.
- **فرض صيغة الإخراج:** فرض تحميل الفيديو بصيغة محددة مثل `mp4` أو `webm` أو `mkv`. متاح في **Download Settings → Output Format Settings**.
- **تحويل صيغ الصوت:** تحويل تحميلات الصوت فقط للصيغ المفضلة مثل `AAC` أو `MP3` أو `FLAC` أو `WAV` أو `Opus` أو `M4A` أو `Vorbis` أو `Best`. متاح في **Download Settings → Audio Format Settings**.
- **تطبيع الصوت:** توحيد مستوى الصوت لتحميلات الصوت فقط باستخدام EBU R128.
- **الاتصالات المتزامنة:** زيادة سرعة التحميل بشكل كبير عن طريق تحميل الملف في أجزاء متعددة في وقت واحد. متاح في **Download Settings → General → Concurrent Connections** (القيمة الافتراضية 1، الموصى به 8-10 لتجنب حظر IP).
🌐 الوصول والشبكة
- **تسجيل الدخول بالكوكيز:** سجل الدخول ليوتيوب باستخدام الكوكيز للوصول للمحتوى الخاص.
كيفية الاستخدام:
1. **موصى به:** استخدم خيار `Extract cookies from browser` المدمج في التطبيق، ثم اختر المتصفح والملف الشخصي.
2. بدلاً من ذلك، استخرج الكوكيز يدويًا:
أ. صدر الكوكيز من متصفحك باستخدام إضافة مثل [cookie-editor](https://github.com/moustachauve/cookie-editor)
ب. انسخ الكوكيز بصيغة Netscape
ج. أنشئ ملفًا باسم `cookies.txt` والصق الكوكيز فيه
د. اختر ملف `cookies.txt` في التطبيق
- **دعم البروكسي:** استخدم خادم بروكسي للتحميلات، مثلاً `http://:`
- **الوضع العام:** يسمح لـ YTSage بتحليل والتحميل من المواقع غير يوتيوب التي يدعمها yt-dlp. فعله من **Download Settings → Generic Mode**.
🛠️ الأدوات والصيانة
- **أوامر مخصصة:** الوصول لميزات yt-dlp المتقدمة عبر وسائط موجه الأوامر.
- **تبويب التحديث:** إدارة أدوات التحديث من مكان واحد في الخيارات المخصصة:
- **تحديثات yt-dlp:** التحقق من التحديثات والتبديل بين القناة المستقرة (Stable) والليلية (Nightly).
- **فاحص نسخة FFmpeg:** التحقق من نسخة FFmpeg وعرض أدلة التثبيت.
- **تحديثات Deno:** التحقق وتحديث محرك Deno.
- **اكتشاف FFmpeg/yt-dlp/Deno:** يكتشف تلقائيًا المسارات والنسخ لـ FFmpeg و yt-dlp و Deno من نافذة "About".
- **سجل التحميلات:** عرض التحميلات السابقة مع الصور المصغرة والحالة من زر **History**.
🌍 الترجمة
يدعم YTSage **14 لغة** للوصول العالمي. اختر لغتك المفضلة من **Custom Options → Language**.
### اللغات المدعومة
| اللغة | الرمز | اللغة | الرمز |
|----------|------|----------|------|
| 🇺🇸 الإنجليزية | `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) لمساعدتنا في إضافة المزيد من اللغات!
## 🛠️ استكشاف الأخطاء
اضغط لعرض المشاكل الشائعة وحلولها
- **جدول الصيغ لا يظهر:** حدث yt-dlp لأحدث نسخة وانتقل للقناة الليلية (Nightly).
- **فشل التحميل:** تحقق من اتصال الإنترنت وتأكد أن الفيديو متاح.
- **أخطاء تحميل محددة:**
- **فيديوهات خاصة:** استخدم الكوكيز للوصول للمحتوى الخاص.
- **محتوى مقيد بالعمر:** سجل دخولك ليوتيوب لمشاهدة الفيديوهات المقيدة.
- **فيديوهات محظورة جغرافيًا:** استخدم VPN لتجاوز القيود الإقليمية.
- **فيديوهات محذوفة:** الفيديو لم يعد متاحًا على يوتيوب.
- **البث المباشر (Live):** لا يمكن تحميل البث المباشر أثناء عرضه؛ انتظر حتى ينتهي.
- **أخطاء الشبكة:** تحقق من اتصالك وحاول مرة أخرى.
- **روابط غير صالحة:** تأكد من صحة الرابط وأنه من منصة مدعومة.
- **محتوى Premium:** يتطلب اشتراك يوتيوب بريميوم.
- **حظر حقوق الملكية:** المحتوى محظور بسبب قيود حقوق النشر.
- **ملفات الفيديو والصوت منفصلة بعد التحميل:** يحدث هذا عند فقدان FFmpeg أو عدم اكتشافه. يتطلب YTSage برنامج FFmpeg لدمج مسارات الفيديو والصوت عالية الجودة.
- **الحل:** تأكد من تثبيت FFmpeg وإضافته لـ PATH النظام. لمستخدمي ويندوز، الخيار الأسهل هو تحميل ملف `YTSage-v-ffmpeg.exe` الذي يأتي مع FFmpeg مدمجًا.
---
#### 🛡️ تنبيه Windows Defender / الأنتي فيروس
قد تصنف بعض برامج الحماية ملفات `.exe` كبرمجيات ضارة (False Positive). هذا **عيب معروف** في التطبيقات المحزمة.
**لماذا يحدث هذا:**
- أساليب الكشف في مضادات الفيروسات قد تعتبر الملفات المحزمة مشبوهة خطأً.
**البدائل الآمنة:**
- ✅ **استخدم تثبيت pip:** `pip install ytsage` (موصى به)
- ✅ **البناء من المصدر:** باتباع هذا [الدليل](.github/CI_CD_README.md)
- ✅ **إضافة التطبيق للقائمة البيضاء** في برنامج الحماية لديك.
#### 🍎 macOS: "The app is damaged and can’t be opened"
إذا واجهت هذا الخطأ على macOS Sonoma أو أحدث، يجب عليك إزالة سمة الحجر الصحي.
1. **افتح الـ Terminal** (يمكنك البحث عنه عبر Spotlight).
2. **اكتب الأمر التالي** ولكن **لا تضغط** Enter بعد. تأكد من وجود مسافة في النهاية:
```bash
xattr -d com.apple.quarantine
```
3. **اسحب ملف `YTSage.app`** من نافذة Finder وأفلته في نافذة الـ Terminal. سيقوم بلصق المسار الصحيح تلقائيًا.
4. **اضغط Enter** لتنفيذ الأمر.
5. **حاول فتح YTSage.app مجددًا.** يجب أن يعمل الآن بشكل صحيح.
---
#### **مواقع الإعدادات (للمتقدمين)**
- **Windows:** `%LOCALAPPDATA%\YTSage`
- **macOS:** `~/Library/Application Support/YTSage`
- **Linux:** `~/.local/share/YTSage`
## 💖 الدعم
إذا وفر لك YTSage الوقت، يرجى التفكير في دعم المشروع. يساعد الدعم في تغطية وقت التطوير، الاختبار على المنصات المختلفة، والتحسينات المستقبلية.
- GitHub Sponsors: https://github.com/sponsors/oop7
- رابط الدعم متاح أيضًا داخل التطبيق عبر نافذة "About".
[](https://github.com/sponsors/oop7)
## 👥 المساهمة
نرحب بالمساهمات! إليك كيف يمكنك المساعدة:
1. 🍴 عمل Fork للمستودع
2. 🌿 إنشاء فرع جديد للميزة:
```bash
git checkout -b feature/AmazingFeature
```
3. 💾 حفظ التغييرات:
```bash
git commit -m 'Add some AmazingFeature'
```
4. 📤 رفع التغييرات:
```bash
git push origin feature/AmazingFeature
```
5. 🔄 فتح Pull Request
### 🌍 المساهمة في الترجمة
- حدث ملف README المترجم (مثل `readme-translations/README.ar.md`)
- حافظ على تزامن نصوص التطبيق بتعديل `ytsage/languages/.json`
- إذا كانت لغتك غير موجودة، ابدأ من `README.md` وأنشئ ملفًا جديدًا باسم `README..md`
📂 هيكل المشروع
## YTSage - هيكل المشروع
يوضح هذا المستند التنظيم الهيكلي لمجلدات YTSage.
### 📁 هيكل المشروع
```
YTSage/
├── 📁 .github/ # إعدادات GitHub
│ ├── 📁 ISSUE_TEMPLATE/ # نماذج التذاكر
│ │ └── 🐛-bug-report.md # نموذج تقرير الأخطاء
│ ├─── 📁 workflows/ # سير عمل GitHub Actions
│ │ ├── build-linux.yml # بناء نسخة لينكس
│ │ ├── build-macos.yml # بناء نسخة ماك
│ │ │── build-windows.yml # بناء نسخة ويندوز
| | └── release-all.yml # سير عمل الإصدارات
│ └── 📄 CI_CD_README.md # توثيق CI/CD
├── 📁 branding/ # أصول العلامة التجارية (لقطات شاشة، SVG)
│ ├── 📁 icons/ # أيقونات التطبيق
│ ├── 📁 screenshots/ # لقطات شاشة للتوثيق
│ └── 📁 svg/ # أصول بصيغة SVG
├── 📄 LICENSE # ملف الرخصة
├── 📄 pyproject.toml # بيانات المشروع والاعتمادات
├── 📄 README.md # التوثيق الرئيسي
├── 📄 requirements.txt # اعتمادات بايثون (للمطورين)
└── 📁 ytsage/ # مجلد الأكواد المصدرية
├── 📁 assets/ # الأصول اللازمة للتشغيل
│ ├── 📁 Icon/ # أيقونات التطبيق
│ └── 📁 sound/ # ملفات صوتية
├── 📁 languages/ # ملفات الترجمة
│ ├── 📄 ar.json # الترجمة العربية
│ ├── 📄 de.json # الترجمة الألمانية
│ ├── 📄 en.json # الترجمة الإنجليزية
│ └── ... # لغات أخرى
├── 📁 core/ # المنطق البرمجي الأساسي
│ ├── 📄 __init__.py
│ ├── 📄 ytsage_deno.py # تكامل Deno
│ ├── 📄 ytsage_downloader.py # وظائف التحميل
│ ├── 📄 ytsage_ffmpeg.py # تكامل FFmpeg
│ ├── 📄 ytsage_utils.py # وظائف مساعدة
│ └── 📄 ytsage_yt_dlp.py # تكامل yt-dlp
├── 📁 gui/ # مكونات واجهة المستخدم
│ ├── 📄 __init__.py
│ ├── 📄 ytsage_gui_main.py # نافذة التطبيق الرئيسية
│ └── 📁 ytsage_gui_dialogs/ # كلاسات النوافذ الحوارية
├── 📁 utils/ # موديلات مساعدة
│ ├── 📄 __init__.py
│ ├── 📄 ytsage_config_manager.py # مدير الإعدادات
│ └── 📄 ytsage_logger.py # أداة تسجيل السجلات
├── 📄 __init__.py # نقطة دخول الحزمة
└── 📄 main.py # سكربت التشغيل الرئيسي
```
## ⭐️ سجل النجوم
## Star History
## 📜 الرخصة
هذا المشروع مرخص بموجب رخصة MIT - راجع ملف [LICENSE](LICENSE) لمزيد من التفاصيل.
## 🙏 شكر وتقدير
عرض الشكر والتقدير
شكر كبير لكل من ساهم في هذا المشروع بفتح تذكرة لاقتراح تحسين أو الإبلاغ عن خطأ.