تخطَّ إلى المحتوى الرئيسي
إصدار منشورإضافات المتصفح

Smart Media Downloader

إضافة Chrome تضم محرِّك تنزيل متعدِّد الاتصالات وقائمة انتظار دائمة ودعمًا للترجمات، مبنية لتعمل فقط حيث يكون التنزيل مُصرَّحًا به فعلًا، وترفض كل ما عدا ذلك صراحةً.

تتوفر نسخة قابلة للتنزيل لهذا المشروع.

المشكلة

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

المنهج

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

ما تم تنفيذه

  • محرِّك تنزيل متعدِّد الاتصالات بعدد اتصالات قابل للاختيار، والافتراضي ثمانية
  • فحص دعم النطاقات مع تراجع تلقائي إلى مسار واحد حين لا يدعم الخادم النطاقات
  • إعادة محاولة الكتل الفاشلة بتراجع أسّي
  • قائمة انتظار تدعم الإيقاف المؤقت والاستئناف والإلغاء وإعادة المحاولة والحذف وإعادة الترتيب
  • قائمة الانتظار محفوظة في IndexedDB، وتستمر بعد إغلاق النافذة وتُستأنف بعد إعادة تشغيل المتصفح
  • عرض تقدّم لكل اتصال إلى جانب النسبة الكلية والسرعة والوقت المتبقي المقدَّر
  • إدارة الترجمات مع اختيار لغات متعددة وتحويل محلي من WebVTT إلى SRT
  • جدول جودات يعرض فقط النسخ المتاحة بصورة مشروعة
  • رفض متعمَّد للبث المحمي بـ DRM والمشفَّر، يُكتشف عبر استخدام واجهة Encrypted Media Extensions
  • رفض متعمَّد للمشغّلات المقسَّمة التي لا تُظهر ملفًا قابلًا للتنزيل، مع عرض شرح بدل التنزيل
  • دعم Internet Archive عبر واجهة البيانات الوصفية العامة الموثَّقة ونقاط التنزيل الرسمية، مع رفض العناصر المقيَّدة بالإعارة
  • صلاحيات وصول اختيارية لكل نطاق على حدة، تُطلب عند إجراء المستخدم فقط
  • تحقق من الروابط يرفض البروتوكولات غير HTTP وبيانات الاعتماد المضمَّنة والأهداف على الشبكات الخاصة
  • مجموعات اختبارات آلية تغطي منطق المحرِّك ومحوِّل الأرشيف وتحويل الترجمات والتحقق من الروابط

الحالة الحالية والقيود

  • يحتاج الوضع متعدِّد الاتصالات أن يُعلن الخادم عن دعم نطاقات البايتات؛ وإلا تراجع تلقائيًا إلى مسار واحد.
  • لا توجد نسخ جودة تتجاوز الملف الأصلي إلا حيث يعرضها محوِّل مصدر — فلا يُجرى أي تحويل أو تغيير للحاوية.
  • لا يُحتفظ بتقدّم الكتل الجزئية، لذا تبدأ الكتلة المتوقفة من بدايتها لا من آخر بايت وصل.
  • لا يمكنه التنزيل من المشغّلات المقسَّمة أو الوسائط المحمية بحكم التصميم. وهذا قيد متعمَّد لا ثغرة تُغلق لاحقًا.
  • لا يوجد ملف ترخيص منشور.
  • لا يوجد سير عمل CI، وأحد أعداد الاختبارات الموثَّقة قديم مقارنة بملفات الاختبار الحالية.

التقنيات

  • Chrome Manifest V3
  • TypeScript
  • React
  • Tailwind CSS
  • Vite
  • IndexedDB
  • Vitest

الروابط


الحالة
إصدار منشور
آخر مراجعة
2026-10-15

هل تواجه مشكلة مشابهة؟

إن كان هذا قريبًا من شيء تتعامل معه، صِف لنا حالتك وسنقول لك إن كانت مناسبة لنا أم لا.