✈

هل تريد تصميم موقع لتحميل فيديوهات السوشيال ميديا مجانًا 100% بدون سطر كود؟ 😱

·

صممت موقعًا لتحميل الفيديوهات باستخدام Python وFlask | شرح REDX VIDEO DOWNLOADER

السلام عليكم أصدقائي الكرام. اليوم أشارككم مشروعًا قمت بالعمل عليه لتجربة فكرة إنشاء واجهة ويب بسيطة تساعد المستخدم على إدارة عملية تنزيل الفيديوهات التي يملكها أو المسموح له بتنزيلها من خلال مكان واحد.

جاءتني فكرة المشروع عندما تذكرت تطبيقات تنزيل الفيديو القديمة التي كانت توفر واجهة سهلة للمستخدم بدل التعامل مع الأوامر والبرامج المختلفة، وسألت نفسي: لماذا لا أحاول إنشاء مشروع مشابه باستخدام Python ولكن على شكل واجهة ويب يمكن فتحها مباشرة من المتصفح؟

ومن هنا بدأت فكرة REDX VIDEO DOWNLOADER، وهو مشروع يجمع بين Python وFlask وyt-dlp وFFmpeg لتوفير واجهة رسومية تساعد على إدارة عمليات التنزيل بدل كتابة أوامر yt-dlp يدويًا في كل مرة.

تنبيه مهم: المشروع مخصص لتنزيل المحتوى الذي تملكه أو لديك تصريح أو حق قانوني في تنزيله. يجب احترام حقوق النشر وشروط استخدام كل منصة، ولا يعني دعم أداة ما لموقع معين أن تنزيل أي محتوى من ذلك الموقع مسموح به.

مشروع REDX VIDEO DOWNLOADER لتحميل الفيديوهات باستخدام Python وFlask

ما هو REDX VIDEO DOWNLOADER؟

REDX VIDEO DOWNLOADER هو مشروع Python يوفر واجهة ويب يمكن من خلالها إدخال رابط فيديو واختيار الخيارات المتاحة ثم إرسال عملية التنزيل إلى الجزء الخلفي من البرنامج.

بدل أن يحتاج المستخدم إلى التعامل مباشرة مع أوامر Terminal الخاصة بأدوات التنزيل، تعمل واجهة الويب كطبقة أسهل بين المستخدم والأدوات الموجودة في الخلفية.

الفكرة هنا ليست اختراع بروتوكول جديد لتنزيل الفيديو، وإنما بناء واجهة وتجربة استخدام حول أدوات مفتوحة المصدر، وعلى رأسها yt-dlp.

هل المشروع تم إنشاؤه بدون كتابة كود؟

العنوان القديم للمشروع كان يستخدم عبارة "بدون سطر كود"، لكن التعبير الأدق هو أنك تستطيع تشغيل المشروع واستخدامه دون الحاجة إلى كتابة الموقع من الصفر.

المشروع نفسه مكتوب باستخدام Python وتقنيات ويب، وبالتالي توجد برمجة فعلية في الخلفية، لكن المستخدم النهائي يستطيع تحميل المشروع الجاهز وتثبيت المتطلبات وتشغيله دون الحاجة إلى برمجة جميع وظائفه بنفسه.

وهذا يجعل المشروع مناسبًا أيضًا للمبتدئين الذين يريدون رؤية مثال عملي على تحويل سكربت Python إلى واجهة ويب.

التقنيات المستخدمة في المشروع

1- Python

Python هي اللغة الأساسية المستخدمة في المشروع، وهي المسؤولة عن منطق البرنامج وربط الأجزاء المختلفة مع بعضها.

2- Flask

Flask هو Web Framework خفيف للغة Python، ويستخدم هنا لإنشاء السيرفر المحلي واستقبال الطلبات القادمة من واجهة الموقع وإرجاع النتائج إلى المتصفح.

بمعنى أبسط: Flask هو الجزء الذي يسمح لنا بتحويل البرنامج من مجرد سكربت يعمل داخل Terminal إلى تطبيق يمكن التفاعل معه من خلال المتصفح.

3- yt-dlp

yt-dlp هو الجزء الأساسي المسؤول عن التعامل مع روابط الفيديو واستخراج الصيغ والمعلومات المتاحة وتنفيذ عمليات التنزيل التي يدعمها.

