Уведомления

Группа в Telegram: @pythonsu

#1 Март 7, 2018 17:15:51

alextarnovskiy
Зарегистрирован: 2018-03-04
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

парсер ютуба для выдачи в телеграм боте

привет всем
хотел сделать парсер ютуба,он в принцепи работает,суть парсинга вводишь в консоль интересующие тебя название видео, он выдает ссылки на эти видео,тут все работает.
хочется что бы эти ссылки выпадали так же в телеграм боте

вот код

 import urllib
from urllib import request
from urllib.parse import quote
import re, os, sys
import telebot
def findyoutube(x):
    mas = []
    sq = 'http://www.youtube.com/results?search_query=' + quote(x)
    doc = urllib.request.urlopen(sq).read().decode('cp1251', errors='ignore')
    match = re.findall("\?v\=(.+?)\"", doc)
    if not (match is None):
        for ii in match:
            if (len(ii) < 25):            # функция для парсинга
                mas.append(ii)
    mas = dict(zip(mas, mas)).values()
    mas2 = []
    for y in mas: mas2.append('http://www.youtube.com/watch?v=' + y)
    return mas2
#  код телеграмм бота
config = '489709129:AAFTt3qIDSwSFX9AqUfzKOZTBJbF_pR7o5g'
bot = telebot.TeleBot(config)
a = str(input())
@bot.message_handler(content_types=(a))
def repeat_all_messages(message):  # Название функции не играет никакой роли, в принципе
    bot.send_message(message.chat.id, print(findyoutube(a)))  # вот через эту строку должен быть вывод в   #телеграм
print(findyoutube(a))
if __name__ == '__main__':
    bot.polling(none_stop=True)

подскажите что делаю не так,компилятор ошибки не выдает

Офлайн

#2 Март 7, 2018 23:09:34

Kasta_neda
Зарегистрирован: 2014-06-08
Сообщения: 210
Репутация: +  6  -
Профиль   Отправить e-mail  

парсер ютуба для выдачи в телеграм боте

 bot = telebot.TeleBot(config)
a = str(input())
x = findyoutube(a)
bot.send_message(id, x)# id = ваш id 

Вообще работа с ботом подразумевает что вы взаимодействуете с ним
у вас же вы просто в консоли вводите и это автоматом отправляется вам в телеграм


вот если бы вы вводили это в клиенте телеграм вашему боту то тогда функция
 @bot.message_handler(func=lambda message: True, content_types=['text'])
def echo_message(message):
    x = findyoutube(message.text)
    bot.send_message(id, x)# id = ваш id либо message.chat.id если любому кто ввел
то есть вы вводите боту текст “интересующие тебя название видео” и бот отправляет вам ссылки.
а то так получается вы делаете работу за бота


 import urllib
from urllib import request
from urllib.parse import quote
import re, os, sys
import telebot
def findyoutube(x):
    mas = []
    sq = 'http://www.youtube.com/results?search_query=' + quote(x)
    doc = urllib.request.urlopen(sq).read().decode('cp1251', errors='ignore')
    match = re.findall("\?v\=(.+?)\"", doc)
    if not (match is None):
        for ii in match:
            if (len(ii) < 25):            # функция для парсинга
                mas.append(ii)
    mas = dict(zip(mas, mas)).values()
    mas2 = []
    for y in mas: mas2.append('http://www.youtube.com/watch?v=' + y)
    return mas2
#  код телеграмм бота
config = '489709129:AAFTt3qIDSwSFX9AqUfzKOZTBJbF_pR7o5g'
bot = telebot.TeleBot(config)
#a = str(input())
@bot.message_handler(func=lambda message: True, content_types=['text'])
def echo_message(message):
    x = findyoutube(message.text)
    bot.send_message(message.chat.id, x)# id = ваш id либо message.chat.id если любому кто ввел  #телеграм
#print(findyoutube(a))
if __name__ == '__main__':
    bot.polling(none_stop=True)

вот теперь вводите текст вашему боту и он сам все сделает

Отредактировано Kasta_neda (Март 7, 2018 23:24:19)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version