آموزش ساخت ربات تلگرام دانلود از یوتیوب با پایتون
آموزش ساخت ربات تلگرام دانلود از یوتیوب با پایتون

ساخت یک ربات تلگرام میتونه یک تمرین خوب برای دست به کد شدن افرادی که تازه شروع به برنامه نویسی کرده اند. در این آموزش قراره از زبان پایتون استفاده کنیم و انتظار میره که خواننده با زبان پایتون آشنا باشد. همچنین بهتره که آشنایی با سطحی با سیستم عامل گنو/لینوکس داشته باشید.

در تلگرام خود وارد ربات @BotFather شوید ابتدا دستور /newbot را وارد کنید و خواسته شده را طی کنید تا تلگرام، توکن ربات رو در اختیارتون قرار بده. در تصویر زیر توکن ربات با کادر زرد رنگ مشخص شده است.

مراحل ساخت ربات جدید در تلگرام
مراحل ساخت ربات جدید در تلگرام

مرحله دوم – آماده سازی محیط برنامه نویسی

ابتدا محیط مجازی (Virtual Environment) خود را ایجاد کنید.

$ virtualenv .venv
$ source .venv/bin/activate

حالا کتابخونه های مورد نیاز باید نصب کنیم.

$ pip install python-telegram-bot
$ pip install pytube3

مرحله سوم – کد

کد این آموزش را می توانید از اینجا دانلود کنید و فایل main.py را باز کنید. در این مرحله خط به خط کد را توضیح میدهیم. برای درک بهتر بهتر می توانید در تصویر زیر کد رو به صورت کامل مشاهده کنید.

کد برنامه
کد برنامه

ابتدا کتابخانه های مورد نیاز را واردات میکنیم.( خطوط 1 تا 6)

# Import libraries
from telegram import Update
from telegram.ext import Updater, CallbackContext, CommandHandler, MessageHandler, Filters
from pytube import YouTubeimport os, re

در خطوط 7 تا 9 تغییر DOWNLOAD_LOCATION را تعریف میکنیم. این کارخانه محل ذخیره سازی ویدیوهایی که دانلود میکنیم را مشخص می کند.

# Base variables
DOWNLOAD_LOCATION = &quot./temp/&quot

در خطوط 10 تا 14 تابع شروع را تعریف میکنیم. این تابع قراره موقعیتی که کاربر دکمه شروع را میزنه فراخوانی بشه و یک پیام خوش آمدگویی به کاربر ارسال کنه.

# Send welcome message to new users
def start(update: Update, context: CallbackContext) -> None: 
    update.message.reply_text('Welcome to my youtube downloader bot.')

در خط 15 تا 36 تابع دانلود را تعریف میکنیم. وقتی که کاربر یه متن را برای ما ارسال میکنه این تابع اجرا میشه. در خطوط 19 تا 21 چک می کنیم که کاربر برای ربات یک لینک یوتیوب فرستاده یا نه؟ اگر جواب مثبت خطوط 23 تا 32 و در غیر این صورت خط 34 اجرا میشه.

خطوط 23 تا 32 شامل سه قسمت میشه. اول در خطوط 23 تا 26 ویدیو را از یوتیوب دانلود، سپس در خطوط 27 تا 30 ویدیو را به کاربر ارسال کنید، و نهایتا در خطوط 31 و 32 ویدیو را از روی حافظه خودمون پاک میکنیم تا دراز مدت فضای سرورمون پر نشه.

خط 34 هم یک پیغام به کاربر ارسال می کند که میگه لینک وارد شده توسط شما معتبر نیست.

# Download video from youtube and send to user
def download(update: Update, context: CallbackContext) -> None:
    user_id = update.message.from_user['id']
    # Check if user message is a valid youtube video link
    link = update.message.text
    pattern = r&quothttp(?:s?):\/\/(?:www\.)?youtu(?:be\.com\/watch\?v=|\.be\/)([\w\-\_]*)(&(amp;)?‌​[\w\?‌​=]*)?&quot
    result = re.match(pattern, link)
    if result:
        # Download video from youtube
        youtube = YouTube(link)
        youtube_stream = youtube.streams.get_highest_resolution()
        youtube_stream.download(DOWNLOAD_LOCATION)
        # Send video to user
        file_name = youtube.streams.get_highest_resolution().default_filename
        file_dir = f&quot{DOWNLOAD_LOCATION}{file_name}&quot
        context.bot.send_video(chat_id=user_id, video=open(file_dir, 'rb'), supports_streaming=True)
        # Delete video from disk after sending to user
        os.remove(file_dir)
    else:
        update.message.reply_text('Your link is not valid.')

خطوط 37 تا 46 خطوط نهایی است. توجه داشته باشید که توکن ربات ( که در مرحله اول به دست آوردیم) را در خط 38 جایگزین عبارت TOKEN کنید.

مرحله چهارم – اجرای کد

برای اجرای کد کافی فایل main.py را با پایتون اجرا کنید.

$ python main.py

چیزی که در تصویر زیر مشاهده میکنید. ربات با موفقیت اجرا می شود.

برنامه تست
برنامه تست

امیدوارم این آموزش براتون مفید بوده باشه. می توانید با لایک کردن این نوشته یا ریپوزیتوری github از حمایت کنید.

اگر دوست داشتی امتیاز دادن یادت نره!