MLP Radio LA.

Tutorial Azuracast Como usar Now Playing en Radios con RDS,en Radio que tieme empty Title con Python y Mostrar Imagenes (Showing Images) con mejor calidad

Tutorial Azuracast Como usar Now Playing en Radios con RDS,en Radio que tieme empty Title en Shoutcast con Python y en Radio RDS con StereoTool Codigo en negrita y cursiva para que lo entiendan mejor
Necesitan Descargar Python :
https://www.python.org/
Azuracast :

http://azuracast.com y como usar la API de AzuraCast para obtener su API :
En Azuracast deben ir a Mi Cuenta
Añadir llave API
y Descripcion de la API
ej para now playing : nowplayingRDS
para imagenes : showingimages (que es mostrar imagenes) y les crea la clave y genera la API (en showing images la necesitan, para ver imagenes azuracast en mejor calidad)
Codigo Python import requests
import time # URL de la API
url = "http://localhost/api/station/8/nowplaying" (aca su api de AzuraCast) import time
import requests # Archivo donde se guardarán los títulos
file_path = "now_playing.txt"
url = "http://localhost/api/station/8/nowplaying" # Asegúrate de definir la URL de la API aquí def obtener_info():
response = requests.get(url)
return response.json() def actualizar_cancion():
while True:
data = obtener_info() # Obtener solo el título y el artista
song_title = data['now_playing']['song']['title']
song_artist = data['now_playing']['song']['artist'] # Crear el texto para escribir en el archivo (artista seguido de guion y título)
song_info = f"{song_artist} - {song_title}\n" # Escribir en el archivo con codificación utf-8
with open(file_path, "w", encoding="utf-8") as f:
f.write(song_info) print(f"Ahora suena: {song_info}") # Esperar 30 segundos antes de hacer otra consulta
time.sleep(30) if __name__ == "__main__":
actualizar_cancion()



Mostrar imagenes Azuracast con mejor calidad :
Codigo en negrita y cursiva para que lo entiendan mejor
import requests
from PIL import Image, ImageTk
import tkinter as tk
from io import BytesIO
import time

# URL de la API de AzuraCast (reemplaza con la tuya)
url_api = "http://localhost/api/station/14/nowplaying" (Aca su APÍ de AzuraCast)
headers = {"Authorization": "Bearer (Aca su APÍ de AzuraCast)"}  # Si usas un token de API

# Función para obtener la miniatura desde AzuraCast
def obtener_miniatura():
    try:
        # Obtener datos de la canción actual
        response = requests.get(url_api, headers=headers)
        response.raise_for_status()

        data = response.json()
        image_url = data['now_playing']['song']['art']  # URL de la miniatura de la canción

        if image_url:
            # Descargar la imagen de la miniatura
            image_response = requests.get(image_url)
            image_response.raise_for_status()

            # Convertir la imagen a formato PIL
            img = Image.open(BytesIO(image_response.content))

            # Ajustar la imagen y guardarla
            img_guardada = ajustar_y_guardar_imagen(img)

            # Mostrar la imagen en Tkinter
            return img_guardada
        else:
            print("No se encontró una miniatura.")
            return None
    except requests.exceptions.RequestException as e:
        print(f"Error al obtener la miniatura: {e}")
        return None

# Función para ajustar y guardar la imagen (sin perder calidad)
def ajustar_y_guardar_imagen(img):
    # Dimensiones deseadas
    target_width, target_height = 1280, 720

    # Obtener las dimensiones de la imagen original
    img_width, img_height = img.size

    # Si la imagen es más ancha que alta, ajustamos al ancho, si es más alta ajustamos al alto
    if img_width / img_height > target_width / target_height:
        # Ajustar la imagen al ancho de la ventana
        new_height = int(target_width * img_height / img_width)
        img = img.resize((target_width, new_height), Image.Resampling.LANCZOS)
    else:
        # Ajustar la imagen a la altura de la ventana
        new_width = int(target_height * img_width / img_height)
        img = img.resize((new_width, target_height), Image.Resampling.LANCZOS)

    # Recortar la imagen al centro si es necesario para ajustarse a 1280x720
    img_width, img_height = img.size
    left = (img_width - target_width) // 2
    top = (img_height - target_height) // 2
    right = (img_width + target_width) // 2
    bottom = (img_height + target_height) // 2
    img = img.crop((left, top, right, bottom))

    # Guardar la imagen ajustada (en formato PNG para evitar compresión)
    img.save("miniatura_actualizada.png", "PNG")
    print("Miniatura guardada como 'miniatura_actualizada.png'.")

    return img

# Función para mostrar la imagen con Tkinter
def mostrar_imagen(img, ventana, canvas):
    # Convertir la imagen a formato compatible con Tkinter
    img_tk = ImageTk.PhotoImage(img)

    # Mostrar la imagen en el canvas
    canvas.create_image(0, 0, anchor="nw", image=img_tk)
    
    # Mantener la imagen en memoria para evitar que se pierda
    canvas.image = img_tk

    ventana.update_idletasks()  # Actualizar la ventana sin cerrarla
    ventana.update()

# Función para actualizar la miniatura periódicamente
def actualizar_miniatura_periodicamente(ventana, canvas):
    img = obtener_miniatura()  # Llamar a la función para obtener la miniatura
    if img:
        mostrar_imagen(img, ventana, canvas)  # Mostrar la imagen actualizada en Tkinter
    ventana.after(10000, actualizar_miniatura_periodicamente, ventana, canvas)  # Esperar 10 segundos antes de actualizar de nuevo

# Crear la ventana de Tkinter
ventana = tk.Tk()
ventana.title("Miniatura AzuraCast")

# Crear un canvas para mostrar la imagen
canvas = tk.Canvas(ventana, width=1280, height=720)
canvas.pack()

# Iniciar la actualización periódica
actualizar_miniatura_periodicamente(ventana, canvas)

# Iniciar el loop de la ventana
ventana.mainloop()





Para funcionar los codigos python con CMD :
cd : C:\Users\Super Radio Genial\AppData\Local\Programs\Python\Python313\now_playing.py (nombre de su proyecto python)

otro CMD para mostrar imagenes (por que el otro cmd estara ocupado en el otro proyecto)

cd : C:\Users\Super Radio Genial\AppData\Local\Programs\Python\Python313\showing_images.py (nombre de su proyecto python) (en super radio genial, cambienlo por su nombre de usuario, sino no funciona)

https://help.stereotool.com/rds_encoder_texts.shtml (esta pagina explica detalladamente los RDS con now playing, para stereotool, esta en ingles, si no entienden, lo pueden traducir, en todo caso en el video les muestro algo como se usa RDS now playing, con stereotool, necesitan un archivo txt que genera codigo python, sino no funciona (ej : este now_playing.txt, en todo caso, la pagina les explica mas detalladamente que yo por si no me entienden)






-¡Hay un total de 314443 visitantes (689918 clics a subpáginas) en ésta página!





Historial de Diseños Web de la pagina

Historial Canciones de la Radio

clic aqui para ver (o ver aca abajo),



Clic aqui para ir a la señal de TV.






Get superradiogenial chat group | Goto superradiogenial website

Current song: Loading ...
Ultimas canciones tocadas :





Embed Instagram Post Code Generator






































Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis