اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

توجد عدة مشاكل في حزمة pytube لذا صحيح يمكنك الاستعانة بحزمة pytubefix  تحميل حزمة pytubefix لكنها نفسها تحتوي على مشكلة أخرى وهي أنه لا يمكنك تنزيل فيديوهات عالية الجودة دون فقدان الصوت، ولكن يمكنك تنزيل الفيديو بشكل منفصل عن الصوت ثم تشغيلهما معا لاحقا وهذه الشيفرة تحقّق ذات الغرض:

from pytubefix import YouTube
import os


def sanitize_filename(filename):
    return "".join(c if c.isalnum() or c in " ._-" else "_" for c in filename)


def audio(thelink, path):
    try:
        yt = YouTube(thelink)
        print('Title:', yt.title)
        print('Views:', yt.views)
        yd = yt.streams.get_audio_only()
        yt_title = sanitize_filename(yt.title)
        yd.download(output_path=path, filename=f'{yt_title}.mp3')
        print('Finished downloading audio')
    except Exception as e:
        print(f"Error: {e}")


def high(thelink, path):
    try:
        yt = YouTube(thelink)
        print('Title:', yt.title)
        print('Views:', yt.views)
        yt_title = sanitize_filename(yt.title)

        video_stream = yt.streams.filter().order_by("resolution").last()
        audio_stream = yt.streams.get_audio_only()

        video_filename = f'{yt_title}.mp4'
        audio_filename = f'{yt_title}.mp3'

        video_stream.download(output_path=path, filename=video_filename)
        audio_stream.download(output_path=path, filename=audio_filename)

        print('Finished downloading high resolution video and audio')

    except Exception as e:
        print(f"Error: {e}")


def low(thelink, path):
    try:
        yt = YouTube(thelink)
        print('Title:', yt.title)
        print('Views:', yt.views)
        yd = yt.streams.get_lowest_resolution()
        yt_title = sanitize_filename(yt.title)
        yd.download(output_path=path, filename=f'{yt_title}.mp4')
        print('Finished downloading low resolution video')
    except Exception as e:
        print(f"Error: {e}")


link_inp = input("Please Enter the link of the video: ")
path_inp = input("Please Enter the download path: ")
menu_inp = input('Select:\n1- Audio\n2- Highest Resolution\n3- Lowest Resolution\n')

if menu_inp == '1':
    audio(link_inp, path_inp)
elif menu_inp == '2':
    high(link_inp, path_inp)
elif menu_inp == '3':
    low(link_inp, path_inp)
else:
    print('Invalid input')

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...