slivator Опубликовано 11 марта Опубликовано 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) Цитата
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.