Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Bot Telegram - ayuda con python
#1
Hola a todos! Primero disculpas por si no es el foro o lugar correcto para publicar mi problema.
Lo publico por si alguien experimentado puede darme una ayuda.

Estoy armando un bot de telegram donde el usuario publica un link del sitio web freepik y el bot le devuelve el archivo de descarga.

EJEMPLO DEL LINK DE FREEPIK: https://www.freepik.com/free-psd/ufo-ico...110485.htm

El código que tengo es el siguiente, pero una vez publicado el link en telegram el bot no encuentra el link de descarga. Por lo que entiendo la clase o el atributo del enlace no es correcto.

Dejo el código:

Código:
from telegram.ext import Updater, MessageHandler, Filters
import requests
from bs4 import BeautifulSoup

def freepik_link(update, context):
    url = update.message.text
    page = requests.get(url)
    soup = BeautifulSoup(page.content, 'html.parser')
    download_link = soup.find('a', {'class': 'download-btn'})
    print(download_link)
    if download_link:
        print(download_link['href'])
        update.message.reply_text(download_link['href'])
    else:
        update.message.reply_text("No se encontró el enlace de descarga.")

def start(update, context):
    update.message.reply_text("¡Hola! Este bot puede obtener enlaces de descarga directa de Freepik. Solo envía un enlace de Freepik y te enviaré el enlace de descarga directa.")

def main():
    updater = Updater(token='TOKEN(no lo pongo acá por seguridad)', use_context=True)
    dp = updater.dispatcher
    dp.add_handler(MessageHandler(Filters.regex(r'https?://(www\.)?freepik\.com/.*'), freepik_link))
    dp.add_handler(MessageHandler(Filters.command, start))
    updater.start_polling()
    print("El bot se está ejecutando.")
    updater.idle()

if __name__ == '__main__':
    main()

Gracias de antemano por cualquier ayuda.
Responder
#2
Hola, bienvenido/a.

¿Arroja algún error el programa o qué es exactamente lo que imprime? Por lo que veo, en esta línea ya estás usando una expresión regular para buscar direcciones de URL de freepik:

Código:
dp.add_handler(MessageHandler(Filters.regex(r'https?://(www\.)?freepik\.com/.*'), freepik_link))

¿Para qué usar bs4 luego y buscar la URL con HTML? No me queda claro.

Saludos
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#3
bro te comento tengo un script de eso ya funcional solo necesito un apoyo para hacer un ajuste incluso el mio descarga archivos premium claro con credenciales de cuenta te envio mp
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)