FA-TOOLS — Header Component

کدهای پایتون برای دانلود خودکار ویدیو از یوتیوب

رفیق برنامه‌نویس، تا حالا شده کلی محتوای آموزشی یا سرگرمی رو از یوتیوب بخوای دانلود کنی اما از گشتن دنبال دانلودرهای آنلاین و زدن دکمه‌های تکراری خسته شده باشی؟ خبر خوب اینه که پایتون، با قدرت فوق‌العاده‌ش، یه راه حل شیک و حرفه‌ای برای این موضوع داره. با چند خط کد ساده، می‌تونی یه سیستم کاملاً اتوماتیک برای دانلود ویدیوها، پلی‌لیست‌ها و حتی فقط صوت ویدیوها بسازی. این دیگه مثل یه جعبه ابزار جادویی می‌مونه که تمام نیازهای دانلودیت رو پوشش می‌ده. اگه دنبال ابزارهای پایتونی بیشتر یا کدهای آماده‌ای هستی که زندگیتو راحت‌تر کنه، حتماً یه سری به فروشگاه ابزارهای ما بزن؛ کلی اسنیپت و کد باحال اونجا منتظرته! برای مشاوره یا پشتیبانی هم می‌تونی همین حالا با ما تماس بگیری: 09202232789

✨ راهنمای سریع: دانلود خودکار ویدیو از یوتیوب با پایتون ✨

کدهای پایتون برای دانلود خودکار ویدیو از یوتیوب — تصویر 1

🚀 گام ۱: نصب yt-dlp

با دستور pip install yt-dlp کتابخانه رو نصب کن.

🎯 گام ۲: کد پایه

از yt_dlp.YoutubeDL برای دانلود استفاده کن.

⚙️ گام ۳: گزینه‌ها (Options)

کیفیت، فرمت، مسیر ذخیره رو با دیکشنری ydl_opts تنظیم کن.

🔄 گام ۴: پلی‌لیست و خطا

با حلقه‌ها پلی‌لیست دانلود کن و با try-except خطاها رو مدیریت کن.

هدف: دانلود هوشمند، سریع و بدون دردسر ویدیوهای یوتیوب!

چرا دانلود خودکار ویدیو از یوتیوب؟

کدهای پایتون برای دانلود خودکار ویدیو از یوتیوب — تصویر 2

حتماً برات پیش اومده که بخوای یه ویدیو آموزشی رو آفلاین ببینی، یا یه پلی‌لیست موسیقی رو برای سفرت دانلود کنی. شاید هم داری روی یه پروژه کار می‌کنی و نیاز به آرشیو کردن یه سری ویدیوهای مرجع داری. روش‌های دستی دانلود از یوتیوب (مثل استفاده از سایت‌های واسط یا افزونه‌های مرورگر) معمولاً دردسرهای خودشون رو دارن: از محدودیت‌های کیفیت و فرمت گرفته تا تبلیغات مزاحم و سرعت پایین. اینجا پایتون میاد وسط و با قدرت خودش، تمام این مشکلات رو حل می‌کنه. با اسکریپت‌های پایتون، نه تنها می‌تونی ویدیوها رو با نهایت سرعت و کیفیت دانلود کنی، بلکه می‌تونی فرایند رو به شکل کامل اتوماتیک و شخصی‌سازی شده دربیاری. این یعنی آزادی عمل مطلق!

پیش‌نیازها: ابزارها و نصب

کدهای پایتون برای دانلود خودکار ویدیو از یوتیوب — تصویر 3

قبل از اینکه بریم سراغ کدهای جذابمون، باید مطمئن بشیم که ابزارهای لازم رو روی سیستممون داریم. نگران نباش، کار سختی نیست و خیلی سریع انجام می‌شه.

۱. نصب پایتون

اگه هنوز پایتون رو نصب نکردی، از سایت رسمی python.org آخرین نسخه رو دانلود و نصب کن. حواست باشه که موقع نصب، حتماً تیک “Add Python to PATH” رو بزنی تا بتونی از هر جایی به پایتون دسترسی داشته باشی. اگه نیاز به کدهای پایتون بیشتری داری، می‌تونی به اینجا سر بزنی.

۲. نصب کتابخانه yt-dlp

yt-dlp یه چنگال (fork) از youtube-dl هست که سریع‌تر به‌روزرسانی می‌شه و امکانت بیشتری رو ارائه می‌ده. پیشنهاد من اینه که از همین استفاده کنی. برای نصبش، فقط کافیه ترمینال یا Command Prompt رو باز کنی و دستور زیر رو بزنی:

pip install yt-dlp

۳. (اختیاری) نصب FFmpeg

برای دانلود ویدیوهایی که کیفیت‌های مختلف صدا و تصویر رو جداگانه ارائه می‌دن (مثل بیشتر ویدیوهای با کیفیت بالا در یوتیوب) و بعد ترکیبشون کنه، یا برای تبدیل ویدیوها به فرمت‌های دیگه (مثلاً استخراج MP3)، به FFmpeg نیاز داری. اگه می‌خوای دانلودهای حرفه‌ای و تبدیل فرمت داشته باشی، حتماً نصبش کن. برای دانلود و نصب FFmpeg، به سایت رسمیش ffmpeg.org مراجعه کن و بعد از دانلود، فایل‌های اجرایی رو در مسیری قرار بده که توی PATH سیستم عاملت باشه.

قدم به قدم: دانلود یک ویدیو با پایتون

حالا که همه چی آمادست، بریم سراغ اولین اسکریپت دانلودمون. این ساده‌ترین حالت دانلود یک ویدیو از یوتیوب هست.


import yt_dlp

# لینک ویدیویی که می‌خوای دانلود کنی
video_url = 'https://www.youtube.com/watch?v=dQw4w9WgXcQ' # یه لینک تستی، خودت عوضش کن!

# گزینه‌های دانلود (می‌تونی خالی هم بذاری برای حالت پیش‌فرض)
ydl_opts = {}

# ایجاد یک نمونه از YoutubeDL و شروع دانلود
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
    ydl.download([video_url])

print("دانلود ویدیو با موفقیت انجام شد!")

این کد یه شیء از کلاس YoutubeDL می‌سازه و با متد download() ویدیوی مورد نظر رو دانلود می‌کنه. ویدیوی دانلود شده معمولاً توی همون مسیری که اسکریپت رو اجرا کردی، ذخیره می‌شه.

سفارشی‌سازی دانلود: کیفیت، فرمت و مکان ذخیره

اینجاست که قدرت واقعی yt-dlp رو می‌بینی! می‌تونی تمام جنبه‌های دانلود رو کنترل کنی. این کار با دستکاری دیکشنری ydl_opts انجام می‌شه.

۱. تعیین کیفیت و فرمت

برای انتخاب کیفیت خاص، از کلید 'format' استفاده می‌کنیم. می‌تونی فرمت‌های مختلف رو با استفاده از دستور yt-dlp -F [URL] ببینی. رایج‌ترینش اینه که بهترین کیفیت رو با 'bestvideo+bestaudio/best' بگیری.


import yt_dlp

video_url = 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'

ydl_opts = {
    'format': 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best', # بهترین کیفیت MP4
    'outtmpl': '%(title)s.%(ext)s', # نام فایل خروجی: عنوان ویدیو.پسوند
}

with yt_dlp.YoutubeDL(ydl_opts) as ydl:
    ydl.download([video_url])

print("دانلود با کیفیت و فرمت دلخواه انجام شد!")

۲. تغییر مسیر ذخیره‌سازی

می‌تونی با outtmpl علاوه بر نام فایل، مسیر ذخیره‌سازی رو هم مشخص کنی.


import yt_dlp
import os

video_url = 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'
download_path = './دانلودهای_من/' # مسیر مورد نظر برای ذخیره

# مطمئن می‌شیم که مسیر وجود داره، اگه نه، ساخته می‌شه
if not os.path.exists(download_path):
    os.makedirs(download_path)

ydl_opts = {
    'format': 'best',
    'outtmpl': os.path.join(download_path, '%(title)s.%(ext)s'),
}

with yt_dlp.YoutubeDL(ydl_opts) as ydl:
    ydl.download([video_url])

print(f"ویدیو در مسیر {download_path} ذخیره شد!")

دانلود پلی‌لیست‌ها و چند ویدیو به صورت همزمان

یکی از خفن‌ترین قابلیت‌های yt-dlp، قابلیت دانلود کل پلی‌لیست‌ها با یک دستور هست. این واقعاً زمانت رو نجات می‌ده.

۱. دانلود یک پلی‌لیست کامل

برای دانلود یک پلی‌لیست، کافیه لینک پلی‌لیست رو به download() بدی.


import yt_dlp

playlist_url = 'https://www.youtube.com/playlist?list=PLHz_2H7h0o7m0t2Wb3Y4W1eN5fB2E7X9Z' # لینک یک پلی‌لیست نمونه

ydl_opts = {
    'format': 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]',
    'outtmpl': './پلی‌لیست_من/%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s',
    'ignoreerrors': True, # اگه یه ویدیو مشکل داشت، دانلود بقیه ادامه پیدا کنه
}

with yt_dlp.YoutubeDL(ydl_opts) as ydl:
    ydl.download([playlist_url])

print("دانلود پلی‌لیست با موفقیت انجام شد!")

توی outtmpl از متغیرهای مخصوص پلی‌لیست مثل %(playlist)s و %(playlist_index)s استفاده کردم تا ویدیوها منظم‌تر ذخیره بشن.

۲. دانلود چندین ویدیو از یک لیست

اگه چند تا لینک ویدیوی جدا داری که می‌خوای پشت سر هم دانلود بشن، می‌تونی همشون رو توی یک لیست بذاری و به تابع download() بدی.


import yt_dlp

video_urls = [
    'https://www.youtube.com/watch?v=video1_id',
    'https://www.youtube.com/watch?v=video2_id',
    'https://www.youtube.com/watch?v=video3_id',
]

ydl_opts = {
    'format': 'best',
    'outtmpl': './چند_ویدیو/%(title)s.%(ext)s',
}

with yt_dlp.YoutubeDL(ydl_opts) as ydl:
    ydl.download(video_urls) # اینجا لیست لینک‌ها رو پاس می‌دیم

print("دانلود چندین ویدیو با موفقیت انجام شد!")

استخراج اطلاعات ویدیو بدون دانلود

گاهی فقط نیاز داری اطلاعات یه ویدیو رو بدونی، بدون اینکه بخوای دانلودش کنی. مثلاً عنوان، مدت زمان، توضیحات، یا کیفیت‌های موجود. yt-dlp این قابلیت رو هم بهت می‌ده.


import yt_dlp
import json

video_url = 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'

ydl_opts = {
    'quiet': True, # از نمایش خروجی‌های اضافی جلوگیری می‌کنه
    'noplaylist': True, # مطمئن می‌شه که فقط اطلاعات ویدیو رو می‌گیریم، نه کل پلی‌لیست
    'simulate': True, # فقط شبیه‌سازی دانلود، بدون دانلود واقعی
    'skip_download': True, # دانلود رو رد می‌کنه
    'force_generic_extractor': True, # گاهی لازمه
}

try:
    with yt_dlp.YoutubeDL(ydl_opts) as ydl:
        info_dict = ydl.extract_info(video_url, download=False) # download=False برای عدم دانلود
        
        print(f"عنوان: {info_dict['title']}")
        print(f"سازنده: {info_dict['uploader']}")
        print(f"مدت زمان: {info_dict['duration_string']}")
        print(f"لینک Thumbnail: {info_dict['thumbnail']}")
        print(f"ویو: {info_dict['view_count']}")
        print("تمام اطلاعات:")
        print(json.dumps(info_dict, indent=2, ensure_ascii=False)) # نمایش کل دیکشنری اطلاعات

except Exception as e:
    print(f"خطا در استخراج اطلاعات: {e}")

دانلود فقط صوت ویدیو (MP3)

اگه فقط موزیک یا پادکست رو از یه ویدیو می‌خوای، می‌تونی yt-dlp رو تنظیم کنی که فقط فایل صوتی رو دانلود کنه و به MP3 تبدیلش کنه. این کار با استفاده از postprocessors انجام می‌شه و نیاز به نصب FFmpeg داره.


import yt_dlp

video_url = 'https://www.youtube.com/watch?v=dQw4w9WgXcQ' # یا هر موزیک ویدیو دیگه

ydl_opts = {
    'format': 'bestaudio/best', # فقط بهترین کیفیت صدا رو بگیر
    'postprocessors': [{
        'key': 'FFmpegExtractAudio', # از FFmpeg برای استخراج صوت استفاده کن
        'preferredcodec': 'mp3', # فرمت خروجی رو MP3 کن
        'preferredquality': '192', # کیفیت MP3 رو 192kbps تنظیم کن
    }],
    'outtmpl': './موسیقی_من/%(title)s.%(ext)s',
}

with yt_dlp.YoutubeDL(ydl_opts) as ydl:
    ydl.download([video_url])

print("دانلود و تبدیل به MP3 با موفقیت انجام شد!")

برای یادگیری و استفاده از کدهای آماده بیشتر، حتماً به بخش اسنیپت‌های ما یه سر بزن.

عیب‌یابی سریع: مشکلات رایج و راه‌حل‌ها

طبیعیه که توی دنیای برنامه‌نویسی گاهی با مشکلاتی روبه‌رو بشیم. اینجا چند تا از مشکلات رایج و راه‌حل‌هاشون رو برات آوردم.

مشکل ۱: yt-dlp پیدا نمی‌شه یا کار نمی‌کنه.

راه‌حل: اول مطمئن شو که yt-dlp به درستی نصب شده: pip install yt-dlp. بعدش، حتماً پایتون رو به PATH سیستم عاملت اضافه کرده باشی. اگه بازم مشکل داشتی، شاید نیاز به آپدیت yt-dlp داشته باشی: pip install --upgrade yt-dlp

مشکل ۲: ویدیو در دسترس نیست یا ارور Private/Deleted Video.

راه‌حل: این ارور معمولاً یعنی ویدیو توسط سازنده‌اش حذف شده، خصوصی شده یا در کشور تو قابل دسترس نیست. اول لینک رو چک کن که مطمئن شی درسته و ویدیو واقعاً عمومی و فعاله. اگه مشکل از محدودیت‌های جغرافیایی هست، باید از پروکسی (همونطور که بالا گفتم) یا VPN استفاده کنی.

مشکل ۳: ارور مربوط به FFmpeg.

راه‌حل: این یعنی yt-dlp نمی‌تونه FFmpeg رو پیدا کنه. مطمئن شو که FFmpeg رو نصب کردی و فایل‌های اجراییش (مثل ffmpeg.exe) توی مسیری هستن که به PATH سیستم عاملت اضافه شده. یه بار سیستم رو ریستارت کنی شاید مشکل حل بشه.

مشکل ۴: دانلود متوقف می‌شه یا سرعتش کمه.

راه‌حل: اتصال اینترنتت رو چک کن. اگه مشکل از اینترنت نیست، ممکنه سرورهای یوتیوب شلوغ باشن. می‌تونی از گزینه 'retries' در ydl_opts برای تلاش مجدد دانلود استفاده کنی یا از گزینه 'fragment_retries' برای بخش‌های دانلود شده. همچنین می‌تونی سرعت دانلود رو با 'ratelimit' تنظیم کنی که کمتر به سرور فشار بیاد.

مشکل ۵: خطای Age-restricted video.

راه‌حل: برای دانلود ویدیوهای محدودیت سنی، باید اطلاعات لاگین یوتیوبت رو به yt-dlp بدی. این کار با گزینه‌های 'username' و 'password' در ydl_opts انجام می‌شه. البته، توصیه می‌کنم از پروکسی برای دسترسی به این نوع محتوا استفاده کنی چون yt-dlp گاهی اوقات نمی‌تونه لاگین رو درست هندل کنه و شاید نیاز به نصب فایل‌های کوکی از مرورگرت داشته باشی.

کلام آخر

دیدیم که با پایتون و کتابخانه قدرتمند yt-dlp، دانلود خودکار ویدیو از یوتیوب نه تنها ممکن، بلکه بسیار آسان و قابل شخصی‌سازی هست. دیگه نیازی نیست وقتت رو با ابزارهای آنلاین پر از تبلیغات هدر بدی. از دانلود تکی ویدیوها گرفته تا کل پلی‌لیست‌ها، استخراج صوت و حتی سفارشی‌سازی دقیق کیفیت و فرمت، همگی در دستان توئه. این ابزار نه تنها برای توسعه‌دهندگان و برنامه‌نویسان، بلکه برای هر کسی که نیاز به مدیریت محتوای ویدیویی داره، یه موهبت بزرگه. حالا دیگه می‌دونی چطوری این جعبه ابزار قوی رو برای نیازهای خودت به کار بگیری و کنترل کاملی روی محتوای یوتیوبت داشته باشی. همین حالا شروع کن و از قدرت پایتون لذت ببر!

برای دسترسی به کدهای آماده بیشتر و ابزارهای کاربردی دیگر، به فا‌تولز سر بزنید!

Table of Contents

آخرین نوشته‌ها