slivator Posted March 11 Share Posted March 11 Бот для скачивания видео с YouTube — это инновационное приложение для Telegram, способствующее удобному и быстрому доступу к медиаконтенту. Пользователи могут без труда загружать видео с YouTube в формате mp3, наслаждаться аудиофайлами в любое время и в любом месте. Этот бот обеспечивает широкий выбор качества как для видео, так и для аудиофайлов, позволяя каждому пользователю выбрать оптимальное качество согласно своим потребностям и предпочтениям. С его помощью загрузка мультимедийного контента становится удобной и максимально персонализированной. Установка и запуск: Установи sudo apt install ffmpeg и pip install pytube Создайте нового telegram-бота https://telegram.me/BotFather Выберите имя для своего бота и скопируйте "токен" Вставьте токен в строку 146 "коде бота", например: base_url = 'https://api.telegram.org/bot35689568:AAHfiqksKZ8WmR2zSjiQ7_v4TMAKdiHm9T0 Запустите скрипт: python telegram-pytube.py Использование: Пользователи могут отправлять боту ссылки на видео с YouTube, а затем выбирать желаемое качество видео или аудио для загрузки. Бот предоставляет пользователю выбор различных вариантов качества, что обеспечивает гибкость и удобство в использовании. Заключение: Этот представляет собой удобный инструмент для пользователей Telegram, которым часто требуется загружать контент с YouTube. Установка и запуск бота достаточно просты, а его функциональность делает процесс загрузки видео и аудио максимально удобным и эффективным. Бот для скачивания видео с YouTube - отличное дополнение к вашему мессенджеру Telegram, обеспечивая вас возможностью загружать контент прямо из чата. Наслаждайтесь удобством и простотой использования бота! Код Python: import requests import json import time from pytube import YouTube import re import os import subprocess def read_msg(offset): data = { "offset": offset, } resp = requests.get(base_url+'/getUpdates', data=data) dataframe = resp.json() for i in dataframe["result"]: try: print(i["message"]["text"]) yt = YouTube(i["message"]["text"]) if len(yt.streams) > 0: f = open(i["message"]["from"]["username"] + '.txt', 'w') f.write(i["message"]["text"]) f.close() keyboard = [[{"text": "Audio"}]] keyboard_res = [[{"text": "144p"}], [{"text": "240p"}], [{"text": "360p"}], [{"text": "480p"}], [{"text": "720p"}], [{"text": "1080p"}], [{"text": "1440p"}], [{"text": "2160p"}]] for k in range(8): if yt.streams.filter(res=formats[k+1]): keyboard.append(keyboard_res[k]) send_download(i["message"]["from"]["id"], keyboard) else: send_message(i["message"]["from"]["id"], 'Can not download this video') except: try: if i["message"]["text"] in formats: f = open(i["message"]["from"]["username"] + '.txt') link = f.readline() f.close() yt = YouTube(link) title = re.sub(r"[^a-zA-Z0-9 ]", "", yt.title) # Бот создан форумом na-sha.ru username = i["message"]["from"]["username"] + '/' try: os.mkdir(username) except: pass # Downloading audio input_audio = username + title + ' - audio' try: audio = yt.streams.filter(abr='128kbps') audio[0].download(filename = input_audio) except: audio = yt.streams.filter(type='audio') audio[0].download(filename = input_audio) if i["message"]["text"] == 'Audio': # Converting audio output_media = username + title + ' - ' + i["message"]["text"] + '.mp3' subprocess.call(["ffmpeg", "-i", input_audio, output_media, "-y"]) os.remove(input_audio) size = round(os.path.getsize(output_media) / 1024 / 1024, 2) if size > 50: send_message(i["message"]["from"]["id"], 'Done! ' + str(size) + 'MB') else: send_audio(i["message"]["from"]["id"], output_media) else: # Downloading video and merging input_video = username + title + ' - video' video = yt.streams.filter(res=i["message"]["text"]) video[0].download(filename = input_video) output_media = username + title + ' - ' + i["message"]["text"] + '.mp4' subprocess.call(["ffmpeg", "-i", input_video, "-i", input_audio, "-c", "copy", output_media, "-y"]) os.remove(input_video) os.remove(input_audio) size = round(os.path.getsize(output_media) / 1024 / 1024, 2) if size > 50: send_message(i["message"]["from"]["id"], 'Done! ' + str(size) + 'MB') else: send_video(i["message"]["from"]["id"], output_media) except: pass if dataframe["result"]: return dataframe["result"][-1]["update_id"] + 1 def send_download(user, keyboard): base_url_download = base_url + '/sendMessage' headers = {"Content-Type": "application/json"} data = { "chat_id": user, "text": "Select option", # Бот создан форумом na-sha.ru "reply_markup": { "keyboard": keyboard, "resize_keyboard": True, "one_time_keyboard": True, } } data = json.dumps(data) resp = requests.post(base_url_download, data=data, headers=headers) def send_message(user, message): base_url_message = base_url + '/sendMessage' headers = {"Content-Type": "application/json"} data = { "chat_id": user, "text": message, } data = json.dumps(data) resp = requests.post(base_url_message, data=data, headers=headers) def send_audio(user, audio): base_url_audio = base_url + '/sendAudio' audio = open(audio, 'rb') data = { "chat_id": user } files = { "audio": audio } resp = requests.get(base_url_audio, data=data, files=files) def send_video(user, video): base_url_video = base_url + '/sendVideo' video = open(video, 'rb') data = { "chat_id": user } files = { "video": video } resp = requests.get(base_url_video, data=data, files=files) ############################################ base_url = 'https://api.telegram.org/botxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' offset = 0 formats = ['Audio', '144p', '240p', '360p', '480p', '720p', '1080p', '1440p', '2160p'] while True: try: offset = read_msg(offset) except: pass time.sleep(1) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.