المشروع الرسمي لـ yt-dlp يصف الأداة بأنها أداة غنية بالمميزات لتنزيل الصوت والفيديو وتحتوي على Extractors لعدد كبير جدًا من المواقع.

لكن هناك نقطة مهمة: لا يعني وجود منصة في قائمة المواقع المدعومة أن عملها مضمون بصورة دائمة، لأن منصات الفيديو تغير مواقعها وواجهاتها باستمرار وقد يؤدي ذلك إلى توقف بعض Extractors مؤقتًا حتى يتم تحديث yt-dlp.

4- FFmpeg

FFmpeg مهم في معالجة ملفات الوسائط، ويحتاجه yt-dlp في عدد من العمليات، ومن أهمها دمج مسار الفيديو مع مسار الصوت عندما توفر المنصة أفضل جودة في مسارين منفصلين.

وهذا يفسر مشكلة شائعة قد يواجهها المستخدم: أحيانًا يتم تنزيل فيديو أو صوت بصورة منفصلة إذا لم يكن FFmpeg متوفرًا أو لم تتم عملية الدمج بالشكل المطلوب.

كيف يعمل الموقع؟

الفكرة الأساسية بسيطة.

بعد تشغيل المشروع يبدأ Flask Server محليًا، وبعد ذلك يمكن فتح عنوان السيرفر من المتصفح للوصول إلى واجهة REDX VIDEO DOWNLOADER.

من الواجهة يضع المستخدم رابط الفيديو ويختار الخيارات التي يوفرها المشروع، ثم ترسل الواجهة الطلب إلى الجزء الخلفي Backend لمعالجته.

بعد ذلك يتم التعامل مع الرابط وإرسال مهمة التنزيل إلى الجزء المسؤول عن معالجة عمليات التنزيل بدل تنفيذ كل شيء داخل واجهة المستخدم نفسها.

بهذه الطريقة تصبح الواجهة وسيلة للتحكم في العملية ومتابعتها، بينما تتم الأعمال الفعلية بواسطة Python والأدوات الموجودة في الخلفية.

واجهة REDX VIDEO DOWNLOADER

حرصت أثناء تصميم المشروع على أن تكون الواجهة بسيطة، لأن الهدف الأساسي هو ألا يحتاج المستخدم إلى معرفة جميع أوامر yt-dlp حتى يستطيع استخدام المشروع.

وهذا شكل واجهة الموقع أثناء التشغيل على الهاتف:

واجهة موقع REDX VIDEO DOWNLOADER على الهاتف

كيف يتعرف المشروع على رابط الفيديو؟

المشروع يتعامل مع روابط منصات معروفة مثل:
  • YouTube
  • Instagram
  • TikTok
  • Facebook
كما يمكن لـyt-dlp التعامل مع عدد كبير من المواقع الأخرى من خلال Extractors المخصصة أو Generic Extractor عندما يكون الرابط مدعومًا.

لكن يجب التأكيد مرة أخرى أن توافق أي منصة قد يتغير مع الوقت، ولذلك تحديث yt-dlp باستمرار مهم جدًا عند ظهور مشكلة في استخراج الفيديو.

لماذا قد يتوقف موقع كان يعمل سابقًا؟

هذه نقطة مهمة جدًا لمن يريد استخدام المشروع لفترة طويلة.

REDX VIDEO DOWNLOADER يعتمد في جزء كبير من عملية استخراج الفيديو على yt-dlp، ومنصات التواصل نفسها تتغير باستمرار.

لذلك إذا قامت منصة بتغيير طريقة عرض الفيديو أو نظام التحقق أو JavaScript أو API المستخدمة داخليًا، فقد يتوقف استخراج الفيديو مؤقتًا حتى يتم تحديث الأداة.

ولهذا فإن أول شيء أقوم به عند ظهور مشكلة غير متوقعة هو التأكد من استخدام إصدار حديث من yt-dlp.

لماذا FFmpeg مهم للحصول على فيديو يعمل بصورة صحيحة؟

في بعض منصات الفيديو، خصوصًا عند التعامل مع الجودات العالية، قد يكون أفضل مسار للفيديو منفصلًا عن أفضل مسار للصوت.

يقوم yt-dlp عند توفر الأدوات اللازمة بتنزيل المسارين ثم استخدام FFmpeg لدمجهما في ملف نهائي مناسب.

لذلك وجود FFmpeg مهم جدًا في المشروع، وغيابه قد يؤدي إلى عدم توفر بعض عمليات الدمج أو المعالجة التي يحتاجها التنزيل.

طريقة تشغيل REDX VIDEO DOWNLOADER على Android باستخدام Termux

هذه الخطوات مخصصة لتشغيل المشروع على Termux. الأوامر التالية لا تكتب برنامجًا جديدًا، وإنما تثبت البيئة والمتطلبات اللازمة لتشغيل المشروع الموجود بالفعل.

الخطوة 1: تحميل المشروع

يمكنك الوصول إلى المشروع من مستودع GitHub التالي:


الخطوة 2: السماح لـTermux بالوصول إلى مساحة التخزين

استخدم الأمر:

termux-setup-storage

سيطلب Android منك السماح لـTermux بالوصول إلى الملفات المطلوبة. راجع الصلاحية ثم وافق عليها إذا كنت تريد حفظ الملفات في مساحة تخزين الهاتف.

الخطوة 3: تحديث حزم Termux

استخدم:

pkg update && pkg upgrade

الخطوة 4: تثبيت Python وFFmpeg

استخدم:

pkg install python ffmpeg

Python مطلوب لتشغيل السكربت، بينما FFmpeg مهم لعمليات معالجة ودمج ملفات الفيديو والصوت.

الخطوة 5: تثبيت مكتبات Python

بعد تثبيت Python استخدم:

python -m pip install -U flask flask-cors requests "yt-dlp[default]"

هذه الخطوة تثبت المكتبات التي يحتاج إليها المشروع، بما فيها Flask وyt-dlp.

الخطوة 6: الدخول إلى مجلد المشروع

بعد تنزيل المشروع، انتقل باستخدام الأمر cd إلى المجلد الذي يحتوي على ملف Python الخاص بالمشروع.

الخطوة 7: تشغيل المشروع

إذا كان اسم ملف التشغيل في الإصدار الذي قمت بتنزيله هو REDX_ANDROID_COMPATIBLE.py، استخدم:

python REDX_ANDROID_COMPATIBLE.py

بعد التشغيل سيظهر في Terminal عنوان السيرفر المحلي الذي يستخدمه المشروع.

افتح العنوان الظاهر أمامك في متصفح الهاتف لتظهر واجهة REDX VIDEO DOWNLOADER.

ملاحظة مهمة حول YouTube

وجود دعم تقني لرابط YouTube داخل yt-dlp لا يعني أن كل فيديو على YouTube مسموح بتنزيله أو إعادة استخدامه.

YouTube يوفر رسميًا إمكانية تنزيل الفيديوهات التي قمت أنت برفعها، كما يوفر طرقًا رسمية للمشاهدة دون اتصال في الحالات والبلدان والحسابات المؤهلة.

لذلك استخدم المشروع مع الفيديوهات التي تملكها أو لديك تصريح بتنزيلها، ولا تعِد نشر محتوى الآخرين دون الحقوق اللازمة.

هل يمكن تحويل المشروع إلى موقع عام على الإنترنت؟

تقنيًا يمكن تطوير تطبيق Flask ونشره على خادم مناسب، لكن هناك فرقًا مهمًا بين تشغيل المشروع محليًا على جهازك وبين إطلاق خدمة عامة يستخدمها أشخاص آخرون.

سيرفر التطوير المدمج في Flask مخصص للاختبار والتطوير المحلي، وتوضح وثائق Flask الرسمية أنه غير مصمم ليكون خادم Production من ناحية الأمان والاستقرار والأداء.

لذلك إذا قررت مستقبلًا تحويل المشروع إلى خدمة عامة، يجب إعداد بيئة Production مناسبة وإضافة الحماية وإدارة الموارد والملفات والطلبات ومعدلات الاستخدام، بالإضافة إلى مراجعة شروط المنصات وحقوق المحتوى.

ماذا عن Telegram داخل المشروع؟

يمكن توسيع المشاريع المبنية بهذه الطريقة بإضافة وظائف أخرى، مثل إرسال إشعار إلى صاحب المشروع عند اكتمال مهمة معينة أو إنشاء واجهة أخرى للتعامل مع النظام.

لكن أي Bot Token أو بيانات اعتماد خاصة بالمشروع يجب ألا يتم نشرها داخل مستودع GitHub عام.

إذا كان المشروع يستخدم Token أو مفتاح API أو أي بيانات سرية، فمن الأفضل تخزينها في متغيرات البيئة Environment Variables أو ملف إعدادات غير مرفوع إلى المستودع العام.

أخطاء شائعة أثناء تشغيل المشروع

ModuleNotFoundError: No module named flask_cors

هذا الخطأ يعني عادة أن مكتبة Flask-CORS غير مثبتة في بيئة Python التي تستخدمها لتشغيل المشروع.

تأكد من تنفيذ خطوة تثبيت المكتبات باستخدام نفس Python الذي ستستخدمه لتشغيل السكربت.

الفيديو تم تنزيله ولكن لا يعمل

إذا اكتملت عملية التنزيل ولكن الملف الناتج لا يعمل بالشكل المتوقع، فمن النقاط التي تستحق المراجعة وجود FFmpeg وإصدار yt-dlp والصيغة التي تم اختيارها.

بعض الجودات تعتمد على مسارات منفصلة للصوت والفيديو، ولذلك فإن عملية الدمج النهائية مهمة للحصول على ملف سليم ومتوافق.

رابط كان يعمل ثم توقف

قم أولًا بتحديث yt-dlp، لأن منصات الفيديو تتغير باستمرار وقد تحتاج الأداة إلى تحديث Extractor الخاص بالمنصة.

السيرفر يعمل لكن الصفحة لا تظهر

راجع عنوان السيرفر والمنفذ الظاهر في Terminal، وتأكد من أن البرنامج ما زال يعمل وأن المنفذ ليس مستخدمًا بواسطة برنامج آخر.

فيديو شرح تشغيل المشروع

في الفيديو التالي أوضح طريقة تشغيل المشروع والتعامل مع واجهة الموقع بصورة عملية:



ما الذي تعلمته من بناء المشروع؟

بالنسبة لي، القيمة الحقيقية للمشروع ليست فقط تنزيل الفيديو.

المشروع مثال عملي على كيفية ربط أكثر من تقنية معًا: Python لتنفيذ المنطق، وFlask لإنشاء واجهة ويب، وyt-dlp للتعامل مع مصادر الفيديو المدعومة، وFFmpeg لمعالجة ملفات الوسائط.

كما يوضح المشروع كيف يمكن تحويل فكرة تبدأ كسكربت بسيط إلى تطبيق بواجهة يمكن للمستخدم التعامل معها من الهاتف أو الكمبيوتر.

أفكار لتطوير REDX VIDEO DOWNLOADER مستقبلًا

يمكن تطوير المشروع مستقبلًا بإضافة خصائص مثل عرض تقدم التنزيل بصورة أوضح، وتحسين إدارة الأخطاء، وتنظيم الملفات التي تم تنزيلها، وتحسين توافق الواجهة مع الهاتف، وإضافة صفحة تعرض حالة المهام السابقة.

وإذا تم تحويله إلى خدمة عامة، فستصبح هناك متطلبات إضافية مثل تحديد حجم وعدد المهام، ومنع إساءة الاستخدام، وتأمين المدخلات، وتنظيف الملفات المؤقتة، وإدارة الموارد بصورة صحيحة.

الخلاصة

REDX VIDEO DOWNLOADER هو تجربة عملية لبناء واجهة ويب باستخدام Python وFlask وربطها بأدوات مفتوحة المصدر مثل yt-dlp وFFmpeg.

المشروع يجعل التعامل مع عملية التنزيل أسهل للمستخدم الذي لا يريد كتابة أوامر طويلة في Terminal في كل مرة، وفي الوقت نفسه يقدم مثالًا عمليًا للمبتدئين على طريقة عمل تطبيقات الويب المبنية باستخدام Python.

لكن من المهم معرفة أن نجاح عملية التنزيل يعتمد على دعم yt-dlp للموقع في ذلك الوقت، وأن المنصات تتغير باستمرار، ولذلك قد تحتاج إلى تحديث الأداة عند ظهور المشكلات.

وأخيرًا، استخدم المشروع فقط لتنزيل المحتوى الذي تملكه أو لديك الحق في تنزيله، واحترم حقوق النشر وشروط استخدام المنصات.

المصادر والمراجع






> RATE_THIS_POST
★ ★ ★ ★ ★
-.- (0 تقييم)
> COMMENTS.exe

Comments