Bot Telegram para publicar nuevos vídeo en un grupo

Nota: En calidad de Afiliado, obtengo ingresos por las compras adscritas que cumplen los requisitos aplicables. Algunos de los enlaces de esta página son enlaces de afiliado, lo que significa que si compras a través de ellos, gano una pequeña comisión sin ningún coste adicional para ti.

Páginas:

Python Release Python 3.13.1 | Python.org

Download Notepad++ v8.7.5 (stable: auto-update triggered) | Notepad++

Credenciales – APIs y servicios – Bot-telegram – Consola de Google Cloud

Buscar el ID de canal y de usuario de YouTube – Ayuda de YouTube

Cómo encontrar una ID de chat en Telegram – Mensajería

Código Bot Python

import requests
import time
from datetime import datetime

# Configuración
TELEGRAM_BOT_TOKEN = 'YOUR_TELEGRAM_BOT_TOKEN'
TELEGRAM_CHAT_ID = ''
YOUTUBE_API_KEY = 'YOUR_YOUTUBE_API_KEY'
CHANNEL_ID = 'YOUR_CHANNEL_ID'
CHECK_INTERVAL = 300  # Intervalo de comprobación en segundos (5 minutos)

def get_latest_video(channel_id, api_key):
    """Obtiene el video más reciente de un canal de YouTube."""
    url = f"https://www.googleapis.com/youtube/v3/search?key={api_key}&channelId={channel_id}&part=snippet,id&order=date&maxResults=1"
    response = requests.get(url)
    if response.status_code == 200:
        data = response.json()
        if "items" in data and len(data["items"]) > 0:
            video = data["items"][0]
            return {
                "video_id": video["id"].get("videoId"),
                "title": video["snippet"].get("title"),
                "published_at": video["snippet"].get("publishedAt")
            }
    return None

def send_telegram_message(bot_token, chat_id, message):
    """Envía un mensaje a un chat de Telegram."""
    url = f"https://api.telegram.org/bot{bot_token}/sendMessage"
    payload = {
        "chat_id": chat_id,
        "text": message
    }
    response = requests.post(url, json=payload)
    return response.status_code == 200

def main():
    last_video_id = None

    while True:
        try:
            latest_video = get_latest_video(CHANNEL_ID, YOUTUBE_API_KEY)

            if latest_video and latest_video["video_id"] != last_video_id:
                # Nuevo video detectado
                last_video_id = latest_video["video_id"]
                video_url = f"https://www.youtube.com/watch?v={last_video_id}"
                message = f"\uD83D\uDD14 ¡Nuevo video en el canal!\n\n{latest_video['title']}\n{video_url}"
                
                if send_telegram_message(TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID, message):
                    print(f"[{datetime.now()}] Notificación enviada: {latest_video['title']}")
                else:
                    print(f"[{datetime.now()}] Error al enviar la notificación")

        except Exception as e:
            print(f"[{datetime.now()}] Error: {e}")

        time.sleep(CHECK_INTERVAL)

if __name__ == "__main__":
    main()

Categories:


Comments

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *