VideoDownloader هو برنامج تنزيل فيديو تم تطويره استنادًا إلى مكتبة yt-dlp
python.
yt-dlp عبارة عن أداة تنزيل صوت/فيديو غنية بالميزات تدعم آلاف مواقع الويب. هذا المشروع عبارة عن شوكة لـ youtube-dl استنادًا إلى youtube-dlc البائد الآن.
يدعم yt-dlp بشكل أساسي جميع مواقع الفيديو الشائعة، وهو برنامج سطر أوامر يتميز بوظائف قوية جدًا ومعلمات غنية. تم تطوير هذا المشروع استنادًا إلى مكتبة yt-dlp (yt_dlp) بيثون، ويستخدم مكتبة tkinter لإنشاء تطبيق واجهة المستخدم الرسومية لتنزيل الفيديو، مما يلغي الحاجة إلى إدخال أوامر طويلة في سطر الأوامر ويمنحك تجربة تنزيل سهلة. .
يتم استخدام بيئة Windows افتراضيًا، وأنا أستخدم pycharm+Anaconda:
بيثون>=3.8
يُستخدم ffmpeg لدمج الصوت والفيديو تلقائيًا بعد التنزيل. لاحظ أنه الملف الثنائي القابل للتنفيذ لـ ffmpeg، وليس مكتبة python. تذكر إضافته إلى متغير البيئة، مثل: D:ffmpegbin
(1) استنساخ هذا المشروع
git clone [email protected]:CQUPTLei/VideoDownloader.git
(2) إنشاء بيئة افتراضية جديدة للمشروع، مثال:
conda create -n videodownload python=3.12
(3) استخدم النقطة لتثبيت مكتبة yt_dlp:
كوندا تفعيل تنزيل الفيديو تثبيت النقطة yt-dlp
في نظام التشغيل Linux، خذ Ubuntu24.04 كمثال، واستخدم vim للتحرير، والبيئة الافتراضية python venv (يمكنك أيضًا استخدام conda):
(1) استنساخ المشروع محليا
git clone [email protected]:CQUPTLei/VideoDownloader.git
(2) تثبيت بيثون venv
ملائمة تثبيت python3.12-venv
(3) خلق بيئة افتراضية
python3 -m venv تنزيل
(4) تفعيل البيئة الافتراضية
تنزيل المصدر/بن/تنشيط
(5) تثبيت المكتبات ذات الصلة
تثبيت النقطة yt-dlp سودو ملائمة تثبيت python3-tk pip install Prettytable# للتغليف، استخدم pip install pyinstaller
(6) منح main.py أذونات قابلة للتنفيذ
سودو شمود 775 main.py
(7) التنفيذ (لاحظ المسار)
بيثون3 main.py
التعديلات المحتملة: إذا كنت تستخدم للحصول على ملفات تعريف الارتباط من المتصفح، فقد تحتاج إلى تعديل المسار، وقد يحتاج موقع التخزين الافتراضي إلى تعديل.
ويندوز:
تثبيت مكتبة pyinstaller:
نقطة تثبيت pyinstaller
مثال على أمر التعبئة، انتبه إلى كل مسار، ويتم تنفيذ التعليمات البرمجية التالية في الدليل الذي يوجد به main.py:
pyinstaller -F --paths=D:anacondaenvsvideodownloadLibsite-packages --python=D:anacondaenvsvideodownloadpythonw.exe --noconsole --icon=icon1.ico --name=Downloader main.py
أوبونتو:
مثال بسيط:
pyinstaller -F --paths=/home/moon/VideoDownloader/downloader/lib/python3.12/site-packages --python=/home/moon/VideoDownloader/downloader/bin/python312 --noconsole --icon=icon1.ico --name=Downloader main.py
ماك:
إضافة معالجة وتنزيل قوائم الفيديو؛
تنفيذ مهام تنزيل متعددة في نفس الوقت؛
دعم المزيد من المعلمات المخصصة؛
...
لا يوجد دليل مرجعي خاص لـ yt_dlp على pypi. تتم كتابة المعلمات المتاحة لبرنامج سطر الأوامر yt-dlp على كل من github وpypi، ولكن يمكنك قراءة التنفيذ المحدد لـ yt_dlp: YoutubeDL.py
للحصول على المعلمات والمعاني المتاحة. .
فيما يلي بشكل أساسي المعلمات التي تدعمها طريقة yt_dlp.YoutubeDL(download_opts)
.
تقبل كائنات YoutubeDL الكثير من المعلمات حتى لا تشبع مُنشئ الكائن بالوسائط، فهو يتلقى قاموسًا من الخيارات بدلاً من ذلك، وتتوفر هذه الخيارات من خلال سمة المعلمات التي يستخدمها InfoExtractors تضاف إليها، لذلك هذا هو "التسجيل المتبادل". الخيارات المتاحة: اسم المستخدم: اسم المستخدم لأغراض المصادقة. كلمة المرور: كلمة المرور لأغراض المصادقة. كلمة المرور: كلمة المرور ل الوصول إلى video.ap_mso: معرف مشغل النظام المتعدد Adobe Pass.ap_username: اسم المستخدم لحساب مشغل النظام المتعدد. ap_password: كلمة مرور حساب مشغل النظام المتعدد.usenetrc: استخدم netrc للمصادقة بدلاً من ذلك.netrc_location: موقع ملف netrc الافتراضي ~/.netrc.netrc_cmd: استخدم أمر Shell للحصول على بيانات الاعتماد المطوّلة: اطبع معلومات إضافية إلى stdout.quiet: لا تطبع الرسائل إلى stdout.no_warnings: لا تطبع أي شيء للتحذيرات.forceprint: إملاء مع المفاتيح عند تعيينه إلى قائمة القوالب للطباعة على stdout. المفاتيح المسموح بها هي الفيديو أو أي من العناصر في utils.POSTPROCESS_WHEN من أجل التوافق، يتم أيضًا قبول قائمة واحدة print_to_file : تم تعيين إملاء بمفاتيح عندما (مثل forceprint) إلى قائمة من المجموعات باستخدام (القالب، اسم الملف)forcejson: فرض طباعة info_dict as JSON.dump_single_json: فرض طباعة info_dict لقائمة التشغيل بأكملها (أو الفيديو) كسطر JSON واحد.force_write_download_archive: فرض كتابة أرشيف التنزيل بغض النظر عن "skip_download" أو "simulate". المحاكاة: لا تقم بتنزيل ملفات الفيديو إذا لم يتم تعيينها (. أو لا شيء)، قم بالمحاكاة فقط في حالة استخدام تنسيق القوائم أو تنسيقات القائمة أو list_thumbnails: رمز تنسيق الفيديو، راجع "FORMAT SELECTION" لمزيد من التفاصيل. يمكنك أيضًا تمرير وظيفة. تأخذ الوظيفة "ctx" كوسيطة وترجع التنسيقات المراد تنزيلها. راجع "build_format_selector" للحصول على تنفيذallow_unplayable_formats: السماح باستخراج التنسيقات غير القابلة للتشغيل وتنزيلها.ignore_no_formats_error: تجاهل "لا" خطأ في تنسيقات الفيديو". مفيد لاستخراج البيانات الوصفية حتى إذا لم يكن الفيديو متاحًا فعليًا للتنزيل (التجريبي)format_sort: A قائمة الحقول التي يتم من خلالها فرز تنسيقات الفيديو. راجع "تنسيقات الفرز" لمزيد من التفاصيل.format_sort_force: قم بفرض تنسيق معين، راجع "تنسيقات الفرز" لمزيد من التفاصيل.prefer_free_formats: ما إذا كنت تريد تفضيل تنسيقات الفيديو ذات الحاويات المجانية على غير المجانية. تلك التي لها نفس الجودة.allow_multiple_video_streams: السماح بدمج تدفقات فيديو متعددة في ملف واحدallow_multiple_audio_streams: السماح بدمج تدفقات صوتية متعددة في filecheck_formats واحد لاختبار ما إذا كانت التنسيقات قابلة للتنزيل أم لا، يمكن أن يكون صحيحًا (حدد الكل)، أو خطأ (حدد لا شيء)، المسارات "محددة" (تحقق من التنسيقات المحددة)، أو لا شيء (حدد فقط إذا طلبها المستخرج): قاموس مسارات الإخراج هي المفاتيح "الصفحة الرئيسية" و"temp" ومفاتيح OUTTMPL_TYPES (في utils/_utils.py)outtmpl. : قاموس قوالب أسماء المخرجات المفاتيح المسموح بها هي "افتراضية" ومفاتيح OUTTMPL_TYPES (في utils/_utils.py من أجل التوافق). باستخدام youtube-dl، يمكن أيضًا استخدام سلسلة واحدة outtmpl_na_placeholder: العنصر النائب لحقول التعريف غير المتوفرة. أسماء الملفات المقيدة: لا تسمح بـ "&" والمسافات في أسماء الملفاتtrim_file_name: الحد من طول اسم الملف (تم استبعاد الامتداد)windowsfilenames: فرض أن تكون أسماء الملفات متوافقة مع windowsتجاهل الأخطاء : لا تتوقف عند أخطاء التنزيل/المعالجة اللاحقة، ويمكن أن يتم "التنزيل فقط" لتجاهل أخطاء التنزيل فقط "only_download" لـ CLI، ولكن خطأ لـ APIskip_playlist_after_errors: عدد حالات الفشل المسموح بها حتى يتم تخطي بقية قائمة التشغيلallowed_extractors: قائمة التعابير المنطقية للمطابقة مع أسماء المستخرج المسموح بها بالكتابة فوق: الكتابة فوق جميع ملفات الفيديو والبيانات الوصفية إذا كان صحيحًا، فاستبدل فقط الملفات غير الفيديو الملفات في حالة عدم وجودها ولا تقم بالكتابة فوق أي ملف إذا كانت Falseplaylist_items: مؤشرات محددة لقائمة التشغيل المراد تنزيلها.playlistrandom: تنزيل عناصر قائمة التشغيل بترتيب عشوائي.lazy_playlist: معالجة إدخالات قائمة التشغيل فور استلامها.matchtitle: تنزيل العناوين المطابقة فقط.rejecttitle: رفض التنزيلات للعناوين المطابقة.logger: تسجيل الرسائل إلى مثيل Logger.logtostderr: اطبع كل شيء إلى stderr بدلاً من stdout.consoletitle: عرض التقدم في شريط عنوان نافذة وحدة التحكم.writedescription: اكتب وصف الفيديو إلى ملف وصف.writeinfojson: اكتب وصف الفيديو إلى ملف .info.json fileclean_infojson: إزالة البيانات التعريفية الداخلية من infojsongetcomments: استخراج تعليقات الفيديو لن تتم كتابتها على القرص ما لم يتم إعطاء writeinfojson أيضًا تعليقات توضيحية: اكتب التعليقات التوضيحية للفيديو إلى ملف .annotations.xmlwritethumbnail: اكتب الصورة المصغرة إلى fileallow_playlist_files: ما إذا كنت تريد كتابة وصف قوائم التشغيل أو infojson وما إلى ذلك أيضًا على القرص عند استخدام "الكتابة*" optionswrite_all_thumbnails: اكتب جميع تنسيقات الصور المصغرة إلى الملفات.writelink: اكتب ملف اختصار إنترنت، اعتمادًا على النظام الأساسي الحالي (.url/.webloc/.desktop)writeurllink: اكتب ملف اختصار إنترنت Windows (.url)writewebloclink: اكتب ملف اختصار إنترنت macOS (.webloc)writedesktoplink: اكتب ملف اختصار إنترنت Linux (.desktop) يكتب الترجمات: اكتب ترجمات الفيديو إلى ملفwriteautomaticsub: اكتب الترجمات التي تم إنشاؤها تلقائيًا في قائمة الملفات: ترجمات: يسرد جميع الترجمات المتاحة لتنسيق ترجمات الفيديو: رمز التنسيق للترجمات المصاحبة: قائمة لغات الترجمات المراد تنزيلها (يمكن أن تحتوي القائمة على "الكل" للإشارة إلى الكل). الترجمات المتوفرة يمكن أن تكون مسبوقة بـ "-" لاستبعادها من اللغات المطلوبة، على سبيل المثال ['all', '-live_chat']keepvideo: احتفظ بملف الفيديو بعد فترة ما بعد المعالجة: كائن utils.DateRange، قم بالتنزيل فقط إذا كان upload_date موجودًا في النطاق.skip_download: تخطي التنزيل الفعلي لملف الفيديو cachedir: موقع ملفات ذاكرة التخزين المؤقت في نظام الملفات خطأ لتعطيل ذاكرة التخزين المؤقت لنظام الملفات .noplaylist: قم بتنزيل فيديو واحد بدلاً من قائمة التشغيل في حالة الشك.age_limit: عدد صحيح يمثل عمر المستخدم بالسنوات، مقاطع الفيديو غير المناسبة للعمر المحدد Skiped.min_views: عدد صحيح يمثل الحد الأدنى من عدد المشاهدات</span