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 يتم إضافتها إليه، لذلك يعد هذا "تسجيلًا مشتركًا". الخيارات المتاحة: اسم المستخدم: اسم المستخدم لأغراض المصادقة. كلمة المرور: كلمة المرور لأغراض المصادقة. كلمة مرور الفيديو: كلمة المرور للوصول إلى مقطع فيديو. ap_mso: معرف مشغل نظام Adobe Pass المتعدد. ap_username : حساب مشغل النظام المتعدد 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 كـ JSON.dump_single_json: فرض طباعة info_dict لقائمة التشغيل بأكملها (أو الفيديو) كخط JSON واحد.force_write_download_archive: فرض كتابة أرشيف التنزيل بغض النظر عن "skip_download" أو "simulate". المحاكاة: لا تقم بتنزيل ملفات الفيديو إذا لم يتم تعيينها (أو لا شيء)، قم بالمحاكاة فقط في حالة استخدام ترجمات القوائم أو تنسيقات القوائم أو تنسيقات الصور المصغرة: كود تنسيق الفيديو. راجع "تحديد التنسيق" لمزيد من التفاصيل. يمكنك أيضًا تمرير وظيفة "ctx" كوسيطة وإرجاع التنسيقات المراد تنزيلها. للتنفيذallow_unplayable_formats: السماح باستخراج وتنزيل التنسيقات غير القابلة للتشغيل.ignore_no_formats_error: تجاهل خطأ "لا توجد تنسيقات فيديو" مفيد لاستخراج البيانات الوصفية حتى لو لم يكن الفيديو متاحًا فعليًا للتنزيل (التجريبي)format_sort: قائمة الحقول التي يمكن الفرز من خلالها. تنسيقات الفيديو. راجع "تنسيقات الفرز" لمزيد من التفاصيل.format_sort_force: فرض تنسيقات_الفرز المحددة. راجع "تنسيقات الفرز" لمزيد من التفاصيل.prefer_free_formats: ما إذا كنت تفضل تنسيقات الفيديو ذات الحاويات المجانية على التنسيقات غير المجانية ذات الجودة نفسها.allow_multiple_video_streams: السماح بدمج تدفقات فيديو متعددة في fileallow_multiple_audio_streams واحد: السماح بدمج تدفقات صوتية متعددة في filecheck_formats واحد سواء كان سيتم اختبار ما إذا كانت التنسيقات قابلة للتنزيل أم لا (حدد الكل)، أو خطأ (حدد لا شيء). المسارات "محددة" (تحقق من التنسيقات المحددة)، أو لا شيء (حدد فقط إذا طلبها المستخرج): قاموس مسارات الإخراج هي المفاتيح "الصفحة الرئيسية" و"temp" ومفاتيح OUTTMPL_TYPES (في utils/_utils.py)outtmpl. : قاموس قوالب أسماء المخرجات. المفاتيح المسموح بها هي "افتراضية" ومفاتيح OUTTMPL_TYPES (في utils/_utils.py) للتوافق مع youtube-dl، يمكن أيضًا استخدام سلسلة واحدةouttmpl_na_placeholder: العنصر النائب لحقول التعريف غير المتاحة.restrictfilenames. : لا تسمح بـ "&" والمسافات في أسماء الملفاتtrim_file_name: الحد من طول اسم الملف (تم استبعاد الامتداد) أسماء ملفات windows: فرض أن تكون أسماء الملفات متوافقة مع Windows، تجاهل الأخطاء: لا تتوقف عند أخطاء التنزيل/المعالجة اللاحقة، يمكن أن يكون "التنزيل_فقط" لتجاهل أخطاء التنزيل فقط الافتراضي هو "only_download" لـ CLI، ولكنه خطأ لـ APIskip_playlist_after_errors: عدد حالات الفشل المسموح بها حتى يتم تخطي بقية قائمة التشغيلallowed_extractors: قائمة التعابير المنطقية للمطابقة مع أسماء المستخرج المسموح بها بالكتابة فوق: الكتابة فوق جميع ملفات الفيديو والبيانات الوصفية إذا كان True، فاستبدلها فقط. ملفات غير فيديو إذا لم يكن هناك ولا تكتب فوق أي ملف إذا كانت Falseplaylist_items: مؤشرات محددة لقائمة التشغيل المطلوب تنزيلها.playlistrandom: قم بتنزيل عناصر قائمة التشغيل بترتيب عشوائي.lazy_playlist: قم بمعالجة إدخالات قائمة التشغيل فور استلامها.matchtitle: قم بتنزيل العناوين المطابقة فقط.rejecttitle : رفض التنزيلات لمطابقة العناوين.logger: تسجيل الرسائل إلى مثيل Logger.logtostderr: اطبع كل شيء إلى stderr بدلاً من stdout.consoletitle: عرض التقدم في شريط عنوان نافذة وحدة التحكم.writedescription: اكتب وصف الفيديو إلى ملف .description filewriteinfojson: اكتب وصف الفيديو إلى ملف .info.jsonclean_infojson: إزالة البيانات التعريفية الداخلية من infojsongetcomments: استخراج تعليقات الفيديو لن تتم كتابتها على القرص ما لم يتم إعطاء writeinfojson أيضًا تعليقات توضيحية: اكتب التعليقات التوضيحية للفيديو إلى ملف .annotations.xml، اكتب الصورة المصغرة: اكتب الصورة المصغرة. image إلى fileallow_playlist_files: سواء كنت تريد كتابة وصف قوائم التشغيل أو infojson وما إلى ذلك أيضًا على القرص عند استخدام خيارات "الكتابة*" write_all_thumbnails: اكتب جميع تنسيقات الصور المصغرة إلى fileswritelink: اكتب ملف اختصار إنترنت، اعتمادًا على النظام الأساسي الحالي (.url/. webloc /.desktop)writeurllink: اكتب ملف اختصار إنترنت Windows (.url)writewebloclink: اكتب ملف اختصار إنترنت macOS (.webloc)writedesktoplink: اكتب ملف اختصار إنترنت Linux (.desktop) يكتب ترجمات: اكتب ترجمات الفيديو إلى ملفwriteautomaticsub : اكتب الترجمات التي تم إنشاؤها تلقائيًا في قائمة الملفات: ترجمات: يسرد جميع الترجمات المتاحة لتنسيق ترجمات الفيديو: رمز التنسيق للترجمات المصاحبة: قائمة لغات الترجمات المراد تنزيلها (يمكن أن تحتوي القائمة على "الكل" للإشارة إليها). يمكن إضافة كل الترجمات المتوفرة ببادئة "-" لاستبعادها من اللغات المطلوبة، على سبيل المثال ['all', '-live_chat']keepvideo: احتفظ بملف الفيديو بعد فترة المعالجة اللاحقة: كائن utils.DateRange. ، قم بالتنزيل فقط إذا كان تاريخ التحميل في النطاق.skip_download: تخطي التنزيل الفعلي لملف الفيديو: موقع ملفات ذاكرة التخزين المؤقت في نظام الملفات خطأ لتعطيل ذاكرة التخزين المؤقت لنظام الملفات. noplaylist: قم بتنزيل فيديو واحد بدلاً من قائمة التشغيل إذا كان هناك شك. age_limit: عدد صحيح يمثل عمر المستخدم بالسنوات يتم تخطي مقاطع الفيديو غير المناسبة للعمر المحدد.min_views: عدد صحيح يمثل الحد الأدنى لعدد المشاهدات